[FLUG] hview

  • From: m27 <mVentisette@xxxxxxxxx>
  • To: "fanolug" <fanolug@xxxxxxxxxxxxx>
  • Date: Fri, 3 Jan 2003 18:45:55 +0100

Mailing List del Fortunae LUG
============================
Ciao a tutti.

... ecco a voi la mia ultima fatica.
PREMESSA: utilità prossima allo 0, almeno per me. Non scandalizzatevi se ho 
fatto un codice veramente pietoso, perchè 1 non so il C, 2 non sono neppure 
ordinato.

hview: E' una funzioncina che se gli passi il puntatore al primo char di un 
pacchetto IP, manda in output sullo schermo una graziosa rappresentazione di 
tutti i bits del pacchetto stesso. Come da premessa il codice fà veramente 
schifo e sicuramente ci sono migliaia di modi migliori per fare quello che ho 
fatto io.

Segue un echo client UDP da usare in localhost che mostra il funzionamento di 
hview, una cosa graziosa è dare queste configurazioni a iptables in modo da 
confrontare i risultati di hview e quello che dice il kernel:

iptables -A INPUT -j LOG --log-prefix "[INPUT]"
iptables -A OUTPUT -j LOG --log-prefix "[OUTPUT]"

---CODE---
/*Non servono tutte ...*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<netdb.h>

#include<netinet/ip.h>
#include<netinet/udp.h>
#include<netinet/in.h>
#include<sys/types.h>
#include<sys/socket.h>

/*Il solito check*/
unsigned short cksum(unsigned short *ptr, int nbytes);
/*bin*/
void bin(unsigned char *dec, char *bin);
/*hview*/
void hview(char *pkt, char mode);

int main(int argc, char **argv)
{
        char    resp_count,request_count;
        char    buffer[1024],resp[1024];
        char    *pkg,   *request;

        struct  iphdr   *ip;
        struct  udphdr  *udp;
        struct  pseudohdr {
                unsigned long   saddr;
                unsigned long   daddr;
                char            useless;
                unsigned char   protocol;
                unsigned short  length;
        }pseudo_udp;

        int     socket_id,ip_on=1;
        struct  sockaddr_in addr;

        ssize_t n_read;

        if(argc <= 1)
        {
                printf("Usage: %s \"Request String\"\n",argv[0]);
                exit(-1);
        }
        else 
        {
        request = argv[1];
                for(request_count = 2;request_count < argc;request_count++)
                {
                        strcat(request,argv[request_count]);
                }
        }
        
        pkg = (char *) malloc(sizeof(struct iphdr)+sizeof(struct 
udphdr)+strlen(request));
        ip = (struct iphdr *) pkg;
        
        ip->version     = 4;
        ip->ihl         = 5;
        ip->tos         = 0x00;
        ip->tot_len     = sizeof(struct iphdr)+sizeof(struct 
udphdr)+strlen(request);
        ip->id          = 0x00;
        ip->frag_off    = 0x00;
        ip->ttl         = 0xFF;
        ip->protocol    = IPPROTO_UDP;
        ip->saddr       = inet_addr("127.0.0.1");
        ip->daddr       = inet_addr("127.0.0.1");
        ip->check       = cksum((unsigned short *)ip,sizeof(ip));

        pseudo_udp.saddr    = inet_addr("127.0.0.1");
        pseudo_udp.daddr    = inet_addr("127.0.0.1");
        pseudo_udp.useless  = htons(0);
        pseudo_udp.protocol = IPPROTO_UDP;
        pseudo_udp.length   = sizeof(struct udphdr) + strlen(request);

        udp = (struct udphdr *) (pkg+sizeof(struct iphdr));

        udp->source     = htons(79);
        udp->dest       = htons(79);
        udp->len        = htons(sizeof(struct udphdr) + strlen(request));
        /*checl del udp ... se va bene ...*/
        udp->check      = cksum((unsigned short *)&pseudo_udp, sizeof(struct 
udphdr) + 
sizeof(struct pseudohdr));

        memcpy(&pkg[sizeof(struct iphdr)+sizeof(struct 
udphdr)],request,strlen(request));
        socket_id = socket(AF_INET,SOCK_RAW,IPPROTO_UDP);
        if(socket_id == -1)
        {
                perror("socket");
                return -1;
        }
        if(setsockopt(socket_id,IPPROTO_IP,IP_HDRINCL,&ip_on,sizeof(int)) == -1)
        {
                perror("setsockopt");
                return -1;
        }

        addr.sin_family      = AF_INET;
        addr.sin_port        = htons(79);
        addr.sin_addr.s_addr = inet_addr("127.0.0.1");

        memset(resp,'\0',1024);

        puts("L'IP header che invio io ...");
        hview(pkg,1);

        if(sendto(socket_id,pkg,ip->tot_len,0,(struct sockaddr 
*)&addr,sizeof(struct 
sockaddr_in)) == -1)
        {
                perror("sendto");
                return -1;
        }
        while(strlen(resp) == 0)
        {
                read(socket_id,resp,1024);
        }

        puts("L'IP header che ricevo ...");
        hview(resp,1);

        puts("Ed il server rispose ...");
        resp_count = sizeof(struct iphdr)+sizeof(struct udphdr);
        while(resp[resp_count] > 0)
        {
                printf("%c",resp[resp_count]);
                resp_count++;
        }
        printf("\n");

        close(socket_id);

        return 0;
}
/*Funzione del check
 * Purtroppo non mi dato a conoscere chi abbia scritto per primo
 * questa funzione, alcuni dicono l'autore del Ping, comunque
 * chiunque esso si va il mio ringraziamento. Se qualcuno sa chi e'
 * mi piacerebbe me lo facesse sapere
 * */
