Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
esp32-sniffer — 스마트폰이 Wi-Fi 연결을 찾기 위해 전송하는 PROBE REQUEST 패킷을 스니핑하여 다양한 유형의 정보를 추출하는 ESP32 펌웨어 | Kitploit
도구/GitHubGitHub/ets-polito/esp32-sniffer
Embedded Systems SecurityPacket Sniffing & AnalysisReconnaissanceWi-Fi AuditingIoT SecurityInformation GatheringWireless SecurityHardware & IoT Security
GitHubets-polito/esp32-sniffer

esp32-sniffer

스마트폰이 Wi-Fi 연결을 찾기 위해 전송하는 PROBE REQUEST 패킷을 스니핑하여 다양한 유형의 정보를 추출하는 ESP32 펌웨어

저장소 보기
32840442년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

ESP32 스니퍼

ETS

Software License Demo Twitter

이 프로젝트는 Espressif IoT Development Framework(ESP-IDF)를 사용하며, ESP-WROOM-32 모듈과 esp-idf v3.2에서 테스트되었습니다.

전체 프로젝트(즉, ESP32 펌웨어, 서버 및 GUI)에 대한 개요는 여기에서 확인할 수 있습니다.

이 펌웨어는 Wi-Fi 연결을 찾고 있는 스마트폰이 전송하는 Probe Request 패킷을 스니핑할 목적으로 작성되었습니다. 스마트폰에서 Wi-Fi 연결이 활성화되면, 사용 가능한 Wi-Fi가 있는지 또는 알려진 Wi-Fi(즉, 스마트폰이 해당 Wi-Fi의 비밀번호를 알고 있는 경우)가 있는지 묻는 probe request 메시지를 브로드캐스트(모든 채널 주파수)로 전송합니다. ESP32는 이를 스니핑하여 다양한 유형의 정보를 추출합니다.

스니핑된 각 패킷에서 다음 정보가 추출됩니다:

  • 요청을 보낸 스마트폰의 MAC
  • 요청이 전송된 Wi-Fi의 SSID
  • 요청이 전송된 시점의 타임스탬프
  • 수신 신호 강도 지표(RSSI)
  • 시퀀스 번호(SN)
  • HT Capabilities Info

매 1분마다 이 정보들은 서버로 전송되어 처리됩니다. 마지막으로, 처리된 정보(스마트폰 실시간 위치, 스마트폰 빈도 등)는 GUI를 통해 확인할 수 있습니다.

데모

Watch the video

목차

  • 펌웨어 개요
  • ESP-IDF 환경 구성
  • 사용법
  • 파일 구성
    • 변수 구성
    • 사용자 정의 메뉴 추가
  • 구성 요소
  • 리소스

펌웨어 개요

펌웨어는 두 개의 주요 스레드/태스크로 구성됩니다:

  • 스니퍼 태스크

    • Probe Request 패킷을 스니핑하고 위에서 설명한 정보를 파일에 저장합니다.
  • Wi-Fi 태스크

    • 매 1분마다 스니퍼 태스크가 저장한 정보를 가져와 서버로 전송합니다.
    • 파일의 I/O 작업에 대한 임계 영역을 관리하기 위해 lock이 사용됩니다.

ESP32는 WIFI_MODE_APSTA 모드로 구성됩니다: 즉, "soft-AP and station control block"을 생성하고 "soft-AP and station"을 시작합니다. 이를 통해 ESP32는 데이터를 전송하는 동안 패킷 정보를 잃지 않으면서 동시에 스니핑하고 서버로 정보를 전송할 수 있습니다.

다음은 Probe Request에 포함될 수 있는 정보 필드의 전체 목록입니다(출처: IEEE 802.11-2012):

cwap-probe-10

그리고 아래는 Wireshark로 스니핑한 패킷으로, 각 필드에 대해 비트 수와 패킷 내에서의 위치를 확인할 수 있습니다:

cwap-probe-03

ESP-IDF 환경 구성

