Seite 1 von 1
Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 10:54
von JigSaw
Hallo zusammen,
ist es Möglich mit Python (evtl. durch ein Modul) herauszufinden ob ein USB-Stick mit einem bestimmten Namen angeschlossen ist? Bzw. ist es möglich eine Auflistung aller eingesteckten USB-Sticks zu bekommen inkl. dem Namen? Kennt jemand ein passendes Modul dafür?
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 11:52
von __deets__
pyusb welches die libusb in Python anbietet. Aber ob das wirklich geht, weiß ich nicht. Denn die Geräte sind dann ja schon vom OS gegriffen.
Dann kann man es so machen:
https://stackoverflow.com/questions/588 ... hon-or-cmd
Windows vorausgesetzt.
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 12:09
von JigSaw
Ich habe es nun mal mit dem WMI Modul probiert (da ich nur für Windows suche) was in dem von dir verlinken Stackoverflow Beitrag zu sehen ist. Statt dem Namen habe ich allerdings doch die Seriennummer genutzt, weil diese nicht so einfach änderbar ist.
Code: Alles auswählen
import wmi
def check_if_usb_stick_is_mounted(usb_stick_serialnumber):
return usb_stick_serialnumber in [disk.volumeserialnumber for disk in wmi.WMI().Win32_LogicalDisk()]
wenn man eine Liste der Namen der USB-Sticks haben möchte, muss man "disk.volumeserialnumber" durch "disk.volumename" ersetzen.
Ich möchte eine Art "Killswitch" programmieren, also wenn der USB-Stick herausgezogen wird, soll ein bestimmtes Verzeichnis gelöscht werden.
Der bisherige Stand ist folgender:
Code: Alles auswählen
import wmi
USB_SERIAL_NUMBER = ""
def check_if_usb_stick_is_mounted(usb_stick_serialnumber):
return usb_stick_serialnumber in [disk.volumeserialnumber for disk in wmi.WMI().Win32_LogicalDisk()]
while True:
if not check_if_usb_stick_is_mounted(USB_SERIAL_NUMBER):
#delete folder
break
Nun geht es ums Löschen. Das wäre ja mit os.unlink() oder os.remove() bzw. mit pathlib.Path.unlink() möglich. Die Daten sollen allerdings so gelöscht werden, dass ein Wiederherstellen nicht mehr wirklich möglich ist. Dabei bin ich auf die Gutmann-Methode gestoßen. Gibt es von dieser eine Implementierung in Python?
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 12:18
von __deets__
Keine Ahnung. Dein Google ist dabei so gut wie mein Google.
Nachtrag: die Methode ist ja nun ziemlicher Quatsch in unseren Zeiten. Sagt der betreffende Wikipedia-Artikel in Form eines Zitats vom guten Herrn Guttmann selbst.
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 13:31
von JigSaw
Mein Google hat das Problem, dass es von mir anscheinend nicht mit den richtigen Suchbegriffen gefüttert wird.
Ich habe bisher leider nur zwei Module gefunden.
Das erste wäre shred, dort wurde aber das Git gelöscht:
https://pythonrepo.com/repo/smartlegion ... thon-files
Das zweite wäre secure-delete, leider fehlt mir die Expertise um festzustellen ob dieses Modul gut ist bzw. auf welchem Verfahren es basiert:
https://pypi.org/project/secure-delete/
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 14:02
von kbr
Ich halte diese secure_delete Library für ziemlichen Blödsinn, da sie anzunehmen scheint, dass beim Überschreiben einer Datei stets die gleichen physikalischen Speicherstellen genutzt werden, was nicht der Fall ist. Gerade bei SSDs, die nur eine begrenzte Zahl von (Über-)Schreiboperationen bieten, wird oft zunächst der gesamt Speicherplatz genutzt, bevor als gelöscht markierte Bereiche wiederverwendet werden. Dies dient der Verlängerung der Lebensdauer und Tools wie "secure_delete" verkürzen diese somit eher, ohne zur Sicherheit etwas beizutragen.
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 14:20
von __deets__
Das da random.seed verwandt wird, spricht nicht fuer das Modul secure_delete - das ist Spoekenkiekerei. Auch sonst eher mau implementiert. Aber es schreibt random bytes. Wie kbr ausfuehrt, muss das aber nur so viel heissen.
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 15:09
von JigSaw
@kbr: Verstehe ich das richtig, dass wenn eine SSD beispielsweise die Speicherstellen A,B,C und D hat und die Datei auf A ändere, dass eine Kopie von dieser Datei mit den Änderungen auf B geschrieben wird und die Ursprungsdatei auf A nur als "gelöscht" markiert wird und erst richtig überschrieben und somit gelöscht wird, wenn B,C und D voll sind?
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 15:18
von __blackjack__
@JigSaw: Da kann man von ausgehen, ja.
Bei SSDs wird so etwas absichtlich gemacht um die Lebensdauer zu verlängern.
Aber auch bei traditionellen Festplatten/Dateisystemen kannst Du nicht davon ausgehen das ein ”überschreiben” einer Datei tatsächlich die alten Daten überschreibt und nicht auf einer anderen Stelle auf der Platte landet. Die Zeiten sind ziemlich lange her als man das einfach so annehmen konnte.
Re: Name des USB-Sticks erkennen
Verfasst: Donnerstag 16. Dezember 2021, 15:19
von __deets__
Nicht eine Kopie der Datei, das Zugriffsmuster sind die Bloecke selbst. Aber das Ergebnis ist eben, dass die Bloecke noch lange nicht ueberschrieben werden, bevor nicht einmal die gesamte Kapazitaet erreicht wurde.
Re: Name des USB-Sticks erkennen
Verfasst: Freitag 17. Dezember 2021, 07:07
von JigSaw
Somit scheint es also (fast) unmöglich zu sein Dateien so zu "überschreiben", dass Sie nicht mehr wiederherstellbar sind? Es wird bestimmt - mit entsprechendem Aufwand - möglich sein die Dateien wiederherzustellen, aber gibt es eine Möglichkeit dass diese nicht mit einfachen Wiederherstellungstools wiederhergestellt werden können?
Re: Name des USB-Sticks erkennen
Verfasst: Freitag 17. Dezember 2021, 07:34
von sparrow
Geh davon aus, dass sie auch mit einfachen Mitteln rekonstruierbar sind.
Re: Name des USB-Sticks erkennen
Verfasst: Freitag 17. Dezember 2021, 08:54
von JigSaw
Also wäre es sinnvoller die Daten zu verschlüsseln anstatt zu löschen? Bleibt beim Verschlüsseln auch noch eine unverschlüsselte "Ursprungsdatei" irgendwo liegen?
Re: Name des USB-Sticks erkennen
Verfasst: Freitag 17. Dezember 2021, 09:06
von __deets__
Das kann passieren, wenn man zb temporäre Dateien oder Swap-Space betrachtet.
Re: Name des USB-Sticks erkennen
Verfasst: Freitag 17. Dezember 2021, 11:10
von /me
Interessehalber: Möchtest du so etwas wie
BusKill bauen?
Re: Name des USB-Sticks erkennen
Verfasst: Freitag 17. Dezember 2021, 15:58
von JigSaw
@/me: Ja sowas in der Richtung hatte ich angedacht. Nur dass man es mit einem gewöhnlichen USB-Stick für >5€ machen kann.
Ich werde dort mal in den Code schauen (das Git ist ja verlinkt), vielleicht findet sich dort etwas.
Re: Name des USB-Sticks erkennen
Verfasst: Freitag 17. Dezember 2021, 16:12
von sparrow
Na, der große Unterschied ist: Die löschen keine Daten
