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?

Ivan
la source
2
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).
Ivan

Réponses:

-1

Vous devrez probablement installer un visualiseur de fichiers PE tiers, tel que http://www.ucware.com/apev/index.htm

user4124
la source
N'y a-t-il pas un outil natif Linux pour cela?
Ivan
7
25 $ pour une visionneuse d'informations sur les fichiers? Sérieusement?
Escargot mécanique
5
Remarque pour les visiteurs après le 5 avril 2013: ce logiciel semble avoir été abandonné et n'est plus disponible auprès du développeur.
Moshe Katz
29

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' -poption:

pev -p program.exe

pev est disponible sur Ubuntu dans le pevpackage .

Fernando
la source
3
@Ivan, vous pourriez envisager d'accepter cette réponse à la place.
Russell Silva
Ces instructions sont obsolètes . Vous voudrez peut-être envisager de les mettre à jour.
Ploni
11

D'après le gnome-exe-thumbnailerscript, suggéré par Scott Ritchie:

wrestool --extract --raw --type=version inputfile.exe

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'.

Escargot mécanique
la source
+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
dcg
la source
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 Ritchie
la source
@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 pefile
import 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 ...

Et voir Github Gists - spookyahell / peinfo.py pour un exemple d'implémentation de cette méthode dans un autre script ...

DelphiGeekGuy
la source
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.
Kevin Bowen