2017-11-02 13 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

必ずしもすべてをコンパイルする必要はありませんが、1つのファイルをコンパイルするだけでは簡単ではありません。まず、システムの開発環境をセットアップする必要があります。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以下」です。 – pchaigno

1

Christopher Maynard氏によれば、editcapで一度に最大512パケットしか選択できません。 This thread on Wireshark mailing listにはもう少し詳しい情報があります。

editcapのソースを変更したくない場合は、バッチでパケットを選択できます。次のスクリプトは、10000の乱数を生成し、512のバッチでパケットを選択します。結果の.pcapファイルは、最後に1つの.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` 

それを使用するには:

スクリプトはeditcapのソースを変更した場合よりも実行に時間がかかります
$ ./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 
[...] 

。私はどれくらい測定していません。あなたが与えたパラメータで実行するには〜11秒かかりました。

関連する問題