т.е.? Я сначала отлавливаю сниффером ИП, потом вызываю pcap_remoteact_close(). Вот весь сорец(это первый вариант, некрасивый): Code: #include <conio.h> #include <stdio.h> #include <winsock2.h> #include "head.h" #include "inc/pcap.h" #include "inc/remote-ext.h" #pragma comment(lib, "ws2_32.lib") #pragma comment(lib, "wpcap.lib") #define MAX_PACKET_SIZE 0x10000 #define SIO_RCVALL 0x98000001 // Буфер для приёма данных char Buffer[MAX_PACKET_SIZE]; // 64 Kb //Структура заголовка IP-пакета typedef struct IPHeader { UCHAR iph_verlen; // версия и длина заголовка UCHAR iph_tos; // тип сервиса USHORT iph_length; // длина всего пакета USHORT iph_id; // Идентификация USHORT iph_offset; // флаги и смещения UCHAR iph_ttl; // время жизни пакета UCHAR iph_protocol; // протокол USHORT iph_xsum; // контрольная сумма ULONG iph_src; // IP-адрес отправителя ULONG iph_dest; // IP-адрес назначения } IPHeader; SOCKET s; // Cлущающий сокет. struct sockaddr_in dst; // Адрес хоста char src[10]; char dest[10]; char ds[15]; unsigned short lowbyte; unsigned short hibyte; void main() { WSADATA wsadata; HOSTENT* phe; IN_ADDR sa1; // DWORD opt = 1; char buf[100] = " "; char name[128]; unsigned long flag = 1; WSAStartup(MAKEWORD(2,2), &wsadata); s = socket( AF_INET, SOCK_RAW, 0); gethostname(name, sizeof(name)); phe = gethostbyname( name ); ZeroMemory(&dst, sizeof(dst)); dst.sin_family = AF_INET; dst.sin_addr.s_addr = ((struct in_addr *)phe->h_addr_list[0])->s_addr; bind(s, (SOCKADDR *)&dst, sizeof(SOCKADDR)); ioctlsocket(s, SIO_RCVALL, &flag); while( !_kbhit() ) { int count; count = recv( s, Buffer, sizeof(Buffer), 0 ); if( count >= sizeof(IPHeader) ) { IPHeader* hdr = (IPHeader *)Buffer; sa1.s_addr = hdr->iph_src; sa1.s_addr = hdr->iph_dest; printf(inet_ntoa(sa1)); if(strcmp(inet_ntoa(sa1), "192.168.0.1") == 0) { pcap_remoteact_close("192.168.0.1", buf); printf("\n%s\n", buf); } printf("\n"); } } closesocket(s); WSACleanup(); }
Подскажие плиз адреса кнопок Подключения (соеденить) и отключения интернета) хочу прогу написать которая сама будет через заданное время отключатьи подключать к инету
Как разорвать tcp-соединение? З.Ы. перелопатил почти весь гугол, ничего конкретного не нашел З.З.Ы. помогите, оччень надо
вот, что получается: Code: struct tcp_header *tcp_hd; struct IPHeader *ip_hd; unsigned short int tcp_win; unsigned long int tcp_ack; int packet_len = ETH_HDRSIZE + IP_HDRSIZE + TCP_HDRSIZE; unsigned char *packet = (unsigned char *)malloc(packet_len); tcp_hd = (struct tcp_header *)(packet + ETH_HDRSIZE + IP_HDRSIZE); ip_hd = (struct ip_hd *)(packet + ETH_HDRSIZE + IP_HDRSIZE); ip_hd->iph_verlen = 4; ip_hd->iph_tos = 0; ip_hd->iph_id = htons(55555); ip_hd->iph_offset = htons(0x4000); ip_hd->iph_ttl = 128; ip_hd->iph_protocol = 6; ip_hd->iph_xsum = 0; ip_hd->iph_dest = inet_addr("192.168.0.1"); /* Set tcp header */ tcp_hd->tcp_src = htons(80); tcp_hd->tcp_dst = htons(80); tcp_hd->tcp_seq = htonl(tcp_ack + tcp_win); tcp_hd->tcp_ack = 0; tcp_hd->tcp_res = 0; tcp_hd->tcp_off = 5; tcp_hd->tcp_flags = TCP_RST; tcp_hd->tcp_win = 0; tcp_hd->tcp_sum = 0; tcp_hd->tcp_urp = 0; потом делаю sendto на нужный ИП
Не помню как, но как-то так вроде быстрее... if (i >> 1 << 1 = i) а на асме так точно: //число в еаксе shr eax jc _чётное... De-visible: а на DELPHI >>If (i mod 2)=0 then<< +
Товарищи, как мне закрыть/сбросить tcp-соединение??? У меня ни с роу-сокетами, ни с winpcap'ом не получается =(( З.Ы. Я наверно получу сейчас либо предупреждение, либо сразу бан...
Так, задам иначе вопрос: Юзер соединяется к серверу. Я знаю ИП этого серва и хочу сбросить/завершить это tcp-соединение. как?
criz ну я тебя же посылал на xakep.ru ..... почему я должен искать за тебя? держи! http://www.xakep.ru/post/22248/exploit.txt и еще http://www.xakep.ru/post/16680/default.asp De-visible:Два поста подряд не есть хорошо!