由 NCC Group Plc 以开源形式发布 - http://www.nccgroup.com/
由 Dave Spencer 开发,david [dot] spencer [at] nccgroup [dot] com
http://www.github.com/nccgroup/Sleipnir
根据 AGPL 发布,更多信息请参阅 LICENSE
Sleipnir 是一个小型可执行文件,旨在通过 Loki 中的 send keys 方法进行快速上传,因此没有图标。Sleipnir 的开发目的是利用虚拟通道,以比 send keys 方法快得多的速度提供双向文件传输。 需要在服务器端创建虚拟通道,然后从客户端连接,任何通过这些通道传递的数据都经由 RDP 连接进行。.NET 函数 AxMsRdpClient7NotSafeForScripting.SendOnVirtualChannel 只能发送长度有限的字符串数据,因此文件被分割成 1k 大小的块,在一侧进行 base64 编码,然后在另一侧将 base64 解码为流。
Sleipnir 设计用于与 Loki (https://github.com/nccgroup/loki) 和 Fenrir (https://github.com/nccgroup/Fenrir) 配合使用
Sleipnir 由一个带有进度条和两个按钮的窗体组成:
Receive File – 将 Sleipnir 设置为监听虚拟通道 Loki1 上的事件
Send File – 允许用户选择 RDP 桌面上的文件以发送回客户端。
要将文件从本地主机发送到 RDP 服务器,用户必须单击 Sleipnir 上的 Receive File 按钮,然后在 Loki 界面中点击“Sleipnir” -> “Send File On Virtual Channel”,系统会提示用户选择文件。 然后 Sleipnir 每次读取 1k 数据,对其进行 base64 编码并发送到虚拟通道。Sleipnir 中的事件处理程序检测到写入后,将其解码并写入文件。该文件创建在与 Sleipnir 相同的目录中,并保留其原始文件名。 要从 RDP 服务器将文件发送回客户端,只需单击 Send File 按钮,选择一个文件,然后等待传输结束。 对于某些较大的文件,进度条的更新会有一点延迟,它可能看起来像是崩溃了,但实际上它仍在工作。虽然它应该能够传输任意大小的文件,但我只测试过最大 250mb 的文件,它处理得非常好(尽管进度条没有更新,你只需要等待消息框提示传输成功即可)。平均吞吐量约为 800kb/s。