Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Ayuda con el uso de la libreria LIEF (obtener datos de un archivo)
#1
Hola a todos
Estoy usando la libreria de python LIEF, que se usa para obtener informacion interna de los archivos.
En mi caso es de los .exe en windows, del que quiero obtener su nombre interno, nombre del producto y firma (signature)

Con este codigo me da toda esa información y mucha mas de la que necesito, pero no se como extraer solo la que quiero, me lo devuelve tipo diccionario, pero no se como manipularlo.


Código:
import lief
import sys

archivo = lief.parse("usjtibdorvslscoojyaxu.exe")
# archivo = lief.parse("C:\\Windows\\explorer.exe")

if not archivo.has_resources:
    print("'{}' has no resources. Abort!".format(archivo.name), file=sys.stderr)
    sys.exit(1)

resource_manager = archivo.resources_manager.version.string_file_info
aa = resource_manager.langcode_items
print(aa)

Y esto es lo que me devuelve en aa


Cita:ListLangCodeItem[type:  1
key:    040904b0: (ENGLISH - ENGLISH_US - UTF_16)
Items: 
    'FileDescription': 'AutoHotkey Unicode 32-bit'
    'InternalName': 'AutoHotkey'
    'OriginalFilename': 'AutoHotkey.exe'
    'FileVersion': '1.1.26.01'
    'ProductName': 'AutoHotkey'
    'LegalCopyright': 'Copyright © 2003-2013'
    'ProductVersion': '1.1.26.01'
]


Lo que quiero esta en los Items.
Probé con aa['Items'] y con aa[1], pero me dan error las dos formas

Como puedo acceder a estos datos?
'InternalName': 'AutoHotkey'
'ProductName': 'AutoHotkey'
Responder
#2
Hola. Así:

Código:
items = aa[0].items
print(items["InternalName"])
print(items["ProductName"])

Saludos!
¡No te pierdas nuestro curso oficial en Udemy para aprender Python, bases de datos SQL, orientación a objetos, tkinter y mucho más!

También ofrecemos consultoría profesional de desarrollo en Python para personas y empresas.
Responder
#3
Thumbs Up 
(24-11-2020, 11:11 AM)Francisco escribió: Hola. Así:

Código:
items = aa[0].items
print(items["InternalName"])
print(items["ProductName"])

Saludos!

Muchas gracias, ya me funcionó de esa forma

Solo un detalle, me devuelve el resultado en este formato

Cita:b'explorer'
b'Microsoftxc2xae Windowsxc2xae Operating System'

Lo solucione de esta forma:

Código:
print(items["InternalName"].decode("UTF-8"))
print(items["ProductName"].decode("UTF-8"))


Saludos
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)