User:S3lph/Screamer M.2: Difference between revisions
No edit summary |
m (→Anforderungen) |
||
Line 33: | Line 33: | ||
** Variiert sehr stark von Mainboard zu Mainboard |
** Variiert sehr stark von Mainboard zu Mainboard |
||
** Mit den Details kenne ich mich hier nicht aus |
** Mit den Details kenne ich mich hier nicht aus |
||
* Thunderbolt 3: Bei vielen Geräten sind defaultmässig nur USB und DP erlaubt, für PCIe müssen die angeschlossen Geräte dann erst zugelassen werden. |
|||
==== Erfahrungen ==== |
==== Erfahrungen ==== |
Revision as of 22:41, 31 August 2020
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.
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.
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
- Linux-Kernel
- pciehp seit 2004
echo 1 > /sys/bus/pci/rescan
- Linux-Kernel
- Das Mainboard muss hotplugfähig sein
- Variiert sehr stark von Mainboard zu Mainboard
- Mit den Details kenne ich mich hier nicht aus
- Thunderbolt 3: Bei vielen Geräten sind defaultmässig nur USB und DP erlaubt, für PCIe müssen die angeschlossen Geräte dann erst zugelassen werden.
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
- Teilweise hilft ein
- Der Zielcomputer geht in einen HCF-Zustand.
Verwendung mit PCILeech
- FT60x-Treiber installieren
git clone https://github.com/lambdaconcept/ft60x_driver
cd ft60x_driver
make
sudo insmod ft60x.ko
- PCILeech installieren
- Neueste Version herunterladen
- Archiv entpacken
chmod +x pcileech
- Hardware in Betrieb nehmen
- Screamer M.2 am Zielgerät anschliessen
- Zielgerät starten (wenn kein Hotplug)
- Resetbutton auf dem Screamer M.2 drücken
- USB-Kabel im Kontrollgerät einstecken
- DMA testen
sudo ./pcileech testmemread -device FPGA
- Weitere Verwendung: Siehe [PCILeech-Doku https://github.com/ufrisk/pcileech/wiki]
Links
- Hersteller-Doku: http://docs.lambdaconcept.com/screamer/index.html
- PCILeech (Werkzeug und Payloads, um via DMA mit dem Betriebssystemkernel zu interagieren und z.B. Dateien auszulesen und zu schreiben): https://github.com/ufrisk/pcileech/