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?
Name des USB-Sticks erkennen
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.
Dann kann man es so machen: https://stackoverflow.com/questions/588 ... hon-or-cmd
Windows vorausgesetzt.
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.
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:
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?
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()]
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
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.
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.
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/
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/
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.
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.
@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?
- __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.
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
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.
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?
@/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.
Ich werde dort mal in den Code schauen (das Git ist ja verlinkt), vielleicht findet sich dort etwas.