本文首发自 http://testssd.com/?/article/33 欢迎大家支持

Bushound是一款使用起来非常方便快捷的总线数据抓取工具,在我们的测试过成当中,经常会使用它来抓取数据及传输状态用于分析。在这里以usb数据传输为例,大概介绍一下Bushound的使用方法,以及一些典型异常情况的分析。

一、BusHound界面介绍

打开BusHound之后,显示的是这样的界面。当前所显示的界面为顶端界面选项当中的Capture窗口,这个窗口用于显示所有抓取到的数据。点击Stop时会停止数据抓取,这时点击Run,会清空当前数据并开始抓取数据。

这些是想要显示的内容,这些内容可以在Settings窗口下面的Columns to Display设置

选项当中有对应显示内容的解释,在这里就不一个个细说了。

在数据抓取时,不管有没有勾选相应内容,Bushound都会抓取所有Columns to Display当中选项的数据,只是不显示出来而已。如果在抓取完之后想要看相关数据的话,只需要将对应的选项勾选上即可。

在Settings当中可以设置需要显示的内容。

这些选项内容如果在抓取数据的时候没有勾选,那么Bushound是不会抓取的。

在Limits栏中可以设置预留给Bushond抓取数据的缓存空间

Capture Capacity表示缓存的总数据量,Max Record Length表示抓取一个数据包时缓存的数据的量(一条命令\一个状态\一次数据传输,都算一个数据包)。这个在需要的时候可以尽可能设置的大一些,这样抓取的数据比较全面,当数据缓存满了之后,若没有勾选下面的自动停止,则会清除掉所有数据,自动重新开始抓取。

在这个栏目里可以选择什么时候需要自动停止bushound的数据抓取。

Save窗口就是常见的数据保存

Device窗口,用于选择需要抓取的设备及协议层。当勾选到对应的设备那一项时,显示的是经过解析的SCSI协议,设备再上一层是原始的SCSI协议数据。

二、基本协议解析介绍

抓取最简单的的命令时,只需要像上图一样勾选相应设备前面的选项即可,这时抓到的数据主要由 CMD OUT IN组成

(这里我将Max Record length设为16)

CMD表示发送的命令,IN 和 OUT表示数据的读取和发送,关于CMD的含义,这里给出一个列表

这分列表从参考文档SCSI_Commands_Reference_Manual截取出来的,详细相关命令信息也可以从里面查找。

当在Device窗口中勾选了设备的上一层选项时,这时抓到的是SCSI的原始数据

可以看到数据明显多了很多,而且眼花缭乱..

我们一点点来解析一下

首先看第一行

这个就是2Ah写命令的原型,Byte[0:3]为小端数据 0x43425355,这个标志在叫做CBW,表示一次命令传输的开始,由Host下发。

Byte[4:7]为CBW Tag,用于给这一个数据包做一个标识。

Byte[8:11]表示命令之后将要传输的数据长度,这里为0x1000即时4096Bytes。

Byte[12]当中的Bit[7]用于表示传输方向,1为读取,0为发送(其他的暂时还没去看)。

Byte[13]表示操作的设备的Lun号,一个设备可以被分为多个分区,即多个Lun,这里用于表示命令是发送给设备的哪一个Lun的。

从Byte[15]开始,就是之前解析过后的CMD数据了,这里大概说一下重要位置的含义,从这里开始数据为大端数据

Byte[0] OpCode

Byte[1] SubOpCode

Byte[2:5] Address 以Sector为单位

Byte[7:8] Length 以Sector为单位

需要注意的是,除了OpCode以外,其他位置的含义并不是固定的,只是在进行2Ah和28h数据传输过程中,这是比较典型的含义。

所以现在重新看下这一行命令,其用途就是,一条2A的写命令,地址为0x000057A0,长度为8 Sector

下一条就是这个2Ah写命令的数据传输,下发了4096 Bytes数据

我这里为了看起来方便,将抓取长度设成32bytes

再下一条

这是一个由Device发送给Host的数据,开头标识为0x53425355,叫做CSW,用于标志一条SCSI命令传输结束,Byte[4:7]为对应的CBW的Tag。

到此为止,一条SCSI命令就算分析完了,后面的依此类推即可。

后面抽时间再介绍异常状态分析吧

三、SCSI命令发送

打开Devices窗口,双击要发送命令的设备

这时会弹出发送命令控制窗

我一般不用USB来发送命令,点击标签栏的SCSI / ATAPI

这里就可以按照自己想要发送的格式来发送命令,也可以发送自己定制的命令。

这里填写要发送的命令的相关信息,就是Opcode,SubOpCode那些,这里的话填的是一个28h读命令,地址为0x00000020,长度为0x20 Sector。

上面的填好之后,要在DataLength那里填写要进行传输的数据量,0x20 Sector即为16384 Bytes,所以填写16384,因为是读数据,所以方向选择Data In

Timeout表示当超过该设定时间,命令还没有完成的话,则视为超时。从这里可以看出SCSI协议实际上并没有规定超时时间,而是人为设定的。

都填好了之后点击run,就会发送出命令了,左下角会显示出发送的命令的状态。

