aircrack-ng/aircrack-ng
GitHub: aircrack-ng/aircrack-ng
一款专注于评估 WiFi 网络安全的完整工具套件,涵盖了从数据包监控、主动攻击到密码破解的核心能力。
Stars: 7183 | Forks: 1281
# Aircrack-ng
## 徽章
### GitHub CI
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/almalinux.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/alpine.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/dragonflybsd.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/freebsd.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/gentoo.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/kali.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/linux.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/linux-pcre.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/macos.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/netbsd.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/openbsd.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/windows.yml)
### 其他
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/scanbuild.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/codespell.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/coverity.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/docker.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/markdown-link.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/pvs-studio.yml)
[](https://github.com/aircrack-ng/aircrack-ng/actions/workflows/style.yml)
### 仓库版本













## 描述
Aircrack-ng 是一个用于评估 WiFi 网络安全的完整工具套件。
它侧重于 WiFi 安全的不同领域:
* 监控:数据包捕获并将数据导出到文本文件,以便第三方工具进行进一步处理。
* 攻击:通过数据包注入发起重放攻击、解除认证、伪造接入点等。
* 测试:检查 WiFi 网卡和驱动程序的功能(捕获和注入)。
* 破解:WEP 和 WPA PSK(WPA 1 和 2)。
所有工具均为命令行形式,这有助于进行大量的脚本编写。许多 GUI 都利用了这一特性。它主要在 Linux 上运行,同时也支持 Windows、macOS、FreeBSD、OpenBSD、NetBSD,以及 Solaris 甚至 eComStation 2。
# 构建
## 依赖条件
* Autoconf
* Automake
* Libtool
* shtool
* OpenSSL 开发包或 libgcrypt 开发包。
* Airmon-ng (Linux) 需要 ethtool、usbutils,通常还需要 pciutils。
* 在 Windows 上,必须使用 cygwin,并且还需要 w32api 包。
* 在 Windows 上,如果使用 clang,还需要 libiconv 和 libiconv-devel
* Linux:LibNetlink 1 或 3。可以通过向 configure 传递 --disable-libnl 来禁用它。
* pkg-config(在 FreeBSD、DragonFlyBSD、OpenBSD 和 NetBSD 上为 pkgconf)
* FreeBSD、DragonFlyBSD、OpenBSD、NetBSD、Solaris 以及带有 Macports 的 OS X:gmake
* Linux/Cygwin:make 和标准 C++ 库开发包(Debian:libstdc++-dev)
注意:Airmon-ng 仅在系统具有 PCI/PCIe 总线且已连接设备时才需要 pciutils。
此类总线即使在物理上不可见也可能存在。例如,在 Raspberry Pi 4 上就存在
并且连接了设备,因此在该设备上需要 pciutils。
## 可选内容
* 如果你想在 airodump-ng 中使用正则表达式进行 SSID 过滤
(--essid-regex),则需要 PCRE 或 PCRE2 开发包。
* 如果你想使用 airolib-ng 以及 aircrack-ng 中的 '-r' 选项,
则需要 SQLite 开发包 >= 3.3.17(建议使用 3.6.X 或更高版本)
* 如果你想使用 Airpcap,则需要 CD/ISO/SDK 中的 'developer' 目录。
* 为了构建 `besside-ng`、`besside-ng-crawler`、`easside-ng`、`tkiptun-ng` 和 `wesside-ng`,
需要 libpcap 开发包(在 Cygwin 上,改用 Airpcap SDK;见上文)
* rfkill
* 如果你想让 Airodump-ng 记录 GPS 坐标,则需要 gpsd
* 为了在 SMP 机器上获得最佳性能,请确保已安装 hwloc 库及其头文件。强烈建议在多核系统上使用,这可能会带来显著的性能提升
* 用于测试的 CMocka 和 expect
* 仅适用于 Linux 的集成测试:tcpdump、HostAPd、WPA Supplicant 和 screen
## 安装必需和可选的依赖项
以下是在多种操作系统上安装构建 `aircrack-ng` 基本依赖项的说明。
**注意**:在打包 Aircrack-ng 时,CMocka、tcpdump、screen、HostAPd 和 WPA Supplicant 不应作为依赖项。
### Linux
#### Arch Linux
```
sudo pacman -Sy base-devel libnl openssl ethtool util-linux zlib libpcap sqlite pcre2 hwloc cmocka hostapd wpa_supplicant tcpdump screen iw usbutils pciutils expect
```
#### Debian/Ubuntu
```
sudo apt-get install build-essential autoconf automake libtool pkg-config libnl-3-dev libnl-genl-3-dev libssl-dev ethtool shtool rfkill zlib1g-dev libpcap-dev libsqlite3-dev libpcre2-dev libhwloc-dev libcmocka-dev hostapd wpasupplicant tcpdump screen iw usbutils expect
```
#### Fedora
```
sudo yum install libtool pkgconfig sqlite-devel autoconf automake openssl-devel libpcap-devel pcre2-devel rfkill libnl3-devel gcc gcc-c++ ethtool hwloc-devel libcmocka-devel make file expect hostapd wpa_supplicant iw usbutils tcpdump screen zlib-devel expect
```
#### CentOS/RHEL 7
```
sudo yum install epel-release
sudo ./centos_autotools.sh
# 移除旧版本安装的 automake/autoconf
sudo yum remove autoconf automake
sudo yum install sqlite-devel openssl-devel libpcap-devel pcre2-devel rfkill libnl3-devel ethtool hwloc-devel libcmocka-devel make file expect hostapd wpa_supplicant iw usbutils tcpdump screen zlib-devel
```
**注意**:仓库中的 autoconf、automake、libtool 和 pkgconfig 版本过旧。脚本 centos_autotools.sh 会自动安装依赖项以进行编译,然后安装这些工具。
#### CentOS/RHEL 8
```
sudo yum config-manager --set-enabled powertools
sudo yum install epel-release
sudo yum install libtool pkgconfig sqlite-devel autoconf automake openssl-devel libpcap-devel pcre2-devel rfkill libnl3-devel gcc gcc-c++ ethtool hwloc-devel libcmocka-devel make file expect hostapd wpa_supplicant iw usbutils tcpdump screen zlib-devel
```
#### openSUSE
```
sudo zypper install autoconf automake libtool pkg-config libnl3-devel libopenssl-1_1-devel zlib-devel libpcap-devel sqlite3-devel pcre2-devel hwloc-devel libcmocka-devel hostapd wpa_supplicant tcpdump screen iw gcc-c++ gcc ethtool pciutils usbutils expect
```
#### Mageia
```
sudo urpmi autoconf automake libtool pkgconfig libnl3-devel libopenssl-devel zlib-devel libpcap-devel sqlite3-devel pcre2-devel hwloc-devel libcmocka-devel hostapd wpa_supplicant tcpdump screen iw gcc-c++ gcc make expect
```
#### Alpine
```
sudo apk add gcc g++ make autoconf automake libtool libnl3-dev openssl-dev ethtool libpcap-dev cmocka-dev hostapd wpa_supplicant tcpdump screen iw pkgconf util-linux sqlite-dev pcre2-dev linux-headers zlib-dev pciutils usbutils expect
```
**注意**:需要启用 Community 仓库才能使用 iw
#### Clear Linux
```
sudo swupd bundle-add c-basic devpkg-openssl devpkg-libgcrypt devpkg-libnl devpkg-hwloc devpkg-libpcap devpkg-pcre2 devpkg-sqlite-autoconf ethtool wget network-basic software-testing sysadmin-basic wpa_supplicant os-testsuite
```
**注意**:必须手动编译 hostapd,仓库中不包含它
### BSD
#### FreeBSD
```
pkg install pkgconf shtool libtool gcc9 automake autoconf pcre2 sqlite3 openssl gmake hwloc cmocka
```
#### DragonflyBSD
```
pkg install pkgconf shtool libtool gcc8 automake autoconf pcre2 sqlite3 libgcrypt gmake cmocka
```
#### OpenBSD
```
pkg_add pkgconf shtool libtool gcc automake autoconf pcre2 sqlite3 openssl gmake cmocka
```
#### NetBSD
```
pkg_add pkgconf libtool gcc7 automake autoconf pcre2 sqlite3 openssl gmake cmocka
```
### macOS
需要 XCode、Xcode 命令行工具和 HomeBrew。
```
brew install autoconf automake libtool openssl shtool pkg-config hwloc pcre2 sqlite3 libpcap cmocka
```
### Windows
#### Cygwin
Cygwin 需要提供 `setup.exe` 实用程序的完整路径,以便自动安装所需的软件包。此外,它还需要安装位置、缓存包下载位置的路径以及镜像 URL。
以下是自动安装所有依赖项的示例:
```
c:\cygwin\setup-x86.exe -qnNdO -R C:/cygwin -s http://cygwin.mirror.constant.com -l C:/cygwin/var/cache/setup -P autoconf -P automake -P bison -P gcc-core -P gcc-g++ -P mingw-runtime -P mingw-binutils -P mingw-gcc-core -P mingw-gcc-g++ -P mingw-pthreads -P mingw-w32api -P libtool -P make -P python -P gettext-devel -P gettext -P intltool -P libiconv -P pkg-config -P git -P wget -P curl -P libpcre2-devel -P libssl-devel -P libsqlite3-devel
```
#### MSYS2
```
pacman -Sy autoconf automake-wrapper libtool msys2-w32api-headers msys2-w32api-runtime gcc pkg-config git python openssl-devel openssl libopenssl msys2-runtime-devel gcc binutils make pcre2-devel libsqlite-devel
```
### GNU/Hurd
#### Debian
```
apt-get install build-essential autoconf automake libtool pkg-config libssl-dev shtool zlib1g-dev libpcap-dev libsqlite3-dev libpcre2-dev libhwloc-dev libcmocka-dev screen expect libbsd-dev
```
## Docker 容器
我们在 DockerHub 上有两个仓库:
- [aircrackng/release](https://hub.docker.com/r/aircrackng/release):每个发布版本
- [aircrackng/git](https://hub.docker.com/r/aircrackng/git):git 仓库中的每次提交
`git` 版本的基础命令:
`sudo docker run --rm -it aircrackng/git`
可用的平台/CPU 架构:
- linux/386 (基础镜像: debian:unstable-slim)
- linux/amd64 (基础镜像: debian:unstable-slim)
- linux/arm/v5 (基础镜像: debian:unstable-slim)
- linux/arm/v6 (基础镜像: alpine:3)
- linux/arm/v7 (基础镜像: debian:unstable-slim)
- linux/arm64/v8 (基础镜像: debian:unstable-slim)
- linux/mips64le (基础镜像: debian:unstable-slim)
- linux/ppc64le (基础镜像: debian:unstable-slim)
- linux/riscv64 (基础镜像: debian:unstable-slim)
- linux/s390x (基础镜像: debian:unstable-slim)
## 编译
为了构建 `aircrack-ng`,使用了 Autotools 构建系统。Autotools 取代了旧的编译方式。
**注意**:如果使用的是开发者版本,例如:从源代码控制中检出的版本,你需要运行一个预 `configure` 脚本。可以使用以下脚本之一:`autoreconf -i` 或 `env NOCONFIGURE=1 ./autogen.sh`。
首先,运行 `./configure` 为构建配置项目,并指定适合你环境的选项:
```
./configure
```
**提示**:如果上述操作失败,请查看上文关于源代码控制开发者版本的说明。
接下来,编译项目(根据需要选择使用 `make` 还是 `gmake`):
* 编译:
`make`
* 在 *BSD 或 Solaris 上编译:
`gmake`
最后,下面列出的附加目标在你的环境中可能会有用:
* 执行所有单元测试:
`make check`
* 执行所有集成测试(需要 root 权限):
`make integration`
* 安装:
`make install`
* 卸载:
`make uninstall`
### `./configure` 标志
在配置时,可以使用并组合以下标志,以根据你的选择调整套件:
* **with-airpcap=DIR**:在 Windows 上支持 airpcap 设备所需(仅限 Cygwin 或 MSYS2)。
将上面的 DIR 替换为从 Airpcap CD 提取的或在线下载的 SDK 源代码根目录的绝对路径。在 Windows 上构建 `besside-ng`、`besside-ng-crawler`、`easside-ng`、`tkiptun-ng` 和 `wesside-ng` 实验性工具时需要。
开发者包(兼容 4.1.1 和 4.1.3 版本)可从以下网址下载:
https://support.riverbed.com/content/support/software/steelcentral-npm/airpcap.html
* **with-experimental**:编译 `tkiptun-ng`、`easside-ng`、`buddy-ng`、`buddy-ng-crawler`、`airventriloquist` 和 `wesside-ng` 所需。
编译大多数工具还需要 libpcap 开发包。
如果未安装,将不会构建所有的实验性工具。
在 Cygwin 上没有 libpcap,由 Airpcap SDK 代替它。
参见上面的with-airpcap 选项。
* **with-ext-scripts**:构建 `airoscript-ng`、`versuck-ng`、`airgraph-ng` 和 `airdrop-ng` 所需。
注意:每个脚本都有其自己的依赖项。
* **with-gcrypt**:使用 libgcrypt 加密库而不是默认的 OpenSSL。并且使用内部快速 sha1 实现(借鉴自 GIT)。
依赖项 (Debian):libgcrypt20-dev
* **with-duma**:使用 DUMA 支持进行编译。DUMA 是一个用于检测缓冲区上溢和下溢的库。
依赖项 (Debian):duma
* **disable-libnl**:设置项目在没有 libnl(1 或 3)的情况下进行编译。仅限 Linux 选项。
* **without-opt**:不启用 -O3 优化。
* **enable-shared**:将 OSdep 设为共享库。
* **disable-shared**:与 **enable-static** 结合使用时,将静态编译 Aircrack-ng。
* **with-avx512**:在 x86 架构上,为 aircrack-ng 添加对 AVX512 指令的支持。仅在当前 CPU 支持 AVX512 时使用。
* **with-static-simd=**:在 aircrack-ng 二进制文件中编译单一优化。适用于静态编译和/或空间受限的设备。有效的 SIMD 选项:x86-sse2、x86-avx、x86-avx2、x86-avx512、ppc-altivec、ppc-power8、arm-neon、arm-asimd。
必须与 --enable-static --disable-shared 一起使用。使用这两个选项时,默认会在二进制文件中编译通用优化。--with-static-simd 仅仅允许选择另一种优化。
* **enable-maintainer-mode**:在开发 Aircrack-ng 时,启用此标志非常重要。此标志启用了额外的编译警告和安全功能。
#### 示例:
* 配置并编译:
./configure --with-experimental
make
* 使用 gcrypt 编译:
./configure --with-gcrypt
make
* 安装:
`make install`
* 安装(去除二进制文件中的符号信息):
`make install-strip`
* 安装,包含外部脚本:
./configure --with-experimental --with-ext-scripts
make
make install
* 测试(包含 sqlite、experimental 和 pcre2):
./configure --with-experimental
make
make check
* 在带有 macports 的 OS X 上编译(包含所有选项):
./configure --with-experimental
gmake
* 在搭载 M1/AARCH64 和 Homebrew 的 macOS 上编译:
autoreconf -vif
env CPPFLAGS="-Wno-deprecated-declarations" ./configure --with-experimental
make
make check
* 在搭载 XCode 7.1 和 Homebrew 的 OS X 10.10 上编译:
env CC=gcc-4.9 CXX=g++-4.9 ./configure
make
make check
*注意*:较旧的 XCode 附带的 LLVM 版本不支持 CPU 特性检测;这会导致 `./configure` 失败。要解决此旧版 LLVM 的问题,需要使用不同的编译套件,例如来自 Homebrew 的 GCC 或更新的 LLVM。
如果你想使用来自 Homebrew 的 OpenSSL,你可能需要指定其安装位置。要查明 OpenSSL 的具体路径,请运行:
`brew --prefix openssl`
将上述输出结果作为 `./configure` 行中 `--with-openssl=DIR` 的 DIR:
env CC=gcc-4.9 CXX=g++-4.9 ./configure --with-openssl=DIR
make
make check
* 在 FreeBSD 上使用 gcc9 编译
env CC=gcc9 CXX=g++9 MAKE=gmake ./configure
gmake
* 在 Cygwin 上使用 Airpcap 编译(假设 Airpcap devpack 已解压到 Aircrack-ng 目录中)
cp -vfp Airpcap_Devpack/bin/x86/airpcap.dll src
cp -vfp Airpcap_Devpack/bin/x86/airpcap.dll src/aircrack-osdep
cp -vfp Airpcap_Devpack/bin/x86/airpcap.dll src/aircrack-crypto
cp -vfp Airpcap_Devpack/bin/x86/airpcap.dll src/aircrack-util
dlltool -D Airpcap_Devpack/bin/x86/airpcap.dll -d build/airpcap.dll.def -l Airpcap_Devpack/bin/x86/libairpcap.dll.a
autoreconf -i
./configure --with-experimental --with-airpcap=$(pwd)
make
* 在 DragonflyBSD 上使用 gcrypt 并通过 GCC 8 编译
autoreconf -i
env CC=gcc8 CXX=g++8 MAKE=gmake ./configure --with-experimental --with-gcrypt
gmake
* 在 OpenBSD 上编译(使用 autoconf 2.69 和 automake 1.16)
export AUTOCONF_VERSION=2.69
export AUTOMAKE_VERSION=1.16
autoreconf -i
env MAKE=gmake CC=cc CXX=c++ ./configure
gmake
* 编译并调试 aircrack-ng
export CFLAGS='-O0 -g'
export CXXFLAGS='-O0 -g'
./configure --with-experimental --enable-maintainer-mode --without-opt
make
LD_LIBRARY_PATH=.libs gdb --args ./aircrack-ng [PARAMETERS]
# IDE 开发
## VS Code - devcontainers
提供了一个 VS Code 开发环境(按原样),以便快速搭建开发环境。这还额外增加了对 GitHub Codespaces 的支持。
### 依赖条件
首要条件是拥有一个正常运行的 [Docker Engine](https://docs.docker.com/engine/install/) 环境。
其次,需要安装 [VS Code](https://code.visualstudio.com/) 并包含以下扩展:
- 由 Microsoft 提供的 [`Remote - Containers`](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)。
### 用法
1. 将此仓库克隆到你的工作文件夹:
```
$ git clone --recursive https://github.com/aircrack-ng/aircrack-ng.git
$ cd aircrack-ng
```
2. 克隆此仓库后,在 VS Code 中打开该文件夹。
```
$ code .
```
3. 可能会出现许多关于缺少 `compile_commands.json` 文件的警告。暂时可以安全地忽略这些警告,因为此文件将在首次编译后自动生成。
4. 现在通过按 `Ctrl+R` 并从弹出的菜单中选择 `Build Full` 来构建整个项目。
5. VS Code 应该会检测到 `compile_commands.json` 文件并询问是否应该使用它;选择 "Yes, always" 将完成一个功能齐全的 IDE 的初始设置。
6. 此时,VS Code 几乎所有的功能都将正常运作;从 Intellisense、自动补全、实时文档到代码格式化。此外,还有用于构建和测试的预配置任务,以及一个用于调试 `aircrack-ng` 的 GDB/LLDB 配置示例。
# 打包
CPU 优化的自动检测是在运行时完成的。在打包 Aircrack-ng(用于 Linux 或其他发行版)时,这种行为**是**符合预期的。
此外,在某些情况下,你可能希望完全提供自己的标志,而不让套件自动检测某些优化。要做到这一点,请在 `./configure` 行中添加附加标志 `--without-opt`:
`./configure --without-opt`
# 使用预编译二进制文件
## Linux/BSD
Aircrack-ng 可在大多数发行版的仓库中找到。但是,它并不总是最新版本。
## Windows
* 为你的网卡安装合适的 "monitor" 驱动程序;标准驱动程序无法用于捕获数据。
* Aircrack-ng 套件是命令行工具。因此,你必须打开命令行
`开始菜单 -> 运行... -> cmd.exe` 然后使用它们
* 运行不带任何参数的可执行文件以获取帮助
# 文档
[README](README) 文件中提供了更多信息。
文档、教程等可以在 https://aircrack-ng.org 上找到。
可在 [GitHub Discussions](https://github.com/aircrack-ng/aircrack-ng/discussions) 和 IRC(位于 Libera Chat 的 #aircrack-ng 频道)中获得支持。
每个工具都有其自己的 manpage。对于 aircrack-ng,请使用 `man aircrack-ng`
# 基础设施赞助商
标签:802.11, Aircrack-ng, DOS头擦除, KaliLinux, PE加载, URL发现, WEP破解, WiFi安全, WPA破解, 安全审计工具, 安全检测, 安全测试工具, 客户端加密, 密码破解, 密码管理, 报文嗅探, 数据包注入, 无线攻击, 无线渗透, 无线网络审计, 网络安全, 网络安全评估, 网络抓包, 网络渗透, 请求拦截, 防御绕过, 隐私保护