Name des USB-Sticks erkennen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
JigSaw
User
Beiträge: 12
Registriert: Donnerstag 16. Dezember 2021, 10:45

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?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
JigSaw
User
Beiträge: 12
Registriert: Donnerstag 16. Dezember 2021, 10:45

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?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
JigSaw
User
Beiträge: 12
Registriert: Donnerstag 16. Dezember 2021, 10:45

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/
Benutzeravatar
kbr
User
Beiträge: 1508
Registriert: Mittwoch 15. Oktober 2008, 09:27

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.
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
JigSaw
User
Beiträge: 12
Registriert: Donnerstag 16. Dezember 2021, 10:45

@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?
Benutzeravatar
__blackjack__
User
Beiträge: 14078
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@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.
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

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.
JigSaw
User
Beiträge: 12
Registriert: Donnerstag 16. Dezember 2021, 10:45

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?
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Geh davon aus, dass sie auch mit einfachen Mitteln rekonstruierbar sind.
JigSaw
User
Beiträge: 12
Registriert: Donnerstag 16. Dezember 2021, 10:45

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?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Das kann passieren, wenn man zb temporäre Dateien oder Swap-Space betrachtet.
Benutzeravatar
/me
User
Beiträge: 3561
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

Interessehalber: Möchtest du so etwas wie BusKill bauen?
JigSaw
User
Beiträge: 12
Registriert: Donnerstag 16. Dezember 2021, 10:45

@/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.
Benutzeravatar
sparrow
User
Beiträge: 4540
Registriert: Freitag 17. April 2009, 10:28

Na, der große Unterschied ist: Die löschen keine Daten ;)
Antworten