现在我在做USB音频的项目
现在发现一些问题。
1 个人觉得现在的编译软有后门,
2 我们不知道的命令。
3 编辑器本身可以屏蔽一些代码。
有可能是别人在里面植入的。
你在编辑器里看不到,但编译时会编译他们。
上面有两张图片
图1 是我的音频配置描述符代码
图2 是抓的USB的包
我们来一步步分析
1 第1个主机控制包
CTL 80 06 00 01 00 00 12 00
意思是获得设备描述符,长度是0x12个
2 当主机发出In Token
我的设备就按要求传出 0x12个设备描述的数据
IN 12 01 10 01 00 00 00 40 51 04 01 bb 00 01 01 02
00 01
3 第2个主机控制包
CTL 80 06 00 02 00 00 09 00
意思是获得设备配置描述符,长度是0x09个
4 当主机发出In Token
我的设备就按要求传出 0x09个设备配置描述的数据
IN 09 02 c0 00 03 01 00 80 20
那麽问题就在这里
请看 我的配置描诉符
__align(4) uint8_t gu8ConfigDescriptor[] =
{
0x09, // bLength
0x02, // bDescriptorType
0xE0,0x00, // wTotalLength
0x04, // bNumInterfaces 原来=3 现在加HID接口 = 4
0x01, // bConfigurationValue
0x00, // iConfiguration
0x80, // bmAttributes
0x20, // Max power
我把他拉平
0x09 0x02 0xE0, 0x00 0x04 0x00 0x80 0x20
= 09 02 E0 00 04 00 80 20
也就是说传出的数据根本就不是我的配置描诉符的数据
我不知道这些数据,IN 09 02 c0 00 03 01 00 80 20
我的设备是在那找来这些数据,然后传给主机,
我所有文档都不包含这些数据。
并且大家也可以看到
这段数据恢复成描述符就是这样的。
0x09, // bLength
0x02, // bDescriptorType
0xC0,0x00, // wTotalLength
0x03, // bNumInterfaces
0x01, // bConfigurationValue
0x00, // iConfiguration
0x80, // bmAttributes
0x20, // Max power
我贴出这些,也没想大家来浪费时间来帮我解决问题。
我是想说出我心中一直想说的。
我这些年来遇到的很多事情。
我也没法一一用文字来图片来表达。
但我感觉不上网。很多奇怪的问题基本都不会出现。
所以告诫大家。很多东西都不是我们想的那麽简单。
千万记得在做重要的项目时。记得用两台机器
一台上网。一台做项目。
哪怕你关了无线都没有用。因为系统后台很容易就
可以有开起无线的功能。前台你是看不见的。
所以建议做事的机器不要用带集成无线芯片的主板。
这样在做重要项目时。拆掉无线功能的设备。或不插网线。
其实我们这些工作室真的不容易。
如果你想保证你的权益。希望你尽量注意。
我把我的一些想法说一说。做不做你自己决定。
小心驶得万年船。呵呵。
当然你做开源项目。你得开,这是公德的问题。
对于不开源的项目,就看你自己了。
就怕是你刚做好。 那些大的机构就已经有了你的代码。
我讲以上的话。对我是没有半点利益的,我想大家能想清楚。
我只是可怜我们这些苦逼的人。包括我自己。
只希望换得大家的觉醒。 做程序要注意安全。
不然你做的东西永远不值钱。是为别人做一遭。
并且是免费的。
|