Exemplo n.º 1
0
static const char *print_a2(const char *val, const rnode *r)
{
	int machine = r->machine, syscall = r->syscall;
	char *out;
	const char *sys = audit_syscall_to_name(syscall, machine);
	if (sys) {
		if (strncmp(sys, "fcntl", 5) == 0) {
			int ival;

			errno = 0;
			ival = strtoul(val, NULL, 16);
		        if (errno) {
                		asprintf(&out, "conversion error(%s)", val);
	                	return out;
	        	}
			switch (r->a1)
			{
				case F_SETOWN:
					return print_uid(val, 16);
				case F_SETFD:
					if (ival == FD_CLOEXEC)
						return strdup("FD_CLOEXEC");
					/* Fall thru okay. */
				case F_SETFL:
				case F_SETLEASE:
				case F_GETLEASE:
				case F_NOTIFY:
					break;
			}
		} else if (strcmp(sys, "openat") == 0)
			return print_open_flags(val);
		else if (strcmp(sys, "fchmodat") == 0)
			return print_mode_short(val);
		else if (strstr(sys, "chown"))
			return print_gid(val, 16);
                else if (strcmp(sys, "setresuid") == 0)
			return print_uid(val, 16);
                else if (strcmp(sys, "setresgid") == 0)
			return print_gid(val, 16);
		else if (strcmp(sys, "tgkill") == 0)
			return print_signals(val, 16);
		else if (strcmp(sys, "mkdirat") == 0)
			return print_mode_short(val);
		else if (strcmp(sys, "mmap") == 0)
			return print_prot(val, 1);
		else if (strcmp(sys, "mprotect") == 0)
			return print_prot(val, 0);
                else if (strcmp(sys, "socket") == 0)
			return print_socket_proto(val);
		else if (strcmp(sys, "clone") == 0)
			return print_clone_flags(val);
                else if (strcmp(sys, "recvmsg") == 0)
			return print_recv(val);
	}
	return strdup(val);
}
Exemplo n.º 2
0
Arquivo: myls.c Projeto: yumm007/C
static void print_file_info(const struct stat *file_st, const struct print_f *format) {

	print_mode(file_st->st_mode, format->mode_flag);
	print_nlink(file_st->st_nlink, format->link_flag);
	print_uid(file_st->st_uid, format->id_name_flag);
	print_gid(file_st->st_gid, format->id_name_flag);
	print_size(file_st->st_size, format->size_flag);
	print_time(file_st, format->date_flag, format->time_form);

	return;
}
Exemplo n.º 3
0
static const char *print_a1(const char *val, const rnode *r)
{
	int machine = r->machine, syscall = r->syscall;
	const char *sys = audit_syscall_to_name(syscall, machine);
	if (sys) {
		if (strcmp(sys, "open") == 0)
			return print_open_flags(val);
		else if (strcmp(sys, "epoll_ctl") == 0)
			return print_epoll_ctl(val);
		else if (strcmp(sys, "chmod") == 0)
			return print_mode_short(val);
		else if (strcmp(sys, "fchmod") == 0)
			return print_mode_short(val);
		else if (strstr(sys, "chown"))
			return print_uid(val, 16);
                else if (strcmp(sys, "setreuid") == 0)
			return print_uid(val, 16);
                else if (strcmp(sys, "setresuid") == 0)
			return print_uid(val, 16);
                else if (strcmp(sys, "setregid") == 0)
			return print_gid(val, 16);
                else if (strcmp(sys, "setresgid") == 0)
			return print_gid(val, 16);
		else if (strcmp(sys, "kill") == 0)
			return print_signals(val, 16);
		else if (strcmp(sys, "tkill") == 0)
			return print_signals(val, 16);
		else if (strcmp(sys, "mkdir") == 0)
			return print_mode_short(val);
		else if (strcmp(sys, "creat") == 0)
			return print_mode_short(val);
		else if (strncmp(sys, "fcntl", 5) == 0)
			return print_fcntl_cmd(val);
		else if (strcmp(sys, "mknod") == 0)
			return print_mode(val, 16);
                else if (strcmp(sys, "socket") == 0)
			return print_socket_type(val);
	}
	return strdup(val);
}
Exemplo n.º 4
0
Arquivo: ls.c Projeto: akat1/impala
void
long_entry(const char *file, const struct stat *st)
{
    printf("%s%s %2u %7s %7s %10u %s\n",
        print_serial(st),
        mode2str(st->st_mode),
        st->st_nlink,
        print_uid(st),
        print_gid(st),
        st->st_size,
        print_name(file, st)
     );
}
Exemplo n.º 5
0
static const char *print_a0(const char *val, const rnode *r)
{
	int machine = r->machine, syscall = r->syscall;
	const char *sys = audit_syscall_to_name(syscall, machine);
	if (sys) {
		if (strcmp(sys, "rt_sigaction") == 0)
                        return print_signals(val, 16);
                else if (strcmp(sys, "setuid") == 0)
			return print_uid(val, 16);
                else if (strcmp(sys, "setreuid") == 0)
			return print_uid(val, 16);
                else if (strcmp(sys, "setresuid") == 0)
			return print_uid(val, 16);
                else if (strcmp(sys, "setfsuid") == 0)
			return print_uid(val, 16);
                else if (strcmp(sys, "setgid") == 0)
			return print_gid(val, 16);
                else if (strcmp(sys, "setregid") == 0)
			return print_gid(val, 16);
                else if (strcmp(sys, "setresgid") == 0)
			return print_gid(val, 16);
                else if (strcmp(sys, "setfsgid") == 0)
			return print_gid(val, 16);
                else if (strcmp(sys, "clock_settime") == 0)
			return print_clock_id(val);
                else if (strcmp(sys, "personality") == 0)
			return print_personality(val);
                else if (strcmp(sys, "ptrace") == 0)
			return print_ptrace(val);
                else if (strstr(sys, "etrlimit"))
			return print_rlimit(val);
                else if (strcmp(sys, "socket") == 0)
			return print_socket_domain(val);
	}
	return strdup(val);
}
Exemplo n.º 6
0
static void interpret(char *name, char *val, int comma, int rtype)
{
	int type;

	while (*name == ' '||*name == '(')
		name++;


	/* Do some fixups */
	if (rtype == AUDIT_EXECVE && name[0] == 'a')
		type = T_ESCAPED;
	else if (rtype == AUDIT_AVC && strcmp(name, "saddr") == 0)
		type = -1;
	else if (strcmp(name, "acct") == 0) {
		// Remove trailing punctuation
		int len = strlen(val);
		if (val[len-1] == ':')
			val[len-1] = 0;

		if (val[0] == '"')
			type = T_ESCAPED;
		else if (is_hex_string(val))
			type = T_ESCAPED;
		else
			type = -1;
	} else
		type = audit_lookup_type(name);

	switch(type) {
		case T_UID:
			print_uid(val);
			break;
		case T_GID:
			print_gid(val);
			break;
		case T_SYSCALL:
			print_syscall(val);
			break;
		case T_ARCH:
			print_arch(val);
			break;
		case T_EXIT:
			print_exit(val);
			break;
		case T_ESCAPED:
			print_escaped(val);
			break;
		case T_PERM:
			print_perm(val);
			break;
		case T_MODE:
			print_mode(val);
			break;
		case T_SOCKADDR:
			print_sockaddr(val);
			break;
		case T_FLAGS:
			print_flags(val);
			break;
		case T_PROMISC:
			print_promiscuous(val);
			break;
		case T_CAPABILITY:
			print_capabilities(val);
			break;
		case T_SIGNAL:
			print_signals(val);
			break;
		case T_KEY:
			print_key(val);
			break;
		case T_LIST:
			print_list(val);
			break;
		case T_TTY_DATA:
			print_tty_data(val);
			break;
		default:
			printf("%s%c", val, comma ? ',' : ' ');
	}
}
Exemplo n.º 7
0
// process characters at a time for commands
char
command(void)
{
	S16	ret=0;
	IPADDR	t;
	U8		*u;

	readln_from_a_file((FILE*)stdin, command_buffer, CMD_MAX_SIZE);

	yprintf("command in = %s\n",command_buffer);

			if(command_buffer[0]=='?')
			{
				// Attach to service
				printf("Supported Commands:\n");
				printf("	r - restart\n");
				printf("	e - drop next tunnel rx packet\n");
				printf("	m - check status of memory allocator\n");
				printf("	p - change port\n");
				printf("	s - status\n");
				printf("	y - startup proxy\n");
				printf("	c - connect\n");
				printf("	w - send wakup command (ping server and clients)\n");
                printf("    i - send direct message (specify uid and msg)\n");
#if defined(WEB_SSL)
				printf("    ssl on - enable ssl\n");
				printf("    ssl off - disable ssl\n");
#endif
				printf("	f - files from share target (fl - directory list...)\n");
				printf("	d - Get device List (only works if yoicsid client.)\n");

				printf("\n    q to quit bcaster\n");
				printf("\n    x to exit right now without cleanup.\n");

			}
			else
			 if(command_buffer[0]=='r')
			{
				// Attach to service
				printf("Reconnect to Weaved Service...\n");
				Yoics_reconnect();
				//printf("current state %s\n",server_state_string[state]);
			}
			else if(command_buffer[0]=='p')
			{
				printf("Swapping local port to %d\n",Yoics_Change_Port(0));
			}
			else if(command_buffer[0]=='w')
			{
				printf("Wakeup Command\n");
				send_ping(PING_STANDARD);
				Yoics_Session_Force_Ping();
#if defined(TRACE_LOG)
                traceDump();            // Tracedump just for test
#endif
			}
			else if (command_buffer[0]=='c')
			{
				// connect
				printf("sending connect request for ");
				print_uid(Remote_Address);
				printf("\n");
				//Session_create(&Remote_Address, 0);	////+++ remote address right?
#if defined(BCASTER)				
				ret=Yoics_Session_create(Remote_Address);
				if(-1== ret )
				{
					printf("Initiate session create faild\n");
				}
				else if(-2==ret)
				{
					printf("Initiate session create faild, no slots left\n");
				}
				else
					printf("OK ret= %d\n",ret);
#endif
#if defined(BUILD_SHARE)				
				new_share=Share_Connect(Remote_Address,&share_app_callback);
			
				if(0== new_share )
				{
					printf("Initiate session create faild\n");
				}
				else
					printf("OK ret= %d\n",ret);
#endif
				//yoics_connect(Remote_Address);
			}
			else if (command_buffer[0]=='m')
			{
#if ALLOC_DEBUG
				alloc_check();
#else
				alloc_stat();
#endif
				alloc_pool_check(pool);
			}
			else if (command_buffer[0]=='s')
			{

#if defined(WEB_SSL)
				if (!strcmp(command_buffer,"ssl on")) {
					printf("Turn on SSL\n");

					//
					// Set the web port to ssl port
					//
					webPort = WEB_PORT_SSL;

					//
					// Enable SSL module
					Yoics_Set_SSL(SSL_ENABLE);

				}
				else if (!strcmp (command_buffer, "ssl off")) {

					printf("Turn off SSL\n");

					//
					// Set the web port to non SSL port
					//
					webPort = WEB_PORT;

					//
					// Disable SSL module
					//
					Yoics_Set_SSL (SSL_DISABLE);
				}
				else 
#endif
				{
					t=Yoics_Get_Current_Server();
					u=Yoics_Current_UID();
					printf("server state is %d -- 0)Uconn 1)rstart 2)NATchk 3)ReqAuth 4)ID 5)Conn\n",Yoics_Server_Connection_State());
					printf("  server is %d.%d.%d.%d:%d\n",t.ipb1,t.ipb2,t.ipb3,t.ipb4,(U16)Yoics_Get_Current_Server_Port());
					printf("  key hash is %x:%x\n",secret[0],secret[1]);
					printf("  server spi is 0x%X\n",(unsigned int)Yoics_Return_Server_SPI());
					printf("Our UID is %.2x:%.2x:%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
					u[0],u[1],u[2],u[3],u[4],u[5],u[6],u[7]);
					printf("Our Serial Number is %.2x:%.2x:%.2x:%.2x:%.2x:%.2x:%.2x:%.2x\n",
					serial_num[0],serial_num[1],serial_num[2],serial_num[3],serial_num[4],serial_num[5],
					serial_num[6],serial_num[7]);
					t=Yoics_Get_Our_Bound_IP();
					printf("Our bound ip:port is %d.%d.%d.%d:%d\n",t.ipb1,t.ipb2,t.ipb3,t.ipb4,Yoics_Get_Our_Bound_Port());
					t=Yoics_Get_Our_Mapped_IP();
					printf("Our mapped ip:port is %d.%d.%d.%d:%d -  UPNP/NAT-PMP mapped port is %d\n",t.ipb1,t.ipb2,t.ipb3,t.ipb4,Yoics_Get_Our_Mapped_Port(),parameters.upnp_port);
					printf("Last server hearbeat %u seconds ago\n",(U32)((U32)second_count()-(U32)server_hearbeat));					
					printf("Our NAT type is %d\n",Yoics_Return_NAT_Type());
                    printf("Forward Port is %d\n\n",parameters.forward_port);
					alloc_stat();
					printf("\nActive Sessions %d\n",active_sessions);
					printf("\nSession List\n");
					Yoics_session_list();
					printf("\nProxy Status\n");
					proxy_status();
				}
			}
			else if (command_buffer[0]=='e')
			{
				//printf("Drop next tun data packet.\n");
				//tunnel_drop(tun_num);
			}
			else if (command_buffer[0]=='y')
			{
				if(sindex)
				{
					if(proxy_local_port==0)
						proxy_local_port=5959;
					printf("Starting Proxy on port %d.\n",proxy_local_port);

					if(proxy_client_start(proxy_ip,proxy_local_port, restrict_connect_ip, sindex))
					//if(proxy_start(proxy_ip,proxy_local_port))
						printf("Proxy started.\n");
					else
						printf("proxy startup failed.\n");
				}
				else
				{
					printf("must be connected to peer first\n");
				}
			}
			else if (command_buffer[0]=='d')
			{
				printf("Device List:\n");

#if !defined(BCASTER)			
				if(YOICS_SERVER_CONNECTED==Yoics_Server_Connection_State())
				{
					DEVICE devlist[10];
					char	server_name[32];
					int		tt;
					IPADDR	answer;
					// Get current server IP and make it into a string
					answer=Yoics_Get_Current_Server();

					sprintf(server_name,"%d.%d.%d.%d",answer.ipb1,answer.ipb2,answer.ipb3,answer.ipb4);					
					
					tt=Yoics_Get_Device_List(server_name, webPort, 5000, devlist, 10, 1);

					printf("found %d entries\n",tt);
				
				}
				else
					printf("Must be connected to service to issue this command\n");
#endif				

			}
			else if (command_buffer[0]=='z')
			{
                U8* crash;
				yprintf("Force SIG 11:\n");
                crash=0;
                *crash="c";                                         // This is correct, it forces a crash!  Ignore this warning in compile
				//session_list();
			}
			else if (command_buffer[0]=='q')
			{
				ret=EXIT;
			}
			else if (command_buffer[0]=='x')
			{
                DEBUG4("Free Pool x\n");
	            free_pool();
#if defined(TRACE_LOG)
                traceCleanup();
#endif
				exit(0);
				ret=EXIT;
			}
			else if (command_buffer[0]=='i')
			{
                int len;
                U8* tptr;
                char tpack[255];
                U8 tuid[32];
                YOICSPACKET	*pkt;
                pkt=(YOICSPACKET*)tpack;
                 //
                // Create a map peer
                //
                pkt->packet_type	= htons(PING_MSG);		
                pkt->source			= htons(TARGET_FORWARD);				// not done yet
                len					= sizeof(YOICSPACKET);
                pkt->salt			= 0;
                pkt->spi			= 0;
                tptr=pkt->data;	
                //
                // Add our UID
                //
	            tptr=yoics_add_data(tptr,CLIENTUID,my_uid,UID_SIZE);
	            len+=UID_SIZE+sizeof(DATATYPE);

                //
                // Add Null Type to finish the message
                //
                yoics_add_data(tptr,NULLTYPE,0,0);
                len+=sizeof(DATATYPE);
                //
				// send direct message using packet forwarder
                //
                UID_Extract(&tuid[0],"80:00:00:05:46:00:26:e7");
                send_packet_forward(tuid, (U8*)tpack ,len);

			}
			else
			{
			yprintf("unknown command = %s\n",command_buffer);
			}

	return((S8)ret);

}