从NTFS文件系统上的$ MFT获取十六进制值/原始数据

时间:2015-02-17 10:12:30

标签: python python-3.x

在您说“已经有线程覆盖”之前 - 进一步阅读,没有。

我只需要“寻址”NTFS文件系统的第一个扇区并逐字节读取(原始数据)。我不需要一个执行此操作的程序,我需要代码。

到目前为止我得到了什么:

drive = r"\\.\PhysicalDrive1"
pyLog = "C:\\ohMyPy\mft.txt"

hd = open(drive,encoding='cp850')
mft = hd.readlines(1024*10000)

with open(pyLog,'w',encoding='cp850') as f:
    f.writelines(mft)
    f.close

2 个答案:

答案 0 :(得分:2)

您需要以二进制模式('rb' / 'wb')打开文件,否则Python将修改Windows上的换行符。在二进制模式下打开文件时不需要编码。此外,您可以在同一个上下文管理器(with)中打开这两个文件,如下所示。

drive_filename = r'\\.\PhysicalDrive1'
log_filename = r'C:\ohMyPy\mft.txt'

with open(drive_filename, 'rb') as drive, open(log_filename, 'wb') as logfile:
    logfile.write(drive.read(1024*10000))

答案 1 :(得分:1)

我可以按如下方式阅读我的MBR;

drive = r"\\.\PhysicalDrive0"
hd = open(drive,'rb')
mbr = hd.read(512)

魔法在' rb' =打开文件,以二进制模式读取,即不改变行尾字符。