手把手教你用jpcap抓包

标签: 手把 jpcap | 发表时间:2014-09-05 17:37 | 作者:
出处:http://www.iteye.com

本文原创,转载请注明出处~

 

在工作中经常需要抓包进行分析,我们可以使用各种工具来抓包,比如常用的tcpdump和wireshark。但有时候我们想用程序来进行控制,比如把抓到的包存储到数据库中,以后可以进行查询等等。我在工作中用的是Java,那么就用它来做示范吧。

 

本教程在centos和ubuntu上测试通过。

 

1)安装libpcap库

先安装底层使用的库吧,我们用到了libpcap库,tcpdump也是用的这个库,所以先去http://www.tcpdump.org/#old-releases

下载源码进行编译安装,不需要用太新的库吧,因为jpcap挺老的。这里我选了1.1.1版本。

解压,configure,make,make install,完成了。

 

2)安装jpcap库

我们使用v0.01.16版本,下载为:

http://sourceforge.net/projects/jpcap/files/jpcap/v0.01.16/

我们下载的是源代码版本,虽然有rpm包提供,但却是32位版本的,我们的服务器是64位的,只能自己编译生成了。

 

解压后编译scripts/env_jpcap文件,配置编译过程中的环境变量,只需要改其中的两项:

 

# 你解压后的目录
export PROJECT_HOME=~/dev/sourceforge/jpcap
# 生成目录
export RELEASE_HOME=~/dev/releases
# 选填,指定你的JDK目录
#export JAVA_HOME=/usr/java/jdk1.3 ; export PATH=$JAVA_HOME/bin:$PATH

 

 

然后让配置生效

 

. ./scripts/env_jpcap

 

 

编译

make clean && make

 

哈哈,发现出错了:

 

g++ -Wall -O2 -I/usr/include/pcap -I/usr/local/jdk1.6.0_29/include -I/usr/local/jdk1.6.0_29/include/linux jpcap.c process.cpp -fPIC -shared -o libjpcap.so -lnsl /usr/lib/libpcap.a
g++: /usr/lib/libpcap.a: No such file or directory

 说是没有libpcap.a,我们刚才不是安装好了吗!!find一下发现原来在/usr/local/lib目录中。拷贝过去就好了:

 

sudo cp /usr/local/lib/libpcap.a /usr/lib

OK,继续。

 

恭喜,又报错了:

jpcap.c:678: error: lvalue required as left operand of assignment

因为这个版本的jpcap是2004年的,我们的机器的gcc版本是4.4.6,也许gcc的版本太新了吧。可以考虑安装多个版本的gcc,但这里直接把代码改改就好:

vi capture/jpcap.c

定位到678行,进行修改:

 

// for(;ifr < last; (char*)ifr += ifrSize) {
for(;ifr < last; ifr = (ifreq*)((char*)ifr + ifrSize)) {

 OK,继续。

 

 

没有报错,完成了,再执行:

make release

就可以在之前配置的RELEASE_HOME目录下发现编译好的文件了:

javadoc_net.sourceforge.jpcap-0.01.16.jar

net.sourceforge.jpcap-0.01.16.jar

 

解压后者,发现libjpcap.so也在里面,需要把这个库也安装到合适的地方,你可以把库放到下面代码打印的任意一个目录中:

 

System.out.println(System.getProperty("java.library.path"));

 

 

下面就开始写Java代码了,需要引入3个Jar包,分别是前面生成的net.sourceforge.jpcap-0.01.16.jar,还有之前下载的jpcap-0.01.16/thirdParty/jars目录下的包。

 

net.sourceforge.jpcap-0.01.16.jar中其实就包含了很多例子程序,如图所示:


 

例子就不写了,附上java doc文档地址:

http://jpcap.sourceforge.net/javadoc/index.html

 

使用过程需要注意2个地方:

1,必须使用root权限执行,因为要使网卡进入混杂模式必须要有root权限,不过不使用root会报这样的错误:

Exception in thread "main" net.sourceforge.jpcap.capture.CaptureDeviceNotFoundException: no suitable device found

 

2,如果你发现抓到的tcp的data的数据跟实际发送的数据少了一段,那么在代码中需要注意要这样使用:

Instead of pcap.open(device, true);
try pcap.open(device, 65535, true, 1000);

 原因参考:

http://stackoverflow.com/questions/17906635/get-full-tcp-packet-data-using-jpcap



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [手把 jpcap] 推荐:

手把手教你用jpcap抓包

- - ITeye博客
本文原创,转载请注明出处~. 在工作中经常需要抓包进行分析,我们可以使用各种工具来抓包,比如常用的tcpdump和wireshark. 但有时候我们想用程序来进行控制,比如把抓到的包存储到数据库中,以后可以进行查询等等. 我在工作中用的是Java,那么就用它来做示范吧. 本教程在centos和ubuntu上测试通过.

手把手教你使用GoAgent

- sky fire - iGFW
因为本人是文科生,本来就不适合写程序和脚本,因此AutoGoAgent出现了种种问题,而且GoAgent中自带的上传工具比AutoGoAgent还简单-_-. 如果您使用AutoGoAgent出现了问题,您可以跟着这篇文章做一遍. 在Google APP Engine中申请帐号、上传GoAgent服务器端.

手把手教你做文本挖掘

- - IT瘾-bigdata
文本挖掘指的是从文本数据中获取有价值的信息和知识,它是数据挖掘中的一种方法. 文本挖掘中最重要最基本的应用是实现文本的分类和聚类,前者是有监督的挖掘算法,后者是无监督的挖掘算法. 1)读取数据库或本地外部文本文件. 2.4)文字云检索哪些词切的不准确、哪些词没有意义,需要循环2.1、2.2和 2.3步骤.

