Брокеринг VNC-соединения (сервер протокола RFB)
Пожалуйста, рассмотрите следующий сценарий:
VNC-клиент пытается подключиться к VNC-серверу, который находится за NAT.
Я написал перенаправитель портов в Java, которые помогают мне в достижении вышеупомянутой задачи, и она отлично работает.
Теперь мне нужно каким-то образом добавить функцию посредника соединений в этот сервер пересылки, чтобы я также мог перехватывать связь между клиент-сервером VNC и проверять подлинность клиента VNC в утилите пересылки.
Возможно, вы уже догадались, что на самом деле я использую пароль, полученный от VNC Client, для проверки подлинности в моем приложении. Поскольку RFB-сервер может быть реализован на прикладном уровне, я полагаю, что этот перехват возможен... VNCAuthentication (шифрование / дешифрование DES) используется во всех вышеупомянутых коммуникациях. После успешной аутентификации в утилите пересылки я просто позволю пересылке продолжить для этого соответствующего клиента, иначе я могу закрыть ее (прекратить пересылку).
Я пробовал некоторые реализации, также пытался настроить реализацию Java сервера RFF... но до сих пор не смог туда добраться. Я знаю, что это займет некоторое время, но мне нужно подтвердить, правильно ли я думаю.
Пожалуйста, дайте мне знать, если реализация вышеописанного сценария неоднозначна, невозможна или незаконна, и если это возможно, дайте мне несколько строк гильдии...
1 ответ
Это похоже на хорошую реализацию. Думайте об этом как о прокси VNC, так же, как о прокси HTTP(S). Есть также прокси-серверы аутентификации HTTP. Вы реализуете часть протокола VNC для создания аутентификационного прокси-сервера VNC.
Возможно, вы можете получить вдохновение от VNCProxy, существующего Java VNC-прокси.