根据USB协议,USB设备是有分类的(基类-子类-协议),这在设备描述符和接口描述符里都有体现。
USB协议中,有通信设备类CDC(Communications Device Class)和CDC Data,它指明了通信设备(手机)。
但很多手机,并不一定被设置为这两个类,比如苹果IPhone4(VID=0x05AC,PID=0x1297),
其设备类为0(00-00-00),唯一的接口类(06-01-01)是静止图像类(Still Imaging Device)。
更过多的手机,比如MTK的android手机(MT65xx),是HTC的设备(VID=0x0BB4),
在USB调试关闭时(PID=0x0001),其设备类为0,唯一的接口类(08-06-50);
USB调试开启时(PID=0x0C03),会多出一个ADB接口类(FF-42-01),其余不变。
MTK的功能机(MT6225),是它自己的设备(VID=0x0E8D),
在U盘模式下(PID=0x0002),其设备类为0,也只有一个接口类(08-06-50);
在序列端口模式下(PID=0x0023),其设备类为(EF-02-01),有4个接口类:
两个CDC DATA接口(0A-00-00),两个CDC CTRL接口(02-02-01)。
展讯的android手机(Android),是它自己的设备(VID=0x1782),
在USB调试关闭时(PID=0x5D03),其设备类为0,有3个接口类(08-06-50和2个FF-00-00);
USB调试开启时(PID=0x5D04),会多出一个ADB接口类(FF-42-01),其余不变。
展讯的功能机(SC6800H),也是它自己的设备(VID=0x1782),
在PC通信和UsbLog模式下(PID=0x3D00),其设备类为0,有2个自定义接口类(FF-00-00);
在U盘模式下(PID=0x4D01),其设备类为0,只有一个接口类(08-06-50);
在网络摄像头模式下(PID=0x0004),其设备类为(EF-02-01),配置读取有误。
MSTAR的功能机(MSW8532B2),也是它自己的设备(VID=0x1B20),
在MODEM和PC工具模式下(PID=0x0302),其设备类为0,有2个接口类:
1个CDC DATA接口(0A-00-00),1个CDC CTRL接口(02-02-01)。
在U盘模式下(PID=0x0300),其设备类为0,只有一个接口类(08-06-50);
在网络摄像头模式下(PID=0x0301),其设备类为(EF-02-01),有两个接口类:
2个视频接口类(0E-01-00)和(0E-02-00)。
NOKIA的功能机(5230),也是它自己的设备(VID=0x0421),
在PC套件(OVI)模式下(PID=0x02E3),其设备类为(02-00-00),有14个接口类:
N个CDC DATA接口(0A-00-00),N个CDC CTRL接口(02-02-01,02-02-FF,
02-08-00,02-0B-00,02-FE-00,02-FD-00),1个自定义接口(FF-00-00)。
在U盘模式下(PID=0x02E1),其设备类为0,只有一个接口类(08-06-50);
在图片模式下(PID=0x02E4),其设备类为0,只有一个接口类(06-01-01);
在多媒体模式下(PID=0x02E2),其设备类为0,只有一个接口类(FF-00-00);
诺基亚两位两款机型(2730)和(2730c)也与之类似。
HTC的Windows手机(多普达D600),设备类为0,也只有一个自定义接口类(FF-FF-FF);
佳能相机(IXUS95),设备类为0,也只有一个接口类(06-01-01);
大容量存储设备(U盘,移动硬盘,读卡器),都是设备类为0,只有一个接口类(08-06-50);
中信银行的U盾(VID=0x096E,PID=0x0801),设备类为0,唯一的接口类为HID(03-00-00);
指纹识别(VID=0x138A,PID=0x0008),设备类为自定义(FF-10-FF),唯一的接口类(FF-00-00);
Dell蓝牙(VID=0x413C,PID=0x8160),设备类为无线控制器(E0-01-01),有4个接口类:
N个无线控制器(E0-01-01),1个厂商自定义(FF-FF-FF)和1个应用自定义(FE-01-00)
很多型号的安卓手机,在USB调试关闭的情况下,也只有大容量存储接口(08-06-50);
比如HTC的Bee,DesireHD,Desire,DesireS,Hero,A510,Vision,X515m,Z710e等;
华为的C8500,C8650等;中兴V889D,V760,N960等;摩托ME860,ME525+等;小米M1;三星I579等;
很多型号的安卓手机,在USB调试关闭的情况下,除了大容量存储接口,还有如下接口:
静态图像接口(06-01-01),自定义接口(FF-FF-FF,FF-FF-00,FF-00-00),
通信设备接口(02-02-01,02-0A-00,02-0A-01,02-0B-00,0A-00-00);
因此,通过分类能排除一些非手机的设备,但要识别出手机,还是需要VID和PID才行!