• XSS.stack #1 – первый литературный журнал от юзеров форума

C# Antipublic (AP) byGuron

Guron_18

floppy-диск
Пользователь
Регистрация
13.12.2018
Сообщения
1 420
Решения
2
Реакции
2 325
Доброго времени суток. Сегодня мы напишем локальный антипаблик почт\url да чего угодно.
Работать мы будем с mysql добавлять\проверять есть ли почта в АП.

vXM65Ae.png


Для начала создадим в mysql базу и таблицы.
https://pastebin.com/uzmk4THU (на пастебине ибо на форуме нельзя создать тему с таким кодом)

Дальше по коду все просто
C#:
using System;
using System.IO;
using System.Text;
using System.Windows.Forms;
using MySql.Data.MySqlClient; //библа для работы с mysql сервером

namespace AntiPublic
{
    internal class Program
    {
        private static string FNAME = string.Empty;

        [STAThread]
        private static void Main()
        {
            Console.Title = "AntiPublic (mp) byGuron";
            LoadBase(); //загрузка базы
            Sqlconn(); //функция проверки
        }

        private static void LoadBase()
        {
            var ofd = new OpenFileDialog {Filter = "All text|*.txt;*.csv;*.dic;*.log|All files|*.*" };

            if (ofd.ShowDialog() != DialogResult.OK) Environment.Exit(0); //если база не загружена пишем это и выходим с проги.
            FNAME = ofd.FileName;
        }

        private static void Sqlconn()
        {
            const string config = "server=localhost;user=root;password=123456;persistsecurityinfo=True;"; //данные для подключения к БД

            using (var con = new MySqlConnection(config))
            {
                con.Open(); // Открываем плдключение 1 раз

                var startDate = DateTime.Now;
                Console.WriteLine("Arbaiten...");

                using (var sw1 = new StreamWriter("Gur_ap_private.txt", true, Encoding.UTF8))
                using (var sw2 = new StreamWriter("Gur_ap_public.txt", true, Encoding.UTF8))
                using (var sw3 = new StreamWriter("Gur_ap_error.txt", true, Encoding.UTF8))
                //{
                    foreach (var str in File.ReadLines(FNAME)) //перечисляем строки
                    {
                        if (string.IsNullOrEmpty(str)) continue; //если стога пуста то проверяем следующую

                        var ch = str[0].ToString(); //це що бы разбивать бД на несколько таблиц. (потому как искать в 1 ляме проще чем в допустим 30лямах )
                        switch (ch)
                        {
                            case "1":
                            case "2":
                            case "3":
                            case "4":
                            case "5":
                            case "6":
                            case "7":
                            case "8":
                            case "9":
                            case "0":
                            case ".":
                            case "_":
                            case "-":
                                ch = "UnderDashDot09";
                                break;
                        }

                        var acc = str.Split(':', ';'); // оиделяем email от пароля
                        if (acc.Length != 2) // если это не email:pass то пшем в error
                        {
                            sw3.WriteLine(str);
                            continue;
                        }

                        var sql = $"INSERT INTO AntiMail.{ch} (mail, pass) VALUES ('{acc[0].ToLower()}', '{acc[1]}')"; //делаем запрос в БД
                        var comm = new MySqlCommand(sql, con);

                        try
                        {
                            comm.ExecuteNonQuery();
                            sw1.WriteLine(str);
                        }
                        catch (Exception e)
                        {
                            if (e.Message.Contains("Duplicate entry"))
                                sw2.WriteLine(str); //если строка присутствует то пишем в public
                            else
                                sw3.WriteLine(str); //иначе в private
                        }
                    }
                }

                Console.WriteLine(DateTime.Now - startDate);
                con.Close(); //по окончпании чека закрываем подключение
                Console.WriteLine("Готово!");
                Console.Read();
            }
        }
    }
}
Результат работы: 100к прочекало за 15сек.
gGMEhJh.png

Ну и конечно же сам готовый АП. (запускаем сервер через start.bat либо устанавливаем свой denver, xampp)
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх