当前位置: 首页 > news >正文

【南方科技大学】CS315 Computer Security 【Lab1 Packet Sniffing and Wireshark】

目录

  • Introduction
  • Background
    • TCP/IP Network Stack
      • Application Layer
      • Transport Layer
      • Internet Layer
      • Link Layer
      • Packet Sniffer
  • Getting Wireshark
  • Starting Wireshark
  • Capturing Packets
    • Test Run
  • Questions for the Lab

Introduction

实验的第一部分介绍数据包嗅探器 Wireshark。 Wireshark 是一个免费的开源网络协议分析器。它用于网络故障排除和通信协议分析。 Wireshark 实时捕获网络数据包并以人类可读的格式显示它们。它提供了许多高级功能,包括实时捕获和离线分析、三窗格数据包浏览器、分析着色规则。本文档使用Wireshark进行实验,内容包括Wireshark的安装、抓包和协议分析。
在这里插入图片描述

Background

TCP/IP Network Stack

在这里插入图片描述
在《计算机网络概论》课程中,对TCP/IP网络栈进行了介绍和研究。本背景部分简要解释了 TCP/IP 网络堆栈的概念,以帮助您更好地理解实验。 TCP/IP 是 Internet 服务最常用的网络模型。由于其最重要的协议传输控制协议 (TCP) 和互联网协议 (IP) 是该标准中定义的第一个网络协议,因此被命名为 TCP/IP。然而,它包含多个层,包括应用层、传输层、网络层和数据链路层。

Application Layer

应用层包括大多数应用程序用于提供用户服务的协议。应用层协议的示例有超文本传输​​协议 (HTTP)、安全外壳 (SSH)、文件传输协议 (FTP) 和简单邮件传输协议 (SMTP)。

Transport Layer

传输层建立进程到进程的连接,并提供独立于底层用户数据的端到端服务。为了实现进程间通信,协议引入了端口的概念。传输层协议的示例是传输控制协议(TCP)和用户数据报协议(UDP)。 TCP提供流量控制、连接建立和数据的可靠传输,而UDP是无连接传输模型。

Internet Layer

互联网层负责跨网络发送数据包。它有两个功能:1)使用IP寻址系统(IPv4和IPv6)进行主机识别; 2) 数据包从源到目的地的路由。互联网层协议的示例有互联网协议 (IP)、互联网控制消息协议 (ICMP) 和地址解析协议 (ARP)。

Link Layer

链路层定义了本地网络链路范围内的组网方式。它用于在同一链路上的两台主机之间移动数据包。链路层协议的一个常见示例是以太网。

Packet Sniffer

在这里插入图片描述

数据包嗅探器是观察计算机中网络数据包交换的基本工具。顾名思义,数据包嗅探器捕获(“嗅探”)您的计算机发送/接收的数据包;它通常还会存储和/或显示这些捕获的数据包中各种协议字段的内容。数据包嗅探器本身是被动的。它观察计算机上运行的应用程序和协议发送和接收的消息,但从不发送数据包本身。

图3显示了数据包嗅探器的结构。图 3 右侧是通常在计算机上运行的协议(在本例中为 Internet 协议)和应用程序(例如 Web 浏览器或 ftp 客户端)。图 3 中虚线矩形内所示的数据包嗅探器是计算机中常用软件的附加功能,由两部分组成。数据包捕获库接收从计算机发送或接收的每个链路层帧的副本。由更高层协议(例如 HTTP、FTP、TCP、UDP、DNS 或 IP)交换的消息最终都封装在链路层帧中,并通过以太网电缆等物理介质进行传输。在图1中,假设的物理介质是以太网,因此所有上层协议最终都封装在以太网帧中。因此,捕获所有链路层帧使您可以访问计算机中执行的所有协议和应用程序发送/接收的所有消息。

数据包嗅探器的第二个组件是数据包分析器,它显示协议消息中所有字段的内容。为此,数据包分析器必须“理解”协议交换的所有消息的结构。例如,假设我们有兴趣显示图 3 中 HTTP 协议交换的消息中的各个字段。数据包分析器了解以太网帧的格式,因此可以识别以太网帧内的 IP 数据报。它还了解 IP 数据报格式,以便能够提取 IP 数据报中的 TCP 段。最后,它了解 TCP 段结构,因此可以提取 TCP 段中包含的 HTTP 消息。最后,它理解 HTTP 协议,因此知道 HTTP 消息的第一个字节将包含字符串“GET”、“POST”或“HEAD”。

