簡體   English   中英

解密加密值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM