2017-04-10 6 views
0

Situation: J'écris un programme python pour lire un disque dur (en particulier Windows) et comparer les chaînes hexagonales entre elles.Lecture du disque dur au niveau octet

Problème: Est-il possible de le faire? La solution que je recherche doit être rapide, donc dd est inadapté. Je comprends que sur les systèmes Linux, nous pouvons faire open('/dev/sdX', 'r'). J'ai trouvé une autre question qui suggère que j'utilise open('\\.\PhysicalDriveX', 'r') ou open('\\.\C:', 'r') sur "applications Win32". Question: Est-ce que la commande ci-dessus fonctionne également sur les machines Windows normales (64 bits)?

Informations supplémentaires: J'utilise ePython, une variante de Python, avec des fonctionnalités supplémentaires.

+1

'\\. \ PhysicalDrive [N]' est un disque. '\\. \ C:' est un volume (généralement une seule partition). Les lire directement nécessite des droits d'administrateur, et ils devraient être ouverts en mode binaire, c'est-à-dire '' rb ''. – eryksun

+1

Les volumes peuvent également être montés dans des répertoires NTFS. L'ouverture d'un tel volume à partir de l'API Windows nécessite le nom de GUID du volume, que vous pouvez obtenir à partir d'une lettre de lecteur ou d'un point de montage de dossier via 'GetVolumeNameForVolumeMountPoint'. Cette fonction nécessite une barre oblique inverse à la fin du chemin du point de montage. Il renvoie le nom de volume GUID avec une barre oblique inverse de fin, que vous devrez supprimer. – eryksun

Répondre

1

Une autre approche serait de tenir à la méthode Linux en utilisant le construit en sous-système Linux sous Windows avec:

de Windows 10:

Bash-sur-Ubuntu sur Windows: https://msdn.microsoft.com/en-us/commandline/wsl/about

Winows 7:

Utilitaires et SDK pour le sous-système pour les applications UNIX dans Microsoft Windows 7 et Windows Server 2008 R2 http://www.microsoft.com/en-us/download/details.aspx?id=2391

J'ai utilisé Windows 10 - Édition Familiale, Bash-on-Ubuntu-on-Windows pour fonctionner comme un charme.

+0

Mais Bash-on-Ubuntu-on-Windows est seulement sur Windows 10. Les systèmes que j'ai besoin de scanner sont sur Windows 7 (Ancient, je sais) –

+0

Désolé, j'ajoute plus d'exigences ... Supposons que je n'ai pas de privilèges administratifs pour installer quoi que ce soit sur lesdits ordinateurs. Mon travail consiste simplement à brancher mon programme et il va fonctionner et scanner le système - pas plus, pas moins. Mais je pense que vous pouvez laisser votre message tel qu'il est - il peut être très instructif pour les autres. –

+0

Avez-vous envisagé de créer une installation USB live, chargée avec Xubuntu (interface graphique xcfe) ou Lubuntu (poids encore plus léger)? Cela vous donnerait beaucoup plus de flexibilité qu'un compte invité sur Windows 7. Cela suppose que le (s) lecteur (s) entier (s) ne sont pas cryptés. –