• 信息安全实验四:Ip包监视程序实现


    一、实验目的及要求

    学生在熟悉网络数据通信原理以及TCP/IP协议结构原理的基础上,运用套接字编程实现的网络封包监视技术,有效地探测在网络上传输的数据包信息,通过对这些信息的分析利用是有助于网络安全维护的。要求:

     1.熟悉网络数据通信原理以及TCP/IP协议结构原理

    2.掌握Ip包发送和接收过程。

    3.在所学知识的基础上自己确定实验方案,画出流程图,独立编程,实现网络监听程序。

    4.对获取的数据包进行简单分析。

    二、实验内容

    将网卡的工作模式设置为混合模式。获取局域网内的某台(多台)主机的MAC地址,捕获到所有经过网卡的数据包,并可从中分析出协议、IP源地址、IP目标地址、TCP源端口号、TCP目标端口号以及数据包长度等信息。

    三、实验环境

    运行windows的PC机,具有JAVA、VC(windows)等语言编译环境。

     

    四、实验步骤及结果分析

    1. 下载安装WinPcap,WinPcap可以为应用程序提供访问网络底层的能力。它用于windows系统下的直接的网络编程。

    2. 下载Jpcap.jar包,用于抓包实验运行,jpcap实际上并非一个真正去实现对数据链路层的控制,而是一个中间件,JPCAP调用winpcap/libpcap,而给JAVA语言提供一个公共的接口,从而实现了平台无关性

    3. 根据Jpcap.jar包的相关类与方法进行实验编写

    绑定网络设备

    NetworkInterface[] devices = JpcapCaptor.getDeviceList();
    for (NetworkInterface n : devices) {
        System.
    out.println(n.name + "   |   " + n.description);
    }

    进行抓包

    int i = 0;
    
    while (i < 10) {
    
        Packet packet = jpcap.getPacket();
    
        if (packet instanceof IPPacket && ((IPPacket) packet).version == 4) {
    
            i++;
    
            IPPacket ip = (IPPacket) packet;//强转
    
    
    
            System.out.println("版本:IPv4");
    
            System.out.println("优先权:" + ip.priority);
    
            System.out.println("区分服务:最大的吞吐量: " + ip.t_flag);
    
            System.out.println("区分服务:最高的可靠性:" + ip.r_flag);
    
            System.out.println("长度:" + ip.length);
    
            System.out.println("标识:" + ip.ident);
    
            System.out.println("DF:Don't Fragment: " + ip.dont_frag);
    
            System.out.println("NF:Nore Fragment: " + ip.more_frag);
    
            System.out.println("片偏移:" + ip.offset);
    
            System.out.println("生存时间:" + ip.hop_limit);
    
    
    
            String protocol = "";
    
            switch (new Integer(ip.protocol)) {
    
                case 1:
    
                    protocol = "ICMP";
    
                    break;
    
                case 2:
    
                    protocol = "IGMP";
    
                    break;
    
                case 6:
    
                    protocol = "TCP";
    
                    break;
    
                case 8:
    
                    protocol = "EGP";
    
                    break;
    
                case 9:
    
                    protocol = "IGP";
    
                    break;
    
                case 17:
    
                    protocol = "UDP";
    
                    break;
    
                case 41:
    
                    protocol = "IPv6";
    
                    break;
    
                case 89:
    
                    protocol = "OSPF";
    
                    break;
    
                default:
    
                    break;
    
            }
    
            System.out.println("协议:" + protocol);
    
            System.out.println("IP " + ip.src_ip.getHostAddress());
    
            System.out.println("目的IP " + ip.dst_ip.getHostAddress());
    
            System.out.println("源主机名: " + ip.src_ip);
    
            System.out.println("目的主机名: " + ip.dst_ip);
    
            System.out.println("----------------------------------------------");
    
        }
    
    }

    4.实验结果

     

    实验总结:通过本次实验,我了解了网络数据通信原理,掌握了掌握Ip包发送和接收过程,并通过Jpcap.jar包调用winpacp实现访问网络底层的能力,在程序中引用jpcap类中的方法实现了对IP包的监视和分析

  • 相关阅读:
    从硬件缓存入门到并发编程三要素详解 Java中 volatile 、final 等关键字解析、单例模式案例
    阿里云全面降价,释放了什么信号?
    【摸鱼神器】UI库秒变低代码工具——表单篇(一)设计
    Intel汇编-Linux系统调用
    Go 语言快速开发入门(环境搭建)
    大规模 IoT 边缘容器集群管理的几种架构-2-HashiCorp 解决方案 Nomad
    网络小白入门篇
    Elasticsearch-head-master配置 (与es连接)
    手把手教你配置vscode的c++开发环境(wsl + 远程)
    kodi的IPTV直播源爬取
  • 原文地址:https://blog.csdn.net/m0_48958478/article/details/125509833