Home

Awesome

     _______..__   __.  __   _______  _______  _______ .______      
    /       ||  \ |  | |  | |   ____||   ____||   ____||   _  \      
   |   (----`|   \|  | |  | |  |__   |  |__   |  |__   |  |_)  |    
    \   \    |  . `  | |  | |   __|  |   __|  |   __|  |      /      
.----)   |   |  |\   | |  | |  |     |  |     |  |____ |  |\  \----.
|_______/    |__| \__| |__| |__|     |__|     |_______|| _| `._____| v3.0

中文

介绍

有一天我在无意中发现,学校的WLAN是开放的。

也就是说,身边充满了Cookie与明文密码,我们只需要伸伸手,便可以拿到。

然后又发现了add在freebuf发的一篇文章,进而对写一个嗅探器愈发有兴趣,于是就有了这个工具。

总之一句话,这个工具是用来嗅探开放WLAN下的数据包,具体嗅探的是含Cookie或者Method为Post的数据包。

把一些东西发在freebuf了,转载请联系fb

食用方法

V2.0及以下

嗅探器是一个类,有以下参数:

  1. iface:可选参数;嗅探使用的原始无线网卡的名字,若不填则代码会自动指定无线网卡

  2. newiface:可选参数;默认值为‘mon0’;由于嗅探需要开启无线网卡的监听模式(monitor),这个是将原始无线网卡改为监听模式后的名字(改为监听模式并非直接改原无线网卡,而是生成一个处于监控模式的虚拟无线网卡);这个虚拟的无线网卡在嗅探器停止后会自动删除。

  3. filename:可选参数;默认为空;嗅探器可以实时嗅探,也可以解析本地的pcap包,这个参数就是本地pcaps包的名字,注意一定要放在Pcaps目录里;只需填写文件名;

  4. outputmode:可选参数;默认为1;嗅探器一旦发现Cookie或者Post的包,就会进行对应的输出,若不想看见实时输出,则置0,否则置1。

  5. savingPkt:可选参数;默认为1;嗅探器发现符合filter的数据时,会对输出的结果进行保存;若不想保存这些结果,置0;默认保存在Pkts下;若置1,则在嗅探结束的时候会提示是否删除本次捕获的所有pkts;

  6. savingPcap:可选参数;默认为0;嗅探器可以保存符合filter的原始数据包;1为保存;0为不保存;默认保存在Pcaps下;若置1,则在嗅探结束的时候会提示是否删除本次捕获的pcap;

  7. filtermode:可选参数;默认为空;与scapy的过滤语法一致,对数据包进行过滤;代码在后面默认过滤自己的ip,以及只嗅探web相关的包;

  8. iHost:可选参数;默认为空列表;在这里面包含的host,在停止嗅探后会高亮显示。

代码中有插件功能,用意是捕获到指定的数据包时,可以由插件来完成后续的工作。例如,我校的校园网帐号密码可以用cookie拿到,那么这个功能就可以写成插件。弄插件的另一个目的是分离核心代码与其他代码。

举个调用的例子:

Sniffer(savingPkt = 1, savingPcap = 1)

运行方式:sudo python sniffer.py

运行截图:

example

捕获cookie时的截图:

outputmode

停止时(Ctrl+c)的截图:

stop

stop

V3.0及以上

v3.0开始均为命令行参数,具体可以使用-h 参数来获得详细帮助信息

注意

  1. 需要的库:

    scapy

    scapy_http

    termcolor

    这些库可以手动安装。

    嗅探器在启动的时候也会自动检查环境并进行修复。

    修复是直接使用sudo pip install 语句,若电脑中存在多版本的python,注意一下pip的使用,可能需要修改ToolBox中EnvirToolsautoFix函数语句。

    注意:Python 3.x 的scapy需要手动安装

    安装scapy for Py3.x

  2. 配置:

    Ubuntu(其他Linux应该也可以)

    pipiwiwconfigifconfig 需可用

    以管理员权限运行

    终端的宽度要足够,否则会出现很多换行。因为覆盖同一行输出的时候是用 '\r' 实现的。

  3. Python版本

    2.x and 3.x

版本更新

  1. v1.0:实现基本功能
  2. v2.0:简化代码,完善自动检查环境脚本,修复n个Bug
  3. v2.0 Py3.x:移植v2.0到Py 3.x
  4. v3.0:增加命令行参数;完善自动检查环境脚本;简化部分代码;增加提醒气泡(嗅探的时候,无论是异常终止还是手动终止,Sniffer都会发一个气泡作为通知,前提是你的系统能使用notify-send。这个命令ubuntu自带,其他系统可能需要安装

后续更新

  1. 代码不够简洁(逃
  2. 插件功能的实现没有我希望的那样方便,后续会改进。
  3. Sniffer的自动更新功能

一些话

目前写的比较粗糙,后续有时间会改进。但是功能是比较完善的。

欢迎评论以及修改

(仅限学术交流,用于非法用途概不负责)

其他

<img src="https://clean-1252075454.cos.ap-nanjing.myqcloud.com/20200528120800990.png" width="500">

Stargazers over time