import struct f = open(r'd:\Users\TermiNexus\Desktop\TransPyC\ViperOS\disk.img', 'rb') f.seek(0) first_sector = f.read(512) first_byte = first_sector[0] if first_byte == 0xEB or first_byte == 0xE9: lba_start = 0 bpb = first_sector else: ptype = struct.unpack_from(' 5: return cluster_sec = data_start + (cluster - 2) * sec_per_clus f.seek((lba_start + cluster_sec) * 512) dir_data = f.read(sec_per_clus * bytes_per_sec) off = 0 lfn_parts = {} while off < len(dir_data): first = dir_data[off] if first == 0: break if first == 0xE5: off += 32 lfn_parts = {} continue attr = dir_data[off + 11] if attr == 0x0F: # LFN entry seq = first & 0x3F lfn_chars = [] for i in range(5): c = struct.unpack_from('= 2: # Skip . and .. entries sfn_name = name_str.rstrip() if sfn_name != '.' and sfn_name != '..': read_dir(f, lba_start, data_start, sec_per_clus, bytes_per_sec, clus, indent + " ", depth + 1) off += 32 lfn_parts = {} read_dir(f, lba_start, data_start, sec_per_clus, bytes_per_sec, root_clus) f.close()