使用python在磁盘映像文件中的特定位置编辑十六进制值

时间:2017-11-04 14:18:25

标签: python python-2.7 hex hexdump raid

如何使用Python编辑磁盘映像文件的特定扇区(60GB)的十六进制值?

Example:
Given 512,

File name: RAID.img
Typical File size: 60gb+
Sector: 3
Address Offset: 0000060A - 0000060F
Value: 0f, 0a , ab, cf, fe, fe

我能想到的代码:

fname = 'RAID.img'
with open(fname, 'r+b') as f:
    newdata = ('\x0f\x0a\xab\xcf\xfe\xfe')
    print newdata.encode('hex')

如何修改Sector = 3中的数据,地址是0000060A - 0000060F? 有些图书馆可以使用吗?

1 个答案:

答案 0 :(得分:0)

如果您知道要更新的数据的确切偏移量(字节位置),则可以使用file.seek,然后使用file.write

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Log;

class SendDownNotification extends Command
{
    protected $signature = 'command:SendDownNotification';

    protected $description = 'Notify if it went offline';


    public function __construct()
    {
        parent::__construct();
    }

    public function handle()
    {
        Log::info('HIT Command');
    }
}

如果您的数据文件很小(可能高达1MB),您可以将完整的二进制文件读入bytearray,在内存中播放(修改)数据,然后将其写回文件:

#!/usr/bin/env python

offset = 0x60a
update = b'\x0f\x0a\xab\xcf\xfe\xfe'

with open('raid.img', 'r+b') as f:
    f.seek(offset)
    f.write(update)