giovedì 7 aprile 2011

Cripto e decripto :D

Prima un pò di storia.

L'altro giorno ho scritto un post dal titolo "Tac e rev" (qui); un post un pò insolito dal momento che presenta i caratteri rovesciati e le righe invertite. In un commento il carissimo ldl3 mi chiedeva se ero a conoscenza di un comando che capovolgesse il testo in modo speculare, proprio così: ¿ǝɹɐlnɔǝds uı ǝɔıldɯǝs oʇsǝʇ un ıɯɹoɟsɐɹʇ ǝɥɔ opuɐɯoɔ un ǝɥɔuɐ ǝʇsısǝ 'ɐɯıssıɔıʇɐdɯıs ,ǝ ɐsoɔ ǝɯoɔ

Non si è fatto attendere un altro amico, Lightuono. Lightuono, letto il commento di idl3, ha iniziato a stravolgermi l'esistenza. :D Si è messo subito sulle tracce di una probabile soluzione . Per un pò l'ho seguito ma poi, spazientito, ho preferito andare a cena e farmi una doppia razione di vino (1/2 litro o forse  più) :D

Intanto l'infaticabile Lightuono (almeno quando si tratta di Linux) non è rimasto guardare. E' andato oltre. E' tutto riportato sul suo blog in un post dal titolo strano (Ti arrovescio il testo :) | pꞁɹoM oꞁꞁǝH). Ma del resto ditemi voi se c'è qualcosa di normale in questa storia! :)


Intanto Idl3 legge il post di Ligh e ne rimane affascinato; infatti ecco cosa dice in un commento al post in questione: " Chi l’avrebbe mai detto che la magia del testo rovesciato avrebbe intrigato anche te..."(riferendosi avviamente a Light)

Lightuono però non si dà pace. Cerca in tutti i modi una soluzione più ortodossa al problema. E proprio quando è sul punto di trovarla, ecco che arriva il secondo commento di Idl3; questa volta con la soluzione definitiva (qui)

 Fine della storiella.

L'idea del mio post

L'idea del mio post nasce proprio dal commento di Lightuono in risposta a Idl3 e a Juhan (un altro caro amico): "A volte non c’è bisogno di grandi algoritmi per la criptazione..."

La sostanza del mio post

In pratica, ho preso la riga di comando di  idl3, l'ho parzialmente modificata e ho creato due script. Uno per la criptazione e l'altro per la decriptazione di file di testo. Niente di particolare. Roba da poco.

Script n. 1 (che ho chiamato Cripta.sh). Questo script serve a criptare un file di testo.

Ecco il corpo dello script:

#!/bin/bash


chiave1=ɐqɔpǝɟƃɥıɾʞlɯuodbɹsʇnʌʍxʎz
chiave2=zaybxcwdevfvguhtjskrlqmpno

cat /home/bit3lux/Documenti/processo | tac | sed "y/abcdefghijklmnopqrstuvwxyz/$chiave1/" | tr "a-z" "$chiave2"  >filecriptato

exit 0


Bisogna copiarlo su un file di testo e nominarlo come Cripta.sh

Io l'ho salvato nella cartella cartella documenti; per renderlo eseguibile, bisogna aprire un terminale e digitare:

$ sudo chmod +x Cripta.sh

 Ovviamente ho usato il percorso dove era contenuto il mio file "processo"
quindi chi volesse usare questo script deve aggiungere il proprio percorso :D

Script n.2 Questo script serve a decriptare il file precedentemente criptato con Cripta.sh. L'ho chiamato Decripta.sh

Ecco il corpo dello script.

#!/bin/bash

chiave1=ɐqɔpǝɟƃɥıɾʞlɯuodbɹsʇnʌʍxʎz

chiave2=zaybxcwdevfvguhtjskrlqmpno

cat /home/bit3lux/Documenti/filecriptato | tac | tr "$chiave2" "a-z" | sed "y/$chiave1/abcdefghijklmnopqrstuvwxyz/" >filedecriptato

exit 0

Anche questo script va copiato su un file di testo e rinominato come Decripta.sh

L'ho salvato nella cartella documenti; per renderlo eseguibile, bisogna aprire un terminale e digitare:

$ sudo chmod +x Decripta.sh

 Ho decriptato l'output dello script "Cripto.sh" Ovviamente dovete, anche in questo caso, cambiare il percorso con quello del vostro file. :)


Per lanciare sia il primo che il secondo script.

Mi sono spostato nella Directory dove ho salvato gli script e dove era contenuto il file da criptare (nel mio caso il file si chiama "processo")


$ cd Documenti


Per lanciare il primo script


$ ./Cripta.sh


Per lanciare il secondo script


$ ./Decripta.sh


Vi mosto l'output di entrambi gli script


Il risultato del primo script:




Il risultato del secondo script:




Non so se ciò di cui sto parlando può definirsi criptazione e decriptazione.  Comunque c'ho provato :D


Ciao :D

9 commenti:

  1. Puoi mettere cat $1 ecc. Il file da criptare/decriptare lo indichi da terminale quando dai il comando. Cosi' non devi modificare lo script ogni volta. Inoltre puoi mettere tutto in un unico script, e scegli di volta in volta se devi criptare o decriptare. Bastano due if.

    #!/bin/bash

    echo "Vuoi criptare (c) o decriptare (d)?"
    read operazione

    chiave1=ɐqɔpǝɟƃɥıɾʞlɯuodbɹsʇnʌʍxʎz
    chiave2=zaybxcwdevfvguhtjskrlqmpno

    if [ $operazione == c ]; then
    cat $1 | tac | sed "y/abcdefghijklmnopqrstuvwxyz/$chiave1/" | tr "a-z" "$chiave2" >filecriptato
    fi
    if [ $operazione == d ]; then
    cat $1 | tac | tr "$chiave2" "a-z" | sed "y/$chiave1/abcdefghijklmnopqrstuvwxyz/" >filedecriptato
    fi
    exit 0

    RispondiElimina
  2. Ahahahah ragazzi, siete dei grandi! :D

    Per evitare che ci sia da cambiare il percorso ogni volta potresti usarlo come parametro dello script:

    $ ./cripta.sh percorso

    E all'interno dello script sostituisci '/home/bit3lux/Documenti/filecriptato' con $1, rendendolo più generale :)

    RispondiElimina
  3. @Idl3
    Grazie assai; ora provo il tuo script.

    Mattux
    Gentilissimo come al solito. :)

    RispondiElimina
  4. Mi sa che scriverò un post a tal merito ;)

    RispondiElimina
  5. oooo ficata! Ragazzi siete proprie dei nerd xD

    Quel genere di criptazione mi ricorda il codice di Cesare: http://it.wikipedia.org/wiki/Cifrario_di_Cesare

    RispondiElimina
  6. @Picchiopc

    meglio di cesare infatti sta tra poco arriverà il post con lo script migliorato ;)

    RispondiElimina
  7. @Picchio
    Ho dormito tutto il pomeriggio. Mi sono svegliato un attimo e ho moderato il tuo post. Sai, tengo il portatile sul comodino e non mi è difficile dare, ogni tanto, un controllatina. Mi ha svegliato, proprio adesso, il telefono. Peccato, stavo facendo un sogno che prendeva spunto dal tuo commento: Ero cesare! :)


    Il post di light lo trovate alla seguente pagina

    http://toshidex.org/2011/04/07/ti-arrovescio-il-testo-come-dio-comanda/

    RispondiElimina
  8. vorrei sapere cosa sarebbe il programma di decriptazione "codifica di cesare"

    RispondiElimina