Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

Named pipe   Найти похожие ветки 

 
Чапаев ©   (2006-12-03 13:00) [0]

Можно ли узнать, кто (process identifier) подключился к именованному каналу? Если можно, то как?


 
Eraser ©   (2006-12-03 14:11) [1]

на сколько я знаю - нельзя, хотя через ядерные ф-ции может и можно (у Rouse"a пример был вроде).


 
Eraser ©   (2006-12-03 15:28) [2]

> [0] Чапаев ©   (03.12.06 13:00)

я так понимаю, это нужно, чтобы клиент, запущенный в текущей терм. сесии общался с сервисом и была 100% гарантия, что это именно "свой" клиент?
тогда ничего изобретать не надо, если клиент запущен от имени системы (через нитификэйшн пакдж), то если просто на сервере выставить права доступа к пайпу по-умолчани, то у клиента дожлжно хватить прав подсоединиться к сервису.


 
Чапаев ©   (2006-12-03 16:21) [3]

> была 100% гарантия, что это именно "свой" клиент?
Ну в общем да. Не очень хочется изобретать очередной велосипед аутентификации...


> нитификэйшн пакдж
Это уже твои домыслы. ;-)


 
Чапаев ©   (2006-12-03 16:23) [4]

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


 
Eraser ©   (2006-12-03 16:26) [5]

> [4] Чапаев ©   (03.12.06 16:23)

если клиент запущен сервисом, значит у него есть права "SYSTEM", просто разрешать подсоединяться к сервису клиентам, которые имеют такие права.
А механизм аутентификации не поможет, нужен будет еще и алгоритм авторизации, а как его делать в данной ситуации - сложно сказать )


 
Чапаев ©   (2006-12-03 16:28) [6]

> [5] Eraser ©   (03.12.06 16:26)
Нету, запускается CreateProcessAsUser().


 
Eraser ©   (2006-12-03 16:31) [7]

> [6] Чапаев ©   (03.12.06 16:28)

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


 
Чапаев ©   (2006-12-03 18:14) [8]

Хм... А если создать anonymous pipe, перенаправить в него клиентский ввод-вывод и общаться с клиентом таким способом?


 
Eraser ©   (2006-12-03 18:35) [9]

> [8] Чапаев ©   (03.12.06 18:14)

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


 
BiN ©   (2006-12-03 22:00) [10]

Как вариант могу предложить использовать LPC. Там уже реализована поддержка определения не только процесса, но и потока клиента.


 
BiN ©   (2006-12-03 22:15) [11]

Кстати, список процессов, открывших тот же объект, что и твой процесс, можно получить по полю Object_ из списка открытых описателей, полученного с помощью QSI(SystemHandleInformationClass..)


 
Riply ©   (2006-12-03 23:51) [12]

>[11] BiN ©   (03.12.06 22:15)
>можно получить по полю Object
А можно подробнее ?
Просто я считала, что одинаковые поля Object в разных процессах могут указывать на
разные объекты и наоборот, разные на один и тот же.
>[10] BiN ©   (03.12.06 22:00)
"LPC" - что это такое и где можно посмотреть ?


 
Чапаев ©   (2006-12-03 23:52) [13]

LPC для меня -- тёмный лес. QSI -- это QuerySystemInformation()?


 
Чапаев ©   (2006-12-04 00:15) [14]

> LPC" - что это такое и где можно посмотреть ?
Local procedure call. У Руссиновича.


 
Eraser ©   (2006-12-04 00:52) [15]

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

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


 
Чапаев ©   (2006-12-04 08:51) [16]

Вот не знаю... На данный момент если юзер знает правильный логин/пароль комплекса, то он может делать всё, какие бы права он ни имел в системе.


 
BiN ©   (2006-12-04 10:20) [17]


> Riply ©   (03.12.06 23:51) [12]
> А можно подробнее ?
> Просто я считала, что одинаковые поля Object в разных процессах
> могут указывать на
> разные объекты и наоборот, разные на один и тот же.

Object - этот адрес использует диспетчер объектов и драйвера для управления объектом. Тело объекта располагается в верхней части ВАП - выше $80000000. Это пространство обычно разделяется всеми процессами, а, значит, и адрес объекта должен совпадать.

LPC - это один из механизмов IPC, используемый, например, в remote procedure call. LPC также используется для передачи отладочных сообщений и сообщений исключений процессу подсистемы Win32.
Встречал статью на rsdn.ru с примерами.


 
Eraser ©   (2006-12-04 15:25) [18]

> [16] Чапаев ©   (04.12.06 08:51)

а почему бы программе-клиенту не поднять права до административных? тогда и проблема с коммуникацией решиться и прав больше будет.


 
Riply ©   (2006-12-04 16:23) [19]

>[17] BiN ©   (04.12.06 10:20)
Спасибо ! Статью нашла.
>а, значит, и адрес объекта должен совпадать
Что-то я не понимаю. :(
Запустила две программы (на одном компьютере). Они законнектились при помощи NamedPipe.
Посмотрела адреса "Пайповых" объектов (QSI)- они различны :(
Может надо учитывать какое-то смещение ?


 
BiN ©   (2006-12-04 16:59) [20]


> Riply ©   (04.12.06 16:23) [19]
>
> Что-то я не понимаю. :(
> Запустила две программы (на одном компьютере). Они законнектились
> при помощи NamedPipe.
> Посмотрела адреса "Пайповых" объектов (QSI)- они различны
> :(
> Может надо учитывать какое-то смещение ?
>

Мда, точно... Наврал я вам -((
С объектами "File","Section" и "Key", такой трюк не пройдет...


 
BiN ©   (2006-12-04 17:01) [21]

... по той простой причине, что в этих случаях создаются новые объекты ядра (имо)


 
vidiv ©   (2006-12-04 17:45) [22]

Удалено модератором
Примечание: Создание пустых сообщений



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

Форум: "WinAPI";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.039 c
2-1176374431
denmin
2007-04-12 14:40
2007.04.29
Как открыть ранее сохраненный файл Quickreport a?


4-1164976076
SS-ALX
2006-12-01 15:27
2007.04.29
Как с помощью WinAPI (EDM) программно оключить устройство


2-1176131687
Ezorcist
2007-04-09 19:14
2007.04.29
Приоритет потока TThread и самой программы.


2-1176390032
Roman_S
2007-04-12 19:00
2007.04.29
простой примерчик проверки пароля при запуске


6-1162551641
simplenick
2006-11-03 14:00
2007.04.29
Поиск файлов определенного типа по сайту





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский