Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.03.02;
Скачать: CL | DM;

Вниз

Отправка RAW пакета   Найти похожие ветки 

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

Как в рекламе говорят, всё что мне сейчас нужно это отправить 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;


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

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


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

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


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

вот она:

WSAENOTCONN


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


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


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

И ?


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

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


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

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


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

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

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


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

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


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

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

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


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

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


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


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


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


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

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


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

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


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

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

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


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


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


Есть.

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


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

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


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

нашел :)

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


 
NeyroSpace ©   (2007-06-12 15:25) [18]

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

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



Страницы: 1 вся ветка

Текущий архив: 2008.03.02;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.021 c
3-1192105820
Dush
2007-10-11 16:30
2008.03.02
условие отображения данных в DBGridEh


8-1170917898
Sirus
2007-02-08 09:58
2008.03.02
waveOut и waveIn одновременно


2-1202285277
взвзв
2008-02-06 11:07
2008.03.02
свойство только для чтения в классах


15-1201186192
oldman
2008-01-24 17:49
2008.03.02
"Интерфейс не зарегистрирован" что бы это могло быть?


2-1202328026
Евгений Р.
2008-02-06 23:00
2008.03.02
Правильна ли запись?