Osoba podpisana jako Grzegorz Niemirowski <gnthexfiles@poczta.onet.pl>
w artykule <news:q8sahu$8cm$1@node2.news.atman.pl> pisze:
Andrzej P. Wozniak <uszer@poczta.onet.pl.invalid> napisał(a):
I się zemściło. Ten skrypt nie służy do kodowania, tylko do porównywania
dwóch kopii tego samego pliku - zamiast fc, comp, diff czy innego
podobnego programu.
Jeśli obie kopie są identyczne, plik wynikowy zawiera same znaki 0x00.
Zastosowany do pliku oryginalnego i zakodowanego daje w wyniku
wielokrotne powtórzenie klucza.
Przerobiłem ten skrypt na potrzeby deszyfrowania:
Ale jedną linię złamało, więc poprawiam i dodaję komentarze, może komuś się
przyda w innym celu…
/--- xorcrypt.ps1 ---
# Usage: ps\xorcrypt.ps1 bin\input.bin bin\output.bin
param (
[Parameter(Mandatory=$true)]
[string] $file1, #First File
[Parameter(Mandatory=$true)]
[string] $out #Output File
) #end param
[Environment]::CurrentDirectory = (Get-Location -PSProvider
FileSystem).ProviderPath
$file1_b = [System.IO.File]::ReadAllBytes($file1)
$xord_byte_array = New-Object Byte[] $file1_b.Count
# Put your key here
[Byte[]] $key =0x55,0x66,0x77,0x88
$key_position = 0
# XOR
for($i=0; $i -lt $file1_b.Count; $i++)
{
$xord_byte_array[$i] = $file1_b[$i] -bxor $key[$key_position]
$key_position += 1
if ($key_position -eq $key.Length) {$key_position = 0}
}
# Write the XORd bytes to the output file
[System.IO.File]::WriteAllBytes("$out", $xord_byte_array)
Write-host "$out" -foregroundcolor yellow -nonewline; Write-host ".";
\--- end ---
I tyle.
--
Andrzej P. Woźniak uszer@pochta.onet.pl (zamień miejscami z<->h w adresie)
|