scapy抓包学习

1、列出接口

使用 get_if_list() 获取接口列表

from scapy.all import sniff, rdpcap, load_layer, conf, get_if_list
ifaces = get_if_list()
print(ifaces)

您也可以使用 conf.ifaces 对象来获取接口。在本例中,对象首先显示为列。然后 dev_from_index() 用于访问索引2处的接口。

from scapy.all import sniff, rdpcap, load_layer, conf, get_if_list
ifaces = conf.ifaces
print(ifaces)
print(ifaces.dev_from_index(1))

(1)IPv4路由

这些路线都在 conf.route . 您可以使用它来显示路由,或获取特定的路由

from scapy.all import sniff, rdpcap, load_layer, conf, get_if_list
routes = conf.route
print(routes)

获取特定IP的路由: conf.route.route() 将返回 (interface, outgoing_ip, gateway)

from scapy.all import sniff, rdpcap, load_layer, conf, get_if_list
routes = conf.route
print(routes)
print(routes.route("127.0.0.1"))

IPv6路由

与IPv4相同,但 conf.route6

(2)获取路由器IP地址

gw = conf.route.route("0.0.0.0")[2]

(3)获取接口的本地IP/IP

from scapy.all import get_if_addr
ip = get_if_addr(conf.iface)  # default interface
ip = get_if_addr("Intel(R) Wireless-AC 9560 160MHz")
print(ip)

(4)获取接口的本地MAC/MAC

from scapy.all import get_if_hwaddr
mac = get_if_hwaddr(conf.iface)  # default interface
mac = get_if_hwaddr("eth0")
print(mac)

(5)通过IP获取MAC

from scapy.layers.l2 import getmacbyip
mac = getmacbyip("10.0.0.1")
print(mac)

2、scapy支持的数据包类型

from scapy.all import ls
from scapy.layers.inet import IP
# 输出scapy支持的数据包类型
print(ls())
# 使用ls(IP())可以查看IP数据包的参数
print(ls(IP))

(1)构建一个数据包

(2)堆栈层

3、捕获数据包

  • sniff()函数可帮助我们捕获所有流量:
  • 包括countfilterifacelfilterprntimeout选项。

 

posted @ 2022-10-19 22:07  Einewhaw  阅读(341)  评论(0编辑  收藏  举报