我们将在这些实验中使用 Wireshark 数据包嗅探器 [http://www.wireshark.org/],使我们能够显示协议栈不同级别的协议发送/接收的消息内容。 (从技术上讲,Wireshark 是一个数据包分析器,它使用计算机中的数据包捕获库)。 Wireshark 是一款免费的网络协议分析器,可在 Windows、Linux/Unix 和 Mac 计算机上运行。

Getting Wireshark

Kai Linux 已安装 Wireshark。您只需启动 Kali Linux VM 并在其中打开 Wireshark。 Wireshark 也可以从这里下载:https://www.wireshark.org/download.html
在这里插入图片描述

Starting Wireshark

当您运行Wireshark程序时,Wireshark图形用户界面将如图5所示。目前,该程序未捕获数据包。
在这里插入图片描述
然后,您需要选择一个接口。如果您在笔记本电脑上运行 Wireshark,则需要选择 WiFi 接口。如果您在桌面上,则需要选择正在使用的以太网接口。请注意,可能有多个接口。一般来说,您可以选择任何接口,但这并不意味着流量将流经该接口。这显示您的计算机与网络的网络接口(即物理连接)。附图6是从我的电脑上截取的。

在这里插入图片描述

选择接口后,单击“start”即可抓包,如图7所示。
在这里插入图片描述
Wireshark 界面有五个主要组件:

命令菜单是位于窗口顶部的标准下拉菜单。我们现在感兴趣的是“文件”和“捕获”菜单。文件菜单允许您保存捕获的数据包数据或打开包含先前捕获的数据包数据的文件,并退出 Wireshark 应用程序。捕获菜单允许您开始数据包捕获。

数据包列表窗口显示捕获的每个数据包的一行摘要,包括数据包编号(由 Wireshark 分配;这不是任何协议标头中包含的数据包编号)、捕获数据包的时间、数据包的来源数据包中包含的目标地址、协议类型和协议特定信息。通过单击列名称,可以根据任何这些类别对数据包列表进行排序。协议类型字段列出了发送或接收该数据包的最高级别协议,即该数据包的源或最终接收器的协议。

数据包标头详细信息窗口提供有关在数据包列表窗口中选择(突出显示)的数据包的详细信息。 (要在数据包列表窗口中选择数据包,请将光标放在数据包列表窗口中数据包的一行摘要上,然后单击鼠标左键。)。这些详细信息包括有关包含此数据包的以太网帧和 IP 数据报的信息。通过单击数据包详细信息窗口中以太网帧或 IP 数据报行左侧的向右或向下箭头,可以扩大或最小化显示的以太网和 IP 层详细信息量。如果数据包已通过 TCP 或 UDP 承载,则还将显示 TCP 或 UDP 详细信息,并且可以类似地展开或最小化。最后,还提供了有关发送或接收此数据包的最高级别协议的详细信息。

数据包内容窗口以 ASCII 和十六进制格式显示捕获帧的全部内容。

Wireshark 图形用户界面的顶部是数据包显示过滤器字段,可以在其中输入协议名称或其他信息,以便过滤数据包列表窗口中显示的信息(以及数据包标头和数据包头)。 - 内容窗口)。在下面的示例中,我们将使用数据包显示过滤器字段让 Wireshark 隐藏(不显示)除与 HTTP 消息对应的数据包之外的数据包。
在这里插入图片描述

Capturing Packets

下载并安装Wireshark后,您可以启动它并单击“接口列表”下的接口名称以开始在该接口上捕获数据包。例如,如果您想捕获无线网络上的流量,请单击您的无线接口。

Test Run

