
TCPViewer v1.10.0
최고 수준의 macOS 앱으로 Mac에서 모든 패킷을 명확하게 확인하세요. Wireshark의 대안입니다.
TCP Viewer
Mac을 위한 간단하고 네이티브한 패킷 뷰어.
TCP Viewer는 macOS에서 네트워크 패킷을 캡처하고 읽습니다. 캡처에는 시스템 libpcap을, 심층 패킷 세부 정보에는 Wireshark 라이브러리를 사용합니다.
기능
- AppKit으로 구축된 네이티브 macOS 앱
- Wireshark Lib 기반으로, Wireshark의 대안
- 실시간 트래픽 캡처.
- 앱, 도메인 또는 IP 주소별로 패킷 그룹화.
- TCP, UDP, DNS, HTTP, TLS, WebSocket 등 필터링.
- 프로토콜 필드와 원시 바이트 읽기.
- PCAP 및 PCAPNG 파일 열기.
- TCP 및 UDP 스트림 따라가기.
- 패킷을 PCAP 또는 PCAPNG로 내보내기.
- TCP Viewer MCP로 AI 에이전트에게 캡처에 대해 질문하기.
tcpviewer-cli또는 MCP로 캡처, 탭, 분할 창, 필터, 통계, TCP/UDP 따라가기, 패킷 비교 자동화.- 전체 소스 코드 검토.
간편한 패킷 캡처
- 네트워크 인터페이스 선택.
- 클릭 한 번으로 시작 또는 중지.
- 바쁜 캡처도 읽기 쉽게 유지.
TCP Viewer MCP
- TCP Viewer를 Codex 또는 다른 MCP 클라이언트에 연결.
- 캡처 상태 확인.
- 네트워크 인터페이스 목록 표시.
- 간단한 프롬프트로 패킷 찾기.
- TCP Viewer PRO에서 사용 가능.
캡처 파일 열기
- PCAP 또는 PCAPNG 파일을 드래그하여 열기.
- 패킷을 즉시 미리보기.
- 실시간 캡처와 동일한 뷰 사용.
TCP 및 UDP 스트림 따라가기
- TCP 대화를 재구성하거나 UDP 데이터그램을 캡처 순서대로 보기.
- 패킷 메뉴 또는 도구 메뉴에서 스트림 열기.
- 양방향을 함께 표시.
- 클라이언트 또는 서버 데이터만 표시.
- 텍스트와 16진수 간 전환.
- 스트림 검색.
- 원본 패킷으로 돌아가기.
트래픽 그룹화
- 앱별로 패킷 그룹화.
- 도메인별로 패킷 그룹화.
- IP 주소별로 패킷 그룹화.
- 필요한 트래픽으로 바로 이동.
프로토콜 필터
- 일반 프로토콜에 대한 빠른 필터 사용.
- 필터를 텍스트 검색과 결합.
- 유용한 패킷에 빠르게 집중.
캡처 내보내기
- 전체, 필터링된 또는 선택된 패킷 내보내기.
- PCAP 또는 PCAPNG로 저장.
- 결과를 다른 패킷 도구에서 열기.
패킷 세부 정보
- Wireshark 수준의 프로토콜 트리 읽기.
- 필드 이름과 값 검사.
- 필드를 원시 바이트와 대조.
- 패킷 세부 정보 검색.
오픈 소스
- GPL-2.0-or-later 라이선스로 배포됩니다.
- 캡처 파이프라인을 검토하세요.
- 패킷 디코딩을 검토하세요.
- 네이티브 macOS 인터페이스를 검토하세요.
- 이슈를 보고하거나 풀 리퀘스트를 보내세요.

Proxyman 팀이 제작
- Proxyman과 Tiny Shield를 만든 팀이 제작했습니다.
- macOS용으로 제작되었습니다.
- 개인정보 보호와 명확한 네트워크 디버깅에 중점을 둡니다.

요구 사항
TCP Viewer를 실행하려면:
- Apple Silicon Mac.
- macOS 15 이상.
TCP Viewer를 빌드하려면:
- Xcode 16 이상.
- Git.
- CMake, Ninja, Meson, pkg-config, autotools.
brew install cmake ninja meson pkg-config autoconf automake libtool
설정
서브모듈과 함께 클론합니다. 그런 다음 고정된 Wireshark 의존성을 부트스트랩합니다.
git clone --recurse-submodules <repo-url>
cd TCPViewer
cp Config/TCPViewer.local.xcconfig.example Config/TCPViewer.local.xcconfig
./scripts/bootstrap-wireshark.sh
이미 서브모듈 없이 클론하셨나요?
git submodule update --init --recursive
./scripts/bootstrap-wireshark.sh
부트스트랩 스크립트:
- 먼저
scripts/bootstrap-wireshark-deps.sh를 실행합니다. - 소스에서 Wireshark의 런타임 라이브러리를 빌드합니다.
- 해당 라이브러리를
Vendor/.install/wireshark-deps에 기록합니다. - macOS 15를 배포 대상으로 사용합니다.
- 빌드 도구에만 Homebrew를 사용합니다.
- Homebrew bottle dylib을 릴리스에 절대 복사하지 않습니다.
로컬 서명, appcast, Sparkle, Sentry 및 릴리스 값은 Git 외부에 보관하세요. Config/TCPViewer.local.xcconfig, .env, 환경 변수 또는 Keychain 기반 도구를 사용하세요.
실행
Xcode에서:
TCPViewer.xcodeproj를 엽니다.TCPViewer스킴을 선택합니다.My Mac을 선택합니다.- Run을 누릅니다.
명령줄 빌드:
xcodebuild -project TCPViewer.xcodeproj -scheme TCPViewer build
Xcode가 서명을 요청하면 TCPViewer와 PcapPlusPlusCore에 대해 개발 팀을 선택하십시오.
Packet Details Diff는 Microsoft의 오픈 소스 Monaco 편집기를 로컬에 번들로 포함한 소규모 빌드를 사용합니다. 앱을 빌드하거나 실행하는 데 비공개 MonacoEditor Swift 패키지, Node.js 또는 CDN이 필요하지 않습니다. diff 통합을 변경할 때 체크인된 웹 자산을 다시 빌드하려면 Vendor/MonacoDiff를 참조하십시오.
테스트
xcodebuild test \
-project TCPViewer.xcodeproj \
-scheme TCPViewer \
-destination 'platform=macOS'
릴리스
릴리스 스크립트는 다음을 수행할 수 있습니다:
- 앱을 빌드하고 공증합니다.
- Sparkle 업데이트에 서명합니다.
- 파일을 Cloudflare R2에 업로드합니다.
- 릴리스를 백엔드에 게시합니다.
최초 설정:
npm install
bundle install
gh auth login
.env.example에서 로컬 .env를 생성합니다. 필요한 릴리스 값을 추가합니다. 실제 시크릿은 절대 커밋하지 마십시오.
.env에서 주석에는 #을 사용합니다. sentry-cli는 // 주석을 허용하지 않습니다.
프로덕션 릴리스의 경우 ReleaseNote.json에 일치하는 항목을 추가합니다. 그런 다음 실행합니다:
npm run release
beta 또는 production 중 하나를 선택하라는 메시지가 표시되면 선택합니다.
프로덕션 릴리스는 또한 다음을 수행합니다:
- Sparkle appcast를 생성합니다.
v<version>태그를 푸시합니다.- GitHub 릴리스를 게시합니다.
최신 공개 프로덕션 릴리스에 대한 Homebrew Cask 풀 리퀘스트만 생성하려면 make build를 실행하고 Homebrew Cask PR from latest release를 선택합니다.
직접 명령을 실행할 수도 있습니다:
npm run release:homebrew
GitHub 릴리스 자산에 대해 공개 DMG를 검증하고, 브랜치를
ProxymanApp/homebrew-cask에 푸시하며, Homebrew/homebrew-cask에서
기여 풀 리퀘스트를 엽니다.
아티팩트는 다음 위치에 기록됩니다:
~/Desktop/tcpviewer-production/
라이선스
TCP Viewer는 GPL-2.0-or-later에 따라 라이선스가 부여됩니다. 이는 Wireshark 라이브러리 사용과 일치합니다.
- 전체 GPL 텍스트는
COPYING을 참조하십시오. - 타사 고지는
THIRD_PARTY_NOTICES.md를 참조하십시오. - 바이너리 릴리스 소스 조건은
SOURCE_CODE_OFFER.md를 참조하십시오.
감사의 말
Wireshark는 Wireshark Foundation의 상표입니다. TCP Viewer는 Wireshark Foundation과 제휴하거나 그로부터 보증받지 않았습니다.





