Python 2.7 Scapy和DHCP安全测试
我问了一个关于Scapy的问题。 发送dhcp请求消息并得到答复没有问题,但我真正需要的是编程:Python 2.7 Scapy和DHCP安全测试,python-2.7,dhcp,scapy,Python 2.7,Dhcp,Scapy,我问了一个关于Scapy的问题。 发送dhcp请求消息并得到答复没有问题,但我真正需要的是编程: Scapy发送一个DHCP请求数据包 它收到一个广告包,到目前为止还可以 我需要发送一个带有我从广告包中得到的一些信息的请求 这是代码的一部分,我希望你能理解我想要实现的目标。(最不相关,此处未写入值) 当我发送这个请求包时,我得到了dhcpv6服务器的一个很好的答复。在广告包中,有绑定首字母、服务器ID等 (1) 我想要的是,使用广告包中的信息,并将其放入请求包中。但这一切,在某种程度上是一个循环
预删除
。因此,出于安全原因,我可以测试dhcp服务器
(2) 当我将地址添加到IA_NA时,我在数据包中的IA_地址后得到了一个DHCP选项0
我能做些什么?因为在有效的请求消息中,我们可以看到IA地址位于IA_NA内
我也试过:
addr = raw_input("Give Option Address: ")
optiana.addr = str(RandIP6(addr))
optiana.preflft = 7200
optiana.validlft = 9200
iana.ianaopts = optiana
pkt = l2/l3/l4/sol/cid/opreq/et/iana
但是数据包中出现了一些东西,它加了一句,最后是零。
我们可以在这里看到scapy发送数据包,因为它需要发送,对吗?
(3) 还有一件事:我认为,PD有问题,因为当我给PD提供选项时,比如地址,当我添加其他PD时,包就停在那里(见wireshark)。但如果我只添加PD而没有选项,它会起作用
PD代码
optiapd = DHCP6OptIA_PD()
iapd = DHCP6OptIAPrefix()
opreq = DHCP6OptOptReq()
et= DHCP6OptElapsedTime()
cid = DHCP6OptClientId()
l2 = Ether (src = RandMAC())
l3 = IPv6(dst= dstt, src=srcc)
addr = raw_input("Give Option Address: ")
iapd.prefix = str(RandIP6(addr))
pkt = l2/l3/l4/sol/cid/opreq/et/optiapd/iapd # (adding more...../optiapd/iapd....wont work)
sendp(pkt, iface='eth0')
我还在/scapy/layers/dhcp6.py中遇到了DHCPv6_am(应答机)!!!
当所有数据包都在一个数组中时,如何可能对每个数据包使用应答机制 问题(1)已解决:)
我只是写了另一个脚本,可以嗅探并读取数据包:)另一种方法
问题(2)
经过数小时的测试,我得出结论,DHCP选项0
将出现在Wireshark中,因为:
DHCP6 IA地址选项
,有一个子值IA-ID
。
当我填写此项时,我可以看到它是DHCP选项0
中的值的来源
我认为这是Scapy中的一些编程错误
查看后,rfc3315dhcp for IPv6
子选项22.6
没有为DHCP6 IA地址选项分配IAID
所以,我所做的只是调整和搜索该行并对其进行注释
问题(3)
我想斯帕皮还没准备好接受PD检查。在我尝试了所有这些之后,它都不起作用。请通过编辑您的问题以包含您的代码,向我们展示您迄今为止所做的工作!你现在知道了吗:)
optiapd = DHCP6OptIA_PD()
iapd = DHCP6OptIAPrefix()
opreq = DHCP6OptOptReq()
et= DHCP6OptElapsedTime()
cid = DHCP6OptClientId()
l2 = Ether (src = RandMAC())
l3 = IPv6(dst= dstt, src=srcc)
addr = raw_input("Give Option Address: ")
iapd.prefix = str(RandIP6(addr))
pkt = l2/l3/l4/sol/cid/opreq/et/optiapd/iapd # (adding more...../optiapd/iapd....wont work)
sendp(pkt, iface='eth0')