
Charge utile minimale pour le transfert via LOKI - Fournit des capacités de transfert de fichiers bidirectionnel à haute vitesse via Virtual Channel
Publié en open source par NCC Group Plc - http://www.nccgroup.com/
Développé par Dave Spencer, david [dot] spencer [at] nccgroup [dot] com
http://www.github.com/nccgroup/Sleipnir
Publié sous licence AGPL, voir LICENSE pour plus d'informations
Sleipnir est un petit exécutable conçu pour un téléversement rapide via la méthode d'envoi de touches (send keys) dans Loki, d'où l'absence d'icône. Sleipnir a été développé pour fournir des transferts de fichiers bidirectionnels à un rythme bien plus rapide que celui de la méthode d'envoi de touches, grâce à l'utilisation de canaux virtuels. Un canal virtuel doit être créé côté serveur puis connecté depuis le côté client ; toutes les données transmises via ces canaux le sont au travers de la connexion RDP. La fonction .NET AxMsRdpClient7NotSafeForScripting.SendOnVirtualChannel ne peut envoyer que des données de type chaîne d'une longueur limitée ; pour cette raison, les fichiers sont découpés en morceaux de 1 Ko, encodés en base64 d'un côté, puis décodés en base64 dans un flux de l'autre côté.
Sleipnir est conçu pour être utilisé avec Loki (https://github.com/nccgroup/loki) et Fenrir (https://github.com/nccgroup/Fenrir)
Sleipnir se compose d'un formulaire avec une barre de progression et deux boutons :
Receive File – configure Sleipnir pour écouter les événements sur le canal virtuel Loki1
Send File – permet à l'utilisateur de sélectionner un fichier sur le bureau RDP à renvoyer au client.
Pour envoyer un fichier de l'hôte local vers le serveur RDP, l'utilisateur doit cliquer sur le bouton Receive File dans Sleipnir, puis cliquer sur « Sleipnir » -> « Send File On Virtual Channel » dans l'interface Loki ; il lui est alors demandé de sélectionner un fichier. Sleipnir lit ensuite le fichier par blocs de 1 Ko, l'encode en base64 et l'envoie sur le canal virtuel. Un gestionnaire d'événements dans Sleipnir détecte l'écriture, la décode et l'écrit dans un fichier. Le fichier est créé dans le même répertoire que celui où se trouve Sleipnir et conserve son nom de fichier d'origine. Pour envoyer un fichier du serveur RDP vers le client, il suffit de cliquer sur le bouton Send File, de sélectionner un fichier, puis d'attendre la fin du transfert. Avec certains fichiers volumineux, la mise à jour de la barre de progression accuse un léger retard et il peut sembler que le programme a planté alors qu'il fonctionne en réalité. Bien qu'il soit censé pouvoir transférer des fichiers de n'importe quelle taille, je ne l'ai testé qu'avec des fichiers allant jusqu'à 250 Mo, ce qu'il a parfaitement géré (même si la barre de progression ne se mettait pas à jour, il suffit d'attendre la boîte de message indiquant que le transfert s'est bien passé). Le débit moyen est d'environ 800 Ko/s.