r4ulcl/wifi_db

GitHub: r4ulcl/wifi_db

将 Aircrack-ng 无线抓包数据解析为 SQLite 数据库并提取握手包、身份信息和网络关系的安全分析工具。

Stars: 121 | Forks: 10

GitHub releases GitHub stars GitHub forks GitHub issues CodeFactor LoC GitHub license
Docker Image Docker Image dev

# 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 共享包含捕获文件的文件夹 ![usage docker](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/b86a6157a3112757.png) ### 使用手动安装创建 SQLite 数据库 捕获完成后,我们可以通过导入捕获文件来创建数据库。为此,请输入不带格式后缀的捕获文件名。 ``` python3 wifi_db.py scan-01 ``` 如果我们有多个捕获文件,可以直接加载它们所在的文件夹。并且可以使用 -d 重命名输出数据库。 ``` python3 wifi_db.py -d database.sqlite scan-folder ``` ![usage](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/c29149c383112758.png) ### 打开数据库 数据库可以使用以下工具打开: - [sqlitebrowser](https://sqlitebrowser.org/) ![sqlitebrowser](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/167d55349d112759.png) 下面是 ProbeClientsConnected 表的一个示例。 ![sqlitebrowser-probes](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9c4d5a8be0112800.png) ### 参数 ``` 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信息, 客户端探测, 接入点分析, 握手包捕获, 数据解析, 无后门, 无线渗透测试, 无线网络审计, 网络安全工具, 请求拦截