当前位置: 首页 > 编程日记 > 正文

2021年中国工业互联网安全大赛核能行业赛道writeup之usb流量分析

目录

一、USB协议

二、键盘流量

三、鼠标流量

四、writeup


附件题:usb流量分析

题目描述:

具体描述忘记了o(╯□╰)o

大概意思是有个U盘插到电脑上,然后经过一些操作导致该电脑重启了。找到这个过程中的flag。

附件下载:

2021-10-12T15_49_10.808949+00_00usb流量分析.zip-网络攻防文档类资源-CSDN下载CTF附件题——usb流量分析USB是UniversalSerialBus(通用串行总线)的缩更多下载资源、学习资料请访问CSDN下载频道.https://download.csdn.net/download/qpeity/33676446


一、USB协议

先引用一段对USB协议的解释

USB是 UniversalSerial Bus(通用串行总线)的缩写,是一个外部总线标准,用于规
范电脑与外部设备的连接和通讯,例如键盘、鼠标、打印机、磁盘或网络适配器等等。
通过对该接口流量的监听,我们可以得到键盘的击键记录、鼠标的移动轨迹、磁盘的
传输内容等一系列信息。


USB有三种方式:USB UART,USB HID,USB Memory


UART或者Universal Asynchronous Receiver/Transmitter。这种方式下,设备只是简单
的将USB用于接受和发射数据,除此之外就再没有其他通讯功能了。
HID是人性化的接口。这一类通讯适用于交互式,有这种功能的设备有:键盘,鼠标,
游戏手柄和数字显示设备。
USB Memory,或者说是数据存储。External HDD, thumb drive / flash drive,等都是
这一类的。

因此通过流量分析,特别是 USB HID 得到键盘击键记录、鼠标移动轨迹等信息来获得flag。

二、键盘流量

键盘流量的特点:

键盘数据包的数据长度一般为8个字节,击键信息集中在第3个字节,每次击键都会产生一个数据包。如果看到给出的数据包中的信息并且只有第3个字节不为00, 那么可以猜测是一个键盘流。

第三字节,键盘的对应关系,查看 10 Keyboard / Keypad Usage (0x07)https://www.usb.org/sites/default/files/documents/hut1_12v2.pdf

第一个字节,每个bit都代表一个控制按键,如果看到这个数据包中第一个字节是 20 或者 02,那么可以认为是按住了 Shift切换。比如,0200040000000000,就是 Left Shift + a,就是大写 A。

bit 7bit 6bit 5bit 4bit 3bit 2bit 1bit 0
Right GUIRight AltRight ShiftRight CtrlLeft GUILeft AltLeft ShiftLeft Ctrl

提取敲击键盘的记录,就可能得到flag


三、鼠标流量

鼠标流量
USB协议鼠标数据一般为四个字节


第一个字节, 代表按键。
当取0× 00时,代表没有按键
当取0× 01 时,代表按左键
当取0× 02时,代表当前按键为右键。


第二个字节,可看作为signed byte类型,其最高位为符号位。
当值为正时, 代表鼠标右移像素位;
值为负时, 代表鼠标左移像素位。


第三个字节, 代表垂直上下移动的偏移。
当值为正时, 代表鼠标上移像素位;
值为负时, 代表鼠标下移像素位。

提取鼠标轨迹,并用绘图工具画出来图像,即可能得到flag


四、writeup

附件解压缩得到一个加密的 flag.docx 文件和 一个ez_usb_10月.pcapng 包。需要分析流量包得到密码,打开文件 flag.docx 就能拿到flag了。

wireshark 打开 ez_usb_10月.pcapng 包,筛选 usb.src == "1.12.1" and usb.dst == "host",发现每个发送给host的数据包,都是8个字节,且第3个字节不是00,认定是敲击键盘。

把所有第三个字节提取出来

14, 1a, 08, 15, 17, 28, 1e, 1f, 20, 04, 16, 07, 28, 21, 22, 23

再对照键盘的对应关系就得到密码 qwert123asd456。

q,w,e,r,t,return,1,2,3,a,s,d,return,4,5,6

用密码打开flag.docx就得到 ——  flag{keyboard_Usb_yyds}

提取的办法也可以用 kali 里的工具 tshark。

  • -r 输入文件
  • -T 设置解码结果输出的格式, 默认为text
  • -e 如果 -T fields选项指定, -e用来指定输出哪些字段,这里就输出 HID 部分
 tshark -r ez_usb.pcapng -T fields -e usbhid.data | sed '/^\s*$/d' > keyboard.txt

相关文章:

BOS项目 第2天(BaseDao、BaseAction、用户登录、自定义strust登录拦截器)

BOS项目 第2天 今天内容安排: 1、根据提供的pdm文件生成sql 2、持久层和表现层设计---BaseDao、BaseAction 3、实现用户登录功能 4、jQuery EasyUI 消息提示控件 5、jQuery EasyUI menubutton菜单按钮 6、自定义struts2拦截器,实现用户未登录自动跳转到…

