経緯
wireshark等でキャプチャした16進数の値をバイナリに変換したい!と思って作ったスクリプト。
実行するとGUIでテキストを選択するダイアグラムが出るので、そこでテキストファイルを選択すると、同じディレクトリに.binとしてバイナリ化されたファイルが生成される。
スクリプト
python3.6.5で動作を確認。
選択したテキストファイルに
・16進数の値(0-Fまで)
・改行
・スペース
以外が入っているとエラーになるので注意。
import struct
from tkinter import filedialog
import os, tkinter, tkinter.filedialog, tkinter.messagebox
# ファイル選択ダイアログの表示
root = tkinter.Tk()
root.withdraw()
fTyp = [("","*")]
iDir = os.path.abspath(os.path.dirname(__file__))
tkinter.messagebox.showinfo('string2bin','処理ファイルを選択してください')
file = tkinter.filedialog.askopenfilename(filetypes = fTyp,initialdir = iDir)
print(file)
fin = open(file, 'r')
data = fin.read()
data = data.replace("\n","").replace(" ","")
bits = bytes.fromhex(data)
with open(file + str(".bin"), mode='wb') as f1:
f1.write(bits)