mi rifaccio un crack

C'è un trascorso informatico della mia gioventù del quale parlo generalmente poco, un po' perché quel tempo si perde ormai nella memoria, un po' perché spesso è difficile spiegare le motivazioni più o meno giuste che mi hanno portato ad esplorare e praticare certe scene. La pirateria dei giochi con la ricerca di metodi per aggirare protezioni di ogni sorta, dalle tracce fantasma sui floppy, passando per le parole del manuale contenuto nella confezione del gioco originale per poter avviare al gioco, sino agli eseguibili per l'avvio dei giochi che "controllavano" che nel lettore CD-Rom fosse inserito il disco originale. Non voglio dilungarmi troppo su questo discorso, interessantissimo e lunghissimo e non privo di insidie, veniamo quindi a noi. Di recente mi è capitato di recuperare alcuni CD-Rom allegati a riviste di pubblicazione italiana tra la fine degli anni novanta e l'inizio dei duemila, potete trovare su Internet Archive(https://archive.org/details/@rymstudio_design) vari rilasci a scopo conservativo che ho pubblicato. Scegliendo in alcuni casi di deviare un po' dalle linee di licenza dei prodotti in nome della conservazione e preservazione del software di quel tempo.

Nel caso specifico mi sono imbattuto in un CD-Rom / rivista digitale denominata Samuko, da quello che ho trovato in rete, non molto in realtà, mi pare di aver capito che questo Magazine per adulti a tema Hentai e non solo, edito dalla francese Cyber Press fosse stato portato dalla stessa anche in Italia, per un periodo, non credo troppo lungo. Nello specifico credo di aver trovato il n° 2 in uno dei recuperi che mi capita di fare:

Gli editori non contenti dell'incasso del costo del CD-Rom imposero l'uso di una password per la visualizzazione dei contenuti hot all'interno del CD-Rom, questo codice di accesso sarebbe stato comunicato chiamando un numero di telefono, probabilmente anch'esso a pagamento... Lascio a voi giudicare... Volendo rilasciare questo CD-Rom nel suo stato originale non essendo in possesso del codice utile la parte più interessante del CD non sarebbe stata visibile, cosa ho fatto ? Mi sono accorto che i file criptati presentavano estensione *.JPG, file di immagine quindi, a quel tempo era molto comune un criterio di protezione di tipo XOR un criterio di cifratura che richiede una chiave per decodificare il file che altrimenti resta privo di natura e quindi non processabile da alcun software, questo è vero parzialmente, ma diamolo per buono al 100% al fine di non dilungarci oltre.

Presumendo che l'estensione del file JPG fosse veritiera dobbiamo sapere che l'inizio di un file di tipo JPG se aperto in un editor esadecimale presenterà come standard i byte FF D8 FF E0 (header JPEG + marker JFIF) ho confrontato quindi l'header dei file presenti sul CD-Rom che presentavano questa sequenza per i primi 4 byte: 5A 7D 5A 45, applicando XOR tra i byte cifrati e i byte del file JPG standard è stato possibile trovare la chiave:

[!TIP]

5A XOR FF = A5 7D XOR D8 = A5 5A XOR FF = A5 45 XOR E0 = A5

Il risultato è che tutti byte danno A5 come chiave! Questo evidenzia come, sicuramente, la chiave XOR per byte singolo sia semplicemente A5

è stato poi sufficiente verificare la chiave con altri byte cifrati, esempio A5 B5 EF E3 EC E3 A5 A4 applicando XOR:

[!TIP]

5A XOR FF = A5 7D XOR D8 = A5 5A XOR FF = A5 45 XOR E0 = A5

il risultato ottenuto 00 10 4A 46 49 46 00 01 corrisponde a \x00\010JFIF\x00\x01 che è tipico di un header JPG valido!

A quel punto avevo bellamente compreso come decriptare i file per poterli visualizzare. Si è reso necessario convertirli, in un primo momento ho pensato ad uno script python, ma non sono un gran che come sviluppatore e ammetto di non aver dimestichezza, girando un po' in giro ho buttato giù un prototipo per farlo, ma a dire il vero non l'ho testato in quanto ho poi scelto un'altra strada, vi lascio comunque qui di seguito la bozza di codice:

 1key = 0xA5  # Chiave in esadecimale
 2input_file = "foto_criptata.jpg"
 3output_file = "foto_decifrata.jpg"
 4
 5with open(input_file, "rb") as f_in:
 6    data = bytearray(f_in.read())
 7
 8decrypted_data = bytearray([b ^ key for b in data])
 9
10with open(output_file, "wb") as f_out:
11    f_out.write(decrypted_data)

Girovagando ho trovato uno strumento online, ma che è possibile anche scaricare ed utilizzare offline, davvero portentoso, una suite che vi permette di fare tantissime tantissime cose: cyber chef (https://gchq.github.io/CyberChef/)

Davvero incredibile, vi basterà caricare i file, è possibile caricare un'intera cartella e procedere su file multipli, inserire l'azione richiesta, eseguirla e scaricare i file, in formato ZIP, opportunamente processati

Nel caso specifico si procede in questo modo:

Il layout è suddiviso in quattro sezioni: *** operations, recipe, input e output***

l'incredibile cyberchef!
  • andate alla sezione operations / encryption encoding / XOR
  • trascinare la casella XOR nel riquadro a destra recipe e nel campo Key inserite la chiave, nel mio caso A5
  • dal riquadro input caricare il file o la cartella sulla quale volete agire
  • scaricate il file o l'archivio dei file decriptati dalla seznione output

fine, andata così...

Vi lascio di seguito un file piccante di natura hentai, criptato con chiave A5 per testare il tutto:

File jpg

📄 scarica il file JPG criptato

questo file JPG è criptato andrà decodificato per essere visualizzato

📥 Scarica
l'incredibile cyberchef!