Wie kann ich die Versionsinformationen einer PE EXE / DLL-Datei anzeigen?
31
In Windows gibt es eine Seite mit Versionsinformationen in einem Fenster mit Eigenschaften für ausführbare Dateien / Bibliotheksdateien. Wie kann ich diese Informationen in Ubuntu anzeigen?
Meinen Sie damit, wie Sie solche Informationen aus Linux-Binärdateien / Bibliotheken oder Windows-EXE / DLL mit einem Linux-Dienstprogramm anzeigen können?
João Pinto
1
Wie ich im Fragentitel klar angegeben habe, meine ich PE (Windows) -EXE- und -DLL-Dateien (zum Anzeigen natürlich mit einem Linux-Dienstprogramm).
extrahiert die Versionsinformationen und druckt einige Binärdaten, die mit UTF-16-Text gemischt sind. Das Skript konvertiert ihn in lesbaren Text, indem es ihn weiterleitet:
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'
Der Gesamtbefehl lautet dann 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 wrestoolwird von dem icoutilPaket bereitgestellt, das seit jeher als Standard-Debian-Paket verfügbar ist.
Tripleee
Sie können es einfacher machen, indem Sie es einfach | hexdump -C
durchleiten
In Ubuntu 18.04 ist es im icoutilsPaket enthalten.
Bjorn Reppen
6
Als Alternative zur Verwendung von tr und sed zum Parsen der Ausgabe der @ mechanical-snail-Lösung finden Sie hier eine GNU- Strings- und eine GNU- grep- Version:
$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1
FileVersion
Release 0.65
ProductVersion
Release 0.65
AKTUALISIEREN:
Eine andere Alternative ist eine neuere Version von exiftool von Phil Harvey (sie basiert auf Perl und ist unter Linux einfach zu installieren, wenn Ihre Distribution es nicht hat, auch für Mac und Windows verfügbar). Es hat viele Formatierungsoptionen.
# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe
File Version : Release 0.67
Product Version : Release 0.67
Welches Paket in Ubuntu / Debian hat exiftool? Sieht aus wie libimage-exiftool-perl?
Xen2050
Ich lade einfach den Quellcode herunter und erstelle ihn lokal. Laden Sie die Datei tar.gz von der Website herunter (der Link "Download Version xx.yy" oben in owl.phy.queensu.ca/~phil/exiftool ), extrahieren Sie die Dateien und lesen Sie den Abschnitt INSTALLATION in der README-Datei Wie man es mit Perl erstellt und dann in / usr / local / bin
dcg installiert
4
Wenn Sie das gnome-exe-thumbnailerPaket installieren , können Sie sich einfach die Versionsnummer in ansehen nautilus.
Der Code für die manuelle Ausführung ist in verfügbar /usr/bin/gnome-exe-thumbnailer.sh
@ Scott .. Danke. es funktioniert ... der relevante Code ist sehr einfach in einem anderen Skript zu verwenden ... Ich gehe davon aus, dass Sie mit "Sie können einfach die Versionsnummer in Nautilus anzeigen" meinen , dass die Versionsnummer in die .exe gepfropft erscheint icon in Nautilus .. eine interessante Idee .. Ich persönlich verwende selten die Icon-Ansicht, aber der Code-Ausschnitt ist großartig für mich ..
'''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)
Ich lizenziere es unter der MIT-Lizenz ... kann jeder, der das Bedürfnis hat, nützliche Skripte oder andere Dinge damit zu erstellen ...
Willkommen bei Ask Ubuntu! Während dies theoretisch die Frage beantworten mag, wäre es vorzuziehen , die wesentlichen Teile der Antwort hier aufzunehmen und den Link als Referenz bereitzustellen.
Antworten:
Möglicherweise müssen Sie einen PE-Datei-Viewer eines Drittanbieters installieren, z. B. http://www.ucware.com/apev/index.htm
quelle
Ich arbeite in einem Tool namens pev , um Informationen über PE-Dateien in der Befehlszeile abzurufen.
Die Dateiversion kann mit folgender
-p
Option abgerufen werden :pev ist auf Ubuntu im
pev
Paket enthalten .quelle
Aus dem
gnome-exe-thumbnailer
von Scott Ritchie vorgeschlagenen Drehbuch:extrahiert die Versionsinformationen und druckt einige Binärdaten, die mit UTF-16-Text gemischt sind. Das Skript konvertiert ihn in lesbaren Text, indem es ihn weiterleitet:
Der Gesamtbefehl lautet dann
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'
.quelle
wrestool
wird von demicoutil
Paket bereitgestellt, das seit jeher als Standard-Debian-Paket verfügbar ist.| hexdump -C
icoutils
Paket enthalten.Als Alternative zur Verwendung von tr und sed zum Parsen der Ausgabe der @ mechanical-snail-Lösung finden Sie hier eine GNU- Strings- und eine GNU- grep- Version:
AKTUALISIEREN:
Eine andere Alternative ist eine neuere Version von exiftool von Phil Harvey (sie basiert auf Perl und ist unter Linux einfach zu installieren, wenn Ihre Distribution es nicht hat, auch für Mac und Windows verfügbar). Es hat viele Formatierungsoptionen.
quelle
libimage-exiftool-perl
?Wenn Sie das
gnome-exe-thumbnailer
Paket installieren , können Sie sich einfach die Versionsnummer in ansehennautilus
.Der Code für die manuelle Ausführung ist in verfügbar
/usr/bin/gnome-exe-thumbnailer.sh
quelle
Ich habe gerade selbst herausgefunden, wie ich mit den Informationen ein schönes Python-Diktat erstellen kann (ich habe mich umgesehen und bin aus irgendeinem Grund hier gelandet ) und möchte meine Methode hier vorstellen :
Github Gists - spookyahell / exe2version_info.py
Ich lizenziere es unter der MIT-Lizenz ... kann jeder, der das Bedürfnis hat, nützliche Skripte oder andere Dinge damit zu erstellen ...
Eine Beispielimplementierung dieser Methode in einem anderen Skript finden Sie unter Github Gists - spookyahell / peinfo.py ...
quelle