如何使用 scapy 获取我自己的本地 IP?

dec*_*dle 5 python ip scapy

我找不到仅使用scapy(而不是 Python 的 stdlib)查找本地 IP 地址的方法。我发现的唯一解决方法是发送一个虚拟包并使用它从源字段中检索地址,但我认为这不是一个好的解决方案。

the*_*pen 2

快速提醒:您可能有多个 IP 地址。您拥有的每个接口都有一个。要获取 scapy 当前工作接口的 IP 地址,您应该get_if_addr(conf.iface)按照 Cukic0d 在他的评论中的建议进行操作。

这是一种在 Windows 和 Linux 上都可以使用的方法。这将为您提供所有接口的 IP 地址。

在 scapy shell 中工作

>>> 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'}
Run Code Online (Sandbox Code Playgroud)

在 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'}
Run Code Online (Sandbox Code Playgroud)