38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
def ReadDiskBytes(volume_letter: str, start_byte: int, length: int) -> bytes:
|
||
"""
|
||
从指定磁盘的指定起始位置读取指定长度的字节。
|
||
|
||
:param volume_letter: 盘符(如 "Y")
|
||
:param start_byte: 起始字节位置(整数)
|
||
:param length: 要读取的字节数(整数)
|
||
:return: 读取到的原始字节数据(bytes)
|
||
"""
|
||
if not isinstance(volume_letter, str) or len(volume_letter.strip()) != 1:
|
||
raise ValueError("drive_letter 必须是单个字母,如 'Y'")
|
||
|
||
# 构建 Windows 设备路径格式:\\.\Y:
|
||
disk_path = f"\\\\.\\{volume_letter.strip().upper()}:"
|
||
|
||
try:
|
||
with open(disk_path, "rb") as disk:
|
||
disk.seek(start_byte)
|
||
data = disk.read(length)
|
||
return data
|
||
except PermissionError:
|
||
raise PermissionError("权限不足,请以管理员身份运行程序")
|
||
except Exception as e:
|
||
raise RuntimeError(f"读取磁盘失败:{e}")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
drive = "Y"
|
||
start = 687685632
|
||
size = 7163904
|
||
|
||
try:
|
||
content = ReadDiskBytes(drive, start, size)
|
||
print(f"成功读取 {len(content)} 字节内容。前100字节为:")
|
||
print(content[:100])
|
||
except Exception as e:
|
||
print("错误:", e)
|