int checkArgs(Flags flags) { /*if( 1 == flags.fret ) { if( 1 != flags.ffileName ) // no ShellCode loaded { abort_("[!] You must define a shellcode file before resizing it\n"); } if( 8 != strlen(flags.ret) ) { abort_("[!] Return address must be exactly 4 bytes (eight characters)"); } // check the char set for ret: if( EXIT_FAILURE == isHexa(flags.ret) ) { abort_("[!] Return address must be hexadecimal format\n"); } }*/ if( 1 == flags.fbadchar ) { if( 0 != ( strlen(flags.badchar) % 2 ) ) { abort_("[!] Bad chars must be encoded in two digits modes\n"); } if( EXIT_FAILURE == isHexa(flags.badchar) ) { abort_("[!] Bad chars must be encoded in hexa format\n"); } } if( 1 == flags.fsize ) { if( 1 != flags.ffileName ) // no ShellCode loaded { abort_("[!] You must define a shellcode file before resizing it\n"); } } if( 1 == flags.fpad ) { if( 1 != flags.fsize ) { abort_("[!] You must define shellcode size before padding it.\n"); } } if( 1 == flags.fdisplay ) { if( 1 != flags.ffileName ) // no ShellCode loaded { abort_("[!] You must define a shellcode file before displaying it\n"); } } if( 1 == flags.fexecute ) { if( 1 != flags.ffileName ) // no ShellCode loaded { abort_("[!] You must define a shellcode file before executing it\n"); } } return EXIT_SUCCESS; }
double solve(){ int t; double num = 0; for(t= 286;;++t){ num = (double)t*(t+1)/2; if (isPenta(num) && isHexa(num) ){ return num; } } }
int readDico(char* dico_name) { FILE* dico_file=NULL; dico_file = fopen (dico_name, "r"); if (dico_file == NULL) { WARNING_MSG("Can't open dictionnary file '%s'",dico_name); return 1; } char line[INPUT_SIZE]; char normalized_line[INPUT_SIZE]; int i,j,k; do { getFromScript(dico_file,line); string_standardise(line, normalized_line); } while (normalized_line[0]=='\0'); //on obtient le nombre d'entrée du dico sscanf(line, "%d",&nbinstr); //retour d'erreur ? dico_data=calloc(nbinstr,sizeof(dico_info)); for ( i = 0; i < nbinstr; ++i) { k=0; do { if(feof(dico_file)) { WARNING_MSG("End of dictionnary file reached, incorrect number of entry"); return -1; } getFromScript(dico_file,line); string_standardise(line, normalized_line); } while (normalized_line[0]=='\0'); char* word; //printf("%s\n",normalized_line ); if(nextword(&word, normalized_line,&k)) { strcpy(dico_data[i].name,word); // printf("%s\n",dico_data[i].name ); } else { ERROR_MSG("Error reading name in dictionnary for entry %d",i); } if((nextword(&word, normalized_line,&k))&& (isHexa(word))) { dico_data[i].mask=strtol(word,NULL,16); } //Recuperation du masque else { ERROR_MSG("Error reading mask in dictionnary for entry %d",i); } if((nextword(&word, normalized_line,&k))&& (isHexa(word))) { dico_data[i].instr=strtol(word,NULL,16); } //Recuperation de la signature else { ERROR_MSG("Error reading instr in dictionnary for entry %d",i); } if((nextword(&word, normalized_line,&k))) { //Recuperation du type if(!strcmp(word,"r")||!strcmp(word,"R")) { dico_data[i].type=0; } else if (!strcmp(word,"i")||!strcmp(word,"I")) { dico_data[i].type=1; } else if (!strcmp(word,"j")||!strcmp(word,"J")) { dico_data[i].type=2; } else { ERROR_MSG("Error reading type in dictionnary for entry %d",i); } } else { ERROR_MSG("Error reading type in dictionnary for entry %d",i); } if((nextword(&word, normalized_line,&k))&& (isDecimal(word))) { dico_data[i].nb_arg=strtol(word,NULL,10); } //Recuperation du nombre d'arguments else { ERROR_MSG("Error reading number of arg in dictionnary for entry %d",i); } for (j = 0; j < dico_data[i].nb_arg; ++j) //Boucle { if((nextword(&word, normalized_line,&k))) { //printf("%s,%d,%d\n",word,i,j); strcpy(dico_data[i].argname[j],word); //Recuperation de leurs noms } else { ERROR_MSG("Error reading argument dictionnary for entry %d, argument %d",i,j); } } if((nextword(&word, normalized_line,&k))) { WARNING_MSG("Too much argument in dictionnary data for instruction %d",i); } //Ajout des pointeurs de fonctions if(!strcmp(dico_data[i].name,"ADD")) { dico_data[i].exec=ADD; } if(!strcmp(dico_data[i].name,"ADDI")) { dico_data[i].exec=ADDI; } if(!strcmp(dico_data[i].name,"ADDIU")) { dico_data[i].exec=ADDIU; } if(!strcmp(dico_data[i].name,"ADDU")) { dico_data[i].exec=ADDU; } if(!strcmp(dico_data[i].name,"AND")) { dico_data[i].exec=AND; } if(!strcmp(dico_data[i].name,"ANDI")) { dico_data[i].exec=ANDI; } if(!strcmp(dico_data[i].name,"BEQ")) { dico_data[i].exec=BEQ; } if(!strcmp(dico_data[i].name,"BGEZ")) { dico_data[i].exec=BGEZ; } if(!strcmp(dico_data[i].name,"BGTZ")) { dico_data[i].exec=BGTZ; } if(!strcmp(dico_data[i].name,"BLEZ")) { dico_data[i].exec=BLEZ; } if(!strcmp(dico_data[i].name,"BLTZ")) { dico_data[i].exec=BLTZ; } if(!strcmp(dico_data[i].name,"BNE")) { dico_data[i].exec=BNE; } if(!strcmp(dico_data[i].name,"BREAK")) { dico_data[i].exec=BREAKprog; } if(!strcmp(dico_data[i].name,"DIV")) { dico_data[i].exec=DIV; } if(!strcmp(dico_data[i].name,"J")) { dico_data[i].exec=J; } if(!strcmp(dico_data[i].name,"JAL")) { dico_data[i].exec=JAL; } if(!strcmp(dico_data[i].name,"JALR")) { dico_data[i].exec=JALR; } if(!strcmp(dico_data[i].name,"JR")) { dico_data[i].exec=JR; } if(!strcmp(dico_data[i].name,"LB")) { dico_data[i].exec=LB; } if(!strcmp(dico_data[i].name,"LBU")) { dico_data[i].exec=LBU; } if(!strcmp(dico_data[i].name,"LUI")) { dico_data[i].exec=LUI; } if(!strcmp(dico_data[i].name,"LW")) { dico_data[i].exec=LW; } if(!strcmp(dico_data[i].name,"MFHI")) { dico_data[i].exec=MFHI; } if(!strcmp(dico_data[i].name,"MFLO")) { dico_data[i].exec=MFLO; } if(!strcmp(dico_data[i].name,"MULT")) { dico_data[i].exec=MULT; } if(!strcmp(dico_data[i].name,"NOP")) { dico_data[i].exec=NOP; } if(!strcmp(dico_data[i].name,"OR")) { dico_data[i].exec=OR; } if(!strcmp(dico_data[i].name,"ORI")) { dico_data[i].exec=ORI; } if(!strcmp(dico_data[i].name,"XOR")) { dico_data[i].exec=XOR; } if(!strcmp(dico_data[i].name,"SB")) { dico_data[i].exec=SB; } if(!strcmp(dico_data[i].name,"SW")) { dico_data[i].exec=SW; } if(!strcmp(dico_data[i].name,"SEB")) { dico_data[i].exec=SEB; } if(!strcmp(dico_data[i].name,"SLL")) { dico_data[i].exec=SLL; } if(!strcmp(dico_data[i].name,"SRA")) { dico_data[i].exec=SRA; } if(!strcmp(dico_data[i].name,"SRL")) { dico_data[i].exec=SRL; } if(!strcmp(dico_data[i].name,"SLT")) { dico_data[i].exec=SLT; } if(!strcmp(dico_data[i].name,"SLTI")) { dico_data[i].exec=SLTI; } if(!strcmp(dico_data[i].name,"SLTIU")) { dico_data[i].exec=SLTIU; } if(!strcmp(dico_data[i].name,"SLTU")) { dico_data[i].exec=SLTU; } if(!strcmp(dico_data[i].name,"SUB")) { dico_data[i].exec=SUB; } if(!strcmp(dico_data[i].name,"SUBU")) { dico_data[i].exec=SUBU; } if(!strcmp(dico_data[i].name,"SYSCALL")) { dico_data[i].exec=SYSCALL; } } //tri dico pour éviter les mauvaises combi mask/instr, // la flemme d'implémenter un tri fusion i=0; dico_info temp; while(i<nbinstr) { if (dico_data[i].mask<dico_data[i+1].mask) { memcpy(&temp,&dico_data[i+1],sizeof(dico_info)); memcpy(&dico_data[i+1],&dico_data[i],sizeof(dico_info)); memcpy(&dico_data[i],&temp,sizeof(dico_info)); i=0; } else i++; } return 0; }