経緯
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)