2017-07-08 2 views
0

J'ai étudié récemment pour les examens et le manuel que je lisais m'a dit que la commande (en CMD) pour obtenir un numéro de série d'ordinateur est la suivante - (comme une méthode de abaisser le piratage).Obtenir le numéro de série de l'ordinateur avec le fichier python et .bat

wmic bios get serialnumber 

j'ai décidé d'essayer pour moi-même en utilisant python, où je voulais obtenir le numéro de série de mon ordinateur, j'ai créé un fichier batch (.bat) et enregistré le numéro de série dans un fichier txt que je pensais que je pouvais alors lire sur en python, cela a créé plus de questions si quelque chose ... voici le code que j'ai actuellement:

SerialNumber.bat (nouveau aux fichiers de chauve-souris par le chemin)

SET num=wmic bios get serialnumber 

%num% > serial.txt 

Qu'est-ce que serial.txt ressemble (légèrement modifié pour ne pas donner mon numéro de série)

enter image description here

Readtxt.py

# Trying to read in two different ways 
with open("serial.txt", "r") as file: 
    print(file.read()) 

lines = [] 
for line in open("serial.txt"): 
    lines.append(line) 
print(lines) 

qui sort: (ne pas montrer l'image à nouveau)

enter image description here

les questions sont:

  1. Comment stocker le numéro de série sous forme de chaîne?
  2. Pourquoi chaque méthode différente que j'utilise pour lire fournit-elle différentes sorties?

Merci pour toute réponse :)

+1

[pour la partie du lot] (https: // stackoverflow. com/q/44880440/2152082) – Stephan

+2

ressemble à unicode .... vous devrez peut-être le décoder. essayez d'utiliser 'rb' au lieu de 'r' pour lire, et ajoutez un '.decode()' à la fin ... –

Répondre

1

Lors de la redirection vers un wmic de fichier écrit UTF-16-LE avec une nomenclature

> wmic bios get serialnumber >serial.txt 

> hex.exe serial.txt 
HEX:  +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0fabcdef 
0000000000: FF FE 53 00 65 00 72 00 69 00 61 00 6C 00 4E 00 .■S.e.r.i.a.l.N. 
0000000010: 75 00 6D 00 62 00 65 00 72 00 20 00 20 00 0D 00 u.m.b.e.r. . ... 

> type readtext.py 
with open("serial.txt", 'rb') as file: 
    print(file.read().decode('utf-16')) 

> py readtext.py 
SerialNumber 
5xxxxyyyy