#include <netinet/in.h>
#include <fcntl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <netinet/ip.h>
#include <netinet/udp.h>
#include <netinet/tcp.h>
#define MAX 4025
main(){
int pid;
pid=fork();
if(pid==0){
char buffer[MAX];
int sock;
int bytes_read;
sock = socket(PF_INET,SOCK_RAW,IPPROTO_UDP);
struct iphdr *iph;
struct udphdr *udph;
iph = (struct iphdr *)buffer;
do{
bytes_read=recv(sock,buffer,MAX, 0);
if(iph->protocol==IPPROTO_UDP){
udph=(struct udphdr*)(buffer+sizeof(struct iphdr));
printf("Origen UDP %s :%d\n",inet_ntoa(iph->saddr),ntohs(udph->source));
printf("Destino UDP %s :%d\n", inet_ntoa(iph->daddr),ntohs(udph->dest));
udph==NULL;
iph==NULL;
buffer==NULL;
}
}
while (bytes_read >0);
}
else
{
//fcntl(sock,F_SETFL,O_NONBLOCK);
//memset( &address, 0, sizeof( address ) );
//address.sa_family = AF_INET;
//strncpy( address.sa_data, "wlan0", sizeof(address.sa_data) );
char buffer2[MAX];
int sock2;
int bytes_read2;
sock2 = socket(PF_INET,SOCK_RAW,IPPROTO_TCP);
struct iphdr *iph2;
struct tcphdr *tcph;
iph2 = (struct iphdr *)buffer2;
do{
bytes_read2=recv(sock2,buffer2,MAX,0);
if(iph2->protocol==IPPROTO_TCP){
tcph=(struct tcphdr*)(buffer2+sizeof(struct iphdr));
printf("Origen TCP %s :%d\n",inet_ntoa(iph2->saddr), ntohs(tcph->source));
printf("Numero de secuencia: %d ACK: %i\n ",ntohs(tcph->seq),ntohs(tcph->ack_seq));
printf("Destino TCP %s :%d\n", inet_ntoa(iph2->daddr), ntohs(tcph->dest));
tcph==NULL;
iph2==NULL;
buffer2==NULL;
}
}
while (bytes_read2> 0);
}
}
Marcadores