new_s
|
|
« Ответ #60 : 02-03-2006 22:27 » |
|
самый большой недостаток этой темы отсуствие нормальных доков, на русском языке
|
|
|
Записан
|
|
|
|
StandAlone
Гость
|
|
« Ответ #61 : 03-03-2006 06:04 » |
|
"Как, считывая инфу из этих буфферов попорядку, определить". Проще всего, получив пакет, по полю TotalLength выделить буфер нужного размера, считать туда всю инфу из всех буферов, привести к структуре (*Ethernet_header)(Buffer)...Получаешь тип протокола верхнего уровня, и соответственно так же, по нужному оффсету приводишь к нужным структурам.
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #62 : 03-03-2006 06:15 » |
|
сорри немножко не понял "...и соответственно так же, по нужному оффсету приводишь к нужным структурам." так а по какому именно оффсету(как это узнать) привеодить?
|
|
|
Записан
|
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #64 : 03-03-2006 07:28 » |
|
че-та сення торможу енто вроде Сорокина сорри за ложную тревогу просто сильно обрадовался что нашел классную доку на русском языке
|
|
|
Записан
|
|
|
|
StandAlone
Гость
|
|
« Ответ #65 : 03-03-2006 12:49 » |
|
http://web.ur.ru/uar/pub/tcpip.pdf -- качаешь мануал, смотришь оффсеты и будет тебе щасте -) В NDIS IM пакет приходит полностью сформированный, и у него ВСЕГДА есть Ethernet заголовок, 14 байт как правило...а дальше уже проходишь по буферам, объединяешь все в один, и по вышележащим полям протоколов доступаешься. CRC пересчитывать нужно обязательно, при любой модификации пакета. Кстати, объединение в один буфер должно давать теоретический выигрыш в производительности сети... правда, я еще не замерял, насколько
|
|
« Последнее редактирование: 03-03-2006 12:52 от StandAlone »
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #66 : 06-03-2006 06:34 » |
|
я наверное дебил(, но не понимаю хоть убей, откуда взять, как называется та или иная структура и как доступиться к ее полям
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #67 : 06-03-2006 08:42 » |
|
я в том смысле что не с головы же взялось то же Ethernet_header, ятак понимаю все остальное - тоже какие то структуры.И еще типа пакет у него например ведь может отсутсвовать какое то из полей.....Как я просто считывая, могу определить, что енто например уже данные начались,или к примеру их ваще нету(но этот вопрос возникает по причине незнания выше описанного)
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #68 : 06-03-2006 12:27 » |
|
И еще )Например, та же Сорокина пишет, пакет может иметь вид: Ethernet| IP | UDP | данные Ethernet| ARP (к примеру) Как узнать, что после Ethernet_Header? в самом Ethernet_Header про енто по идее ничего не говорится
|
|
|
Записан
|
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #70 : 07-03-2006 06:16 » |
|
да я не о том)(понимаю твой сорказм) само название структуры( Ethernet_Header) ее самому создавать а потом заполнять полями или оно стандартизировано для того же NDIS
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #71 : 07-03-2006 06:30 » |
|
кстати, считаю нужным извиниться что долбил мозг на счет того, что идет за езернет заголовком, просто не пральна понял описание "data type"
|
|
|
Записан
|
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #73 : 10-03-2006 06:10 » |
|
Народ, плз, скажите Ethernet_header - сам тип(структура) который уже существует, тада где можно найти все остальные или его надо создавать самому?
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #74 : 15-03-2006 07:56 » |
|
прошу прощения что е..л мозг вроде разобрался.Но есть еще вопрос. делаешь Lib, компилишь его для режима ядра, прилинковываешь к драйверу и вперед! - расскажите кто, это как ?
|
|
|
Записан
|
|
|
|
new_s
|
|
« Ответ #75 : 15-03-2006 21:55 » |
|
прошу прощения что е..л мозг вроде разобрался.Но есть еще вопрос. делаешь Lib, компилишь его для режима ядра, прилинковываешь к драйверу и вперед! - расскажите кто, это как ?
Не расскажешь как разабрался?
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #76 : 16-03-2006 06:35 » |
|
ну разбирал пакет и, как говорил выше человек по смещению в соответствие с мануалом смотрел например какого вида протокола пришел пакет тока вот не понял одной темы(в этом заключается еще один вопрос): например пришел IP пакет мы выделили в нем заголовок знаем откуда начинаются данные. CRC в заголовке расчитывается только для заголовка но мы его не трогаем мы меняем поле ДАННЫЕ. Где находится сгс который надо всегда пересчитывать когда меняем данные. И какой тада надо брать полином чтоб его пересчитать или мот есть ф-я которая это делает ?
|
|
|
Записан
|
|
|
|
new_s
|
|
« Ответ #77 : 16-03-2006 07:18 » |
|
это что надо таблицу составлять? Ну смещение-протокол.
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #78 : 16-03-2006 07:32 » |
|
мне енто без надобности ибо меня интересует тока один вид протокола еси это он то я че то делаю если нет ниче не делаю
|
|
|
Записан
|
|
|
|
new_s
|
|
« Ответ #79 : 16-03-2006 13:07 » |
|
мне енто без надобности ибо меня интересует тока один вид протокола еси это он то я че то делаю если нет ниче не делаю
Посоветовал бы хоть. У меня интерес вызывает фильтрация всего трафика.
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #80 : 17-03-2006 06:12 » |
|
Извини это у "пап" надо спрашивать, я не шарю.
|
|
|
Записан
|
|
|
|
new_s
|
|
« Ответ #81 : 17-03-2006 08:41 » |
|
"Папы" обещали доков подкинуть буду ждать.
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #82 : 17-03-2006 08:58 » |
|
О, будут доки делись - не скромничай))
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #83 : 27-03-2006 12:23 » |
|
Народ плз как срс пересчитать и де он находится ?
|
|
|
Записан
|
|
|
|
diMAN
Гость
|
|
« Ответ #84 : 28-03-2006 11:39 » |
|
Каким образом можно узнать что приложение открыло сокет? Что-то типа hook на открытие сокета в системе.
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #85 : 30-03-2006 07:03 » |
|
Я наверное всех зае..л, но: везде, где не смотрю в структуре ндис пакета есть езернет заголовок который содержит адрес отправителя......и т.д., но про срс ваще не слова. В нтддк есть структура _NDIS_TCP_IP_CHECKSUM_PACKET_INFO - это то ?(спрашиваю, чтобы не копать лишнюю инфу так как времени не хватает), если кто-нибудь знает что нить про срс который надо пересчитывать(и надо ли его пересчитывать) если я меняю данные, которые являются данными для айпи протокола, откликнитесь!!! пожалуйста.
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #86 : 30-03-2006 07:39 » |
|
Просто объяснить, что хочу сделать. Просматриваю пакет(как, вроде знаю), смотрю в езернет заголовке тип протокола, если енто айпи там идет айпи заголовок потом поле ДАННЫЕ.Пропускаю айпизаголовок(там есть срс, но помануалу - это срс чисто заголовка). Например,каким то образом меняю поле ДАННЫЕ, но не меняю его длину, где срс, которое надо пересчитывать ?
|
|
|
Записан
|
|
|
|
diMAN
Гость
|
|
« Ответ #87 : 30-03-2006 09:32 » |
|
Просто объяснить, что хочу сделать. Просматриваю пакет(как, вроде знаю), смотрю в езернет заголовке тип протокола, если енто айпи там идет айпи заголовок потом поле ДАННЫЕ.Пропускаю айпизаголовок(там есть срс, но помануалу - это срс чисто заголовка). Например,каким то образом меняю поле ДАННЫЕ, но не меняю его длину, где срс, которое надо пересчитывать ?
В ip-заголовке содержится CheckSum именно ip-заголовка, а далее ты смотришь на ДАННЫЕ, которые в свою очередь могут быть TCP, UDP, ICMP или другим протоколом. Соответственно у них будут СВОИ CheckSum, которые вычисляются согласно RFC. Их нужно тоже вычислять заново, если ты правишь ДАННЫЕ. Кстати как ты простатриваешь пакеты?
|
|
|
Записан
|
|
|
|
heptohedron2004
Гость
|
|
« Ответ #88 : 30-03-2006 10:19 » |
|
или ты не понял что я спрашиваю или я херово объясняю чего хочу но то что ты сказал и так понятно. я пытаюсь узнать про срс (если он есть в пакете поступающем в им драйвер, а еси нету так ваще проще все) который расчитывается для езернета, а не для какого-то конкретного протокола, может я че и напутал, не судите строго....
|
|
|
Записан
|
|
|
|
diMAN
Гость
|
|
« Ответ #89 : 30-03-2006 11:27 » |
|
Про NDIS_TCP_IP_CHECKSUM_PACKET_INFO можешь прочитать здесь http://www.osronline.com/ddkx/network/105nstru_3i7m.htm, как я понял что эта структура - часть информации передаваемой вместе с пакетом, и содержащаяся в ней информация служит для того, чтобы сказать NIC что нужно посчитать соответствующие CheckSum. Соответственно по ней можно судить есть ли уже CheckSum в пакете или её нужно рассчитывать, но рассчитывать в любом случае не тебе, а NIC.
|
|
|
Записан
|
|
|
|
|