7/10 Crâck ME / BAT (solved)

@echo off
setlocal EnableDelayedExpansion

:: ==============================================================================
:: 1. KULLANICI GİRDİSİ VE KONTROLÜ
:: ==============================================================================
cls
set /p "_jnQSgg=key?: "
if not defined _jnQSgg (
echo invalid key
timeout /t 2 /nobreak >nul
exit /b 1
)

:: ==============================================================================
:: 2. GÖMÜLÜ ŞİFRELİ VERİ (CIPHERTEXT BLOKLARI)
:: ==============================================================================
set "_jTqFDLU=%TEMP%\_vTXLZqdfJx.tmp"
set "_wuaOlTR=%TEMP%\_iUEvxgeCbf.bin"
if exist "%_jTqFDLU%" del /f /q "%_jTqFDLU%" >nul 2>&1

echo -----BEGIN CERTIFICATE-----> "%_jTqFDLU%"
echo fCL1VgSePQHJBfKjxxrrzez/groJthlWQ4cKctNkx/KCXgNi+kgTn8gMo3Vnem959n/Z>> "%_jTqFDLU%"
echo u/x7hQa3+ksFka7cKvnjA2+GEShpfqjap+rwdmrmIwsszu8pq87m4qO/dEhxNToBgwU8>> "%_jTqFDLU%"
echo OLoDS5s/CpuZQJl3TqnWfUu3p/JDdIHSKu/Tb1PtxNklg/b9hX4Dy2P/Q3xvRHmxdDjS>> "%_jTqFDLU%"
echo rLEUcvPtjdOKm79Z85P0XbsiZ5PrCrcBMHVYDHsLR2fLEpI6np8rkxsnAS6XDpEK/Fxq>> "%_jTqFDLU%"
echo 9hLhwA==>> "%_jTqFDLU%"
echo -----END CERTIFICATE----->> "%_jTqFDLU%"

certutil -decode "%_jTqFDLU%" "%_wuaOlTR%" >nul 2>&1
del /f /q "%_jTqFDLU%" >nul 2>&1

:: ==============================================================================
:: 3. DEŞİFRE VE YÜRÜTME MOTORU (POWERSHELL CORE)
:: ==============================================================================
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$p = [Environment]::GetEnvironmentVariable('_jnQSgg');" ^
"[Environment]::SetEnvironmentVariable('_jnQSgg', $null);" ^
"if ([string]::IsNullOrEmpty($p)) { Write-Host 'invalid key'; Start-Sleep 2; exit 1 };" ^
"$salt = [Convert]::FromBase64String('EhDVx9+WmDKcwthPKbk9xg==');" ^
"$iv = [Convert]::FromBase64String('opDnePbtKx3WyMq60aMgdQ==');" ^
"$exp = [Convert]::FromBase64String('tYBguOIuf+cplGVXYLG+mdXzyW2ZVFLdGQf1I7FxCPE=');" ^
"$ct = [IO.File]::ReadAllBytes($env:_wuaOlTR);" ^
"Remove-Item $env:_wuaOlTR -Force -EA SilentlyContinue;" ^
"$pb = [Text.Encoding]::UTF8.GetBytes($p);" ^
"$dk = (New-Object Security.Cryptography.Rfc2898DeriveBytes($pb, $salt, 48000, [Security.Cryptography.HashAlgorithmName]::SHA256)).GetBytes(96);" ^
"$ak = New-Object byte[] 32;" ^
"$mk = New-Object byte[] 32;" ^
"$xs = New-Object byte[] 32;" ^
"[Array]::Copy($dk, 0, $ak, 0, 32);" ^
"[Array]::Copy($dk, 32, $mk, 0, 32);" ^
"[Array]::Copy($dk, 64, $xs, 0, 32);" ^
"$ms = New-Object byte[] ($iv.Length + $ct.Length);" ^
"[Array]::Copy($iv, 0, $ms, 0, $iv.Length);" ^
"[Array]::Copy($ct, 0, $ms, $iv.Length, $ct.Length);" ^
"$h = New-Object Security.Cryptography.HMACSHA256;" ^
"$h.Key = $mk;" ^
"$got = $h.ComputeHash($ms);" ^
"$ok = $true;" ^
"for ($i = 0; $i -lt 32; $i++) { if ($got[$i] -ne $exp[$i]) { $ok = $false } };" ^
"if (-not $ok) { Write-Host 'invalid key'; Start-Sleep 2; exit 1 };" ^
"$aes = [Security.Cryptography.Aes]::Create();" ^
"$aes.Mode = [Security.Cryptography.CipherMode]::CBC;" ^
"$aes.Padding = [Security.Cryptography.PaddingMode]::PKCS7;" ^
"$aes.Key = $ak;" ^
"$aes.IV = $iv;" ^
"try { $pt = $aes.CreateDecryptor().TransformFinalBlock($ct, 0, $ct.Length) } catch { Write-Host 'invalid key'; Start-Sleep 2; exit 1 };" ^
"$sha = [Security.Cryptography.SHA256]::Create();" ^
"for ($i = 0; $i -lt $pt.Length; $i += 32) {" ^
" $c = [BitConverter]::GetBytes([Net.IPAddress]::HostToNetworkOrder([int](<$i / 32>)));" ^
" $m = New-Object byte[] 36;" ^
" [Array]::Copy($xs, 0, $m, 0, 32);" ^
" [Array]::Copy($c, 0, $m, 32, 4);" ^
" $bl = $sha.ComputeHash($m);" ^
" $n = [Math]::Min(32, $pt.Length - $i);" ^
" for ($j = 0; $j -lt $n; $j++) { $pt[$i + $j] = [byte](<$pt[$i + $j] -bxor $bl[$j]>) }" ^
"};" ^
"if ($pt.Length -lt 5) { Write-Host 'invalid key'; Start-Sleep 2; exit 1 };" ^
"$hd = [Text.Encoding]::ASCII.GetString($pt, 0, 4);" ^
"if ($hd -ne ('BAT' + [char]10) -and $hd -ne ('VBS' + [char]10)) { Write-Host 'invalid key'; Start-Sleep 2; exit 1 };" ^
"$body = New-Object byte[] ($pt.Length - 4);" ^
"[Array]::Copy($pt, 4, $body, 0, $body.Length);" ^
"$out = Join-Path $env:TEMP ('k' + [guid]::NewGuid().ToString('N'));" ^
"if ($hd.StartsWith('VBS')) {" ^
" $out += '.vbs';" ^
" [IO.File]::WriteAllBytes($out, $body);" ^
" Start-Process cscript.exe -ArgumentList '//nologo', '//B', $out -Wait" ^
"} else {" ^
" $out += '.bat';" ^
" [IO.File]::WriteAllBytes($out, $body);" ^
" & cmd.exe /c $out" ^
"};" ^
"Remove-Item $out -Force -EA SilentlyContinue"

