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

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

Проблемы с MailSlot [D6, D7, WinXP]


Dimman1 ©   (2003-11-12 14:17:00) 

Почему CreateMailSlot(PChar("\\*\mailslot\abc"), 0, MAILSLOT_WAIT_FOREVER,nil) возвращает INVALID_HANDLE_VALUE. Если ставлю вместо звезды точку, то работает, но мне НАДО ловить ВСЕ сообщения, которые шлются на данный слот, даже те, которые адресованы для других компьютеров сети. Может я че не так понимаю:/ Вроде в хелпе так написано:/. И как это можно сделать?


Dimman1   (2003-11-18 20:01:00) [1]

Ну все понял, всем спасибо:). * можно ставить только при записи:(... Придется cниффер писать :(


Almax   (2003-11-18 16:41:00) [2]

А где ты видел, что можно * ставить в имени майлслота. В MSDN сказано, что формат имени должен быть \\.\mailslot\[path]name а про * там ничего не сказано.


Dean   (2003-11-18 06:15:00) [3]

Да... и ещё. Mailslot создаётся только на локальной машине поэтому сработает именно CreateMailslot( "\\.\mailslot\ ... а не CreateMailSlot(PChar("\\*\mailslot\abc"). Точка ставится для создания Mailslot"а на локальной машине, а "*" для работы с группой машин с созданными Mailslot"ами. Вот.


Dean   (2003-11-18 06:05:00) [4]

В серверном приложении создаётся Mailslot:

hServerMailSlot := CreateMailslot( "\\.\mailslot\$Name$",
0,
MAILSLOT_WAIT_FOREVER,
nil );

... а в клиетском так:

hClientMailSlot := CreateFile( "\\*\mailslot\$Name$",
GENERIC_WRITE,
FILE_SHARE_READ,
nil,
OPEN_EXISTING,
0,
0 );

Есть книжка А.В. Фролов, Г.В. Фролов "Программирование для Windows NT". Там подробно эта ситуация описывается.


Dimman1   (2003-11-17 20:31:00) [5]

да я в курсе как хабы работают:)


Almax   (2003-11-17 04:18:00) [6]

Ваще, если я не ошибаюсь, то МайлСлот ловит сообщения адресованые только на твой компьютер, т.е чужие сообщения ты МайлСлотом не поймаешь без каких-либо изощрений. И ваще, чтобы до тебя доходили чужие сообщения нужно, чтобы у вас в сети стояли только хабы, они раскидывают пакеты по всей сети, со свитчами перехват пакетов не прокатит. Кстати есть такая прога PopCapturer называется она перехватывает мессаги проходящие через хаб... посмотри. Поищи в Яндексе или ещё где я у себя ссылок не нашёл, она просто старая. Можешь так же просто на чужие компы заслать свою прогу, чтобы она переадресовывала сообщения тебе, но нужен доступ... Дерзай!!!


Closer   (2003-11-16 13:15:00) [7]

Да, думаю снифер с таким набором функций тебе не найти, так что прийдётся писать самому.


Dimman1   (2003-11-15 20:18:00) [8]

Готовый, я думаю не покатит, там сообщения шифрованые идут, по совоему алгоритму...:) Найти бы такой сниффер который, бы сообщений в отдельные файлики скидывал, и слал моей проги message, чтобы она его раскодировала, и на экран вывела........ :o)))


Closer   (2003-11-15 18:17:00) [9]

К сожалению исходников снифера у меня нету, но полазив 5 минут по Рунету удалось наити пару ссылок. Возможно тебе повезёт больше :)

http://www.sources.ru/cpp/network/sniff_2k_xp.shtml
http://www.sources.ru/NonCGI/Forum2/HTML/002630.html

P.S.
Да, если ты не в курсе, и вдруг захочешь написать снифер под w9x, то тебе понадобятся специальные библиотеки для таботы с TCP\IP стеком. Вот ссылки:
http://www.komodia.com
http://winpcap.polito.it

P.P.S.
Мне чесно говоря было бы влом писать снифер только для того чтобы ловить сообщения :) я бы воспользовался готовым. Наити такой можно непример на SecurityLab.ru


Dimman1   (2003-11-14 11:12:00) [10]

До я уж понял :(
а исходник подобного снифера не подкинешь?:))


Closer   (2003-11-14 01:49:00) [11]

Просто MailSlot с таким именем создать нельзя, вот и всё. А сооздать его нельзя потому что такой путь "\\*\mailslot\comp1" (со звёздочкой) зарезервирован Microsoft и используется для отправки сообщения всем пользователям домена.
ИХМО: Если всё же ты хочешь перехватывать все сообщения которые приходят тебе, то ты должен спустится на уровень ниже а то и 2 (т.е. работать с NetBios или вобще перехватывать все приходящие на тебя пакеты).


Dimman1   (2003-11-13 12:24:00) [12]

Ну неужели никто такого не делал???


Dimman1   (2003-11-12 19:51:00) [13]

Короче, там не то. С маил слотами у меня все нормально работает, но дело не в том. Короче надо ловить сообщения, которые отправлются например на \\PC1\mailslot\abc, \\PC2\mailslot\abc и т.д., притом что я сижу cкажем на PC3. По идее надо писать в CreateMailSlot имя слота "\\PC1\mailslot\abc", чтобы читать сообщения, посылаемые на PC1 или писать "\\*\mailslot\abc", но не работает ни первый ни второй вариант (INVALID_HANDLE_VALUE). Как быть, и вообще такое возможно?


Rouse_   (2003-11-12 17:56:00) [14]

http://www.delphimaster.ru/cgi-bin/forum.pl?id=1066114577&n=4

Желаю успехов


Наверх

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