WinHex to Dec 16進位轉換成10進位 位址程式
WinHex to Dec 16進位轉換成10進位 位址程式可針對 Sector per cluster 及 Hidden Sector 設定把BusHound 抓到的TXT檔案轉存XXX.TXT
編輯XXX.TXT,把-----------------------------以上都刪除(包含---------------)
轉存XXX-A.TXT
打開WinHex2Dec.exe程式
按上圖輸入Sector per cluster 及 Hidden Sector 單位
選擇檔案 (目標值轉十進制 - Sector per cluster) / Hidden Sector = 輸出
在同一路徑會輸出一檔案XXX-A-output.TXT
打開就可以看到已經計算好的輸出值
打開WinHex程式,插入USB轉接卡,選擇磁碟如D:透過檔案管理員搜尋要尋找的檔案,對目標檔案壓右鍵
如:appmanifest_291550.acf (右鍵navigation->List clusters->出現clusters 14598位置)
對應XXX-A-output.TXT就可知是否有出現在讀取LOG內
原始碼
import pandas as pd
import tkinter as tk
from tkinter import filedialog
def hex2dec():
if input_entry.get() == '':
SPC = 8
else:
SPC = int(input_entry.get())
if input1_entry.get() == '':
HS = 2048
else:
HS = int(input1_entry.get())
file_path = filedialog.askopenfilename()# 選擇檔案後回傳檔案路徑與名稱
print(file_path)
# 表頭有五項標籤 'Device', 'Phase', 'Data', 'Description', 'Cmd.Phase'
header = ['Device', 'Phase', 'Data', 'Description', 'Cmd.Phase']
# 讀取檔案成dataframe
#df = pd.read_fwf("GameSart_DownLoad.txt")
df = pd.read_fwf(file_path)
file_path_arr = file_path.split('.txt')
print(file_path_arr)
# print(type(df))
# print(df)
print(df.shape)
# print(df.iloc[:,1:7])
# 從dataframe取DATA那行 1-7 行,第0行不讀
first_col_cut = df.iloc[:, 1:7]
print(first_col_cut.shape)
print(type(first_col_cut))
a = ""
# 重組OUT字串
for i in range(0, len(first_col_cut)):
for j in range(0, 6):
a = a + str(first_col_cut.iloc)
# print(a)
# 切割OUT字串
out_arr = a.split('OUT')
# print(out_arr)
# 重新命名輸出檔案
path = file_path_arr+'-output.txt'
f = open(path, 'w')
# 輸出設定訊息
f.write("設定 Sector per cluster: " + str(SPC))
print("設定 Sector per cluster: " + str(SPC))
f.write("\n")
f.write("設定 Hidden Sector: " + str(HS))
print("設定 Hidden Sector: " + str(HS))
f.write("\n")
f.write("\n")
for i in range(0, len(out_arr)):
# print(len(out_arr))
# out_arr1 =
hex_arr = out_arr
# 輸出每列及計算的訊息
f.write("第" +str(i) + "列 的值: OUT " + hex_arr)
print("第" +str(i) + "列 的值: OUT " + hex_arr)
f.write("\n")
# print(type(hex_arr))
# 切割nan字串
hex_arr1 = hex_arr.split('nan')
for j in range(0, len(hex_arr1)):
# print(hex_arr1)
if j == 2:
# 取nan陣列2字串
hex_arr2 = hex_arr1
# print (hex_arr2 )
# 從字串第5位置切割
hex_6code = hex_arr2
f.write("16進位位址: " + hex_6code)
f.write("\n")
print("16進位位址: " + hex_6code)
# 十六進位轉換十進位
number = int(hex_6code, 16)
if number <= 2048:
f.write("值小於"+ str(HS) +",無法計算")
print("值小於"+ str(HS) +",無法計算")
else:
f.write("十進位位址: (" + str(number) + "-"+ str(HS) +")/"+ str(SPC) +" = " + str(int((number - HS) / SPC)))
print("十進位位址: (" + str(number) + "-"+ str(HS) +")/"+ str(SPC) +" = " + str(int((number - HS) / SPC)))
print(" ")
f.write("\n")
f.write("\n")
f.close()
path_label.configure(text='來源:' + file_path, font=(font_type, 11), fg='red')
message_label.configure(text='目的:' + path, font=(font_type, 11), fg='red')
message1_label.configure( text= ' 轉換成功,請關閉視窗', font=(font_type,12), fg ='red')
btn["state"] = "disable"
# 圖形使用者介面
window = tk.Tk()
window.title('Winhex 資料位址,16進位 轉 10進位')
window.geometry('500x160')
title_size =14
notice_size =13
font_size = 12
font_type='微軟正黑體'
header_label = tk.Label(window, text='Winhex 資料位址轉換', font=(font_type,title_size))
header_label.pack(side=tk.TOP)
input_frame = tk.Frame(window)
input_frame.pack(side=tk.TOP)
input_label = tk.Label(input_frame, text='Sector per cluster')
input_label.pack(side=tk.LEFT)
input_entry = tk.Entry(input_frame,width=4)
input_entry.insert(0,'8')
input_entry.pack(side=tk.LEFT)
input1_label = tk.Label(input_frame, text='Hidden Sector')
input1_label.pack(side=tk.LEFT)
input1_entry = tk.Entry(input_frame,width=6)
input1_entry.insert(0,'2048')
input1_entry.pack(side=tk.LEFT)
btn = tk.Button(window,
text='選擇檔案',
font=(font_type,14,'bold'),
command=hex2dec
)
btn.pack()
path_label = tk.Label(window, text='', font=(font_type,font_size))
path_label.pack(side=tk.TOP)
message_label = tk.Label(window, text='', fg ='red',width=80)
message_label.pack(padx=5,pady=5)
message1_label = tk.Label(window, text='', fg ='red',width=80)
message1_label.pack(padx=5,pady=5)
window.mainloop()
下載路徑
https://drive.google.com/file/d/159O4X7s3U1h3-VFxdtq_VOX4KvfGjDuH/view?usp=sharing
頁:
[1]