r4ulcl/wifi_db
GitHub: r4ulcl/wifi_db
将 Aircrack-ng 无线抓包数据解析为 SQLite 数据库并提取握手包、身份信息和网络关系的安全分析工具。
Stars: 121 | Forks: 10
# wifi_db
一个用于将 Aircrack-ng 捕获文件解析为 SQLite 数据库并提取有用信息的脚本,例如握手包(22000 hashcat 格式)、MGT 身份信息、AP、客户端及其 Probes 之间的有趣关系、WPS 信息以及所有已见 AP 的全局视图。
## 功能特性
- 即使拥有 ESSID,也能显示网络是否处于隐藏(cloaked)状态。
- 显示已连接客户端及其各自 AP 的详细表格。
- 识别连接到 AP 的客户端探测请求,提供利用 Rogue AP 的潜在安全风险洞察。
- 提取可用于 hashcat 的握手包,便于密码破解。
- 显示企业网络的身份信息,包括用于认证的 EAP 方法。
- 按 ESSID 和加密方式生成每个 AP 组的摘要,提供附近网络安全状态的概览。
- 为每个 AP 提供 WPS 信息表,详述网络的 Wi-Fi Protected Setup 配置信息。
- 记录所有客户端或 AP 出现时的 GPS 数据和时间戳,支持基于位置的分析。
- 支持上传捕获文件夹或文件。此选项支持使用通配符 (*) 选择多个文件或文件夹。
- 提供 Docker Hub 上的 Docker 版本,以避免依赖问题。
- 提供用于演示和会议的混淆模式。
- 支持添加静态 GPS 数据。
- AP 表中包含 Management Frame Protection (MFP) 能力和需求列。
## 安装
### 通过 [DockerHub](https://hub.docker.com/r/r4ulcl/wifi_db)(推荐)
```
docker pull r4ulcl/wifi_db
```
### 手动安装
#### 基于 Debian 的系统(Ubuntu, Kali, Parrot 等)
依赖项:
- python3
- python3-pip
- tshark
- hcxtools
```
sudo apt install tshark
sudo apt install python3 python3-pip
sudo apt install pkg-config libcurl4-openssl-dev libssl-dev zlib1g-dev make gcc
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
```
安装
```
git clone https://github.com/r4ulcl/wifi_db
cd wifi_db
pip3 install -r requirements.txt
```
##### 使用 venv 安装
```
# 下载 repo
git clone https://github.com/r4ulcl/wifi_db
cd wifi_db
# 创建 venv
sudo apt update ; sudo apt install python3-venv
python3 -m venv wifi_db_env
source wifi_db_env/bin/activate
# 安装依赖
pip3 install -r requirements.txt
```
#### Arch
依赖项:
- python3
- python3-pip
- tshark
- hcxtools
```
sudo pacman -S wireshark-qt
sudo pacman -S python-pip python
git clone https://github.com/ZerBea/hcxtools.git
cd hcxtools
make
sudo make install
cd ..
```
安装
```
git clone https://github.com/r4ulcl/wifi_db
cd wifi_db
pip3 install -r requirements.txt
```
## 使用方法
### 在 [WiFiChallenge Lab](https://wifichallengelab.com/) 中的使用示例
- https://r4ulcl.com/posts/wifi_db-in-wifichallenge-lab/
### 使用 airodump-ng 扫描
运行 airodump-ng 并使用 -w 保存输出:
```
sudo airodump-ng wlan0mon -w scan --manufacturer --wps --gpsd
```
### 使用 Docker 创建 SQLite 数据库
```
#Folder with captures
CAPTURESFOLDER=/home/user/wifi
# 输出数据库
touch db.SQLITE
docker run -t -v $PWD/db.SQLITE:/db.SQLITE -v $CAPTURESFOLDER:/captures/ r4ulcl/wifi_db
```
- `-v $PWD/db.SQLITE:/db.SQLITE`:将输出保存到当前文件夹的 db.SQLITE 文件中
- `-v $CAPTURESFOLDER:/captures/`:与 docker 共享包含捕获文件的文件夹

### 使用手动安装创建 SQLite 数据库
捕获完成后,我们可以通过导入捕获文件来创建数据库。为此,请输入不带格式后缀的捕获文件名。
```
python3 wifi_db.py scan-01
```
如果我们有多个捕获文件,可以直接加载它们所在的文件夹。并且可以使用 -d 重命名输出数据库。
```
python3 wifi_db.py -d database.sqlite scan-folder
```

