का उपयोग कर आरडीपी में लॉगिन करने का प्रयास कर रहा हूं मैं एएस 3 (वायु) का उपयोग कर आरडीपी में लॉगिन करने की कोशिश कर रहा हूं। मैं वास्तविक प्रक्रिया को समझने के लिए संसाधनों की कमी पर विचार कर ठीक कर रहा हूं।एएस 3
मुझे प्रारंभिक प्रेषण उपयोगकर्ता नाम से पहले मिल गया है, सर्वर से प्रतिक्रिया प्राप्त हुई है, और अब मैं प्रारंभिक अनुरोध कनेक्शन पर हूं।
मैं अपना पूरा डेटा भेज रहा हूं और यातायात को सूँघते समय, मुझे लगता है कि नेटमोन सही ढंग से पहचान रहा है कि मैं किस प्रकार का पैकेट भेज रहा हूं (टी 125)। मैं नहीं आरडीपी द्वारा डिस्कनेक्ट किया जा रहा है और वे ack
पैकेट भेजते हैं - लेकिन मुझे वह प्रतिक्रिया प्राप्त नहीं होती है जिसकी मुझे उम्मीद है।
मैं connectoid
के साथ संदर्भ संदर्भ रहा हूं, जो एक ओपन सोर्स आरडीपी क्लाइंट है। कनेक्शन कोड में, मैं अटक गया हूं जहां वे छोटे और बड़े-एंडियन पूर्णांक का मिश्रण लिखते हैं।
जब मैं वहाँ बाहर सीमित उदाहरणों पर गौर (अधिक पैकेट उदासीनता की तरह), मुझे लगता है कि इस प्रक्रिया के लिए कनेक्शन की लंबाई 412 है, लेकिन मेरे bytearray
अधिक की तरह 470.
मैं करने के लिए connectoid
तरीकों परिवर्तित कर दिया है क्या मेरा मानना है कि सही है, लेकिन एंडियन प्रकार के मिश्रण के साथ, मैं अभी भी अनिश्चित हूं।
मुझे खेद है कि यह खराब है, लेकिन मैं आपकी मदद करने में आपकी सहायता करने के लिए अपनी पूरी कोशिश कर रहा हूं। मैं कुछ कोड संलग्न करूंगा जो दिखा रहा हूं कि मैंने रूपांतरण में क्या करने की कोशिश की है।
public function sendMcsData(): void {
trace("Secure.sendMcsData");
var num_channels: int = 2;
//RdpPacket_Localised dataBuffer = new RdpPacket_Localised(512);
var hostlen: int = 2 * "myhostaddress.ath.cx".length;
if (hostlen > 30) {
hostlen = 30;
}
var length: int = 158;
length += 76 + 12 + 4;
length += num_channels * 12 + 8;
dataBuffer.writeShort(5); /* unknown */
dataBuffer.writeShort(0x14);
dataBuffer.writeByte(0x7c); //set 8 is write byte //write short is setbigendian 16 //
dataBuffer.writeShort(1);
dataBuffer.writeShort(length | 0x8000); // remaining length
dataBuffer.writeShort(8); // length?
dataBuffer.writeShort(16);
dataBuffer.writeByte(0);
var b1: ByteArray = new ByteArray();
b1.endian = Endian.LITTLE_ENDIAN;
b1.writeShort(0xc001);
dataBuffer.writeBytes(b1);
dataBuffer.writeByte(0);
var b2: ByteArray = new ByteArray();
b2.endian = Endian.LITTLE_ENDIAN;
b2.writeInt(0x61637544);
dataBuffer.writeBytes(b2);
//dataBuffer.setLittleEndian32(0x61637544); // "Duca" ?!
dataBuffer.writeShort(length - 14 | 0x8000); // remaining length
var b3: ByteArray = new ByteArray();
b3.endian = Endian.LITTLE_ENDIAN;
// Client information
b3.writeShort(SEC_TAG_CLI_INFO);
b3.writeShort(true ? 212 : 136); // length
b3.writeShort(true ? 4 : 1);
b3.writeShort(8);
b3.writeShort(600);
b3.writeShort(1024);
b3.writeShort(0xca01);
b3.writeShort(0xaa03);
b3.writeInt(0x809); //should be option.keybaortd layout just guessed 1
b3.writeInt(true ? 2600 : 419); // or 0ece
dataBuffer.writeBytes(b3);
// // client
// build? we
// are 2600
// compatible
// :-)
/* Unicode name of client, padded to 32 bytes */
dataBuffer.writeMultiByte("myhost.ath.cx".toLocaleUpperCase(), "ISO");
dataBuffer.position = dataBuffer.position + (30 - "myhost.ath.cx".toLocaleUpperCase()
.length);
var b4: ByteArray = new ByteArray();
b4.endian = Endian.LITTLE_ENDIAN;
b4.writeInt(4);
b4.writeInt(0);
b4.writeInt(12);
dataBuffer.writeBytes(b4);
dataBuffer.position = dataBuffer.position + 64; /* reserved? 4 + 12 doublewords */
var b5: ByteArray = new ByteArray();
b5.endian = Endian.LITTLE_ENDIAN;
b5.writeShort(0xca01); // out_uint16_le(s, 0xca01);
b5.writeShort(true ? 1 : 0);
if (true) //Options.use_rdp5)
{
b5.writeInt(0); // out_uint32(s, 0);
b5.writeByte(24); // out_uint8(s, g_server_bpp);
b5.writeShort(0x0700); // out_uint16_le(s, 0x0700);
b5.writeByte(0); // out_uint8(s, 0);
b5.writeInt(1); // out_uint32_le(s, 1);
b5.position = b5.position + 64;
b5.writeShort(SEC_TAG_CLI_4); // out_uint16_le(s,
// SEC_TAG_CLI_4);
b5.writeShort(12); // out_uint16_le(s, 12);
b5.writeInt(false ? 0xb : 0xd); // out_uint32_le(s,
// g_console_session
// ?
// 0xb
// :
// 9);
b5.writeInt(0); // out_uint32(s, 0);
}
// Client encryption settings //
b5.writeShort(SEC_TAG_CLI_CRYPT);
b5.writeShort(true ? 12 : 8); // length
// if(Options.use_rdp5) dataBuffer.setLittleEndian32(Options.encryption ?
// 0x1b : 0); // 128-bit encryption supported
// else
b5.writeInt(true ? (false ? 0xb : 0x3) : 0);
if (true) b5.writeInt(0); // unknown
if (true && (num_channels > 0)) {
trace(("num_channels is " + num_channels));
b5.writeShort(SEC_TAG_CLI_CHANNELS); // out_uint16_le(s,
// SEC_TAG_CLI_CHANNELS);
b5.writeShort(num_channels * 12 + 8); // out_uint16_le(s,
// g_num_channels
// * 12
// + 8);
// //
// length
b5.writeInt(num_channels); // out_uint32_le(s,
// g_num_channels);
// // number of
// virtual
// channels
dataBuffer.writeBytes(b5);
trace("b5 is bigendin" + (b5.endian == Endian.BIG_ENDIAN));
for (var i: int = 0; i < num_channels; i++) {
dataBuffer.writeMultiByte("testtes" + i, "ascii"); //, 8); // out_uint8a(s,
// g_channels[i].name,
// 8);
dataBuffer.writeInt(0x40000000); // out_uint32_be(s,
// g_channels[i].flags);
}
}
//socket.
//buffer.markEnd();
//return buffer;
}
क्या आप किसी ज्ञात अच्छे आरडीपी क्लाइंट से अपमानजनक पैकेट को कैप्चर कर सकते हैं और उन पैकेटों के मुकाबले तुलना कर सकते हैं जिनके बारे में आप उत्सुक हैं? यह एक बग हो सकता है कि आप अपने बाइट सरणी के सेगमेंट को कैसे एन्कोड कर रहे हैं। – Ben
क्या आप "प्रारंभिक अनुरोध कनेक्शन" पर आपके द्वारा बताए गए शब्दों का विस्तार कर सकते हैं, कृपया? शुरुआती अनुरोध आपके लिए लॉगिन करने के लिए पहले से ही पारित किया जाना चाहिए था, इसलिए यह स्पष्ट नहीं है कि आप किस स्थिति में फंस गए हैं। आपने अपना कनेक्शन अनुरोध (0xe0) भेजा है और आपकी पुष्टि (0xd0) प्राप्त की है और अब आप "कनेक्ट-प्रारंभिक" चरण में हैं? या घटनाओं की रेखा के नीचे कहीं और? क्या आपके द्वारा उपरोक्त कोड में "एमसीएस: कनेक्ट-प्रारंभिक" पैकेट उत्पन्न करने वाला पैकेट है? –
बेवकूफ सवाल, लेकिन क्या आपने यह बॉक्स देखने के लिए मैन्युअल रूप से आरडीपी को चलाने की कोशिश की है कि यह काम करता है? बैनर की तरह लॉगिन रोकने के लिए कुछ हो सकता है "यह मशीन अधिकृत उपयोग के लिए है केवल ब्ला ब्लाह" –