2008-11-18 3 views
5

Kann jemand den CRC-Algorithmus herausfinden, wenn ein gegebener Code + CRC-String gegeben ist?Wie könnte ich einen Prüfsummenalgorithmus erraten?

Ich habe mehrere Strings, die aus Code + übereinstimmenden CRCs bestehen, aber ich weiß nicht, wie ich den betreffenden CRC berechnen soll, damit ich mehr Code-Strings erzeugen kann. Hier einige Beispiele (16bit Code + 4-Bit-CRC):

 
0010101000011101 + 0000 
0010101000011111 + 0001 
1000110011101101 + 0001 
0000000000000100 + 0010 
0011100011001110 + 0011 
1000110011101110 + 0100 
0001011110101100 + 0100 
0010101000011110 + 0101 
0011100011001101 + 0110 
0001011110101111 + 0111 
0011100011001100 + 1001 
0011100011001111 + 1010 
0001011110101101 + 1011 
0000000000001000 + 1011 
0000111100001101 + 1100 
0000000000001100 + 1100 
1111111111111111 + 1101 
1000110011101111 + 1101 
1000110011101100 + 1110 
0001011110101110 + 1110 
1111111100001101 + 1110 
0010101000011100 + 1111 

Diese Codes stammen aus einem RF (433MHz) Sender wie die X10-Produkte.

Ich bin mir nicht sicher, ob das ein CRC ist oder was es ist, aber zumindest berechnet es irgendwie aus diesen Code-Strings.

Kann jemand helfen?

Updates:

RE: die Spezifikationen zu finden, ich denke auch, die beste Lösung wäre, aber da dies keine Option muss ich irgendwie die Prüfsummenberechnung rohe Gewalt.

Das ist das Problem, ich habe die Spezifikationen nicht und kann sie nirgendwo finden. Ich habe mehrere verschiedene Prüfsummen-Berechnungsmethoden ohne Ergebnis ausprobiert, gibt es keine Möglichkeit, die Eingabestrings zu vergleichen, um herauszufinden, was sie gemeinsam haben und auf diese Weise den Algorithmus erhalten

+0

In Verbindung stehend: http://stackoverflow.com/questions/283556/tricky-crc-algorithm –

+0

Erklären Sie, was ein Rf-Absender und das X10 Zeug ist. Vielleicht ist http://www.x10.com/minisites/videosender/rf_systems_pro_3250_wireless_video_sender.html verwandt. In diesem Fall hätten Sie - Tom - uns erklären sollen, wonach Sie suchen. Wir sollten nicht raten müssen, wonach Sie suchen! –

+0

RF-Steckdosen (EMW100) sind von www.everflourish.com.cn, umbenannt in Cotech, verkauft von www.clasohlson.fi, Sender - http://www.clasohlson.se/Archive/Images/Products/Hi/361183A_X_2007- 06-27_161950_278.jpg, remote - http://www.clasohlson.se/Archive/Images/Products/Hi/361183C_X_2007-06-27_162028_434.jpg –

Antwort

3

Raten ist das richtige Wort. Wenn dieses RF-Gerät nicht proprietär ist, lesen Sie die Spezifikationen! Dies wäre der einfachste Weg zu gehen.

Das Erraten aller möglichen CRC (oder Hashing-Algorithmen) sieht nicht allzu optimistisch aus. Schauen Sie sich einfach here an.

Eine dritte Möglichkeit besteht darin, den Code, den Sie zum Erzeugen der Prüfsummen verwenden, zurückzuentwickeln.

viel Glück :)

+1

Nun, wenn die Prüfsumme 4 Bits ist, und wir haben es mit einem CRC, dann Quoten sind es ein CRC-4. Das Polynom ist nicht bekannt, aber es gibt sowieso nur 16 Möglichkeiten, also sollte es nicht lange dauern, bis ein Brute Forcer alle ausprobieren kann. –

0

Es gibt zu viele CRC-Algorithmus Möglichkeiten effektiv zu erraten. Sie können den einfachen Ansatz wählen, indem Sie eine Spezifikation für Ihr Gerät finden. Oder Sie können die Brute-Force-Methode verwenden, bei der die CRC für jede mögliche Eingabe ermittelt und ein Algorithmus erstellt wird, der das gleiche Ergebnis generiert.

0

Sie könnten ein paar häufige CRC-Methoden versuchen und hoffen, Glück zu haben, aber Manas Antwort (auf der Suche nach Spezifikationen) wäre die beste Wahl.

5

Was lässt Sie glauben, dass es sich um ein CRC handelt? Normalerweise werden CRCs für solche kleinen Daten nicht verwendet.

Für mich sieht das eher wie eine Art von Parität, ECC (eigentlich FEC) oder Reed-Solomon Code aus. Könnte Hamming Code sein - Hamming weit verbreitet in der Industrie, in der Telekommunikation.

0

Der ganze Punkt in einem guten Prüfsummenalgorithmus ist, dass es nicht hat nichts mit dem Eingabetext gemeinsam haben. Sie können ein einzelnes Zeichen in der Eingabe ändern. und die gesamte Prüfsummenausgabe wird sich ändern. Der einzige Weg, den anderen Weg zu gehen, ist, ja, raten. Wenn Sie wissen, was die Eingabe- und Ausgabezeichenfolgen sind, können Sie einige allgemeine Prüfsummenalgorithmen ausprobieren und sehen, ob einige von ihnen die richtige Ausgabe liefern. Ansonsten ist das nicht möglich.

Alternativ, wie andere vorgeschlagen haben, ist es möglicherweise keine Prüfsumme, sondern eine Art von Fehlerkorrektur-/Redundanzcode, und das könnte leichter herauszufinden sein.

0

Wahrscheinlich ist es kein CRC, aber ich schaffe es nicht, den Fehlerkorrektur/Redundanzalgorithmus zu finden.

0

Nach der Länge der Strings im Vergleich zur Länge der Prüfsumme, würde ich sagen, dies ist eine einfache 1-Fehler-Korrektur-Prüfsumme. Es ist wahrscheinlich einer der einfachsten mit Hamming-Distanzen. Ich kann mich nicht daran erinnern, wie es funktioniert hat, und ich habe keine Informationstheorie/lineare Algebra-Lehrbücher über mich.

2
['0010101000011101', '0000', '0'] ['0010101000011110', '0101', '5'] [1, 3] 
['1000110011101101', '0001', '1'] ['1000110011101110', '0100', '4'] [1, 3] 
['0000000000000100', '0010', '2'] ['0000000000001000', '1011', 'b'] [0, 3] 
['0011100011001110', '0011', '3'] ['0011100011001101', '0110', '6'] [1, 3] 
['0001011110101100', '0100', '4'] ['0001011110101111', '0111', '7'] [2, 3] 
['0011100011001100', '1001', '9'] ['0011100011001111', '1010', 'a'] [2, 3] 
['0001011110101101', '1011', 'b'] ['0001011110101110', '1110', 'e'] [1, 3] 
['1000110011101111', '1101', 'd'] ['1000110011101100', '1110', 'e'] [2, 3] 

Ergebnisse des Differentials "Analyse", das sieht nicht aus wie crc, Referenz: http://www.cosc.canterbury.ac.nz/greg.ewing/essays/CRC-Reverse-Engineering.html

Ich bezweifle es Code entweder ist Hamming, wie 4 Paritätsbits nur 11-Bit-Daten ermöglichen, nicht 16

Verwandte Themen