Comment afficher les informations de version d'un fichier PE EXE / DLL?
31
Sous Windows, il existe une page d'informations sur la version dans une fenêtre de propriétés de fichier exécutable / bibliothèque. Comment afficher ces informations dans Ubuntu?
Voulez-vous dire comment afficher ces informations à partir de fichiers binaires / bibliothèques Linux ou de EXE / DLL Windows à l'aide d'un utilitaire Linux?
João Pinto du
1
Comme je l'ai clairement indiqué dans le titre de la question, je veux dire les fichiers PE (Windows) EXE et DLL (à visualiser en utilisant un utilitaire Linux bien sûr).
extrait les informations de version, imprimant des données binaires mélangées avec du texte UTF-16. Le script le convertit en texte lisible en le passant par:
tr '\0, ' '\t.\0' \
| sed 's/\t\t/_/g' \
| tr -c -d '[:print:]' \
| sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'
La commande globale est alors wrestool --extract --raw --type=version inputfile.exe | tr '\0, ' '\t.\0' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'.
+1 wrestoolest fourni par le icoutilpaquet qui est disponible en tant que paquet Debian standard depuis le début.
tripleee
vous pouvez le rendre plus simple en le passant à travers| hexdump -C
Tomofumi
Dans Ubuntu 18.04, il est à l'intérieur du icoutilspaquet.
Bjorn Reppen
6
Comme alternative à l'utilisation de tr et sed pour analyser la sortie de la solution de @ mechanical-snail, voici une version de GNU strings et GNU grep :
$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1
FileVersion
Release 0.65
ProductVersion
Release 0.65
MISE À JOUR:
Une autre alternative est une version récente d' exiftool de Phil Harvey (elle est basée sur perl, facile à installer sur Linux si votre distribution ne l'a pas, également disponible pour Mac et Windows). Il a beaucoup d'options de formatage.
# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe
File Version : Release 0.67
Product Version : Release 0.67
Quel paquet dans Ubuntu / Debian a exiftool? On dirait libimage-exiftool-perl?
Xen2050
Je viens de télécharger le code source et de le construire localement. Téléchargez le fichier tar.gz à partir du site Web (le lien "Télécharger la version xx.yy" en haut de owl.phy.queensu.ca/~phil/exiftool ), extrayez les fichiers et consultez la section INSTALLATION du fichier README pour comment le construire à l'aide de perl puis l'installer dans / usr / local / bin
dcg
4
Si vous installez le gnome-exe-thumbnailerpackage, vous pouvez simplement regarder le numéro de version dans nautilus.
Le code pour le faire manuellement est disponible dans /usr/bin/gnome-exe-thumbnailer.sh
@Scott .. Merci. cela fonctionne .. le code pertinent est très simple à utiliser dans un autre script ... Je suppose que ce que vous entendez par "vous pouvez simplement regarder le numéro de version dans nautilus" , c'est que le numéro de version apparaît greffé dans le fichier .exe icône dans Nautilus .. une idée intéressante .. Personnellement, j'utilise rarement l'icône-vue, mais l'extrait de code est idéal pour moi ..
Peter.O
-1
Je viens de découvrir comment créer un bon dicton en python avec les informations (je regardais autour de moi et je me suis retrouvé ici pour une raison quelconque) et je voudrais présenter ma méthode ici: Github Gists - spookyahell / exe2version_info.py
'''Licensed under the MIT License :)'''import pefileimport pprint
pe = pefile.PE('example.exe')
string_version_info ={}for fileinfo in pe.FileInfo[0]:if fileinfo.Key.decode()=='StringFileInfo':for st in fileinfo.StringTable:for entry in st.entries.items():
string_version_info[entry[0].decode()]= entry[1].decode()
pprint.pprint(string_version_info)
Je le concède sous licence MIT ... que quiconque ressent le besoin de créer des scripts utiles ou d'autres choses avec lui ...
Bienvenue sur Ask Ubuntu! Bien que cela puisse théoriquement répondre à la question, il serait préférable d’inclure ici les parties essentielles de la réponse et de fournir le lien à titre de référence.
Réponses:
Vous devrez probablement installer un visualiseur de fichiers PE tiers, tel que http://www.ucware.com/apev/index.htm
la source
Je travaille dans un outil appelé pev pour récupérer des informations sur les fichiers PE sur la ligne de commande.
La version du fichier peut être récupérée avec l'
-p
option:pev est disponible sur Ubuntu dans le
pev
package .la source
D'après le
gnome-exe-thumbnailer
script, suggéré par Scott Ritchie:extrait les informations de version, imprimant des données binaires mélangées avec du texte UTF-16. Le script le convertit en texte lisible en le passant par:
La commande globale est alors
wrestool --extract --raw --type=version inputfile.exe | tr '\0, ' '\t.\0' | sed 's/\t\t/_/g' | tr -c -d '[:print:]' | sed -r -n 's/.*Version[^0-9]*([0-9]+\.[0-9]+(\.[0-9][0-9]?)?).*/\1/p'
.la source
wrestool
est fourni par leicoutil
paquet qui est disponible en tant que paquet Debian standard depuis le début.| hexdump -C
icoutils
paquet.Comme alternative à l'utilisation de tr et sed pour analyser la sortie de la solution de @ mechanical-snail, voici une version de GNU strings et GNU grep :
MISE À JOUR:
Une autre alternative est une version récente d' exiftool de Phil Harvey (elle est basée sur perl, facile à installer sur Linux si votre distribution ne l'a pas, également disponible pour Mac et Windows). Il a beaucoup d'options de formatage.
la source
libimage-exiftool-perl
?Si vous installez le
gnome-exe-thumbnailer
package, vous pouvez simplement regarder le numéro de version dansnautilus
.Le code pour le faire manuellement est disponible dans
/usr/bin/gnome-exe-thumbnailer.sh
la source
Je viens de découvrir comment créer un bon dicton en python avec les informations (je regardais autour de moi et je me suis retrouvé ici pour une raison quelconque) et je voudrais présenter ma méthode ici:
Github Gists - spookyahell / exe2version_info.py
Je le concède sous licence MIT ... que quiconque ressent le besoin de créer des scripts utiles ou d'autres choses avec lui ...
Et voir Github Gists - spookyahell / peinfo.py pour un exemple d'implémentation de cette méthode dans un autre script ...
la source