本文目录导读:

我来为你介绍几个Python网络嗅探的实用案例,这些案例主要用于学习和测试目的,请注意遵守相关法律法规。
基础网络嗅探器(使用scapy)
from scapy.all import *
def packet_callback(packet):
"""处理捕获的数据包"""
if IP in packet:
ip_src = packet[IP].src
ip_dst = packet[IP].dst
if TCP in packet:
# TCP数据包
print(f"[TCP] {ip_src}:{packet[TCP].sport} -> {ip_dst}:{packet[TCP].dport}")
if packet[TCP].payload:
print(f" Payload: {bytes(packet[TCP].payload)[:100]}")
elif UDP in packet:
# UDP数据包
print(f"[UDP] {ip_src}:{packet[UDP].sport} -> {ip_dst}:{packet[UDP].dport}")
elif ICMP in packet:
# ICMP数据包(ping)
print(f"[ICMP] {ip_src} -> {ip_dst}")
def basic_sniffer(interface="eth0", count=10):
"""基础嗅探器"""
print(f"开始嗅探 {interface},捕获 {count} 个数据包...")
# 捕获数据包
packets = sniff(iface=interface, prn=packet_callback, count=count)
print(f"\n捕获完成,共捕获 {len(packets)} 个数据包")
if __name__ == "__main__":
# 使用示例
basic_sniffer(interface="eth0", count=20)
HTTP流量分析嗅探器
from scapy.all import *
import re
class HttpSniffer:
def __init__(self, interface="eth0"):
self.interface = interface
self.http_requests = []
def extract_http_info(self, packet):
"""提取HTTP请求信息"""
if TCP in packet and packet[TCP].payload:
try:
# 尝试解析HTTP请求
payload = bytes(packet[TCP].payload).decode('utf-8', errors='ignore')
if 'HTTP' in payload:
# 提取请求行
lines = payload.split('\r\n')
request_line = lines[0] if lines else ""
if request_line.startswith(('GET', 'POST', 'PUT', 'DELETE')):
# 提取URL
method, url, version = request_line.split(' ')
# 提取Host
host = ""
for line in lines:
if line.lower().startswith('host:'):
host = line.split(': ')[1]
break
return {
'method': method,
'host': host,
'url': url,
'timestamp': packet.time
}
except:
pass
return None
def analyze_http(self, packet):
"""分析HTTP流量"""
info = self.extract_http_info(packet)
if info:
self.http_requests.append(info)
print(f"[HTTP] {info['method']} {info['host']}{info['url']}")
# 分析敏感信息
payload = bytes(packet[TCP].payload).decode('utf-8', errors='ignore')
if 'password' in payload.lower() or 'login' in payload.lower():
print(f"[!] 检测到可能的敏感信息!")
print(f" Payload: {payload[:200]}")
def start_sniffing(self, count=50):
"""开始嗅探"""
print(f"开始HTTP流量嗅探 ({self.interface})...")
sniff(iface=self.interface,
prn=self.analyze_http,
filter="tcp port 80",
count=count)
print(f"\n捕获统计:")
print(f"总HTTP请求: {len(self.http_requests)}")
# 使用示例
# sniffer = HttpSniffer("eth0")
# sniffer.start_sniffing(30)
ARP扫描与嗅探器
from scapy.all import *
import threading
from collections import defaultdict
class ArpSniffer:
def __init__(self, interface="eth0"):
self.interface = interface
self.arp_table = defaultdict(list)
self.running = False
def detect_arp_spoof(self, packet):
"""检测ARP欺骗攻击"""
if ARP in packet and packet[ARP].op == 2: # ARP回复
ip = packet[ARP].psrc
mac = packet[ARP].hwsrc
# 检查是否已有IP-MAC对应关系
if ip in self.arp_table:
if mac not in self.arp_table[ip]:
print(f"[!] ARP欺骗检测!")
print(f" IP: {ip}")
print(f" 原MAC: {self.arp_table[ip][0]}")
print(f" 新MAC: {mac}")
else:
self.arp_table[ip].append(mac)
print(f"[ARP] 新条目: {ip} -> {mac}")
def scan_network(self, network="192.168.1.0/24"):
"""扫描网络设备"""
print(f"扫描网络 {network}...")
# 发送ARP请求
ans, unans = arping(network, iface=self.interface, verbose=0)
print(f"发现 {len(ans)} 个活跃设备:")
for sent, received in ans:
print(f" IP: {received.psrc:15} MAC: {received.hwsrc}")
self.arp_table[received.psrc].append(received.hwsrc)
def start_sniffing(self):
"""开始ARP嗅探"""
self.running = True
print(f"开始ARP嗅探 ({self.interface})...")
sniff(iface=self.interface,
prn=self.detect_arp_spoof,
filter="arp",
store=0,
stop_filter=lambda x: not self.running)
# 使用示例
# sniffer = ArpSniffer("eth0")
# sniffer.scan_network("192.168.1.0/24")
# sniffer.start_sniffing()
WiFi密码嗅探器(仅供学习)
from scapy.all import *
from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
class WifiSniffer:
def __init__(self, interface="wlan0mon"):
self.interface = interface
self.probes = []
def capture_probe_requests(self, packet):
"""捕获探测请求"""
if packet.haslayer(Dot11) and packet.type == 0 and packet.subtype == 4:
# 提取SSID
if packet.haslayer(Dot11ProbeReq):
try:
ssid = packet.info.decode('utf-8', errors='ignore')
if ssid: # 忽略空SSID
mac = packet.addr2
print(f"[探针] 设备 {mac} 搜索网络: {ssid}")
self.probes.append({
'mac': mac,
'ssid': ssid,
'time': packet.time
})
except:
pass
def capture_handshake(self, packet):
"""捕获WPA握手包"""
if packet.haslayer(EAPOL):
print(f"[握手] 捕获到WPA握手包!")
print(f" 源MAC: {packet.addr2}")
print(f" 目的MAC: {packet.addr1}")
# 保存握手包
wrpcap("handshake.pcap", packet, append=True)
def start_monitor(self, duration=60):
"""开始监控"""
print(f"开始监控无线网络 ({self.interface})...")
print("监控时间: {}秒".format(duration))
# 混合模式嗅探
sniff(iface=self.interface,
prn=lambda x: self.capture_probe_requests(x) or self.capture_handshake(x),
timeout=duration)
print(f"\n捕获完成!")
print(f"检测到 {len(self.probes)} 个探测请求")
# 使用前需要将网卡设置为监控模式
# sudo airmon-ng start wlan0
# 然后使用 wlan0mon 作为接口
简易包过滤器
from scapy.all import *
class PacketFilter:
def __init__(self, interface="eth0"):
self.interface = interface
self.rules = []
def add_rule(self, rule_type, value):
"""添加过滤规则"""
self.rules.append({'type': rule_type, 'value': value})
def apply_filter(self, packet):
"""应用过滤规则"""
for rule in self.rules:
if rule['type'] == 'ip_src':
if IP in packet and packet[IP].src != rule['value']:
return False
elif rule['type'] == 'ip_dst':
if IP in packet and packet[IP].dst != rule['value']:
return False
elif rule['type'] == 'port':
if TCP in packet:
if packet[TCP].sport != rule['value'] and packet[TCP].dport != rule['value']:
return False
elif UDP in packet:
if packet[UDP].sport != rule['value'] and packet[UDP].dport != rule['value']:
return False
elif rule['type'] == 'protocol':
if rule['value'].upper() == 'TCP' and TCP not in packet:
return False
elif rule['value'].upper() == 'UDP' and UDP not in packet:
return False
elif rule['value'].upper() == 'ICMP' and ICMP not in packet:
return False
return True
def filter_and_sniff(self, count=10):
"""过滤并嗅探"""
print(f"使用规则过滤: {self.rules}")
def callback(packet):
if self.apply_filter(packet):
print(f"通过过滤: {packet.summary()}")
sniff(iface=self.interface, prn=callback, count=count)
# 使用示例
# filter = PacketFilter("eth0")
# filter.add_rule('protocol', 'TCP')
# filter.add_rule('port', 80)
# filter.filter_and_sniff(20)
安装依赖
# 安装scapy pip install scapy # 安装加密库(用于WPA嗅探) pip install cryptography # Linux下可能需要安装npcap或使用root权限 # Ubuntu/Debian: sudo apt-get install python3-scapy # Windows需要安装Npcap # https://npcap.com/
使用注意事项
- 法律合规:仅在您拥有明确权限的网络上进行嗅探
- 权限要求:大多数操作系统需要root/管理员权限
- 网络接口:确保使用正确的网络接口名称
- 性能影响:大量数据包嗅探可能会影响系统性能
这些案例涵盖了网络嗅探的主要应用场景,从基础的包捕获到特定协议的分析,请始终在合法和道德的范围内使用这些技术。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播