Hola a todos!
Tengo este codigo , el cual accede a un disco asignado, toma los primeros 512bytes "El primer sector" y lo saca por pantalla del terminal. Todo esto lo hace SOLO en modo admin ya que el acceso a disco requiere permisos.
Necesito implementar esto en mi GUI, nada de terminal. Tengo hecha la interfaz en Tkinter y necesito ejecutarlo para que ese sector me lo saque en un label.
Alguien me puede echar una mano? He pensado que generando un .bat con el codigo tal vez se ejecute y retorne el sector.. pero no se me ocurre como hacerlo.
El codigo:
Realmente estoy muy perdido por eso acudo a vosotros, si alguno tiene tiempo y me puede ayudar lo agradecería..
Cualquier ayuda será bien recibida. Gracias!
Tengo este codigo , el cual accede a un disco asignado, toma los primeros 512bytes "El primer sector" y lo saca por pantalla del terminal. Todo esto lo hace SOLO en modo admin ya que el acceso a disco requiere permisos.
Necesito implementar esto en mi GUI, nada de terminal. Tengo hecha la interfaz en Tkinter y necesito ejecutarlo para que ese sector me lo saque en un label.
Alguien me puede echar una mano? He pensado que generando un .bat con el codigo tal vez se ejecute y retorne el sector.. pero no se me ocurre como hacerlo.
El codigo:
Código:
import subprocess, io
def getDisk(letter): #Reconozco todas las unidades para que cuando le pase una me desglose la info
sn = None
sn_p = subprocess.Popen(["powershell", "-Command", "get-partition -DriveLetter {} | get-disk | select-object SerialNumber".format(letter[0])], stdout=subprocess.PIPE)
for (i, line) in enumerate(io.TextIOWrapper(sn_p.stdout, encoding="utf-8")):
if(i != 3):
continue
sn = (line.strip())
break
deviceId_p = subprocess.Popen(["powershell", "-Command", "Get-WmiObject MSFT_Physicaldisk -Namespace root\Microsoft\Windows\Storage -Filter \"SerialNumber='{}'\" | select-object DeviceId".format(sn)], stdout=subprocess.PIPE)
for (i, line) in enumerate(io.TextIOWrapper(deviceId_p.stdout, encoding="utf-8")):
if(i != 3):
continue
deviceId = (line.strip())
break
return "".join(["\\\.\PhysicalDrive", deviceId])
disk = getDisk("D:") # Le paso la letra de la unidad para acceder a su primer sector "importante tener privilegios"
with open(disk, 'rb') as fp: #le paso la info de la unidad y en modo lectura recorro su primer sector
fp.seek(0)
sector = fp.read(512) #indico el numero de bytes a extraer
contents = []
for _byte in sector:
contents.append((hex(_byte))) #les paso a hexadecimal
print(contents)
Realmente estoy muy perdido por eso acudo a vosotros, si alguno tiene tiempo y me puede ayudar lo agradecería..
Cualquier ayuda será bien recibida. Gracias!