• Important Notice: Please review our guidelines regarding cheating, game balancing, and mods for Helldivers 2. Read the full notice here before downloading or uploading mods.

Neverness to Everness - HT INI Config File Decryptor 1.0

A Mod for Neverness to Everness
Neverness to Everness - HT INI Config File Decryptor akl_mod_preview_image
> Join NTE Modding Discord Server <
https://discord.gg/ZE3DAAWu85​


A Python script that decrypts Neverness to Everness's encrypted .ini configuration files. The game uses AES-256-ECB encryption with Base64 encoding per line and |SPLIT| as a line separator. The AES key was located at sub_141592120 in HTGame_dump.exe via reverse engineering.

Useful for reading and researching the game's internal configuration data.

Details:
Encryption:
AES-256-ECB + Base64, PKCS7 padding
Separator: |SPLIT|
AES Key: UVbP6pjjw5KZhvddie3tfhg1pVkkveY8
Key Source: sub_141592120 in HTGame_dump.exe

Requirements:
Python:
3.x
Library: pycryptodome or pycryptodomex

Install with:
Code:
pip install pycryptodome

Open game local folder:
\AppData\Local\HT\Saved_Global\Config\Windows\

Usage:
Decrypt a single file:
Code:
python NTE_decrypt_ini.py path/to/file.ini
Decrypt an entire directory of .ini files:
Code:
python NTE_decrypt_ini.py path/to/ini_folder output_folder
Decrypted files will be saved to ./decrypted by default if no output directory is specified.



Upload Permission:
  • You are strictly forbidden from uploading this file to any other website.




Credits by anonymous
1.2 KB
Log in or sign up to download
Uploaded by
Senku Aoki
Downloads
289
Comments
5
Views
6,325
First release
Last update
Platform
PC 
Version
1.0
Total Size
1.2 KB
Rating
5.00 star(s) 3 ratings

Uploaded by

  • 289
  • 6,325

Ratings

5.00 star(s) 3 ratings

Tags

There are no tags available.

More mods from Senku Aoki

  • PC R-2124 Constitution Bolt AMR

  • PC P-11 Self Heal - Balanced Edition

  • PC P-11 Self Heal

  • PC Codex Module Bridge

  • PC Yihuan Source Code Edition NTE Modified Engine

Nyihm007

Members
Members
May 4, 2026
0
0
ok so this is useless, theres nothing to install and discord wont tell me how to change the settings for the game
 

kilyan

Members
Members
Mar 24, 2026
0
1
the game reads first the encrypted lines, than the custom ones. no need to decrypt anything, add your stuff in engine.ini normally
 

nuocda

Members
Members
Jun 3, 2025
0
1
ok so this is useless, theres nothing to install and discord wont tell me how to change the settings for the game

ini files put in \AppData\Local\HT\Saved_Global\Config\Windows\

the game reads first the encrypted lines, than the custom ones. no need to decrypt anything, add your stuff in engine.ini normally

engine one, but GameUserSettings.ini very need, change some line here and fixed when close game settings always change TAA for me
 

nekopiao

Members
Members
May 10, 2026
0
0
Can you guide me on how to obtain the AES key for the CN client?
 

Koutet

Members
Members
Jun 14, 2026
0
1
awesome work, i made something similar in windows powershell, does the exact same thing but with less hastle of needing all of pythons requirements/programs.

@Echo off
setlocal

if "%~1"=="" (
echo Drag an encrypted .ini file or the NTE config folder onto this BAT.
echo.
echo Or run it like:
echo "%~nx0" "%LOCALAPPDATA%\HT\Saved_Global\Config\Windows"
echo.
pause
exit /b 1
)

set "SCRIPT=%~dp0decrypt_nte_ini.ps1"
set "OUT=%~dp0decrypted"

powershell -NoProfile -ExecutionPolicy Bypass -File "%SCRIPT%" -InputPath "%~1" -OutDir "%OUT%"

echo.
echo Exit code: %ERRORLEVEL%
echo.
echo Done or failed. Check the messages above.
pause



^copy paste above into notepad name it smething like decrypt_nte_ini.bat or anything you want to name it


then for the power shell script you'd want something like.

param(
[Parameter(Mandatory = $true)]
[string]$InputPath,

[string]$OutDir = (Join-Path $PSScriptRoot "decrypted")
)

$ErrorActionPreference = "Stop"

