Sniffnet은 로컬 장치의 네트워크 패킷을 캡처하고, 호스트·서비스·프로그램 단위로 트래픽을 시각화하는 GUI 네트워크 모니터링 도구다.
핵심 방향은 Wireshark류의 세밀한 패킷 분석기보다는 “사용자가 바로 이해할 수 있는 트래픽 관측 대시보드”에 가깝다.

캡션: 저장소의 공식 헤더 이미지. Sniffnet의 제품 정체성은 패킷 캡처·트래픽 통계·GUI 시각화를 결합해 네트워크 사용 현황을 직관적으로 보여주는 데 있다.

Quick Links
| 구분 | 링크 |
|---|---|
| GitHub Repository | https://github.com/GyulyVGC/sniffnet |
| 공식 웹사이트 | https://sniffnet.net/ |
| 다운로드 페이지 | https://sniffnet.net/download/ |
| 공식 Wiki / User Manual | https://github.com/GyulyVGC/sniffnet/wiki |
| 실행 화면 / Gallery | https://sniffnet.net/gallery/ |
| Releases | https://github.com/GyulyVGC/sniffnet/releases |
| Discussions | https://github.com/GyulyVGC/sniffnet/discussions |
| Thesis PDF / 장문 기술 자료 | https://github.com/GyulyVGC/sniffnet/blob/main/resources/thesis.pdf |
| Roadmap | https://github.com/GyulyVGC/sniffnet/blob/main/ROADMAP.md |
| Threat Model | https://github.com/GyulyVGC/sniffnet/blob/main/THREAT_MODEL.md |
분석 범위
분석 기준일은 2026-05-19이다. 분석 대상은 README, Cargo.toml, Wiki 주요 문서, 공개 Discussions, ROADMAP, THREAT_MODEL, src/ 소스 구조, src/networking 계층, resources/repository 이미지 자산, resources/diagrams/process_identification.drawio다.
Discussions는 GitHub 공개 HTML에서 접근 가능한 목록과 고정 글 중심으로 확인했다.
수집 이미지와 기능 매칭
| 파일 | 저장 위치 | 기능 매칭 |
|---|---|---|
header_repository.png |
figures/header_repository.png |
프로젝트 브랜딩 및 README 상단 헤더 |
overview.png |
figures/overview.png |
실시간 트래픽 대시보드, 차트, 호스트·서비스·프로그램 상위 목록 |
inspect.png |
figures/inspect.png |
개별 연결 검사, 필터링, 정렬, 연결 상세 보기 |
notifications.png |
figures/notifications.png |
알림 로그, 즐겨찾기·임계치·블랙리스트 기반 이벤트 |
deep_cosmos.png |
figures/deep_cosmos.png |
커스텀 테마 / Deep Cosmos 스타일 |
thumbnail.png |
figures/thumbnail.png |
최소화 상태에서 보는 작은 실시간 대시보드 |
architecture.png |
figures/architecture.png |
README, Wiki, 소스 분석을 바탕으로 재구성한 시스템 아키텍처 |
process_identification.png |
figures/process_identification.png |
process_identification.drawio와 program_lookup.rs 기반 프로그램 식별 흐름 |
roadmap.png |
figures/roadmap.png |
프로젝트 향후 방향성 요약 |
Key Features
1. 실시간 트래픽 Overview
Sniffnet은 선택한 네트워크 어댑터 또는 PCAP 파일을 대상으로 패킷을 수집하고, 전체 송수신량, 드롭된 패킷, 실시간 트래픽 강도, 네트워크 호스트, 서비스, 프로그램별 사용량을 한 화면에 정리한다.
Wiki의 Traffic overview 설명에 따르면 실시간 차트는 최근 30초 구간의 송수신 트래픽을 1초 단위로 갱신하는 형태다.

