page contents

用Python做WiFi嗅探?5分钟上手黑客同款技能

有没有想过,你的电脑其实可以像个“监听器”,实时捕捉周围WiFi的蛛丝马迹? 是的,哪怕你不是黑客,也能用Python把网络流量“看个通透”。是不是已经有点坐不住了?直接开干!

attachments-2025-05-cL07wwrk68214f7a83e60.jpg有没有想过,你的电脑其实可以像个“监听器”,实时捕捉周围WiFi的蛛丝马迹? 是的,哪怕你不是黑客,也能用Python把网络流量“看个通透”。是不是已经有点坐不住了?直接开干!

1. 工具清单:配置前的准备动作

想嗅探网络数据,装备不能少:

Python 3.8+(基本操作)

Scapy库(网络数据包界的瑞士军刀)

无线网卡支持“监听模式”(monitor mode),推荐Alfa AWUS036NH

Linux系统 + root权限

合法授权的网络环境(别乱来哈,违法成本高)

小提醒:开启监听模式会让WiFi断网,建议准备第二条网络线或者热点兜底。

在开始写代码之前,先把下面这些包装好:

确保你用的是 Python 3.8 及以上:

python3 --version

如果你还没安装 Python,可以去官网 https://www.python.org 下载对应系统的安装包。

安装核心依赖:Scapy + HTTP & TLS 支持包

pip install scapy

如果你还想解析 HTTP 或 TLS 流量,还可以安装以下模块(可选但推荐):

pip install scapy[http]

pip install scapy-ssl_tls

系统工具支持(必须配置监听模式)

Scapy 默认只支持 Linux / macOS 下使用无线网卡的监听模式(monitor mode)。在 Linux 下:

切换网卡为监听模式(使用 airmon-ng 工具):

sudo apt install aircrack-ng

sudo airmon-ng start wlan0

这会把你的无线网卡变成 wlan0mon 模式,方便 Scapy 抓包。

2. 捕获WiFi 802.11帧:窥探网络从这里开始

from scapy.all import sniff, Dot11

def show_packet(pkt):

    if pkt.haslayer(Dot11):

        print(f"[{pkt.time:.2f}] {pkt.addr2} → {pkt.addr1} type={pkt.type} subtype={pkt.subtype}")

sniff(iface="wlan0mon", prn=show_packet, store=False)

这个脚本会打印所有WiFi帧的信息(源地址、目标地址、类型等),几乎就是“网络监听实况转播”。

想只看“管理帧”?来点精细过滤:

sniff(iface="wlan0mon", prn=show_packet,

      lfilter=lambda p: p.haslayer(Dot11) and p.type == 0,

      store=False)

3. 抓包HTTP请求 + SNI字段,监听网页访问

Scapy也能“监听”网站访问请求,尤其是明文的HTTP,还有TLS握手中的SNI(域名指示)字段:

from scapy.all import sniff

from scapy.layers.http import HTTPRequest

from scapy.layers.ssl_tls import TLSClientHello

def http_tls_sniff(pkt):

    if pkt.haslayer(HTTPRequest):

        req = pkt[HTTPRequest]

        print(f"[HTTP] {req.Method.decode()} {req.Host.decode()}{req.Path.decode()}")

    elif pkt.haslayer(TLSClientHello):

        sni = pkt[TLSClientHello].extensions.get('server_name')

        if sni:

            print(f"[TLS] SNI: {sni}")

sniff(iface="wlan0mon", prn=http_tls_sniff, store=False)

统计显示:超90%的网站已启用HTTPS,SNI就是我们仅存的明文入口。

4. 追踪设备活动:MAC地址+频率统计

还可以做个小“侦探”,看看有哪些设备在周围发出探测请求(probe request),还可以统计它们出现的频率:

from scapy.all import sniff, Dot11ProbeReq

from collections import Counter

probe_counts = Counter()

def count_probes(pkt):

    if pkt.haslayer(Dot11ProbeReq):

        probe_counts[pkt.addr2] += 1

sniff(iface="wlan0mon", prn=count_probes, store=False, timeout=60)

print("Top 5 活跃设备:")

for mac, count in probe_counts.most_common(5):

    print(f" - {mac}: {count} 次")

后续还可以导出为CSV,用pandas+matplotlib画图,搞个“热点设备活跃图”都不是梦。

5. 关键提醒:安全红线不能碰!

别玩嗨了忘了底线,这些你必须知道:

必须得到网络所有者书面授权

明确告知会记录什么内容

只收集必要信息,用完及时清除

遵守所在地法律

记住这句话:“技术是中立的,用它的人才决定善恶。”

更多相关技术内容咨询欢迎前往并持续关注好学星城论坛了解详情。

想高效系统的学习Python编程语言,推荐大家关注一个微信公众号:Python编程学习圈。每天分享行业资讯、技术干货供大家阅读,关注即可免费领取整套Python入门到进阶的学习资料以及教程,感兴趣的小伙伴赶紧行动起来吧。

attachments-2022-05-rLS4AIF8628ee5f3b7e12.jpg

  • 发表于 2025-05-12 09:31
  • 阅读 ( 60 )
  • 分类:Python开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
Pack
Pack

1303 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 2140 文章
  3. Pack 1303 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章