如何检查 scapy 函数的选项
How to check options for scapy functions
目前正在做一些 python 编程,我遇到了一个我找不到答案的问题。谷歌搜索可能不好...无论如何,我有这样的东西
# Construct the DNS packet
DNSpkt = DNS(
id=pkt[DNS].id, # use same id from captured packet
qd=pkt[DNS].qd, # copy the question section from packet
aa=1, # Set flag for authoritative message
qr=1, # Set flag for reply message
qdcount=1, # one question
ancount=1, # one answer
an=Anssec) # my bogus answer is set in reply
我想知道如何查看 DNS 等功能所采用的选项。还有其他的,
IPpkt = IP(dst=pkt[IP].src, src=pkt[IP].dst)
UDPpkt = UDP(dport=pkt[UDP].sport, sport=53)
例如IP有dst和src选项。我想知道如果我看到的只是 IP(),我怎么知道。我也想知道选项有哪些。例如,dst 采用 ipv4 地址。请根据我使用的任何术语纠正我,因为我相信这就是我找不到问题答案的原因。谢谢你的时间。
也许这就是你需要的-
In [33]: DNSpkt.fields
Out[33]: {'aa': 1, 'an': 'Anssec', 'ancount': 1, 'qdcount': 1, 'qr': 1}
(缺少 pkt,因为我没有用它来实例化 DNS() 对象)
您有多种选择:
- 来自参考文档:例如IP: https://scapy.readthedocs.io/en/latest/api/scapy.layers.inet.html#scapy.layers.inet.IP 这有很多信息。
- 从控制台:下载 scapy 并使用
./run_scapy
然后执行 ls(IP)
>>> ls(IP)
version : BitField (4 bits) = (4)
ihl : BitField (4 bits) = (None)
tos : XByteField = (0)
len : ShortField = (None)
id : ShortField = (1)
flags : FlagsField (3 bits) = (<Flag 0 ()>)
frag : BitField (13 bits) = (0)
ttl : ByteField = (64)
proto : ByteEnumField = (0)
chksum : XShortField = (None)
src : SourceIPField = (None)
dst : DestIPField = (None)
options : PacketListField = ([])
- 此外,您还可以使用
rfc(IP)
,但请注意,这已显示在在线文档中,并且纯粹是提供信息,因为所有名称均大写。
>>> rfc(IP)
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|VERSION| IHL | TOS | LEN |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| ID |FLAGS| FRAG |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TTL | PROTO | CHKSUM |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| SRC |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| DST |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| OPTIONS |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Fig. IP
目前正在做一些 python 编程,我遇到了一个我找不到答案的问题。谷歌搜索可能不好...无论如何,我有这样的东西
# Construct the DNS packet
DNSpkt = DNS(
id=pkt[DNS].id, # use same id from captured packet
qd=pkt[DNS].qd, # copy the question section from packet
aa=1, # Set flag for authoritative message
qr=1, # Set flag for reply message
qdcount=1, # one question
ancount=1, # one answer
an=Anssec) # my bogus answer is set in reply
我想知道如何查看 DNS 等功能所采用的选项。还有其他的,
IPpkt = IP(dst=pkt[IP].src, src=pkt[IP].dst)
UDPpkt = UDP(dport=pkt[UDP].sport, sport=53)
例如IP有dst和src选项。我想知道如果我看到的只是 IP(),我怎么知道。我也想知道选项有哪些。例如,dst 采用 ipv4 地址。请根据我使用的任何术语纠正我,因为我相信这就是我找不到问题答案的原因。谢谢你的时间。
也许这就是你需要的-
In [33]: DNSpkt.fields
Out[33]: {'aa': 1, 'an': 'Anssec', 'ancount': 1, 'qdcount': 1, 'qr': 1}
(缺少 pkt,因为我没有用它来实例化 DNS() 对象)
您有多种选择:
- 来自参考文档:例如IP: https://scapy.readthedocs.io/en/latest/api/scapy.layers.inet.html#scapy.layers.inet.IP 这有很多信息。
- 从控制台:下载 scapy 并使用
./run_scapy
然后执行ls(IP)
>>> ls(IP) version : BitField (4 bits) = (4) ihl : BitField (4 bits) = (None) tos : XByteField = (0) len : ShortField = (None) id : ShortField = (1) flags : FlagsField (3 bits) = (<Flag 0 ()>) frag : BitField (13 bits) = (0) ttl : ByteField = (64) proto : ByteEnumField = (0) chksum : XShortField = (None) src : SourceIPField = (None) dst : DestIPField = (None) options : PacketListField = ([])
- 此外,您还可以使用
rfc(IP)
,但请注意,这已显示在在线文档中,并且纯粹是提供信息,因为所有名称均大写。
>>> rfc(IP) 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |VERSION| IHL | TOS | LEN | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | ID |FLAGS| FRAG | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TTL | PROTO | CHKSUM | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | SRC | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | DST | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | OPTIONS | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Fig. IP