¿Cómo guardar los paquetes capturados en LibreOffice Calc en lugar de un archivo txt usando el programa c socket?

My project is about capturing the packets in promiscuous mode in the client side and processing it (distinguishing between tcp,udp,icmp)in server side which is done using C socket code in ubuntu 13.04.

The Output is stored in a txt file as of now,but i want to save those packet fields in the cells in LibreOffice Calc, so that i can edit the cells in the sense choose only those packets which are needed.

I do not know whether its possible to do it? Can anybody please help me if its possible?and also how to do it?

My output txt file looks this way(only udp packet is shown here)

 This Report is from the Task agent whose IP is 127.0.0.1


 ***********************UDP Packet*************************

Ethernet Header
|-Destination Address : 01-00-5E-00-00-02 
|-Source Address      : 00-00-0C-07-AC-3B 
|-Protocol            : 8 

IP Header
|-IP Version        : 4
|-IP Header Length  : 5 DWORDS or 20 Bytes
|-Type Of Service   : 192
|-IP Total Length   : 48  Bytes(Size of Packet)
|-Identification    : 0
|-TTL      : 1
|-Protocol : 17
|-Checksum : 61927
|-Source IP        : 172.16.59.3
|-Destination IP   : 224.0.0.2

UDP Header
|-Source Port      : 1985
|-Destination Port : 1985
|-UDP Length       : 28
|-UDP Checksum     : 42701

IP Header
01 00 5E 00 00 02 00 00 0C 07 AC 3B 08 00 45 C0         ..^........;..E.
00 30 00 00                                             .0..
UDP Header
00 00 01 11 F1 E7 AC 10                                 ........
Data Payload
00 00 10 03 0A 6E 3B 00 63 69 73 63 6F 00 00 00         .....n;.cisco...
AC 10 3B 01 00 00 00 00 00 00 00 00 00 00 00 00         ..;.............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00                                       ......

###########################################################

I need to save all these fields in the cells(rows). How can i do it??


edited part

This is how i process the packet in the server side

FILE *logfile;
int infile;
struct sockaddr_in source,dest;
int tcp=0,udp=0,icmp=0,others=0,igmp=0,total=0,i,j;

int main()
{
int saddr_size,data_size;  
struct sockaddr saddr;   
unsigned char *buffer3 = (unsigned char *) malloc(1024);
char *fname = "/home/shishira/Desktop/packet_capture/task_agent_processed.txt";
infile=open("info_agent_report.txt",O_RDONLY);
if(infile==-1)
 {
    perror("cannot open info_agent_report file\n");
    return(1);
 }  

logfile=fopen("task_agent_processed.txt","w");
if(logfile==NULL)
 {
printf("Unable to create task_agent_processed file.");
 }

printf("\n Starting..\n");
saddr_size = sizeof saddr;     

do
{   

 data_size=read(infile,buffer3,1024);

 ProcessPacket(buffer3 , data_size);  

 }
while(data_size>0);


fclose(logfile);
close(infile);   
printf("\n");
printf(" Finished\n\n");
printf("-------------------\n\n");
return 0;
}

void ProcessPacket(unsigned char* buffer, int size)
{
 //Get the IP Header part of this packet , excluding the ethernet header
 struct iphdr *iph = (struct iphdr*)(buffer + sizeof(struct ethhdr));
 ++total;
 switch (iph->protocol) //Check the Protocol and do accordingly...
  {
  case 1:  //ICMP Protocol
    ++icmp;
    print_icmp_packet( buffer , size);
    break;

case 2:  //IGMP Protocol
    ++igmp;
    break;

case 6:  //TCP Protocol
    ++tcp;
    print_tcp_packet(buffer , size);
    break;

case 17: //UDP Protocol
    ++udp;
    print_udp_packet(buffer , size);
    break;

default: //Some Other Protocol like ARP etc.
    ++others;
    break;
}

printf("            TCP : %d   UDP : %d   ICMP : %d   Others : %d   Total : %d\r", tcp ,  

udp , icmp  , others , total);   
}


