Quindi penso che l'algoritmo sia basato sulla funzione php ENCODING_decode
definita in include / encoding.php (che non ho).
Il risultato codificato $xId_campaign_encoded
dallo script php ha sempre 24 caratteri alfanumerici
Quindi penso che l'algoritmo sia basato sulla funzione php ENCODING_decode
definita in include / encoding.php (che non ho).
Il risultato codificato $xId_campaign_encoded
dallo script php ha sempre 24 caratteri alfanumerici
Gli ID utente e campagna sembrano numeri esadecimali (rispettivamente di 32 e 48 bit). Non vedo alcuna struttura ovvia in loro - non sono assolutamente stringhe di byte ASCII stampabili.
Le stringhe "risultato" a 24 caratteri non sono esadecimali, ma potrebbero essere base 36 . Tuttavia, se è così, sono troppo lunghi per essere decodificati in modo affidabile dalla funzione base_convert () di PHP. .
Tuttavia, se osservi attentamente le stringhe di esempio, noterai che le lettere appaiono solo nelle posizioni dei caratteri dispari. Questo suggerisce che le stringhe potrebbero essere codificate due caratteri alla volta. Infatti, se dividi ogni stringa in coppie di due caratteri, scambia le lettere in ogni coppia e decodificale come numeri di base 36, tutti i valori risultano essere inferiori a 256. In particolare, le stringhe hai dato la decodifica alle seguenti stringhe esadecimali:
z264643413z2e4l5i5744413 -> 6b 96 96 93 6d 6b 9e c9 c6 97 94 6d
x2v2d4a4a4z2d464j5c464u2 -> 69 67 9d 9a 9a 6b 9d 96 c7 9c 96 66
z2q274k523647454b4948464 -> 6b 62 97 c8 6e 96 97 95 9b 99 98 96
13s2j55433x2m5n594u244a4 -> 6d 64 c7 95 6f 69 ca cb 99 66 94 9a
74t2c4h5w20364j56474t254 -> 97 65 9c c5 68 6c 96 c7 96 97 65 95
Questi mostrano ancora un bel po 'di ridondanza; per esempio, il nibble superiore di ogni byte è sempre 6
, 9
o c
= 12, e i bocconcini più bassi non sono distribuiti esattamente in modo uniforme:
0 = 0: 0
1 = 1: 0
2 = 2: 1 #
3 = 3: 1 #
4 = 4: 3 ###
5 = 5: 6 ######
6 = 6: 11 ###########
7 = 7: 9 #########
8 = 8: 3 ###
9 = 9: 5 #####
a = 10: 4 ####
b = 11: 6 ######
c = 12: 3 ###
d = 13: 5 #####
e = 14: 2 ##
f = 15: 1 #
In effetti, traccia la frequenza di tutti i byte come tabella, con il byte superiore come riga (che mostra solo le righe 6
, 9
e c
per brevità) e più in basso come la colonna, dà un foto curiosa:
| 0123456789abcdef
--+-----------------
6 | 0010122112041311
9 | 0001238512312210
c | 0000011311110000
Tuttavia, non riesco a pensare immediatamente a cosa potrebbe generare una tale distribuzione di byte, ma sembra troppo distinto per essere solo una coincidenza.
Leggi altre domande sui tag cryptography encryption cryptanalysis