小编Uda*_*ari的帖子

解析UDP数据包

我正在构建一个UDP服务器来解析和验证传入的UDP数据包.我能够接收和解析数据包,但标头值不是我所期望的.

这是传入数据包的结构

数据包ID(4字节)
数据包序列(4字节)
XOR密钥(2字节)
数据包中的
校验和数(2字节)循环校验和CRC32(可变)

要发送数据包,

with open('payloadfile.bin') as op:
    payload = pickle.load(op)

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

for i in payload:
    sock.sentto(payload, ('127.0.0.1',4545))
Run Code Online (Sandbox Code Playgroud)

接收和解析此数据包

sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
sock.bind('127.0.0.1',4545)

while 1:
    packet = sock.recvfrom(65565)
    packet = packet[0]

    # parse IP
    ip_header = packet[0:20]
    iph = struct.unpack('!BBHHHBBH4s4s' , ip_header)

    #all the following values are incorrect
    version_ihl = iph[0]
    version = version_ihl >> 4
    ihl = version_ihl & 0xF

    ttl = iph[5]
    protocol = iph[6]
    s_addr = socket.inet_ntoa(iph[8]);
    d_addr = …
Run Code Online (Sandbox Code Playgroud)

python sockets networking udp python-2.7

5
推荐指数
1
解决办法
5733
查看次数

标签 统计

networking ×1

python ×1

python-2.7 ×1

sockets ×1

udp ×1