首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从.pcap文件中获取随机数据包?

如何从.pcap文件中获取随机数据包?
EN

Stack Overflow用户
提问于 2017-11-02 11:47:03
回答 2查看 372关注 0票数 0

我正在尝试从.pcap文件中获取数据包的随机子集。为此,我编写了以下shell脚本:

代码语言:javascript
复制
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给了我以下错误:

代码语言:javascript
复制
Out of room for packet selections

使用shell循环将花费不合理的长时间。

如何从.pcap文件中选择数据包的随机子集?

EN

回答 2

Stack Overflow用户

发布于 2017-11-03 09:41:04

目前,您需要减少smaller_number,使其值严格小于512。如果您想要更多的包选择,您可能必须在editcap.c源代码中更改MAX_SELECTIONS的值,并自己编译它。

票数 1
EN

Stack Overflow用户

发布于 2017-11-04 20:44:46

正如Christopher Maynard所解释的,使用editcap一次最多只能选择512个数据包。This thread on Wireshark mailing list提供了更多信息。

如果您不想更改editcap的源代码,您可以批量选择数据包。下面的脚本生成10000个随机数,然后分批选择512个数据包。最后,将生成的.pcap文件合并到单个.pcap文件中。

代码语言:javascript
复制
#!/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`

要使用它:

代码语言:javascript
复制
$ ./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秒才能执行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47067272

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档