como un pequeño (gran) proyecto de hobby Me he propuesto hacer un cliente (muy primitivo) ssh-2.0 en C#. Se trata de explorar y entender mejor DH y ayudar a florecer mis familiaridades cifrado :)primitiva conexión ssh (nivel bajo)
según RFC 4253, he comenzado la conexión inicial de esta manera:
(dejando fuera irrelevante preajuste de VARs, etc.)
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();
}
}
Como se puede ver en la página 16 de la RFC 4253, me esperan para dar 10 nombres de listas. ¿Se supone que estos simplemente son cadenas, o cómo marco el inicio/final de cada lista (simplemente por nueva línea \ n)? ¿Estoy incluso en el camino correcto aquí? (Tenga en cuenta que manejaré el DH y el cifrado después de este punto. Mi pregunta se basa únicamente en el contacto inicial hasta el momento).
Cualquier ayuda o comentarios son bienvenidos y apreciados,
PS: Estoy existen bibliotecas conscientes, pero esto no es relevante para mi proyecto.
La pregunta es cómo enviar las listas de nombres usando C#, así que supongo que es una pregunta C# Recibo las listas de nombres de los servidores, pero esto no está en un formato de cadena per se, así que estoy preguntando cómo se supone que debo devolver el favor y responder con MI lista de nombres (en qué formato). Espero que esto lo aclare :) – Chuck