0

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

这是我在 Android 设备上的读取端点上通过 bulkTransfer 收到的输出。

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

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

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

我在 Android 上收到的数据在结尾处包含以下消息:“分区表无效。加载操作系统时出错。缺少操作系统”。

谁能告诉我这里有什么问题?在读取引导扇区之前我应该​​执行什么操作吗?

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

  1. 查找所需的 USB 设备
  2. 获得与 USB 设备通信的权限
  3. 打开连接做设备
  4. 执行“Test Unit Ready”命令直到响应成功
  5. 执行“读取容量”命令 - 这将返回正确的结果
  6. 执行“Read 10”命令读取前 512 个字节 - 这将返回不正确的数据

我会感谢任何建议

4

1 回答 1

0

哪个十六进制查看器?

win 上的非管理员用户无法访问物理设备上的分区表,因此通常只能获取分区的第一个扇区。您可以检查一下,它将包含FAT32偏移量 0x52 处的字符串。要读取真实的分区表,您需要以管理员权限访问物理设备。

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

于 2015-03-29T15:02:57.600 回答