n° 219
Novembre 2017
Dicembre 13, 2017, 05:30:46 *
Benvenuto! Accedi o registrati.
Hai dimenticato l'e-mail di attivazione?

Accesso con nome utente, password e durata della sessione
Notizia:
 
   Indice   Linux Windows Techassistance Gameassistance videogame hardware Aiuto Ricerca Agenda Downloads Accedi Registrati  


* Messaggi recenti
Messaggi recenti
Pagine: 1 [2]   Vai giù
  Stampa  
Autore Discussione: xml CRIPTATO, cosa fare?  (Letto 7553 volte)
0 utenti e 1 Utente non registrato stanno visualizzando questa discussione.
DEV-01
Full Member
***

Karma: +11/-23
Scollegato Scollegato

Messaggi: 472

Me.Shift ^(n)


Mostra profilo E-mail
« Risposta #15 inserita:: Ottobre 30, 2015, 12:19:09 »

Ciao,

Ho notato che il rapporto fra il dato in chiaro e la stringa che lo rappresenta riporta sempre questo risultato:

3.052

ovvero:

(3 * $_InChiaro.Lenght) + 1

infatti se esegui il modulo:

$_Cifrata.Lenght Mod $_InChiaro.Lenght

il risultato è sempre 1.

Bisognerebbe capire se:

a) La cifra "dispari" rappresenta un checksum per verificare l'integrità del dato (abbastanza probabile);
b) Capire se, come consuetudine, questa venga aggiunta alla fine della stringa o in qualche altra posizione;

In caso contrario:

a) Capire se rappresenta il valore di un enumerazione che indichi l'algoritmo di decodifica da utilizzare al programma che si occupa di mostrare i dati in chiaro;
b) Capire se l'algoritmo è lo stesso ma il valore indica il numero di interazioni da intraprendere;
c) Capire se il valore è una chiave di dizionario associata ad un "salt".

Però secondo me si tratta di un checksum.

Tenterei di trasformare il dato in una codifica barcode (qualche variante) con checksum e contare le barre e gli spazi che compongono il testo per vedere se le sequenze raggruppate di barre e spazi corrispondano in qualche maniera ai caratteri in chiaro o abbiano qualche rapporto più o meno diretto con la codifica stessa dei caratteri (presa a gruppi di tre).

[EDIT]

per esempio per la mail si può ricavare questa "tabella":
Codice:
email = 3227221222219204222225206174204210206221211217213223216156212228

322 s 
722 p 
122 u
221 m
920 a
422 n
222 t
520 e
617 @
420 a
421 b
020 a
622 t
121 e
121 n
721 e
322 r
321 o
615 .
621 i
222 t
8         <- Checksum ??
Registrato

01000100 01100101 01110110 00101101 00110000 00110001
Tonyx
Jr. Member
**

Karma: +4/-0
Scollegato Scollegato

Messaggi: 94


Mostra profilo
« Risposta #16 inserita:: Novembre 07, 2015, 03:26:34 »

Aggiungo un altro tassello.

DEV-01 ci ha indirizzato verso la strada delle 3 cifre per lettera, più una cifra dispari. Penso di aver capito a cosa serve.
La cifra dispari non è l'ultima bensì la prima. Prendiamo le prime 3 ragioni sociali contenute le file d'esempio cripto.xml.

ABATE......
3177175170194176......

ANTONELLI......
5179189191191187183187183185........

ANTICA...
2176186188182173176....

La prima cifra è la cifra dispari ed è una sorta di "chiave iniziale", siccome queste tre ditte iniziano tutte con la A, notavo che se prendiamo la prima cifra e la sottraiamo al successivo gruppo di 3 cifre avremo un'associazione costante ovvero:
177-3 = 174
179-5 = 174
176-2 = 174
Possiamo quindi affermare che la "A" =  174.
Da qui in poi ci deve essere qualche altra operazione che coinvolge la terna precedente, non si sottrae più la chiave iniziale perchè altrimenti nella ditta ABATE la seconda A dovrebbe essere come la prima 177, mentre questa è pari a 170. Resta da capire qual'è questa operazione tra le lettere man mano che si avanza.
Le lettere minuscole hanno corrispondenza con valori più alti, ma grazie al fatto che queste email non iniziano sempre con "info" ho capito che le lettere sono in successione, calcoliamo i valori della prima lettera:
spumtante@.... la "s" è uguale a 227 - 3 = 224
info@.... la "i" è uguale a 219 - 5 = 214
Se usiamo l'alfabeto inglese e mettiamo in successione le lettere avremo:
a = 206
b = 207
...
i = 214
...
s = 224
Con la stessa logica abbiamo che le lettere maiuscole sono in successione da:
A = 174
...
Z = 199

