примитивное соединение SSH (низкий уровень)

как маленький (большой) проект хобби я намеревался делать (очень примитивный) ssh-2.0 клиент в C#. Это должно исследовать и лучше понять DH и расцвет справки мои знакомства шифрования :)

Согласно RFC 4253, я начал начальное соединение как это:

(игнорирование несоответствующей предварительной установки Вара и т.д.)

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();
   }
}

Как Вы видите на странице 16 RFC 4253, я, как ожидают, дам 10 списков имени. Это, просто предполагают, чтобы быть строками, или как делают я отмечаю, запускают/заканчивают каждого списка (просто новой строкой \n)? Я даже на правильном пути здесь? (имейте в виду, что я обработаю DH и шифрование мимо этой точки. Мой вопрос только основан на начальном контакте до сих пор).

Любая справка или комментарии одобрены и ценятся,

PS: я - осведомленные библиотеки, существуют, но это не относится к моему проекту.

6
задан John Saunders 8 July 2010 в 19:08
поделиться

1 ответ

Ну, как указано в RFC 4251 на странице 9:

Нулевые символы завершения НЕ ДОЛЖНЫ использоваться, ни ни для отдельных имен, ни для списка в целом.

Примеры также есть в названном RFC.

2
ответ дан 17 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: