[英]Java socket remote desktop connection
嗨,我正在嘗試連接到遠程桌面,但我似乎無法獲取任何數據包,有沒有辦法獲取任何數據包並打印它,無論它包含什么字符和數字,也不管它的大小如何,
任何幫助都很棒,謝謝。
這是我測試它的代碼:
public static void main(String[] args) {
InetSocketAddress rdpSocket = new InetSocketAddress("127.0.0.1", 3389);
Socket rdp_Con = new Socket();
try {
rdp_Con.connect(rdpSocket);
if (rdp_Con.isConnected()) {
System.out.println("Connected To Remote Desktop Checking Packets...");
int red;
byte[] buffer = new byte[4096];
byte[] redData;
while ((red = rdp_Con.getInputStream().read(buffer)) > -1) {
redData = new byte[red];
System.arraycopy(buffer, 0, redData, 0, red);
System.out.println(Arrays.toString(redData));
}
}
} catch (IOException e) {
e.printStackTrace();
}
}
算了吧。 RDP協議已加密,並從客戶端身份驗證開始。 在成功協商握手之前,RDP服務器將永遠不會向您發送任何內容,並且在進行握手時將對其進行加密。
嘗試其他協議。
你應該understatand RDP連接順序提到這里開始X.224連接請求PDU 這里
InetSocketAddress rdpSocket = new InetSocketAddress("192.168.52.159", 3389);
Socket rdp_Con = new Socket();
try {
rdp_Con.connect(rdpSocket);
DataInputStream ins = new DataInputStream(new BufferedInputStream(rdp_Con.getInputStream()));
DataOutputStream out = new DataOutputStream(new BufferedOutputStream(rdp_Con.getOutputStream()));
if (rdp_Con.isConnected()) {
System.out.println("Connected To Remote Desktop Checking Packets...");
//X.224 Connection Request PDU encoded in HEX (hexdump)
String X224rq ="0300002a25e00000000000436f6f6b69653a206d737473686173683d726f6f740d0a010008000b000000";
// Convert Hex sequence to byte
byte[] bytes = new BigInteger(X224rq ,16).toByteArray();
//send to RDP server
out.write(bytes);
out.flush();
//Define packet to be recieved from rdp server
byte [] packet = new byte[20];
//read Packets
ins.readFully(packet,0,10);
//display Server X.224 Connection Confirm PDU
System.out.println("recv: " + Hex.toHexString(packet));
// TODO ;continue sequence as described in rdp protocol
}
} catch (IOException e) {
e.printStackTrace();
}
rdp_Con.close();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.