【发布时间】:2011-05-25 15:12:09
【问题描述】:
我正在尝试读取分区表之外的一些数据,我可以成功读取原始数据,但它似乎是用 Unicode (UTF-8) 或其他东西编码的。已经编写了一个应用程序来读取这些数据并正确显示它,所以我知道它可以完成。
此数据称为“图像安全数据”,它是 Novell ZenWorks 放置在磁盘第六扇区 (0x05) 上的数据。
原始数据如下所示:
ZISD♂ Æ☻ ☺ └¿ ├└¿ ☺ ñ3åG ╓ï╝Y ≡ ♣ § ╗ç9%¥⌂+0Kâ¬ê
:☺ @ f 8 b 3 4 6 6 2 9 3 b 3 2 b b f d c 8 c b d 6 2 2 1 2 1 0 d
2 1 ♫ M H S T R E E ▬ F H I F L 0 0 0 5 9 3 L \ \ F H 0 1 F S N T H 0
9 \ A P P S \ i m g s \ C X P P N 6 7 1 0 B . z m g $ t r i n i t y - h e a l
t h . o r g ▬ F H I F L 0 0 0 5 9 3 H Z N W
我写了以下代码,用 C++ 直接从磁盘读取数据:
#include <iostream>
#include <windows.h>
void main() {
DWORD nRead;
char buf[512];
HANDLE hDisk = CreateFile("\\\\.\\PhysicalDrive0",
GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL);
SetFilePointer(hDisk, 0xA00, 0, FILE_BEGIN);
ReadFile(hDisk, buf, 512, &nRead, NULL);
for (int currentpos=0;currentpos < 512;currentpos++) {
std::cout << buf[currentpos];
}
CloseHandle(hDisk);
}
我是 C++ 的新手。我需要找到一种方法来输出这些数据,以便脚本可以在可能的情况下读取它。它看起来是由不一致的字符分隔的。
【问题讨论】:
-
如果是 Windows,它更可能是 UTF-16 而不是 UTF-8。
标签: c++