scapy.contrib.igmp

class scapy.contrib.igmp.IGMP(*args, **kargs)

Bases: scapy.packet.Packet

v1和v2的IGMP消息类.

该类派生自Packet类. 您需要调用" igmpize()",以便在发送数据包时根据RFC对其进行转换. a =以太(src =" 00:01:02:03:04:05")b = IP(src =" 1.2.3.4")c = IGMP(type = 0x12,gaddr =" 224.2.3.4")x = a / b / cx [IGMP] .igmpize()sendp(a / b / c,iface =" en0")

Parameters:

类型IGMP类型字段,0x11、0x12、0x16或0x17 mrcode最大响应时间(v1为零)gaddr组播组地址224.xxx/4

有关正确的IGMPv2消息格式的定义,请参见RFC2236,第2部分.简介http://www.faqs.org/rfcs/rfc2236.html

aliastypes
classmethod dispatch_hook(_pkt=None, *args, **kargs)
fields_desc
显示类似RFC的架构
 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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|      TYPE     |     MRCODE    |             CHKSUM            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                             GADDR                             |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                            Fig. IGMP                             
IGMP栏位

type

ByteEnumField

17

mrcode

ByteField

20

chksum

XShortField

None

gaddr

IPField

'0.0.0.0'

igmpize()

根据IGMP RFC调用以显式修复数据包

规则为:-常规:1.最大响应时间仅在成员资格查询中有意义,并且应为零-IP:1.将常规组查询发送到224.0.0.1(所有系统)2.将离开组发送到224.0.0.2( 3a.否则将数据包发送到组地址3b.发送报告/加入组地址4.ttl = 1(RFC 2236,第2节)5.使用路由器警报IP选项(RFC 2236,发送数据包)第2节)-醚:1.重新计算目的地

Returns

True The tuple ether/ip/self passed all check and represents

正确的IGMP数据包.

False One of more validation checks failed and no fields

进行了调整.

该功能将检查IGMP消息以确保格式正确. 如果可能,将尝试进行更正. 然后适当调整IP标头,以确保正确的格式和分配. 然后将以太网头调整为正确的IGMP数据包格式.

igmptypes = {17: 'Group Membership Query', 18: 'Version 1 - Membership Report', 22: 'Version 2 - Membership Report', 23: 'Leave Group'}
mysummary()

显示IGMP对象的摘要.

post_build(p, pay)

在将数据包发送到计算和放置IGMP校验和之前隐式调用.

Parameters
  • IGMP类自我的实例化

  • IGMP消息以网络字节顺序p十六进制表示

  • IGMP消息的额外有效载荷付费 )–

scapy.contrib.igmp.isValidMCAddr(ip)

将点分四进制字符串转换为long并检查第一个八位字节