在win98中登录密码是用一个.pwl文件保存在windows的目录中的,只要从中找到
密码就可以了,具体没作过,不过在.pwl中有加密算法要直接读会是不行的。
密码就可以了,具体没作过,不过在.pwl中有加密算法要直接读会是不行的。
解决方案 »
- 测试...
- 鲁讯先生曾经说‘尼采说他是太阳,但他不是太阳,他是疯子’这个难度有点大,给你提示,就是鲁讯先生的认知能力还没有尼采高。
- 如何使RzStringGrid的列宽手工能拖动?
- 遇到难题了?各位帮忙,急!
- 我给TTreeView加了个CheckBox,现在把代码都拿出来,大家看看可以怎么改比较好。
- 如何将图片文件插入到EXECL文件中的某一个Cells中?急.....
- TChart控件上的TBarSeries的问题,为什么在运行过程中BarSeries的宽度会逐渐减小?在线等待! 一定给分,拜托啦!!!
- 如何用D6自带的VCL打印dbgrid中的内容??
- 问一下有经验的程序员:你们是怎样控制一个含多个表单的form的程序的。
- Delphi开发的程序用户权限控制的问题
- 问一个很基础概念的问题
- Delphi的TCustomADODataSet.CacheSize属性为何不起作用?(200分)
不过,不可以分批给,打算给200分
e(也
转为大写), 结果存于PWL文件offset 0x208-0x21B, 0x21C开始为一系列指向资源
串的
指针(当然已XOR过了)。资源串中保存的主要是该USER的一些Shared Directory的
口令,
资源串也分别与XOR串 XOR, PWL文件. // ================= CRYPT.CPP 1997.8.16 ================
#include <stdio.h>
#include <ctype.h>
#include <string.h> /* The WFWG3.11/Win95's PWL file crypt algorithm demonstration:
codes extracted from \Win95\System\MSPWL32.DLL
You may use SoftICE to trace it or W32DASM to disassemble it,
the offset address of each routine is listed below(You may
find the corresponding codes in W32DASM's ALF file according to the offset value) */ typedef unsigned char BYTE; inline void SwapByte(BYTE& c1,BYTE& c2)
{
BYTE temp; temp = c1;
c1 = c2;
c2 = temp;
} // generate a 32 bit key according to the password(capital)
// translate from MSPWL32.DLL's codes beginning at 7FCB1972h
unsigned long GenerateKey(char *pw)
{
int i, len;
unsigned long sum = 0; len = strlen(pw);
for(i = 0; i <= len; i++)
{
sum += toupper(pw[i]);
sum = (sum << 0x7) ¦ (sum >> 0x19);
// same as rol sum,7
}
return sum;
} // translate from MSPWL32.DLL's codes beginning at 7FCB1000h
void GenerateStream(BYTE *stream,unsigned long key)
{
BYTE keychar[4];
int i,j,shift=0;
BYTE index=0; *((unsigned long*)keychar) = key;
for(i = 0; i < 256; i++)
stream[i] = (BYTE)i; for(i = 0; i < 256; i++)
{
index += keychar[shift] + stream[i];
SwapByte(stream[i],stream[index]);
shift = (shift+1) % 4;
}
} // translate from MSPWL32.DLL's codes beginning at 7FCB1088h
void GenerateXorString(BYTE *src,BYTE *dest)
{
BYTE j=0,index;
int i; for(i = 1; i <= 255; i++)
{
j += src[i];
SwapByte(src[i],src[j]);
index = src[i] + src[j];
dest[i-1] = src[index];
}
} int main(int argc,char *argv[])
{
unsigned long key;
BYTE table[256];
BYTE xorstr[256];
int i,len; if (argc < 3)
{
printf("Usage: Crypt username password\n");
printf("Author: Raner,DCS,Tsinghua Univ\n");
printf("Comment: This program is used to demonstrate the Win95
PWL file crypt\n");
printf(" method. You may compare the crypted username
string with the\n");
printf(" string beginning at offset 0x208 of PWL file.
\n");
return 1;
} key = GenerateKey(argv[2]);
printf("\n32 Bits Key:\n 0x%08lX\n",key); GenerateStream(table,key);
GenerateXorString(table,xorstr); printf("\nXor String:");
for(i = 0; i < 54; i++)
{
if ( i % 16 == 0) printf("\n ");
printf("%02X,",xorstr[i]);
}
printf("......\n"); len = strlen(argv[1]);
for(i = 0; i < len; i++)
xorstr[i] ^= (BYTE)toupper(argv[1][i]); printf("\nCrypted UserName:\n ");
for(i = 0; i < 20; i++)
printf("%02X%c",xorstr[i], i == 19 ? '\n' : ','); /* You may debug username.pwl & d 308 to verify its correctness. Crypted username(20 bytes) is saved at offset 0x208 of *.pwl */
return 0;
}
访问http://168.168.18.11:81/etechbase/advsearch.php将您的问题输入查询内容框,选择不同的精确程度,即可以找到你所需要的答案。效果还是可以的。