Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Отправка RAW пакета [D6, WinXP]


Сергей Колесник ©   (2007-06-09 09:38:00) 

Как в рекламе говорят, всё что мне сейчас нужно это отправить RAW пакет, но мой ламерский код не работает, если не трудно направьте на путь истинный :)

procedure lsend(a: array of byte);
begin
send(sock,a,sizeof(a),0);
end;

WSAStartup($202,init);

Sock:=Socket(PF_INET,SOCK_RAW,IPPROTO_RAW);

lsend([0,0,0,0,0,0,0,0,0,0,0,0,11,6,0,0,0,0,0,0,176,0,0,0,0,0,0,0,171,216,182,132,85, 170,199,1,234,5,0,0,58,0,0,0,58,0,0,0,255,255,255,255,255,255,0,21,242,238,50,16 8,8,0,69,0,0,44,121,104,0,0,128,17,169,50,10,8,14,31,255,255,255,255,23,224,23,2 24,0,24,23,248,247,47,16,0,80,88,51,87,21,0,0,0,0,0,0,0]);
// это вырезанный из сниффера рабочий удипи пакет

WSACleanup;


NeyroSpace   (2007-06-12 15:25:00) [1]

Во-первых IPPROTO_RAW полностью поддерживает только WIN2K и выше.
Во-вторых нужно понимать как инкапсулируются данные в пакетах.

Если работаешь в IPPROTO_RAW, то ни о каком порте тут речи нет. Ты спускаешься на уровень ниже. Твои данные сразу внутри протокола IP, дальше идет заголовок протоколов транспортного уровня например TCP, UDP, ICMP и ты их должен САМ правильно заполнить, в том числе, расчитать контрольную сумму, если она есть и т.д.


Сергей Колесник   (2007-06-09 13:46:00) [2]

нашел :)

спасибо ... буим изучать


Сергей М.   (2007-06-09 13:07:00) [3]

Константа эта равна десятичной двойке.


Сергей М.   (2007-06-09 13:05:00) [4]


> там тоже нет таких параметров этой функции


Есть.

http://msdn2.microsoft.com/en-us/library/ms738586.aspx


Сергей Колесник   (2007-06-09 12:56:00) [5]

там тоже нет таких параметров этой функции

смотрел здесь: http://msdn2.microsoft.com/en-us/library/ms740476.aspx


Сергей М.   (2007-06-09 12:12:00) [6]

смотри в MSDN - там все есть


Сергей Колесник   (2007-06-09 12:00:00) [7]

посмотрел хелпу моей Д6 и юнит винсока - нет там таких констант :(


Сергей М.   (2007-06-09 11:39:00) [8]


> А может всётаки это осуществимо?


см. setsockopt(Ыщсл, IPPROTO_IP, IP_HDRINCL, ..)


Сергей Колесник   (2007-06-09 11:37:00) [9]

ну а если ещё конкретней, то мне надо чтобы в качестве порта источника в заголовке пакета был указан уже открытый и использующийся в системе порт, на который я ессно не могу забиндить сокет.


Сергей Колесник   (2007-06-09 11:35:00) [10]

Только сейчас дошло, что сокет при отправке генерирует свой собственный заголовок пакета, а мою "дату" фигачит в качестве поля значений. А я то наивный понадеялся что смогу таким образом отправить в сеть пакет со своим собственным заголовком ...

А может всётаки это осуществимо?


Сергей Колесник   (2007-06-09 10:54:00) [11]

упс ... не видел ответа, щас попробуем с ipproto_udp


Сергей Колесник   (2007-06-09 10:53:00) [12]

с этой ошибкой понятно, просто нужно было либо юзать connetc либо sendto

он теперь возник другой вопрос, исчезла информация о портах, исказилось поле данных ... короче на выходе пакет имеет осмысленные значения только до поля айпи адреса назначения


Сергей М.   (2007-06-09 10:38:00) [13]

И к тому же если это "вырезанный из сниффера рабочий удипипакет", то почему же ты при создании гнезда указываешь IPPROTO_RAW, а не IPPROTO_IP ?


Сергей М.   (2007-06-09 10:35:00) [14]

Вообще-то для connectionless-протоколов предназначена ф-ция sendto(), а не send()


Сергей М.   (2007-06-09 10:24:00) [15]


> размер правильный


А, ну да, у тебя открытый массив.

И ?


Сергей Колесник   (2007-06-09 10:14:00) [16]

вот она:

WSAENOTCONN


Сергей Колесник   (2007-06-09 10:11:00) [17]

я проверял при отладке через переменную, размер правильный ... но пакет в сеть не уходит, правда не догадался посмотреть, ошибки :( ... ща гляну


Сергей М.   (2007-06-09 10:01:00) [18]

Как думаешь, чему будет равно выражение sizeof(a) ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо