#include #include #include #include #include #include #include void ignore(int a) {} int main(int argc,char *argv[]) { int i; struct sockaddr sa; signal(SIGALRM,exit); alarm(10); unsigned int sl=sizeof(sa); char host[256]; char serv[256]; char iface[256]; char *name[16]; getpeername(0,&sa,&sl); //this function is nifty as shit. getnameinfo(&sa,sl,host,256,serv,256,NI_NUMERICHOST); printf("connecting from: %s port %s\n",host,serv); fflush(stdout); printf("select interface:\n"); fflush(stdout); system("/bin/cat /etc/interfaces | /usr/bin/tr '\n' ' ' | /usr/bin/fold"); fflush(stdout); fgets(iface,sizeof(iface)-1,stdin); for(i=0;iface[i];i++) { if((iface[i] >= 'a' && iface[i] <= 'z') || (iface[i] >= '0' && iface[i] <= '9')) { } else { iface[i]=0; } } alarm(60); name[0]="/usr/sbin/tcpdump"; name[1]="-c10"; name[2]="-ni"; name[3]=iface; name[4]="host"; name[5]=host; name[6]="and"; name[7]="proto"; name[8]="UDP"; name[9]=0; execv(name[0],name); return printf("shit fucked.\n"); }