在网络取证的世界中,我们需要快速有效的工具来浏览捕获的数据包海并提取我们寻求的信息。输入由Python的多功能性提供支持的简单Wireshark脚本。
在本文中,我将向您展示一些实用的Python代码段,以简化您的网络取证之旅。
捕获数据包:
要开始,让我们进入此脚本以使用Wireshark和Python捕获数据包。在Pyshark库的帮助下,脚本可以根据过滤器迅速获取数据包并保存以进行进一步分析。
要安装Pyshark,输入终端:
pip install pyshark
然后查看此代码段:
import pyshark
#Define capture interface and filter fields
capture = pyshark.LiveCapture(interface='eth0', display_filter='tcp')
#Start capturing packets
capture.sniff(timeout=10)
#Save captured packets to a file
capture.export_packet_stream("packets.pcap")
分析数据包:
现在捕获了数据包,让我们用下一个脚本分析它们。 Pyshark提供了一种直接的方法,可以从捕获的数据包中提取有价值的信息。
查看此示例,该示例提取了TCP数据包的源和目标IP地址:
import pyshark
#Open the packets file
cap = pyshark.FileCapture("packets.pcap")
#Extract source and destination IP addresses of TCP packets
for pkt in cap:
if "TCP" in pkt:
print(f"Source IP: {pkt.ip.src}, Destination IP: {pkt.ip.dst}")
过滤数据包:
从捕获的数据包中过滤噪音将使生活更加轻松。 Pyshark允许我们应用显示过滤器来缩小分析的数据包。
让我们看看如何过滤和计数HTTP数据包:
import pyshark
#Open the captured packets file
cap = pyshark.FileCapture("packets.pcap")
#Apply a display filter to focus on HTTP packets
cap.set_display_filter('http')
#Count the number of HTTP packets
http_count = 0
for pkt in cap:
http_count += 1
print(f"Total HTTP packets: {http_count}")
扭曲包装包:
让您将数据包过滤到一个新的水平。 Pyshark不仅用于简单过滤,而且还提供了一系列强大的过滤选项,可以使分析更加精确。
使用pyshark查看这个更高级的过滤脚本:
import pyshark
#Open the captured packets file
cap = pyshark.FileCapture("packets.pcap")
#Apply a complex display filter to focus on specific traffic
cap.set_display_filter('tcp.port == 80 && ip.dst == 192.168.0.1')
#Count the number of filtered packets
filtered_count = 0
for pkt in cap:
filtered_count += 1
print(f"Total filtered packets: {filtered_count}")
在此示例中,有一个显示过滤器,该显示过滤器针对TCP数据包,目的地IP为192.168.0.1和80的端口。 >
添加一点点可视化:
现在,让我们将网络取证发现带来一些醒目的可视化。 Matplotlib库中用场,允许创建迷人的图表和图形。
在终端中安装matplotlib库,
pip install matplotlib
然后scapy库:
pip install scapy
这是每个数据包的IP类型分布的脚本:
from scapy.all import *
import matplotlib.pyplot as plt
#Read the pcap file
packets = rdpcap("packets.pcap")
#Dictionary to store protocol counts
protocol_counts = {}
#Iterate over the captured packets
for pkt in packets:
if IP in pkt:
protocol = pkt[IP].proto
protocol_counts[protocol] = protocol_counts.get(protocol, 0) + 1
#Prepare data for the diagram
protocols = list(protocol_counts.keys())
count_values = list(protocol_counts.values())
#Plotting the diagram
plt.bar(protocols, count_values)
plt.xlabel('Protocol')
plt.ylabel('Count')
plt.title('Protocol Distribution')
plt.show()
脚本读取从Wireshark创建的PCAP文件,并在捕获的数据包上迭代,计算出不同IP协议的出现。创建的图提供了对协议分布的见解,有助于了解PCAP文件中捕获的网络流量的组成。
您将能够见证不同IP协议的出现,这都在精美的图表中:
从制定精确的显示滤波器到可视化数据包特征,Python和Wireshark脚本脚本使我们能够清晰地浏览复杂的数字领域。
捕获,分析,过滤和可视化到网络最黑暗的谜团的核心。快乐的脚本,您的调查可能和我的数据包捕获可视化一样流畅。