Python嗅探和解析网络数据包

网络工具解释

Scapy是Python2和Python3都支持的库。 它用于与网络上的数据包进行交互。 它具有多种功能,通过这些功能我们可以轻松伪造和操纵数据包。 通过 scapy 模块,我们可以创建不同的网络工具,如 ARP Spoofer、网络扫描仪、数据包转储器等。该模块可用于创建与网络安全相关的更高级的工具。

网络扫描是指扫描我们所连接的整个网络,并尝试找出连接到我们网络的所有客户端。 我们可以使用 IP 和 MAC 地址来识别每个客户端。 我们可以使用 ARP ping 来找出网络中活动的系统。

ARP():该函数在 scapy 模块中定义,允许我们创建 ARP 数据包(请求或响应)。默认情况下,如果我们调用它,它会为我们创建一个 ARP 请求数据包。

import scapy.all as scapy 

request = scapy.ARP() 

现在我们已经创建了一个ARP请求包。程序的输出将是这样的——

rootakali: /Desktop\# python3 networkscanner.py 
ARP who has 0.0 .0 .0 says 192.168 .215 .144 
root@kali: /Desktop\#

show() 方法:该方法与summary() 方法非常相似。它提供了有关数据包的更多详细信息。该函数的用法也与summary()方法非常相似。

import scapy.all as scapy 

request = scapy.ARP() 
print(request.show()) 

rootakali: /Desktop\# python3 networkscanner.py
###[ ARP ]###
hwtype =0x1
ptype  =IPv4
hwilen = None
plen   = None
op     = who-has
hwsrc  =00:0c:29:a5:94:cf
psrc   =192.168.215.144
hwdst  =00:00:00:00:00:00
pdst   =0.0.0.0

None
rootolkali: /Desktop\#

ls() 函数:该方法存在于 scapy 类中。通过使用此方法,我们可以看到可以为特定数据包设置哪些字段。

在我们的示例中,我们将创建一个 ARP 数据包,并在 ls() 函数的帮助下,我们将看到该数据包的可用字段有哪些。

import scapy.all as scapy 

request = scapy.ARP() 
print(scapy.ls(scapy.ARP())) 

root@kali:!/Desktop# pyton3 networkscanner.py
hwtype :XShortField           = 1        (1)
ptype  :XShortEnumField       = 2048     (2048)
hwlen  :FieldLenField         = None     (None)
plen   :FieldLenField         = None     (None)
op     :ShortEnumField        = 1        (1)
hwsrc  :MultipleTypeField     ='ac:2b:6e:2a:e5:ae' (None)
psrc   :MultipleTypeField     ='172.17.222.138' (None)
hwdst  :MultipleTypeField     = None (None)
pdst   :MultipleTypeField     = None (None)
None
root@kali:~/Desktop#
创建网络扫描仪的步骤
  1. 使用 ARP() 方法创建 ARP 数据包
  2. 使用变量设置网络范围。
  3. 使用 Ether() 方法创建以太网数据包。
  4. 使用变量 hwdst 设置要广播的目的地。
  5. 使用“/”组合 ARP 请求数据包和以太网帧。
  6. 将其发送到您的网络并捕获来自不同设备的响应。
  7. 打印响应数据包中的 IP 和 MAC 地址。

下面是Python的实现:

import scapy.all as scapy 

request = scapy.ARP() 

request.pdst = 'x'
broadcast = scapy.Ether() 

broadcast.dst = 'ff:ff:ff:ff:ff:ff'

request_broadcast = broadcast / request 
clients = scapy.srp(request_broadcast, timeout = 1)[0] 
for element in clients: 
	print(element[1].psrc + "	 " + element[1].hwsrc) 

这里 x = 网络范围。例如 x = 192.168.1.1/24、172.16.5.1/16 等

创建 ARP 伪程序

数据包嗅探

查找所有wifi连接设备和断开链接

测试TCP端口

源代码

参阅 1 - 亚图跨际
参阅 2 - 亚图跨际

你可能感兴趣的:(Python,编程,python,网络数据包,scapy)