캡션: Overview 화면은 어댑터·필터·표시 단위를 좌측에 두고, 중앙에는 실시간 트래픽 차트와 총량 도넛 차트를 배치한다. 하단 목록은 호스트, 서비스, 프로그램별 트래픽을 나누어 보여준다.
기술적으로는 pcap 캡처 루프가 패킷을 읽고, etherparse 기반 헤더 파서가 링크·네트워크·전송 계층 정보를 추출한 뒤 InfoTraffic 상태에 누적한다.
UI는 이 누적 상태를 Overview, Inspect, Notifications 등 화면에 반영한다.
2. BPF 기반 캡처 필터와 PCAP import/export
Sniffnet은 기본적으로 모든 트래픽을 관찰할 수 있지만, Wiki의 Filters configuration 문서에 따라 BPF(Berkeley Packet Filter) 표현식을 사용해 특정 프로토콜, 호스트, 포트, 서브넷으로 분석 대상을 좁힐 수 있다.
README와 Wiki는 PCAP 파일 import/export도 핵심 기능으로 제시한다.
대표적인 필터 예시는 다음과 같다.
# TCP 또는 UDP 중 특정 소스 서브넷에서 온 트래픽만 관찰하는 형태의 예시
tcp or udp and src net 192.168.1.0/24
소스 구조상 CaptureContext는 live device와 file import를 같은 캡처 추상화로 다루고, 필터가 활성화된 경우 캡처 핸들에 BPF를 적용한다. PCAP export가 지정되면 캡처된 패킷을 savefile에 기록해 후속 분석 자료로 남길 수 있다.
3. 연결 단위 Inspect와 세부 메타데이터
Inspect 화면은 개별 네트워크 연결을 테이블로 보여주고, 5-tuple 기반의 연결 정보와 송수신량, 호스트 정보, 서비스, 프로세스, ASN, 국가, MAC 주소, ICMP/ARP 세부 타입 등을 탐색할 수 있도록 구성된다.
Wiki의 Traffic inspection 문서는 검색어 접두사 기반 제외 필터, 정렬, 상세 모달 같은 사용 방식을 설명한다.

캡션: Inspect 화면은 실시간 연결 테이블을 통해 로컬/원격 주소, 프로토콜, 서비스, 방향, 트래픽량을 확인하게 한다. 네트워크 보안 관점에서는 “어느 프로세스가 어느 원격 호스트와 통신하는가”를 빠르게 추적하는 진입점이다.
이 기능은 패킷 페이로드를 깊게 해석하는 DPI 도구가 아니라, 연결 메타데이터를 빠르게 정규화하고 사람이 읽기 쉬운 단위로 보여주는 데 초점을 둔다.
따라서 의료·바이오 데이터처럼 민감한 payload를 직접 보여주지 않고도 네트워크 흐름을 점검하는 관측 레이어로 사용할 수 있다.
4. 호스트·서비스·프로그램 식별
README와 공식 웹사이트는 원격 호스트의 지리적 위치, 도메인, ASN, 6000개 이상의 상위 계층 서비스/프로토콜/트로이목마/웜 식별, 그리고 네트워크 트래픽을 생성하는 프로그램 식별을 주요 기능으로 제시한다.
구현 관점에서 이 기능은 다음 계층으로 나뉜다.
manage_packets.rs: 패킷 헤더를 바탕으로 방향성, 로컬/원격 주소, 프로토콜, 포트, 서비스 후보를 결정한다.parse_packets.rs: reverse DNS, country, ASN 같은 호스트 보강 정보를 비동기적으로 갱신한다.program_lookup.rs: 로컬 포트와 프로토콜을listenerscrate로 프로세스에 매핑하고,picon으로 앱 아이콘을 가져온다.services.rs/ generated service map: 포트 기반 서비스명을 매칭한다.

캡션: 저장소의 resources/diagrams/process_identification.drawio와 src/networking/types/program_lookup.rs를 바탕으로 재구성한 프로그램 식별 흐름. 새 연결의 로컬 포트와 프로토콜을 기준으로 프로세스를 찾고, 최근 미할당 연결과 연결한 뒤 아이콘 캐시를 갱신한다.
이 구조는 패킷 처리 경로에서 무거운 작업을 직접 수행하지 않도록 설계되어 있다. 포트 조회와 아이콘 조회는 별도 루틴으로 밀어내고, 최근 조회 기록과 캐시를 사용해 반복 lookup 비용을 줄인다.
5. 알림, 즐겨찾기, IP 블랙리스트
Notifications 기능은 특정 데이터 임계치 초과, 즐겨찾기 대상과의 통신, 블랙리스트 IP와의 통신 같은 이벤트를 사용자에게 알린다.
Wiki는 알림 사운드와 원격 알림 전송도 설명한다.
IP blacklists 문서는 한 줄에 하나의 IP 또는 CIDR을 넣는 사용자 정의 블랙리스트를 지원하고, 유효하지 않은 라인은 무시한다고 설명한다.

