无法使用python中的套接字模块telnet到Windows

时间:2015-04-08 08:20:54

标签: python sockets telnet

我正在使用python3.3版本。我有Windows7机器,我试图在python中使用套接字模块编写程序。如果我使用套接字模块,我就无法获得登录提示。

import socket
host = '10.155.208.33'
port= 23
s= socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((host,port))
data=s.recv(1024)
print(data)
>>> b"\xff\xfd%\xff\xfb\x01\xff\xfb\x03\xff\xfd'\xff\xfd\x1f\xff\xfd\x00\xff\xfb\x00"
s.sendall(b'\xff\xfe\x01\xff\xfd\x03\xff\xfc\x18\xff\xfc\x1f') >>> Im not sure whether this correct IAC client reply 
data =s.recv(1024)
print(data)
>>>b'' <<< server response is empty.

我不熟悉IAC命令。有人能指出用于客户端和服务器之间通信的正确握手吗?

我尝试使用telnetlib模块用于python3.3,模块在我的Windows机器上无法正常工作。

谢谢, 阿南德

1 个答案:

答案 0 :(得分:1)

您可以安全地对每个IAC协商请求做出否定回应。也就是说,对于每个IAC-DO,回复IAC-WONT。对于每个IAC-WILL,回复IAC-DONT。

您可能会发现此代码很有用:

def read(s):
    while True:
        data = s.recv(10240)
        for do in re.findall('\xff\xfd.', data): # IAC DO cmd
            s.send('\xff\xfc'+do[2])  # IAC WONT cmd
        for will in re.findall('\xff\xfb.', data): # IAC WILL cmd
            s.send('\xff\xfe'+will[2])  # IAC DONT cmd
        data = re.sub('\xff[\xfb-\xfe].', '', data)
        if data != '':
            return data