tshark에서 화면에 출력할 형식을 지정하는 방법이다. 예를 들어 test.pcap 파일에 대해 작업을 할 때 아래와 같이 입력하면 각 패킷에 대하여 IP주소쌍 등 몇가지 정보를 확인할 수 있다.
tshark -r test.pcap
tshark의 GUI 버전인 와이어샤크(wireshark)에서 파일을 열었을 때 화면에 보이는 형식이 있듯이, tshark에도 기본 표시 형식이 있는데 이것을 바꾸는 것이다. 예를 들어 발신 IP주소, 수신 IP주소, 프로토콜, 패킷 길이 형식으로 출력하고 싶다면 아래와 같이 할 수 있다.
# 발신 IP주소(%us), 수신 IP주소(%ud), 프로토콜(%p), 패킷 길이(%L) 출력
tshark -o 'gui.column.format:"src","%us","dst","%ud","proto","%p","length","%L"' -r test.pcap
10.0.2.15 → 192.168.3.13 TCP 54
...
"%" 기호로 시작되는 항목이 표시할 값이다. 예를 들어 %p는 프로토콜 정보를 나타낸다. 위의 예시에서 "src", "dst" 등 컬럼 이름은 실제로 출력되진 않으므로 크게 의미는 없고 적당히 지정하면 되겠다.
표시할 수 있는 값들의 종류는 아래의 명령으로 확인할 수 있다.
tshark -G column-formats
위의 예시에서 발신 IP주소와 수신 IP주소 사이에 있는 화살표를 제거하고 각 항목을 공백으로 구분하고자 한다면 awk와 조합해서 아래와 같이 할 수도 있겠다.
tshark -o 'gui.column.format:"src","%us","dst","%ud","proto","%p","length","%L"' -r test.pcap | awk '{ print $1 " " $3 " " $4 " " $5 }'
10.0.2.15 192.168.3.13 TCP 54
...
이와는 별도로 패킷의 특정 정보(field)를 골라서 출력하는 방법도 있는데, 관련 내용은 이전 게시물을 참고하자. 여기로
awk를 활용하면 좀 더 복잡하지만 재미 있는 작업을 해 볼 수도 있다. 위의 예시에서 같은 IP주소쌍과 프로토콜 종류에 따른 패킷 길이의 합(즉, 통신량)을 구해보자. 이와 비슷한 방식의 awk 활용 예시는 여기에
우선 위와 같은 형식으로 출력하여 test.pcap.temp 파일에 저장한다.
tshark -o 'gui.column.format:"src","%us","dst","%ud","proto","%p","length","%L"' -r test.pcap > test.pcap.temp
test.pcap.temp 파일의 내용은 아래와 같을 것이다.
cat test.pcap.temp
10.0.2.15 192.168.3.13 TCP 54
...
이제 awk에서 "[발신 IP주소] [수신IP주소] [프로토콜]" 형식을 인덱스로 사용하는 배열을 만들어서(awk의 배열은 문자열도 인덱스로 사용할 수 있으므로) 같은 인덱스에 대해 패킷 길이값을 더한다. 그리고 맨 마지막에 그 값을 출력해 주면 되겠다.
cat test.pkt.txt | awk '{x[$1" "$2" "$3]+=$4} END {for (i in x) print i " " x[i]}'
10.0.2.15 192.168.3.13 TCP 162
...
'괜찮은_프리웨어' 카테고리의 다른 글
포디움 프리(Podium Free) - 무료 DAW (0) | 2023.11.06 |
---|---|
지파이(gephi) - 그래프 분석 프로그램 (0) | 2023.11.06 |
GPU-Z - VGA 정보 / 바이오스(BIOS) 백업 (0) | 2023.10.24 |
nircmd - 다양한 윈도우 작업을 바로가기로 만들기 (0) | 2023.10.23 |
f.lux - 눈을 편하게 해주는 화면 설정(색온도 자동 조절) (0) | 2023.10.20 |