Python解码UDP

时间:2015-07-23 15:30:29

标签: python sockets networking udp

代码:

import socket, binascii, struct

s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_UDP)
while True:
    print s.recv(2048)

输出:

  

Ek 9@@ F5 W jq stackexchangecom electronics
  h h

     

stackexchangecomDa scifiET@@ < stackoverflowcom meta                       , stackoverflowcom A meta                       , stackexchangecomG securityEe@@ + stackexchangecom scifi

你可以看到一些数据已被解码/解释,但其余数据并不确定为什么

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

您正在打印包含任意二进制数据的原始UDP数据包。其中一些字节在printable范围内,但那些不在该范围内的字节转换为�。

您可以通过打印representation来更好地查看该数据,Code a network packet sniffer in python for Linux显示正常的可打印字节,并将不可打印的字节显示为十六进制转义码。为此,请将print语句更改为:

    print repr(s.recv(2048))

我怀疑你想要真正解码这些数据包。这很有可能,但它有点技术性,你应该先研究一下这个话题。 :) Silver Moon的这篇文章{{3}}看起来很有帮助。