del /f /q "%_wuaOlTR%" >nul 2>&1
exit /b
Tum source ortada key bulmaya falan gerek yok zaten key diyede birşey yok ne yapmaya çalıştın anlamadım Batch dosyasını 48 bin tur PBKDF2 ve AES-256 ile paketleyip CrackMe diye atmışsın dosyada çözülecek bir algoritma veya key yok şifreyi sen vermedikçe bunu kimse açamaz.
 
Zorluk: 7/10
Tip: Crackme / Keygenme
Platform: Windows (Batch + PowerShell)

--- Kurallar ---

• Anti-debug YOK. Debugger / IDA / Process Hacker açıkken de çalışır.
• PE packer YOK, native loader YOK, BSOD / kirli numara YOK. Temiz challenge.
• Dosya katmanlı .bat + PowerShell. Key runtime'da sorulur: key?:
• Amaç: Geçerli key'i bulmak ve içindeki source'u çıkarmak.
• "Solved" saymak için:
1) doğru key
2) çıkan source
3) çalışma mantığı + nasıl kırdığınız
üçünü de yazmanız gerekli.
• Dosyada görünen serial'ları körlemesine denemek yetmez.

--- Hedef ---

Program sizden bir key istiyor.

Doğru key girildiğinde şunu yazar:

key dogru open source sekilde bati cikartirsan veya keyi nasil buldugunu yazmak istersen forumda bekliyorum

Göreviniz: doğru key'i bulup source'u ve kırılımı forumda paylaşmak.

--- Format ---

Key: XXXXXX-XXXXX-XXXXX-XXXXX-XXXXX

Kolay gelsin


dw: / (güncellendi)
vt: / (güncellendi)

dw güncellendi vt güncellendi


Comment strip
Variable scramble
String split
Escape maze
Dead control flow
Delayed expansion
Char rebuild
Reverse cipher
Certutil wrap
Nested certutil
PowerShell wrap
Hybrid loader
Multi-pass
Lattice lock​
Güncelledim bu sefer eskisi gibi cryptlock değil yani batın içinde gerçekten bi key basılı
 
$pb = $u8.GetBytes($p);
$mx = New-Object byte[] ($pb.Length + $CtaQdD.Length);
$ar::Copy($pb, 0, $mx, 0, $pb.Length);
$ar::Copy($CtaQdD, 0, $mx, $pb.Length, $CtaQdD.Length);

$sha = New-Object System.Security.Cryptography.SHA256Managed;
$pre = $sha.ComputeHash($mx);

$dk = (New-Object System.Security.Cryptography.Rfc2898DeriveBytes($pre, $ks, 210000, "SHA256")).GetBytes(96);
$aes = New-Object System.Security.Cryptography.AesCryptoServiceProvider;
$aes.Mode = 1; # CBC
$aes.Padding = 2; # PKCS7
$aes.Key = $ak;
$aes.IV = $PvpqgO;
dalgamı geciyon asil payladi yine 200K dan fazla PBKDF2 la çevrelemişsin bi bir koruma yontemi değil bana göre söyleyeyim bunu gerçek bir programda yapacak olsaydın saniyesinde patch yerdin haberin olsn.
 
dalgamı geciyon asil payladi yine 200K dan fazla PBKDF2 la çevrelemişsin bi bir koruma yontemi değil bana göre söyleyeyim bunu gerçek bir programda yapacak olsaydın saniyesinde patch yerdin haberin olsn.
200k pbkdf2ye sovup asil payload demen yetmez crackmede o katman brute yavaslatiyo keyi saklamiyo key dosyanin icinde 4 tane 29luk serialda degil pre ile aes cbc gordun diye cozdun saniyosun ks 16 byte salt degil 96 byte da tek aes key degil decrypt de orda bitmiyo k i 137-49 decoder mask kilit degil gercek programda client wrap zaten dump edilir sen hala key soruyosun solved = key + source + writeup pbkdf2 rant writeup sayilmaz

ayrıca kırmaya çalıştığın şey bat unutma c++ olsaydı buraya kadar gelebileceğini düşünmüyorum
 
XXXXXX-XXXXX-XXXXX-XXXXX-XXXXX bu formatta dimi eminsin
 

Şuanda konuyu görüntüleyen kullanıcılar

Geri
Üst Alt