# -*- encoding: utf-8 -*- """ @File : read_bin.py @License : (C)Copyright 2021-2023 @Modify Time @Author @Version @Description ------------ ------- -------- ----------- 2023/10/9 16:27 zart20 1.0 None """ # SECTOR_SIZE = 512 # 扇区大小 # BYTES_PER_LINE = 16 # 每行字节数 # # MAX_SECTORS_TO_READ = 15927 # 要读取的最大扇区数量 # MAX_SECTORS_TO_READ = 0 # # 打开设备文件 # # drive_letter = "I:" # 请替换为你要操作的磁盘 file_path = f"/home/headless/Desktop/workspace/myshixun/src/output.bin" # 设备文件路径 # # try: # with open(file_path, 'rb') as disk: # sector_number = 0 # 起始扇区号 # byte_offset = 0 # 字节偏移量初始化 # sectors_read = 0 # 已读取的扇区数量 # # while sectors_read <= MAX_SECTORS_TO_READ: # # 读取扇区数据 # disk.seek(sector_number * SECTOR_SIZE) # sector_data = disk.read(SECTOR_SIZE) # # # 输出扇区数据 # print(f"扇区号:{sector_number}") # for i in range(0, len(sector_data), BYTES_PER_LINE): # line_data = sector_data[i:i + BYTES_PER_LINE] # print(f"{byte_offset + i:08X}:", end=" ") # 输出字节偏移量(16进制) # for byte in line_data: # print(f"{byte:02X}", end=" ") # 输出每个字节的16进制表示 # # print() # 换行 # # # 更新扇区号,读取下一个扇区 # sector_number += 1 # byte_offset += len(sector_data) # 累加字节偏移量 # sectors_read += 1 # # except PermissionError: # print("没有足够的权限来访问磁盘。请以管理员身份运行程序。") # except FileNotFoundError: # print(f"找不到设备文件:{file_path}") # except Exception as e: # print(f"发生错误:{e}") def read_sector_0(): SECTOR_SIZE = 512 # 扇区大小 BYTES_PER_LINE = 16 # 每行字节数 SECTORS = 0 with open(file_path, 'rb') as disk: disk.seek(SECTORS *SECTOR_SIZE) sector_data = disk.read(SECTOR_SIZE) # for i in range(0, len(sector_data), BYTES_PER_LINE): # line_data=sector_data[i:i+BYTES_PER_LINE] # print(f"{SECTORS*32+i:08X}:", end=" ") # for byte in line_data: # print(f"{byte:02X}", end=" ") # disk_dict[f"{i:08X}:"].append(f"{byte:02X}") # print() return SECTORS, sector_data def read_sector_FAT1(): SECTOR_SIZE = 512 # 扇区大小 BYTES_PER_LINE = 16 # 每行字节数 SECTORS = 34 with open(file_path, 'rb') as disk: disk.seek(SECTORS *SECTOR_SIZE) sector_data = disk.read(SECTOR_SIZE) # for i in range(0, len(sector_data), BYTES_PER_LINE): # line_data=sector_data[i:i+BYTES_PER_LINE] # print(f"{SECTORS*32+i:08X}:", end=" ") # for byte in line_data: # print(f"{byte:02X}", end=" ") # disk_dict[f"{i:08X}:"].append(f"{byte:02X}") # print() return SECTORS, sector_data def read_sector_root_path(num): SECTOR_SIZE = 512 # 扇区大小 BYTES_PER_LINE = 16 # 每行字节数 SECTORS = 15032+num with open(file_path, 'rb') as disk: disk.seek(SECTORS *SECTOR_SIZE) sector_data = disk.read(SECTOR_SIZE) # for i in range(0, len(sector_data), BYTES_PER_LINE): # line_data=sector_data[i:i+BYTES_PER_LINE] # print(f"{SECTORS*32+i:08X}:", end=" ") # for byte in line_data: # print(f"{byte:02X}", end=" ") # print(f"{chr(byte)}", end="") # print() # print(sector_data) return SECTORS, sector_data if __name__ == '__main__': read_sector_0() read_sector_FAT1() read_sector_root_path(0)