Lista winnt@man.lodz.pl
[Lista archiwów] [Inne Listy]

Re: [WINNT] Zagadka kryptograficzna dla programisty

To: winnt@man.lodz.pl
Subject: Re: [WINNT] Zagadka kryptograficzna dla programisty
From: "Andrzej P. Wozniak" <uszer@poczta.onet.pl.invalid>
Date: Sat, 13 Apr 2019 13:03:29 +0200
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)

<Pop. w Wątku] Aktualny Wątek [Nast. w Wątku>