캡션: Notifications 화면은 즐겨찾기 대상 트래픽, 초당 바이트 임계치 초과, 블랙리스트 IP 통신 같은 이벤트를 시간순으로 보여준다. SOC·개발 워크스테이션·에이전트 샌드박스에서 경량 네트워크 감시 이벤트 로그로 응용할 수 있다.
이 기능은 단순한 UI 알림을 넘어 원격 webhook과 결합될 수 있다.
예를 들어 자율 에이전트 실행 환경에서 “허용되지 않은 외부 호스트 접근”, “특정 도메인으로의 데이터 급증”, “금지 IP 대역 접근”을 외부 관측 시스템으로 전달하는 식의 활용이 가능하다.
6. 커스텀 테마와 사용자 경험 중심 UI
Sniffnet은 네트워크 분석 도구이지만, 공식 웹사이트가 강조하듯 사용성 중심의 GUI를 지향한다.
Wiki에는 Custom themes 문서가 별도 섹션으로 존재하고, README는 custom themes support를 기능으로 언급한다.

캡션: Deep Cosmos 테마 예시. 동일한 Overview 기능을 다른 색상 팔레트로 표시하며, 기술 도구 특유의 복잡함을 줄이고 장시간 관찰 환경에서 가독성을 확보하려는 UX 방향을 보여준다.
7. Thumbnail mode: 항상 보이는 작은 트래픽 대시보드
Thumbnail mode는 앱을 최소화해도 작은 부동형 대시보드로 트래픽 추이를 계속 볼 수 있게 한다.
README와 Gallery 모두 이 기능을 별도의 실행 화면으로 소개한다.

캡션: Thumbnail mode는 전체 분석 화면을 열어두지 않아도 총 트래픽, 간단한 차트, 주요 호스트·서비스를 계속 관찰하게 한다. 개발자가 모델 학습, 대용량 데이터 다운로드, 에이전트 실행 중 네트워크 이상 징후를 빠르게 보는 데 적합하다.
Tech Stack
| 영역 | 구성 요소 / 버전 | 역할 |
|---|---|---|
| 언어 | Rust, edition 2024 | 전체 애플리케이션 구현 언어 |
| 패키지 버전 | sniffnet 1.5.0 |
Cargo.toml 기준 패키지 버전 |
| 라이선스 | MIT OR Apache-2.0 | Rust 생태계와 호환성이 높은 dual license |
| GUI | iced 0.14.0 |
크로스플랫폼 GUI 프레임워크 |
| 패킷 캡처 | pcap 2.4.0 |
libpcap/Npcap 기반 live capture 및 PCAP 처리 |
| 패킷 파싱 | etherparse 0.20.1 |
Ethernet, Linux SLL, IP, TCP/UDP, ICMP, ARP 헤더 파싱 |
| DNS | dns-lookup 3.0.1 |
reverse DNS lookup |
| Geo/ASN | maxminddb 0.28.1 |
MMDB 기반 국가·ASN 조회 |
| 프로세스 매핑 | listeners 0.5.1 |
로컬 포트/프로토콜 기반 프로세스 조회 |
| 앱 아이콘 | picon 0.1.0 |
프로세스 실행 경로에 대한 아이콘 조회 |
| 차트 | plotters 0.3.7, plotters-iced2 0.14.0 |
실시간 트래픽 차트 렌더링 |
| 비동기/HTTP | tokio 1.52.1, reqwest 0.13.3 |
비동기 작업, 원격 알림, 네트워크 요청 |
| 설정/직렬화 | serde, serde_json, toml, confy |
설정, 상태, 사용자 커스터마이징 저장 |
| 알림 사운드 | rodio 0.22.2 |
알림 사운드 재생 |
| OS 의존성 | Npcap, libpcap, ALSA, fontconfig 등 | 플랫폼별 캡처·오디오·폰트 의존성 |
저장소의 src/ 구조는 다음과 같이 기능별 모듈화가 되어 있다.
src/
├── chart/ # 실시간 트래픽 차트
├── cli/ # 커맨드라인 인자
├── countries/ # 국가 정보/표시 보조
├── gui/ # Iced 기반 UI 페이지와 상태
├── mmdb/ # MaxMind DB 기반 geo/ASN 조회
├── networking/ # 캡처, 파싱, 방향성/서비스/프로그램 식별
├── notifications/ # 로컬/원격 알림
├── report/ # 리포트/기록/내보내기
├── translations/ # 다국어 리소스
├── utils/ # 공통 유틸리티
└── main.rs # 앱 초기화 및 Iced application 부트스트랩
Architecture