C'è da capire qual'è l'assegnazione per i caratteri, tipo: il punto, la "&", lo spazio ecc. ecc.

La questione più grande da risolvere è quella di capire nel susseguirsi delle cifre qual'è l'operazione da compirere, alcune volte si addiziona un valore ignoto altre volte si sottrae un valore ignoto.

Saluti
Tony.




Registrato

Informazioni su Ischia
DEV-01
Full Member
***

Karma: +11/-23
Scollegato Scollegato

Messaggi: 472

Me.Shift ^(n)


Mostra profilo E-mail
« Risposta #17 inserita:: Novembre 07, 2015, 09:07:49 »

Ottima osservazione.

Io avevo notato la "vicinanza" delle cifre ma non avevo "osato" tanto.

Anche la 'N' e la 'T' seguono il principio notato da Tonyx (nick che mi ricorda qualcuno).

Posto una nuova tabella:

ANTONELLI......
5
179 A
189 N
191 T
191 O
187 N
183 E
187 L
183 L
185 I


ANTICA...
2
176 A
186 N
188 T
182 I
173 C
176 A

Noto che le doppia 'L' in 'ANTONELLI' viene scambiata di posto con il valore precedente.
Anche la seconda 'N' con la 'O' ma in questo caso si tratta di una ripetizione.

Forse i valori associati alle lettere dalla seconda, terza in poi vengono scambiati di posto fra loro.

Registrato

01000100 01100101 01110110 00101101 00110000 00110001
Roberto Allegra
Global Moderator
Hero Member
*****

Karma: +50/-1
Scollegato Scollegato

Messaggi: 2102



Mostra profilo WWW
« Risposta #18 inserita:: Novembre 08, 2015, 02:06:57 »

Partendo dall'eccellente lavoro fatto prima da DEV-01 e poi da Tonyx, bastano pochi minuti di osservazione in excel per fare quel piccolo passo che porta alla soluzione completa.

Abbiamo:

* Un cifrario T, molto semplice, in cui ad ogni lettera corrisponde un numero di 3 cifre (ad una rapida occhiata: a=206, b=207, c=208, etc...)
* Una tabella M, pari a [0,3,7,2,5]

Per codificare una stringa S in un numero N:

* Si sceglie una chiave (random?), k, che sarà N[0]
* Per ogni elemento i della stringa, si scrive  T[S[ i ]] + k - M[i % 5]

esempio: stringa "info@antonellisanmarco.it", con k=5

Codice:
(         k       )  =  (      5    )  =  5
(T['i'] + k - M[0])  =  (214 + 5 - 0)  =  219
(T['n'] + k - M[1])  =  (219 + 5 - 3)  =  221
(T['f'] + k - M[2])  =  (211 + 5 - 7)  =  209
(T['o'] + k - M[3])  =  (220 + 5 - 2)  =  223
(T['@'] + k - M[4])  =  (??? + 5 - 5)  =  ???
(T['a'] + k - M[0])  =  (206 + 5 - 0)  =  211
(T['n'] + k - M[1])  =  (219 + 5 - 3)  =  221
(T['t'] + k - M[2])  =  (225 + 5 - 7)  =  223
(T['o'] + k - M[3])  =  (220 + 5 - 2)  =  223
(T['n'] + k - M[4])  =  (219 + 5 - 5)  =  219
(T['e'] + k - M[0])  =  (210 + 5 - 0)  =  215
(T['l'] + k - M[1])  =  (217 + 5 - 3)  =  219
(T['l'] + k - M[2])  =  (217 + 5 - 7)  =  215
(T['i'] + k - M[3])  =  (214 + 5 - 2)  =  217
(T['s'] + k - M[4])  =  (224 + 5 - 5)  =  224
(T['a'] + k - M[0])  =  (206 + 5 - 0)  =  211
(T['n'] + k - M[1])  =  (219 + 5 - 3)  =  221
(T['m'] + k - M[2])  =  (218 + 5 - 7)  =  216
(T['a'] + k - M[3])  =  (206 + 5 - 2)  =  209
(T['r'] + k - M[4])  =  (223 + 5 - 5)  =  223
(T['c'] + k - M[0])  =  (208 + 5 - 0)  =  213
(T['o'] + k - M[1])  =  (220 + 5 - 3)  =  222
(T['.'] + k - M[2])  =  (??? + 5 - 7)  =  ???
(T['i'] + k - M[3])  =  (214 + 5 - 2)  =  217
(T['t'] + k - M[4])  =  (225 + 5 - 5)  =  225

