Python UDP端口门环 - 不工作

时间:2014-05-21 18:39:44

标签: python networking tcp udp

我想编写一个UDP Port Knocker。我有5个可能的UDP端口2222,3333,4444,5555,6666我应该在某个IP地址上敲这个端口,如果敲门序列是正确的(例如3333,4444,2222)我可以通过TCP与服务器通信它会给我一个答案。否则没有答案也没有联系。

为什么我的代码不起作用? ' x'在代码标记放置通常私有信息的地方 - 没有语法错误。

import socket
import time

UDP_IP = "xxxxx"
TCP_IP = 'xxxxx'
TCP_PORT = 1111

request = "xxx"

s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
d = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

def my_range(start, end, step):
    while start <= end:
        yield start
        start += step

for x in my_range(2222, 6666, 1111):
    for y in my_range(2222, 6666, 1111):
        for z in my_range(2222, 6666, 1111):
            print "Port knock: ",x,y,z
            s.sendto(request,(UDP_IP, x))
            s.sendto(request,(UDP_IP, y))
            s.sendto(request,(UDP_IP, z))
            print "Waiting..."
            time.sleep(1)
            try:
                d.connect((TCP_IP, TCP_PORT))
                print "SUCCESS:",x,y,z
                time.sleep(1)
                data = d.recv(1024)
                print "Servers says: " + data
            except socket.error:
                print "False combination of ports"
                continue
s.close()
d.close()

1 个答案:

答案 0 :(得分:0)

UDP是无状态协议。 udp-packages的顺序无法保证。例如。 x,y,z可以作为y,x,z或任何其他组合到达服务器。