Загрузка...

GetUserAgents - Сбор/Генерация данных

Тема в разделе C# создана пользователем r3xq1 17 апр 2021. 274 просмотра

  1. r3xq1
    r3xq1 Автор темы 17 апр 2021 https://t.me/DarkSoft_Extra 119 27 июл 2018
    Способ получения UserAgent'ов браузеров через реестр:

    Создаём класс UserAgent.cs
    Код
    namespace UAgent
    {
    using System;
    using System.Diagnostics;
    using System.IO;
    using System.Linq;
    using System.Management;
    using Microsoft.Win32;

    // Разработчик: r3xq1

    public static class UserAgent
    {
    /// <summary>
    /// Метод для получения полного пути к браузеру по имени
    /// </summary>
    /// <param name="name">Имя браузера</param>
    /// <returns>Полный путь к браузеру</returns>
    private static string GetBrowserName(string name)
    {
    const string REG = @"Software\Clients\StartMenuInternet", COM = @"\shell\open\command";
    string result = string.Empty;
    RegistryKey Apps;

    // Проверяем админ права
    if (Privilegies.IsAdmin)
    {
    try
    {
    // Если права есть, сначала проходимся по Локальной машине и собираем
    using (Apps = Registry.LocalMachine.OpenSubKey(REG, true))
    {
    foreach (string subdir in Apps.GetSubKeyNames())
    {
    using RegistryKey Path_To_Browsers = Apps?.OpenSubKey(string.Concat(subdir, COM));
    string value = Path_To_Browsers?.GetValue("")?.ToString().Trim('"') ?? Path_To_Browsers?.GetValue("Path")?.ToString().Trim('"');
    result = value.Contains(name) ? value : result;
    }
    }
    }
    catch { }
    }
    try
    {
    // Если прав нету, собираем из текущего пользователя ( или если есть права, то собираем из неё тоже )
    using (Apps = Registry.CurrentUser.OpenSubKey(REG, true))
    {
    foreach (string subdir in Apps.GetSubKeyNames())
    {
    using RegistryKey Path_To_Browsers = Apps?.OpenSubKey(string.Concat(subdir, COM));
    string value = Path_To_Browsers?.GetValue("")?.ToString().Trim('"') ?? Path_To_Browsers?.GetValue("")?.ToString().Trim('"');
    result = value.Contains(name) ? value : result;
    }
    }
    }
    catch { }
    return result;
    }

    /// <summary>
    /// Метод для получения версии Widows OS
    /// </summary>
    private static string OsVersion
    {
    get
    {
    string result;
    try
    {
    result = $"{Environment.OSVersion.Version.Major}.{Environment.OSVersion.Version.Minor}";
    }
    catch
    {
    result = string.Empty;
    using var OsSystem = new ManagementObjectSearcher(@"root\CIMV2", "SELECT * FROM Win32_OperatingSystem");
    using ManagementObjectCollection ColOs = OsSystem?.Get();
    foreach (ManagementBaseObject osElement in ColOs)
    {
    result = osElement["Version"]?.ToString();
    }
    string[] array = result.Split('.');
    result = $"{array[0]}.{ array[1]}";
    }

    return result;
    }
    }

    /// <summary>
    /// Метод для получения текущей платформы Windows
    /// </summary>
    private static string WinPlatform
    {
    get
    {
    string result = string.Empty;
    try
    {
    switch (Environment.OSVersion.Platform)
    {
    case PlatformID.Win32Windows: result = "Windows NT"; break;
    case PlatformID.Win32NT: result = "Windows NT"; break;
    case PlatformID.Win32S: result = "Windows 3.1"; break;
    case PlatformID.WinCE: result = "Windows CE"; break;
    }
    }
    catch { }
    return result;
    }
    }

    private static string ArchitectureAgent => Environment.Is64BitOperatingSystem ? "Win64; x64" : "Win32; x86";
    private static string OSBit => Environment.Is64BitOperatingSystem ? "x64" : "x86";

    public static void GetData(string savepath)
    {
    string[] browsers = new string[] { "Chrome", "Firefox", "Opera", "Edge", "Internet Explorer", "Waterfox", "Dragon", "Palemoon", "Seamonkey" };
    try
    {
    using var Agent = new StreamWriter(savepath);

    foreach (string names in browsers)
    {
    string PathToBrowser = GetBrowserName(names), FileVersion = FileVersionInfo.GetVersionInfo(PathToBrowser).FileVersion;
    string[] array = FileVersion.Split('.');
    string FileVersionShort = $"{array[0]}.{array[1]}", ProdVersion = FileVersionInfo.GetVersionInfo(PathToBrowser).ProductVersion;

    if (PathToBrowser.Contains("Chrome"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; {ArchitectureAgent}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{FileVersion} Safari/537.36");
    }
    if (PathToBrowser.Contains("Opera"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; {ArchitectureAgent}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{FileVersion} Safari/537.36 OPR/{ProdVersion}");
    }
    if (PathToBrowser.Contains("Edge"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; {ArchitectureAgent}) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/{FileVersion} Safari/537.36 Edg/{ProdVersion}");
    }
    if (PathToBrowser.Contains("Firefox"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; rv:{FileVersion}) Gecko/20100101 Firefox/{FileVersion}");
    }
    if (PathToBrowser.Contains("Internet Explorer"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; WOW64; Trident/7.0; rv:{FileVersionShort}) like Gecko");
    }
    if (PathToBrowser.Contains("Waterfox"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; rv:{FileVersionShort}) Gecko/20100101 Firefox/{FileVersionShort} Waterfox/{ProdVersion}");
    }
    if (PathToBrowser.Contains("Dragon"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; rv:{FileVersionShort}) Gecko/20100101 Firefox/{FileVersionShort} IceDragon/{ProdVersion}");
    }
    if (PathToBrowser.Contains("Palemoon"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; rv:{FileVersionShort}) Gecko/20100101 Firefox/{FileVersionShort} PaleMoon/{ProdVersion}");
    }
    if (PathToBrowser.Contains("Seamonkey"))
    {
    Agent.WriteLine($"Mozilla/5.0 ({WinPlatform} {OsVersion}; rv:{FileVersionShort}) Gecko/20100101 Firefox/{FileVersionShort} SeaMonkey/{ProdVersion}");
    }
    // Запись всех браузеров и их версии
    // Agent.WriteLine($"Browser: {PathToBrowser} \r\nFileVersion: {FileVersion} \r\nProductVersion: {ProdVersion}\r\n");
    }
    }
    catch { }
    }
    }
    }
    Создаём класс Privilegies.cs для проверки Админ прав
    Код
    namespace UAgent
    {
    using System.Security.Principal;

    public static class Privilegies
    {
    public static bool IsAdmin
    {
    get
    {
    try
    {
    using var identity = WindowsIdentity.GetCurrent();
    if (null != identity)
    {
    var principal = new WindowsPrincipal(identity);
    return principal.IsInRole(WindowsBuiltInRole.Administrator);
    }
    }
    catch { }
    return false;
    }
    }
    }
    }
    Класс GlobalPaths.cs - где хранятся все пути
    Код
    namespace UAgent
    {
    using System;
    using System.IO;
    using System.Reflection;

    public static class GlobalPaths
    {
    public static string CurrDir => Environment.CurrentDirectory;
    public static string AgentsLog => Path.Combine(CurrDir, "Agents.txt");
    public static string AssemblyPath => Assembly.GetExecutingAssembly().Location;
    public static string StartupPath => Path.GetDirectoryName(AssemblyPath);
    public static string GetFileName => Path.GetFileName(AppDomain.CurrentDomain.FriendlyName);
    public static string AppData => Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
    public static string SelfHelper => Path.Combine(AppData, "Self.bat");
    }
    }
    Использование:
    Код
    namespace UAgent
    {
    using System;

    internal static class Program
    {
    [STAThread]
    public static void Main()
    {
    Console.Title = "UserAgent Grabber by r3xq1";
    Console.WriteLine("Инициализация...");
    UserAgent.GetData(GlobalPaths.AgentsLog);
    Console.WriteLine("Закончили сбор Юзерагентов! Посмотрите рядом файл \".txt\"");
    Console.ReadLine();
    }
    }
    }
    Есть некоторые недоработки в этом примере.
    Так же можно попробовать сгенерировать через какой-нибудь онлайн сервис ( при открытом браузере )
     
  2. CoderVir
    Я чекал исходники редлайна(мне предоставили последний билдец), там как то всё по проще.
    --- Сообщение объединено с предыдущим 1 июл 2021
    C#
    using System;
    using System.Diagnostics;
    using System.Net;
    using System.Threading;

    namespace RedLine.Client.Logic.Others
    {
    // Token: 0x02000060 RID: 96
    public static class UserAgentDetector
    {
    // Token: 0x060001FE RID: 510 RVA: 0x0000617C File Offset: 0x0000437C
    public static string GetUserAgent()
    {
    try
    {
    UserAgentDetector.StartServer(UserAgentDetector.port);
    Process.Start(string.Format("", UserAgentDetector.port));
    long ticks = DateTime.Now.Ticks;
    while (UserAgentDetector.useragent == null && new TimeSpan(DateTime.Now.Ticks - ticks).TotalSeconds < 60.0)
    {
    Thread.Sleep(100);
    }
    }
    catch
    {
    }
    return UserAgentDetector.useragent;
    }

    // Token: 0x060001FF RID: 511 RVA: 0x0000620C File Offset: 0x0000440C
    private static void StartServer(int port)
    {
    string[] array = new string[]
    {
    string.Format("", port)
    };
    HttpListener httpListener = new HttpListener();
    foreach (string uriPrefix in array)
    {
    httpListener.Prefixes.Add(uriPrefix);
    }
    httpListener.Start();
    new Thread(new ParameterizedThreadStart(UserAgentDetector.Listen)).Start(httpListener);
    }

    // Token: 0x06000200 RID: 512 RVA: 0x00006274 File Offset: 0x00004474
    private static void Listen(object listenerObj)
    {
    HttpListener httpListener = listenerObj as HttpListener;
    HttpListenerContext context = httpListener.GetContext();
    UserAgentDetector.useragent = context.Request.Headers["User-Agent"];
    HttpListenerResponse response = context.Response;
    response.Redirect("");
    response.Close();
    httpListener.Stop();
    }

    // Token: 0x0400015C RID: 348
    private static int port = new Random().Next(13000, 14000);

    // Token: 0x0400015D RID: 349
    private static string useragent;
    }
    }
    --- Сообщение объединено с предыдущим 1 июл 2021
    бля. ебучий случай. ща
    --- Сообщение объединено с предыдущим 1 июл 2021
    https://pastebin.com/vtmxEan0
     
  3. r3xq1
    r3xq1 Автор темы 1 июл 2021 https://t.me/DarkSoft_Extra 119 27 июл 2018
    Этот код не отрабатывает. Я смотрел уже его реализацию.
     
    1. CoderVir
      r3xq1, вот тоже чекал, думал, что у меня одного не воркает. Думаю щас, а чё они не убрали это вообще?
Загрузка...
Top