void print_udp_packet(unsigned char *Buffer , int Size)
{     
 unsigned short iphdrlen;

 struct iphdr *iph = (struct iphdr *)(Buffer +  sizeof(struct ethhdr));
 iphdrlen = iph->ihl*4;

 struct udphdr *udph = (struct udphdr*)(Buffer + iphdrlen  + sizeof(struct ethhdr));

 int header_size =  sizeof(struct ethhdr) + iphdrlen + sizeof udph;

 fprintf(logfile , "\n\n***********************UDP Packet*************************\n");

 print_ip_header(Buffer,Size);          

 fprintf(logfile , "\nUDP Header\n");
 fprintf(logfile , "   |-Source Port      : %d\n" , ntohs(udph->source));
 fprintf(logfile , "   |-Destination Port : %d\n" , ntohs(udph->dest));
 fprintf(logfile , "   |-UDP Length       : %d\n" , ntohs(udph->len));
 fprintf(logfile , "   |-UDP Checksum     : %d\n" , ntohs(udph->check));

 fprintf(logfile , "\n");
 fprintf(logfile , "IP Header\n");
 PrintData(Buffer , iphdrlen);

 fprintf(logfile , "UDP Header\n");
 PrintData(Buffer+iphdrlen , sizeof udph);

 fprintf(logfile , "Data Payload\n");   

 //Move the pointer ahead and reduce the size of string
 PrintData(Buffer + header_size , Size - header_size);

 fprintf(logfile , "\n###########################################################");
}
}
}

I have just included udp packet here. Here in fprintf statement i am using to print all the packets in the file whose filehandler is "logfile". the output which i get looks in this way

preguntado el 27 de noviembre de 13 a las 06:11

If problem only in format you choose then you may use csv file.en.wikipedia.org/wiki/Comma-separated_values -

@Michael no sir ,like i need to store all these fields in it -

1 Respuestas

For instance, if you need to put the whole this report to one excel cell then you can put " in the beginning and " in the end of this output. Then you can save it as *.csv file and open it with Excel, LibreOffice.Calc etc. So in this case (" in the beginning and in the end) you will get all this output in the first cell:

enter image description here

If you need different spreading of the data between cells - use commas and "":
"first row, first cell", "first row, second cell",...
"second row, first cell", "second row, second cell",...
...

Por ejemplo:

user@host $ cat new1.csv 
"first row, first cell", "first row, second cell"
"second row, first cell", "second row, second cell"

Then it can be opened in LibreOffice.Calc and result will be the following:
enter image description here

Actualizar: for spreading output data from the question to different cells:
I put a couple of , y " into original report from the question:

"This Report is from the Task agent whose IP is 127.0.0.1


 ***********************UDP Packet*************************"
"
Ethernet Header
|-Destination Address : 01-00-5E-00-00-02 
|-Source Address      : 00-00-0C-07-AC-3B 
|-Protocol            : 8 
","
IP Header
|-IP Version        : 4
|-IP Header Length  : 5 DWORDS or 20 Bytes
|-Type Of Service   : 192
|-IP Total Length   : 48  Bytes(Size of Packet)
|-Identification    : 0
|-TTL      : 1
|-Protocol : 17
|-Checksum : 61927
|-Source IP        : 172.16.59.3
|-Destination IP   : 224.0.0.2
","
UDP Header
|-Source Port      : 1985
|-Destination Port : 1985
|-UDP Length       : 28
|-UDP Checksum     : 42701
","
IP Header
01 00 5E 00 00 02 00 00 0C 07 AC 3B 08 00 45 C0         ..^........;..E.
00 30 00 00                                             .0..
UDP Header
00 00 01 11 F1 E7 AC 10                                 ........
Data Payload
00 00 10 03 0A 6E 3B 00 63 69 73 63 6F 00 00 00         .....n;.cisco...
AC 10 3B 01 00 00 00 00 00 00 00 00 00 00 00 00         ..;.............
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00         ................
00 00 00 00 00 00                                       ......

###########################################################"


It results in the following spreading through the excel cells:
enter image description here

respondido 27 nov., 13:06

sir,can u just show me how to do it with one example taking one field in my txt file like i am unable to understand that ": first row first cell" ! - Principiante

@Beginner I've just added tiny example in my answer. According to your output - you can put " in its beginning and in the end, store it as some.csv and open it with libreoffice. Then it must look like on the first snapshot from the answer (all the data in the top left cell). - Michael

sir what you have suggested me helped me a lott. but i want to know whether i can explicitly create cells. I mean to say using the program can i automatically insert the data into the csv or any other format instead of a text file. I have updated my code sir.Please checkout it and suggest me if i can. - Principiante

sir i copied the way you did, but "first row second cell " isn't getting displayed in the sense everything is displayed in a single column in different cells not in the same row!! - Principiante

@Beginner csv file is still the text file (en.wikipedia.org/wiki/Comma-separated_values). It just uses some special format (, - to separate elems in row; " - for string values, \n - to separate rows). So, if you would like some complex actions with csv then have a look at libcsv (sourceforge.net/proyectos/libcsv). - Michael

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.