Foros Python

Versión completa: Ayuda con el uso de la libreria LIEF (obtener datos de un archivo)
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
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'
Hola. Así:

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

Saludos!
(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