栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java抓包--jpcap最新可运行实践步骤

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java抓包--jpcap最新可运行实践步骤

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

    jpcap
    jpcap
    0.1.18-001


    在idea中下载maven依赖。这里下载maven依赖是因为想用里面的example进行验证jpcap功能是否生效
二、本地构建可运行jar包
    把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/,将压缩包上传到服务器

注意:这里不采用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的那三个字段可以研究下
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/785788.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号