Bushound数据分析及使用指南相关推荐

  1. 极简数据分析实操指南(下)

    科学方法必须包括:问题陈述.产生假设.收集数据.分析数据,然后获取结果并采取行动.......当你使用科学方法做事情时,你会更快取得成功. -- Bob Hayes 博士,百老汇商业总裁 前面我们已经 ...

  2. 极简数据分析实操指南(上)

    "用数据做事情的能力,将在你的工作和生活的方方面面发挥意想不到的作用." 在工作中,我们会遇到各种各样的问题.如: 如果你是一家 SaaS 公司的营销经理,产品副总裁看到注册数量突 ...

  3. 学习大数据分析python编程指南

    每个人都喜欢Python.如果您打算开始从事数据科学事业,我们可以肯定Python在您心中已经占有特殊的位置.它直观且易于在任何平台上运行,并且具有大量令人惊叹的库和工具.与其他编程语言相比,Pyth ...

  4. 零基础学python数据分析_Python学习指南:使用Python学习数据分析

    如今,在大数据行业中Python和数据分析可能是最常听到的两个词,在当今蓬勃发展的科技领域,精通这两项技术可以带来无限的可能.近年来,我们看到Python教育在大数据领域突飞猛进. 因此,这里我们提供 ...

  5. 大数据分析职业规划指南

    您是否正在开始数据科学职业?仅考虑第一步会令您迷茫和困惑,特别是如果您缺乏该领域的先前经验. 在要探索的数据科学职业如此之多的情况下,您可能会发现自己想知道哪种方法最适合您,以及您是否具备满足其需求的 ...

  6. 数据分析避坑指南-小白兔踩坑记

    从一开始的数据分析"小白兔",不断进坑.弹跳出坑,练就健壮有力的小腿,逐步变成一只拥有了防御能力.没有那么弱小的"小灰兔". 成长和职业发展的过程,就是进阶打怪 ...

  7. WordPress网站创建和添加Google数据分析代码完整指南(2022年8月最新)

    本文介绍WordPress网站创建和添加Google数据分析代码如何操作和实现.包含了Google Analytics实时数据流量(转化分析设置)和Google Search Console自然搜索流 ...

  8. 轻松应对Java试题,这是一份大数据分析工程师面试指南

    作者 | HappyMint 转载自大数据与人工智能(ai-big-data) 导语:经过这一段时间与读者的互动与沟通,本文作者发现很多小伙伴会咨询面试相关的问题,特别是即将毕业的小伙伴,所以决定输出 ...

  9. 数据分析入门学习指南,零基础小白都能轻松看懂

    数据分析在如今的求职场上越来越重要.然而,让很多朋友困惑的是,我是没有编程基础的小白,能学会数据分析么?该如何学习数据分析呢? 其实,如果你打算成为一名数据分析师,如何出身并不重要,数据科学是一门应用 ...

  10. 数据分析入门学习指南|零基础小白必看

    数据分析在如今的求职场上越来越重要.然而,让很多朋友困惑的是,我是没有编程基础的小白,能学会数据分析么?该如何学习数据分析呢? 其实,如果你打算成为一名数据分析师,如何出身并不重要,数据科学是一门应用 ...

最新文章

  1. Unix Linux大学教程(三):过滤器、正则表达式、vi
  2. 计算机用户域怎么删除,如何查找并删除AD域中多余的计算机帐号?
  3. 使用EclEmma 插件 解析jacoco.exec文件
  4. 普通程序员转型深度学习指南
  5. python安装运行时提示不是内部或外部命令怎么办_如何解决cmd运行python提示不是内部命令...
  6. 清华博士的逆袭路:从延毕警告到在顶刊发文,我蛰伏了四年
  7. @font-face的用法,css3使用web字体教程
  8. 领航物联网智能操作系统,指令集完成过亿元 A 轮融资
  9. 页面显示正常,控制台报错
  10. 计算机输出科学计数法,C语言里要对输出的结果用科学计数法表示保留三位有效数字应该怎么写啊?...
  11. 我国5G现状:今年底或发放5G牌照
  12. 根据android版本号,增加兼容性处理
  13. ubuntu命令行使用wget下载百度云资源
  14. IoT方案|机智云商用设备运营管理 / 租赁共享解决方案
  15. 基于广度优先遍历算法求采用邻接表存储的无向连通图G中从顶点u到v的最短路径
  16. TensorFlow入门教程:8:训练数据之Iris数据集
  17. “周末不喝酒,人生路白走”,智慧山「精酿的夏天」3.0又将引爆全城!
  18. 关于CreateProcess的问题
  19. matlab中类的用法
  20. 基于色温估计的白平衡算法

热门文章

  1. ascii码值为负数_C语言字符型数据的ASCII码值为何是负数?
  2. win7 java修复工具哪个好_DLL修复工具哪个好
  3. 纯CSS实现button按钮
  4. Hive:用SQL对数据进行操作,导入数据、清洗脏数据、统计数据订单、优化结果输出等等
  5. windows下 C++ openCV配置及x86编译(傻瓜式教程)
  6. VSC为_LCC 和 VSC (MMC) 的底层特性区别
  7. JDK和JRE的下载与安装
  8. 谷歌安装器 android8.0,Android 8.0版本安装谷歌四件套
  9. google四件套之Dagger2。从入门到爱不释手,之:Dagger2华丽使用在MVP框架中
  10. Google play 四件套安装 2019.08