Есть ли какие-либо альтернативы LogonUser и выдавать себя за данную учетную запись для доступа к сетевым ресурсам? Я ищу метод олицетворения, который позволил бы мне подключиться к машине в чужих доменах (или машинах рабочих групп для одного и того же вопроса).Альтернативы LogonUser для олицетворения сети (C++)
Для исходных данных у меня есть: имя машины, имя пользователя (или домен \ имя пользователя), пароль открытого текста.
Я знаю, что есть способ установить соединение с помощью WNetAddConnection в \\ имя_индикатора \ ipc $, тогда большинство сетевых функций будут работать в контексте этой учетной записи, однако win2008 добавил еще один поворот, и некоторые функции по-прежнему используют учетную запись, которая поток работает под.
Я также знаю, что есть способ получить маркер олицетворения с использованием SSPI. Кто-нибудь экспериментировал с этими токенами, они хороши для доступа к общим ресурсам, SCM, удаленным реестрам и тому подобным? Это то, что использует WNetAddConnection?
EDIT: Чтобы уточнить, причину я не могу использовать LogonUser потому, что мне нужно выдавать пользователю не доверенным домен или рабочую группу
EDIT2: Еще одно уточнение: пункт Пытаюсь реализация аналогична psexec, например:
- Программа не должна изменять конфигурацию хоста или активного каталога (например: создание временных локальных пользователей и т. д.). Кроме того, нельзя предположить, что он работает на постоянном токе или нет
- не может быть никаких предположений о том, какое программное обеспечение предварительно установлено на удаленном хосте, только заданное условие заключается в том, что общий доступ к файлам Windows включен в цель
- Учетная запись/password, как известно, работает с целью, но целевая машина может находиться в локальном домене, чужом домене, а не в домене вообще.
EDIT3: Я бы очень хотелось услышать больше о опции ССПИ InitializeSecurityContext/AcquireCredentialsHandle. Есть ли кто-нибудь, кто много работал с этим API? Можно ли использовать токены, возвращенные с олицетворением, чтобы поток мог получить доступ к сетевым ресурсам и копировать файлы и т. Д.? Может ли кто-нибудь опубликовать фрагмент рабочего кода?
EDIT4: Благодаря Marsh Ray проблема решена. Если кто-то ищут, чтобы увидеть код проверки концепции, it is here
Вау, звучит как отличный подход! Я никогда не думал об этом. Позвольте мне дать ему быстрый тест, чтобы посмотреть, работает ли он – galets
чувак, вот и все! Большое вам спасибо, это было именно то, что я искал – galets
отлично! рад слышать это! –