[英]decrypt an encrypted value?
我有一個舊的Paradox數據庫 (我可以將其轉換為Access 2007),其中包含超過200,000條記錄。 該數據庫有兩列:第一列名為“Word”,第二列名為“Mean”。 它是一個字典數據庫,我的客戶端想要將這個舊數據庫轉換為ASP.NET和SQL。
但是,我們不知道使用什么密鑰或方法來加密或編碼Unicode格式的“Mean”列。 該軟件本身是用Delphi 7編寫的,我們沒有源代碼。 我的客戶端只知道登錄數據庫的憑據。 問題是解碼Mean列。
我所擁有的是已編譯的Windows應用程序和Paradox數據庫。 該軟件可以解碼每個“Word”的“Mean”列,因此方法和/或密鑰位於其自己的編譯代碼(.exe)或其目錄中的一個文件中。
例如,我們知道在下一行中,“Zymurgy”正好意味着“مبحثعملتخمیردرشیمیعلمی,تخمیرشناسی”,因為應用程序會像這樣翻譯它。 以下是我在Access中打開數據庫時的記錄:
Word Mean
Zymurgy 5OBnGguKPdDAd7L2lnvd9Lnf1mdd2zDBQRxngsCuirK5h91sVmy0kpRcue/+ql9ORmP99Mn/QZ4=
因此,我們試圖發現Mean列中的值如何轉換為“مبحثعملتخمیردرشیمیعلمی,تخمیرشناسی”。 我認為上面一行中的“Mean”列值是以Base64字符串格式編碼的,但解碼Base64字符串還不會產生預期的文本。
win app目錄中文件的擴展名為dll,CCC,DAT,exe(主應用程序文件除外),SYS,FAM,MB,PX,TV,VAL。
任何形式的幫助表示贊賞。
這里有兩個例子,記住開頭和結尾的雙引號不是字符串的一部分:
word: "abdominal"
coded value: "vwtj0bmj7jdF9SS8sbrIalBoKMDvTbpraFgG4gP/G9GLx5iU/E98rQ=="
translation in Farsi: "شکمی, بطنی, وریدهای شکمی, ماهیان بطنی"
word: "cart"
coded value: "KHoCkDsIndb6OKjxVxsh+Ti+iA/ZqP9sz28e4/cQzMyLI+ToPbiLOaECWQ8XKXTz"
translation in Farsi: "ارابه, گاری, دوچرخه, چرخ, با گاری بردن"
這是不同編碼的結果:
1- in unicode the result is: "ᩧ訋퀽矀箖�柖�섰᱁艧껀늊螹泝汖銴岔也捆鵓"
2- in utf32 the result is: "��������������"
3- in utf7 the result is: "äàg\v=ÐÀw²ö{Ýô¹ßÖg]Û0ÁAgÀ®²¹ÝlVl´\\¹ïþª_NFcýôÉÿA"
4- in utf8 the result is: "��g\v�=��w���{����g]�0�Ag��������lVl���\\����_NFc����A�"
5- in 1256 the result is: "نàg\vٹ=ذہw²ِ–{فô¹كضg]غ0ءAg‚ہ®ٹ²¹‡فlVl´’”\\¹ïھ_NFcôةےA"
然而我發現悖論數據庫系統在密鑰管理方面非常復雜,而且大多數時候密鑰都是“復合密鑰”,這就是為什么它有問題,這就是為什么它被拋棄了!
更新:我正在嘗試使用AutoIt v3進行自動化,因為我理解的解密過程不能在一兩天內完成。 現在我有另一個與文本/字體有關的問題。 當我將翻譯后的文本復制到記事本時,它將更改為某些無法識別的文本,除非我將記事本的字體更改為翻譯軟件的字體。 如果我在波斯語的記事本中輸入內容,無論我選擇了什么字體,它都會正確顯示。 更有趣的是當我將文本復制到任何其他程序,如MS Office Word時,無論我選擇什么字體,它都會正確顯示。
那我怎么能繞過這個呢?
在這種情況下,我會考慮編寫一個腳本/程序來簡單地通過現有程序提取所有數據。
您可以編寫一個應用程序來向應用程序發送按鍵,該應用程序將依次選擇和復制每個值。
運行需要一段時間,但你可以將它留在一夜之間(你的數據庫有多大?)而且它只需要運行一次。
不知道這會有多容易,因為我當然沒有看到這個應用程序 - 這可能有用嗎?
拿一個像ollydbg / softice這樣的調試器。 找到平均值被解碼/編碼的位置,然后逐個執行指令,檢查所有寄存器以找出所做的事情。 我做了很多次。 這應該可以幫助您入門,因為您有能夠解碼這些東西的應用程序。 你也有一個參考詞。 這就是你所需要的。
還要考慮:Unicode可以是Little或Big Endian。 所以你可能會嘗試交換字節。 UTF-8可能很痛苦,因為有些單詞存儲為一個字節,有些則存儲為兩個字節。
您也可以嘗試在波斯語中使用幾乎相同的單詞並嘗試比較輸出。 這可能導致重建自定義代碼頁(如果有的話)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.