执行以下步骤:

  1. 启动Wireshark程序(选择接口并按开始抓包)。

  2. 启动您最喜欢的浏览器(Kali Linux 中的 ceweasel)。

  3. 在浏览器中,输入 www.wayne.edu 转至 Wayne State 主页。

  4. 浏览器显示 http://www.wayne.edu 页面后,通过在 Wireshark 捕获窗口中选择停止来停止 Wireshark 数据包捕获。这将导致 Wireshark 捕获窗口消失,并且主 Wireshark 窗口显示自开始数据包捕获以来捕获的所有数据包,请参见下图:
    在这里插入图片描述

  5. 颜色编码:您可能会看到以绿色、蓝色和黑色突出显示的数据包。 Wireshark 使用颜色来帮助您一目了然地识别流量类型。默认情况下,绿色是 TCP 流量,深蓝色是 DNS 流量,浅蓝色是 UDP 流量,黑色标识有问题的 TCP 数据包 — 例如,它们可能已无序传送。

  6. 您现在拥有实时数据包数据,其中包含您的计算机和其他网络实体之间交换的所有协议消息!但是,您会注意到 HTTP 消息并未清晰显示,因为数据包捕获中还包含许多其他数据包。尽管您执行的唯一操作是打开浏览器,但您的计算机中还有许多其他程序在后台通过网络进行通信。为了过滤我们想要关注的连接,我们必须使用 Wireshark 的过滤功能,在过滤字段中输入“http”,如下所示:
    在这里插入图片描述
    请注意,我们现在仅查看 HTTP 协议的数据包。然而,我们仍然没有想要关注的确切通信,因为使用 HTTP 作为过滤器的描述性不足以让我们找到与 http://www.wayne.edu 的连接。如果我们想捕获正确的数据包集,我们需要更加精确。

  7. 为了在Wireshark中进一步过滤数据包,我们需要使用更精确的过滤器。通过设置 http.hostsustech,我们将视图限制为以 www.wayne.edu 网站作为 http 主机的数据包。请注意,我们需要两个等号来执行匹配“”,而不仅仅是一个。请参阅下面的屏幕截图:
    在这里插入图片描述

  8. 现在,我们可以尝试另一个协议。我们以域名系统(DNS)协议为例。
    在这里插入图片描述

  9. 现在让我们尝试通过跟踪其中一个对话(也称为网络流)来找出这些数据包包含什么内容,选择其中一个数据包并按鼠标右键(如果您使用的是 Mac,请使用命令按钮并单击),您应该会看到类似于以下屏幕的内容:
    在这里插入图片描述
    单击“关注 UDP 流”,然后您将看到以下屏幕。
    在这里插入图片描述

  10. 如果我们关闭此窗口并将过滤器更改回“http.host==www.wayne.edu”,然后跟踪与该过滤器匹配的数据包列表中的数据包,我们应该得到类似于以下屏幕的内容。请注意,我们这次单击“Follow TCP Stream”。
    在这里插入图片描述
    在这里插入图片描述

Questions for the Lab

  1. 仔细阅读实验说明并完成上述所有任务。
  2. 如果某个数据包以黑色突出显示,这对该数据包意味着什么? 【在Wireshark中,黑色高亮的包通常表示该包有问题,例如它们可能已经乱序到达。】
  3. 列出所有传出http流量的过滤器命令是什么? 【用于列出所有出站HTTP流量的过滤器命令是 http.request.method == “GET” 或者更一般的 http。】
  4. 为什么DNS使用Follow UDP Stream,而HTTP使用Follow TCP Stream? 【DNS使用UDP作为其传输层协议,而HTTP通常使用TCP。因此,Wireshark中DNS流量跟踪使用“Follow UDP Stream”,而HTTP流量跟踪使用“Follow TCP Stream”,因为它们分别在UDP和TCP协议上运行。】
  5. 使用Wireshark捕获FTP密码。 Kali Linux VM 上安装了一个 FTP 服务器。您需要使用终端登录服务器并使用Wireshark捕获密码。 FTP 服务器的用户名是 【见校内文件】,密码是【见校内文件】。当 Wireshark 运行时,您将使用用户名和密码登录 FTP 服务器。请注意,FTP 服务器安装在本地主机上,请确保选择正确的接口进行捕获。你需要向我解释一下你是如何找到密码的以及密码包的屏幕截图。玩得开心!

相关文章:

【南方科技大学】CS315 Computer Security 【Lab1 Packet Sniffing and Wireshark】

目录 IntroductionBackgroundTCP/IP Network StackApplication LayerTransport LayerInternet LayerLink LayerPacket Sniffer Getting WiresharkStarting WiresharkCapturing PacketsTest Run Questions for the Lab Introduction 实验的第一部分介绍数据包嗅探器 Wireshark。…...

