L'inversion de CRC32
Je suis à la recherche d'un moyen d'inverser une somme de contrôle CRC32. Il y a des solutions, mais qu'ils sont soit mal écrit, extrêmement techniques et/ou dans l'Assemblée. L'assemblée est (pour l'instant) au-delà de mon ken, donc je suis en espérant que quelqu'un peut rassembler de la mise en œuvre dans un langage de plus haut niveau. Ruby est l'idéal, mais je peux analyser PHP, Python, C, Java, etc.
Tout preneurs?
Que voulez-vous dire exactement par "reverse"
Juste porté un C mise en œuvre de Python: github.com/jellever/Pwnage/blob/master/reversecrc.py
Pouvez-vous indiquer à la table ont besoin pour fonctionner votre code. Que puis-je ajouter ici: #Personnalisé CRC tableau, remplacer par votre propre tableau = []
Juste porté un C mise en œuvre de Python: github.com/jellever/Pwnage/blob/master/reversecrc.py
Pouvez-vous indiquer à la table ont besoin pour fonctionner votre code. Que puis-je ajouter ici: #Personnalisé CRC tableau, remplacer par votre propre tableau = []
OriginalL'auteur pat | 2009-10-03
Vous devez vous connecter pour publier un commentaire.
Un CRC32 n'est réversible si la chaîne d'origine est de 4 octets ou moins.
Si vous regardez à la mise en œuvre, pour les 4 octets, il va faire 3 8 bits déplace avec seulement XOR opérations, alors oui, il est réversible: sanity-free.org/12/crc32_implementation_in_csharp.html
C'est ce que j'avais d'abord pensé, et puis y avait des gens qui envoyer les liens mentionnés ci-dessus à ma façon... de toute évidence, le fait que c'est limité à 4 octets a été passées sous silence. Merci pour la clarification.
Si le CRC est basée sur les primitives polynôme de ce que l'on est, ce que cela signifie qu'il sera de retour uniqe clé pour tous de 2^32 imputs.
Manque le point: même si CRC32 n'est pas toujours réversible, étant donné qu'un certain CRC32 de valeur est un CRC d'une véritable chaîne de caractères, elle est nécessairement réversible.
OriginalL'auteur Cade Roux
Lire le document appelé "l'Inversion de la CRC de la Théorie et de la Pratique".
C'est C#:
OriginalL'auteur Fozi
Vous pouvez l'inverser par la sauvegarde de l'bits pour générer de l'original 32 bits si vous connaissez la poly il a été créé. Mais si vous êtes à la recherche d'inverser le CRC32 partir d'un fichier donné et ajouter une série d'octets à la fin du fichier pour correspondre à l'original CRC j'ai posté le code sur ce fil en PHP:
J'ai passé un peu de temps donc j'espère que ça peut aider quelqu'un à travailler sur davantage de problèmes:
L'inversion de CRC32
Cheers!
OriginalL'auteur Jeremy Adsitt
Cade Roux Est juste à propos de l'inversion de CRC32.
Les liens que vous avez mentionnés fournir une solution à un CRC qui est devenu invalid par la modification de l'origine de flux d'octets. Cette correction est obtenue par le changement de certains (sans importance) octets, et ainsi de recréer l'original de la valeur CRC.
OriginalL'auteur Frank Bollack