Moin, ich habe ein Gerät welches Standardmäßig von einer CF Karte bootet. Dieses Gerät liest dabei auch die Seriennummer der CF Karte. Nun möchte ich mithilfe eines Mikrocontrollers eine selbst erstellte Seriennummer vortäuschen. Das Gerät kann auch von USB booten, liest aber trotzdem die Seriennummer der CF Karte. Sprich es müssen keine hohen Geschwindigkeiten erreicht werden. Ich stehe im prinzip bei null, da ich weder weiss wie so ein Befehl zum Abfragen der Seriennummer aussieht noch wie man den Controller an den CF Kartenanschluss anschliesst. Kann mir da jemand weiterhelfen?
Frag den Softwarehersteller wie man im Lizenzfile eine neue Seriennummer einträgt
Ich denke, das müsste zum Einlesen und implementieren reichen: https://engineering.purdue.edu/ece477/Archive/2004/Spring/S04-Grp07/documentation/cfspc2_0_compact_flash.pdf
Torben schrieb: > Nun möchte ich mithilfe eines Mikrocontrollers eine selbst erstellte > Seriennummer vortäuschen. Warum? Hast du die originale Karte nicht mehr? Man könnte versuchen, mittels CF-Adapter am PC und passenden Tools auf die Low Level Funktionen zuzugreifen und das Original 1:1 kopieren. Eine CF Karte mittels Mikrocontroller zu emulieren ist DEUTLICH mehr Aufwand. Lohnt sich das? Was soll der machen, außer die Seriennummer vortäuschen? Und damit einen Kopierschutz oder ähnliches umgehen? tststststs
Nein die Originale Karte habe ich leider nicht mehr. Das ist das Problem. Die Seriennummer ist fest mit einem Lizenzkey verknüpft. Ich habe beides in einer Textdatei gespeichert. Ausserdem habe ich ein Datenträgerabbild. Dieses enthält aber nicht diese Low-Level Informationen denke ich. Zumindest werden diese nicht auf den neuen Datenträger übertragen. Was gibt es denn für Tools um auf die Low-Level Funktionen zuzugreifen?
Torben schrieb: > Was gibt es denn für Tools um auf die Low-Level Funktionen zuzugreifen? Keine Ahnung. Wenn du in die oben verlinkte Spec. reingeschaut hättest, dann wüsstest du aber, dass es zwar einen Befehl gibt um die Seriennummer einer Karte abzufragen, aber keinen um sie zu ändern.
Es dürfte deutlich einfacher sein, die Software passend zu modifizieren. Ob Dein Vorhaben legal ist, steht auf einem anderen Blatt.
Ich hab da reingeschaut und habe auch keinen Befehl dazu gefunden. Und das liest man ja auch sehr häufig wenn man danach sucht, dass es eben nicht geht. Es interessiert mich aber trotzdem was es so für Tools gibt. Aber trotzdem vielen Dank für das Dokument.
Hmmm schrieb: > Es dürfte deutlich einfacher sein, die Software passend zu modifizieren. Da bin ich tatsächlich auch dran mich schlau zu machen.
Hmmm schrieb: > Es dürfte deutlich einfacher sein, die Software passend zu modifizieren. Das sehe ich auch so. Was bootet denn da für ein OS? Bei einem Win Programm ist es ziemlich trivial den API Aufruf zum lesen der Seriennummer zu patchen. Achtung es gibt mehrere Nummern die HW Seriennummer gibts per ATA cmd. Torben schrieb: > ich hab da reingeschaut und habe auch keinen Befehl dazu gefunden. nun der Umgang mit Disassembler und Debugger sollte man schon beherrschen. Nur vom reinschauen wird das sicher nichts. Es ist allerdings zu vermuten dass da noch mehr Schutz eingebaut ist. Nur die SN wäre schon ziemlich trivial.
Torben schrieb: > Ich hab da reingeschaut und habe auch keinen Befehl dazu gefunden Kapitel 6.2.1.6 Identify Drive – ECh Kapitel 6.2.1.6.6 Words 10-19: Serial Number
Klaus schrieb: > Kapitel 6.2.1.6 Identify Drive – ECh > Kapitel 6.2.1.6.6 Words 10-19: Serial Number Wie müsste denn so ein Befehl dazu aussehen um auf diese Adresse zuzugreifen?
unter Windows wäre die Api Funktion GetVolumeInformation().
Thomas Z. schrieb: > GetVolumeInformation(). Liefert die (willkürliche) Seriennummer des Volumes, nicht aber die Hardwareseriennummer des Laufwerks. Ein Volume kann z.B. eine Partition auf einem Laufwerk sein. Das hilft hier also nicht. https://stackoverflow.com/questions/24049367/how-do-i-get-the-disk-drive-serial-number-in-c-c
Die Hersteller haben sicher Tools um die CF Daten zu ändern, nur wird man da nicht drankommen. Von SanDisk gab es mal was um das ‚removable‘ Bit für XP Embedded zu ändern, aber auch das nur gegen NDA.
Hier wird ja anscheinend die CF-Karte gar nicht als solche verwendet, sondern nur ihre Seriennummer ausgewertet. Theoretisch also ist es durchaus möglich, mit einem µC eine CF-Karte soweit nachzubilden, daß sie das "Identify Drive"- und andere ATAPI-Kommandos auswertet und passend darauf antwortet. Der µC muss halt 16-Bit-I/O-Zugriffe mit ISA-Bus-Geschwindigkeit bewältigen können. UDMA und dergleichen sind für das Auslesen der Seriennummer nicht erforderlich. Das ganze ist natürlich eine fragwürdige Angelegenheit, denn der Hersteller des Gerätes resp. der Software wird sich irgendwas dabei gedacht haben, die Software mit der Hardware (der CF-Karte) zu "verdongeln". Diesen Mechanismus zu umgehen verstößt gegen die Lizenzbedingungen des Herstellers. Warum hat man ein Gerät mit einer Software, aber die CF-Karte dazu ist "abhandengekommen" (und doch so vorhanden gewesen, daß untaugliche Kopierversuche unternommen wurden)? Die Situation sähe anders aus, wenn der Hersteller der Software nicht mehr existiert und auch keine Nachfolgeinstitution bereit ist, bei einem Hardwaredefekt auszuhelfen, aber die Geschichte des Threadstarters klingt irgendwie anders.
Bevor ich Klimmzüge machen würde, wäre eine Anfrage beim Hersteller die einfache Lösung. Leider sind einige Hersteller nicht mehr da. Dann helfen nur noch Zaubertricks wie evtl. ein Diskeditor (falls nur veränderliche Speicherdaten).
Moin, ich habe mir mittlerweile eine Schnüffelplatine gebaut, mit der ich jeden Pin der CF Karte abgreifen kann. Dort habe ich an die Data-lines (D15-D00) einen Logic-analyzer (Digital Discovery von Digilent) angeschlossen. Das funktioniert auch ohne Probleme. Nun weiss ich aber im Programm des Logic-analyzers (WaveForms) nicht mehr weiter. Welches Protokoll muss ich wie anwenden, um die Daten "lesen" zu können? Klaus schrieb: > https://engineering.purdue.edu/ece477/Archive/2004/Spring/S04-Grp07/documentation/cfspc2_0_compact_flash.pdf In diesem Dokument steht folgendes zu den Data-lines: "These lines carry the Data, Commands and Status information between the host and the controller. D00 is the LSB of the Even Byte of the Word. D08 is the LSB of the Odd Byte of the Word." Daraus schließe ich, dass mit 16bit (WORD) kommuniziert wird, oder? Nur wie muss ich die einzelnen Signale "verbinden"? Vielen Dank schonmal
Torben schrieb: > Moin, ich habe mir mittlerweile eine Schnüffelplatine gebaut, mit der > ich jeden Pin der CF Karte abgreifen kann. Dort habe ich an die > Data-lines (D15-D00) einen Logic-analyzer (Digital Discovery von > Digilent) angeschlossen. Das funktioniert auch ohne Probleme. Das ist auch nur 1% der Problemlösung. > Nun weiss > ich aber im Programm des Logic-analyzers (WaveForms) nicht mehr weiter. > Welches Protokoll muss ich wie anwenden, um die Daten "lesen" zu können? Aha. > In diesem Dokument steht folgendes zu den Data-lines: > "These lines carry the Data, Commands and Status information > between the host and the controller. D00 is the LSB of the Even > Byte of the Word. D08 is the LSB of the Odd Byte of the Word." > > Daraus schließe ich, dass mit 16bit (WORD) kommuniziert wird, oder? Ja. > Nur wie muss ich die einzelnen Signale "verbinden" Ist das nicht selbsterklärend? Du musst die 16 Datenleitungen + einen handvoll Steuerleitungen anschließen. Dann kannst du das Protokoll mitlesen. Viel Spaß bei der Dekodierung! Das ist die gleiche Liga wie Maschinencode disassemblieren! Naja, wenn Hacker sein so einfach wäre, wäre man kein Hacker ;-)
Falk B. schrieb: > Ist das nicht selbsterklärend? Du musst die 16 Datenleitungen + einen > handvoll Steuerleitungen anschließen. Dann kannst du das Protokoll > mitlesen. Viel Spaß bei der Dekodierung! Das ist die gleiche Liga wie > Maschinencode disassemblieren! Naja, wenn Hacker sein so einfach wäre, > wäre man kein Hacker ;-) Ja das ist selbsterklärend. Ich weiss trotzdem nicht wie ich das in dem Programm umstezen kann. Kennt denn jemand dieses Programm und kann mir da weiterhelfen?
Torben schrieb: > Ich weiss trotzdem nicht wie ich das in dem > Programm umstezen kann. Welches Programm? Das Deines Logikanalysators? Warum? Ist da keine Bedienungsanleitung dabei, oder war die auch auf einer CF-Karte, die Du nicht mehr hast?
Torben schrieb: > Ja das ist selbsterklärend. Ich weiss trotzdem nicht wie ich das in dem > Programm umstezen kann. Kennt denn jemand dieses Programm und kann mir > da weiterhelfen? Mann O Mann, du bist ja der echte Experte! Klar "dieses Programm" kennen alle, vor allem da du nicht einmal dessen Namen gesagt hast! Jehova, Jehova! Lies mal was über Netiquette.
Torben schrieb: > an einen Logic-analyzer (Digital Discovery von Digilent) Immerhin, den hat er genannt. Ich kann mir nicht vorstellen, daß die Software, die Digilent für ihre Geräte anbietet, ohne jede Dokumentation daherkommt.
Torben schrieb: > Harald K. schrieb: >> Welches Programm? Das Deines Logikanalysators? > > Ja genau. Dein Logikanalysator wird nur Decoder für gängige Busprotokolle besitzen, einen Decoder für CF-Karten-Low-Level-Kommandos wirst du da sicher nicht finden. Da bleibt dir vermutlich nur das händische Entschlüsseln der mitgeschnüffelten Kommunikation, da werden diverse Bytes hin und her gehen, bis die Karte ihre Seriennummer preisgibt. Sehr mühsame Handarbeit!
Es gibt Logikanalysatoren, bei denen man sich Decoder selbstbauen kann, so z.B. die Saleae-Reihe. Und das geht auch beim "Digital Discovery" von Digilent. "Custom Interpreters available via scripting". Ein erster Schritt wäre also das Zusammenfassen der vom ISA-Bus her bekannten Leitungen, denn das IDE-Interface ist eine Teilmenge genau dieses uralten Klassikers der PC-Geschichte. https://en.wikipedia.org/wiki/Industry_Standard_Architecture https://en.wikipedia.org/wiki/Parallel_ATA 16 Datenleitungen (D0..D15), drei Adressleitungen (A0..A2), zwei Chipselects, IORead, IOWrite, DDRQ, DDACK, IOCHRDY und IRQ. Sollte die CF-Karte im UDMA-Betrieb angesteuert werden, wirds halt noch etwas komplizierter ...
Vielen Dank für die Hilfreichen Beiträge Wolfgang R. und Harald K. . Ich habe mir schon fast gedacht, dass es auf einen selbst geschriebenen Decoder hinauslaufen wird.
Harald K. schrieb: > "Custom Interpreters available via scripting". Sigrok/Pulseview haben leider auch keine fertigen. Sowohl IDE als auch CF stehen nur als "Possible candidates for future protocol decoders" mit 0% completion auf https://www.sigrok.org/wiki/Protocol_decoders
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.