2015-11-25 11 views
0

如何創建的Python腳本,這將是連接到特定的IP與端口,並打印/回報,其中安全型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") 

我只是得到輸出: 「RFB 003.008」

+0

分享你迄今爲止編寫的代碼。 – k4ppa

+0

@ k4ppa再次檢查我的問題 – Yardanico

+0

沒有人能回答這個問題很難回答,我覺得... – Yardanico

回答

2

IETF RFC 6143(遠程幀緩衝協議)定義了安全握手握手版本後發生(見https://tools.ietf.org/rfc/rfc6143.txt第7.1.2)。

在安全握手的第一階段中,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