### 打开数据库
数据库可以使用以下工具打开:
- [sqlitebrowser](https://sqlitebrowser.org/)

下面是 ProbeClientsConnected 表的一个示例。

### 参数
```
usage: wifi_db.py [-h] [-v] [--debug] [-o] [-t LAT] [-n LON] [--source [{aircrack-ng,kismet,wigle}]] [-d DATABASE] capture [capture ...]
positional arguments:
capture capture folder or file with extensions .csv, .kismet.csv, .kismet.netxml, or .log.csv. If no extension is provided, all types will
be added. This option supports the use of wildcards (*) to select multiple files or folders.
options:
-h, --help show this help message and exit
-v, --verbose increase output verbosity
--debug increase output verbosity to debug
-o, --obfuscated Obfuscate MAC and BSSID with AA:BB:CC:XX:XX:XX-defghi (WARNING: replace all database)
-t LAT, --lat LAT insert a fake lat in the new elements
-n LON, --lon LON insert a fake lon in the new elements
--source [{aircrack-ng,kismet,wigle}]
source from capture data (default: aircrack-ng)
-d DATABASE, --database DATABASE
output database, if exist append to the given database (default name: db.SQLITE)
```
### Kismet
待办
### Wigle
待办
## 数据库
wifi_db 包含多个表,用于存储与 airodump-ng 捕获的无线网络流量相关的信息。各表如下:
- `AP`:此表存储在捕获期间检测到的接入点 (AP) 的信息,包括其 MAC 地址 (`bssid`)、网络名称 (`ssid`)、网络是否隐藏 (`cloaked`)、制造商 (`manuf`)、信道 (`channel`)、频率 (`frequency`)、载波 (`carrier`)、加密类型 (`encryption`) 以及从此 AP 接收到的总数据包数 (`packetsTotal`)。该表使用 MAC 地址作为主键。
- `Client`:此表存储在捕获期间检测到的无线客户端的信息,包括其 MAC 地址 (`mac`)、网络名称 (`ssid`)、制造商 (`manuf`)、设备类型 (`type`) 以及从此客户端接收到的总数据包数 (`packetsTotal`)。该表使用 MAC 地址作为主键。
- `SeenClient`:此表存储在捕获期间被观测到的客户端的信息,包括其 MAC 地址 (`mac`)、检测时间 (`time`)、用于捕获数据的工具 (`tool`)、信号强度 (`signal_rssi`)、纬度 (`lat`)、经度 (`lon`)、海拔 (`alt`)。该表使用 MAC 地址和检测时间的组合作为主键,并与 `Client` 表具有外键关系。
- `Connected`:此表存储有关连接到接入点的无线客户端的信息,包括接入点的 MAC 地址 (`bssid`) 和客户端的 MAC 地址 (`mac`)。该表使用接入点和客户端 MAC 地址的组合作为主键,并与 `AP` 和 `Client` 表均具有外键关系。
- `WPS`:此表存储有关启用了 Wi-Fi Protected Setup (WPS) 的接入点的信息,包括其 MAC 地址 (`bssid`)、网络名称 (`wlan_ssid`)、WPS 版本 (`wps_version`)、设备名称 (`wps_device_name`)、型号名称 (`wps_model_name`)、型号编号 (`wps_model_number`)、配置方法 (`wps_config_methods`) 和键盘配置方法 (`wps_config_methods_keypad`)。该表使用 MAC 地址作为主键,并与 `AP` 表具有外键关系。
- `SeenAp`:此表存储在捕获期间被观测到的接入点的信息,包括其 MAC 地址 (`bssid`)、检测时间 (`time`)、用于捕获数据的工具 (`tool`)、信号强度 (`signal_rssi`)、纬度 (`lat`)、经度 (`lon`)、海拔 (`alt`) 和时间戳 (`bsstimestamp`)。该表使用接入点 MAC 地址和检测时间的组合作为主键,并与 `AP` 表具有外键关系。
- `Probe`:此表存储客户端发送的探测请求的信息,包括客户端 MAC 地址 (`mac`)、网络名称 (`ssid`) 和探测时间 (`time`)。该表使用客户端 MAC 地址和网络名称的组合作为主键,并与 `Client` 表具有外键关系。
- `Handshake`:此表存储在捕获期间捕获到的握手包的信息,包括接入点的 MAC 地址 (`bssid`)、客户端 (`mac`)、文件名 (`file`) 和 hashcat 格式 (`hashcat`)。该表使用接入点和客户端 MAC 地址以及文件名的组合作为主键,并与 `AP` 和 `Client` 表均具有外键关系。
- `Identity`:此表表示无线认证中使用的 EAP (Extensible Authentication Protocol) 身份和方法。`bssid` 和 `mac` 字段是分别引用 `AP` 和 `Client` 表的外键。其他字段包括认证过程中使用的身份和方法。
## 视图
- `ProbeClients`:此视图选择探测请求的 MAC 地址、客户端设备的制造商和类型、客户端传输的总数据包数以及探测请求的 SSID。它在 MAC 地址上连接 `Probe` 和 `Client` 表,并按 SSID 排序结果。
- `ConnectedAP`:此视图选择已连接接入点的 BSSID、接入点的 SSID、已连接客户端设备的 MAC 地址以及客户端设备的制造商。它分别在 BSSID 和 MAC 地址上连接 `Connected`、`AP` 和 `Client` 表,并按 BSSID 排序结果。
- `ProbeClientsConnected`:此视图选择已连接接入点的 BSSID 和 SSID、探测请求的 MAC 地址、客户端设备的制造商和类型、客户端传输的总数据包数以及探测请求的 SSID。它在探测请求的 MAC 地址上连接 `Probe`、`Client` 和 `ConnectedAP` 表,并过滤结果以排除那些正在探测与其所连接相同 SSID 的探测请求。结果按探测请求的 SSID 排序。
- `HandshakeAP`:此视图选择接入点的 BSSID、接入点的 SSID、执行握手的客户端设备的 MAC 地址、客户端设备的制造商、包含握手的文件以及 hashcat 输出。它分别在 BSSID 和 MAC 地址上连接 `Handshake`、`AP` 和 `Client` 表,并按 BSSID 排序结果。
- `HandshakeAPUnique`:此视图选择接入点的 BSSID、接入点的 SSID、执行握手的客户端设备的 MAC 地址、客户端设备的制造商、包含握手的文件以及 hashcat 输出。它分别在 BSSID 和 MAC 地址上连接 `Handshake`、`AP` 和 `Client` 表,并过滤结果以排除未被 hashcat 破解的握手。结果按 SSID 分组并按 BSSID 排序。
- `IdentityAP`:此视图选择接入点的 BSSID、接入点的 SSID、执行身份请求的客户端设备的 MAC 地址、客户端设备的制造商、身份字符串以及用于身份请求的方法。它分别在 BSSID 和 MAC 地址上连接 `Identity`、`AP` 和 `Client` 表,并按 BSSID 排序结果。
- `SummaryAP`:此视图选择 SSID、广播该 SSID 的接入点数量、加密类型、接入点的制造商以及 SSID 是否隐藏。它按 SSID 对结果进行分组,并按接入点数量降序排列。
## 待办事项
- [X] Aircrack-ng
- [X] 合并到 1 个文件(以及分开)
- [ ] Kismet
- [ ] Wigle
- [X] install
- [X] 解析文件夹 -f --folder 中的所有文件
- [X] 修复扩展错误、波浪号等(在 aircrack-ng 1.6 中已修复)
- [X] 支持 bash 多文件: "capture*-1*"
- [X] 从数据库中删除客户端或 AP 的脚本 (mac)。- (Whitelist)
- [X] 白名单不将 mac 添加到数据库 (文件 whitelist.txt,添加 macs,创建数据库)
- [X] 如果有新信息则覆盖 (旧 ESSID='', 新 ESSID='WIFI')
- [X] 表 Handhsakes 和 PMKID
- [X] Hashcat 哈希格式 22000
- [X] 表文件,如果文件存在则跳过 (完整路径)
- [ ] 获取 HTTP POST 密码
- [ ] DNS 查询
本程序是以下项目的一部分的延续:https://github.com/T1GR3S/airo-heat
## 作者
- Raúl Calvo Laorden (@r4ulcl)
## 支持本项目
### Buymeacoffee
[

](https://www.buymeacoffee.com/r4ulcl)
## 许可证
[GNU General Public License v3.0](https://github.com/r4ulcl/wifi_db/blob/master/LICENSE)
标签:802.11, Aircrack-ng, Bitdefender, DNS枚举, Hashcat, MGT身份, Python, SQLite, WiFi安全, WPS信息, 客户端探测, 接入点分析, 握手包捕获, 数据解析, 无后门, 无线渗透测试, 无线网络审计, 网络安全工具, 请求拦截