Raw-Сокеты. Как получить текст сообщений?
Хмм... Придётся на wasm'е спросить.
Пробовал AF_UNSPEC и IPPROTO_RAW фигня ещё хуже.
Пробовал AF_UNSPEC и IPPROTO_RAW фигня ещё хуже.
а то что у тебя в hexe данные валятся, так это я переводить не умею
Так заголовки для этого есть.
Насчёт хекса - так это же самый удобный вид представления произвольных данных.
IP:И не забыть ещё при чтении переворачивать порядок в двордах.
POS 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F E D C B A 9 8 7 6 5 4 3 2 1 0 F E D C B A 9 8 7 6 5 4 3 2 1 0
00h +-------------------------------+---------------+-------+-------+
| Total Length |Type of Service| IHL |Version|
04h +-------------------------+-----+---------------+-------+-------+
| |Flags| |
| | N | |
| Fragment Offset | O | Identification |
| | F | |
08h +-------------------------+-----+---------------+---------------+
| Header Checksum | Protocol | Time to Live |
0Ch +-------------------------------+---------------+---------------+
| Source Address |
10h +---------------------------------------------------------------+
| Destination Address |
14h +---------------+-----------------------------------------------+
| Padding | Options |
18h +---------------+-----------------------------------------------+
TCP:
POS 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
F E D C B A 9 8 7 6 5 4 3 2 1 0 F E D C B A 9 8 7 6 5 4 3 2 1 0
00h +-------------------------------+-------------------------------+
| Destination Port | Source Port |
04h +-------------------------------+-------------------------------+
| Sequence Number |
08h +---------------------------------------------------------------+
| Acknowledgment Number |
0Ch +-------------------------------+-+-+-+-+-+-+-----------+-------+
| |F|S|R|P|A|U| | Data |
| Window |I|Y|S|S|C|R| Reserved | Offset|
| |N|N|T|H|K|G| | |
10h +-------------------------------+-+-+-+-+-+-+-----------+-------+
| Urgent Pointer | Checksum |
14h +---------------+---------------+-------------------------------+
| Padding | Options |
18h +---------------+-----------------------------------------------+
Насчёт хекса - так это же самый удобный вид представления произвольных данных.
Напиши функцию, которая печатает поля пакета. Может быть и сам разберешься.
я отлично знаю заголовки TCP/IP
но у тебя вывод такой форматированый, что пиздец, мне лично читать очень тяжело
тем более (см твой первый пост) где ты в хексе хочешь увидеть само сообщение?
но у тебя вывод такой форматированый, что пиздец, мне лично читать очень тяжело
тем более (см твой первый пост) где ты в хексе хочешь увидеть само сообщение?
Читаем внимательнее - чуве говорит:
>Наваял слушатель на rawсокетах, слушаю нет сенд
С чего он взял, что NetBIOS - это именно то, что ходит внутри RAW-пакетов, не совсем понятно. Просто, наверное, слова услышал и кидает понты.
>Наваял слушатель на rawсокетах, слушаю нет сенд
С чего он взял, что NetBIOS - это именно то, что ходит внутри RAW-пакетов, не совсем понятно. Просто, наверное, слова услышал и кидает понты.
примерно о том же - пусть лучше возмет tcpdump и не парится
да, кстати
>И не забыть ещё при чтении переворачивать порядок в двордах.
htonl(3)
ntohl(3)
>И не забыть ещё при чтении переворачивать порядок в двордах.
htonl(3)
ntohl(3)
2 Glebius:
зачем, ведь итак печатается _всё_ содержимое пакета, а по заголовкам ориентироваться можно сносно. Функция-то есть, printf называется, написать со \n и %08X нетрудно, но зачем?
2Anonymous():
Если знаешь заголовки, то переводить умеешь. Вроде логично.
(про порядок байт - забей, я грешным делом подумал, что ты не знаешь; был неправ...)
2:
Понты не гоню, вопрос серьёзный, а не "на понт". Про NetBios мне сказал Outpost Firewall, поэтому и упомянул нетбиос. Сейчас слухач ловит пакеты от меня наружу и обратно, но я не уверен, что все. И досадно, что он не ловит сообщения самому себе.
зачем, ведь итак печатается _всё_ содержимое пакета, а по заголовкам ориентироваться можно сносно. Функция-то есть, printf называется, написать со \n и %08X нетрудно, но зачем?
2Anonymous():
Если знаешь заголовки, то переводить умеешь. Вроде логично.
(про порядок байт - забей, я грешным делом подумал, что ты не знаешь; был неправ...)
2:
Понты не гоню, вопрос серьёзный, а не "на понт". Про NetBios мне сказал Outpost Firewall, поэтому и упомянул нетбиос. Сейчас слухач ловит пакеты от меня наружу и обратно, но я не уверен, что все. И досадно, что он не ловит сообщения самому себе.
Почему не видно самих текстов сообщений?Каких текстов каких сообщений? Ты предполагаешь, что ты не весь пакет видишь? Тогда сравни заявленную длину в заголовке IP с тем, что ты считал. Заодно посмотрим насколько удобно тебе хекс читать

