2017-02-04 23 views
-1

Ich versuchte, einige Lösungen in den anderen Fragen, konnte aber nicht lösen. Hier ist mein Code:python3 kann Bytes nicht in Objekt 'str' implicity konvertieren

#/usr/bin/env python 
#-*- coding: UTF-8 -*- 
import socket 
import sys 
ip = "192.168.0.28" 
port = 21 
data = "hckn"*250 
try: 
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    conn = s.connect((ip,port)) 
except: 
    print("[-] Baglanti basarisiz") 
    sys.exit() 

s.recv(1024) 
s.send("USER anonymous\r\n".encode('utf-8')) 
s.recv(1024) 
s.send("PASS anonymous\r\n".encode('utf-8')) 
print("[+]Gizli baglanti saglandi") 


s.recv(1024) 

s.send('MKD'+data+'\r\n'.encode('ascii')) 
print("Data yollandı") 
s.recv(1024) 
s.send('QUIT\r\n'.encode('utf-8')) 
s.close() 

print("[+]Program yakinda hata verecek...") 

wenn ich die ‚kodieren s löschen und führen Sie es Python2, es funktioniert gut. Aber nicht auf Python3, heißt es

s.send ('MKD' + Daten + '\ r \ n'.encode (' ascii '))

Typeerror: kann nicht Bytes Objekt umwandeln 'str' implicity

+0

die Standard-Codierung in Python 3 ist Unicode, so müssen Sie angeben, nicht 'coding' (die zweite Zeile) – yedpodtrzitko

Antwort

2

Dies geschieht, weil Klammern fehlen:

s.send(('MKD'+data+'\r\n').encode('ascii')) 
# ^    ^

Aber die typische Lösung ist nur Bytes zu verwenden, um mit zu beginnen:

data = b"hckn"*250 
s.send(b'MKD'+data+b'\r\n') 
+0

Dank! Es funktionierte – hckn0

0

Auf dieser Linie:

s.send('MKD'+data+'\r\n'.encode('ascii')) 

Sie müssen Klammern um die 'MKD' + Daten + '\ r \ n' setzen. Wie folgt aus:

s.send(('MKD'+data+'\r\n').encode('ascii')) 
Verwandte Themen