
Крошечная полезная нагрузка для передачи через LOKI — обеспечивает высокоскоростную двустороннюю передачу файлов через виртуальный канал.
Выпущен как open source компанией NCC Group Plc - http://www.nccgroup.com/
Разработан Дэйвом Спенсером, david [dot] spencer [at] nccgroup [dot] com
http://www.github.com/nccgroup/Sleipnir
Выпущен под лицензией AGPL, см. LICENSE для получения дополнительной информации
Sleipnir — это небольшой исполняемый файл, предназначенный для быстрой передачи через метод send keys внутри Loki, отсюда и отсутствие иконки. 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-сервер, пользователь должен нажать кнопку Receive File в Sleipnir, а затем выбрать “Sleipnir” -> “Send File On Virtual Channel” в интерфейсе Loki; после этого пользователю будет предложено выбрать файл. Затем Sleipnir читает файл по 1k за раз, кодирует его в base64 и отправляет в виртуальный канал. Обработчик событий внутри Sleipnir обнаруживает запись, декодирует её и записывает в файл. Файл создаётся в том же каталоге, где находится Sleipnir, и сохраняет своё исходное имя. Чтобы отправить файл с RDP-сервера обратно клиенту, достаточно нажать кнопку Send File, выбрать файл и дождаться завершения передачи. При передаче некоторых крупных файлов обновление индикатора выполнения происходит с небольшой задержкой, и может показаться, что программа зависла, хотя на самом деле она работает. Хотя она должна уметь передавать файлы любого размера, я тестировал её только с файлами до 250мб, и она отлично с ними справлялась (правда, индикатор выполнения не обновлялся — нужно просто дождаться окна сообщения о том, что передача прошла успешно). Пропускная способность в среднем составляет около 800kb/s.