python3 无法将字节转换为对象'str'隐式



我尝试在其他问题中寻找一些解决方案,但无法解决。这是我的代码:

#/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 anonymousrn".encode('utf-8'))
s.recv(1024)
s.send("PASS anonymousrn".encode('utf-8'))
print("[+]Gizli baglanti saglandi")

s.recv(1024)
s.send('MKD'+data+'rn'.encode('ascii'))
print("Data yollandı")
s.recv(1024)
s.send('QUITrn'.encode('utf-8'))
s.close()
print("[+]Program yakinda hata verecek...")

当我擦除"编码"并运行它 Python2 时,它工作正常。但不是在Python3上,它说

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

类型错误:无法将字节转换为对象"str"隐式

发生这种情况是因为缺少括号:

s.send(('MKD'+data+'rn').encode('ascii'))
#      ^                 ^

但典型的解决方案是仅使用字节开始:

data = b"hckn"*250
s.send(b'MKD'+data+b'rn')

在那一行:

s.send('MKD'+data+'rn'.encode('ascii'))

您需要在"MKD"+数据+\r"周围放置参数。喜欢这个:

s.send(('MKD'+data+'rn').encode('ascii'))

最新更新