Como visualizar as informações da versão do arquivo PE EXE / DLL?
31
No Windows, há uma página de informações da versão em uma janela de propriedades do arquivo executável / biblioteca. Como visualizar essas informações no Ubuntu?
Você quer dizer como visualizar essas informações de binários / bibliotecas Linux ou EXE / DLL do Windows usando um utilitário Linux?
João Pinto
11
Como especifiquei claramente no título da pergunta, refiro-me aos arquivos EXE e DLL do PE (Windows) (para visualizar, é claro, usando um utilitário Linux).
extrai as informações da versão, imprimindo alguns dados binários misturados ao texto UTF-16. O script o converte em texto legível, canalizando-o através de:
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'
O comando geral é então 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 wrestoolé fornecido pelo icoutilpacote que está disponível como um pacote Debian padrão desde o início.
Tripleee
você pode torná-lo mais simples, apenas canalizá-lo através| hexdump -C
Tomofumi
No Ubuntu 18.04 está dentro do icoutilspacote.
Bjorn Reppen
6
Como alternativa ao uso de tr e sed para analisar a saída da solução do @ Mechanical-snail, aqui estão as strings GNU e a versão grep do GNU :
$ wrestool --extract --raw --type=version putty.exe | strings -el | grep Version -A 1
FileVersion
Release 0.65
ProductVersion
Release 0.65
ATUALIZAR:
Outra alternativa é uma versão recente do exiftool de Phil Harvey (é baseada em perl, fácil de instalar no Linux se a sua distribuição não o possuir, também disponível para Mac e Windows). Tem muitas opções de formatação.
# Example with exiftool 10.47
$ exiftool -FileVersion -ProductVersion putty.exe
File Version : Release 0.67
Product Version : Release 0.67
Que pacote no Ubuntu / Debian tem exiftool? Parece libimage-exiftool-perl?
Xen2050
Acabei de baixar o código fonte e construí-lo localmente. Faça o download do arquivo tar.gz no site (o link "Download Version xx.yy" na parte superior de owl.phy.queensu.ca/~phil/exiftool ), extraia os arquivos e consulte a seção INSTALAÇÃO do arquivo README para obter mais informações. como construí-lo usando perl e instalando-o em / usr / local / bin
dcg 26/01
4
Se você instalar o gnome-exe-thumbnailerpacote, poderá simplesmente olhar o número da versão em nautilus.
O código para fazer isso manualmente está disponível em /usr/bin/gnome-exe-thumbnailer.sh
@ Scott .. Obrigado. funciona .. o código relevante é muito simples de usar em outro script ... Suponho que o que você quer dizer com "você pode simplesmente olhar o número da versão no nautilus" , é que o número da versão aparece enxertado no arquivo .exe ícone na Nautilus .. uma idéia interessante .. Pessoalmente, eu raramente usar o ícone-view, mas o trecho de código é ótimo para mim ..
Peter.O
-1
Acabei de descobrir como criar um bom dict python com as informações (eu estava olhando em torno de mim e acabei aqui por algum motivo) e gostaria de apresentar meu método aqui: 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)
Estou licenciando-o sob a licença MIT ... pode alguém que sinta necessidade de criar scripts úteis ou outras coisas com ele ...
Bem-vindo ao Ask Ubuntu! Embora isso possa teoricamente responder à pergunta, seria preferível incluir aqui as partes essenciais da resposta e fornecer o link para referência.
Respostas:
Você provavelmente precisará instalar um visualizador de arquivos PE de terceiros, como http://www.ucware.com/apev/index.htm
fonte
Estou trabalhando em uma ferramenta chamada pev para recuperar informações sobre arquivos PE na linha de comando.
A versão do arquivo pode ser buscada com a
-p
opção:O pev está disponível no Ubuntu no
pev
pacote .fonte
Do
gnome-exe-thumbnailer
roteiro, sugerido por Scott Ritchie:extrai as informações da versão, imprimindo alguns dados binários misturados ao texto UTF-16. O script o converte em texto legível, canalizando-o através de:
O comando geral é então
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'
.fonte
wrestool
é fornecido peloicoutil
pacote que está disponível como um pacote Debian padrão desde o início.| hexdump -C
icoutils
pacote.Como alternativa ao uso de tr e sed para analisar a saída da solução do @ Mechanical-snail, aqui estão as strings GNU e a versão grep do GNU :
ATUALIZAR:
Outra alternativa é uma versão recente do exiftool de Phil Harvey (é baseada em perl, fácil de instalar no Linux se a sua distribuição não o possuir, também disponível para Mac e Windows). Tem muitas opções de formatação.
fonte
libimage-exiftool-perl
?Se você instalar o
gnome-exe-thumbnailer
pacote, poderá simplesmente olhar o número da versão emnautilus
.O código para fazer isso manualmente está disponível em
/usr/bin/gnome-exe-thumbnailer.sh
fonte
Acabei de descobrir como criar um bom dict python com as informações (eu estava olhando em torno de mim e acabei aqui por algum motivo) e gostaria de apresentar meu método aqui:
Github Gists - spookyahell / exe2version_info.py
Estou licenciando-o sob a licença MIT ... pode alguém que sinta necessidade de criar scripts úteis ou outras coisas com ele ...
E veja Github Gists - spookyahell / peinfo.py para obter um exemplo de implementação desse método em outro script ...
fonte