请问一下哪位高手知道屏幕保护密码的算法?

skzd 2000-09-09 07:54:00
...全文
287 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
HEROIN 2001-09-24
  • 打赏
  • 举报
回复
哈哈,果真是个老古董了

aningstar 2001-09-24
  • 打赏
  • 举报
回复
呵呵,这是什么时候的帖子了
那时候我好像才來
没想到现在又翻出来了
当时真是“年轻气盛”啊
不过现在想想真可笑啊

在此向Bcb的老兄们真诚的说声“对不起”
neocosmic 2001-09-24
  • 打赏
  • 举报
回复
我有个算法更简单的函数
yy2001 2001-09-24
  • 打赏
  • 举报
回复
aningstar
你的程序叫什么名字?我怎么没找到?
wjzhuang 2001-09-24
  • 打赏
  • 举报
回复
帮主,强行给分吧
aningstar 2000-11-22
  • 打赏
  • 举报
回复
我实在不知道我的答案为什么不能得分,我对builder论坛有点失望,我去delphi论坛了!!
aningstar 2000-11-22
  • 打赏
  • 举报
回复
我实在不知道我的答案为什么不能得分,我对builder论坛有点失望,我去delphi论坛了!!
wxz 2000-11-18
  • 打赏
  • 举报
回复
等着看《程序员》试刊2期吧,上面有一篇文章讲得很详细。
aningstar 2000-11-17
  • 打赏
  • 举报
回复
我的软件以公布在“共享软件”中,现将破密码函数公布,如用不清楚,可来信
char*TMainForm::GetScrPassWord(char* RegData)
{//
char high_byte[14][6]={
{0x36,0x37,0x30,0x31,0x32,0x33},
{0x43,0x44,0x41,0x42,0x38,0x39},
{0x35,0x34,0x33,0x32,0x31,0x30},
{0x33,0x32,0x35,0x34,0x37,0x36},
{0x34,0x35,0x32,0x33,0x30,0x31},
{0x34,0x35,0x32,0x33,0x30,0x31},
{0x38,0x39,0x45,0x46,0x43,0x44},
{0x33,0x32,0x35,0x34,0x37,0x36},
{0x35,0x34,0x33,0x32,0x31,0x30},
{0x41,0x42,0x43,0x44,0x45,0x46},
{0x36,0x37,0x30,0x31,0x32,0x33},
{0x44,0x43,0x42,0x41,0x39,0x38},
{0x37,0x36,0x31,0x30,0x33,0x32},
{0x42,0x41,0x44,0x43,0x46,0x45}
};
char low_byte[14][16]={
{0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37},
{0x45,0x46,0x43,0x44,0x41,0x42,0x38,0x39,0x36,0x37,0x34,0x35,0x32,0x33,0x30,0x31},
{0x36,0x37,0x34,0x35,0x32,0x33,0x30,0x31,0x45,0x46,0x43,0x44,0x41,0x42,0x38,0x39},
{0x44,0x43,0x46,0x45,0x39,0x38,0x42,0x41,0x35,0x34,0x37,0x36,0x31,0x30,0x33,0x32},
{0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x46,0x46,0x44,0x43,0x42,0x41,0x39,0x38},
{0x39,0x38,0x42,0x41,0x44,0x43,0x46,0x45,0x31,0x30,0x33,0x32,0x35,0x34,0x37,0x36},
{0x31,0x30,0x33,0x32,0x35,0x34,0x37,0x36,0x39,0x38,0x42,0x41,0x44,0x43,0x46,0x45},
{0x42,0x41,0x39,0x38,0x46,0x45,0x44,0x43,0x33,0x32,0x31,0x30,0x37,0x36,0x35,0x34},
{0x41,0x42,0x38,0x39,0x45,0x46,0x43,0x44,0x32,0x33,0x30,0x31,0x36,0x37,0x34,0x35},
{0x43,0x44,0x45,0x46,0x38,0x39,0x41,0x42,0x34,0x35,0x36,0x37,0x30,0x31,0x33,0x33},
{0x37,0x36,0x35,0x34,0x33,0x32,0x31,0x30,0x46,0x45,0x44,0x43,0x42,0x41,0x39,0x38},
{0x38,0x39,0x41,0x42,0x43,0x44,0x45,0x46,0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37},
{0x34,0x35,0x36,0x37,0x30,0x31,0x32,0x33,0x43,0x44,0x45,0x46,0x38,0x39,0x41,0x42},
{0x35,0x34,0x37,0x36,0x31,0x30,0x33,0x32,0x44,0x43,0x46,0x45,0x39,0x38,0x42,0x41}
};


char low,high;
char output[14]="";
int len=strlen(RegData);
int counter=len/2;


for(int i=0;i<counter;i++)
{
for(int j=0;j<6;j++)
{if(RegData[2*i]==high_byte[i][j])
{high=j;break;}
}
for(int j=0;j<16;j++)
{if(RegData[2*i+1]==low_byte[i][j])
{low=j;break;}
}
output[i]=(high+2)*16+low;
if(output[i]==' ')
output[i]='s';
}
return output;
}






