tshark

TShark는 Wireshark의 command-line network protocol analyzer다. 실시간 packet을 캡처하거나 capture file을 읽고, Wireshark dissector와 display filter를 이용해 protocol과 field를 분석한다.

Wireshark package에 TShark가 포함된다.

sudo apt update
sudo apt install wireshark

설치 과정에서 일반 사용자의 packet capture 허용 여부를 선택할 수 있다. 권한 정책을 확인한 뒤 최소 사용자만 capture group에 추가한다.

CLI 도구만 필요하면 Fedora의 wireshark-cli package를 설치한다.

sudo dnf install wireshark-cli

Wireshark GUI가 함께 필요하면 배포판의 wireshark package를 추가한다.

Homebrew의 wireshark formula는 GUI 없이 command-line utilities를 설치한다.

brew install wireshark

일반 사용자가 capture interface를 사용할 수 없으면 필요한 경우에만 별도 ChmodBPF package를 검토한다.

brew install --cask wireshark-chmodbpf

공식 Wireshark installer package를 winget으로 설치한다. TShark component가 설치 대상에 포함되어 있는지 installer selection을 확인한다.

winget install --exact --id WiresharkFoundation.Wireshark

새 terminal을 열고 설치 경로가 PATH에 포함되어 있는지 확인한다.

tshark --version
tshark -D
tshark -i eth0 -f 'tcp port 443'
tshark -r capture.pcapng -Y 'http.request'
tshark -i any -a duration:60 -w capture.pcapng
  • tshark [OPTIONS] [FILTER]
실시간 캡처에는 별도 권한이 필요할 수 있다. root로 장시간 실행하는 대신 OS별 capture group 또는 Wireshark가 제공하는 권한 분리 방식을 사용한다. capture file에는 암호, token, cookie, 개인 정보가 포함될 수 있으므로 접근 권한과 보관 기간을 제한한다.
  • -D: capture 가능한 interface 목록을 출력한다.
  • -i INTERFACE: live capture interface 또는 interface 번호를 지정한다.
  • -f CAPTURE_FILTER: pcap/BPF capture filter를 적용한다.
  • -Y DISPLAY_FILTER: Wireshark display filter를 적용한다.
  • -r INFILE: 저장된 capture file을 읽는다.
  • -w OUTFILE: raw packet을 capture file에 저장한다. 기본 형식은 pcapng다.
  • -c COUNT: 지정한 packet 수를 처리한 뒤 종료한다.
  • -a CONDITION: duration, filesize, files 등의 자동 종료 조건을 지정한다.
  • -b CONDITION: 여러 capture file을 사용하는 ring buffer 조건을 지정한다.
  • -V: 모든 protocol field의 상세 tree를 출력한다.
  • -O PROTOCOLS: 지정한 protocol만 상세 tree로 출력한다.
  • -T FORMAT: fields, json, ek, pdml, psml 등의 출력 형식을 지정한다.
  • -e FIELD: -T fields에서 출력할 field를 추가한다. 여러 번 사용할 수 있다.
  • -E FIELD_OPTION: header, separator, quote, occurrence 등 field 출력 형식을 조정한다.
  • -z STATISTIC: protocol hierarchy, conversations, endpoint, I/O 통계 등을 생성한다.
  • -q: 일반 packet 출력을 억제한다. -z 통계만 볼 때 유용하다.
  • -G REPORT_TYPE: protocol, fields 등 내부 glossary를 출력한다.

-f는 packet을 수집하기 전에 pcap/BPF filter를 적용한다. busy interface에서 불필요한 packet을 일찍 버리므로 live capture 부하와 file 크기를 줄이는 데 적합하다.

tshark -i eth0 -f 'host 192.0.2.10 and tcp port 443'

-Y는 Wireshark dissector가 해석한 protocol과 field를 기준으로 표시할 packet을 고른다. capture file 분석이나 세밀한 protocol 조건에 적합하다.

tshark -r capture.pcapng -Y 'http.request.method == "POST"'
tshark -r capture.pcapng -Y 'dns.flags.response == 0'
capture filter와 display filter는 서로 다른 언어다. live capture에서 -w로 raw packet을 저장할 때 display filter로 저장 대상을 거르는 방식은 지원되지 않는다. 저장 범위를 줄이려면 -f를 사용하거나 먼저 캡처한 뒤 -r, -Y, -w로 별도 file을 만든다.
tshark -D
tshark -i eth0 -f 'udp port 53' -a duration:60 -w dns.pcapng
tshark -i eth0 -c 100 -w sample.pcapng
tshark -r capture.pcapng
tshark -r capture.pcapng -Y 'tcp.analysis.retransmission'
tshark -r capture.pcapng -Y 'tls.handshake.type == 1'
tshark -r capture.pcapng -Y 'dns.qry.name' \
  -T fields \
  -E header=y \
  -E separator=, \
  -E quote=d \
  -e frame.time_epoch \
  -e ip.src \
  -e dns.qry.name

field 이름은 다음 명령과 공식 Display Filter Reference에서 확인한다.

tshark -G fields
tshark -r capture.pcapng -Y 'http.request' -T json > http-requests.json

-w는 raw capture file을 만들고 > redirect는 사람이 읽는 decoded output을 저장한다는 차이에 주의한다.

tshark -r capture.pcapng -q -z io,phs
tshark -r capture.pcapng -q -z conv,tcp
tshark -r capture.pcapng -q -z endpoints,ip
tshark -r capture.pcapng -q -z io,stat,1
tshark -i eth0 -f 'tcp port 443' \
  -b duration:300 \
  -b files:12 \
  -w tls-ring.pcapng
  • tshark -D로 interface를 확인한다.
  • Linux에서는 Wireshark package 설치 시 구성한 capture group과 현재 사용자의 group membership을 확인한다. group 변경 뒤에는 다시 login해야 할 수 있다.
  • macOS Homebrew CLI 설치에서는 BPF device 권한이 필요할 수 있다. 조직 정책을 확인한 뒤 wireshark-chmodbpf를 검토한다.
  • Windows에서는 Npcap 설치 상태와 service 실행 상태를 확인한다.
  • -f에는 pcap/BPF capture filter, -Y에는 Wireshark display filter를 사용했는지 확인한다.
  • 공백이나 shell 특수 문자가 있는 filter는 작은따옴표로 묶는다. PowerShell에서는 quoting 규칙이 다를 수 있다.
  • display field는 tshark -G fields 또는 Display Filter Reference에서 현재 버전의 이름을 확인한다.

busy interface에서는 복잡한 live display filter보다 capture filter로 입력량을 먼저 줄인다. capture duration, file rotation, buffer 크기와 storage 처리량을 함께 점검한다.

  • TShark와 Wireshark는 같은 dissector와 display filter engine을 사용한다.
  • 기본 output capture 형식은 pcapng이며, 읽기·쓰기 형식과 compression 지원은 build option에 따라 달라질 수 있다.
  • 사용 가능한 interface와 privilege 분리 방식은 libpcap/Npcap 및 OS package 구성에 따라 다르다.
  • script에서 field output을 소비할 때는 -T fields-E option을 명시해 header, separator, quoting을 고정한다.

tshark --help

  • codex:: 2026-08-11 Wireshark CLI 설치, capture/display filter, PCAP 입출력, field 추출, 통계, ring buffer 및 권한 문제 해결 문서를 작성했다.
  • /home/u613600155/domains/cli.zerotymer.net/public_html/data/pages/linux/cli/tshark/ko.txt
  • 마지막으로 수정됨: 2026/08/11 03:45
  • (바깥 편집)