我试图使用python中的*.pcap库分析tcpdump捕获的SCTP dpkt文件。
我可以得到SCTP的通用头,块头。在块头之后,我得到了一个不能使用库解析的chunk.data。(我查看了源代码)。
但是,我只需要该chunk.data的前4个字节。chunk.data的类型是字符串。所以我想,如果我能得到前4个字符,我可以得到前4个字节(因为一个字符的大小是1字节)。之后,我需要使用socket.ntohl()将这4个字节转换为宿主字节顺序。但是第一,我需要将4个字符串转换成一个无符号整数,作为socket.ntohl()函数的输入,我不知道该如何做。
我试过用ascii密码。
data=chunk.data
x=data[:4]
i= ntohl(int(''.join(str(ord(c)) for c in x)))它显示了一个错误:
i= ntohl(int(''.join(str(ord(c)) for c in x)))
OverflowError: long int too large to convert我试过服用x="efgh"。但是ascii值不会生成一个4字节的无符号整数。(101102103104 > 4294967295)所以我认为在这里使用ascii值不是正确的。
有人能告诉我该怎么做吗?
发布于 2014-04-18 19:22:21
感谢@BSH for 这个答案。
我加了
from struct import unpack对于我所需的输出,这对我来说很好。
i=ntohl(unpack('<I',chunk.data[:4])[0])struct.unpack用于将字符串解释为打包的二进制数据。
https://stackoverflow.com/questions/23140626
复制相似问题