【问题标题】:Can't properly read the boot sector from a FAT32 USB drive on Android device无法从 Android 设备上的 FAT32 USB 驱动器正确读取引导扇区
【发布时间】:2015-03-29 23:02:57
【问题描述】:

我正在尝试从 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 个字节 - 这会返回不正确的数据

如有任何建议,我将不胜感激

【问题讨论】:

    标签: android usb fat32 usb-mass-storage


    【解决方案1】:

    哪个十六进制查看器?

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

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

    【讨论】:

    • 查看器名为HxD。感谢您的回答,我意识到我做错了什么。我没有在编辑器中打开物理磁盘,而是打开了分区。打开物理磁盘后,我得到的内容与我的 Android 应用程序中的内容相同。嗯,这是一个愚蠢的问题。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2017-03-05
    • 2021-06-19
    • 2018-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    相关资源
    最近更新 更多