Esempio n. 1
0
static int 
initialize_session_( uint index )
{
	kernel_vars_t *kv;
	ulong kv_phys;
	
	if( g_sesstab->magic == 1 )
		return -EMOLSECURITY;

	/* printk("initialize_session\n" ); */
	if( g_sesstab->kvars[index] )
		return -EMOLINUSE;

	if( !g_num_sessions && perform_actions() )
		return -EMOLGENERAL;
	
	if( !(kv=alloc_kvar_pages()) )
		goto error;

	memset( kv, 0, NUM_KVARS_PAGES * 0x1000 );
	kv->session_index = index;
	kv->kvars_virt = kv;
	kv_phys = tophys_mol(kv);
	kv->kvars_tophys_offs = kv_phys - (ulong)kv;

	if( init_mmu(kv) )
		goto error;

	init_host_irqs(kv);
	initialize_spr_table( kv );

	msr_altered( kv );

	g_num_sessions++;

	g_sesstab->kvars_ph[index] = kv_phys;
	g_sesstab->kvars[index] = kv;

	return 0;
 error:
	if( !g_num_sessions )
		cleanup_actions();
	if( kv )
		free_kvar_pages( kv );
	return -EMOLGENERAL;
}
int main(int argc, char **argv)
{
	
    
    if(argc < 4)
    {
    	printf("Usage: ./decryption_client [ServerHost] [ServerPort] [FilePath]\n"); 
    	return 0;
    }
    

    
    //printf("argc %d\n",argc);
    
    
    
    
	struct sockaddr_in serv_addr;
	
	for(int k = 0; k < argc-3; k++)
	{
		int sockfd[argc-3], portno;
		struct hostent *server;
		char host[30];
    
	    strcpy(host,argv[1]);
		portno = atoi(argv[2]);
		char input_file[300];
	
		
		strcpy(input_file,argv[3+k]);
		
		sockfd[k] = socket(AF_INET, SOCK_STREAM, 0);
		
		if (sockfd[k] < 0) 
		{	
			char err_msg[30] = "ERROR opening socket";
		    perror(err_msg);
		}
		
		server = gethostbyname(host);
		
		if (server == NULL) {
		    fprintf(stderr,"ERROR, no such host\n");
		    exit(0);
		}
		
		bzero((char *) &serv_addr, sizeof(serv_addr));
		serv_addr.sin_family = AF_INET;
		memcpy
		(
			(char *)&serv_addr.sin_addr.s_addr,
			(char *)server->h_addr,
		     server->h_length
		);
		serv_addr.sin_port = htons(portno);
		
		int k = connect(sockfd[k],(struct sockaddr *)&serv_addr,sizeof(serv_addr));

		if (k < 0) 
		{	
			char err_msg[30] = "ERROR connecting";
		    perror(err_msg);
		}	
	
		perform_actions(sockfd[k],input_file);
	
	
		close(sockfd[k]);
	}
    
	return 0;
}