Je connais sous Linux il est aussi simple que / dev / sda mais dans Windows comment ouvrez-vous un disque et commencez à lire des données au niveau bas?
dans Python J'ai essayé: P>
Traceback (most recent call last): File "<stdin>", line 1, in <module> IOError: [Errno 13] Permission denied: 'K:'
3 Réponses :
de http://support.microsoft.com/kb/100027
ouvrir un disque dur physique pour accès direct sur disque (E / S RAW) dans un Application basée sur Win32, utilisez un périphérique Nom du formulaire p> blockQuote>
xxx pré> où n est 0, 1, 2, etc., représentant chacun des physiques conduit dans le système. P>
ouvrir un lecteur logique, accès direct est de la forme p> blockQuote>
xxx pré> où x: est un Lettre de partition de disque dur, disquette lecteur de disque ou lecteur de CD-ROM. p> blockQuote> p>
Comment savez-vous quel entraînement est lequel?
Je devinerais que le gestionnaire de disques est correct, mais je double-vérifier avant de faire quelque chose de destructeur :-)
Pour ce faire avec Python: blog.lifeeth.in/ 2011/03 / lecture-disks brut-with-python.html
Quels sont les autres paramètres à Createfile Code>?
N'oubliez pas que tous les objets sous Windows et autres systèmes d'exploitation sont des fichiers. Pour ouvrir et lire 16 octets de données de lecteur E: Utilisez le code ci-dessous:
# Open a Disk in binary format read only 16 bytes
file = "\\\\.\\E:"
with open(file,'rb') as f:
print("Disk Open")
data = f.read(16)
# Convert the binary data to upper case hex ascii code
hex_data = " ".join("{:02X}".format(c) for c in data)
print(hex_data)
Tous deux travaillés pour moi. Pour accéder à la partition C: ou à l'ensemble du lecteur, des privilèges administrateurs sont nécessaires. Voici un exemple de remplacement pour OPEN ():
def open_physical_drive(
number,
mode="rb",
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
):
"""
Opens a physical drive in read binary mode by default
The numbering starts with 0
"""
return open(
fr"\\.\PhysicalDrive{number}",
mode,
buffering,
encoding,
errors,
newline,
closefd,
opener,
)
def open_windows_partition(
letter,
mode="rb",
buffering=-1,
encoding=None,
errors=None,
newline=None,
closefd=True,
opener=None,
):
"""
Opens a partition of a windows drive letter in read binary mode by default
"""
return open(
fr"\\.\{letter}:", mode, buffering, encoding, errors, newline, closefd, opener
)
# first 16 bytes from partition C:
# on Linux it's like /dev/sda1
with open_windows_partition("C") as drive_c:
print(drive_c.read(16))
# first 16 bytes of first drive
# on Linux it's like /dev/sda
with open_physical_drive(0) as drive_0:
print(drive_0.read(16))
Je pense que je dois utiliser l'extension Win32 Win32file? Est-ce que quelqu'un sait?