$keyText = "UVbP6pjjw5KZhvddie3tfhg1pVkkveY8"
$splitToken = "|SPLIT|"
$key = [Text.Encoding]::ASCII.GetBytes($keyText)

function Remove-Pkcs7Padding {
param([byte[]]$Bytes)

if ($Bytes.Length -eq 0) {
return $Bytes
}

$pad = [int]$Bytes[$Bytes.Length - 1]

if ($pad -lt 1 -or $pad -gt 16 -or $pad -gt $Bytes.Length) {
return $Bytes
}

for ($i = 1; $i -le $pad; $i++) {
if ([int]$Bytes[$Bytes.Length - $i] -ne $pad) {
return $Bytes
}
}

$newLen = $Bytes.Length - $pad

if ($newLen -le 0) {
return [byte[]]@()
}

$result = New-Object byte[] $newLen
[Array]::Copy($Bytes, 0, $result, 0, $newLen)
return $result
}

function Decrypt-NteIniFile {
param(
[string]$Src,
[string]$Dst
)

$raw = [IO.File]::ReadAllBytes($Src)
$text = [Text.Encoding]::UTF8.GetString($raw)
$text = $text.TrimStart([char]0xFEFF).Trim()

$resultLines = New-Object System.Collections.Generic.List[string]

if (-not [string]::IsNullOrWhiteSpace($text)) {
$aes = [Security.Cryptography.Aes]::Create()
$aes.Key = $key
$aes.Mode = [Security.Cryptography.CipherMode]::ECB
$aes.Padding = [Security.Cryptography.PaddingMode]::None

foreach ($rawLine in $text -split "`n") {
$line = $rawLine.Trim("`r", "`n", "`t", " ")

if (-not $line) {
continue
}

try {
$encryptedBytes = [Convert]::FromBase64String($line)
}
catch {
$resultLines.Add($line)
continue
}

if ($encryptedBytes.Length -eq 0 -or ($encryptedBytes.Length % 16) -ne 0) {
$resultLines.Add($line)
continue
}

try {
$decryptor = $aes.CreateDecryptor()
$plainBytes = $decryptor.TransformFinalBlock($encryptedBytes, 0, $encryptedBytes.Length)
$decryptor.Dispose()
}
catch {
$resultLines.Add($line)
continue
}

$plainBytes = Remove-Pkcs7Padding $plainBytes
$plain = [Text.Encoding]::UTF8.GetString($plainBytes)

foreach ($part in $plain -split [regex]::Escape($splitToken)) {
if ($part) {
$resultLines.Add($part)
}
}
}

$aes.Dispose()
}

$dstFolder = Split-Path -Parent $Dst

if ($dstFolder) {
New-Item -ItemType Directory -Force -Path $dstFolder | Out-Null
}

$utf8NoBom = New-Object System.Text.UTF8Encoding($false)
[IO.File]::WriteAllText($Dst, (($resultLines -join "`r`n") + "`r`n"), $utf8NoBom)

Write-Host "Decrypted: $Src -> $Dst"
}

try {
$resolvedInput = (Resolve-Path -LiteralPath $InputPath).Path

if (Test-Path -LiteralPath $resolvedInput -PathType Leaf) {
$fileName = [IO.Path]::GetFileName($resolvedInput)
$dst = Join-Path $OutDir $fileName
Decrypt-NteIniFile $resolvedInput $dst
}
elseif (Test-Path -LiteralPath $resolvedInput -PathType Container) {
$base = $resolvedInput.TrimEnd("\")

$iniFiles = Get-ChildItem -LiteralPath $base -Recurse -Filter "*.ini"

if ($iniFiles.Count -eq 0) {
Write-Host "No .ini files found."
exit 1
}

Write-Host "Found $($iniFiles.Count) .ini files."

foreach ($file in $iniFiles) {
$rel = $file.FullName.Substring($base.Length).TrimStart("\")
$dst = Join-Path $OutDir $rel
Decrypt-NteIniFile $file.FullName $dst
}
}
else {
Write-Host "Path not found: $InputPath"
exit 1
}

Write-Host ""
Write-Host "Done. Decrypted files are in:"
Write-Host $OutDir
}
catch {
Write-Host ""
Write-Host "ERROR:" -ForegroundColor Red
Write-Host $_.Exception.Message
exit 1
}

^open notepad again and save this as like decrypt_nte_ini.ps1 or anything you want.

lastly just drag and drop the file onto the bat file and it'll auto decrypt it.

super simple, super easy