Ich versuche, direkte Daten lesen und schreiben auf ein USB-Flash-Laufwerk als ein physikalisches Laufwerk auf Windows (10, wenn es darauf ankommt). Ich benutze Python, um das zu tun.Schreiben von Rohdaten auf physischen Datenträger (Flash-Laufwerk) schlägt mit "Bad Dateideskriptor" auf Windows - Python
Ich habe die folgende Diskussion an:
get writing access to raw devices using python with windows
ich in das gleiche Problem lief kcstrom in dieser Frage hatte. Ich bekomme eine
Traceback (most recent call last):
File "C:\script.py", line 49, in <module>
disk.write(data)
IOError: [Errno 9] Bad file descriptor
Lesen und suchen funktionieren, wie sie sollten, und die gelesenen Daten sind korrekt.
Was ich weiß, bisher:
- Das Fahrverhalten sollte so bemessen, in Sektor erfolgen liest/schreibt/sucht.
- Die Festplatte muss mit dem Modus 'rb +' geöffnet werden.
- Die Verwendung von \\. \ L: und \\. \ PhysicalDriveN führt zu denselben Ergebnissen.
- Das Skript muss unter Administratorrechten ausgeführt werden.
- Unmounten des Laufwerks und versuchen, auf die Datei \\. \ PhysicalDriveN zuzugreifen - "Permission Denied", auch wenn es als Administrator ausgeführt wird.
den Fehler zu reproduzieren: (ACHTUNG: DIESER CODE CORRUPT -Festplatten nur dann laufen, wenn Sie wissen, was Sie tun)
SOME_OFFSET = 123123
SOME_SIZE = 100
# replace L with the drive letter
disk = open('\\\\.\\L:','r+b')
# or use: (replace N with the drive number)
# disk = open('\\\\.\\PhysicalDriveN','r+b')
disk.seek(SOME_OFFSET*512)
data = disk.read(SOME_SIZE*512)
#modify data...
disk.seek(SOME_OFFSET*512)
disk.write(data)
ich kann nicht herausfinden, ob dies ein Berechtigungsproblem ist oder ein Problem mit dem Öffnen des Laufwerks.
Das zugrunde liegende 'WriteFile' schlägt mit 'ERROR_ACCESS_DENIED' fehl. Das direkte Schreiben auf ein bereitgestelltes Volume ist nicht zulässig. Sie müssen mehr darüber nachdenken, um das Volume zu sperren und zu entfernen, bevor Sie es oder das physische Laufwerk schreiben. – eryksun
@eryksun Könnten Sie mir bitte auf die Informationen hinweisen, die ich brauche? Vielen Dank! – MiaoHatola
Sie rufen ['DeviceIoControl'] (https://msdn.microsoft.com/en-us/library/aa363216) auf einem Volume-Handle auf, das mit [' CreateFile'] geöffnet wurde (https://msdn.microsoft. com/de-de/library/aa363858). Hier sind die [Lautstärkeregelcodes] (https://msdn.microsoft.com/en-us/library/aa365729) zum Sperren, Aufheben und Entsperren des Volumes. In Python können Sie ctypes oder PyWin32s ['win32file'] (http://docs.activestate.com/activepython/2.7/pywin32/win32file.html) Modul verwenden. – eryksun