【Python】バイナリファイルを、書き換える方法【hex表現】

Pythonで、バイナリファイルをパパッと書き換え(編集)できると、便利ですよね。

この記事では、Pythonを用いて、バイナリファイルをhex表現で編集する方法を、解説します。

 

hex表現とは、上記のように、バイナリエディタで開いたときの、左側の表示のことです。

この記事のPyhtonプログラムで、かんたんに実現できます。

 

【Python】バイナリファイルを編集する方法

実行例

下記が、本記事のプログラム実行例です。

具体的には、下記のようにバイナリファイル内の赤枠の日付等を、別の日付に書き換えできます。

バイナリファイル・書換前【バイナリエディタ】

バイナリファイル・書換後【バイナリエディタ】

 

サンプルプログラム【sample.py】

下記が、バイナリファイルを書き換えるPythonプログラムです。

import sys
args = sys.argv

# 置換元 テキスト
str_src = args[1]
# 置換後 テキスト
str_dst = args[2]

#バイナリデータを読み込む
fr = open(str('./input.dat'), 'rb')
data = fr.read()

#インプットデータをhexに変換
hdata=data.hex()

#hexデータを書き換えして、hexから元にもどす
result_hdata = hdata.replace(str_src, str_dst,1)
result_data = bytes.fromhex(result_hdata)

#置換済データを書き込む
with open( './output.dat', 'wb') as fw:
    fw.write(result_data)

fw.close()
fr.close()

それでは、実際の実行手順を見ていきましょう。

 

実行手順

sample.pyを、インプットファイル(input.dat)と同じフォルダに置いて、例えば下記を実行します。

py samle.py 20191211 20221224

 

第一引数: 書き換え前のバイナリ列(hex表現)
第二引数: 書き換え後のバイナリ列(hex表現)

 

すると、input.dat内の、第一引数に一致するhexが、第二引数のhexに書き換えられます。

書き換え後ファイル(output.dat)は、同フォルダに生成されます。

 

以上で、完了です。

 

まとめ

バイナリファイルをPythonで編集する方法を、解説しました。

みなさんのお役に立てますと、幸いです。

 

今回は以上です。

ありがとうございます。