Как получить пакет, фильтруемый системой?
От: a426  
Дата: 25.12.08 17:07
Оценка:
Ситуация следующая: общаемся с железкой по сети. Чтобы считать с нее данные, посылаем ей адрес памяти побайтно. В ответ на каждый пакет железка шлет подтверждение. После отправки всего адреса железка шлет в ответ данные (1 байт). Фишка в том, что ответ она шлет в keep-alive пакете с номером, совпадающим с номером предыдущего пакета (подтверждение адреса байта). Сниффер показывает, что данные приходят, а мое приложение этот пакет не видит (recvfrom()). Подскажите, плиз, что можно сделать?
Re: Как получить пакет, фильтруемый системой?
От: Michael Chelnokov Украина  
Дата: 25.12.08 19:09
Оценка:
Здравствуйте, a426, Вы писали:

A>После отправки всего адреса железка шлет в ответ данные (1 байт). Фишка в том, что ответ она шлет в keep-alive пакете с номером, совпадающим с номером предыдущего пакета (подтверждение адреса байта).


Это про TCP?
Re[2]: Как получить пакет, фильтруемый системой?
От: TarasCo  
Дата: 26.12.08 08:15
Оценка:
MC>Это про TCP?
Обычно люди, имеющие дело с железом до таких абстракций не опускаются, у них байты по адресам передаются.

PS: шутко
Да пребудет с тобою сила
Re[3]: Как получить пакет, фильтруемый системой?
От: Michael Chelnokov Украина  
Дата: 27.12.08 15:09
Оценка:
Здравствуйте, TarasCo, Вы писали:

MC>>Это про TCP?

TC>Обычно люди, имеющие дело с железом до таких абстракций не опускаются, у них байты по адресам передаются.

Так в том-то и дело, что судя по описанию, это соединение TCP. Причем данные передаются в том самом байте, который в стандарте описан как "one garbage octet"
Либо у железяки был "гениальный" конструктор, либо автор вопроса чего-то не знает.
Re[2]: Как получить пакет, фильтруемый системой?
От: a426  
Дата: 08.01.09 11:51
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, a426, Вы писали:


A>>После отправки всего адреса железка шлет в ответ данные (1 байт). Фишка в том, что ответ она шлет в keep-alive пакете с номером, совпадающим с номером предыдущего пакета (подтверждение адреса байта).


MC>Это про TCP?


Да. В общем-то проблема решается с помощью RAW Socket
Re[3]: Как получить пакет, фильтруемый системой?
От: Michael Chelnokov Украина  
Дата: 08.01.09 12:30
Оценка:
Здравствуйте, a426, Вы писали:

MC>>Это про TCP?

A>Да. В общем-то проблема решается с помощью RAW Socket

Можно использовать тот же PCAP, например.
Re[4]: Как получить пакет, фильтруемый системой?
От: a426  
Дата: 09.01.09 12:28
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC>Здравствуйте, a426, Вы писали:


MC>>>Это про TCP?

A>>Да. В общем-то проблема решается с помощью RAW Socket

MC>Можно использовать тот же PCAP, например.


Проблема в том, что заказчик хочет обойтись без PCAP. А я никак не могу настроить RAW Socket.
Может, у кого-нибудь уже есть решение? Поделитесь, плиз...
Re[4]: Как получить пакет, фильтруемый системой?
От: artem_korneev США https://www.linkedin.com/in/artemkorneev/
Дата: 09.01.09 12:48
Оценка:
Здравствуйте, Michael Chelnokov, Вы писали:

MC> Так в том-то и дело, что судя по описанию, это соединение TCP. Причем данные передаются в том самом байте, который в стандарте описан как "one garbage octet"

MC> Либо у железяки был "гениальный" конструктор, либо автор вопроса чего-то не знает.

Это TCP. Железяка вполне "серийная" — XPort от Lantronix. Судя по тому, что показывает сниффер — "гениальным", всё-таки, был конструктор железки. По-человечески эта железка с TCP не хочет работать. Проходят только пакеты с командами и с адресами, а пакеты данных отбрасываются — у них ID пакета тот же, что у предыдущего. Тот драйвер, который идёт с железкой (ComPortRedirector), судя по всему, вещает свой драйвер, перехватывающий пакеты до обработки TCP/IP-стеком системы.
Через winpcap данные принимаются. Но у заказчика есть свои предрассудки перед использованием GPL-компонентов, он просит обойтись без winpcap.
С уважением, Artem Korneev.
Re[5]: Как получить пакет, фильтруемый системой?
От: Michael Chelnokov Украина  
Дата: 09.01.09 13:31
Оценка:
Здравствуйте, a426, Вы писали:

A>Проблема в том, что заказчик хочет обойтись без PCAP. А я никак не могу настроить RAW Socket.

A>Может, у кого-нибудь уже есть решение? Поделитесь, плиз...

Есть подозрение, что ты не все знаешь про железяку и неправильно ее используешь. А если на 100% уверен, что знаешь все и используешь правильно, то увы. Не залезая на низкий уровень, ты не получишь данных из такого пакета.
Re[5]: Как получить пакет, фильтруемый системой?
От: mansur https://netmontools.com
Дата: 10.01.09 07:57
Оценка:
Здравствуйте, a426, Вы писали:

A>Может, у кого-нибудь уже есть решение? Поделитесь, плиз...


В виндах начиная с XP есть встроенный NDIS драйвер "ndisprot.sys", с ним легко работать из User-Mode ReadFile и т.д, даже не зная основ драйверостроения, единственное — его нужно пересобрать и переименовать, сэмпл WinDDK network\ndis\ndisprot, инструкция здесь.
С уважением mansur.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[6]: Как получить пакет, фильтруемый системой?
От: a426  
Дата: 15.01.09 15:33
Оценка:
Здравствуйте, mansur, Вы писали:

M>В виндах начиная с XP есть встроенный NDIS драйвер "ndisprot.sys", с ним легко работать из User-Mode ReadFile и т.д, даже не зная основ драйверостроения, единственное — его нужно пересобрать и переименовать, сэмпл WinDDK network\ndis\ndisprot, инструкция здесь.

M>С уважением mansur.

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