2013-04-26 56 views
1

我來找你完全難住。我爲使用基於DOS的舊程序輸入和檢索數據的公司做了一些工作。這是一個傳統的軟件,他們已經轉移到QuickBooks或Outlook的所有地址或賬單相關的需求。然而,有一些變化,他們定期與這個數據庫工作。由於該軟件所在的計算機正在運行XP(並且辦公室內的其他計算機都無法運行它),因此當計算機不可避免地發生爆炸時,他們正在尋找這種軟件。未知的主列表.dat文件,檢索信息的問題

TLDR;我有一箇舊的.csv文件(大約兩年),其中有大量的信息,但它已經兩年了。我有另一個名爲ml.dat的文件(我假設masterlist.dat)與這個傳統軟件位於同一個文件夾中。我用記事本打開它,擅長和我呈現的信息是這樣的:

S;Û).;PÃS;*p(â'a,µ, 

文字的上述塊是公認的記事本中要少得多或excel。這是更多的無法識別的廣場。 然而,其中一些信息實際上是可讀的。例如,我可以閱讀偶爾的城鎮名稱或人名,但由於缺少許多信息,我無法獲取所有信息。也許數據不是unicode或者什麼的?我不知道。有什麼建議麼?我最終試圖獲取這些信息並將其轉化爲快速預覽或展望。

請幫忙! 謝謝

編輯:我猜這個文件可能是加密的,因爲.dat的通常是明文?有什麼想法嗎?

回答

0

.DAT文件可以是任何東西,它們通常只是應用程序數據。由於存在可讀的文本,因此該文件不可能被加密。相反,您會看到其他內容字節的ASCII表示。 http://www.asciitable.com/假設單字節值,數量77某處可能出現在文件中爲M.

您的選擇:

  1. 搜索一些實用程序加載和轉換該應用程序的dat文件。
  2. 設置一個合適的dos模擬器,這樣你就可以在另一個盒子上運行這個應用程序,或者甚至運行freedos之類的虛擬機。
  3. 找出文件格式,然後編寫一個程序來翻譯數據。

對於#3,您可以將調試器附加到應用程序以跟蹤文件的讀寫方式。或者,您可以嘗試找出記錄邊界(如果所有記錄的大小相同,則事情會更容易一些。)然後,您可以使用已知值嘗試查找字段邊界。如果您可以找到(或反向編譯)源代碼,那麼也可以讓您深入瞭解文件格式。

1是你最好的選擇,#2會買你一些時間,這樣你就不再需要原來的機器了。 #3可能會外包。


如果你能找到源或文件格式,那麼你只需要重新創建任何數據結構轉儲到文件和文件讀入到它。

爲了找到其中的exe打開它,你可以這樣做:

for %f in (*.exe) do find "ml.dat" %f -c 

假設原來的應用程序是用C寫的話就不會有代碼像這樣從文件中讀取第一個記錄:

struct SecretData 
{ 
    int first; 
    double money; 
    char city[10]; 
}; 

FILE* input; 

struct SecretData secretdata; 
input = fopen("ml.dat", "rb"); 
fread(&data, sizeof(data), 1, input); 
fclose(input); 

(該文件本來是用fwrite編寫的。)基本上你需要弄清楚SecretData結構的內部是否能夠讀取文件。

在大多數語言中,可能沒有用於生成文件,轉儲數據和從文件中讀回數據的獨立實用程序相對簡單。

+0

我實際上已經花費了最後半小時的時間來嘗試做#3的更好的一部分,試圖弄清楚它是如何讀取數據的。雖然我已經下載了一些調試器/反編譯器(OllyDbg和Dede),但我一直無法使用它們打開主文件。我將嘗試打開文件夾中的其他隨機.exe文件,看看我想出了什麼。 對於#1,我會在網上搜索實用程序還是嘗試查找作爲原始源的一部分的實用程序來執行此操作? 感謝您的迴應! – user1757359 2013-04-26 16:41:23

+0

我想這也是值得一提的,這個傳統的軟件是定製的,所以我不知道#1是否是一個選項。 – user1757359 2013-04-26 16:50:16