캡션: README, Wiki, Cargo.toml, src/networking 분석을 바탕으로 재구성한 Sniffnet 아키텍처. live device/PCAP 입력을 CaptureContext가 받아 패킷 스트림으로 전달하고, 파서와 보강 계층을 거쳐 InfoTraffic 상태를 만든 뒤 GUI, 알림, 리포트, PCAP export로 출력한다.
Sniffnet의 내부 흐름은 크게 다섯 단계로 볼 수 있다.
- Input selection: GUI 또는 CLI에서 네트워크 어댑터, PCAP 파일, 필터, 출력 옵션을 결정한다.
- Capture abstraction:
CaptureContext가 live capture와 offline PCAP import를 통합적으로 다룬다.
live capture는 OS별 libpcap/Npcap 계층에 의존하고, file import는 PCAP 파일에서 패킷을 순차적으로 읽는다. - Packet parsing:
parse_packets.rs와manage_packets.rs가 링크 계층, IP 계층, 전송 계층을 해석한다. Ethernet2, Linux SLL, IPv4, IPv6, TCP, UDP, ICMP, ARP 같은 주요 헤더가 처리 대상이다. - Enrichment: reverse DNS, MaxMind DB, 서비스 카탈로그, 프로그램 lookup, IP blacklist가 원시 패킷 메타데이터에 의미를 붙인다.
- Presentation and actions:
InfoTraffic상태는 Overview/Inspect/Notifications UI, report/export, 원격 알림으로 이어진다.
핵심 설계 포인트는 “패킷 수집 경로의 속도”와 “사용자에게 보여줄 의미 있는 메타데이터”를 분리하는 것이다.
reverse DNS, 프로세스 식별, 아이콘 조회 같은 지연 가능성이 있는 작업은 별도 채널·스레드·캐시를 활용해 UI와 캡처 루프의 병목을 줄인다.
Usage & Setup
사전 빌드 패키지 사용
공식 다운로드 페이지는 Windows, macOS, Linux용 빌드를 제공한다.
README는 최신 release에서 Windows .msi, macOS .dmg, Linux .deb/.rpm/.AppImage 등을 내려받는 경로를 안내한다.
로컬 빌드
Wiki의 Build from source 문서 기준으로 기본 빌드 흐름은 다음과 같다.
# 1. Rust toolchain 설치 후 저장소 클론
git clone https://github.com/GyulyVGC/sniffnet.git
cd sniffnet
# 2. 개발 빌드
cargo build
# 3. 실행 파일 위치
./target/debug/sniffnet
플랫폼별 주요 의존성
Windows에서는 패킷 캡처를 위해 Npcap이 필요하다.
Linux에서는 배포판에 따라 libpcap, ALSA, fontconfig 계열 패키지가 필요하며, root 없이 캡처하려면 실행 파일에 capabilities를 부여해야 한다.
macOS에서는 네트워크 패킷 캡처 특성상 관리자 권한 실행이 필요할 수 있다.
Linux에서 capability를 부여하는 대표적인 형태는 다음과 같다.
sudo setcap cap_net_raw,cap_net_admin=eip /path/to/sniffnet
필터와 분석 시작
Sniffnet은 기본적으로 전체 트래픽을 관찰할 수 있지만, BPF 필터를 설정하면 캡처 단계에서 분석 대상을 줄일 수 있다.
# 예: TCP 트래픽만 관찰
tcp
# 예: 특정 호스트와의 UDP 트래픽만 관찰
udp and host 8.8.8.8
렌더링 문제 대응
README의 troubleshooting 섹션은 그래픽 드라이버 또는 렌더링 문제 발생 시 ICED_BACKEND=tiny-skia 환경 변수를 사용하는 우회 방법을 제시한다.
ICED_BACKEND=tiny-skia sniffnet
Project Direction
ROADMAP은 Sniffnet 2.0을 장기 목표로 두고, 커뮤니티 요구와 유지보수 가능성을 고려해 기능 개선 방향을 정리한다.

