HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

Отправка сырого пакета
  #1  
Старый 23.02.2010, 02:27
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию Отправка сырого пакета

PHP код:
struct sockaddr_in sin;

    
sin.sin_family AF_INET;
    
sin.sin_port htons(80);
    
sin.sin_addr.s_addr inet_addr("192.168.0.100");
    
    
char datagram[sizeof(ipheader)+sizeof(tcpheader)];
    
ipheader *iph = (ipheader *)datagram;
    
tcpheader *tcph = (tcpheader *)(datagram sizeof(ipheader));
    
PS_HDR pseudo_header;

    
memset(datagram0sizeof(datagram));

    
iph->ip_hl         5;
    
iph->ip_v         4;
    
iph->ip_tos         0;
    
iph->ip_len         sizeof(ipheader) + sizeof(tcpheader);
    
iph->ip_id         rand();
    
iph->ip_off         0;
    
iph->ip_ttl         255;
    
iph->ip_p         IPPROTO_TCP;
    
iph->ip_sum         0;
    
iph->ip_src         inet_addr("192.168.0.100");
    
iph->ip_dst         sin.sin_addr.s_addr;

    
tcph->th_sport     htons(getrandom(01500));
    
tcph->th_dport     sin.sin_port;
    
tcph->th_seq     rand();
    
tcph->th_ack     0;
    
tcph->th_x2         0;
    
tcph->th_off     5;
    
tcph->th_flags     TH_SYN;
    
tcph->th_win     htons(512);
    
tcph->th_sum     0;
    
tcph->th_urp     0;

    
pseudo_header.source_address  iph->ip_src;
    
pseudo_header.dest_address      sin.sin_addr.s_addr;
    
pseudo_header.placeholder      0;
    
pseudo_header.protocol          IPPROTO_TCP;
    
pseudo_header.tcp_length      htons(sizeof(tcpheader));

    
memcpy((char*)&pseudo_header.tcptcphsizeof(tcpheader));
    
iph->ip_sum  checksum((unsigned short *)&iphsizeof(ipheader));
    
tcph->th_sum checksum((unsigned short *)&pseudo_headersizeof(pseudo_header));
 
    if (
sendto(sdatagramsizeof(datagram), 0, (SOCKADDR *)&sinsizeof(sin)) == SOCKET_ERROR)
        return -
1
в общем - пытаюсь отправить сырой SYN-пакет, но он не доходит, а сниффер пишет что адрес и порт отправки и назначения пустые. Адрес src И адрес сетевухи совпадают
 
Ответить с цитированием

  #2  
Старый 23.02.2010, 02:33
desTiny
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
С нами: 10139366

Репутация: 1502


По умолчанию

я не вижу слова socket
__________________
Bedankt euch dafür bei euch selbst.

H_2(S^3/((z1, z2)~(exp(2pi*i/p)z1, exp(2pi*q*i/p)z2)))=Z/pZ
 
Ответить с цитированием

  #3  
Старый 23.02.2010, 02:38
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию

Цитата:
Сообщение от desTiny  
я не вижу слова socket
ну я как бы убрал все лишнее тк работает как надо. ну вот то что перед этим

PHP код:
int bOpt 1
WSADATA asd;
WSAStartup(MAKEWORD(2,2),&asd);
SOCKET s socket(PF_INETSOCK_RAWIPPROTO_RAW);
setsockopt(sIPPROTO_IPIP_HDRINCL, (char *)&bOptsizeof(bOpt)) 
 
Ответить с цитированием

  #4  
Старый 23.02.2010, 03:41
razb
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
С нами: 9017461

Репутация: 414


По умолчанию

Мб лучше pcap заюзать? )
 
Ответить с цитированием

  #5  
Старый 23.02.2010, 04:47
xa-xa89
Участник форума
Регистрация: 17.05.2008
Сообщений: 102
С нами: 9466141

Репутация: 74
По умолчанию

я может глупость скажу, но...
memset(datagram, 0, sizeof(datagram));
после этого с datagram ничего не произошло кроме как:
sendto(s, datagram, sizeof(datagram), 0, (SOCKADDR *)&sin, sizeof(sin)
соответственно оно отправляет все пустое(забитое нулями)
или я чего-то не понял...
 
Ответить с цитированием

  #6  
Старый 23.02.2010, 11:33
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
С нами: 10097606

Репутация: 3349


По умолчанию

Также не забывай, что винда не выпустит пакеты с поддельным адресом отправителя.
 
Ответить с цитированием

  #7  
Старый 23.02.2010, 12:26
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию

Цитата:
Сообщение от xa-xa89  
я может глупость скажу, но...
memset(datagram, 0, sizeof(datagram));
после этого с datagram ничего не произошло кроме как:
sendto(s, datagram, sizeof(datagram), 0, (SOCKADDR *)&sin, sizeof(sin)
соответственно оно отправляет все пустое(забитое нулями)
или я чего-то не понял...
ну да, вы не поняли
PHP код:
ipheader *iph = (ipheader *)datagram
    
tcpheader *tcph = (tcpheader *)(datagram sizeof(ipheader)); 
этот код размечает эту строку на ip header и tcp header. Ну и сниффер показывает какую-то информацию в пакете

2razb - pcap сложный, стоит не везде

2slesh - проверил, совпадают
 
Ответить с цитированием

  #8  
Старый 24.02.2010, 00:35
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию



сниффер показывает, как я понял, что эти данные как-то попали в тело пакета, а не в заголовок
 
Ответить с цитированием

  #9  
Старый 25.02.2010, 12:06
sn0w
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 569
С нами: 10943066

Репутация: 1236


По умолчанию

Цитата:
Сообщение от slesh  
Также не забывай, что винда не выпустит пакеты с поддельным адресом отправителя.
при использовании IP_HDRINCL да, но для udp.
а для tcp эта опция запрещена вообще.

поэтому решением является пикап =)

а вообще, если хочется чегото "своего", то
есть хороший пример из WDK - NDISPROT, для отправки вплоть до фальшивого исходного мак адреса вполне подойдет
__________________


snow white world wide

Последний раз редактировалось sn0w; 25.02.2010 в 12:45..
 
Ответить с цитированием

  #10  
Старый 25.02.2010, 14:54
ntldr
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
С нами: 9702986

Репутация: 479
По умолчанию

Цитата:
Сообщение от sn0w  
при использовании IP_HDRINCL да, но для udp.
а для tcp эта опция запрещена вообще.

поэтому решением является пикап =)

а вообще, если хочется чегото "своего", то
есть хороший пример из WDK - NDISPROT, для отправки вплоть до фальшивого исходного мак адреса вполне подойдет
мне кажется лишний sys за собой таскать не айс. Обойдусь connect()
 
Ответить с цитированием
Ответ



Предыдущая тема Следующая тема
Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вышла финальная версия пакета OpenOffice 3.1 winner13 Мировые новости. Обсуждения. 9 10.05.2009 12:29
Пиратская версия пакета iWork '09 заразила тысячи «Маков» AlexTheC0d3r Мировые новости. Обсуждения. 0 23.01.2009 15:43
Найден первый макровирус для пакета StarOffice dinar_007 Мировые новости. Обсуждения. 1 01.06.2006 18:01



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.