Entonces, creo que el algoritmo se basa en la función php ENCODING_decode
definida en includes / encoding.php (que no tengo).
El resultado codificado $xId_campaign_encoded
del script php tiene siempre 24 caracteres alfanuméricos
Entonces, creo que el algoritmo se basa en la función php ENCODING_decode
definida en includes / encoding.php (que no tengo).
El resultado codificado $xId_campaign_encoded
del script php tiene siempre 24 caracteres alfanuméricos
Los ID de usuario y campaña parecen ser números hexadecimales (de 32 y 48 bits respectivamente). No veo ninguna estructura obvia en ellos, definitivamente no son cadenas de bytes ASCII imprimibles.
Las cadenas de "resultado" de 24 caracteres no son hexadecimales, pero pueden ser base 36 . Sin embargo, si es así, son demasiado largos para ser decodificados de manera confiable por la función base_convert () de PHP .
Sin embargo, si observa detenidamente las cadenas de muestra, notará que las letras solo aparecen en posiciones de caracteres impares. Esto sugiere que las cadenas pueden estar codificadas dos caracteres a la vez. De hecho, si divide cada cadena en pares de dos caracteres, intercambia las letras en cada par y las decodifica como números base 36, todos los valores resultan ser menores que 256. Específicamente, las cadenas dio descodificación a las siguientes cadenas hexadecimales:
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
Estos todavía muestran bastante redundancia; por ejemplo, el nibble superior de cada byte siempre es 6
, 9
o c
= 12, y los nibbles inferiores tampoco están distribuidos de manera 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 #
De hecho, al trazar la frecuencia de todos los bytes como una tabla, con el byte superior como la fila (mostrando solo las filas 6
, 9
y c
por brevedad) y la menor como la columna, da un Imagen curiosa:
| 0123456789abcdef
--+-----------------
6 | 0010122112041311
9 | 0001238512312210
c | 0000011311110000
Sin embargo, no puedo pensar de inmediato en qué podría estar generando tal distribución de bytes, pero parece demasiado distinto para ser solo una coincidencia.
Lea otras preguntas en las etiquetas cryptography encryption cryptanalysis