Chinaunix首页 | 论坛 | 博客
  • 博客访问: 600368
  • 博文数量: 90
  • 博客积分: 5111
  • 博客等级: 大校
  • 技术积分: 928
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-29 16:56
文章存档

2011年(15)

2010年(34)

2009年(19)

2008年(22)

我的朋友

分类: LINUX

2010-11-16 18:36:34


用法摘要:

★tcpdump指定接口抓包的话,可以直接拿tcpreplay回放;

★tcpdump -i any抓的包,需要用tcprewrite重写dlt格式:
#tcprewrite --dlt=enet -i dump_any.cap -o enet_h.cap
注:tcpdump -i any 抓的包的dlt格式是LINUX_SLL,在wireshark上看,多2个FF字节,ethernet头显示为“Linux cooked Capture”,包直接重放的话,会变成0xFFFF协议,而不是0x0800协议。tcprewrite可以转换dlt格式LINUX_SLL==>EN10MB

★tcpreplay默认是按照抓包的速度重放,指定-x(倍数) -p(pps) -M(mbps) -t(最快)参数后,改变重放的速度。

★2.x版本的tcpreplay可以直接修改包;
  3.x版本的tcpreplay如果需要修改报文,需要先用tcprewrite改,再用tcpreplay放。

★tcpreplay的选项顺序是必须把option写前面,把pcap_file(s)写最后的,否则参数会不生效,却没有报错信息。

★mac广播:将dmac改为ff:ff:ff:ff:ff:ff

★wireshark提取包:
先filter出想要提取的包,然后“另存为”,选择“displayed”,这样就可以将filter出的包另存为一个文件了。


★tcprewrite重写dlt格式DLT_LINUX_SLL==>enet时出现错误:"DLT_LINUX_SLL pcap's must contain only ethernet packets",解决patch:

Index: src/tcpedit/plugins/dlt_linuxsll/linuxsll.c
===================================================================
--- src/tcpedit/plugins/dlt_linuxsll/linuxsll.c (revision 2455)
+++ src/tcpedit/plugins/dlt_linuxsll/linuxsll.c (working copy)
@@ -197,9 +197,9 @@
     
     if (ntohs(linux_sll->type) == ARPHRD_ETHER) { /* ethernet */
         memcpy(&(ctx->srcaddr), linux_sll->address, ETHER_ADDR_LEN);
-    } else {
+/*    } else {
         tcpedit_seterr(ctx->tcpedit, "%s", "DLT_LINUX_SLL pcap's must contain only ethernet packets");
-        return TCPEDIT_ERROR;
+        return TCPEDIT_ERROR; */
     }
 
     return TCPEDIT_OK; /* success */
参考:maillist:



参考资料

tcpreplay官网:

Tcpreplay wiki的FAQ:

一个典型的使用方法:
用tcpreplay对网络程序进行压力测试

libpcap:

libnet-dev:(libnet后期叫libnet-dev)





阅读(11394) | 评论(0) | 转发(0) |
0

上一篇:Kernel panic 信息分析方法

下一篇:源代码

给主人留下些什么吧!~~