Java抓包+分析网络数据包

  本程序基于java语言,需安装winpcap和配置Jpcap.jar库文件(需要的可以评论留下邮箱),成功实现了对本主机网卡接口的显示和网络数据包的抓取,并调用函数对IP数据报、运输层报文段、应用层数据等进行了分析,发现所捕获的数据包和对应的协议格式完全吻合,简直可以说是很棒了!源代码如下:

/*******************
* JpcapTip.java
*/
import jpcap.PacketReceiver;
import jpcap.JpcapCaptor;
import jpcap.packet.*;
import jpcap.NetworkInterface;
import jpcap.NetworkInterfaceAddress;
//import java.net.InetAddress;
//import java.net.UnknownHostException;
public class JpcapTip implements PacketReceiver {/** * 把byte转为字符串的bit */  public static String byteToBit(byte b) {  return ""  + (byte) ((b >> 7) & 0x1) + (byte) ((b >> 6) & 0x1)  + (byte) ((b >> 5) & 0x1) + (byte) ((b >> 4) & 0x1)  + (byte) ((b >> 3) & 0x1) + (byte) ((b >> 2) & 0x1)  + (byte) ((b >> 1) & 0x1) + (byte) ((b >> 0) & 0x1);  }public void receivePacket(Packet packet) {System.out.println("********************************************");byte[] l=packet.header;     int i=0;String str="";System.out.print("数据链路层帧 : ");for (i=0;i<l.length;i++) {byte m;m=l[i];System.out.print(byteToBit(m)+" ");}System.out.println(" ");int d=l.length;System.out.println("链路层帧长度 :"+(d*8)+"bit");/*分析源IP地址和目的IP地址*//*分析协议类型*/if(packet.getClass().equals(IPPacket.class)) {IPPacket ipPacket=(IPPacket)packet;byte[] iph=ipPacket.option;String iphstr=new String(iph);System.out.println(iphstr);}if(packet.getClass().equals(ARPPacket.class)){System.out.println("协议类型 :ARP协议");try {ARPPacket arpPacket = (ARPPacket)packet;System.out.println("源网卡MAC地址为 :"+arpPacket.getSenderHardwareAddress());System.out.println("源IP地址为 :"+arpPacket.getSenderProtocolAddress());System.out.println("目的网卡MAC地址为 :"+arpPacket.getTargetHardwareAddress());System.out.println("目的IP地址为 :"+arpPacket.getTargetProtocolAddress());} catch( Exception e ) {e.printStackTrace();} }else if(packet.getClass().equals(UDPPacket.class)){System.out.println("协议类型 :UDP协议");try {UDPPacket udpPacket = (UDPPacket)packet;System.out.println("源IP地址为 :"+udpPacket.src_ip);int tport = udpPacket.src_port;System.out.println("源端口为:"+tport);System.out.println("目的IP地址为 :"+udpPacket.dst_ip);int lport = udpPacket.dst_port;System.out.println("目的端口为:"+lport);} catch( Exception e ) {e.printStackTrace();} }elseif(packet.getClass().equals(TCPPacket.class)) {System.out.println("协议类型 :TCP协议");try {TCPPacket tcpPacket = (TCPPacket)packet;int tport = tcpPacket.src_port;System.out.println("源IP地址为 :"+tcpPacket.src_ip);System.out.println("源端口为:"+tport);System.out.println("目的IP地址为 :"+tcpPacket.dst_ip);int lport = tcpPacket.dst_port;System.out.println("目的端口为:"+lport);} catch( Exception e ) {e.printStackTrace();}}elseif(packet.getClass().equals(ICMPPacket.class))System.out.println("协议类型 :ICMP协议");elseSystem.out.println("协议类型 :GGP、EGP、JGP协议或OSPF协议或ISO的第4类运输协议TP4");
/*IP数据报文数据*/byte[] k=packet.data;   String str1="";System.out.print("数据 : ");for(int j=0;j<k.length;j++) {int m=0;m=k[j];m=m<<24;m=m>>>24;str1=str+Integer.toHexString(m);str1 = new String(k);str1=str1+k[j];System.out.print("     ***     "+k[j]);}System.out.println(str1);System.out.println("数据报类型 : "+packet.getClass());System.out.println("********************************************");
}public static void main(String[] args) throws Exception{//数组中每一NetworkInterface元素对象代表一个网络接口NetworkInterface[] devices = JpcapCaptor.getDeviceList();        //.getDeviceList();.int a=0;/*本地网络信息*/byte[] b=devices[3].mac_address; //网卡物理地址System.out.print("网卡MAC : ");   for (int j=0;j<b.length;j++){//byte变成int时,根据最高位进行填充,如1100 1100变成1111...1100 1100,即cc变成-52a=b[j];a=a<<24;a=a>>>24;if(a==b[5]) {System.out.print(Integer.toHexString(a));}else {System.out.print(Integer.toHexString(a)+"-");}}System.out.println();NetworkInterfaceAddress[] k=devices[3].addresses;for(int n=0;n<k.length;n++) {System.out.println("本机IP地址 : "+k[n].address);     //本机IP地址System.out.println("子网掩码   : "+k[n].subnet);      //子网掩码}System.out.println("网络连接类型 : "+devices[3].datalink_description);//}NetworkInterface deviceName = devices[3];/*将网卡设为混杂模式下用网络设备3,设置抓取数据包的最大长度2000字节,混杂模式选否,超时值1*/JpcapCaptor jpcap =JpcapCaptor.openDevice(deviceName, 2000, false, 1);           //openDevice(deviceName,1028,false,1);//调用loopPacket方法处理数据包,-1代表捕获的最大包数没有限制,jpcap.loopPacket(-1,new JpcapTip());}
}

