首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Python scapy raw to hex

Python scapy raw to hex
EN

Stack Overflow用户
提问于 2018-03-31 06:24:47
回答 2查看 2.8K关注 0票数 0

我使用Scapy从数据包中获取原始字节,并尝试解析十六进制,但是原始字节给出了以下类型的输出:

b"\x17\x03\x03\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xd6tK\xf8\xc1itQ\xa0;

一些字符串打印为ascii,这使得解析变得困难,有没有一个函数可以在Scapy中只获取十六进制数字,或者将其转换为十六进制而不打印在ascii中?

此外,由于某种原因,chexdump()只打印

EN

回答 2

Stack Overflow用户

发布于 2018-03-31 06:29:54

是的,你有:

使用十六进制转储()显示一个或多个使用经典十六进制转储格式的包

参考:

代码语言:javascript
代码运行次数:0
运行
复制
https://github.com/secdev/scapy/blob/master/doc/scapy/usage.rst

Scapy是Python库,然后使用生成器:

代码语言:javascript
代码运行次数:0
运行
复制
>>> [ "%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ]
>>> ' '.join([ "0x%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ])
>>> ' '.join([ "%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ])
>>> ''.join([ "%02X"%(ord(x) & 0xff) for x in b'\x20\x56\x30\20' ])

>>> rawbuffer = b'\x20\x56\x30\20'
>>> bufferArray = [ "%02X"%(ord(x) & 0xff) for x in rawbuffer ]
>>> strbuffer = ''.join(bufferArray)
>>> print(strbuffer)
票数 1
EN

Stack Overflow用户

发布于 2018-03-31 06:31:28

代码语言:javascript
代码运行次数:0
运行
复制
import binascii

binascii.hexlify(b"\x17\x03\x03\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xd6tK\xf8\xc1itQ\xa0;")

#outputs => b'17030300a300000000000000d6744bf8c1697451a03b'

是从字节串中获取十六进制字符串的一种方法

如果你真的想把它分成2

代码语言:javascript
代码运行次数:0
运行
复制
b" ".join(re.findall(b'..',binascii.hexlify(b"\x17\x03\x03\x00\xa3\x00\x00\x00\x00\x00\x00\x00\xd6tK\xf8\xc1itQ\xa0;")))

应该行得通

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49582187

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档