2017-11-02 4 views
0

.pcap 파일에서 임의의 패킷 하위 집합을 가져 오려고합니다. 비합리적으로 시간이 오래 걸릴 것 쉘 루프를 사용.pcap 파일에서 임의의 패킷을 가져 오는 방법은 무엇입니까?

Out of room for packet selections 

:

large_number=150000 
smaller_number=10000 
selected_packet_numbers=$(shuf -i 0-"$large_number" -n "$smaller_number") 
editcap -r capture.pcap capture-selected.pcap $selected_packet_numbers 

그러나, editcap이 나에게 다음과 같은 오류를주고 이렇게하려면, 나는 다음과 같은 쉘 스크립트를 작성했습니다.

.pcap 파일에서 임의의 패킷 하위 집합을 선택하려면 어떻게해야합니까? 당신이 그 이상 패킷 선택을 원한다면 그 값이 엄격 미만 512입니다

답변

1

현재, 당신은 가능성이 editcap.c 소스 코드에 MAX_SELECTIONS의 값을 변경하고 직접 컴파일해야합니다, smaller_number을 감소해야합니다 .

+0

_only_'editcap.c'을 어떻게 컴파일 할 수 있습니까? 나는 한 줄을 바꾸기 위해 모든 것들을 컴파일하고 싶지 않다. 그렇다면 대답에'editcap.c' 만 컴파일하는 단계를 추가 할 수 있습니까? – Utku

+0

모든 것을 컴파일 할 필요는 없지만 하나의 파일을 컴파일하는 것만 큼 간단하지는 않습니다. 먼저 시스템의 개발 환경을 설정해야합니다 (https://www.wireshark.org/docs/wsdg_html_chunked/ 참조). 그러면 autotools 또는 cmake를 통해 컴파일해야합니다. autotools를 사용하는 경우 configure 스크립트를 실행 한 다음 editcap을 제외한 모든 것을 비활성화 할 수 있습니다. cmake를 사용하는 경우 다음 단계는 빌드 디렉토리에서 msbuild를 실행하는 것입니다. "msbuild/m/p : Configuration = RelWithDebInfo editcap.vcxproj" –

+0

@Christopher Maynard 내 테스트에서 512 개의 작업이 가능합니다. 512 길이). 그래서 "512 이하"입니다. – pchaigno

1

크리스토퍼 메이 나드 (Christopher Maynard)는 editcap을 사용하여 한 번에 최대 512 개의 패킷만을 선택할 수 있다고 설명했습니다. This thread on Wireshark mailing list에는 조금 더 많은 정보가 있습니다.

editcap의 소스를 변경하지 않으려면 일괄 적으로 패킷을 선택할 수 있습니다. 다음 스크립트는 10000 개의 난수를 생성 한 다음 512 개의 배치로 패킷을 선택합니다. 결과 .pcap 파일은 끝에 단일 .pcap 파일로 병합됩니다.

#!/bin/bash 
large_number=150000 
smaller_number=10000 
selected_pkt_numbers=$(shuf -i 0-"$large_number" -n "$smaller_number") 
for j in `seq 0 512 $smaller_number`; do 
    endrange=$((j+512)) 
    if [ "$endrange" -gt "$smaller_number" ]; then 
     endrange=$smaller_number 
    fi 
    # Selects numbers $j to $endrange from the generated random numbers: 
    echo "$j - $endrange" 
    pkt_numbers=$(echo $selected_pkt_numbers | awk -v start="$j" -v end="$endrange" '{ out=""; for (i=start+1; i<=end; i++) out=out" "$i; print out}') 
    editcap -r $1 $2-$j.pcap $pkt_numbers 
done 
mergecap -w $2.pcap `ls $2-*.pcap` 

이 기능을 사용하려면

$ ./pcap-random.sh input-file.pcap output-file 
0 - 512 
512 - 1024 
[...] 
9216 - 9728 
9728 - 10000 
$ 
$ 
$ capinfos output-file.pcap 
File name:   output-file.pcap 
File type:   Wireshark/... - pcapng 
File encapsulation: Ethernet 
File timestamp precision: microseconds (6) 
Packet size limit: file hdr: (not set) 
Packet size limit: inferred: 58 bytes 
Number of packets: 10 k 
[...] 

그 스크립트를보다 실행하는 데 더 많은 시간이 걸릴 것입니다 당신이 editcap의 소스를 수정하는 경우. 나는 얼마를 측정하지 않았다. 당신이 준 매개 변수로 ~ 11 초가 걸렸습니다.

관련 문제