wifit3
리눅스(Linux), 윈도우즈(Windows), 맥OS(macOS)를 위한 독립형 USB Wi-Fi 감사 도구입니다.
<p align="center">
<img src="https://raw.githubusercontent.com/derv82/wifit3/HEAD/assets/wifit3-1-splash.png" alt="wifit3 splash / adapter picker" width="700">
</p>
[지원되는 USB 어댑터 중] 최소 하나가 필수입니다.
이유?
- 크로스 플랫폼(Cross-Platform): 리눅스, 맥OS, 윈도우즈에서 동일하게 실행됩니다.
- 무선 드라이버 천국: 내장된 무선 스택은 커널 드라이버 버전 관리 지옥과 윈도우즈의 NDIS를 피합니다.
- 런타임 의존성 없음(Zero Runtime Dependencies):
aircrack-ng나 reaver가 필요 없으며, PyUSB 및 Textual 라이브러리를 사용한 순수 Python으로만 구성되었습니다.
<p align="center">
<img src="https://raw.githubusercontent.com/derv82/wifit3/HEAD/assets/wifit3-demo.gif" alt="wifit3 in action: WPS PushButton PSK capture" width="700">
</p>
기능:
정찰 및 분석(Reconnaissance & Analysis)
- 멀티 카드 집계(Multi-Card Aggregation): 여러 어댑터에서 패킷을 동시에 캡처하고, 주입(inject)할 전용 카드를 선택할 수 있습니다.
- 실시간 스캐너(Real-time Scanner): 2.4GHz 및 5GHz 채널 호핑(채널 분리 방식 지원); 신호 강도, 암호화 스위트, WPA3/SAE 전환 모드를 추적합니다.
- AP 및 클라이언트 식별(Identification): 장치 공급업체와 카테고리를 지문 인식(fingerprints)하고; WPS 비콘에서 라우터의 제조사 및 모델을 추출합니다.
- VAP 디클로킹(VAP Decloaking): 알려진 가시적 형제 네트워크와 BSSID를 상호 참조하여 숨겨진 네트워크를 식별합니다.
- 패킷 대시보드(Packet Dashboard): 실시간 비콘, 데이터, 주입 및 디인증(deauthentication) 패킷 비율을 시각화합니다.
공격 및 캡처(Attacks & Captures)
- WPA/WPA2 핸드셰이크(Handshakes): 수동 스니핑(Passive sniffing) 및 표적 비인증(targeted deauthentication); 크랙 가능한 쌍을 검증하고,
.pcap 및 .hc22000 파일을 내보냅니다.
- PMKID 수집(Harvesting): WPA/WPA2 PMKID 키 자료(
.hc22000)를 위한 능동 연관(Active association) 수확 및 수동 스니핑.
- EvilTwin WPA3 다운그레이드: AP를 복제하고 클라이언트(CSA, BTM 및 비인증을 통해)를 추방하여 핸드셰이크를 캡처합니다. 단일 및 다중 카드를 지원합니다.
- WPS 복구 스위트(WPS Recovery Suite):
- PixieDust (2가지 모드): 널 시크릿(Null Secret) 및 정적 시크릿(Static Secret) PRNG 취약점을 악용하여 즉시 오프라인 PIN 복구.
- PushButton (PBC): 물리적인 WPS 버튼 누름을 감지하고 평문 WPA PSK를 즉시 추출합니다.
- PIN 무차별 대입 공격(Brute-Force): 알려진 PIN 데이터베이스 및 AP 잠금 모니터링을 통한 재개 가능한 WPS PIN 크래킹.
- WEP 스위트: 순수 Python 기반의 ARP 리플레이, ChopChop, 가짜 인증(Fake Authentication), 및 PTW 키 복구.
스크린샷(Screenshots)
| 스캐너 | 초점 (단일 대상) |
|---|
| Scanner | Focus |
지원 하드웨어(Supported Hardware)
중요: 지원되는 USB 무선 어댑터가 최소 1개 필요합니다.
| 칩셋 | 대역폭 | 카드 (제조사 + 모델) |
|---|
| Atheros AR9271 | 2.4 GHz | ALFA AWUS036NHA, TP-Link TL-WN722N V1 |
| ... | | |
각 장치의 기능 및 제한 사항 분석: Supported Hardware Doc.
설치 및 실행(Installation & Running)
옵션 1: 사전 빌드 바이너리 다운로드 (권장)
릴리스(Releases)에서 최신 독립형 실행 파일을 다운로드합니다:
- Windows:
wifit3-windows-x64.exe를 다운로드하여 실행합니다.
- Linux (sudo 불필요):
chmod +x wifit3-linux-x64 && ./wifit3-linux-x64
- macOS: (격리 우회)
xattr -d com.apple.quarantine wifit3-macos-universal2
chmod +x wifit3-macos-universal2
./wifit3-macos-universal2
### 옵션 2: 소스에서 실행
wifit3는 Astral의 [`uv`](https://docs.astral.sh/uv/)를 사용합니다. `sync` 명령어로 종속성을 설정합니다:
```bash
uv sync
uv run wifit3
옵션 3: 자체 바이너리 빌드
uv run pyinstaller wifit3.spec --noconfirm --clean
실행 가능한 바이너리는 dist/ 하위 디렉토리에 작성됩니다.
일회성 드라이버 설정 (One-Time Driver Setup)
wifit3는 START 버튼을 클릭한 후 앱 내에서 하드웨어 구성을 자동으로 처리합니다:
- Linux:
/etc/modprobe.d/에 udev 권한 및 블록리스트를 작성하기 위해 pkexec/sudo를 통해 한 번 요청합니다.
- macOS: 설치가 필요하지 않습니다. 장치를 플러그인하고 승인 대화 상자에서 *허용(Allow)*을 선택하세요.
- Windows: 장치에 대한 WinUSB를 설치하기 위해 사용자 계정 컨트롤(UAC)을 통해 한 번 요청합니다.
- VirtualBox: 플러그인하기 전에 장치(들)을 VirtualBox의
USB 필터(USB Filters)에 추가하세요.
제거 (Uninstalling)
이전에 설치된 장치를 운영 체제의 Wi-Fi 스택으로 되돌립니다:
- wifit3 시작 화면에서 해당 카드를 선택합니다.
제거(Uninstall) 버튼을 클릭하고 확인합니다.
- 권한 상승 프롬프트(Windows의 UAC 또는 Linux의
pkexec)를 수락합니다.
- 어댑터를 분리했다가 다시 연결합니다.
Linux에서는 wifit3의 udev 및 modprobe 규칙을 삭제합니다.
Windows에서는 WinUSB 바인딩을 제거하고 PnP 장치 재스캔을 트리거하며(이전 드라이버가 다시 연결됨),
리눅스에 감사드립니다! (Thank you, Linux!)
wifit3는 이러한 리눅스 무선 드라이버를 역공학(reverse-engineered)하고 유지 관리해 온 훌륭한 사람들 덕분에 존재합니다. 이는 보통 감사할 일이 아닌 일입니다.
특별히 감사드립니다:
- Christian "kimo" B. (@kimocoder): wifite2와
aircrack-ng의 RTL8188EUS DKMS 드라이버를 유지 관리해 준 분.
- Neur0sp1cy: 저의 리눅스 및 무선 해킹 수련 과정에서 가까운 친구이자 스승이 되어준 분.
- Nick Morrow (@morrownr): 전설적인 인물로, out-of-tree Realtek USB DKMS 드라이버를 유지 관리해 준 분.
전체 목록은 **CREDITS.md**에 있습니다.
작동 방식: 미니 드라이버 (How it Works: Mini-Drivers)
wifit3는 운영체제(OS)의 기본 Wi-Fi 스택을 완전히 우회합니다. 이 도구는 리눅스 커널 드라이버의 경량 Python 포트(src/wifit3/chips/*)를 포함하고 있으며, 이를 통해 USB 벌크(bulk) 및 제어(control) 전송을 거쳐 무선 장치를 직접 제어합니다.
레지스터 수준의 프레임 주입(frame injection) 및 모니터 모드(monitor mode)가 전적으로 사용자 공간(user space)에서 수행되기 때문에, Windows NDIS 제한이나 리눅스 커널 드라이버 잠금(locking)이 적용되지 않습니다.
아키텍처 세부 정보, 드라이버 포팅 방법론(methodology), 그리고 USB 트레이스 리플레이 도구에 대한 내용은 Porting Documentation을 참조하십시오.
라이선스 및 면책 조항(License & Disclaimer)
코드(Code): GNU General Public License v2.0에 따라 라이선스 부여됩니다 (업스트림 리눅스 드라이버와 일치).
펌웨어(Firmware): 어댑터에 로드되는 벤더 펌웨어 블롭(blobs)은 각 제조사의 라이선스 하에 원문 그대로 재배포됩니다 (자세한 내용은 FIRMWARE.md 참조).
⚠️ 공지 및 면책 조항(Notice & Disclaimer): 본 도구는 사용자가 소유하거나 감사할 명시적 권한을 부여받은 네트워크 및 장비에서만 사용해야 합니다. wifit3는 커널 가드레일 없이 USB 하드웨어 레지스터에 직접 작동하므로, 사용 시 모든 위험은 사용자 본인에게 있습니다.