Pasword Displaying

Started by aruljothi, Mar 31, 2009, 11:17 AM

Previous topic - Next topic

aruljothi

# 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];
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];     /* Resourse allocation table */

   if(argc<2){
         printf("usage: glide filename (username)");
         exit(1);
   }
   /* Read PWL file */

   fd=fopen(argv[1],"rb");
   if(fd==NULL){
              printf("can't open file %s",argv[1]);
              exit(1);
   }
   size=0;
   while(!feof(fd)){
         Data[size++]=fgetc(fd);
   }
   size--;
   fclose(fd);

   /* Find Username */
   name=argv[1];
   if(argc>2)name=argv[2];
   printf("Username:%s
",name);

   /* Copy encrypted text into keystream */
   cracked=size-0x0208;
   if(cracked<0)cracked=0;
   if(cracked>1000)cracked=1000;
   memcpy(keystream,Data+0x208,cracked);

   /* Generate 20 bytes of keystream */
   for(i=0;i<20;i++){
         ch=toupper(name);
         if(ch==0)break;
         if(ch=='.')break;
         keystream^=ch;
   };
   cracked=20;

   /* Find allocated resources */

   sizemask=keystream[0]+(keystream[1]<<8);
   printf("Sizemask:%04X
",sizemask);

   for(i=0;i<256;i++){
         if(Data!=0xff){
                        Rall[Data]++;
                        if(Data>maxr)maxr=Data;
         }
   }

   maxr=(((maxr/16)+1)*16); /* Resourse pointer table size appears to be
   divisible by 16 */

   /*Search after resources */

   Rpoint[0]=0x0208+2*maxr+20+2; /* First resources */
   for(i=0;i<maxr;i++){
            /* Find the size of current resourse */
            pos=Rpoint;
            rsz=Data[pos]+(Data[pos+1]<<8);
            rsz^=sizemask;
            printf("Analysing block with size:%04x   (%d:%d)
",rsz,i,Rall);
            if((Rall==0)&&(rsz!=0)){
                        printf("Unused resourse has nonzero size!!!
");
                        printf("If last line produed any:You may try to recover
");
                        printf("Press y to attempt the recovery
");
                        ch=getch();
                        if(ch!='y')exit(0);
                        rsz=2;
                        i=i-1;
            }
            pos=pos+rsz;

            /* Resourse have a tedency to have the wrong size for some reason*/
            /* Chech for correct size*/

            if(i<maxr-1){
                        while(Data[pos+3]!=keystream[1]){
                                          printf(":",Data[pos+3]);
                                          pos=pos+2; /* Very rude may fail */
                        }
            }
            pos+=2; /* Include pointer in size */
            Rpoint[i+1]=pos;
   }
   Rpoint[maxr]=size;
   /* Insert Table data into keystream*/
   for(i=0;i<=maxr;i++){
               keystream[20+2*i]^=Rpoint & 0x00ff;
               keystream[21+2*i]^=(Rpoint>>8) & 0x00ff;
   }
   cracked+=maxr*2+2;
   printf("%d Bytes of ketstream recoverd
",cracked);

   /* Decrypt resources */
   for(i=0;i<maxr;i++){
                     rsz=Rpoint[i+1]-Rpoint;
                     if(rsz>cracked)rsz=cracked;
                     printf("Resource[%d](%d)
",i,rsz);
                     for(j=0;j<rsz;j++)
                     printf("%c",Data[Rpoint+j]^keystream[j]);
                     printf("This software is developed By Arsalan Danish with
cooperation of Mohammad Mehdi");
");
   }
   exit(0);
}