Из-за того, что создавая сокет, я указал семейство AF_INET, а не AF_NETBIOS и поэтому не все пакеты ловятся?Под какой операционной системой ты это делаешь? Покажи последовательность системных вызовов с параметрами с помощью которых ты ловишь пакеты. (только не надо нам показывать всю свою программу).
Неужели на каждый тип пакетов мне нужен отдельный сокет? Как бы обойтись одним?
Или NetBios пакеты имеют внешний НЕ-IP заголовок? (Я фильтровал по IP-адресу)Бывает NetBIOS over IP, а бывает over IPX. Может еще какой бывает...
> Каких текстов каких сообщений?
Посылал (вроде) тексты "2" и "22".
> Ты предполагаешь, что ты не весь пакет видишь?
Вижу весь пакет, но все ли пакеты, связанные с нет сендом?
> Под какой операционной системой ты это делаешь?
Виндовоз ХР.
> ...последовательность системных вызовов...
WSAStartup
s=socket(AF_INET, SOCK_RAW, IPPROTO_IP)
bind - семейство AF_INET, порт 0, адрес моего хоста
WSAIoctl(s , SIO_RCVALL, ...)
в цикле: from_len=recv(s, , , 0)
closesocket(s)
WSACleanup
> NetBIOS ... бывает over IPX
Какой заголовок у IPX? Для IPX пакетов будет нужен отдельный сокет?
Сейчас пороюсь в своих доках насчёт IPX.
Посылал (вроде) тексты "2" и "22".
> Ты предполагаешь, что ты не весь пакет видишь?
Вижу весь пакет, но все ли пакеты, связанные с нет сендом?
> Под какой операционной системой ты это делаешь?
Виндовоз ХР.
> ...последовательность системных вызовов...
WSAStartup
s=socket(AF_INET, SOCK_RAW, IPPROTO_IP)
bind - семейство AF_INET, порт 0, адрес моего хоста
WSAIoctl(s , SIO_RCVALL, ...)
в цикле: from_len=recv(s, , , 0)
closesocket(s)
WSACleanup
> NetBIOS ... бывает over IPX
Какой заголовок у IPX? Для IPX пакетов будет нужен отдельный сокет?
Сейчас пороюсь в своих доках насчёт IPX.
>Посылал (вроде) тексты "2" и "22".
В новом стандарте могли добавить сжатие LZW, так что проверь ещо разок
В новом стандарте могли добавить сжатие LZW, так что проверь ещо разок

А ты видишь эти тексты? Чёто не вижу хекса 0x32..
>А ты видишь эти тексты? Чёто не вижу хекса 0x32..
Они в графическом формате, наверное
Ты какие-нибудь документы по NetBIOS/RPC читал?
Они в графическом формате, наверное

Ты какие-нибудь документы по NetBIOS/RPC читал?
Усиленно штудирую эту тему в поиске ответа. Много информации.
От знающих форумчан ответ, наверно, в порядки быстрее получить можно и в компактном виде.
От знающих форумчан ответ, наверно, в порядки быстрее получить можно и в компактном виде.
Ответ уже был дан. Воспользуйся готовой программой - tcpdump. Убедись, что в NetBIOS не всегда идут данные plain text.
Tcpdump не пойдёт. У меня винда.
Можно Winpcup и windump установить, но я вроде в плане прослушки именно это и пытаюсь закодить самостоятельно.
Да ничего страшного, если не прямым текстом сообщение передаётся.
Я не уверен, что поймал ВСЁ, касающееся сообщения нет сенда.
И как мне поймать сообщение самому себе? На адрес 127.0.0.1 пробовал повесить сокет, там ошибка bind'a и Ioctl'а. На адрес INADDR_ANY вообще не хочет такой сокет вешаться.
Можно Winpcup и windump установить, но я вроде в плане прослушки именно это и пытаюсь закодить самостоятельно.
Да ничего страшного, если не прямым текстом сообщение передаётся.
Я не уверен, что поймал ВСЁ, касающееся сообщения нет сенда.
И как мне поймать сообщение самому себе? На адрес 127.0.0.1 пробовал повесить сокет, там ошибка bind'a и Ioctl'а. На адрес INADDR_ANY вообще не хочет такой сокет вешаться.
А зачем ты, собственно к RAW-сокетам прицепился?
> Tcpdump не пойдёт.
Возьми любой другой sniffer.
Их, в том числе,и под windows - как грязи.
Возьми любой другой sniffer.
Их, в том числе,и под windows - как грязи.
Потому что ipfilter hook driver имхо сложнее писать.
Да и опыт равсокетов пригодится.
Да и опыт равсокетов пригодится.
Можно Winpcup и windump установить, но я вроде в плане прослушки именно это и пытаюсь закодить самостоятельно.Вот установи их, для самоконтроля.
Я не уверен, что поймал ВСЁ, касающееся сообщения нет сенда.Еще раз: ты проконтролировал длину заявленную в заголовке IP с длиной считанного пакета?
Да, эти длины одинаковы. Я про другое - все ли пакеты я поймал? В этом я сомневаюсь.
ЗЫ: вот системный и мой равсокеты (инфа от Аутпоста):
SYSTEM localhost:any 0 RAWSOCKET 02.04.2005 10:34:25 3 day(s) 6 hour(s) 40 min(s) 25 sec(s)
RAWSOCK.EXE local:10.0.0.133 0 RAWSOCKET 17:20:09 20 sec(s)
ЗЫ: вот системный и мой равсокеты (инфа от Аутпоста):
SYSTEM localhost:any 0 RAWSOCKET 02.04.2005 10:34:25 3 day(s) 6 hour(s) 40 min(s) 25 sec(s)
RAWSOCK.EXE local:10.0.0.133 0 RAWSOCKET 17:20:09 20 sec(s)
Оставить комментарий
lera98
Наваял слушатель на rawсокетах, слушаю нет сенд, результат передачи двух разных сообщений:Почему не видно самих текстов сообщений?
Из-за того, что создавая сокет, я указал семейство AF_INET, а не AF_NETBIOS и поэтому не все пакеты ловятся?
Неужели на каждый тип пакетов мне нужен отдельный сокет? Как бы обойтись одним?
Или NetBios пакеты имеют внешний НЕ-IP заголовок? (Я фильтровал по IP-адресу)