无法从Android设备上的FAT32 USB驱动器正确读取引导扇区

时间:2015-03-28 21:57:42

标签: android usb fat32 usb-mass-storage

我正在尝试从Android设备上的FAT32驱动器读取引导扇区,但是我得到的数据与我期望的完全不同。

这是我在Android设备上的读取端点上使用bulkTransfer接收的输出。

33C08ED0BC007C8EC08ED8BE007CBF00
06B90002FCF3A450681C06CBFBB90400
BDBE07807E00007C0B0F850E0183C510
...
656D000000637B9A5BE2B3D70000800F
30000BFEFFF4E0030000205CF8000000
00000000000000000000000000000000
00000000000000000000000000000000
000000000000000000000000000055AA

这是在我的电脑上使用十六进制查看器转储的引导扇区。

EB58904D53444F53352E300002081004
0200000000F800003F00FF00E0030000
205CF800F83D00000000000002000000
...
0000000000000000000000000D0A5573
75E4206479736B69206C756220696E6E
79206E6F986E696BFF0D0A4288A56420
6479736B75FF0D0A5A72657374617274
756A2C206E616369736B616AA563206B
6C617769737A0D0A00ACC9D6000055AA

我在Android上收到的数据包含以下消息:“无效的分区表。错误加载操作系统。错误操作系统”。

谁能告诉我这里有什么问题?在阅读启动扇区之前是否应该执行任何操作?

截至目前,我的代码流程如下:

  1. 查找所需的USB设备
  2. 获得与USB设备通信的权限
  3. 打开连接执行设备
  4. 执行“测试单元就绪”命令,直到成功响应
  5. 执行“读取容量”命令 - 返回正确的结果
  6. 执行“Read 10”命令以读取前512个字节 - 这将返回不正确的数据
  7. 我会感谢任何建议

1 个答案:

答案 0 :(得分:0)

哪个十六进制查看器?

win上的非管理员用户无法访问物理设备上的分区表, 所以你通常只得到分区的第一个扇区。你可以检查一下,它会在偏移0x52处包含FAT32字符串。要阅读真实的分区表,您需要使用管理员权限访问pysical设备。

在android上,你读取分区表本身是因为你在低级别访问物理“光盘”。