2017-04-04 1 views
2

J'ai une chaîne:Comment puis-je faire de l'ingénierie inverse de la méthode d'encodage utilisée ici?

RP581147238IN qui obtient codé comme A3294Fc0Mb0V1Tb4aBK8rw==

et une autre chaîne:

RP581147239IN qui obtient codé comme A3294Fc0Mb1BPqxRDrRXjQ==

Mais après avoir passé une journée, je ne peux toujours pas comprendre quel est le processus d'encodage.

La chaîne codée ressemble à son codage en base64.

Mais quand je décode, il ressemble à: base64.decodestring ("A3294Fc0Mb0V1Tb4aBK8rw ==") \x03}\xbd\xe0W41\xbdA>\xacQ\x0e\xb4W\x8d

La base 64 décodée chaîne est maintenant à la recherche comme une chaîne compressée zlib

I » Nous avons essayé d'utiliser les méthodes de décompression de zlib, mais aucune d'elles n'a fonctionné.

import zlib, base64 
rt = 'A3294Fc0Mb1BPqxRDrRXjQ==' 

for i in range(-50, 50): 
    try:          
     print(zlib.decompress(base64.decodestring(rt), i)); 
     print("{} worked".format(i)) 
     break 
    except: 
     pass 

Mais cela n'a donné aucun résultat non plus.

Quelqu'un peut-il comprendre quel est le processus de codage utilisé ici. @Nirlzr, je vous regarde pour la réponse héroïque que vous avez fourni dans Reverse Engineer HTTP request.

+0

@Nirlzr, je vous regarde pour l'aide – John

+1

Malheureusement, je ne pense pas que je peux aider ici. À moins que vous ne soyez prêt à faire beaucoup plus de travail, vous aurez besoin de désosser le code générant ces sorties pour comprendre ce qu'il fait. – NirIzr

Répondre

0

Si vous mettez votre côté des chaînes de données à côte:

RP581147238IN A3294Fc0Mb0V1Tb4aBK8rw== 
RP581147239IN A3294Fc0Mb1BPqxRDrRXjQ== 

Vous pouvez voir que les chaînes de la source ont seulement la différence de caractère, mais la version codée contient 12 caractères différents:

----------8-- ----------0V1Tb4aBK8rw-- 
    ----------9-- ----------1BPqxRDrRXjQ-- 

données encodées a paddings similaires à la fin comme base64, mais certainement ce n'est pas base64. Probablement crypté avec un algorithme similaire à SHA. Avec les données que vous avez fournies, je dirais qu'il n'est pas possible d'inverser le processus d'encodage. Probablement plus de données n'aideraient pas beaucoup non plus.

0

Les chaînes semblent être codées en Base64 et les données décodées sous-jacentes semblent être cryptées. Les données cryptées ne peuvent pas être directement représentées sous la forme d'une chaîne et il est courant que Base64 code les données cryptées lorsqu'une chaîne est requise.

Si tel est le cas, vous devez déchiffrer les données décodées et ignorer pour accomplir cela, vous auriez besoin de la clé de chiffrement.

Remarque: En général, il n'est pas productif de compresser de tels éléments courts.