Example #1
0
int
display_status( FILE * out, struct CONN * conn, enum STATUS status )
/* display a "status banner" */
{
    char *client_name;
    char *server_name;
    char *s_time;
    char *status_string;

    if ( flags.notstatus ) {
        /* FIXME: sucks! and what if out will be a file? */
        return 0;
    }

    client_name=(char *)lookup(conn->client.ip);

    s_time = (char *)S_calloc( 128, 1 );

    if( time_ascii( s_time ) )
        color( c_TIME, out,"%-16s ",s_time ); /* FIXME: check */

    color( c_NUMBERING, out,"%-6d ",conn->num );
    S_free ( s_time );

    status_string = status2str( status );

    color( _STATUS_COLOR(status),
           out,"%-14s",status_string );

    S_free( status_string );

    color( c_CLIENTNAME_STATUS, out, " %s:%s ",
           client_name,
           getportname(conn->client.port) );

    color( _STATUS_COLOR(status), out,"> " );

    server_name=(char *)lookup(conn->server.ip);

    color( c_SERVERNAME_STATUS, out,"%s",
           server_name );

    fprintf( out,":" );

    color( c_SERVICE, out,"%s",
           getportname(conn->server.port) );

    fprintf( out, "\n" );
    fflush( out );
}
Example #2
0
int display_header( FILE * out )
/* displays a banner for the header of the packet sniffed */
{   /* FIXME: sucks */
    char * source = NULL;
    char * dest   = NULL;
    char * s_time = (char *)S_calloc(128,1);
    source=(char *)lookup(ippacket->ip_src);
    debug("[display_header]: source(%x)",source);
    debug("[display_header]: source=%s",source);

    if( time_ascii(s_time) )
        color ( c_TIME, out,"%-16s ",s_time );


    color( c_CLIENTNAME_HEADER, out,"%s",source );

    fprintf(out,":");

    color( c_SERVICE_HEADER, out,"%s ",getportname(tcppacket->source) );

    if(tcppacket->urg)
        color(c_FLAGS, out,"U");
    if(tcppacket->ack)
        color(c_FLAGS, out,"A");
    if(tcppacket->psh)
        color(c_FLAGS, out,"P");
    if(tcppacket->rst)
        color(c_FLAGS, out,"R");
    if(tcppacket->syn)
        color(c_FLAGS, out,"S");
    if(tcppacket->fin)
        color(c_FLAGS, out,"F");


    dest = (char *)lookup( ippacket->ip_dst );

    color(c_DIRECTION, out," > ");

    color(c_SERVERNAME_HEADER, out,"%s",dest);

    fprintf(out,":");

    color(c_SERVICE_HEADER, out,"%s",getportname(tcppacket->dest));

    fprintf(out," (%i)\n",payload_len);

    fflush(out);

}
Example #3
0
int
interpret_udp(int flags, struct udphdr *udp, int iplen, int fraglen)
{
	char *data;
	int udplen;
	int sunrpc;
	char *pname;
	char buff [32];

	if (fraglen < sizeof (struct udphdr))
		return (fraglen);	/* incomplete header */

	data = (char *)udp + sizeof (struct udphdr);
	udplen = ntohs((ushort_t)udp->uh_ulen) - sizeof (struct udphdr);
	fraglen -= sizeof (struct udphdr);
	if (fraglen > udplen)
		fraglen = udplen;

	if (flags & F_SUM) {
		(void) sprintf(get_sum_line(),
			"UDP D=%d S=%d LEN=%d",
			ntohs(udp->uh_dport),
			ntohs(udp->uh_sport),
			ntohs((ushort_t)udp->uh_ulen));
	}

	sunrpc = !reservedport(IPPROTO_UDP, ntohs(udp->uh_dport)) &&
		!reservedport(IPPROTO_UDP, ntohs(udp->uh_sport)) &&
		valid_rpc(data, udplen);

	if (flags & F_DTAIL) {
		show_header("UDP:  ", "UDP Header", udplen);
		show_space();
		(void) sprintf(get_line((char *)(uintptr_t)udp->uh_sport -
		    dlc_header, 1), "Source port = %d", ntohs(udp->uh_sport));

		if (sunrpc) {
			pname = "(Sun RPC)";
		} else {
			pname = getportname(IPPROTO_UDP, ntohs(udp->uh_dport));
			if (pname == NULL) {
				pname = "";
			} else {
				(void) sprintf(buff, "(%s)", pname);
				pname = buff;
			}
		}
		(void) sprintf(get_line((char *)(uintptr_t)udp->uh_dport -
		    dlc_header, 1), "Destination port = %d %s",
		    ntohs(udp->uh_dport), pname);
		(void) sprintf(get_line((char *)(uintptr_t)udp->uh_ulen -
		    dlc_header, 1), "Length = %d %s",
		    ntohs((ushort_t)udp->uh_ulen),
		    udplen > fraglen ?
			"(Not all data contained in this fragment)"
			: "");
		    (void) sprintf(get_line((char *)(uintptr_t)udp->uh_sum -
			dlc_header, 1),	"Checksum = %04X %s",
			ntohs(udp->uh_sum),
			udp->uh_sum == 0 ? "(no checksum)" : "");
		show_space();
	}


	/* go to the next protocol layer */

	if (!interpret_reserved(flags, IPPROTO_UDP,
		ntohs(udp->uh_sport),
		ntohs(udp->uh_dport),
		data, fraglen)) {
		if (fraglen > 0 && sunrpc)
			interpret_rpc(flags, data, fraglen, IPPROTO_UDP);
	}

	return (fraglen);
}