我完全难过地来找你。我为一家使用旧的基于DOS的程序输入和检索数据的公司做了一些工作。这是一个遗留的软件,他们已经转移到QuickBooks或Outlook,以满足他们所有的地址或计费相关需求。但是,已经进行了一些更改,并且它们定期使用此数据库。由于该软件所在的计算机正在运行XP(并且办公室中没有其他计算机可以运行它),因此他们希望在计算机不可避免地爆炸时逐步淘汰该软件。
TLDR;我有一个旧的.csv文件(大约两年),它有很多信息,但它已经两年了。我有另一个名为ml.dat的文件(我假设是masterlist.dat),它与此旧版软件位于同一个文件夹中。我用记事本和excel打开它,并提供这样的信息:
S;Û).;PÃS;*p(â'a,µ,
在记事本或excel中识别上述文本块的次数要少得多。它是更多未被识别的方块。 但是,有些信息实际上是可读的。例如,我可以阅读偶尔的城镇名称或人名,但由于缺少很多信息,我无法获得所有信息。也许数据不是unicode或其他东西?我不知道。有什么建议?我最终试图将这些信息投入到quickbooks或outlook中。
请帮忙! 感谢
编辑:我猜这个文件可能是加密的,因为.dat通常是明文?有什么想法吗?
答案 0 :(得分:0)
.DAT文件可以是任何东西,它们通常只是应用程序数据。由于存在可读文本,因此该文件不太可能被加密。相反,您将看到其他内容字节的ASCII表示。 http://www.asciitable.com/假设单字节值,数字77可能会出现在文件中的某个位置。
您的选择:
对于#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结构的内部能够读取文件。
在大多数语言中,可能没有单独的实用程序用于制作文件,转储数据并从文件中读取数据相对容易。