che produce il numero  5219221209223???211221223223219215219215217224211221216209223213222???217225, identico a quello fornito dal file di feliceconfuso.

Avendo dei dati già decriptati, è molto facile risalire ai caratteri mancanti, come la chiocciola. Poiché nel file di esempio era stato codificato come 173 è facile sapere che T['@']=173 (infatti: x+5-5 = 173). Allo stesso modo, basta risolvere l'equazione (x+5-7=153), per sapere che T['.']=155.

Questo è un esempio da manuale su come NON valga mai la pena di sbattersi a creare un proprio sistema di codifica. Ci sarà sempre qualcuno in grado di capire cosa si è fatto e di risalire all'algoritmo originario. (La "Security by Obscurity" non funziona). Molto meglio sarebbe stato per chi ha creato il file affidarsi ad un qualsiasi algoritmo two-way noto, usando una chiave robusta. Avrebbe faticato molto di meno lui, e molto di più noi.

Ora, speriamo solo di avere aiutato feliceconfuso ad essere più felice e meno confuso, e speriamo di non avergli dato le chiavi per rubare l'intero incasso degli stand dei vini dell'Expo. Sorriso
Registrato

I moderatori invitano tutti gli utenti a prendere visione del REGOLAMENTO e a rispettarlo.
DEV-01
Full Member
***

Karma: +11/-23
Scollegato Scollegato

Messaggi: 472

Me.Shift ^(n)


Mostra profilo E-mail
« Risposta #19 inserita:: Novembre 08, 2015, 10:29:55 »

Citazione
Questo è un esempio da manuale su come NON valga mai la pena di sbattersi a creare un proprio sistema di codifica. Ci sarà sempre qualcuno in grado di capire cosa si è fatto e di risalire all'algoritmo originario. (La "Security by Obscurity" non funziona). Molto meglio sarebbe stato per chi ha creato il file affidarsi ad un qualsiasi algoritmo two-way noto, usando una chiave robusta. Avrebbe faticato molto di meno lui, e molto di più noi.

Infatti anche io all'inizio ho dichiarato:
Citazione
Che io sappia, ma potrei sbagliarmi, non esistono funzioni crittografiche reversibili e sicure che restituiscano un output esclusivamente numerico

e mi sono affidato a soluzioni di fantasia pensando ad un maggiore impegno nella codifica utilizzata, rimanendo, adesso, un po deluso.

Complimenti a Roberto.

Con la tua visione d'insieme sei riuscito a codificare la formula con pochissimi dati a disposizione.

Ottima prova.
Registrato

01000100 01100101 01110110 00101101 00110000 00110001
Tonyx
Jr. Member
**

Karma: +4/-0
Scollegato Scollegato

Messaggi: 94


Mostra profilo
« Risposta #20 inserita:: Novembre 08, 2015, 11:32:47 »

Ottimo Roberto, quindi ora c'è solo da scegliere quale bottiglia di vino feliceconfuso ci spedirà?  Ghigno

Registrato

Informazioni su Ischia
Pagine: 1 [2]   Vai su
  Stampa  
 
Vai a:  

Copyright © 2017 Edizioni Master SpA. p.iva : 02105820787

Tutti i diritti di proprietà letteraria e artistica riservati. - Privacy



powered by Simple Machines