  运行结果:



                      欢迎大家指正交流!@-@

Java抓包+分析网络数据包相关推荐

  1. Jpcap JAVA捕捉并分析网络数据包

    读书时候,曾经做过一个sniffer软件.主要的开发语言是JAVA.主要的作用有很多,但是我个人测试的效果估计要比臭名远扬的绿坝要好了.主要的设计不是用于控制人家上网,这个软件业做技术统计,主要是用来 ...

  2. 关于fi dd ler 手机抓包 网卡地址地址_利用无线路由器如何抓取手机网络数据包【详细介绍】...

    当用户运用手机访问网络时,手机在不断接受与发送数据包,而这些数据包中包含了大量的用户信息,包括各种账号信息.聊天信息.发送接收文件.邮件.浏览的网页等.虽然很多信息是加密传输的,但还是会有大量信息是明 ...

  3. wireshark抓取聊天网络数据包

    wireshark抓取聊天网络数据包 一.实验任务 二.实验步骤 三.总结 总结 一.实验任务 据包.在两台及两台以上的电脑(已知IPv4地址)上运行 "疯狂聊天室"程序,通过wi ...

  4. iOS小技能:截获分析网络数据包( tcpdump 、Wireshark的原理和基本使用 、使用Charles联调测试)

    文章目录 前言 I tcpdump 1.1 预备知识 1.2 截获分析网络数据包 1.3 tcpdump常用的一些命令参数 II Wireshark 2.1 原理 2.2 使用方法 2.3 封包详细信 ...

  5. Wireshark网络抓包之抓取聊天网络数据包

    一.Wireshark 1. Wireshark简介 Wireshark(前称Ethereal)是一个网络封包分析软件.网络封包分析软件的功能是截取网络封包,并尽可能显示出最为详细的网络封包资料.Wi ...

  6. wireshark抓包分析ping数据包

    目录 1.抓取数据包 2.ping request数据包解析 2.1 ICMP 2.2 传输层 2.3 以太帧 2.3 数据链路层 3. ping reply数据包解析 1.抓取数据包 先用管理员权限 ...

  7. python数据包分析_packet_analysis: 数据包分析工具

    功能 读取pcap包,打印详细的icmp/tcp/udp协议 读取pcap包或网络接口 1. 打印详细的tcp会话/udp报文数据,目前支持mysql/pgsql/smtp/ftp/redis/mon ...

  8. Wireshark数据包分析之数据包信息解读

    *此篇博客仅作为个人笔记和学习参考 数据包概况 Frame:物理层的数据帧概况; EthernetⅡ:数据链路层以太网帧头部信息; Internet Protocol Version 4:互联网层IP ...

  9. Mac下利用RVI抓取iPhone网络数据包分析

    一.Remote Virtual Interface 在iOS5中新引入了"远程虚拟接口(remote virtual interface ,RVI)"的特性,可以在Mac中建立一 ...

最新文章

  1. 春节互联网流量峰值破纪录 Gartner最新CDN报告将阿里云评为全球级
  2. 【C 语言】二级指针内存模型 ( 指针数组 | 二维数组 | 自定义二级指针 | 将 一、二 模型数据拷贝到 三 模型中 并 排序 )
  3. MyEclipse8 GA 下载地址 注册码 优化指南
  4. C#生成XSD规范,利用XmlSchema类
  5. java 转换int类型数值到对应的金额大写
  6. JWT认证不通过导致不能访问视图的解决方案
  7. 因“5毛钱”惹众怒的丰巢:我错了,下次还敢
  8. 实战react技术栈+express前后端博客项目(3)-- 后端路由、代理以及静态资源托管等配置说明...
  9. 局域网连接MYSQL8.0报错1251的解决记录
  10. 【模板】负环(spfa)
  11. python什么情况下要加eval_python 为什么说eval要慎用?使用eval 带来的潜在风险?什么情况下使用eval?...
  12. 高并发的大型网站架构设计
  13. c语言查表程序,C语言查表法问题
  14. JavaScript --函数 (实例结合)
  15. 【NetWorkX实例(4)】Football数据集
  16. 【五月集训】—— 汇聚星球,算法锤炼,集中一点,登峰造极
  17. 无锡设计培训——家装和工装的区别有哪些
  18. qs大学计算机专业排名,2018QS计算机专业排名深度解析,这些大学千万不要错过!...
  19. 【JAVA】7-22 龟兔赛跑
  20. SAP License:集团化企业多准则多报告的实现

热门文章

  1. RabbitMQ如何防止消息丢失及重复消费
  2. Netron展示pytorch模型结构
  3. 12.13 Daily Scrum
  4. 打造linux下bt、电驴、ftp一体服务器
  5. HFSS中弯曲的单极子天线的建模
  6. 贴片陶瓷天线原理 与 HFSS模型建立和仿真分析总结
  7. 20230123使AIO-3568J开发板在Android12下永不休眠
  8. MFC C++ 如何发送Postmessage
  9. bundled camera paths for videos stabilization 论文翻译 卷帘快门(Rolling Shutter)讲解
  10. Type3 PDF文档处理