手把手教你 Spark 性能调优

- - ImportNew
上周四接到反馈,集群部分 spark 任务执行很慢,且经常出错,参数改来改去怎么都无法优化其性能和解决频繁随机报错的问题. 看了下任务的历史运行情况,平均时间 3h 左右,而且极其不稳定,偶尔还会报错:. 在有限的计算下,job的运行时长和数据量大小正相关,在本例中,数据量大小基本稳定,可以排除是日志量级波动导致的问题:.

手把手教你伪装成超级黑客

- 月朗星稀 - 煎蛋
好莱坞那些美国大片里,哪个黑客不是噼里啪啦键盘上一阵乱打,然后屏幕上一行行代码一阵乱跳之后就入侵成功. 想不想也感受一下这种牛逼的感觉. 如果你的答案是“是”的话……你可以点开hackertyper.net玩一把. 打开之后界面上有几个选项,如果大家懒得研究的话,直接用默认值也可以,点下面的“Hack!”按钮稍等片刻就会到一个全黑的界面,这时你就可以在键盘上拼命乱打了.

海外购之Amazon亚马逊购物手把手教程

- yird - 什么值得买
本篇教程以Amazon亚马逊为例,一步一步手把手教你从注册账号到下单成功,希望本文能帮助初次进行海外购的网友安全的迈出第一步,“什么值得买”网站愿更多的网友能够享受到海外购的实惠和乐趣. 在浏览器的地址栏输入http://www.amazon.com. 恭喜你,到此你已经成功注册账号,迈出了海外购的第一步.

手把手教你如何成为X战警

- Jiang - 煎蛋
X战警里这样那样的超能力,大家是不是早就眼红了呢. 其实自己动手,丰衣足食,你也能够拥有. //“X战警超能力套装,只要998. 没错,不是99998,不是9998,是998. © ivanchaos for 煎蛋, 2011.

海外购之转运手把手教程

- Hming - 什么值得买
之前我们曾经发布过海外购之Amazon亚马逊购物手把手教程,这次什么值得买给大家带来的是转运手把手教程,以百通为例,供海外购新手参考. 1.在浏览器的地址栏输入http://www.buytong.com. 3.输入注册信息,注意带*号为必填. 5.登陆在左侧菜单中选择“我的百通网”并点击“账户信息”.

手把手教你写商业计划书

- 圣斌 - Tech2IPO
商业顾问、企业家、银行家、投资者都认为创业者应该有一份商业计划书. 一份商业计划书可以帮助拓展业务、做出决策并使你创业成功. 计划书不是千篇一律,不是每份计划书都需要相同的结构和要点,根据创业时期的不同,创业计划书也会有所不同. 在创业初期,一份简易版的商业计划书已经足够. 不过这份简易版的计划书要在公司的发展过程慢慢完善.

手把手教你分辨谁在刷榜

- - 互联网分析
这次给大家说说iOS上如何分辨刷榜. 其实写这个东西之前纠结了很久,估计会得罪不少业内兄弟和投资人,但是还是决定写一下,希望以我微薄之力,稍稍敲醒广大开发者,也给很多被刷榜骗到 的投资人提个醒. 刷榜就是毒品,刚吃的时候快感如潮,精力充沛,一刷榜,大家纷纷恭喜,你便觉得自己产品也牛了,说话也硬气了,再吃时,产生依赖,你的美 工不好好画了,心想反正画不好有刷榜,你的策划不好好写数值了,反正算不好有刷榜,你的运营不好好搞活动了,反正搞的再好也不如刷榜,你的市场同学都离职 了——有某大公司的前车之鉴,在你的市场部呆着除了学会刷榜还能干点什么.