thanks ,but i ran into problems when coding the program for listening to
the raw connection.
i have attached two programs ,
raw.c just keeps on waiting even when there is traffic ,
while the serraw.c doesn't gets bind itself
i am running the programs as root.
Gaurav.Rajput
<[EMAIL PROTECTED]>
On Tue, 4 Apr 2000, rajesh balan wrote:
> hi
> i've written something similar to this. i developed a intrusion detection
> system, so i wrote this kind.
> 1. create a socket of SOCK_PACKET (man page says obsolete, so use
> PF_PACKET
> 2. set the device in promiscuous mode (if u want to see all the packets in
> the wire(ethernet).
> 3. do a normal read call
> read(sockfd,buff,sizeof(buff));
> that's it.
> hope this will be useful to u.
> bye
> rajesh balan
>
> >From: rajput g v be comp 56 <[EMAIL PROTECTED]>
> >To: [EMAIL PROTECTED]
> >Subject: packet capturing
> >Date: Fri, 31 Mar 2000 14:18:01 +0530 (IST)
> >
> >hi,
> > packet can be captured by using "tcpdump" straightway,but can i write
> >something of my own (in C or assembly language) so as to capture the
> >packets in raw format on my own.
> > the idea is the same as writing a driver on Win@#$ so as to capture
> >capture in there raw format ,so i was wondering whether that could be done
> >on linux ?if yes then please help
> >
> >
> >-
> >To unsubscribe from this list: send the line "unsubscribe linux-net" in
> >the body of a message to [EMAIL PROTECTED]
>
> ______________________________________________________
> Get Your Private, Free Email at http://www.hotmail.com
>
#include<sys/types.h>
#include<sys/socket.h>
#include<net/if_packet.h>
#include<linux/if_ether.h>
#include<netinet/in.h>
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int cont,create_socket,new_socket,addrlen;
int bufsize = 1024;
char *buffer = malloc(bufsize);
struct sockaddr_in address;
printf("\x1B[2J");//clear screen
if ((create_socket = socket(PF_PACKET,SOCK_RAW,ETH_P_ALL)) > 0)
printf("The socket was created\n");
read(create_socket,buffer,sizeof(buffer));
printf("%s",buffer);
close(create_socket);
}
#include<sys/types.h>
#include<sys/socket.h>
#include<net/if_packet.h>
#include<linux/if_ether.h>
#include<netinet/in.h>
#include<unistd.h>
#include<stdlib.h>
#include<stdio.h>
main()
{
int cont,create_socket,new_socket,addrlen;
int bufsize = 1024;
char *buffer = malloc(bufsize);
struct sockaddr_in address;
printf("\x1B[2J");
if ((create_socket = socket(PF_PACKET,SOCK_RAW,ETH_P_ALL)) > 0)
printf("The socket was created\n");
address.sin_family = PF_PACKET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons(ETH_P_ALL);
if (bind(create_socket,(struct sockaddr *)&address,sizeof(address)) == 0)
printf("Binding Socket\n");
listen(create_socket,3);
addrlen = sizeof(struct sockaddr_in);
new_socket = accept(create_socket,(struct sockaddr *)&address,&addrlen);
if (new_socket > 0){
printf("The Client %s is connected...\n",inet_ntoa(address.sin_addr));
for(cont=1;cont<5000;cont++)
printf("\x7");
}
send(new_socket,buffer,bufsize,0);
recv(new_socket,buffer,bufsize,0);
printf("Message recieved: %s\n",buffer);
close(new_socket);
close(create_socket);
}