| 
 | 
 
 
WinHex to Dec 16進位轉換成10進位 位址程式可針對 Sector per cluster 及 Hidden Sector 設定 
 
Sector cluster Hidden WinHex 
 
 
把BusHound 抓到的TXT檔案轉存XXX.TXT 
編輯XXX.TXT,把-----------------------------以上都刪除(包含---------------) 
轉存XXX-A.TXT
Sector cluster Hidden WinHex 
 
 
 
 
打開WinHex2Dec.exe程式 
按上圖輸入Sector per cluster 及 Hidden Sector 單位 
選擇檔案 (目標值轉十進制 - Sector per cluster) / Hidden Sector = 輸出 
 
在同一路徑會輸出一檔案XXX-A-output.TXT
Sector cluster Hidden WinHex 
 
 
打開就可以看到已經計算好的輸出值 
 
打開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[0])
 
  
-     # 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[i, j])
 
  
-     # print(a)
 
 -     # 切割OUT字串
 
 -     out_arr = a.split('OUT')
 
 -     # print(out_arr)
 
 -     # 重新命名輸出檔案
 
 -     path = file_path_arr[0]+'-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[i]
 
 -         # 輸出每列及計算的訊息
 
 -         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[j])
 
 -             if j == 2:
 
 -                 # 取nan陣列2字串
 
 -                 hex_arr2 = hex_arr1[j]
 
 -                 # print (hex_arr2 )
 
 -                 # 從字串第5位置切割
 
 -                 hex_6code = hex_arr2[4:]
 
 -                 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 
 
 
 
 
 
 |   
 
 
 
 |