#include "stdio.h" #include "stdlib.h" #include "string.h" void main( int argc, char *argv[ ], char *envp[ ] ) { FILE *OUTstream; FILE *INstream; char LineRead[4096]; char LineWrite[4096]; char Temp[200]; int len=0; int i=0; //open input file if( (INstream = fopen(argv[1], "r" )) == NULL ) { printf( "Error opening input file\n" ); exit(1); } //open output file if( (OUTstream = fopen(argv[2], "w" )) == NULL ) { printf( "Error opening output file\n" ); exit(1); } //parse file while (fgets(LineRead,sizeof(LineRead),INstream)) { if ((strcmp(LineRead,"\n")) != 0) { //determin string length len=strlen(LineRead); strncpy(Temp,LineRead,len - 1); //construct virus name string sprintf(LineWrite,":%s%s",Temp,","); //print to outfut file fprintf(OUTstream,"%s%s",LineWrite,"\n"); //zero out temp space memset(Temp,'\0',sizeof(Temp)); while (fgets(LineRead,sizeof(LineRead),INstream)) { len=strlen(LineRead); if (len > 1) { //initialize the beginning of the virus signature string strcpy(Temp,"\"\\x"); while (i < len) { //append hex byte address if (strncmp(&LineRead[i]," ",1) == 0) { strncat(Temp,"\\x",2); } else { if (strncmp(&LineRead[i],"\n",1) != 0) strncat(Temp,&LineRead[i],1); } i++; } //end the virus signature string strncat(Temp,"\"#",2); //print to outfut file fprintf(OUTstream,"%s%s",Temp,"\n"); fprintf(OUTstream,"%s","\n"); break; } } i=0; } memset(LineRead,'\0',sizeof(LineRead)); memset(Temp,'\0',sizeof(Temp)); } //close all streams fclose(INstream); fclose(OUTstream); }