捉鳖神技 - 让USB传输见光死的方法

在程序中可以使用traceback 或try ... exception 的方式去做各种例外事件的拦截,但在通讯中该怎麽做呢? 笔者这次在USB转串列埠的装置应用中屡屡吃瘪,真的不知道原来通讯中的瘪还可以这样吃到怕,那该如何逆袭这种情况呢?

总不能每次都吃瘪当吃补吧,这次就来介绍如何可以做到快乐捉鳖而不吃鳖的通讯界神器的应用。

PART 1 - 捉鳖前, 当然要先准备捉鳖用的各种道具

  • 通讯界中捉鳖用的照鳖镜
    • USB Viewer
      • 可以显示USB装置定义中的各种规范
    • Wireshark
      • 让传输过程见光死的好用神器

/images/emoticon/emoticon61.gif

  1. 下载USB Viewer 软件以观察每个USB的动向
  • 解压缩後会看下面三个档案, 直接执行第一个就行了
  • 执行後就可以看到电脑中每个USB Port的即时状态

    PS: USBViewer 这个好用的工具, 以往都是被放在Windows SDK/ DDK 中
  1. 下载Wireshark 任意版本直接安装
  2. 安装的时候要选取USBPcap才能让Wireshark 撷取到USB的讯号
  3. 安装结束後, 一定要重开机
    • !!! 非常重要 !!!
  4. 重开机後打开Wireshark, 看到USB 出现了

PART II: 找看看鳖在哪里?

这次要撷取的是SilCon CP210x USB to Serial 的讯号及分析

  1. 打开Wireshark後, 直接选择USB Pcap2, 点选左上角的录制

    • 可以在Device Description 中对照相关的讯息後确定要撷取的是这个Port 没有错
    • 在USB View 中看到的是这次要观察的对象在Port 2
  2. 对这个Serial 装置下01030C00, 16进位的数据, 观察封包行为

    • 输入指令後, 可以观察到Host 对装置发出BULK OUT的串流
      • 检查内容, 发现是BLE Reset 的HEX 值
    • 观察Device 回应的状态, 查看BULK IN的资料流
      • 资料回传後会再送一个0xff的空值, 代表结束

结论

由於笔者送出资料的时候都没有加0xff, 所以资料并没有被成功发送出去。而导致每次都要重新插拔装置後才能使用. 导致问题发生的原因就是串列埠的timeout时间设定过长,所以才会导致装置无法回应。但如果是使用猜测或只有在程序中除错的方式,那就只能把吃瘪当吃补了。

参考资料
USB 数据包分析


<<:  EP 07 - [TDD] 取得 Nonce (2/2)

>>:  Python - Python Selenium 套件使用参考笔记

DAY22 类神经网路之架设与训练

前面我们介绍了影像辨识的资料前处理方法,今天就要开始教大家架设一个神经网路,并将资料丢入来看看实际的...

DAY 4- 对称式、非对称式加密概要

你的心脏不是对称的,就跟你的脸一样。 Alice and Bob 首先要隆重介绍,密码学永远的男主角...

[FGL] 目录档案处理-处理谁的档案? frontCall

之前在 吸星大法 - IMPORT之 1: 使用extension扩展功能 中,有提到『**可以使用...

DAY 30完成团购机器人

前面的设置中文字体,发现不能在heroku上使用 这边我用matplotlib.font_manag...

彻底卸载 Mac 应用程序

并不是所有的都是常用的应用程序,而且多数情况下都是下载了 App 之後却没怎麽使用。渐渐地,这些应用...