jako mały (duży) projekt hobbistyczny, który przygotowałem, aby zrobić (bardzo prymitywnego) klienta ssh-2.0 w języku C#. Ma to na celu zbadanie i lepsze zrozumienie DH i pomaga rozwijać moje familiarities szyfrowania :)prymitywne połączenie ssh (lowlevel)
zgodnie z RFC 4253, Zacząłem połączenia początkowego takiego:
(pomijając nieistotne nastawa od Vars itd.)
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();
}
}
Jak widać na stronie 16 dokumentu RFC 4253, spodziewam się podać 10 list z nazwiskami. Czy są to po prostu ciągi lub jak zaznaczyć początek/koniec każdej listy (po prostu przez znak nowej linii \ n)? Czy jestem na dobrej drodze? (pamiętaj, że zajmę się DH i szyfrowaniem po tym punkcie.) Moje pytanie dotyczy wyłącznie pierwszego kontaktu.
Każda pomoc lub komentarze są mile widziane i doceniane,
PS: Jestem istnieją biblioteki świadomi, ale to nie jest istotne dla mojego projektu.
Pytanie, w jaki sposób wysyłać listy nazw za pomocą C#, więc zakładam, że jest to pytanie C#? Dostaję listy nazw serwerów, ale nie jest to format ciągów jako takich, więc pytam, jak mam przypisać mi przysługę i odpowiedzieć MY Nową listą (w jakim formacie). Mam nadzieję, że to oczyszcza :) – Chuck