ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

23.02.2010, 02:27
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
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(datagram, 0, sizeof(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(0, 1500));
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.tcp, tcph, sizeof(tcpheader));
iph->ip_sum = checksum((unsigned short *)&iph, sizeof(ipheader));
tcph->th_sum = checksum((unsigned short *)&pseudo_header, sizeof(pseudo_header));
if (sendto(s, datagram, sizeof(datagram), 0, (SOCKADDR *)&sin, sizeof(sin)) == SOCKET_ERROR)
return -1;
в общем - пытаюсь отправить сырой SYN-пакет, но он не доходит, а сниффер пишет что адрес и порт отправки и назначения пустые. Адрес src И адрес сетевухи совпадают
|
|
|

23.02.2010, 02:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 04.02.2007
Сообщений: 1,152
Провел на форуме: 3008839
Репутация:
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
|
|
|

23.02.2010, 02:38
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Сообщение от desTiny
я не вижу слова socket
ну я как бы убрал все лишнее тк работает как надо. ну вот то что перед этим
PHP код:
int bOpt = 1;
WSADATA asd;
WSAStartup(MAKEWORD(2,2),&asd);
SOCKET s = socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
setsockopt(s, IPPROTO_IP, IP_HDRINCL, (char *)&bOpt, sizeof(bOpt))
|
|
|

23.02.2010, 03:41
|
|
Постоянный
Регистрация: 24.03.2009
Сообщений: 670
Провел на форуме: 2868783
Репутация:
414
|
|
Мб лучше pcap заюзать? )
|
|
|

23.02.2010, 04:47
|
|
Участник форума
Регистрация: 17.05.2008
Сообщений: 102
Провел на форуме: 1054394
Репутация:
74
|
|
я может глупость скажу, но...
memset(datagram, 0, sizeof(datagram));
после этого с datagram ничего не произошло кроме как:
sendto(s, datagram, sizeof(datagram), 0, (SOCKADDR *)&sin, sizeof(sin)
соответственно оно отправляет все пустое(забитое нулями)
или я чего-то не понял...
|
|
|

23.02.2010, 11:33
|
|
Reservists Of Antichat - Level 6
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме: 3288241
Репутация:
3349
|
|
Также не забывай, что винда не выпустит пакеты с поддельным адресом отправителя.
|
|
|

23.02.2010, 12:26
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
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 - проверил, совпадают
|
|
|

24.02.2010, 00:35
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
сниффер показывает, как я понял, что эти данные как-то попали в тело пакета, а не в заголовок
|
|
|

25.02.2010, 12:06
|
|
Статус пользователя:
Регистрация: 26.07.2005
Сообщений: 568
Провел на форуме: 1290766
Репутация:
1236
|
|
Сообщение от slesh
Также не забывай, что винда не выпустит пакеты с поддельным адресом отправителя.
при использовании IP_HDRINCL да, но для udp.
а для tcp эта опция запрещена вообще.
поэтому решением является пикап =)
а вообще, если хочется чегото "своего", то
есть хороший пример из WDK - NDISPROT, для отправки вплоть до фальшивого исходного мак адреса вполне подойдет
__________________
 
snow white world wide
Последний раз редактировалось sn0w; 25.02.2010 в 12:45..
|
|
|

25.02.2010, 14:54
|
|
Постоянный
Регистрация: 04.12.2007
Сообщений: 424
Провел на форуме: 2364957
Репутация:
479
|
|
Сообщение от sn0w
при использовании IP_HDRINCL да, но для udp.
а для tcp эта опция запрещена вообще.
поэтому решением является пикап =)
а вообще, если хочется чегото "своего", то
есть хороший пример из WDK - NDISPROT, для отправки вплоть до фальшивого исходного мак адреса вполне подойдет
мне кажется лишний sys за собой таскать не айс. Обойдусь connect() 
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|