업데이트로 돌아가기
New releaseAug 22, 2026

Packet-Sniffer v4.0.0

Python 3로 개발된 네트워크 패킷 스니핑 도구입니다.

공유

Packet Sniffer

CI Python Version OS License

GNU/Linux용 네트워크 트래픽 모니터입니다. 프레임은 원시(raw) 소켓으로 네트워크 인터페이스에서 캡처되고, NETProtocols 라이브러리로 계층별로 디코딩된 후 도착하는 즉시 화면에 렌더링됩니다:

[>] Frame #4 at 15:42:07 (wlan0, 74 bytes)
    [+] Ethernet 3c:7c:3f:1a:be:22 -> 9c:1e:95:aa:01:5f
        EtherType: IPv4
    [+] IPv4 192.168.1.96 -> 142.250.79.78
        TTL: 64 | Flags: Don't fragment (DF) | Total Length: 60 | ID: 39754
        Protocol: TCP | Checksum: 0x2b51
    [+] TCP 51888 -> 443
        Flags: 0x002 (SYN) | Seq: 3598801521 | Ack: 0
        Window: 64240 | Checksum: 0x2008 | Options: 20 bytes

디코딩은 옵션을 인식합니다(IPv4 IHL 및 TCP 데이터 오프셋을 존중). 잘못되었거나 잘린 프레임은 캡처를 중단시키는 대신 진단되며, 알 수 없는 프로토콜은 디코드 체인을 정상적으로 종료합니다 — 네트워크가 전달하는 그 어떤 상황에서도 캡처는 계속 유지됩니다.

설치

pipx install "git+https://github.com/EONRaider/Packet-Sniffer.git"

(또는 동일한 URL로 uv tool install을 사용. 이 애플리케이션은 이 이름으로 PyPI에 게시되지 않습니다 — 그 데뷔는 곧 있을 이름 변경을 위해 예약되어 있습니다.)

또는 uv로 클론에서 실행:

git clone https://github.com/EONRaider/Packet-Sniffer.git
cd Packet-Sniffer
uv sync

사용법

packet-sniffer [-h] [-i INTERFACE] [-d] [--version]

options:
  -i, --interface   interface to capture frames from (default: all interfaces)
  -d, --data        also display each frame's raw payload

캡처에는 원시 소켓이 필요하며, Linux에서는 root 권한이 필요합니다:

sudo packet-sniffer -i eth0

...또는 인터프리터에 CAP_NET_RAW 권한을 부여하는 방법이 있습니다. 클론에서 실행하려면 sudo .venv/bin/python -m packet_sniffer로 실행하세요.

작동 방식

capture.pyAF_PACKET 소켓에서 원시 프레임을 생성합니다. decoder.py는 각 프레임의 프로토콜 체인(Ethernet → ARP / IPv4 / IPv6 → ICMP / TCP / UDP)을 따라 불변(immutable) DecodedFrame으로 변환합니다. output.py의 렌더러는 디코딩된 레이어 유형에 따라 분기합니다. 긴 캡처 동안 메모리가 일정하게 유지되는 이유와 렌더러를 추가하는 방법을 포함한 전체 안내는 ARCHITECTURE.md에 있습니다.

원시 소켓을 제외한 모든 것은 모든 OS에서 실행되므로, 테스트 스위트(기록된 프레임에 대한 디코딩 및 렌더링)는 root도 Linux도 필요로 하지 않습니다:

uv run pytest

로드맵

  • BPF 필터링(커널 측 캡처 필터)
  • pcap/pcapng 파일 출력 및 pcap 재생 입력
  • 다른 도구로 파이프하기 위한 JSON/NDJSON 출력
  • 커널 타임스탬프(SO_TIMESTAMPNS)
  • 새 이름 — 계속 지켜봐 주세요

법적 고지

이 저장소에 포함된 코드를 사전 상호 동의 없이 대상을 공격하는 데 일부 또는 전체를 사용하는 것은 불법입니다. 적용 가능한 모든 지방, 주 및 연방 법률을 준수할 책임은 최종 사용자에게 있습니다.

개발자는 어떠한 책임도 지지 않으며, 이 저장소에 포함된 코드가 우연히 또는 그 외의 경위로 위협 행위자나 권한 없는 주체에 의해 시스템 및 관련 리소스의 보안, 개인정보, 기밀성, 무결성 및/또는 가용성을 손상시키는 수단으로 활용되는 모든 경우에 발생하는 오용이나 손해에 대해 책임을 지지 않습니다. 이 맥락에서 "손상(compromise)"이라는 용어는 해당 시스템에 존재하는 알려졌거나 알려지지 않은 취약점의 악용을 의미하며, 여기에는 인간 또는 전자적으로 활성화된 보안 통제의 구현에 존재하는 취약점이 포함되지만 이에 국한되지는 않습니다.

이 코드의 사용은 개발자가 교육 환경 또는 승인된 침투 테스트 작업과 직접 관련된 상황에서만 승인하며, 이러한 작업의 목적은 시스템의 취약점을 찾아 완화하고, 각자의 위협 모델에 정의된 악성 행위자가 사용하는 손상 및 악용에 대한 노출을 제한하는 것입니다.

라이선스

AGPL-3.0

카테고리