服务器 主动 推送 客户端浏览器 消息***

前言 通常情况下,无论是web浏览器还是移动app,我们与服务器之间的交互都是主动的,客户端向服务器端发出请求,然后服务器端返回数据给客户端,客户端浏览器再将信息呈现,客户端与服务端对应的模式是: 客户端请…

数据库表(字段类型、约束、截断表、修改表字段、重命名表)

字段类型: 在这里只列举一些常用的字段类型: 整数类型:int(Integer):普通大小的整数 小数类型: float(m,d):单精度浮点数,m表示数字长度,d表示小数位数,例如float(5,2)最大值999.99double(m,d…

(转载)动态SLAM系统:VDO-SLAM!

动态SLAM系统:VDO-SLAM!这篇博客是转载 计算机视觉life 公众号中的文章。这篇文章是对VDO-SLAM论文的全文翻译,是 !!真人工翻译!!不是机器翻译,我看了之后觉得挺好,所以分…

2021年中国工业互联网安全大赛核能行业赛道writeup之入门的黑客

附件题:入门的黑客 题目描述: 在某次工控攻防演练中,防守方使用蜜罐捕捉到了某黑客在入侵时留下的恶意程序样本,现在要对该黑客进行画像,需要从该恶意程序中分析出反连时的IP和端口信息,看看聪明的你能否能…

一种视觉惯性+激光传感器的SLAM系统

一种视觉惯性激光传感器的SLAM系统这篇博客论文摘要一些假设和标注系统总览VI 里程计扫描匹配(scan matching)优化提高系统鲁棒性的措施闭环检测和临近检测全局位姿图优化总结这篇博客 这篇论文“Robust High Accuracy Visual-Inertial-Laser SLAM Syste…

抽象类和接口的联系与区别

抽象类和接口联系与区别 关键字: 抽象类与接口的区别 abstract class和interface是Java语言中对于抽象类定义进行支持的两种机制,正是由于这两种机制的存在,才赋予了Java强大的面向对象能力。 abstract class和interface之间在对于抽象类定义的支持方面具…

P1132 数字生成游戏

题目描述 小明完成了这样一个数字生成游戏,对于一个不包含00的数字ss来说,有以下33种生成新的数的规则: 将ss的任意两位对换生成新的数字,例如143143可以生成314,413,134314,413,134;将ss的任意一位删除生成新的数字&a…

MySQL02-升级

MySQL 版本号由三个数字和可选后缀组成,形式 mysql-x.y.z-suffix。比如 mysql-5.7.21 或者 mysql-5.7.34。 x(5)这位是大版本y(7)这位是小版本,大版本小版本组合成 5.7 就是一个发行版最后一位是bugfix release版本,从1逐渐增加,…

Kinect V1读取图像数据(For Windows)

Kinect V1读取图像数据(For Windows)这篇博客Kinect V1介绍数据读取的基本流程运行代码和注释结尾这篇博客 刚好有一台现成的Kinect V1相机,所以就拿过来学习一下它的数据读取方式和编程方法,毕竟它还能用于跑RGBD-SLAM。Kinect V…

1.IocDI和Spring

1.面向对象回顾和案例 面向对象程序设计:1 2 3 4 案例分析: 需求分析: 报表功能: 报表服务类,检索数据,并生成图标 报表生成器类,生成不同格式的报表文件,例如PDF格式、Html…

MySQL之模糊查询

先在MySQL数据库里创建一个表,并添加几条数据: create table student(id char(36) primary key,name varchar(8) not null,age int(3) default 0,mobile char(11),address varchar(150) ) insert into student values (9b4435ec-372c-456a-b287-e3c5aa…

rsync工具

rsync工具一、介绍1、可以实现 本地数据 《----------》 远程数据/本地数据 的传输2、两种通信方式(man rsync)(1)remote shell(一个冒号:),通过sshd协议传输(2&#xf…

2021年中国工业互联网安全大赛核能行业赛道writeup之日志分析

附件题:日志分析 题目描述: 核电站新来的运维小王粗心把一个办公网地址映射到外网,遭到大量攻击,你能从日志当中找到有效信息吗。 附件下载: 2021-10-12T15_37_51.61064600_00rizhifenxi.rar-网络攻防文档类资源-CSD…

【POJ1509】Glass Beads 【后缀自动机】

题意 给出一个字符串,求它的最小表示法。 分析 这个题当然可以用最小表示法做啦!但是我是为了学后缀自动机鸭! 我们把这个字符串长度乘二,然后建SAM,然后在SAM上每次跑最小的那个字母,找出长度为n的时候就停…

order by总结

先在MySQL数据库里建一个表,并添加几条数据: create table student(id char(36) primary key,name varchar(8) not null,age int(3) default 0,mobile char(11),address varchar(150) ) insert into student values (9b4435ec-372c-456a-b287-e3c5aa23…

Gazebo构建小车模型并通过ROS控制

Gazebo构建小车模型并通过ROS控制介绍编写车子的URDF文件编写控制小车移动的插件(与ROS交互)结尾介绍 突然想试试Gazebo这款仿真软件,因为它可以让你在任何时候都有机器人玩。但Gazebo的机制也比较复杂,所以还是先学习一下如何搭一个简单的小车&#xff…

【杂项】SVN服务器的本地搭建和使用

转载于:https://www.cnblogs.com/haizhibin1989/p/6939025.html

编译vim-8.2并配置jedi-vim插件

目录 一、背景 二、编译vim-8.2 三、配置jedi-vim插件 3.1、安装插件vundle 3.2、用vundle安装jedi-vim插件 一、背景 CentOS 7.9上已经安装了anaconda,python3.7的虚拟环境webenv。现在编译安装vim-8.2,使之支持python3(yum装包是不支…

group by总结(还有having)

先在MySQL数据库里创建一个表,并添加几条数据用于测试: create table fruit(name varchar(4),address varchar(12),type_name varchar(6) )insert into fruit values (香蕉,广西,大香蕉); insert into fruit values (苹果,山东,红富士); insert into fr…

PHP数组基本的操作方法

1、数组操作的基本函数 数组的键和值:  array_values($arr);获得数组的值  array_keys($arr);获得数组的键名  array_flip($arr);数组中的值与键名互换(如果有重复前面的会被后面的覆盖)  in_array("apple",$arr);在数组中…

linux kafka进程挂了 自动重启

使用crontab,定时监控 kafka进程,发现挂了后重启。 shell脚本如下: #!/bin/sh source /etc/profile proc_dir"/data/kafka" # 程序目录 proc_name"kafka.Kafka" …

Towards Real-time Semantic RGB-D SLAM in Dynamic Environments(动态语义SLAM)

动态环境下的实时语义SLAM简介摘要系统流程实验结果总结简介 在ICRA 2021上看到这样一篇论文:Towards Real-time Semantic RGB-D SLAM in Dynamic Environments,发现它也是使用的语义网络基于深度图的多视图几何方法来去除图片中的动态对象的。这一方法和…

gpupdate /force 遇报错解决过程

windows server 2008 修改策略后&#xff0c;需要更新。在cmd中执行 gpupdate /force&#xff0c;遇到报错。报错内容为 The processing of Group Policy failed. Windows attempted to read the file \\<domain.name>\SysVol\<domain.name>\Policies\{xxxxxxxx-xx…

pytorch学习——torch.cat和torch.stack的区别

合并tensors torch.cat 沿着特定维数连接一系列张量。torch.stack 沿新维度连接一系列张量。 torch.cat 在给定维度中连接给定的 seq 个张量序列。 所有张量必须具有相同的形状&#xff08;连接维度除外&#xff09;或为空。 torch.cat(tensors, dim0, *, outNone) → Tens…

Docker将容器制作成镜像并提交到远程仓库

Docker将容器制作成镜像并提交到远程仓库 步骤如下 先在dockerhub上创建一个自己的用户https://hub.docker.com/。或者在阿里云也可以。 2. 然后先创建一个空的镜像名。 3. 在终端上登录。 4. 这里有一个容器ID为fe08a32503b1。想把它制作成镜像以备后期自己用。 5. 将容器制作…

关于子业之间相互取得元素或者方法

1.跳转是将页面name带过去 例子&#xff1a; url&#xff1a;"login.jsp?windowName"window.name; 传递参数到子页面 &#xff0c;使得子页面能够通过名字返回数据 2.获取跳转到页面 window.top.frames[0].frames["${param.windowName}"].document转载于:…

windows 2008 (非R2)使用批处理文件调整组策略过程记录

2021年12月8日&#xff0c;对windows server 2008 &#xff08;不是 windows server 2008 R2&#xff09; 调整组策略。其中有一部分&#xff0c;无法通过图形界面&#xff08;gpedit.msc&#xff09;进行&#xff0c;只能在cmd用命令行执行。执行时遇到如下报错。 猜想是由于中…

【Leetcode】 刷题之路1(python)

leetcode 刷题之路1&#xff08;python&#xff09; 看到有大佬总结了一些相关题目&#xff0c;想着先刷一类。 1.两数之和15.三数之和16.最接近的三数之和11.盛最多的水18.四数之和454.四数相加II 1. 两数之和给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你…

MySQL数据库中的内置函数

SQL函数分为单行函数和多行函数&#xff1a; 单行函数: 红色标注的为重点。 … … … …字符串函数: … … … … … … … … … … 1.length() 存储长度 … … … … … … … … … … 2.char_length() 字符个数 … … … … … … … … … … 3.concat()首尾相连 … ……