基本配置正确步骤
一、本地安装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文件
一、本地安装maven依赖注意:在Mac M1中jpcap比较难发挥作用,至少我暂时不知道怎么才能抓到包,网上对于jpcap的正确配置步骤也是非常少,所以写了此篇文章
- 新建maven项目maven依赖:https://mvnrepository.com/artifact/jpcap/jpcap/0.1.18-001
jpcap jpcap 0.1.18-001
- 在idea中下载maven依赖。这里下载maven依赖是因为想用里面的example进行验证jpcap功能是否生效
- 把example5的代码复制到自己的项目代码里面maven的build参数需要指定主类,使得你的mvn package打好的包可以通过java -jar xxx.jar运行,在pom里面加上一下参数
maven-jar-plugin 3.0.2 true org.hwq.Example5test
- 把本地构建好的jar通过scp命令上传到服务器中,scp命令自行了解下载tar.gz压缩包,地址:https://sourceforge.net/projects/jpcap/files/jpcap/,将压缩包上传到服务器
三、centOS服务器配置步骤注意:这里不采用github中的源码进行编译,因为那个源码是2004年的东西,亲测编译有点问题,没办法生成关键的libjpcap.so链接库
- 通过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的文档
- Java有个库叫io.pkts可以参考参考还有一种你也可以自己去一个一个字节去解析成相应的网络数据结构:http://formats.kaitai.io/ethernet_frame/
- 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报文
- 这个就看自定义结构,请求可能分包,响应更是可能分包,依靠http-header的那三个字段可以研究下



