
Kleines Payload für den Transfer über LOKI – Bietet Hochgeschwindigkeits-Dateiübertragungsfunktionen in beide Richtungen über einen virtuellen Kanal
Released as open source by NCC Group Plc - http://www.nccgroup.com/
Developed by Dave Spencer, david [dot] spencer [at] nccgroup [dot] com
http://www.github.com/nccgroup/Sleipnir
Released under AGPL see LICENSE for more information
Sleipnir ist eine kleine ausführbare Datei, die für den schnellen Upload über die Send-Keys-Methode innerhalb von Loki entwickelt wurde, daher das fehlende Icon. Sleipnir wurde entwickelt, um bidirektionale Dateiübertragungen über virtuelle Kanäle wesentlich schneller zu ermöglichen, als es die Send-Keys-Methode kann. Ein virtueller Kanal muss auf der Serverseite erstellt und dann von der Clientseite aus verbunden werden; alle über diese Kanäle übertragenen Daten laufen über die RDP-Verbindung. Die .NET-Funktion AxMsRdpClient7NotSafeForScripting.SendOnVirtualChannel kann nur Zeichenfolgendaten mit begrenzter Länge senden. Aus diesem Grund werden die Dateien in 1-kB-Blöcke zerlegt, auf der einen Seite base64-kodiert und auf der anderen Seite in einen Stream base64-dekodiert.
Sleipnir ist für die Verwendung mit Loki (https://github.com/nccgroup/loki) und Fenrir (https://github.com/nccgroup/Fenrir) konzipiert.
Sleipnir besteht aus einem Formular mit einer Fortschrittsanzeige und zwei Schaltflächen:
Datei empfangen – versetzt Sleipnir in den Zustand, auf Ereignisse im virtuellen Kanal Loki1 zu lauschen.
Datei senden – ermöglicht es dem Benutzer, eine Datei auf dem RDP-Desktop auszuwählen, um sie an den Client zurückzusenden.
Um eine Datei vom lokalen Host an den RDP-Server zu senden, muss der Benutzer auf die Schaltfläche „Datei empfangen“ in Sleipnir klicken und dann im Loki-Interface auf „Sleipnir“ -> „Send File On Virtual Channel“ klicken; anschließend wird der Benutzer aufgefordert, eine Datei auszuwählen. Sleipnir liest die Datei dann in 1-kB-Schritten, base64-kodiert sie und sendet sie an den virtuellen Kanal. Ein Ereignisbehandler in Sleipnir erkennt den Schreibvorgang, dekodiert ihn und schreibt ihn in eine Datei. Die Datei wird in demselben Verzeichnis erstellt, in dem sich Sleipnir befindet, und behält ihren ursprünglichen Dateinamen. Um eine Datei vom RDP-Server zurück zum Client zu senden, klicken Sie einfach auf die Schaltfläche „Datei senden“, wählen Sie eine Datei aus und warten Sie, bis die Übertragung beendet ist. Bei einigen größeren Dateien verzögert sich die Aktualisierung der Fortschrittsanzeige, und es kann so aussehen, als wäre das Programm abgestürzt, obwohl es in Wirklichkeit arbeitet. Obwohl es Dateien jeder Größe übertragen können sollte, habe ich es nur mit Dateien bis zu 250mb getestet, die es problemlos verarbeitet hat (allerdings wurde die Fortschrittsanzeige nicht aktualisiert; man muss einfach auf das Meldungsfeld warten, das den erfolgreichen Transfer bestätigt). Der Durchsatz liegt bei etwa 800kb/s.