我找不到使用ON scapy
(而不是Python的stdlib)查找本地IP地址的方法。
我找到的唯一解决方法是发送一个虚拟包并使用它从源字段中检索地址,但我觉得这不是一个好的解决方案。
答案 0 :(得分:2)
如果您看看https://scapy.readthedocs.io/en/latest/routing.html#get-local-ip-ip-of-an-interface 您可以使用
获取任何接口的本地IP>>> ip = get_if_addr(conf.iface) # default interface
>>> ip = get_if_addr("eth0")
>>> ip
'10.0.0.5'
答案 1 :(得分:0)
快速提醒:您可能拥有多个IP地址。每个接口都有一个。要获取scapy当前工作界面的IP地址,您应该按照Cukic0d在其评论中的建议进行get_if_addr(conf.iface)
。
这是在Windows和Linux中均可使用的一种方法。这将为您提供所有接口的IP地址。
在船壳中工作
>>> s = set() # there will be redundencies so we'll use set to remove them
>>> for line in read_routes():
...: s.add(line[4])
...:
>>> s
{'10.0.0.4',
'169.254.106.110',
'169.254.17.51',
'169.254.177.137',
'192.168.56.1',
'192.168.99.1'}
在python shell中
>>> import scapy.all as S
>>> s = set() # there will be redundencies so we'll use set to remove them
>>> for line in S.read_routes():
...: s.add(line[4])
...:
>>> s
{'10.0.0.4',
'169.254.106.110',
'169.254.17.51',
'169.254.177.137',
'192.168.56.1',
'192.168.99.1'}