2015-11-25 1 views
0

Как создать скрипт для Python, который будет подключаться к определенному ip с портом, и print/return, с которым связано соединение VNC типа безопасности?Как получить тип безопасности VNC с сервера с сокетами на Python?

import socket 
def check(ip,port): 
    vnc = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
    vnc.connect((ip,int(port))) 
    vnc_ver = vnc.recv(12) 
    print(vnc_ver) 
    vnc.send(vnc_ver) 
    print(vnc.recv(1024)) 
check("127.0.0.1","5900") 

Я просто получить вывод: "ОРФ 003,008"

+0

Поделиться кодом, который вы написали. – k4ppa

+0

@ k4ppa проверить мой вопрос снова – Yardanico

+0

никто не может ответить на этот ТРУДНЫЙ вопрос, я думаю ... – Yardanico

ответ

2

IETF RFC 6143 (Удаленный Framebuffer Protocol) определяет, что рукопожатия безопасности происходит после того, как версия рукопожатия (см пункт 7.1.2 https://tools.ietf.org/rfc/rfc6143.txt).

В первой фазе рукопожатия безопасности, сервер VNC должен:

  • отправить 1 байты, содержащих число поддерживаемых типов безопасности
  • следует из поддерживаемых типов безопасности (каждый тип защиты кодируется на один байт)

Так сценарий Python (похожий на тот, в вашем вопросе) может отобразить поддерживаемые типы безопасности, что путь:

import socket 

def displaySecurityType(sec_type): 
    switcher = { 
     0: "Invalid", 
     1: "NONE", 
     2: "VNC Authentication" 
    } 
    print(' security type: ' + str(sec_type) + ' (' + switcher.get(sec_type,"Not defined by IETF") +')') 

def check(ip,port): 
    vnc = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
    vnc.connect((ip,int(port))) 
    vnc_ver = vnc.recv(12) 
    print(vnc_ver) 
    vnc.send(vnc_ver) 
    nb_sec_types = ord(vnc.recv(1)) 
    print("Nb security types: " + str(nb_sec_types)) 
    for i in xrange(0,nb_sec_types): 
     sec_type = ord(vnc.recv(1)) 
     displaySecurityType(sec_type) 
check("127.0.0.1","5900") 
+0

Спасибо за ваш ответ! – Yardanico

Смежные вопросы