gpt4 book ai didi

c# - 原始 ssh 连接(低级)

转载 作者:太空狗 更新时间:2023-10-29 21:55:53 26 4
gpt4 key购买 nike

作为一个小型(大型)业余爱好项目,我着手用 C# 制作一个(非常原始的)ssh-2.0 客户端。这是为了探索和更好地理解 DH 并帮助提高我对加密的熟悉度:)

根据 RFC 4253,我已经开始这样的初始连接:

(省略不相关的 vars 等预设)

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

正如您在 RFC 4253 第 16 页所见,我需要提供 10 个名单。这些只是假定为字符串,还是我如何标记每个列表的开始/结束(只需换行\n)?我什至在正确的轨道上吗? (请记住,我将在此之后处理 DH 和加密。我的问题完全基于到目前为止的初步接触)。

欢迎和赞赏任何帮助或意见,

PS:我知道存在库,但这与我的项目无关。

最佳答案

嗯,正如 RFC 4251 第 9 页所述:

Terminating null characters MUST NOT be used, neither for the individual names, nor for the list as a whole.

命名的RFC中也有例子。

关于c# - 原始 ssh 连接(低级),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2872279/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com