Ваш ключ: необходима авторизация | MyProxy - бесплатный обменник валидных прокси между пользователями форума.

Как сделать брут без пропусков? Синхронизация потоков C#

Тема в разделе C#, создана пользователем ERROR404, 17 июл 2016.

Войдите для ответа
  1. ERROR404 Администратор

    ERROR404
    Статус:
    Вне сети
    В большинстве брутов есть пропуски, они возникают, когда в потоках без параметров нет синхронизации. Давайте же исправим этот недочет.

    В самом начале вашего основного класса создайте объект sync:
    Код:
    public Object sync = new Object();
    [​IMG]

    В самом потоке описываем код, отвечающий за выборку email:pass (login:pass) из основной базы:
    Сначала создадим приватную (доступная только в текущем потоке) переменную line, она будет содержать строку из базы:

    Код:
    string line;

    Далее выбираем строку из базы:
    Код:
    lock (sync)
                    {
                        line = ArrayLines[i];
                    }
    *где i - текущий индекс массива (т.е. тип "пройдено строк"), ArrayLines - ваш массив со строками

    В моём проекте код выглядит следующим образом:
    Код:
    public void ProxyThread ()
            {
    string line;
                while (i < CountLines)
                {               
                    lock (sync)
                    {
                        line = ArrayLines[i];
                        i++;
                    }
                   
                    try
                    {
                    // code
                    }
                    catch {
                       // code
                    }
                }
          }
     
    17 июл 2016 #1
    ElementArts., k4sperskiy, MsHesi и 2 другим нравится это.
  2. Kennyx We are legends, never forget this.

    Kennyx
    Команда форума
    Статус:
    Вне сети
    Pishi vidosiki na youtube. stanesh populianim.
     
    17 июл 2016 #2
    ERROR404 нравится это.
  3. vito2012 Местный

    vito2012
    Статус:
    Вне сети
    Сообщения:
    127
    Симпатии:
    10
    Регистрация:
    17.06.16
    Спасибо, очень годно), как раз подобным занимаюсь, очень интересно, правда сложно не много, но все же)
     
    17 июл 2016 #3
  4. iPro Местный

    iPro
    Статус:
    Вне сети
    Сообщения:
    26
    Симпатии:
    25
    Регистрация:
    15.06.16
    Увеличивать значение i нужно тоже в lock'е, ибо можно просто пропустить какой либо из элементов в массиве, если будет одновременно получен туда доступ из разных потоков
     
    21 июл 2016 #4
    Amfi и ERROR404 нравится это.
  5. ERROR404 Администратор

    ERROR404
    Статус:
    Вне сети
    @iPro, а как тебе идея насчёт перебрута? Ибо когда в кэтче уменьшаешь кол-во прочеканных, аккаунт тупо не чекается дальше из-за большого количества потоков?

    Типо такая:
    Пытаемся законнектится, если коннекта нет, то меняем проксю, увеличиваем переменную "всего прочекано", вводим переменную для визуального отображения в форме, мы ее не увеличиваем, а аккаунт, который пытались проверить суем в конец массива со строками, типо Array.Resize + baza[total_checked] = line;
    Теперь все аккаунты, которые чекались через бэд прокси, будут проверяться в конце, могу код набросать
     
    21 июл 2016 #5
  6. iPro Местный

    iPro
    Статус:
    Вне сети
    Сообщения:
    26
    Симпатии:
    25
    Регистрация:
    15.06.16
    А тут ничего не надо выдумывать, нужно вместо массивов и List'ов использовать очереди - Queue, в случае хреновой прокси или чего либо еще, просто добавлять аккаунт обратно. Это идеальный вариант, и рабочий самое главное. Проблем с недобрутом не наблюдал
     
    22 июл 2016 #6
    ERROR404 нравится это.
  7. Yocki Новорег

    Yocki
    Статус:
    Вне сети
    Сообщения:
    3
    Симпатии:
    0
    Регистрация:
    01.07.16
    Вместо добавления аккаунта назад в список правильнее будет рекурсить
     
    22 июл 2016 #7
  8. iPro Местный

    iPro
    Статус:
    Вне сети
    Сообщения:
    26
    Симпатии:
    25
    Регистрация:
    15.06.16
    Рекурсию делать нельзя, потому что на каждый новый объект запроса будет заниматься новая память, и так до тех пор пока из рекурсии не выйдешь, из-за хреновых проксих или т.п. из нее можно никогда не выйти
     
    22 июл 2016 #8
  9. Yocki Новорег

    Yocki
    Статус:
    Вне сети
    Сообщения:
    3
    Симпатии:
    0
    Регистрация:
    01.07.16
    Ну тогда использовать конструкции while(true) при обработке каждого запроса. При добавлении элемента назад в список можно столкнуться с несколькими критовыми траблами
     
    22 июл 2016 #9
  10. ERROR404 Администратор

    ERROR404
    Статус:
    Вне сети
    @iPro, кажется, допер.
    Сначала создаем очередь (Queue myQ = new Queue(); - при старте потока)
    Потом в потоках добавляем myQ.Enqueue(line)
    Типо, если плохая прокся, то мы ее меняем, если это бэд или гуд (хорошая прокся), то делаем myQ.Dequeue(line)

    Отличная идея, если честно, не знал про это
     
    22 июл 2016 #10
  11. The228 Новорег

    The228
    Статус:
    Вне сети
    Сообщения:
    9
    Симпатии:
    3
    Регистрация:
    26.08.16
    chudowishe ne pishi na translite plssssss :C
    Eto ne modnoo !/
     
    26 авг 2016 #11
  12. ERROR404 Администратор

    ERROR404
    Статус:
    Вне сети
    @The228, у него нет русской клавиатуры
     
    26 авг 2016 #12
  13. The228 Новорег

    The228
    Статус:
    Вне сети
    Сообщения:
    9
    Симпатии:
    3
    Регистрация:
    26.08.16
    @ERROR404,Тогда сори, отмодерируйте мою тему
     
    26 авг 2016 #13
  14. ERROR404 Администратор

    ERROR404
    Статус:
    Вне сети
    @The228,как только, так сразу
     
    26 авг 2016 #14
    Kennyx нравится это.
Загрузка...
Похожие темы
  1. ERROR404
    Ответов:
    0
    Просмотров:
    109
  2. ERROR404
    Ответов:
    1
    Просмотров:
    181
  3. ERROR404
    Ответов:
    2
    Просмотров:
    132
  4. ERROR404
    Ответов:
    1
    Просмотров:
    101
Top