/* fzem/fzem_fuzz.c 02.25.2009 fzem Krakow Labs Development [www.krakowlabs.com] -> fzem "MUA security just met its match" rush@KL (Jeremy Brown) [rush[at]krakowlabs[dot]com] UI Module -> fzem.tar.gz Associated Files & Information: http://www.krakowlabs.com/dev/fuz/fzem/fzem http://www.krakowlabs.com/dev/fuz/fzem/fzem.c.txt http://www.krakowlabs.com/dev/fuz/fzem/fzem_fuzz.c.txt http://www.krakowlabs.com/dev/fuz/fzem/core.h.txt http://www.krakowlabs.com/dev/fuz/fzem/fuzz.h.txt http://www.krakowlabs.com/dev/fuz/fzem/Makefile.txt http://www.krakowlabs.com/dev/fuz/fzem/fzem_doc.txt http://www.krakowlabs.com/dev/fuz/fzem/fzem.tar.gz http://www.krakowlabs.com/dev/fuz/fzem/fzem.jpeg fzem/fzem_fuzz.c */ #include #include #include #include #include #include #include #include void fzem_usage(char *prog); void fzem_engine(int port, int mode, int debug, char *cfd, char *chd, int r); void fzem_list_hdr(void); void fzem_list_fzorc(void); void fzem_usage(char *prog) { printf("\n Krakow Labs Development [www.krakowlabs.com] -> fzem"); printf("\n \"MUA security just met its match\""); printf("\n rush@KL (Jeremy Brown) [rush[at]krakowlabs[dot]com]\n"); printf("\nUsage: %s -P [port] [-D debug]\n", prog); printf("\nModes: -s [smtp/responses] xOPTIONS: -F -K/-E\n"); printf("\n -F [smtp/resp/custom fuzz data]"); printf("\n -K [smtp/resp/fuzz ok responses]"); printf("\n -E [smtp/resp/fuzz error responses]\n"); printf("\n -p [pop/headers] xOPTIONS: -F -H"); printf("\n -H [pop/hdrs/custom fuzz header]"); printf("\n -F [pop/hdrs/custom fuzz data]\n"); printf("\n -o [pop/responses] xOPTIONS: -F -K/-E\n"); printf("\n -F [pop/resp/custom fuzz data]"); printf("\n -K [pop/resp/fuzz ok responses]"); printf("\n -E [pop/resp/fuzz error responses]\n"); printf("\n -i [imap/responses] xOPTIONS: -F -K/-E\n"); printf("\n -F [pop/resp/custom fuzz data]"); printf("\n -K [pop/resp/fuzz ok responses]"); printf("\n -E [pop/resp/fuzz error responses]\n"); printf("\nList: -O [fuzzing oracle] -R [mail/mime headers]\n"); printf("\nExample: Fuzz POP3 + OK responses + DEBUG --> %s -o -K -D\n\n", prog); exit(1); } void fzem_counter(int *cnum) { (*cnum)++; } int main(int argc, char *argv[]) { char *cfd = NULL, *chd = NULL, opt; int smtpr = 0, poph = 0, popr = 0, imapr = 0, debug = 0, r = 0, port; while ((opt = getopt(argc, argv, "spoiORDKEF:H:P:")) != EOF) { switch(opt) { case 's': smtpr = 1; port = 25; break; case 'p': poph = 2; port = 110; break; case 'o': popr = 3; port = 110; break; case 'i': imapr = 4; port = 143; break; case 'K': r = 1; break; case 'E': r = 2; break; case 'O': fzem_list_fzorc(); break; case 'R': fzem_list_hdr(); break; case 'F': cfd = optarg; break; case 'H': chd = optarg; break; case 'D': debug = 1; break; case 'P': port = atoi(optarg); break; default: fzem_usage(argv[0]); break; } } if((smtpr == 0) && (poph == 0) && (popr == 0) && (imapr == 0)) fzem_usage(argv[0]); if((r == 0) && (poph == 0)) fzem_usage(argv[0]); if(smtpr == 1) fzem_engine(port, smtpr, debug, cfd, chd, r); if(poph == 2) fzem_engine(port, poph, debug, cfd, chd, r); if(popr == 3) fzem_engine(port, popr, debug, cfd, chd, r); if(imapr == 4) fzem_engine(port, imapr, debug, cfd, chd, r); return 0; }