위의 pstree 결과로 티샤크가 데이터를 캡처하기 위해 덤프캡을 자식 프로세스로 생성하는 것을 볼 수 있다.
옵션 -D를 이용하면 시스템에서 이용 가능한 네트워크 인터페이스를 나열할 수 있고 -i를 이용하면 트래픽을 캡처할 리스닝 인터페이스를 지정할 수 있다. 티샤크는 수신된 패킷마다 기본 요약 정보를 출력한다.
네크워크 카드에 패킷이 도달하고, 수신 데이터는 커널에 정의된 메모리 블록으로 복사된다. 패킷 필터는 사용자가 지정한 패킷만 필터링해서 버퍼에 저장한다. 저장된 패킷은 사용자 공간에서 실행 중인 덤프캡으로 전송되며 덤프캡은 이 패킷을 libpcap 파일 형식으로 기록한다. 끝으로 티샤크는 덤프캡이 작성한 캡처 파일을 읽고 처리한다.
커널은 수신된 패킷을 반드시 커널 공간에서 사용자 공간으로 복사해야 한다는 사실을 알아두자. 이와 같은 컨텍스트 스위칭은 CPU 시간을 소모하므로 네트워크 카드를 통과하는 모든 데이터 흐름을 캡처하면 시스템 전체의 성능이 저하될 수 있다. 바로 이때문에 캡처 필터가 필요하다. 캡처 필터를 사용하면 커널 공간에서 불필요한 패킷은 제외시키고 사용자가 관심 있는 패킷만 허용함으로써 성능 저하를 최소화할 수 있다.
필터는 -f 옵션을 사용해서 지정할 수 있다.
캡처 필터를 티샤크의 핵심인 디스플레이(또는 리드) 필터와 혼동하면 안된다. 디스플레이 필터는 이미 캡처된 패킷을 필터링하는 데 사용된다. 이 필터를 사용하면 프로토콜의 각 필드를 디코딩 및 해석하는 디섹터의 활용도를 극대화할 수 있다.
디스플레이 필터는 -R 옵션으로 지정할 수 있다.
-V 옵션은 add output of packet tree(Packet Details)
grep 해서 필요한부분만 추출할수도 있다.
tshark의 리드필터(-R 옵션)로 지정할 수 있는 HTTP 프로토콜의 필드 목록을 확인하는 방법은 아래와 같다.
cf) http2 필드는 1.12.0버전부터 가능하다.
전체 IP 통신의 목록 구하기
위에서 사용된 옵션들
저장된 write.pcap 파일 읽기
허용된 포트(HTTP, HTTPS)를 제외한 포트로의 외부 연결 파악하기
-o 옵션을 통해서 티샤크의 옵션을 변경할 수 있다. -o " <name>:<value> ... override preference setting
-q : be more quiet on stdout (e.g. when using statistics)
-z <statistics> various statistics, see the man page for details
-r <infile> set the filename to read from (no stdin!)
-w <outfile|-> write packets to a pcap-format file named "outfile"
(or to the standard output for "-")
$ ./capinfos ~/tshark-log/write.pcap
File name: /home/yangbongsoo/tshark-log/temp.pcap
File type: Wireshark - pcapng
File encapsulation: Ethernet
Packet size limit: file hdr: (not set)
Number of packets: 467
File size: 817148 bytes
Data size: 801043 bytes
Capture duration: 15 seconds
Start time: Thu Jan 11 16:10:34 2018
End time: Thu Jan 11 16:10:49 2018
Data byte rate: 53034.10 bytes/sec
Data bit rate: 424272.82 bits/sec
Average packet size: 1715.30 bytes
Average packet rate: 30.92 packets/sec
SHA1: df7f85751dd2d56d8a1b64a28b93b30553df6a08
RIPEMD160: k37d0ccd2b20s81s6d9da4b44d3d168sc98s1aca
MD5: 1q908e9a36cn382l768s95w4k6c8w6kb
Strict time order: True