Scapy - это программа на Python. Ниже приведен пакет RIP, который является записью маршрутизации RIP.Он имеет несколько записей маршрутизации.Как получить поля внутри отдельно?
>>> rdpcap('./RIPv2.cap')
<RIPv2.cap: TCP:0 UDP:12 ICMP:0 Other:0>
>>> rip = rdpcap('./RIPv2.cap')
>>> rip = rip[-1]
>>> rip
<Ether dst=01:00:5e:00:00:09 src=c2:01:17:23:00:00 type=0x800 |<IP version=4 ihl=5 tos=0xc0 len=112 id=0 flags= frag=0 ttl=2 proto=udp chksum=0xcdb2 src=10.0.0.2 dst=224.0.0.9 |<UDP sport=route dport=route len=92 chksum=0x75a9 |<RIP cmd=resp version=2 null=0 |<RIPEntry AF=IP RouteTag=0 addr=10.0.0.8 mask=255.255.255.252 nextHop=0.0.0.0 metric=1 |<RIPEntry AF=IP RouteTag=0 addr=10.0.0.12 mask=255.255.255.252 nextHop=0.0.0.0 metric=2 |<RIPEntry AF=IP RouteTag=0 addr=192.168.2.0 mask=255.255.255.0 nextHop=0.0.0.0 metric=1 |<RIPEntry AF=IP RouteTag=0 addr=192.168.4.0 mask=255.255.255.0 nextHop=0.0.0.0 metric=2 |>>>>>>>>
>>> rip.getlayer(RIPEntry)
<RIPEntry AF=IP RouteTag=0 addr=10.0.0.8 mask=255.255.255.252 nextHop=0.0.0.0 metric=1 |<RIPEntry AF=IP RouteTag=0 addr=10.0.0.12 mask=255.255.255.252 nextHop=0.0.0.0 metric=2 |<RIPEntry AF=IP RouteTag=0 addr=192.168.2.0 mask=255.255.255.0 nextHop=0.0.0.0 metric=1 |<RIPEntry AF=IP RouteTag=0 addr=192.168.4.0 mask=255.255.255.0 nextHop=0.0.0.0 metric=2 |>>>>
>>> entry =rip.getlayer(RIPEntry)
>>> entry.fields
{'AF': 2, 'RouteTag': 0, 'addr': '10.0.0.8', 'mask': '255.255.255.252', 'nextHop': '0.0.0.0', 'metric': 1}
Можно получить только поле первой записи маршрута, Как получить другие? Скачать пакет RIP