سلام عليكم شباب
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 ازاى بتسخدم الداله دى و ايه وظيفتها