Hardware Hacking - Alles mögliche auslesen - Arduino?

      Hardware Hacking - Alles mögliche auslesen - Arduino?

      Hey, wollte mal fragen, ob sich damit vllt jemand auskennt.

      Ich habe hier einen arduino nano rumliegen.
      Könnte man damit eigentlich datalines, z.B. irgendwelche interessanten punkte auf einem mainboard auslesen?
      Natürlich müsste man herausfinden, wie das ganze funktioniert und an die Spannung anpassen etc.

      Mich würde z.B. interessieren, ob man so sata mitsniffen könnte.
      Sata hat ja z.b. nur 4 Lanes, die anderen 3 sind nur gnd.
      Dafür sollte der Arduino (oder ggf etwas anderes) ausreichend lanes haben.

      Eine andere möglichkeit wäre sonst auch, den laser am laufwerk direkt auszulesen. Also die "Raw bites"
      So wie ich das verstehe, leuchtet der LAser gegen die disc. Dort sind dann spezielle bereiche, die einen reflektieren stark, andere schwach.
      Man hat unten ein empfangsgerät, welches Hardcoded einfach nur 1 oder 0 liest.
      Das müsste man doch dort direkt am laufwerk abreifen können? :)
      Je nach lasertechnik könnten das auch mehrere layer gleichzeitig sein, die da gelesen werden. Sollte ja alles kein problem sein.

      Dann bräuchte man nurnoch ein kleines programm, dass mit der richtigen frequenz das ganze abliest und z.B. per usb am PC in eine datei schreibt.
      Vllt bräuchte man dann noch die position des lasers. Das könnte man manuell oder auch digital ablesen? also entweder die spannungsversorgung messen udn damit ausrechnen, wie weit de rlaserschlitten rumfährt oder das signal irgendwo abgreifen. Irgend ein chip wird das ganze ja steuern? :)

      So könnte man für jedes spiel, dass vond er Konsole gelesen wird eine "tabelle" erstellen, welche daten wo auf der disc liegen und der Konsole auch bereitstellen, wenn diese das will.

      Würde mich mal rein theoretisch interessieren :D
      Hi Blitzur,

      ich sehe, deine Frage ist schon eine Weile her. Aber ich will sie trotzdem nicht unbeantwortet lassen.

      Theoretisch wäre es möglich Signale und Daten aus den Datenleitungen des Mainboards auszulesen.
      Allgemein kann man mit einem µController so ziemlich alles ansteuern und auch auslesen.
      Man benötigt dazu natürlich die entsprechenden Protokolle und Leitungscodes.

      In der Praxis ist das ganze aber natürlich durch die Leistungsfähigkeit des µControllers begrenzt.
      Einen Sata Port mit einem Arduino auszulesen dürfte daher sehr schwierig werden. Ich fürchte ohne zusätzliche Hardware lässt sich da gar nichts machen.
      Es ist als würde eine Schnecke einem Auto auf der Autobahn hinterherrennen :D .

      Die Funktionsweise einer CD/DVD verstehst du richtig :) . Wir haben hier eine Kunstoffscheibe mit einer sehr dünnen Aluminiumschicht. Heute kommen auch meist kristalline Stoffe zum Einsatz.
      Beim brennen der CD/DVD erhitzt ein Laser diese Schicht an bestimmten Stellen (je nach Bitfolge) wobei eine Vertiefung im Material entsteht, die sogenannten Pits. Das gegenstück der Pits sind die Lands welche nicht vom Laser erhitzt werden und somit keine Vertiefung darstellen.
      So entsteht eine Spiralform von innen nach außen mit den einzelnen Datenbits.

      Um diese Daten wieder zu lesen, wird die CD mit einem (schwächeren) Laser abgetastet. Je nach dem ob wir gerade auf ein Pit oder ein Land leuchten, wird das Licht unterschiedlich stark von der spiegelnden Schicht refliktiert.
      Das zurückgeworfene Licht wird dann durch einen halbdurchlässigen Spiegel auf eine Fotodioden projiziert. Diese ändert ja nach Helligkeit ihren elektrischen Widerstand.

      Diesen Widerstand kannst du sehr leicht mit dem Arduino messen. Es gibt aber noch einige Sachen zu beachten, an die du nicht gedacht hast.
      Als erstes sind die ausgelesenen Bits der CD nicht direkt die Bits aus einer deiner Dateien, sondern sie sind in der Regel EFM (Eight-to-Fourteen-Modulation) codiert. Du müsstest dir also einen entsprechenden Decoder programmieren.
      Das nächste Problem wird es sein, die einzelnen Bits überhaupt eindeutig auszulesen. Wie schon gesagt ändert die Fotodiode je nach Helligkeit ihren Widerstand. Du wirst also niemals genau eine 1 oder 0 bekommen, sondern irgendetwas dazwischen. Was als 1 oder 0 interpretiert wird, musst du dann in deiner Software entscheiden. Dabei musst du weiterhin bedenken, dass das Licht nicht von jedem Pit oder Land gleichstark reflektiert wird. Es kann also zu Fehlinterpretationen kommen (neben den Fehlern beim Brennen), weshalb du dich auch noch um Fehlerkorrektur kümmern musst.
      Wenn wir jetzt weiter über das Auslesen nachdenken, werden wir schon das nächste Problem festellen undzwar wann lese ich denn den Widerstand der Fotodiode aus? Wir haben also zusätzlich ein Synchronisationsproblem.

      Du siehst schon, einfach wird das nicht. Und später in der Praxis wirst du feststellen, dass du es auch noch mit der Hardware zu tun bekommst. Du musst einen (in der Regel bürstenlosen) Motor ansteuern, die Drehzahl exakt regulieren und halten, einen Laser mit einem Schrittmotor ausrichten und diesen auch noch Fokusieren.
      Selbst wenn wir das alles schaffen, die Lesegeschwindigkeit dürfte dann nicht gerade das Gelbe vom Ei sein.

      LG Benni