www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik CRC8-Algorithmus finden (anscheinend CRC8/146 )


Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Huuh, Hallo erstmal alle zusammen.

Ich habe eine Aufgabe bekommen, bestimmte Nummern auf einige 
Kontaktchipkarten (SLE4428) zu kodieren. Nur dummerweise hat der Kunde 
nur sehr wenig Dokumentation gebracht. Darin steht, dass es eine 
CRC8/146 über eine Seriennummer errechnet werden muss und auf die Karte 
kodiert. Was dieses 146 nun bedeutet weiss niemand von uns, der Kunde 
auch nicht :(  (Es wurde von langer Zeit so definiert. Jetzt muss es 
auch drauf wegen den alten Karten und Leser, welche der Kunde hat)

Jetzt ist die Frage, wie dieser CRC8/146 Algorithmus aussehen muss. Ich 
habe mit der standard CRC8 Funktion alle Polynome und Startwerte 
durchlaufen lassen und manchmal Treffer gehabt. Es ist aber nicht 
sicher!

Kann hier jemand helfen herauszufinden wie der CRC8/146 gerechnet werden 
muss, damit richtige Zahlen rauskommen?

Beispieldaten(der letzte Byte ist der CRC):

30303030303335323536315F
und
3030303030333532353634E8
und
3030303030333438313537E7
und
30303030303334383135369D
und
3030303030333337303133AA
und
303030303032393531393440

p.s.(bei der ersten zwei, wenn ich die die Reihenfolge der Bytes 
umdrehe, dann bekomme ich die richtige CRC's mit einem Polynom = 0x4D 
und Startwert = 0x12. Wenn ich aber dieselben Werte bei weiteren Daten 
anwende, bekomme ich nicht das richtige Ergebnis. dumm...)

Autor: Tim T. (tim_taylor)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aus dem Bauch raus und ohne deine Beispiele zu prüfen, würde ich sagen 
das 146 das Generatorpolynom angibt.

146 = 10010010 -> x^7 + x^4 + x^1

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein dass mit 146 das CRC-Polynom gemeint ist?
Vielleicht x^6 + x^4 + x?

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu spät ...

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
dachte ich auch, aber das ist es nicht... Ich habe mithilfe von zwei 
ineinander gesetzten Schleifen alle Polynome von 0x00 bis 0xFF und 
jeweils alle Startwerte durchprobiert. Kein einziger Treffer wo alle 
Beispieldaten gleichzeitig den richtigen CRC haben! Hammer, oder?? Das 
heisst doch, dass es irgendwie anders berechnet wird, oder nicht?


p.s.
(Ich habe jetzt etwas über das "CRC and how to Reverse it" gefunden. Nur 
leider fehlt mir das Grundwissen um es richtig zu verstehen. Es gibt 
anscheinend eine Software namens PEiD. Kennt sich damit jemand 
vielleicht aus? Vielleicht kann man damit das Algorithmus herausfinden 
oder so...)

Autor: Karl-heinz Strunk (cletus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reticent wrote:
> dachte ich auch, aber das ist es nicht... Ich habe mithilfe von zwei
> ineinander gesetzten Schleifen alle Polynome von 0x00 bis 0xFF und
> jeweils alle Startwerte durchprobiert. Kein einziger Treffer wo alle
> Beispieldaten gleichzeitig den richtigen CRC haben! Hammer, oder?? Das
> heisst doch, dass es irgendwie anders berechnet wird, oder nicht?

Wird die CRC vielleicht mit einem Startwert berechnet?
Probier die 256 verschiedenen Startwerte doch auch mal mit aus, dauert 
ja nicht lang ;-)

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> .. Ich habe mithilfe von zwei
> ineinander gesetzten Schleifen alle Polynome von 0x00 bis 0xFF und
> jeweils alle Startwerte durchprobiert.

ähm... habe doch geschrieben, dass ich alle Startwerte ausprobiert 
habe?!

Autor: dgl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Some CRC implementations xor the final value with some other value.
crc = crc ^ xor_Value

xor_Value = 146 ?

Maybe?

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Some CRC implementations xor the final value with some other value.
> crc = crc ^ xor_Value
>
> xor_Value = 146 ?
>
> Maybe?

maybe, I will try it :) (I was able to try "/146" as a division -> 
negative, now I'll try the XOR)
thx for the idea

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nop, still negative :))
I mean, I tried it and no consensus found. No hits where all of example 
data are have the right CRC... :(

----

nein, habe das mit dem XOR hinterher ausprobiert und keine 
{bereinstimmungen gefunden. Kein einyiger Fall wo alle Beispieldaten den 
richtigen CRC ausgerechten bekommen :(

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe jetzt eine tolle Seite entdeckt
http://serversniff.net/crypt-checksum.php

da gibts viele super Tools und man kann alles auf ein Schlag ausrechnen 
lassen. Das habe ich auch mit meinen Beispieldaten gemacht. Leider keine 
Treffer :(

Dann habe ich auch etwas von einer Methode gelesen wie man den 
Algorithmus herausfinden kann. Man soll irgendwie ein lineares 
Gleichungssystem bilden.... Weiss nicht ob das so stimmt... Kennt das 
jemand?

Oh mann... ich bin scho am verzweifeln. Was soll bloß tun? Wie kann man 
denn sonst herausfinden wie der blö.. CRC8/146 zustande kommt?

Es kommt mir vor als ob ich eine verschlüsselte Geheimnachricht 
entschlüseln soll :D  Ich bin da gar nicht stark... So'n Mist ...

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohaa, drehe ich langsam durch? :)
Fange an schon bei der chaostheorie reinzuschauen 
http://www.chaostheorie.de/read.php?1,1890

Autor: Fabio S. (codehamster)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
so wie ich das sehe ist die SLE4428 sektionsweise beschreibbar.

wenn du die erste sektion nimmst:

30303030303335323536315F

Das Checksummen Byte weg lässt:

30303030303335323536315

CRC8 Bildest

und dieses Resultat XOR mit 146 rechnest bekommst du

F somit das Checksummen Byte!

versuch das gleich noch mit der nächsten Sektion.

Funktioniert anscheinend nicht so!

Aber überprüf doch mal ob pro (Bereich) eine CS gebildet wird.
Wenn ich das recht in Erinnerung habe das die SLE4428  in Bereiche 
aufgeteilt ist.

Zudem hat die glaube ich noch einen Schreib/lese Schutz...

Autor: student (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit was liest du denn die Karte aus?
Sicher das die gelesenen Daten stimmen? (Lese Schutz der Karte) wenn Pin 
nicht korrekt eingegeben wurde kommt nichts sinnvolles zurück.

Zudem, gewisse Kontaktchipkarten Drehen die Bitreihenfolge.
Hast du das Datenblatt zur "alten" Chipkarte. Und bist du dir sicher 
dass die gelesenen Daten stimmen?

Autor: student (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ev hilft dir das noch weiter

http://www.zorc.breitbandkatze.de/crc.html

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Fabio S.
die 5 am Ende gehört aber schon dem CRC. Somit ist der CRC = 5F und 
nicht nur 5 seien soll.
Das mit dem XOR 146 habe ich auch probiert. Es klappt nicht bei allen 
Daten.

@student
Ic hlese die Karten mit SmartCardEditor V1.03. Leseschutz...hm.. Wird 
man überhaupt die Karte lesen können wenn der PIN nicht stimmt? Kommt da 
nicht gleich eine Fehlermeldung?
Von der alten Karte habe ich nur die Info das es ein CRC8/146 seien 
soll. Mehr nicht.
An die Bitreihenfolge habe ich auch gedacht. Daher in verschiedensten 
Variazionen probiert. von rechts nach links und umgekehrt.
Ich gehe davon aus, dass die gelesene Daten richtig sind. Aber wo du 
über den PIN sprichst und ich gerade sehe, dass es auf 0000 steht.... 
Ich prüfe das nochmal.
Die Internetseite mit dem Calculator kenne ich auch. Das war die erste 
Wahl bei mir. Aber dort bekomme ich auch nicht das was ich brauche :( 
Vlt habe ich nur krumme Arme...

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Reticent wrote:
> Huuh, Hallo erstmal alle zusammen.
>
> Ich habe eine Aufgabe bekommen, bestimmte Nummern auf einige
> Kontaktchipkarten (SLE4428) zu kodieren. Nur dummerweise hat der Kunde
> nur sehr wenig Dokumentation gebracht. Darin steht, dass es eine
> CRC8/146 über eine Seriennummer errechnet werden muss und auf die Karte
> kodiert. Was dieses 146 nun bedeutet weiss niemand von uns

Ich rate mal dass es das Generatorpolynom ist.

Autor: Reticent (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@student
@Fabio S.
es ist kein Leseschutz vorhanden. Von dem her sind alle gelesenen Daten 
richtig.

@Michael G.
ne ist es nicht. (Das wurde aber auch schon vorgeschlagen.)

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Kontaktchipkarten (SLE4428) zu kodieren. Nur dummerweise hat der Kunde

Im Datenblatt zum SLE4428 steht nichts von einem CRC8!?

-Hans

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.