2017-09-08 4 views
3

Mon code:Comment Covert les octets à la sortie manuelle lorsque je lis un fichier PE

# -*- coding: utf-8 -*- # 

if __name__ == "__main__": 
    try: 
     f = open("test.dll", 'rb') 
     context = f.read() 
     f.close() 
     print(context) 
    except Exception as e: 
     print(e) 

La sortie sont des octets comme ça quand je l'utilise python3:

B'B \ » MZ \ x90 \ x00 \ x03 \ x00 \ x00 \ x00 \ x04 \ x00 \ x00 \ x00 \ xff \ xff \ x00 \ x00 \ xb8 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 @ \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ x00 \ xf0 \ x00 \ x00 \ x00 \ x0e \ x1f \ xba \ x0e \ x00 \ xb4 \ t \ xcd! \ xb8 \ x01L \ xcd! Ceci programme ne peut pas être exécuté en mode DOS. \ r \ r \ n $ \ x00 \ x00 \ x00 \ x00

La sortie comme ce que je veux quand je l'utilise python2:

MZ? ? @? ? ??? L? Ce programme ne peut pas être exécuté en mode DOS.

$ 2! 跪 v @ v @ 住 住 v @ 住 8B @ 住 8^ @ 住 8T ‰ @ 住 8D

Comment puis-je obtenir la sortie comme python2 avec python3?

PS: J'essaie de décoder la sortie comme ceci:

context = f.read().decode("utf-8") 

Mais il y a une erreur comme ceci:

codec 'UTF-8' ne peut pas décoder octet 0x90 en position 2: octet de début invalide

L'autre type de décodage a la même erreur.

Comment puis-je obtenir la bonne sortie? Merci beaucoup.

+1

essayé 'decode (" utf-8 ", errors =" ignore ")'? –

+0

Merci beaucoup, ça marche – sylan215

Répondre

1

Oh, je suis désolé, je ai la méthode:

Code

:

# -*- coding: utf-8 -*- # 

if __name__ == "__main__": 
    try: 
     f = open("test.dll", 'rb') 
     context = f.read().decode("utf-8", 'ignore') 
     f.close() 
     print(context) 
    except Exception as e: 
     print(e) 

Utilisez le 'ignorer' param

Voici la vérité: enter link description here