void __fastcall TMainForm::Button1Click(TObject *Sender)
{ String s1=String(GetRegData());
if (s1=="")
ShowMessage("No Password(没有设置密码)");
else
Edit1->Text=String(GetScrPassWord(GetRegData()));
}

aningstar 2000-11-17
  • 打赏
  • 举报
回复
原理也很简单,由于microsoft对屏保密码只做了简单的加密,经过加密变形口令密文放在注册表的
HKEY_USERS/.DEFAULT/Control PANEL/desktop/ScreenSave_Data下,双击后可看到ASSCII密文,
密文是密码的两倍,每一个密码字符和两个密文对应,并且和其于的无关系。密码最多为14个字符,多余则截去,
只需将口令字符对应的最多28个密文字符对应的高半字节和低半字节对应值查出,组合成ASCII明文即可。
aningstar 2000-11-09
  • 打赏
  • 举报
回复
我已经发布了破解屏保密码的软件,上面有原程序,不过不知怎么现在还没有,过两天去看看“共享软件”吧
haitian99 2000-09-17
  • 打赏
  • 举报
回复
win95 是16 位, 现在是40位了.
BYTE mima[40]={ //Password may be max to 40 character.
0x48, 0xEE, 0x76,0x1D, 0x67, 0x69, 0xA1,0x1B,
0x7A, 0x8C, 0x47,0xF8, 0x54, 0x95, 0x97,0x5F,
0x78, 0xD9, 0xDA,0x6C, 0x59, 0xD7, 0x6B,0x35,
0xC5, 0x77, 0x85,0x18, 0x2A, 0x0E, 0x52,0xFF,
0x00, 0xE3, 0x1B,0x71, 0x8D, 0x34, 0x63,0xEB,
};

SCUM 2000-09-17
  • 打赏
  • 举报
回复
一般方法如下:

1. 找出加密后的密码数据

方法 1. registry : HKEY_CURRENT_USER\Control Panel\desktop\ScreenSave_Data
内的二进制值
方法 2. 用户档案目录下的 USER.DAT 文件内查找字符串 "ScreenSave_Data", 其后即
为加密后的密码数据


2. 解密

步骤 1. 将密码数据作为 16 进制数,去掉尾部的 ‘00’ 后,转换为 ASCII 字符串。
步骤 2. 将字符串对齐为 16 进制数据串。
步骤 3. 将数据串与口令掩码异或后转换为 ASCII 字符串,即可得到原始口令。


Windows9x 通用屏幕保护口令解密掩码序列如下:

BYTE PasswordMask [16] =
{
0x48, 0xEE, 0x76, 0x1D,
0x67, 0x69, 0xA1, 0x1B,
0x7A, 0x8C, 0x47, 0xF8,
0x54, 0x95, 0x97, 0x5F
};

13,824

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