早期 QQ(oicq2000.cfg)將登入帳號與「記住密碼」資訊以明文結構化儲存於安裝目錄 dat\oicq2000.cfg,使用者可直接檢視或修改。
00 00 00 00 00 00 00 00 05 00 00 00 06 00 00 00 31 32 33 34 35 36 06 00 00 00 32 32 32 32 32 32
01 00 00 00 02 00 00 00 92 86 00 00 00 05 00 00 00 06 00 00 00 31 32 33 34 35 36
my → 6D 79 → 92 86)procedure getQQList();
var
k, i, j: Integer;
cfg: File;
Number, Weishu, Hao: Byte;
begin
AssignFile(cfg, 'x:\xx\oicq2000.cfg');
try
Reset(cfg, 1);
Seek(cfg, 8); k := 8;
BlockRead(cfg, Number, 1); Inc(k, 4);
for i := 1 to Number do begin
x := '';
Seek(cfg, k); BlockRead(cfg, Weishu, 1); Inc(k, 4);
for j := 1 to Weishu do begin
Seek(cfg, k); BlockRead(cfg, Hao, 1); Inc(k);
x := x + Char(Hao);
end;
ListBox1.Items.Add(x);
end;
finally
CloseFile(cfg);
end;
end;
流程類似,僅在首位判斷密碼標誌,解析長度與加密資料後,以 0xFF - 加密位元組 還原明文密碼。
此設計暴露極大風險:本地儲存加密強度極低(單純補碼),任何具備檔案存取權限的程式均可枚舉帳號並破解密碼。開發者應採用 DPAPI、金鑰派生函數(PBKDF2/Argon2)等現代加密機制保護敏感資料,避免自行設計脆弱加密方案。