pplayer--linux数据包回放工具

【博客园原创】http://www.cnblogs.com/baiyan/archive/2013/05/10/pplayer.html

pplayer(packet player)是我写的一款小工具,支持主流协议,专门用来测试IPS和防火墙设备,经长时间验证,简单可靠,故发布。

程序的原理很简单,首先加载pcap包中的数据包,保存在内存中,然后在回放环境中回放数据包。

拓扑:

 

原理:

  防火墙的两个网卡和linux pc的两个网卡分别对接形成环路,pplayer程序运行在linux pc中。

  1,加载pcap文件中网路数据包,识别出数据包发送方向(client to server or server to client)

  2,修改数据包内容(源/目的ip地址,校验和)

  3,按顺序发送数据包,同时接收数据包

  4,打印log,提示发送和接收情况,回放完毕。

 

使用方法:

  pplayer -f filename [ -t time] | [-m] | [-v ipversion] | [-p portnum

可用参数:

  -f:  必选,参数是pcap文件名。

  -t:  可选,参数是等待接收一个已发送的数据报的时间;如不选默认30(微秒)。

  -m: 可选,理想情况下pcap包中只包含两个ip地址的数据包,但是如果存在第3方或3个以上ip地址,就形成了若干的回放关系。

    默认情况下,只选择数据包数量最多得一对ip进行回放。如需回放其他ip对的数据包,需要使用-m参数,会以ip对为顺序来回放数据包。

  -v: 可选,4或6, 回放IPV4/6数据包, 默认4. 

  -p: 可选,选择只回放指定端口的数据包,例如,指定回访HTTP包, -p 80。

  另外pplayer支持nat环境回放,使用方法见下面配置文件。

举例:

  1,./pplayer -f http.pcap(回放http.pcap的数据包)

  2, ./pplayer -f http.pcap -v 6 (回放http.pcap的数据包,数据包格式是ipv6)

  3,./pplayer -f http.pcap -v 6 -t 50 (回放http.pcap的数据包,数据包格式是ipv6, 每个数据包的等待接收时间设为50微秒)


配置文件:

  配置名是conf,和pplayer程序在同一目录下。

格式:
  device1:eth0
  device2:eth1
  device1ip:1.1.1.1
  device2ip:2.2.2.2
  device1nat:3.3.3.3
  device2nat:4.4.4.4
  fwmac1:00:0C:29:25:63:6E
  fwmac2:00:0C:29:25:63:78

注:冒号后面紧接内容,不能有空格或换行

  1.device1和device2表示linux pc的两个网卡

  2.device1ip和device2ip表示linux pc的两个网卡的ip地址

  3.device1nat和device2nat是用来支持nat环境回放的。

    例如:设备1的ip是1.1.1.1,设备1处于nat环境,转换后的ip是3.3.3.3;

    设备2的ip是2.2.2.2,设备2处于nat环境,转换后的ip是4.4.4.4;

    如果设备不处于nat环境之中,对应的nat配置项填0.0.0.0(ipv6的填::)

并发/批量回放:

  目前pplayer只支持一次回放一个IP对,一次只能回放一个pcap文件,不支持并发和批量回放这两种功能,如果需要可以shell脚本调用pplayer的方式实现

 

执行效果:

[root@localhost pplayer]# ./pplayer -f lo.pcap
| -------- Begin Replay lo.pcap --------- |
device1 name: eth2
device2 name: eth3
device1 ip: 4.4.4.128
device2 ip: 5.5.5.128
device1nat ip: 0.0.0.0
device2nat ip: 0.0.0.0
fwmac1: 00:0C:29:F0:0D:96
fwmac2: 00:0C:29:F0:0D:A0

Send pkt 1
Send pkt 2
---------------Recv pkt 1
---------------Recv pkt 2
Send pkt 3
---------------Recv pkt 3
Send pkt 4
---------------Recv pkt 4
Send pkt 5
---------------Recv pkt 5
Send pkt 6
Send pkt 7
---------------Recv pkt 6
---------------Recv pkt 7
Send pkt 8
Send pkt 9
---------------Recv pkt 8
---------------Recv pkt 9
Send pkt 10
---------------Recv pkt 10
lo.pcap: Sent->10 Recv->10

可用版本: 

redhat 9  32位     https://files.cnblogs.com/baiyan/pplayer_redhat9.zip

fedora15  32位    https://files.cnblogs.com/baiyan/pplayer_fedora15.zip

cenos5.5  32位    https://files.cnblogs.com/baiyan/pplayer_centos5.5.zip

posted @ 2013-05-10 21:31  bai yan  阅读(3086)  评论(0编辑  收藏  举报