
Packet-Sniffer v4.0.0
Raw 소켓 기반 네트워크 패킷 스니퍼로, 보안 분석 및 교육용으로 네트워크 인터페이스에서 TCP/IP 패킷을 캡처하고 분해합니다.
RootWire
GNU/Linux용 네트워크 트래픽 모니터 — 이전에는 Packet-Sniffer로 알려졌던 도구. 프레임은 raw 소켓으로 네트워크 인터페이스에서 캡처되고, NETProtocols 라이브러리로 계층별로 디코딩되며, 실시간으로 렌더링되거나 pcap으로 기록되거나 JSON으로 스트리밍됩니다:
[>] 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
디코더는 Ethernet, ARP, IPv4(옵션 및 단편), IPv6 확장 헤더 포함 (MLD 보고서는 전체 Hop-by-Hop 체인을 렌더링함), ICMPv4/v6, TCP(옵션 인식 페이로드 오프셋) 및 UDP를 다룹니다. 잘못되었거나 잘린 프레임은 캡처를 중단시키는 대신 진단되고, 알 수 없는 프로토콜은 체인을 정상적으로 종료하며, 16계층 상한은 조작된 확장 헤더 스택이 증폭되는 것을 방지합니다 — 네트워크가 전달하는 어떤 것에도 캡처는 살아남습니다.
설치
pipx install rootwire # 또는: uv tool install rootwire
또는 uv로 클론에서 실행:
git clone https://github.com/EONRaider/RootWire.git
cd RootWire
uv sync
사용법
rootwire [-h] [-i INTERFACE] [-r FILE] [-w FILE] [--json] [-d] [--version]
options:
-i, --interface 프레임을 캡처할 인터페이스 (기본값: 모든 인터페이스)
-r, --read FILE 실시간 캡처 대신 클래식 pcap 파일에서 프레임 재생
(권한 불필요)
-w, --write FILE 캡처된 모든 프레임을 클래식 pcap 파일에도 기록
--json 프레임당 하나의 NDJSON 객체를 stdout으로 출력 (배너와
통계는 stderr로 유지): jq로 직접 파이프 가능
-d, --data 각 프레임의 원시 페이로드도 표시 (--json과 함께 사용 시 무시됨)
캡처 통계 — 프레임 수, 바이트, 프레임/초, 잘못됨/잘림 수, 프로토콜별 집계 — 는 캡처가 종료될 때 stderr로 보고됩니다. 유용한 조합 몇 가지:
sudo rootwire -i eth0 -w session.pcap # 캡처하고 증거 보관
rootwire -r session.pcap # 나중에 루트 없이 검사
rootwire -r session.pcap --json | jq . # 기계 판독 가능한 분석
실시간 캡처에는 raw 소켓이 필요하며, Linux에서는 root(sudo rootwire -i eth0)
또는 인터프리터에 CAP_NET_RAW 권한을 부여해야 합니다. -r로 파일을 재생할
때는 권한이 필요 없습니다. 클론에서 실행하려면 sudo .venv/bin/python -m rootwire로
실행하세요.
작동 방식
capture.py는 AF_PACKET 소켓에서 원시 프레임을 생성하고(또는 pcap.py가
파일에서 재생 — 두 소스는 서로 교체 가능), decoder.py는 각 프레임의 프로토콜
체인을 불변 DecodedFrame으로 변환하며, 출력 — 화면 렌더러, NDJSON 스트림,
pcap 기록기, 통계 수집기 — 은 하나의 작은 Output 인터페이스를 통해 모든
프레임을 소비합니다. 긴 캡처 중 메모리가 일정하게 유지되는 이유와 출력을
추가하는 방법을 포함한 전체 설명은 ARCHITECTURE.md에
있습니다.
raw 소켓을 제외한 모든 것은 모든 OS에서 실행되므로, 실제 캡처된 트래픽의 65프레임 코퍼스를 전체 파이프라인으로 재생하는 테스트 스위트는 root도 Linux도 필요로 하지 않습니다:
uv run pytest
로드맵
- BPF 필터링(커널 측 캡처 필터)
- 커널 타임스탬프(
SO_TIMESTAMPNS) 및 SIGTERM-클린 서비스 사용 - 체크섬 검증 렌더링(라이브러리가 이미 계산함)
법적 고지
이 저장소에 포함된 코드를 사전 상호 동의 없이 표적에 사용하는 것은 불법입니다. 모든 관련 지방, 주 및 연방 법률을 준수할 책임은 최종 사용자에게 있습니다.
개발자는 어떠한 책임도 지지 않으며, 이 저장소에 포함된 코드가 우연히 또는 의도적으로 위협 행위자나 권한 없는 주체에 의해 시스템 및 관련 리소스의 보안, 개인정보, 기밀성, 무결성 및/또는 가용성을 침해하는 수단으로 활용되는 경우 그 오용이나 피해에 대해 책임을 지지 않습니다. 이 맥락에서 "침해"는 해당 시스템에 존재하는 알려졌거나 알려지지 않은 취약점의 악용을 의미하며, 보안 통제의 구현, 인간 또는 전자적 수단에 의한 것을 포함하되 이에 국한되지 않습니다.
이 코드의 사용은 오직 다음 목적과 직접 관련된 상황에서만 개발자가 승인합니다: 교육 환경 또는 공인된 침투 테스트 작업으로서, 그 선언된 목적이 시스템의 취약점을 발견하고 완화하여 각자의 위협 모델에 정의된 악성 행위자가 사용하는 침해 및 악용에 대한 노출을 제한하는 것입니다.