├── .gitignore ├── Outlook Account Gen.sln ├── Outlook Account Gen.sln.DotSettings ├── Outlook Account Gen ├── Config.cs ├── Outlook Account Gen.csproj └── Program.cs └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | /.idea/ 2 | /.vscode/ 3 | /.vs/ 4 | .idea/ 5 | .vscode/ 6 | .vs/ 7 | bin/ 8 | obj/ 9 | /packages/ 10 | riderModule.iml 11 | /_ReSharper.Caches/ -------------------------------------------------------------------------------- /Outlook Account Gen.sln: -------------------------------------------------------------------------------- 1 |  2 | Microsoft Visual Studio Solution File, Format Version 12.00 3 | Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Outlook Account Gen", "Outlook Account Gen\Outlook Account Gen.csproj", "{77035A0D-225F-48A2-8D59-B50059E544EB}" 4 | EndProject 5 | Global 6 | GlobalSection(SolutionConfigurationPlatforms) = preSolution 7 | Debug|Any CPU = Debug|Any CPU 8 | Release|Any CPU = Release|Any CPU 9 | EndGlobalSection 10 | GlobalSection(ProjectConfigurationPlatforms) = postSolution 11 | {77035A0D-225F-48A2-8D59-B50059E544EB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU 12 | {77035A0D-225F-48A2-8D59-B50059E544EB}.Debug|Any CPU.Build.0 = Debug|Any CPU 13 | {77035A0D-225F-48A2-8D59-B50059E544EB}.Release|Any CPU.ActiveCfg = Release|Any CPU 14 | {77035A0D-225F-48A2-8D59-B50059E544EB}.Release|Any CPU.Build.0 = Release|Any CPU 15 | EndGlobalSection 16 | EndGlobal 17 | -------------------------------------------------------------------------------- /Outlook Account Gen.sln.DotSettings: -------------------------------------------------------------------------------- 1 |  2 | True 3 | True -------------------------------------------------------------------------------- /Outlook Account Gen/Config.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using System; 3 | using System.Collections.Generic; 4 | using System.Linq; 5 | using System.Text; 6 | using System.Threading.Tasks; 7 | 8 | namespace Outlook_Account_Gen 9 | { 10 | public class ExtensionJsonConfig 11 | { 12 | public string apiKey { get; set; } 13 | public string appId { get; set; } 14 | public bool useCapsolver { get; set; } 15 | public bool manualSolving { get; set; } 16 | public string solvedCallback { get; set; } 17 | public bool useProxy { get; set; } 18 | public string proxyType { get; set; } 19 | public string hostOrIp { get; set; } 20 | public string port { get; set; } 21 | public string proxyLogin { get; set; } 22 | public string proxyPassword { get; set; } 23 | public bool enabledForBlacklistControl { get; set; } 24 | public List blackUrlList { get; set; } 25 | public bool enabledForRecaptcha { get; set; } 26 | public bool enabledForRecaptchaV3 { get; set; } 27 | public bool enabledForHCaptcha { get; set; } 28 | public bool enabledForFunCaptcha { get; set; } 29 | public bool enabledForImageToText { get; set; } 30 | public string reCaptchaMode { get; set; } 31 | public string hCaptchaMode { get; set; } 32 | public int reCaptchaDelayTime { get; set; } 33 | public int hCaptchaDelayTime { get; set; } 34 | public int textCaptchaDelayTime { get; set; } 35 | public int reCaptchaRepeatTimes { get; set; } 36 | public int reCaptcha3RepeatTimes { get; set; } 37 | public int hCaptchaRepeatTimes { get; set; } 38 | public int funCaptchaRepeatTimes { get; set; } 39 | public int textCaptchaRepeatTimes { get; set; } 40 | public string textCaptchaSourceAttribute { get; set; } 41 | public string textCaptchaResultAttribute { get; set; } 42 | } 43 | 44 | public class Config 45 | { 46 | public static ExtensionJsonConfig GetConfig(string path) 47 | { 48 | if (!File.Exists(path)) 49 | return null; 50 | 51 | string contents = File.ReadAllText(path); 52 | 53 | return JsonConvert.DeserializeObject(contents); 54 | } 55 | 56 | public static void SetConfig(string path, ExtensionJsonConfig config) 57 | { 58 | File.WriteAllText(path, JsonConvert.SerializeObject(config, Formatting.Indented)); 59 | } 60 | } 61 | } 62 | -------------------------------------------------------------------------------- /Outlook Account Gen/Outlook Account Gen.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | net7.0 6 | Outlook_Account_Gen 7 | true 8 | enable 9 | enable 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | -------------------------------------------------------------------------------- /Outlook Account Gen/Program.cs: -------------------------------------------------------------------------------- 1 | using Newtonsoft.Json; 2 | using PuppeteerSharp; 3 | using PuppeteerSharp.Input; 4 | 5 | namespace Outlook_Account_Gen; 6 | 7 | abstract class Program 8 | { 9 | private static IPage? _page; 10 | 11 | private static string GetRandomString(int length = 10, bool usePasswordChars = false) 12 | { 13 | string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwyz0123456789"; 14 | 15 | if (usePasswordChars) 16 | chars += @"!@#$%^&*()_+<>?/.,;'{}[]\|~`"; 17 | 18 | var random = new Random(); 19 | var randomString = new string(Enumerable.Repeat(chars, length) 20 | .Select(s => s[random.Next(s.Length)]).ToArray()); 21 | return randomString; 22 | } 23 | 24 | public static async Task TypeAndClickNext(string selector, string text) 25 | { 26 | if (_page == null) 27 | return; 28 | 29 | 30 | await _page.MainFrame.WaitForSelectorAsync(selector); 31 | await _page.MainFrame.TypeAsync(selector, text); 32 | await _page.Keyboard.PressAsync(Key.Enter); 33 | } 34 | 35 | public static async Task Main(string[] args) 36 | { 37 | Console.WriteLine("Loading extension, This must be in the same directory in a folder named 'CapSolver.Browser.Extension'"); 38 | string pathToExtension = Path.GetFullPath("CapSolver.Browser.Extension"); 39 | 40 | if (!Directory.Exists(pathToExtension)) 41 | { 42 | Console.WriteLine("Extension must be downloaded and placed in the same folder, Check github for instructions"); 43 | Console.Read(); 44 | return; 45 | } 46 | 47 | string configPath = pathToExtension + "\\assets\\config.json"; 48 | 49 | // Parse config.json 50 | ExtensionJsonConfig configJson = Config.GetConfig(configPath); 51 | 52 | if (configJson == null) 53 | throw new Exception("Failed to parse config.json"); 54 | 55 | if (configJson.apiKey == "") 56 | { 57 | Console.WriteLine("Enter apikey, if you do not have one enter 'no'"); 58 | 59 | string input = Console.ReadLine() ?? "no"; 60 | 61 | configJson.apiKey = input; 62 | } 63 | 64 | Config.SetConfig(configPath, configJson); 65 | 66 | using var browserFetcher = new BrowserFetcher(); 67 | Console.WriteLine("Attempting Chromium Download"); 68 | await browserFetcher.DownloadAsync(BrowserFetcher.DefaultChromiumRevision); 69 | 70 | var browser = await Puppeteer.LaunchAsync(new LaunchOptions 71 | { 72 | Headless = false, 73 | Args = new[] 74 | { 75 | $@"--disable-extensions-except=""{pathToExtension}""", 76 | $@"--load-extension=""{pathToExtension}""" 77 | } 78 | }); 79 | Console.WriteLine("Chromium Downloaded"); 80 | 81 | _page = await browser.NewPageAsync(); 82 | await _page.GoToAsync("https://signup.live.com/signup"); 83 | 84 | string email = $"F{GetRandomString()}@outlook.com"; 85 | string password = GetRandomString(20, true); 86 | 87 | await TypeAndClickNext("#MemberName", email); 88 | await TypeAndClickNext("#PasswordInput", password); 89 | await TypeAndClickNext("#FirstName", GetRandomString()); 90 | await TypeAndClickNext("#LastName", GetRandomString()); 91 | 92 | await _page.MainFrame.WaitForSelectorAsync("#BirthMonth"); 93 | await _page.MainFrame.ClickAsync("#BirthMonth"); 94 | await _page.Keyboard.PressAsync(Key.Enter); 95 | await _page.Keyboard.PressAsync(Key.ArrowDown); 96 | 97 | Thread.Sleep(500); // Some errors here so I wrote this lol 98 | 99 | await _page.MainFrame.WaitForSelectorAsync("#BirthDay"); 100 | await _page.MainFrame.ClickAsync("#BirthDay"); 101 | await _page.Keyboard.PressAsync(Key.Enter); 102 | await _page.Keyboard.PressAsync(Key.ArrowDown); 103 | await TypeAndClickNext("#BirthYear", "2000"); 104 | 105 | _page.DefaultTimeout = int.MaxValue - 1; 106 | 107 | string okButton = "#id__0"; 108 | 109 | await _page.MainFrame.WaitForSelectorAsync(okButton); 110 | await _page.MainFrame.ClickAsync(okButton); 111 | await _page.Keyboard.PressAsync(Key.Enter); 112 | 113 | 114 | await _page.CloseAsync(); 115 | await _page.CloseAsync(); // Close twice because it opens 2 tabs for some reason 116 | await browser.CloseAsync(); 117 | 118 | Console.WriteLine("Email: " + email); 119 | Console.WriteLine("Password: " + password); 120 | 121 | File.AppendAllText("accounts.txt", $"{email}:{password}\n"); 122 | 123 | Console.ReadLine(); 124 | } 125 | } 126 | 127 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Outlook Account Generator 2 | 3 | ![GitHub repo size](https://img.shields.io/github/repo-size/Flash-1337/OutlookGenerator) 4 | ![GitHub issues](https://img.shields.io/github/issues/Flash-1337/OutlookGenerator) 5 | ![GitHub stars](https://img.shields.io/github/stars/Flash-1337/OutlookGenerator) 6 | ![GitHub forks](https://img.shields.io/github/forks/Flash-1337/OutlookGenerator) 7 | 8 | A C# .NET 7.0 Outlook account generator that leverages Puppeteer Sharp. This tool allows you to automate the creation of Outlook email accounts programmatically using the power of Puppeteer Sharp, a .NET port of the Puppeteer JavaScript library. 9 | 10 | ## Download 11 | 12 | - You can download the latest release [here](https://github.com/Flash-1337/OutlookGenerator/releases/latest) 13 | 14 | ## Features 15 | 16 | - Create Outlook email accounts programmatically. 17 | - Automate the process of filling out account registration forms. 18 | - Generate strong and secure passwords for each account. 19 | 20 | ## Prerequisites 21 | 22 | - [NET 7.0 SDK](https://dotnet.microsoft.com/download/dotnet/7.0) 23 | - [Puppeteer Sharp](https://github.com/hardkoded/puppeteer-sharp) 24 | - [CapSolver 1.7.1](https://github.com/capsolver/capsolver-browser-extension/releases/tag/v1.7.1) 25 | 26 | ## Installation 27 | 28 | 1. Clone this repository to your local machine: 29 | 30 | ```bash 31 | git clone https://github.com/Flash-1337/OutlookGenerator.git 32 | ``` 33 | 34 | 2. Open the solution file `OutlookAccountGenerator.sln` in Visual Studio. 35 | 36 | 3. Restore the NuGet packages by right-clicking on the solution in Solution Explorer and selecting **Restore NuGet Packages**. 37 | 38 | 4. Build the solution by right-clicking on the solution in Solution Explorer and selecting **Build Solution**. 39 | 40 | ## Usage 41 | 1. Download the required extension [here](https://github.com/capsolver/capsolver-browser-extension/releases/latest) 42 | 2. Extract archive into the same directory as the executable 43 | 3. Run the application and observe the automated account generation process. 44 | 4. Upon completion, the generated account details will be saved to a txt file named `accounts.txt`. 45 | 46 | ## Contributing 47 | 48 | Contributions are welcome! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request. 49 | 50 | ## Support 51 | 52 | For support or questions, please [open an issue](https://github.com/Flash-1337/OutlookGenerator/issues). 53 | 54 | ## Acknowledgements 55 | 56 | This project uses the following third-party libraries: 57 | 58 | - [Puppeteer Sharp](https://github.com/hardkoded/puppeteer-sharp) 59 | 60 | Special thanks to the contributors of Puppeteer Sharp for their amazing work. 61 | 62 | ## Disclaimer 63 | 64 | This tool is provided for educational and research purposes only. Usage of this tool for any malicious activities is strictly prohibited. The author and contributors of this repository are not responsible for any misuse or damage caused by this tool. 65 | --------------------------------------------------------------------------------