概述
java抓包--jpcap最新可运行实践步骤
- 基本配置
- 正确步骤
- 一、本地安装maven依赖
- 二、本地构建可运行jar包
- 三、centOS服务器配置步骤
- 额外一些想法
基本配置
- 开发配置:Mac M1,idea,jdk1.8
- 服务器配置:centOS7,jdk1.8,cpu架构Intel(不能是AMD)
- lscpu查看cpu信息
- jpcap版本:jpcap-0.01.16,下载地址:https://sourceforge.net/projects/jpcap/files/jpcap/
- jpcap官方github库:https://github.com/jpcap/jpcap
建议使用jpcap-0.01.16版本,去下载链接处直接下载tar.gz文件
正确步骤
注意:在Mac M1中jpcap比较难发挥作用,至少我暂时不知道怎么才能抓到包,网上对于jpcap的正确配置步骤也是非常少,所以写了此篇文章
一、本地安装maven依赖
- 新建maven项目
- maven依赖:https://mvnrepository.com/artifact/jpcap/jpcap/0.1.18-001
<!-- https://mvnrepository.com/artifact/jpcap/jpcap -->
<dependency>
<groupId>jpcap</groupId>
<artifactId>jpcap</artifactId>
<version>0.1.18-001</version>
</dependency>
- 在idea中下载maven依赖。这里下载maven依赖是因为想用里面的example进行验证jpcap功能是否生效
二、本地构建可运行jar包
- 把example5的代码复制到自己的项目代码里面
- maven的build参数需要指定主类,使得你的mvn package打好的包可以通过java -jar xxx.jar运行,在pom里面加上一下参数
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>3.0.2</version>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<mainClass>org.hwq.Example5test</mainClass> <!-- 你的主类名 -->
</manifest>
</archive>
</configuration>
</plugin>
- 把本地构建好的jar通过scp命令上传到服务器中,scp命令自行了解
- 下载tar.gz压缩包,地址:https://sourceforge.net/projects/jpcap/files/jpcap/,将压缩包上传到服务器
注意:这里不采用github中的源码进行编译,因为那个源码是2004年的东西,亲测编译有点问题,没办法生成关键的libjpcap.so链接库
三、centOS服务器配置步骤
- 通过yum配置好Java开发环境(jdk)和运行环境(jre)------java-1.8.0-openjdk-src.x86_64,java-1.8.0-openjdk-devel.x86_64
- 安装配置libpcap,注意与上面的libjpcap进行区分,配置步骤:https://www.cnblogs.com/wawahaha/p/3821486.html
- 将jpcap的tar.gz包进行解压,注意到./lib下面有个libjpcap.so文件,这里可能需要手动make(先尝试直接用这个libjcap.so文件),make如果报错按照报错信息去改c代码即可
- 将libjpcap.so移到$JAVA_HOME/jre/lib/amd64
- 将./jars/net.sourceforge.jpcap-0.01.16.jar移到$JAVA_HOME/jre/lib/ext
- 最后运行我们本地上传到服务器的jar包
额外一些想法
从底层抓包有一些好处:如果你要得到API调用相关的数据,抓包得到的数据可能是最全面
- Java用来做底层网络抓包实在不是一种明确的选择,网上相关的内容非常少,只能一步步摸索
- 如果要用Java,上面的步骤只是完成了一部分,你还需要考虑
- 到怎么把抓到的包保存成tcpdump那样的pcap文件;
- 这个可以看看jpcap的文档
- 以及怎么从pcap文件的字节流中解析成TCP/IP协议族的Java数据结构;
- Java有个库叫io.pkts可以参考参考
- 还有一种你也可以自己去一个一个字节去解析成相应的网络数据结构:http://formats.kaitai.io/ethernet_frame/
- 怎么变成http协议数据结构;
- Java有一个叫rawhttp的库,有大佬能将tcp报文的payload直接解析成http的结构:https://github.com/renatoathaydes/rawhttp,具体的maven依赖直接maven库找https://mvnrepository.com/
- 报文太长进行分包传输怎么处理?
- 这里我本来是想着用TCP的一些ack,seq,fin这些来判断的,但是http会复用TCP连接,所以可以根据http的一些特征来做:可以了解下Content-Length,Transfer-Encoding,Content-Encoding
- 对于http2.0的复用HTTP连接怎么处理
- 这个我也暂时没实现,但是看http2.0的特性,感觉可以通过栈结构进行处理http报文
- 怎么构造完整的http请求过程
- 这个就看自定义结构,请求可能分包,响应更是可能分包,依靠http-header的那三个字段可以研究下
- 到怎么把抓到的包保存成tcpdump那样的pcap文件;
最后
以上就是傲娇星月为你收集整理的Java抓包--jpcap最新可运行实践步骤基本配置正确步骤的全部内容,希望文章能够帮你解决Java抓包--jpcap最新可运行实践步骤基本配置正确步骤所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复