एक छोटी (बड़ी) शौक परियोजना के रूप में मैंने सी # में एक (बहुत आदिम) एसएसएच-2.0 क्लाइंट बनाने के लिए सेट किया है। यह पता लगाने और बेहतर DH को समझते हैं और मेरी एन्क्रिप्शन familiarities :)आदिम एसएसएच कनेक्शन (लोलेवल)
प्रति आरएफसी 4253 के रूप में पनपने में मदद करने के लिए है, मैं इस तरह प्रारंभिक कनेक्शन शुरू कर दिया है:
(बाहर छोड़ने वार्स की आदि अप्रासंगिक presetting)
Random cookie_gen = new Random();
while ((ssh_response = unsecure_reader.ReadLine()) != null)
{
MessageBox.Show(ssh_response);
if (ssh_response.StartsWith("SSH-2.0-")
{
// you told me your name, now I'll tell you mine
ssh_writer.Write("SSH-2.0-MYSSHCLIENT\r\n");
ssh_writer.Flush();
// now I should write up my supported (which I'll keep to the required as per rfc 4253)
ssh_writer.Write(0x20); // SSH_MSG_KEXINIT
byte[] cookie = new byte[16];
for (int i = 0; i < 16; i++)
cookie[i] = Convert.ToByte(cookie_gen.Next(0, 10));
ssh_writer.Write(cookie); // cookie
// and now for the name-list
// This is where I'm troubled
// "Footer"
ssh_writer.Write(0x00); // first_kex_packet_follows
ssh_writer.Write(0x00); // 0
ssh_writer.Flush();
}
}
जैसा कि आप आरएफसी 4253 के पेज 16 पर देख सकते हैं, मुझे 10 नाम-सूचियां देने की उम्मीद है। क्या ये बस स्ट्रिंग होने का मानते हैं, या मैं प्रत्येक सूची के प्रारंभ/अंत को कैसे चिह्नित करूं (बस न्यूलाइन द्वारा \ n)? क्या मैं यहां पर सही रास्ते पर भी हूं? (ध्यान रखें कि मैं इस बिंदु से पहले डीएच और एन्क्रिप्शन को संभालेगा। मेरा प्रश्न पूरी तरह से प्रारंभिक संपर्क पर आधारित है)।
कोई मदद या टिप्पणी का स्वागत किया और सराहना कर रहे हैं,
पुनश्च: मुझे पता है पुस्तकालयों मौजूद हूँ, लेकिन यह मेरा परियोजना के लिए प्रासंगिक नहीं है।
प्रश्न यह है कि सी # का उपयोग करके नाम-सूचियां कैसे भेजें, तो मुझे लगता है कि यह एक सी # प्रश्न है? मैं सर्वनामिस्टों को प्राप्त करता हूं, लेकिन यह प्रति स्ट्रिंग प्रारूप में नहीं है, इसलिए मैं पूछ रहा हूं कि मुझे लगता है कि मैं अपने नामेलिस्ट (किस प्रारूप में) के पक्ष में जवाब देने और जवाब देने का अनुमान लगाता हूं। उम्मीद है कि यह इसे साफ़ करता है :) – Chuck