网络嗅探与协议分析 验收作业

网络嗅探与协议分析 验收作业

任务详情

(1)根据教材参考代码,编写有个简单网络抓包工具。要求核心代码和运行结果截图1-2张。(3分)代码push到码云(1分)

(2)找一个网站或者搭建一个本地网站,登录网站,并嗅探,分析出账号和密码,结果截图1-2张。(3分)可以用邮箱、各类博客、云班课,只能分析自己的账号,严禁做各类攻击,否则后果自负。

实践过程

任务一

在网上找的JAVA语言编写的简易抓包工具,粗略读懂代码,添加了注释
功能介绍:
1.获取网络设备列表。

2.选择网卡并打开。

3.当捕获数据包时,可能需要设置过滤器。

4.捕获数据包或者发送数据包。

5.统计数据的流量
核心代码:

 // 获取网络接口列表
public static void getDevices() {
    	//getDeviceList()返回一个网络设备列表
        NetworkInterface[] devices = JpcapCaptor.getDeviceList();
        for (int i = 0; i < devices.length; i++) {
            //name:这个设备的名称;description:网卡是XXXX牌子XXXX型号之类的描述
            System.out.println(i + ": " + devices[i].name + "("
                    + devices[i].description + ")");
            //datalink_name 该网络设备所对应数据链路层的名称。具体来说,例如Ethernet10M、100M、1000M等等
            System.out.println(" datalink: " + devices[i].datalink_name + "("
                    + devices[i].datalink_description + ")");
            //输出网卡的MAC地址
            System.out.print(" MAC address:");
            for (byte b : devices[i].mac_address)
                System.out.print(Integer.toHexString(b & 0xff) + ":");
            	System.out.println();
            for (NetworkInterfaceAddress a : devices[i].addresses)
                System.out.println	(" address:" + a.address + " " + a.subnet
                        + " " + a.broadcast);
        }
// 使用逐个捕获方法, 从网络接口捕获数据包
public static void oneByOneReceiver(int index, int time) throws IOException {
        NetworkInterface[] devices = JpcapCaptor.getDeviceList();
        JpcapCaptor captor = JpcapCaptor.openDevice(devices[index], 65535,
                false, 20);
        //创建一个文件并向文本文件写入数据包数据,文件输入则是packets.txt(java.io.File)
        PrintWriter pw = new PrintWriter(new FileWriter(new File("packets.txt")));
        // 设置过滤器
        captor.setFilter("ip", true);
        int counter = 0;
        Packet packet;
        long startTime = System.currentTimeMillis();
        while (startTime + time * 60 * 10 >= System.currentTimeMillis()) {
            packet = captor.getPacket();//抓取数据包
            System.out.println(packet);
            //将数据包写入一个txt文档内
            if (packet != null) {
                String ips = packet.toString().split("\\s+")[1];
                pw.write(ips);
                pw.println();
                counter++;
            }
        }
        pw.close();
        CounterPackets cp = new CounterPackets();//自定义类
        cp.readPackets();//自定义方法
        cp.print();
        //输出捕获到的包数
        System.out.println("PacketNumbers:" + counter);
    }
//获取源地址和目的地址
public String[] getIps (String ips) {
        StringBuffer sb = new StringBuffer(ips);
        for (int i = 0; i < ips.length(); i++) {
            //对文本中的ip地址进行分离化
            if (ips.charAt(i) == '/' || ips.charAt(i) == '>' || ips.charAt(i) == '-') {
                sb.replace(i, i + 1, " ");
            }
        }
        ips = sb.toString().trim();
        return ips.split("\\s+");
    }
//将结果打印到控制台
public void print() {
        System.out.println("源地址" + "       " + "目的地址" + "     " );
        Iterator it = counter.keySet().iterator();
        while (it.hasNext()) {
            String index = (String)it.next();
            String[] ips = index.split("\\s+");
            String srcIp = String.format("%-6s", ips[0]);
            String dstIp = ips[1];
            int number = counter.get(index);
            System.out.println(srcIp + "        " + dstIp + "          " + number);
        }
    }

运行结果截图
将本机的所有网卡的相关信息输出,因为本机连接的网络是WLAN,本机IP地址是192.168.1.6,这里我们可以选择网卡号3,来抓取IP数据包


结果截图如图所示:

任务二

首先找一个简单(最好HTTP数据包是以明文传输)可登录的网站,这里我是选择我的电脑本地自建的简易网站,网站的搭建使用工具主要包括Mysql-front、PHPstudy(一个套件集成软件)、sublime。

网站的登录界面:

如图是PHPstudy界面,这里我只启动了Apache2.4.39服务和MySQL服务

数据库建表如图所示

有了以上这些准备工作,一个简单的网站就可以搭建起来,通过在网站界面内输入账号密码,将账号密码传输到MySQL数据库中,这里我代码里是用的HTTP中的POST请求上传至数据库。然后,我们就可以正式开始实验了。
打开wireshark,这里我们必须使用Npcaploopback adapter这个环回网卡,如果使用正常物理网卡,那我们从网页post到数据库中的HTTP数据包wireshark是不能捕获到的,因为此时数据包的传输不会经过物理网卡,但会经过环回网卡

现在开始捕获数据,同时我们在网页上输入账号和密码,点击登录

可以看到这时候我们已经捕获到数据

因为我们知道账号密码是在HTTP数据包中进行传输的,所以筛选出HTTP包,并且我们容易的找到了带有POST请求的HTTP数据包

查看HTML模块,最终,我们通过嗅探分析数据包找到了账号密码!

posted @ 2020-03-26 21:19  李磊20199131  阅读(217)  评论(0编辑  收藏  举报