PDA

Просмотр полной версии : Вопрос по сырым сокетам


_nic
10.11.2007, 00:09
Вот нашел пару примеров http://komsoft.ru/pma/gen_packet.htm
http://milw0rm.com/exploits/1599 с сырыми сокетами.Но вот только все никак немогу понять каким местом и на какое крепятся все эти struct igmphdr struct ip_header struct udp_header и подобные к сокету :confused: :confused: Обьясните плиз кто знает.

__mad
10.11.2007, 00:18
они не к нему не крепятся... это структуры для разбора пакетов... заполнили и отправил пакет... и также принимать... кароч чтоб удобней было... канеш если ты все протоколы знаешь на изусь то можно просто вручную писать типа buf[]="\0x2\0x23.... так вот чтоб этого не делать и созданы эти структуры... знаю что не оч понятно объяснил, сорь : D

gevara
10.11.2007, 01:26
у каждого пакета есть IP заголовок - ip_header. это типа реализация IP протокола. на его основе может быть реализован более высокоуровневый протокол. например udp. таким образм получается след:

ip_header
udp_header

или, скажем, tcp:

ip_header
tcp_header

по сути дела структуры в буффере идут друг за другом. на практике лучше выделить буффер. указатель на начало буффера - указатель на структуру ip_header. затем указатель на структуру upd_header...

char packet[256];
ip_header *p_iph;
udp_header *p_udph;

p_iph = (ip_header*)packet;
p_udph = (udp_header*)(packet + sizeof(ip_header));
...

_nic
14.11.2007, 22:48
А куда пихать данные которые к примеру нужно передать через Udp пакеты,и какой максимальный обьем данных можно передать в одном пакете транспортного протокола(к примеру того же Udp)?

Delimiter
15.11.2007, 03:01
протокольные пакеты вкладываются друг дружке в поле данных как МАТРЕШКА!
данное действие называется ИНКАПСУЛЯЦИЕЙ.
Вопрос должен все таки содержать информацию о том что ты собираешься делать
разбирать пакеты на составляющие либо собираешься их собирать(КРАФТИТЬ)
но в любом случае начинать освоение следует с переводных rfc которые лежат на
citforum.ru
.......
теперь осталось сразу раставить точки ! Если собираешься работать слишком низко
и разбирать даже ethernet пакеты , то забудь о RAW-socket , роусокеты ввели в w2k
и постоянно пытаются заблокировать (они как правило не пропускают пакеты(ioctlsock) если нет
приложения готового их обработать, поэтому снифинг будет урезанный.... крафтинг
так же будет урезанный)
Поэтому WinPcap тебе в руки!!! ЭТО НЕ RAW_SOCKET!!!
Почуствуешь себя человеком -100%!
По поводу максимального размера пакета для UDP ! Поскольку UDP пакеты не
поддерживают дефрагментацию, то то что пошлешь то и получат ( на этом были
построены первые Nuker-Ы. Модемы падали как яблоки , побеждал тот у кого скорость
больше!)