User:S3lph/Screamer M.2

From CCC Basel Wiki
< User:S3lph
Revision as of 22:23, 31 August 2020 by S3lph (talk | contribs)
Jump to navigation Jump to search

Usageask.png

Nur mit Erlaubnis

Dieses Gerät ist Privateigentum, das nur mit der expliziten Erlaubnis der Eigentümer verwendet werden darf. Frage vor der Verwendung bitte eine der folgenden Personen um Erlaubnis:

  • s3lph

Wenn du zu uns kommst, weil du dieses Gerät benutzen willst, kannst du uns auch kontaktieren und fragen, ob eine dieser Personen während deinem Besuch anwesend sein wird.


Screamer M.2, Banana for scale™

Der Screamer M.2 ist ein FPGA-basiertes Board, um mit dem PCIe-Bus eines Computers zu interagieren. Das Gerät kostet in der Anschaffung (Stand 2020, Modell M.2 R04) etwas über CHF 300. Das Board hat den Formfaktor einer M.2-Steckkarte (zum Einstecken in den Zielcomputer) und verfügt über einen USB-3.1-Anschluss (zum Anschliessen an den Kontrollcomputer).

Lieferumfang

  • Screamer M.2
  • Adapter auf PCIe CEM x1, nur minimal Grösser als der Screamer selbst
  • Adapter auf PCIe CEM x4, mit Bracket zur (semi-) permanenten Installation in einem Computer
  • USB-3.1-Kabel
  • Adapter USB-C/USB-A

Verwendung

Hotplug

Auch wenn Hotplugging mit PCIe prinzipiell möglich ist, hängt es doch von sehr vielen Faktoren ab, ob eine im Betrieb eingestecktes Gerät auch ohne Power Cycle funktioniert.


Warnung.png

Achtung

Wenn du die Kontrolle über einen laufenden Computer übernehmen willst, z.B. weil du das Passwort für deine Festplattenverschlüsselung vergessen hast, ist dieses Gerät nur in manchen Fällen die richtige Wahl. Das Einstecken eines PCIe-Geräts in einen der CEM-Steckkartenplätze auf dem Mainboard des Zielgeräts kann funktionieren, es kann aber auch ebenso gut das Zielgerät zum Absturz bringen. ExpressCard- oder Thunderbolt-Anschlüsse sollten da hingegen schon deutlich risikofreier sein.


Anforderungen

  • Das Gerät muss hotplugfähig sein
    • Screamer M.2 ist hotplugfähig. Eventuell muss man den Resetbutton auf dem Gerät drücken, aber grundsätzlich: ja
  • Wenn mit dem Kernel interagiert werden soll, muss der Kernel das neue Gerät enumerieren können
  • Das Mainboard muss hotplugfähig sein
    • Variiert sehr stark von Mainboard zu Mainboard
    • Mit den Details kenne ich mich hier nicht aus

Erfahrungen

Ich habe bei meinen Hotplug-Tests je nach Gerät eins der drei folgenden Ergebnisse feststellen können:

  • Hotplug funktioniert, Gerät wird vom Kernel erkannt und kann ab dann DMA-Zugriffe machen
  • Gerät wird weitestgehend ignoriert, teilweise kommen einzelne Ereignisse (NMI) durch.
    • Teilweise hilft ein echo 1 > /sys/bus/pci/rescan, teilweise braucht es einen Power Cycle
  • Der Zielcomputer geht in einen HCF-Zustand.

Verwendung mit PCILeech

  1. FT60x-Treiber installieren
    1. git clone https://github.com/lambdaconcept/ft60x_driver
    2. cd ft60x_driver
    3. make
    4. sudo insmod ft60x.ko
  2. PCILeech installieren
    1. Neueste Version herunterladen
    2. Archiv entpacken
    3. chmod +x pcileech
  3. Hardware in Betrieb nehmen
    1. Screamer M.2 am Zielgerät anschliessen
    2. Zielgerät starten (wenn kein Hotplug)
    3. Resetbutton auf dem Screamer M.2 drücken
    4. USB-Kabel im Kontrollgerät einstecken
  4. DMA testen
    1. sudo ./pcileech testmemread -device FPGA
  5. Weitere Verwendung: Siehe [PCILeech-Doku https://github.com/ufrisk/pcileech/wiki]

Links