unsigned short cksum(unsigned short *ptr, int nbytes)
{
        register long                  sum;
        unsigned short                 oddbyte;
        register unsigned short        answer;
        sum = 0;
        while (nbytes > 1)
        {
                sum += *ptr++;
                nbytes -= 2;
        }
        if (nbytes == 1)
        {
                oddbyte = 0;
                *((u_char *) &oddbyte) = *(u_char *)ptr;
                sum += oddbyte;
        }
        sum  = (sum >> 16) + (sum & 0xffff);
        sum += (sum >> 16);
        answer = ~sum;

        return((unsigned short) answer);
}

void hview(char *pkt, char mode)
{
/*Version e IHL*/
        char *b_verihl;
        unsigned char verihl    = *pkt;
/*Type of Service*/
        char *b_tos;
        unsigned char tos       = *(pkt+1);
/*Total Lenght byte1*/
        char *b_tl1;
        unsigned char tl1       = *(pkt+2);
/*Total Lenght byte2*/
        char *b_tl2;
        unsigned char tl2       = *(pkt+3);
/*Identification byte1*/
        char *b_id1;
        unsigned char id1       = *(pkt+4);
/*Identification byte2*/
        char *b_id2;
        unsigned char id2       = *(pkt+5);
/*Flags*/
        char *b_flags;
        unsigned char flags     = *(pkt+6);
/*Frag OffSet*/
        char *b_frag;
        unsigned char frag      = *(pkt+7);
/*TTl*/
        char *b_ttl;
        unsigned char ttl       = *(pkt+8);
/*Protocol*/
        char *b_protocol;
        unsigned char protocol  = *(pkt+9);
/*CheckSum byte 1*/
        char *b_check1;
        unsigned char check1    = *(pkt+10);
/*CheckSum byte 2*/
        char *b_check2;
        unsigned char check2    = *(pkt+11);
/*Source byte 1*/
        char *b_s1;
        unsigned char s1        = *(pkt+12);
/*Source byte 2*/
        char *b_s2;
        unsigned char s2        = *(pkt+13);
/*Source byte 3*/
        char *b_s3;
        unsigned char s3        = *(pkt+14);
/*Source byte 4*/
        char *b_s4;
        unsigned char s4        = *(pkt+15);
/*Destination byte 1*/
        char *b_d1;
        unsigned char d1        = *(pkt+16);
/*Destination byte 2*/
        char *b_d2;
        unsigned char d2        = *(pkt+17);
/*Destination byte 3*/
        char *b_d3;
        unsigned char d3        = *(pkt+18);
/*Destination byte 4*/
        char *b_d4;
        unsigned char d4        = *(pkt+19);

/*Version e IHL*/
        b_verihl = malloc(8*sizeof(char));
        memset(b_verihl,'\0',8);
        bin(&verihl,b_verihl);
/*Type of Service*/
        b_tos = malloc(8*sizeof(char));
        memset(b_tos,'\0',8);
        bin(&tos,b_tos);
/*Total Lenght byte1*/
        b_tl1 = malloc(8*sizeof(char));
        memset(b_tl1,'\0',8);
        bin(&tl1,b_tl1);
/*Total Lenght byte2*/
        b_tl2 = malloc(8*sizeof(char));
        memset(b_tl2,'\0',8);
        bin(&tl2,b_tl2);
/*Identification byte1*/
        b_id1 = malloc(8*sizeof(char));
        memset(b_id1,'\0',8);
        bin(&tl2,b_id1);
/*Identification byte 2*/
        b_id2 = malloc(8*sizeof(char));
        memset(b_id2,'\0',8);
        bin(&id2,b_id2);
/*Flags*/
        b_flags = malloc(8*sizeof(char));
        memset(b_flags,'\0',8);
        bin(&flags,b_flags);
/*Frag OffSet*/
        b_frag = malloc(8*sizeof(char));
        memset(b_frag,'\0',8);
        bin(&frag,b_frag);
/*TTL*/
        b_ttl = malloc(8*sizeof(char));
        memset(b_ttl,'\0',8);
        bin(&ttl,b_ttl);
/*Protocol*/
        b_protocol = malloc(8*sizeof(char));
        memset(b_protocol,'\0',8);
        bin(&protocol,b_protocol);
/*CheckSum byte 1*/
        b_check1 = malloc(8*sizeof(char));
        memset(b_check1,'\0',8);
        bin(&check1,b_check1);
/*CheckSum byte 2*/
        b_check2 = malloc(8*sizeof(char));
        memset(b_check2,'\0',8);
        bin(&check2,b_check2);
/*Source byte 1*/
        b_s1 = malloc(8*sizeof(char));
        memset(b_s1,'\0',8);
        bin(&s1,b_s1);
/*Source byte 2*/
        b_s2 = malloc(8*sizeof(char));
        memset(b_s2,'\0',8);
        bin(&s2,b_s2);
/*Source byte 3*/
        b_s3 = malloc(8*sizeof(char));
        memset(b_s3,'\0',8);
        bin(&s3,b_s3);
/*Source byte 4*/
        b_s4 = malloc(8*sizeof(char));
        memset(b_s4,'\0',8);
        bin(&s4,b_s4);
/*Destination byte 1*/
        b_d1 = malloc(8*sizeof(char));
        memset(b_d1,'\0',8);
        bin(&d1,b_d1);
/*Destination byte 2*/
        b_d2 = malloc(8*sizeof(char));
        memset(b_d2,'\0',8);
        bin(&d2,b_d2);
/*Destination byte 3*/
        b_d3 = malloc(8*sizeof(char));
        memset(b_d3,'\0',8);
        bin(&d3,b_d3);
/*Destination byte 4*/
        b_d4 = malloc(8*sizeof(char));
        memset(b_d4,'\0',8);
        bin(&d4,b_d4);

if(mode == 0){
/*Version e IHL*/
        printf("%c",*b_verihl);
        printf("%c",*(b_verihl+1));
        printf("%c",*(b_verihl+2));
        printf("%c",*(b_verihl+3));
        printf("%c",*(b_verihl+4));
        printf("%c",*(b_verihl+5));
        printf("%c",*(b_verihl+6));
        printf("%c ",*(b_verihl+7));
/*Type of Service*/
        printf("%c",*b_tos);
        printf("%c",*(b_tos+1));
        printf("%c",*(b_tos+2));
        printf("%c",*(b_tos+3));
        printf("%c",*(b_tos+4));
        printf("%c",*(b_tos+5));
        printf("%c",*(b_tos+6));
        printf("%c ",*(b_tos+7));
/*Total Lenght byte1*/
        printf("%c",*b_tl1);
        printf("%c",*(b_tl1+1));
        printf("%c",*(b_tl1+2));
        printf("%c",*(b_tl1+3));
        printf("%c",*(b_tl1+4));
        printf("%c",*(b_tl1+5));
        printf("%c",*(b_tl1+6));
        printf("%c ",*(b_tl1+7));
/*Total Lenght byte2*/
        printf("%c",*b_tl2);
        printf("%c",*(b_tl2+1));
        printf("%c",*(b_tl2+2));
        printf("%c",*(b_tl2+3));
        printf("%c",*(b_tl2+4));
        printf("%c",*(b_tl2+5));
        printf("%c",*(b_tl2+6));
        printf("%c\n",*(b_tl2+7));
/*Identification byte1*/
        printf("%c",*b_id1);
        printf("%c",*(b_id1+1));
        printf("%c",*(b_id1+2));
        printf("%c",*(b_id1+3));
        printf("%c",*(b_id1+4));
        printf("%c",*(b_id1+5));
        printf("%c",*(b_id1+6));
        printf("%c ",*(b_id1+7));
/*Identification byte 2*/
        printf("%c",*b_id2);
        printf("%c",*(b_id2+1));
        printf("%c",*(b_id2+2));
        printf("%c",*(b_id2+3));
        printf("%c",*(b_id2+4));
        printf("%c",*(b_id2+5));
        printf("%c",*(b_id2+6));
        printf("%c ",*(b_id2+7));
/*Flags*/
        printf("%c",*b_flags);
        printf("%c",*(b_flags+1));
        printf("%c",*(b_flags+2));
        printf("%c",*(b_flags+3));
        printf("%c",*(b_flags+4));
        printf("%c",*(b_flags+5));
        printf("%c",*(b_flags+6));
        printf("%c ",*(b_flags+7));
/*Frag OffSet*/
        printf("%c",*b_frag);
        printf("%c",*(b_frag+1));
        printf("%c",*(b_frag+2));
        printf("%c",*(b_frag+3));
        printf("%c",*(b_frag+4));
        printf("%c",*(b_frag+5));
        printf("%c",*(b_frag+6));
        printf("%c\n",*(b_frag+7));
/*TTL*/
        printf("%c",*b_ttl);
        printf("%c",*(b_ttl+1));
        printf("%c",*(b_ttl+2));
        printf("%c",*(b_ttl+3));
        printf("%c",*(b_ttl+4));
        printf("%c",*(b_ttl+5));
        printf("%c",*(b_ttl+6));
        printf("%c ",*(b_ttl+7));
/*Protocol*/
        printf("%c",*b_protocol);
        printf("%c",*(b_protocol+1));
        printf("%c",*(b_protocol+2));
        printf("%c",*(b_protocol+3));
        printf("%c",*(b_protocol+4));
        printf("%c",*(b_protocol+5));
        printf("%c",*(b_protocol+6));
        printf("%c ",*(b_protocol+7));
/*CheckSum byte 1*/
        printf("%c",*b_check1);
        printf("%c",*(b_check1+1));
        printf("%c",*(b_check1+2));
        printf("%c",*(b_check1+3));
        printf("%c",*(b_check1+4));
        printf("%c",*(b_check1+5));
        printf("%c",*(b_check1+6));
        printf("%c ",*(b_check1+7));
/*CheckSum byte 2*/
        printf("%c",*b_check2);
        printf("%c",*(b_check2+1));
        printf("%c",*(b_check2+2));
        printf("%c",*(b_check2+3));
        printf("%c",*(b_check2+4));
        printf("%c",*(b_check2+5));
        printf("%c",*(b_check2+6));
        printf("%c\n",*(b_check2+7));
/*Source byte 1*/
        printf("%c",*b_s1);
        printf("%c",*(b_s1+1));
        printf("%c",*(b_s1+2));
        printf("%c",*(b_s1+3));
        printf("%c",*(b_s1+4));
        printf("%c",*(b_s1+5));
        printf("%c",*(b_s1+6));
        printf("%c ",*(b_s1+7));
/*Source byte 2*/
        printf("%c",*b_s2);
        printf("%c",*(b_s2+1));
        printf("%c",*(b_s2+2));
        printf("%c",*(b_s2+3));
        printf("%c",*(b_s2+4));
        printf("%c",*(b_s2+5));
        printf("%c",*(b_s2+6));
        printf("%c ",*(b_s2+7));
/*Source byte 3*/
        printf("%c",*b_s3);
        printf("%c",*(b_s3+1));
        printf("%c",*(b_s3+2));
        printf("%c",*(b_s3+3));
        printf("%c",*(b_s3+4));
        printf("%c",*(b_s3+5));
        printf("%c",*(b_s3+6));
        printf("%c ",*(b_s3+7));
/*Source byte 4*/
        printf("%c",*b_s4);
        printf("%c",*(b_s4+1));
        printf("%c",*(b_s4+2));
        printf("%c",*(b_s4+3));
        printf("%c",*(b_s4+4));
        printf("%c",*(b_s4+5));
        printf("%c",*(b_s4+6));
        printf("%c\n",*(b_s4+7));
/*Destination byte 1*/
        printf("%c",*b_d1);
        printf("%c",*(b_d1+1));
        printf("%c",*(b_d1+2));
        printf("%c",*(b_d1+3));
        printf("%c",*(b_d1+4));
        printf("%c",*(b_d1+5));
        printf("%c",*(b_d1+6));
        printf("%c ",*(b_d1+7));
/*Destination byte 2*/
        printf("%c",*b_d2);
        printf("%c",*(b_d2+1));
        printf("%c",*(b_d2+2));
        printf("%c",*(b_d2+3));
        printf("%c",*(b_d2+4));
        printf("%c",*(b_d2+5));
        printf("%c",*(b_d2+6));
        printf("%c ",*(b_d2+7));
/*Destination byte 3*/
        printf("%c",*b_d3);
        printf("%c",*(b_d3+1));
        printf("%c",*(b_d3+2));
        printf("%c",*(b_d3+3));
        printf("%c",*(b_d3+4));
        printf("%c",*(b_d3+5));
        printf("%c",*(b_d3+6));
        printf("%c ",*(b_d3+7));
/*Destination byte 4*/
        printf("%c",*b_d4);
        printf("%c",*(b_d4+1));
        printf("%c",*(b_d4+2));
        printf("%c",*(b_d4+3));
        printf("%c",*(b_d4+4));
        printf("%c",*(b_d4+5));
        printf("%c",*(b_d4+6));
        printf("%c\n",*(b_d4+7));
}
else if(mode == 1)
{
/*PICTURE MODE*/
printf("                   IP - HEADER\n");
printf("0                     15-16                    31\n");
printf("+-----+-----+-----------+-----------------------+\n");
printf("| Ver | IHL |    TOS    |      Total Length     |\n");
printf("| ");
/*Version e IHL*/
        printf("%c",*b_verihl);
        printf("%c",*(b_verihl+1));
        printf("%c",*(b_verihl+2));
        printf("%c",*(b_verihl+3));
printf("|");
        printf("%c",*(b_verihl+4));
        printf("%c",*(b_verihl+5));
        printf("%c",*(b_verihl+6));
        printf("%c",*(b_verihl+7));
printf(" | ");
/*TOS*/
        printf("%c",*b_tos);
        printf("%c",*(b_tos+1));
        printf("%c",*(b_tos+2));
        printf("%c",*(b_tos+3));
        printf("%c",*(b_tos+4));
        printf("%c",*(b_tos+5));
        printf("%c",*(b_tos+6));
        printf("%c",*(b_tos+7));
printf("  |  ");
/*Total Lenght byte 1*/
        printf("%c",*b_tl1);
        printf("%c",*(b_tl1+1));
        printf("%c",*(b_tl1+2));
        printf("%c",*(b_tl1+3));
        printf("%c",*(b_tl1+4));
        printf("%c",*(b_tl1+5));
        printf("%c",*(b_tl1+6));
        printf("%c",*(b_tl1+7));
printf("   ");
/*Total Lenght byte 2*/
        printf("%c",*b_tl2);
        printf("%c",*(b_tl2+1));
        printf("%c",*(b_tl2+2));
        printf("%c",*(b_tl2+3));
        printf("%c",*(b_tl2+4));
        printf("%c",*(b_tl2+5));
        printf("%c",*(b_tl2+6));
        printf("%c",*(b_tl2+7));
printf("  |\n");

printf("+-----+-----+-----------+------+----------------+\n");
printf("|    Identification     | Flags|    Frag Offset |\n");
printf("|  ");
/*Identification byte 1*/
        printf("%c",*b_id1);
        printf("%c",*(b_id1+1));
        printf("%c",*(b_id1+2));
        printf("%c",*(b_id1+3));
        printf("%c",*(b_id1+4));
        printf("%c",*(b_id1+5));
        printf("%c",*(b_id1+6));
        printf("%c",*(b_id1+7));
printf("   ");
/*Identification byte 2*/
        printf("%c",*b_tl2);
        printf("%c",*(b_tl2+1));
        printf("%c",*(b_tl2+2));
        printf("%c",*(b_tl2+3));
        printf("%c",*(b_tl2+4));
        printf("%c",*(b_tl2+5));
        printf("%c",*(b_tl2+6));
        printf("%c",*(b_tl2+7));
printf("  |   ");
/*Flags*/
        printf("%c",*b_frag);
        printf("%c",*(b_frag+1));
        printf("%c",*(b_frag+2));
printf("| ");
        printf("%c",*(b_frag+3));
        printf("%c",*(b_frag+4));
        printf("%c",*(b_frag+5));
        printf("%c",*(b_frag+6));
        printf("%c",*(b_frag+7));
printf(" ");
/*Frag OffSet*/
        printf("%c",*b_frag);
        printf("%c",*(b_frag+1));
        printf("%c",*(b_frag+2));
        printf("%c",*(b_frag+3));
        printf("%c",*(b_frag+4));
        printf("%c",*(b_frag+5));
        printf("%c",*(b_frag+6));
        printf("%c",*(b_frag+7));
printf(" |\n");

printf("+-----------+-----------+------+----------------+\n");
printf("|    TTL    |  Protocol |    Header Checksum    |\n");
printf("|  ");
/*TTL*/
        printf("%c",*b_ttl);
        printf("%c",*(b_ttl+1));
        printf("%c",*(b_ttl+2));
        printf("%c",*(b_ttl+3));
        printf("%c",*(b_ttl+4));
        printf("%c",*(b_ttl+5));
        printf("%c",*(b_ttl+6));
        printf("%c",*(b_ttl+7));
printf(" | ");
/*Protocol*/
        printf("%c",*b_protocol);
        printf("%c",*(b_protocol+1));
        printf("%c",*(b_protocol+2));
        printf("%c",*(b_protocol+3));
        printf("%c",*(b_protocol+4));
        printf("%c",*(b_protocol+5));
        printf("%c",*(b_protocol+6));
        printf("%c",*(b_protocol+7));
printf("  |  ");
/*CheckSum byte 1*/
        printf("%c",*b_check1);
        printf("%c",*(b_check1+1));
        printf("%c",*(b_check1+2));
        printf("%c",*(b_check1+3));
        printf("%c",*(b_check1+4));
        printf("%c",*(b_check1+5));
        printf("%c",*(b_check1+6));
        printf("%c",*(b_check1+7));
printf("   ");
/*CheckSum byte 2*/
        printf("%c",*b_check2);
        printf("%c",*(b_check2+1));
        printf("%c",*(b_check2+2));
        printf("%c",*(b_check2+3));
        printf("%c",*(b_check2+4));
        printf("%c",*(b_check2+5));
        printf("%c",*(b_check2+6));
        printf("%c",*(b_check2+7));
printf("  |\n");

printf("+-----------+-----------+-----------------------+\n");
printf("|               Source Ip Address               |\n");
/*Source byte 1*/
printf("|  ");
        printf("%c",*b_s1);
        printf("%c",*(b_s1+1));
        printf("%c",*(b_s1+2));
        printf("%c",*(b_s1+3));
        printf("%c",*(b_s1+4));
        printf("%c",*(b_s1+5));
        printf("%c",*(b_s1+6));
        printf("%c",*(b_s1+7));
printf("   ");
/*Source byte 2*/
        printf("%c",*b_s2);
        printf("%c",*(b_s2+1));
        printf("%c",*(b_s2+2));
        printf("%c",*(b_s2+3));
        printf("%c",*(b_s2+4));
        printf("%c",*(b_s2+5));
        printf("%c",*(b_s2+6));
        printf("%c",*(b_s2+7));
printf("     ");
/*Source byte 3*/
        printf("%c",*b_s3);
        printf("%c",*(b_s3+1));
        printf("%c",*(b_s3+2));
        printf("%c",*(b_s3+3));
        printf("%c",*(b_s3+4));
        printf("%c",*(b_s3+5));
        printf("%c",*(b_s3+6));
        printf("%c",*(b_s3+7));
printf("   ");
/*Source byte 4*/
        printf("%c",*b_s4);
        printf("%c",*(b_s4+1));
        printf("%c",*(b_s4+2));
        printf("%c",*(b_s4+3));
        printf("%c",*(b_s4+4));
        printf("%c",*(b_s4+5));
        printf("%c",*(b_s4+6));
        printf("%c",*(b_s4+7));
printf("  |\n");

printf("+-----------------------------------------------+\n");
printf("|             Destination Ip Address            |\n");
/*Destination byte 1*/
printf("|  ");
        printf("%c",*b_d1);
        printf("%c",*(b_d1+1));
        printf("%c",*(b_d1+2));
        printf("%c",*(b_d1+3));
        printf("%c",*(b_d1+4));
        printf("%c",*(b_d1+5));
        printf("%c",*(b_d1+6));
        printf("%c",*(b_d1+7));
printf("   ");
/*Destination byte 2*/
        printf("%c",*b_d2);
        printf("%c",*(b_d2+1));
        printf("%c",*(b_d2+2));
        printf("%c",*(b_d2+3));
        printf("%c",*(b_d2+4));
        printf("%c",*(b_d2+5));
        printf("%c",*(b_d2+6));
        printf("%c",*(b_d2+7));
printf("     ");
/*Destination byte 3*/
        printf("%c",*b_d3);
        printf("%c",*(b_d3+1));
        printf("%c",*(b_d3+2));
        printf("%c",*(b_d3+3));
        printf("%c",*(b_d3+4));
        printf("%c",*(b_d3+5));
        printf("%c",*(b_d3+6));
        printf("%c",*(b_d3+7));
printf("   ");
/*Destination byte 4*/
        printf("%c",*b_d4);
        printf("%c",*(b_d4+1));
        printf("%c",*(b_d4+2));
        printf("%c",*(b_d4+3));
        printf("%c",*(b_d4+4));
        printf("%c",*(b_d4+5));
        printf("%c",*(b_d4+6));
        printf("%c",*(b_d4+7));
printf("  |\n");
printf("+-----------------------------------------------+\n");
}//End if(mode)
}

void bin(unsigned char *dec, char *bin)
{
        int ctrl;
        char output[7];

        for(ctrl = 0;ctrl <= 5;ctrl++)
        {
                output[ctrl] = *dec%2;
                *dec = (unsigned char)*dec/2;
        }

        output[6] = *dec%2;
        output[7] = (unsigned char)*dec/2;

        for(ctrl = 0;ctrl <= 7;ctrl++)
        {
                if(output[7 - ctrl] == 0)
                        memset(bin+ctrl,48,1);
                else if(output[7 - ctrl] == 1)
                        memset(bin+ctrl,49,1);
        }

}

---CODE---

ciao a tutti!
--
Gecco è bravo... bello e bravo! (cit.)

Other related posts:

  • » [FLUG] hview