如何解决scapy输出的简单字节
我正在尝试打印来自IP 192.168.1.198
且具有有效负载的数据包的有效负载:
from scapy.all import *
packets = rdpcap('capture1_bug.pcapng')
payloads = []
for packet in packets:
if IP in packet:
ip_src=packet[IP].src
ip_dst=packet[IP].dst
if ip_src=="192.168.1.198" and packet[TCP].payload:
payload = packet[TCP].payload
payloads.append(payload)
print(payloads[7])
我明白了
b'$\x00\x00&\x80`\x00\x00\x00\x00\x1bf\x00\x00\x1bfgM\x00*\x9d\xa8\x1e\x00\x89\xf9f\xe0 (\x00\x00\x03\x00\x08\x00\x00\x03\x00| '
我无法理解此输出。为什么有些字节是0x00
(2位数字),有些是\x1bfgM
,为什么还有诸如(
和|
这样的字节?为什么第一个字符打印为$
而不是十六进制数字?
解决方法
\x1bfgM
实际上是4个字节:\x1b
,f
,g
和M
。字节字符串中可以转换为ASCII字符(a-z,A-Z,0-9,标点符号等)的所有字符都照原样打印,而不使用\x
前缀。例如:
>>> b'\x24\x28\x7c'
b'$(|'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。