캡션: 저장소의 공식 roadmap 이미지. Sniffnet은 단순 패킷 캡처 도구가 아니라, GUI 기반 네트워크 관측 플랫폼으로 기능을 확장하는 방향성을 유지하고 있다.
Personal Insights
의료 AI 관점
의료 AI 시스템은 모델 추론 서버, PACS/VNA, EHR 연계, 외부 API, 원격 모니터링 엔드포인트 등 다양한 네트워크 접점을 가진다.
Sniffnet은 payload를 직접 분석하는 의료 보안 제품은 아니지만, 워크스테이션 또는 개발 서버 단위에서 “어떤 프로세스가 어느 호스트와 통신하는지”를 빠르게 파악하는 도구로 유용하다.
특히 다음 상황에 적합하다.
- 의료 영상 AI 데모 또는 PoC 환경에서 예기치 않은 외부 통신 확인
- 모델 추론 컨테이너 또는 로컬 앱이 외부 API에 접근하는지 확인
- 원격 알림과 IP 블랙리스트를 사용해 금지 대역 접근을 빠르게 감지
- 병원망 도입 전 개발 장비의 네트워크 동작을 사전 점검
다만 Sniffnet은 중앙집중형 감사 로그, DLP, SIEM, 규정 준수 리포팅을 대체하지 않는다.
HIPAA, GDPR, 의료기기 사이버보안 문서화 관점에서는 관측 보조 도구로 두고, 정식 통제는 EDR/NDR/SIEM/방화벽 로그와 결합해야 한다.
Bioinformatics 관점
Bioinformatics 파이프라인은 reference genome, FASTQ/BAM/CRAM, 모델 weight, annotation DB, cloud object storage 등 대용량 전송이 잦다.
Sniffnet은 대규모 데이터 이동 중 어떤 프로그램이 어느 원격 호스트로 데이터를 보내는지 실시간으로 확인하기 좋다.
예를 들어 로컬 분석 노드에서 nextflow, snakemake, aws, gcloud, rclone, 브라우저, DB client가 동시에 동작할 때, Sniffnet의 프로그램/호스트/서비스별 분해는 네트워크 병목과 의도치 않은 외부 전송을 빠르게 분리해준다.
custom blacklist를 사용하면 승인되지 않은 cloud endpoint나 외부 CIDR 접근을 알림 이벤트로 만들 수도 있다.
한계도 명확하다.
Sniffnet은 패킷 payload를 해석해 생물정보학 파일 타입을 판별하는 도구가 아니며, 데이터 계보(provenance)나 파일 checksum 감사는 별도 파이프라인 로깅으로 관리해야 한다.
Autonomous Agent 개발 관점
자율 에이전트는 웹 검색, API 호출, 도구 실행, 코드 생성, 외부 데이터 다운로드를 자동으로 수행한다.
이때 네트워크 egress 관측은 안전한 샌드박스 운영의 핵심이다. Sniffnet은 다음과 같은 개발 단계 관측에 적합하다.
- 에이전트가 실제로 어떤 도메인/API와 통신하는지 확인
- 예상보다 많은 트래픽이 발생하는 프롬프트 또는 tool chain 탐지
- agent runtime, browser automation, LLM client, package manager의 네트워크 사용량 분리
- blacklist와 notification을 사용한 금지 호스트 접근 감지
- PCAP export를 통한 재현 가능한 네트워크 실험 기록 확보
에이전트 보안 아키텍처에 적용한다면 Sniffnet은 “개발자 로컬 관측기” 위치가 적절하다.
운영 환경에서는 eBPF 기반 중앙 수집, 네트워크 정책 엔진, 프록시 로그, DNS 로그와 연결하는 것이 더 적합하다.
그러나 GUI 기반으로 빠르게 이상 동작을 확인하는 데는 Sniffnet의 낮은 진입장벽이 강점이다.
기술적 강점과 리스크
강점
- Rust 기반 구현: 패킷 처리처럼 성능과 안전성이 중요한 영역에 적합하다.
- GUI 중심 접근성: Wireshark보다 덜 복잡한 대시보드형 트래픽 관찰 경험을 제공한다.
- 메타데이터 보강: DNS, Geo/ASN, 서비스명, 프로그램, 아이콘까지 연결해 사람이 읽을 수 있는 맥락을 만든다.
- PCAP import/export: 실시간 관찰과 사후 분석을 모두 지원한다.
- 사용자 정의 알림: threshold, favorite, blacklist 기반의 경량 이벤트 감지가 가능하다.
- 공식 Wiki와 Discussions: 설치, 필터, 고급 기능, 커뮤니티 업데이트가 지속적으로 관리되고 있다.
리스크 / 주의점
- 권한 요구: 패킷 캡처는 OS별 관리자 권한 또는 capability 설정이 필요하다.
- 로컬 GUI 중심: 대규모 서버 fleet 또는 중앙 관제 시스템으로 쓰기에는 별도 통합이 필요하다.
- 프로그램 식별 한계: 포트와 프로세스 매핑은 OS 상태와 타이밍에 영향을 받으며, 캐시와 재조회 정책으로 보정하더라도 완벽하지 않을 수 있다.
- payload 분석 도구가 아님: 암호화된 트래픽 내용, L7 세부 메시지, 민감 데이터 유출 여부를 직접 판별하지 않는다.
- 원격 알림 보안: webhook 엔드포인트를 설정할 때 인증, TLS, 알림 내용 최소화, 로그 보존 정책이 필요하다.
Sources
- GitHub Repository: https://github.com/GyulyVGC/sniffnet
- README: https://github.com/GyulyVGC/sniffnet/blob/main/README.md
- Cargo.toml: https://github.com/GyulyVGC/sniffnet/blob/main/Cargo.toml
- Wiki Home: https://github.com/GyulyVGC/sniffnet/wiki
- Build from source: https://github.com/GyulyVGC/sniffnet/wiki/Build-from-source
- Required dependencies: https://github.com/GyulyVGC/sniffnet/wiki/Required-dependencies
- Filters configuration: https://github.com/GyulyVGC/sniffnet/wiki/Filters-configuration
- Traffic overview: https://github.com/GyulyVGC/sniffnet/wiki/Traffic-overview
- Traffic inspection: https://github.com/GyulyVGC/sniffnet/wiki/Traffic-inspection
- Programs: https://github.com/GyulyVGC/sniffnet/wiki/Programs
- Notifications: https://github.com/GyulyVGC/sniffnet/wiki/Notifications
- IP blacklists: https://github.com/GyulyVGC/sniffnet/wiki/IP-blacklists
- Discussions: https://github.com/GyulyVGC/sniffnet/discussions
- ROADMAP: https://github.com/GyulyVGC/sniffnet/blob/main/ROADMAP.md
- THREAT_MODEL: https://github.com/GyulyVGC/sniffnet/blob/main/THREAT_MODEL.md
- Source tree: https://github.com/GyulyVGC/sniffnet/tree/main/src
- Repository image assets: https://github.com/GyulyVGC/sniffnet/tree/main/resources/repository
- Process identification diagram: https://github.com/GyulyVGC/sniffnet/blob/main/resources/diagrams/process_identification.drawio
'AI 생성 글 정리 > tech_github' 카테고리의 다른 글
| OpenHuman — 로컬 메모리와 데스크톱 UX를 결합한 개인 AI 슈퍼 인텔리전스 (0) | 2026.05.19 |
|---|---|
| TradingAgents — 실제 트레이딩 데스크를 모사한 멀티 에이전트 LLM 금융 분석 프레임워크 (0) | 2026.05.19 |
| mattpocock/skills — “vibe coding”을 엔지니어링 루프로 바꾸는 Agent Skill 컬렉션 (0) | 2026.05.19 |
| CloakBrowser — 소스 레벨 지문 패치 기반 Stealth Chromium 자동화 브라우저 (0) | 2026.05.19 |
| Local Deep Research — 로컬·프라이버시 중심 에이전틱 리서치 어시스턴트 (0) | 2026.05.19 |