【人工智能/机器学习/机器人】数学基础-学习笔记

函数 奇偶性: 偶函数: f ( − x ) f ( x ) f(-x)f(x) f(−x)f(x)   y轴对称 f ( x ) x 2 f(x)x^2 f(x)x2     f ( − x ) ( − x ) 2 x 2 f ( x ) f(-x)(-x)^2x^2f(x) f(−x)(−x)2x2f(x) 奇函数: f ( − x ) − f ( x ) f(-…...

视频安防监控LntonAIServer安防管理平台抖动检测和过亮过暗检测

随着视频监控技术的发展,视频质量成为确保监控系统有效性的重要因素。LntonAIServer通过引入抖动检测与过亮过暗检测功能,进一步提升了视频监控系统的可靠性和用户体验。这些功能可以帮助及时发现并解决视频流中的质量问题,确保视频监控系统始…...

网络模型及协议介绍

一.OSI七层模型 OSI Open System Interconnect 开放系统互连模型 以前不同厂家所生产的网络设备的标准是不同的,所以为了统一生产规范就制定了OSI这个生产模型。 作用:降低网络进行数据通信复杂度 这个模型的作用第一降低数据通信的复杂度&#xff…...

手撕HashMap源码

终于通过不屑努力,把源码中的重要部分全都看完了,每一行代码都看明白了,还写了注释 import java.lang.reflect.ParameterizedType; import java.lang.reflect.Type; import java.util.*; import java.util.function.Consumer; import java.ut…...

OceanBase block_file与log过大 的问题

一、说明 block_file 是存放sstable的数据文件,由datafile_disk_percentage 参数与datafile_size参数决定,两个参数同时配置,以datafile_size为主。 datafile_disk_percentage 默认值是90 datafile_size 默认值是0M到正无穷 因为block_file 的…...

【Focal Loss 本质】

Focal Loss 示例 Focal Loss公式: 在后面的例子中,我们假定 y 1 的样本中,有两个预测值分别为(0.8, 0.4)。显然,0.8 很容易分类,0.4 很难分类。 可以看出,Focal Loss 降低了容易分类(prt 0…...

端口安全老化细节

我们都知道port-security aging-time命令用来配置端口安全动态MAC地址的老化时间,但是后面还可以加上类型: [SW1-GigabitEthernet0/0/1]port-security aging-time 5 type absolute Absolute time 绝对老化 inactivity Inactivity time相对老化 …...

【C++】—— string 模拟实现

【C】—— string模拟实现 0 前言1 string的底层结构2 默认成员函数的实现2.1 构造函数2.1.1 无参构造2.1.2 带参构造2.1.2 合并 2.2 析构函数2.3 拷贝构造函数2.3.1 传统写法2.3.2 现代写法 2.3 赋值重载2.3.1 传统写法2.3.2 现代写法2.3.3 传统写法与现代写法的优劣 3 size、…...

详解TensorRT的C++高性能部署以及C++部署Yolo实践

详解TensorRT的C高性能部署 一. ONNX1. ONNX的定位2. ONNX模型格式3. ONNX代码使用实例 二、TensorRT1 引言 三、C部署Yolo模型实例 一. ONNX 1. ONNX的定位 ONNX是一种中间文件格式,用于解决部署的硬件与不同的训练框架特定的模型格式的兼容性问题。 ONNX本身其…...

手机如何切换网络IP地址:‌方法详解与操作指南‌

在当今的数字化时代,‌网络IP地址作为设备在网络中的唯一标识,‌扮演着至关重要的角色。‌对于手机用户而言,‌了解如何切换网络IP地址不仅有助于提升网络体验,‌还能在一定程度上保护个人隐私。‌本文将详细介绍手机切换网络IP地…...

南通网站建设手机版网页

随着移动互联网的迅猛发展,越来越多的人通过手机浏览网页,进行在线购物、信息查询和社交互动。因此,建立一个适合移动端访问的网站已成为企业和个人不可忽视的重要任务。在南通,网站建设手机版网页的需求逐渐增加,如何…...

macos系统内置php文件列表 系统自带php卸载方法

在macos系统中, 自带已经安装了php, 根据不同的macos版本php的版本号可能不同, 我们可以通过 which php 命令来查看mac自带的默认php安装路径, 不过注意这个只是php的执行文件路径. 系统自带php文件列表 一下就是macos默认安装的php文件列表. macos 10.15内置PHP文件列表配置…...

微信小程序认证和备案

小程序备案的流程一般包括以下步骤‌: 准备备案所需材料‌:通常需要提供‌营业执照、法人的‌身份证、两个‌手机号和一个邮箱等资料。 ‌1 ‌登录‌微信公众平台‌:作为第一次开发微信小程序的服务商,需要通过微信公众平台申请…...

C++复习day05

类和对象 1. 面向对象和面向过程的区别是什么?(开放性问题) 1. **抽象级别**:- **面向对象**:以对象(数据和方法的集合)为中心,强调的是数据和行为的封装。- **面向过程**&#xf…...

python数值误差

最近在用fenics框架跑有限元代码,其中有一个部分是把在矩阵里定义的初始值,赋值到有限元空间里,这就涉及到了初始矩阵和有限元空间坐标的转化,部分代码如下 for i in range(len(dof_coordinates)):# x, y dof_coordinates[i…...

基于FPGA的OV5640摄像头图像采集

1.OV5640简介 OV5640是OV(OmniVision)公司推出的一款CMOS图像传感器,实际感光阵列为:2592 x 1944(即500w像素),该传感器内部集成了图像出炉的电路,包括自动曝光控制(AEC…...

CDN ❀ Http协议标准缓存字段梳理

文章目录 1. 背景介绍2. 测试环境搭建3. 缓存字段3.1 Expires3.2 Cache-Control3.3 协商缓存 1. 背景介绍 Http协议标准有RFC定义好的请求和响应头部字段用于进行缓存设置,本文主要进行介绍缓存功能相关的头部字段及其使用方法。在使用CDN功能是,协议标…...

浅谈NODE的NPM命令和合约测试开发工具HARDHAT

$ npm install yarn -g # 将模块yarn全局安装 $ npm install moduleName # 安装模块到项目目录下 默认跟加参数 --save 一样 会在package文件的dependencies节点写入依赖。 $ npm install -g moduleName # -g 的意思是将模块安装到全局,具体安装到磁盘哪个位置&…...

k8s-pod 实战六 (如何在不同的部署环境中调整startupprobe的参数?)

在不同的部署环境中(如开发、测试、生产环境),你可能希望对 startupProbe 的参数进行调整,以适应不同的需求和条件。以下是几种常见的方法和实践: 方法一:使用 Kustomize 1. 目录结构 假设你的项目目录结构如下: my-app/ ├── base/ │ └── deployment.yaml …...

生成xcframework

打包 XCFramework 的方法 XCFramework 是苹果推出的一种多平台二进制分发格式,可以包含多个架构和平台的代码。打包 XCFramework 通常用于分发库或框架。 使用 Xcode 命令行工具打包 通过 xcodebuild 命令可以打包 XCFramework。确保项目已经配置好需要支持的平台…...

postgresql|数据库|只读用户的创建和删除(备忘)

CREATE USER read_only WITH PASSWORD 密码 -- 连接到xxx数据库 \c xxx -- 授予对xxx数据库的只读权限 GRANT CONNECT ON DATABASE xxx TO read_only; GRANT USAGE ON SCHEMA public TO read_only; GRANT SELECT ON ALL TABLES IN SCHEMA public TO read_only; GRANT EXECUTE O…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!

5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)

升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求&#xff…...

鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南

1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...

Qemu arm操作系统开发环境

使用qemu虚拟arm硬件比较合适。 步骤如下: 安装qemu apt install qemu-system安装aarch64-none-elf-gcc 需要手动下载,下载地址:https://developer.arm.com/-/media/Files/downloads/gnu/13.2.rel1/binrel/arm-gnu-toolchain-13.2.rel1-x…...

从物理机到云原生:全面解析计算虚拟化技术的演进与应用

前言:我的虚拟化技术探索之旅 我最早接触"虚拟机"的概念是从Java开始的——JVM(Java Virtual Machine)让"一次编写,到处运行"成为可能。这个软件层面的虚拟化让我着迷,但直到后来接触VMware和Doc…...