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で編集する方法を、解説しました。
みなさんのお役に立てますと、幸いです。
今回は以上です。
ありがとうございます。