Let Me In (Windows / Linux) - Генератор и проверка стратегий

Консольное приложение для генерации и многопоточной проверки стратегий (ByeDPI).
Windows / Linux

Генератор стратегий:
--generate-strategies <filename>
    Генерирует случайные стратегии в соответствии с настройками в config.json.
    Сохраняет файл с стратегиями в папку strategies.
    Этот аргумент не может использоваться с другими аргументами.
    Пример: 
        --generate-strategies generated.txt

Проверка стратегий:

Быстрый старт:
    --target https://ntc.party --http-method get --http-version 1.1 --tls-version 1.3 --connection-timeout 2 --timeout 4 --threads 10 --strategies-file test.txt
    --target test.txt --http-method get --http-version 1.1 --tls-version 1.3 --connection-timeout 2 --timeout 4 --threads 10 --strategies-file test.txt

--target <string or filename>
    Обязательный.
    Поддерживает: domain, IPv4, IPv4:port, [IPv6], [IPv6]:port.
    Указывать можно одну цель, начинающуюся с http:// или https://.
    Указывать можно один файл с целями, которые начинаются с http:// и/или https://.
    Файл должен находиться в папке targets.
    Примеры:
        --target https://youtube.com
        --target https://[2620:0:862:ed1a::1]
        --target links.txt

--http-method <string>
    Обязательный.
    Поддерживает: get, post, head, options.
    Можно комбинировать через +.
    Примеры:
        --http-method get
        --http-method get+post+head

--http-version <string>
    Обязательный.
    Поддерживает: 1.1, 2, 3.
    Можно комбинировать через +.
    Примеры:
        --http-version 1.1
        --http-version 1.1+2

--tls-version <string>
    Обязательный.
    Поддерживает: 1.2, 1.3, auto.
    Можно комбинировать через +.
    auto — это браузерное поведение, когда поддерживаются обе версии.
    Примеры:
        --http-version 1.2
        --http-version 1.3+auto

--connection-timeout <integer>
    Обязательный.
    Время подключения в секундах.
    Примеры:
        --connection-timeout 2

--timeout <integer>
    Обязательный.
    Общее время (подключение + отправка + прием) в секундах.
    Должно быть больше, чем время подключения.
    Примеры:
        --timeout 4

--threads <integer>
    Обязательный.
    Поддерживает: от 1 до 36 (включительно).
    Количество потоков.
    Примеры:
        --threads 10

--skip-certificate-domain-check
    Не обязательный.
    Отключает проверку соответствия запрашиваемого сайта и указанного в сертификате.
    Может использоваться с другими --skip-* флагами, кроме --skip-certificate-check.

--skip-self-signed-certificate
    Не обязательный.
    Отключает проверку на самоподписанный сертификат.
    Может использоваться с другими --skip-* флагами, кроме --skip-certificate-check.

--skip-expired-certificate
    Не обязательный.
    Отключает проверку на просроченный сертификат.
    Может использоваться с другими --skip-* флагами, кроме --skip-certificate-check.

--skip-certificate-check
    Не обязательный.
    Отключает проверку сертификата.
    Не может использоваться с другими --skip-* флагами.

--strategies-file <filename>
    Обязательный.
    Указывать можно один файл со стратегиями.
    Файл должен находиться в папке strategies.
    Примеры:
        --strategies-file generated.txt

Разное:
Проверка запускает потоки (включая ciadpi), которые работают параллельно; проверка целей для каждого потока происходит последовательно.
Результаты проверки можно посмотреть в папке results.
Прерывать выполнение строго по нажатию на CTRL-C, чтобы программа корректно завершила работу, включая все запущенные копии ciadpi.
Не обязательно ждать 100%, так как есть разные причины, почему 100% может не быть достигнуто, например: веб-сервер не поддерживает TLS 1.3.
Лучше смотреть results*.txt, там детально все будет написано.
Если сервер отправляет Content-Length, будет попытка прочитать все тело (анти-16кб).
Учтите, что работает по принципу LOIC/HOIC, то есть вы осуществляете DDoS-атаку на сайт. Веб-серверы могут блокировать такие действия.
Для нормальной проверки, возможно, на роутере Anti DDoS нужно будет отключить.
Если выйдет новая версия ByeDPI, скачиваем под свою архитектуру и вставляем в папку byedpi с названием ciadpi_copy (ciadpi_copy.exe для Windows).
Не следует редиректам, но фиксирует. Если проверяете, например, https://yt.be, то увидите в результатах Redirect to: https://www.youtube.com/.
Значит, в следующий раз проверяйте и https://yt.be, и https://www.youtube.com/.
На Linux: нужен pkill, права на запуск для файлов let_me_in и byedpi/ciadpi_copy. Также папкам results и strategies нужны права на запись, а папке targets и файлу config.json — права на чтение и т.д.
Через config.json включаем или отключаем специфичные для той или иной операционной системы аргументы. --drop-sack, --md5sig, --tfo работают только на Linux.
Screenshots





Файлы

let_me_in_linux_aarch64.zip (3,0 МБ)
let_me_in_linux_armv6.zip (3,1 МБ)
let_me_in_linux_armv7l.zip (3,1 МБ)
let_me_in_linux_i686.zip (3,2 МБ)
let_me_in_linux_mips.zip (3,0 МБ)
let_me_in_linux_mipsel.zip (3,0 МБ)
let_me_in_linux_powerpc.zip (3,0 МБ)
let_me_in_linux_x86_64.zip (3,3 МБ)
let_me_in_windows_i686.zip (3,2 МБ)
let_me_in_windows_x86_64.zip (3,3 МБ)

Не критичное.

  • При прерывании через CTRL-C активные потоки не запишут в results*.txt последний блок ссылок (с не полным списком ссылок… так как идет проверка) для стратегии, на котором случилось прерывание.
Файлы

let_me_in_linux_aarch64.zip (3,0 МБ)
let_me_in_linux_armv6.zip (3,1 МБ)
let_me_in_linux_armv7l.zip (3,1 МБ)
let_me_in_linux_i686.zip (3,2 МБ)
let_me_in_linux_mips.zip (3,0 МБ)
let_me_in_linux_mipsel.zip (3,0 МБ)
let_me_in_linux_powerpc.zip (3,0 МБ)
let_me_in_linux_x86_64.zip (3,3 МБ)
let_me_in_windows_i686.zip (3,2 МБ)
let_me_in_windows_x86_64.zip (3,3 МБ)

Было бы круто если разместите этот проект на гитхабе или другом репозитории софта, в первую очередь для своего же удобства (версионирование, откаты коммитов, получение оценки сообществом в виде звезд и участие желающих в проекте)
Хотелось бы видеть такую тендецию и у других разработчиков, выкладывающих полезное ПО на данном форуме, мне кажется это хорошая практика.
Спасибо вам за ваш вклад.