이 섹션은 오래되었을 수 있습니다. 자세한 정보와 ESP-IDF 시작에 대한 최신 가이드는 공식 사이트를 확인하세요.

  1. 툴체인 설정

    • Windows
    • Linux
    • Mac OS
  2. ESP-IDF 받기

    애플리케이션을 컴파일하고 빌드하는 프로그램이 포함된 툴체인 외에도, ESP32 전용 API / 라이브러리가 필요합니다.

    cd ~/esp
    git clone --recursive https://github.com/espressif/esp-idf.git
     
    
  3. v3.x 버전으로 체크아웃

    cd esp-idf
    git checkout release/v3.2
     
    
  4. ESP-IDF 경로 설정

    툴체인 프로그램은 IDF_PATH 환경 변수를 사용하여 ESP-IDF에 접근합니다. 이 변수는 PC에 설정되어 있어야 하며, 그렇지 않으면 프로젝트가 빌드되지 않습니다.

    • Windows
    • Linux & Mac OS
  5. 필요한 Python 패키지 설치

    python -m pip install --user -r $IDF_PATH/requirements.txt
    

사용법

  1. 경로를 export했는지 확인하세요

    export IDF_PATH=~/esp/esp-idf
    export PATH=$PATH:$HOME/esp/xtensa-esp32-elf/bin
    
  2. 저장소 복제

    git clone https://github.com/ETS-PoliTO/esp32-sniffer.git
    cd esp32-sniffer
    
  3. ESP32와 PC 사이에 시리얼 연결 설정

    make menuconfig
    

    Serial flasher config로 이동한 다음 Default serial port로 가서 ESP32가 연결된 포트를 설정하세요

    브리지를 사용하는 경우, 아마도 몇 가지 드라이버를 다운로드해야 할 수 있습니다:

    • CP210x
    • FTDI

    이 문서는 ESP32와 PC 사이에 시리얼 연결을 설정하는 방법에 대한 가이드를 제공합니다.

  4. 코드 빌드 및 ESP32 플래시

    make all && make flash
    
  5. 로그 확인

    make monitor
    

파일 구성

/main/Kconfig.projbuild 파일에는 두 개의 서로 다른 메뉴가 있습니다:

  • SPIFFS (SPI Flash File System)

    SPIFFS 파티션에 대한 몇 가지 중요한 정보가 포함되어 있습니다:

    • SPIFFS 기본 주소
    • SPIFFS 크기
    • SPIFFS 논리 블록 크기
    • SPIFFS 논리 페이지 크기

    SPIFFS는 웨어 레벨링, 파일 시스템 일관성 검사 등을 지원하는 파일 시스템입니다.

  • 구성

    여러 가지 변수가 포함되어 있습니다:

    • ESP32_ID: ESP32의 ID
    • WIFI_SSID: WiFi의 SSID (네트워크 이름)
    • WIFI_PASS: WiFi 비밀번호 (WPA 또는 WPA2)
    • BROKER_ADDR: MQTT 브로커의 IP
    • BROKER_PSW: MQTT 브로커의 비밀번호
    • BROKER_PORT: MQTT 브로커의 포트
    • CHANNEL: ESP32가 PROBE REQUEST를 스니핑할 채널
    • SNIFFING_TIME: 스니핑 시간
    • 기타...

변수 구성

위의 변수를 구성하려면:

  1. 프로젝트 폴더 내에서 터미널을 열고 실행하세요

    make menuconfig 
    
  2. 수정하려는 메뉴를 선택하세요

  3. 원하는 대로 변수를 편집하세요

사용자 정의 메뉴 추가

서로 다른 변수를 가진 다른 메뉴를 추가할 수도 있습니다:

  1. Kconfig.projbuild를 여세요

  2. 새 메뉴를 시작하세요

    menu YOUR_MENU_NAME
    
  3. 필요한 변수를 추가하세요

  4. 메뉴를 종료하세요

    endmenu
    

구성 요소

  • SPIFFS

    파티션 테이블을 생성해야 합니다.

    SPIFFS 구성 요소

  • ESP32 MQTT

    ESP32 MQTT 라이브러리가 사용되었습니다.

    MQTT 문서

  • MD5

    고유 식별자를 얻기 위해 스니핑된 패킷에 사용되는 해시 함수입니다.

리소스

  • 사용된 데이터 구조에 대한 몇 가지 예제와 정보를 확인하려면 공식 esp-idf git 저장소를 참조하세요.
  • Espressif IoT Development Framework의 최신 문서 버전입니다.
  • 질문을 하고 커뮤니티 리소스를 찾으려면 ESP32 포럼을 이용하세요.
  • 탐색 가능한 모듈, 네임스페이스, 데이터 구조 및 파일을 보려면 ESP32-IDF 문서를 참조하세요.

ESP32가 어떻게 작동하는지 보려면 이 데모 비디오도 확인해 보세요.

세네카

가르침을 통한 길은 길고, 모범을 통한 길은 짧고 효과적이다

도구 다운로드