الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

help in C

مغلق
بدأه valntinolove في 9 يونيو 2007 · 0 رد · 297 مشاهدة · في ارشيف قسم C/C++
مشاركة: واتساب X فيسبوك تيليجرام
#1

سلام عليكم شباب

1انا كان عنجى مشكله فى برنامج بيبحث عن كلمه فى ملفات .ini فى نفس المجلد و بعدين ياخد اللى بعدها يعنى المفروض ان الملفات هيبقا فيها الكلمه دى

password=132456789amramramraa123456789123

طبعا المفروض ان اللى بعد password دى md5 password انا عايزهم بقا فى ملف لوحدهم و عملت البرنامج ده

#include<stdio.h>
#include<stdlib.h>
#define BUFSIZE 100
#define hashsize 33

main()
{

char *loc,buf[80],buf2[80]="password=";
int i;
FILE *fp,*fs;

	  system("type *.ini >> list1.text");

	  if((fp=fopen("list1.text","r"))==NULL)
	  {
	  fprintf(stderr, "Error opening file.\n");}
	  if((fs=fopen("hash.text","a+"))==NULL)
	  {
	  fprintf(stderr, "Error opening file.\n");}
		  rewind(fp);
		  while(!feof(fp)){

		  if(fgets(buf,BUFSIZE,fp)==NULL)


			   loc = strstr(buf, buf2);
				 if ( loc == NULL )
 printf("No match was found.\n");
 else{

  if ( (fseek(fp,(loc-buf)+12,SEEK_CUR)) != 0)
				 {
					  fprintf(stderr, "Error....\n");
					  exit(1);}
					  else{
						   for(i=0;i<hashsize;i++){
									   fprintf(fs,"%c",getc(fp));}
									   fprintf(fs,"\n");
										fclose(fp);
										fclose(fs);
										remove("list1.text");
									   return 0; }}}}

انما الكود ده بياخد اول باسورد بس يعنى انا عايز اعملو فى loop لحد اما يجيب eof

و حطيطو فى موقع اجنبى و كان ردهم عليه انهم عملو كود تانى خالص

#include <stdio.h> 
#include <stdlib.h> 

/* Enhanced Sean Eshbaugh search function 
   copies 32 bytes after buffer into file 
   returns number of instances of string  */ 
int fSearch(FILE *fp, char *string) 
{ 
	FILE * fs; 
	int count = 0, i; 
	int position = 0; 
	int fsize = 0; 
	int bsize = strlen(string); 
	char* buf = malloc(bsize); 

	if ((!fp)||(!string)){return count;} 
	fs = fopen("hash.txt", "w+"); 
	if(!fs){return count;} 

	fseek(fp,0,SEEK_END); 
	fsize = ftell(fp); 
	fseek(fp,0,SEEK_SET); 

	if (!fsize){return count;} 
	if (bsize > fsize){return count;} 
	if (!buf){return count;} 

	while (position < fsize - bsize){ 
		fseek(fp,position,SEEK_SET); 
		fread(buf,1,bsize,fp); 

		if (!memcmp(buf,string,bsize)){ 
			fseek(fp,position+bsize,SEEK_SET); 
			for(i=0; i < 33; i++){ 
				fprintf(fs,"%c",getc(fp)); 
			} 

			fprintf(fs,"\n"); 
			count++; 
		} 

		position++; 
	} 
	fclose(fs); 
	free(buf); 
	return count; 
} 

int main(void) 
{ 
	FILE *fp; 
	int check = 0; 
	char *string = "password="; 

	system("type *.ini >> list.txt"); 
	fp = fopen("list.txt", "r"); 
	if(!fp){ 
		printf("Error opening .ini file\n"); 
		return -1; 
	} 

	check = fSearch(fp, string); 
	if(check > 0){ 
		printf("[------------- Great success! ------------]\n\n"); 
		printf("passes found: %5d\n", check); 
		printf("passes located:  hash.txt\n\n"); 
		printf("[-------------  End success!  ------------]\n\n"); 

		system("PAUSE");

	}else{ 
		printf("No success.\n"); 
	} 

	fclose(fp);
	remove("list.txt"); 
	return 0; 

}

هوا طبعا منظم اكتر منو انما انا مش فاهم فيه حاجات ياريت توضحهوالى

يعنى مثلا ل يه استخدم

fseek(fp,0,SEEK_END);

fsize = ftell(fp);

fseek(fp,0,SEEK_SET);

و معملش rewind(fp)

و دى بردو مش فاهمها

while (position < fsize - bsize){

ايه دخل طول الكلمه بى مكان المؤشر فى الملف

و دى بردو ايه لزمتها

position++;

انا عارف انى طولت عليكو :D انما دى اخر واحده خلاص

memcmp ازاى بتسخدم الداله دى و ايه وظيفتها

هذا الموضوع مغلق.

مواضيع مشابهة