Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Классический пинбол, как в древнем игровом автомате или в компактной игрушке: есть пружины, шарики и препятствия. В нашем варианте можно не только зарабатывать очки: чтобы пройти уровень, придется выполнить дополнительную миссию.

Пинбол Пикабу

Аркады, На ловкость, Казуальные

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Linux + Telegram (ссылка)

С этим тегом используют

Windows IT Программирование Ubuntu IT юмор Компьютер Программист Вертикальное видео Юмор Картинка с текстом Короткие видео Девушки Эротика Кот Все
66 постов сначала свежее
1
egor.datskiy
egor.datskiy
1 год назад

Бэнкси назвал своё имя — обнародовано ранее утерянное интервью с художником⁠⁠

На вопрос журналиста, правда ли, что его зовут Роберт Бэнкс, художник отвечает: «Робби». Теперь мы можем услышать голос одной из самых дорогих арт-персон современности.

Стало на одну тайну меньше.

Кто не знает, Бэнкси — известный художник, известный своими перформансами и остросоциальными работами с черным юмором. В октябре 2018 года на аукционе Sothebyʼs его картина «Девочка с воздушным шаром» самоуничтожилась сразу после того, как ее купили за £1 млн.


Как выяснилось потом, в раму картины был встроен высокоточный шредер (смотрите видео от 2018 года). Покупателю не пришлось за нее платить и потом он смог перепродать работу Бэнкси за £18,5 млн на другом аукционе.

Каждый день в своем блоге Telegram я публикую интересные новости об интернет-культуре, разработках, технологиях, полезных сервисах и нейросетях!

► @luckytag

Показать полностью 1
[моё] ChatGPT Чат-бот Технологии Инновации Telegram (ссылка) Google Тренд Интернет Изобретения Взлом Информационная безопасность Гаджеты Сайт Linux Windows Apple Видео
2
PENTEST.DNA
PENTEST.DNA
1 год назад

Написание DNS-клиентов⁠⁠

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Прежде чем начать знакомство с более сложными программами, рассмотрим ряд опций, доступных для клиентских операций. Встроенный в Go пакет net предлагает обширную функциональность и поддерживает большинство, если не все типы записей. Преимущество этого пакета — в простоте его API. Например, LookupAddr(addr string) возвращает список имен хостов для заданного IP-адреса. Недостаток же его заключается в невозможности указывать целевой сервер. Вместо этого пакет использует настроенный в операционной системе механизм распознавания. К недостаткам можно отнести также отсутствие возможности выполнения углубленного анализа результатов.

Для обхода этих недочетов мы задействуем отличный сторонний пакет Go DNS, написанный Миком Гибеном (Miek Gieben). Предпочесть этот DNS-пакет всем прочим стоит из-за его высокой модульности и грамотно написанного и протестированного кода. Вот команда для его установки:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

$ go get github.com/miekg/dns

Установив пакет, вы будете готовы к проработке последующих примеров кода. Начнем с выполнения поиска А-записей для получения IP-адресов из имен хостов.


Извлечение А-записей:

Сперва познакомимся с поиском для полностью уточненного имени домена (fully qualified domain name, FQDN), которое указывает точное расположение хоста в иерархии DNS. Затем попробуем интерпретировать это FQDN в IP-адрес с помощью DNS-записи А. Эта запись связывает имя домена с IP-адресом. (Все листинги кода находятся в корневом каталоге /exist репозитория GitHub https://github.com/blackhat-go/bhg/.)

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Код на языке Golang

Сначала создается msg , после чего идет вызов fqdn(string) для преобразования этого домена в FQDN, которым можно обменяться с DNS-сервером . Далее нужно изменить внутреннее состояние Msg на вызов SetQuestion(string, uint16)

с помощью значения TypeA, указывающего, что нужно искать А-запись. (В пакете она определена как const. Другие поддерживаемые значения можно найти в документации.) В завершение мы помещаем вызов Exchange(*Msg, string) , чтобы отправить сообщение на предоставленный адрес сервера, в данном случае являющегося DNS-сервером, обслуживаемым Google.

Нетрудно заметить, что данный код не особо полезен. Несмотря на то что мы отправляем запрос к DNS-серверу и запрашиваем А-запись, ответ мы не обрабатываем, то есть с результатом ничего не делаем. Но прежде чем реализовать нужную функциональность в Go, давайте рассмотрим, как выглядит ответ DNS, чтобы лучше понять этот протокол и различные типы запросов.

Перед выполнением программы которая написана выше запустите анализатор пакетов, например Wireshark или tcpdump, чтобы просмотреть трафик. Вот пример возможного использования tcpdump на хосте Linux:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

$ sudo tcpdump -i eth0 -n udp port 53

В отдельном окне терминала скомпилируйте и выполните программу:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

$ go run main.go

После выполнения кода в выходных данных перехвата пакетов должны отобразиться подключение к 8.8.8.8 через UDP 53, а также детали DNS-протокола:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Две из получаемых при перехвате пакетов строчек нуждаются в дополнительном пояснении. Сначала запрос отправляется с 192.168.7.51 к 8.8.8.8 с помощью UDP 53, при этом происходит запрос А-записи. В ответе от DNS-сервера Google 8.8.8.8 содержится интерпретированный из имени домена IP-адрес 104.131.56.170.

С помощью анализатора пакетов можно преобразовать имя домена stacktitan.com в IP-адрес. Теперь посмотрим, как извлечь эту информацию, используя Go.


Отработка ответов от структуры Msg:


В качестве значения Exchange(*Msg, string) возвращает (*Msg, error). Возврат типа error имеет смысл и является стандартным для идиом Go, но почему в ответе приходит также изначально отправленная *Msg? Чтобы это понять, нужно взглянуть на определение этой struct в исходном коде:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Код на языке Golang

Как видите, Msg struct содержит как вопросы (question), так и ответы (answer). Это позволяет объединять все DNS-вопросы и ответы на них в единую унифицированную структуру. Тип Msg располагает различными методами, упрощающими работу с данными. Например, срез Question изменяется с помощью метода setQuestion(). Это срез можно изменять напрямую, используя append(), и получать тот же результат. Срез Answer содержит ответ на запросы и имеет тип RR. Ниже будет показано, как эти ответы обрабатывать.

Обработка DNS-ответов:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Пример начинается с сохранения возвращенных от Exchange значений и их проверки на наличие ошибок. Если ошибка обнаружена, вызывается panic() для остановки программы. Функция panic() позволяет быстро просмотреть трассировку стека и определить место возникновения ошибки. Далее проверяется длина среза Answer. Если она меньше 1, это означает, что записей нет, и происходит возврат — бывают случаи, когда имя домена не может быть интерпретировано.

Тип RR является интерфейсом, имеющим всего два определенных метода, ни один из которых не дает доступа к IP-адресу, хранящемуся в ответе. Для доступа к этим адресам нужно применить утверждение типа, чтобы создать экземпляр данных в качестве нужного типа.

Сначала выполняем перебор ответов. Далее применяем в ответе утверждение типа, чтобы гарантировать работу с типом *dns.A. При выполнении этого действия можно извлечь два значения: данные в виде утвержденного типа и bool, отражающее успешность утверждения. После проверки успешности утверждения происходит вывод IP, сохраненного в a.A. Несмотря на тип net.IP, он реализует метод String(), поэтому его можно легко вывести на экран.

Поработайте с этим кодом, изменяя DNS-запрос и обмен (exchange) для поиска дополнительных записей. Утверждение типа может оказаться для вас незнакомым, но по своему принципу оно аналогично приведению типов в других языках.


Перечисление поддоменов:


Теперь, научившись использовать Go в качестве DNS-клиента, вы можете создавать полезные инструменты. В этом разделе мы создадим утилиту подбора поддоменов. Подбор поддоменов цели и других DNS-записей — основополагающий шаг в процессе разведки, так как чем больше поддоменов вам известно, тем обширнее поле атаки. Наша утилита будет угадывать их на основе передаваемого списка слов (файла словаря).

Используя DNS, можно отправлять запросы настолько быстро, насколько быстро система сможет обрабатывать пакеты данных. Узким местом здесь станут не язык или среда выполнения, а сервер назначения. При этом, как и в предыдущих главах, будет важно управление многопоточностью программы.

Сначала нужно создать в GOPATH каталог под названием subdomain_guesser, а затем файл main.go. После этого в начале создания нового инструмента необходимо решить, какие аргументы эта программа будет получать. В данном случае это будет несколько аргументов, включая целевой домен, имя файла, содержащего поддомены для подбора, используемый DNS-сервер, а также количество запускаемых воркеров. В Go для парсинга опций командной строки есть полезный пакет flag, который мы будем применять для обработки аргументов командной строки. Несмотря на то что мы используем этот пакет не во всех примерах кода, в данном случае он служит для демонстрации более надежного и изящного парсинга аргументов. Код этого процесса будет приведен ниже.

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Создание программы подбора поддоменов на языке Golang

В начале строка кода, объявляющая переменную flDomain, получает аргумент String и объявляет пустое строковое значение для того, что будет парситься как опция domain. Следующая связанная строка — это объявление переменной flWorkerCount. Здесь в качестве опции командной строки c нужно предоставить значение Integer. В данном случае мы устанавливаем 100 воркеров. Но это значение можно счесть консервативным, так что в процессе тестирования смело экспериментируйте с увеличением их числа. В завершение вызов flag.Parse() заполняет переменные, задействуя предоставленный пользователем ввод.


ПРИМЕЧАНИЕ:


Вы могли обратить внимание на то, что этот пример идет вразрез с правилами Unix в том, что определяет необязательные аргументы, которые на деле являются обязательными. Можете свободно использовать здесь os.Args. Просто нам быстрее и удобнее поручить всю работу пакету flag.

При сборке данной программы должна возникнуть ошибка, указывающая на неиспользованные переменные. Добавьте приведенный далее код сразу после вызова flag.Parse(). Это дополнение выводит в stdout переменные наряду с кодом,
гарантируя передачу пользователем -domain и -wordlist:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Чтобы ваш инструмент сообщал, какие имена оказались интерпретируемыми, указывая при этом соответствующие им IP-адреса, нужно создать для хранения этой информации тип struct. Определите его над функцией main():

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Для этого инструмента вы будете запрашивать два основных типа записей — А и CNAME. Каждый запрос будет выполняться в отдельной функции. Стоит создавать эти функции максимально небольшими и поручать каждой выполнение только одной задачи. Такой стиль разработки позволит в дальнейшем писать менее объемные тесты.


Запрос записей A и CNAME:


Для выполнения запросов мы создадим две функции: одну для А-записей, вторую для записей CNAME. Они обе будут получать FQDN в качестве первого аргумента и адрес DNS-сервера в качестве второго. Каждая из них должна возвращать срез строк и ошибку. Добавьте эти функции в код, который начали определять, расположив вне области main():

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Этот код должен показаться вам знакомым, так как он практически идентичен коду, который мы писали в самом начале главы. Первая функция, lookupA, возвращает список IP-адресов, а lookupCNAME возвращает список имен хостов.

Записи CNAME (канонические имена) сопоставляют одно FQDN с другим, которое служит псевдонимом для первого. Предположим, что владелец организации example.com хочет разместить WordPress-сайт с помощью сервиса хостинга WordPress. У этого сервиса могут быть сотни IP-адресов для балансировки всех пользовательских сайтов, в связи с чем предоставить IP для отдельного сайта просто невозможно. Вместо этого данный хостинг может предоставить каноническое имя (CNAME), на которое и будет ссылаться example.com. В итоге адрес www.example.com получит CNAME, указывающее на somewhere.hostingcompany.org, которое, в свою очередь, будет иметь А-запись, указывающую на IP-адрес. Это позволит владельцу example.com разместить свой сайт на сервере, для которого у него нет IP-данных.

Зачастую это означает, что вам нужно проследить целый хвост из канонических имен, чтобы в итоге добраться до действительной А-записи. Мы говорим хвост, потому что из подобных имен может выстраиваться бесконечная цепочка. Добавьте приведенный далее код функции в область за пределами функции main(), чтобы понаблюдать, как использовать череду CNAMES для нахождения А-записи:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Сначала определяется срез для хранения результатов. Далее создается копия FQDN, переданного в качестве первого аргумента. В итоге вы не только не теряете исходный угаданный FQDN, но и можете задействовать его в первой попытке запроса. Начав бесконечный цикл, мы пробуем получить CNAME для этого FQDN. В случае отсутствия ошибок и возвращения не менее одного CNAME устанавливаем cfqdn равным этому возвращенному CNAME, используя continue для возврата к началу цикла. Данный процесс позволяет проследить череду CNAME до возникновения сбоя. Последний будет означать, что конец цепочки достигнут и можно искать А-записи. Но если возникнет ошибка, означающая, что при поиске записи возникли проблемы, то выход из цикла произойдет раньше. В случае обнаружения действительных А-записей каждый возвращенный IP-адрес добавляется в срез результатов, а цикл прерывается. В завершение results возвращается вызывающему.

Наша связанная с интерпретацией имен логика выглядит гладко, однако мы не учли производительность. Давайте совместим этот пример с горутинами, добавив в него многопоточность.


Переход к воркер-функции:


Мы создадим пул горутин, которые будут передавать работу воркер-функции, выполняющей единицу работы. Для распределения работы и сбора ее результатов задействуем каналы. Напомним, что нечто подобное мы уже делали в главе 2, когда создавали многопоточный сканер портов.

Продолжим расширять код Создание программы подбора поддоменов. Сначала создадим функцию worker(), разместив ее вне области функции main(). Она будет получать три аргумента каналов: канал для воркера, чтобы он сигнализировал о своем закрытии, канал доменов, в которых нужно получать работу, и канал для отправки результатов. Этой функции потребуется заключительный строковый аргумент для указания используемого DNS-сервера. Далее приведен пример кода для функции worker():

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Прежде чем вводить функцию worker(), определим тип empty для отслеживания завершения выполнения воркера. Это будет структура без полей. Мы задействуем пустую struct, так как она имеет размер 0 байт и практически не создаст нагрузку при использовании. Далее в функции worker() происходит перебор канала доменов, используемый для передачи FQDN. После получения ответа от функции lookup() и проверки наличия не менее одного результата мы отправляем его в канал gather, который собирает все результаты обратно в main(). После того как канал закрывается и цикл совершает выход, структура empty отправляет в канал tracker сигнал вызывающему о завершении всей работы. Отправка пустой struct в канал отслеживания — это важный последний шаг. Если этого не сделать, возникнет состояние гонки, так как вызывающий компонент может выйти до получения каналом gather результатов.

Поскольку вся необходимая структура теперь настроена, можно переключиться обратно на main() и закончить программу, которую мы начали писать в Создание программы подбора поддоменов.

Определите переменные, которые будут содержать результаты и каналы, передаваемые в worker(), после чего добавьте в main() следующий код:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Создайте канал fqdns как буферизованный на основе предоставленного пользователем количества воркеров. Это позволит воркерам запускаться быстрее, поскольку канал сможет вместить больше одного сообщения до блокировки отправителя.


Создание сканера с помощью bufio:


Далее откройте файл, предоставленный пользователем в качестве списка слов, и создайте в нем новый scanner с помощью пакета bufio. Добавьте в main() код

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Если возвращаемая ошибка не равна nil, используется встроенная функция panic(). При написании пакета или программы для применения другими людьми следует постараться представить эту информацию более ясно.

Мы будем применять новый scanner для захвата строки текста из переданного списка слов и создания FQDN путем совмещения этого текста с предоставленным пользователем доменом. Результат будет отправляться в канал fqdns. Но сначала нужно запустить воркеры, так как порядок важен. Если отправить работу в канал fqdns, не запустив их, этот буферизованный канал в итоге заполнится и функции-производители будут заблокированы. В main() нужно добавить приведенный далее код, чья задача — запускать горутины воркеров, читать вводный файл и отправлять работу в канал fqdns.

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Создание воркеров с помощью этого паттерна похоже на то, что мы уже делали при построении многопоточного сканера портов: задействовали цикл for до момента достижения числа, переданного пользователем. Для захвата каждой строки в цикле используется scanner.Scan(). Этот цикл заканчивается, когда в файле не остается строк для считывания. Для получения строкового представления текста из отсканированной строки мы применяем scanner.Text().

Работа запущена! Отвлекитесь на секунду и ощутите свое величие. Прежде чем читать следующий код, подумайте, где вы находитесь в программе и что уже успели сделать за время чтения книги. Попробуйте самостоятельно закончить эту программу и затем перейти к следующему разделу, где мы поясним ее оставшуюся часть.

Сбор и отображение результатов

Проработку последней части мы начнем с запуска анонимной горутины, которая будет собирать результаты воркеров. Добавьте в main() следующее:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Перебирая канал gather, мы добавляем полученные результаты в срез results. Поскольку мы добавляем срез в другой срез, нужно использовать синтаксис … . После закрытия канала gather и завершения перебора, как и прежде, происходит отправка пустой struct в канал отслеживания. Это делается для предотвращения состояния гонки на случай, если append() не завершится к моменту итогового предоставления результатов пользователю.

Остается только закрыть каналы и представить результаты. Для этого добавьте следующий код в конец main():

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Первым можно закрыть канал fqdns, так как мы уже отправили по нему всю работу. Далее нужно выполнить получение результатов в канале tracker по одному разу для каждого воркера, что позволит им обозначить свое полное завершение. После этого можно закрыть канал gather, потому что результатов для получения не остается. В завершение нужно выполнить еще одно получение результатов на канале tracker, чтобы позволить горутине окончательно завершиться.

Эти результаты пользователю еще не представлены. Нужно это исправить. При желании можно просто перебрать срез results и вывести поля Hostname и IPAddress, используя fmt.Printf(). Тем не менее мы предпочитаем задействовать для представления данных один из нескольких прекрасных пакетов Go, а именно tabwriter. Он позволяет выводить данные в красивых ровных столбцах, разбитых на вкладки. Для его применения добавьте в конец main() следующий код:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)


Снизу показана вся программа в сборе:

Package main

import (

"bufio"

"errors"

"flag"

"fmt"

"os"

"text/tabwriter"

"github.com/miekg/dns"

)

func lookupA(fqdn, serverAddr string) ([]string, error) {

var m dns.Msg

var ips []string

m.SetQuestion(dns.Fqdn(fqdn), dns.TypeA)

in, err := dns.Exchange(&m, serverAddr)

if err != nil {

return ips, err

}

if len(in.Answer) < 1 {

return ips, errors.New("no answer")

}

for _, answer := range in.Answer {

if a, ok := answer.(*dns.A); ok {

ips = append(ips, a.A.String())

}

}

return ips, nil

}

func lookupCNAME(fqdn, serverAddr string) ([]string, error) {

var m dns.Msg

var fqdns []string

m.SetQuestion(dns.Fqdn(fqdn), dns.TypeCNAME)

in, err := dns.Exchange(&m, serverAddr)

if err != nil {

return fqdns, err

}

if len(in.Answer) < 1 {

return fqdns, errors.New("no answer")

}

for _, answer := range in.Answer {

if c, ok := answer.(*dns.CNAME); ok {

fqdns = append(fqdns, c.Target)

}

}

return fqdns, nil

}

func lookup(fqdn, serverAddr string) []result {

var results []result

var cfqdn = fqdn // Не изменяем оригинал

For {

cnames, err := lookupCNAME(cfqdn, serverAddr)

if err == nil && len(cnames) > 0 {

cfqdn = cnames[0]

continue // Нужно обработать следующее CNAME

}

ips, err := lookupA(cfqdn, serverAddr)

if err != nil {

break // Для этого имени хоста нет А-записей

}

for _, ip := range ips {

results = append(results, result{IPAddress: ip, Hostname: fqdn})

}

break // Все результаты обработаны

}

return results

}

func worker(tracker chan empty, fqdns chan string, gather chan []result,

serverAddr string) {

for fqdn := range fqdns {

results := lookup(fqdn, serverAddr)

if len(results) > 0 {

gather <- results

}

}

var e empty

tracker <- e

}

type empty struct{}

type result struct {

IPAddress string

Hostname string

}

func main() {

var (

flDomain = flag.String("domain", "", "The domain to perform

guessing against.")

flWordlist = flag.String("wordlist", "", "The wordlist to use

for guessing.")

flWorkerCount = flag.Int("c", 100, "The amount of workers to use.")

flServerAddr = flag.String("server", "8.8.8.8:53", "The DNS server

to use.")

)

flag.Parse()

if *flDomain == "" || *flWordlist == "" {

fmt.Println("-domain and -wordlist are required")

os.Exit(1)

}

var results []result

fqdns := make(chan string, *flWorkerCount)

gather := make(chan []result)

tracker := make(chan empty)

fh, err := os.Open(*flWordlist)

if err != nil {

panic(err)

}

defer fh.Close()

scanner := bufio.NewScanner(fh)

for I := 0; i < *flWorkerCount; i++ {

go worker(tracker, fqdns, gather, *flServerAddr)

}

go func() {

for r := range gather {

results = append(results, I.)

}

var e empty

tracker <- e

}()

for scanner.Scan() {

fqdns <- fmt.Sprintf"%s.%", scanner.Text(), *flDomain)

}

// Заметьте: здесь можно проверить scanner.Err()

close(fqdns)

for i := 0; i < *flWorkerCount; i++ {

<-tracker

}

close(gather)

<-tracker

w := tabwriter.NewWriter(os.Stdout, 0, 8' ', ' ', 0)

for _, r := range results {

fmt.Fprint"(w, "%s\"%s\n", r.Hostname, r.IPAddress)

}

w.Flush()

}


На этом наша программа для подбора поддоменов готова. Теперь вы можете собрать и запустить этот инструмент. Опробуйте его на списках слов или словарях из открытых репозиториев (можете найти множество через Google). Поэкспериментируйте с количеством воркеров. Вы можете заметить, что при слишком быстрой обработке результаты получаются неоднозначные. Вот пример выполнения с использованием ста воркеров:

Написание DNS-клиентов Хакеры, Программирование, Информационная безопасность, Взлом, Программист, Linux, IT, Google, Golang, Пентест, Длиннопост, Telegram (ссылка)

Вы увидите, что вывод показывает несколько FQDN и их IP-адреса. Мы смогли угадать значения поддоменов для каждого результата на основе списка слов, переданного в качестве вводного файла.

Теперь, когда вы создали собственный инструмент для подбора поддоменов и научились интерпретировать имена хостов в IP-адреса для перечисления разных DNS-записей, можно переходить к написанию собственного DNS-сервера и прокси.

ССЫЛКА НА ТЕЛЕГРАМ КАНАЛ АВТОРА

Показать полностью 20
Хакеры Программирование Информационная безопасность Взлом Программист Linux IT Google Golang Пентест Длиннопост Telegram (ссылка)
1
TECHLiveHACK
TECHLiveHACK
1 год назад

Записать разговоры в Zoom как текст⁠⁠

Записать разговоры в Zoom как текст Программа, Гайд, Обучение, Windows, Linux, Проект, Telegram (ссылка)

Часто бывает, что время разговора по Zoom вы понимаете каждое слово, но затем ваша память решает поиграть в прятки именно в тот момент, когда это нужно больше всего. Не волнуйтесь, теперь у вас есть Otter.ai (https://otter.ai/).

Сервис транскрибирует ваши разговоры Zoom в текст в режиме реального времени, гарантируя, что вы не пропустите ни одного слога. Это ваш компаньон-полиглот, который без труда распознает речь на разных языках, в том числе на красивом и сложном русском.

Обсуждаете ли вы детали проекта на английском, говорите на испанском или разрабатываете стратегию на китайском, инструмент гарантирует, что язык больше не будет препятствием для понимания и сотрудничества.

Работает в Zoom, Google Meet и Microsoft Teams. С бесплатной версией вы можете использовать до 300 минут записей в месяц, при этом на каждую беседу отводится не более 30 минут.

Источник: https://t.me/TechLiveHack/119

Показать полностью 1
Программа Гайд Обучение Windows Linux Проект Telegram (ссылка)
0
TECHLiveHACK
TECHLiveHACK
1 год назад

Мастхэв для разработчиков⁠⁠

Мастхэв для разработчиков Инновации, Технологии, Гайд, Python, Сайт, Интернет, Хакеры, Windows, Linux, Программирование, IT, Программист, Разработка, Проект, Приложение, Android, Apple, Программа, Удаленная работа, Telegram (ссылка)

Вы – разработчик, постоянно ищущий способы улучшить работу с кодом? Bito (https://bito.ai/) – это то, что изменит ваш код. Это не просто обычное расширение для автозаполнения. Это мощный инструмент, который выводит ваш путь в программировании на новый уровень.

Мощный набор инструментов построен на основе ChatGPT. Позволяет быстро генерировать потрясающий код и создавать модульные тесты. Умеет объяснять код, генерировать комментарии и проверять работоспособность.

Сервис даже может проверить код на наличие уязвимостей в системе безопасности и сделать его до 10 раз быстрее. Удобный интерфейс позволяет легко установить продукт в IDE Jetbrains, Visual Studio Code и даже из расширения Chrome.

Вы даже можете установить его как консольную утилиту. С помощью Bito вы сможете повысить производительность кодирования и создавать код лучшего качества за меньшее время.

Источник: https://t.me/TechLiveHack/107

Показать полностью
Инновации Технологии Гайд Python Сайт Интернет Хакеры Windows Linux Программирование IT Программист Разработка Проект Приложение Android Apple Программа Удаленная работа Telegram (ссылка)
1
TECHLiveHACK
TECHLiveHACK
1 год назад

Как добавить ChatGPT на свой сервер в Discord?⁠⁠

Как добавить ChatGPT на свой сервер в Discord? Гайд, Хакеры, Информационная безопасность, Windows, Взлом, Linux, Интернет, Программирование, IT, Программа, Telegram (ссылка)

Хотите добавить на свой сервер Discord немного интерактивности? ChatGPT может добавить новое измерение во взаимодействие с сообществом, будь то развлекательные, информационные или творческие дискуссии.

Чтобы добавить ChatGPT на свой сервер Discord:

1. Откройте бота (https://discordbotlist.com/bots/chatgpt-bot-2788) в магазине ботов и тапните «Add ChatGPT Discord Bot».

2. Выберите сервер в вашей учетной записи, куда хотите его добавить и нажмите «Продолжить».

3. Предоставьте боту необходимые права и нажмите кнопку «Авторизировать».

В списке участников появится только что добавленный бот. Чтобы использовать его, воспользуйтесь командой «/ask <ваш_запрос>» в чате. Запрос будет переадресован напрямую к ChatGPT. Для взаимодействия не требуется VPN или API ключ.

Источник: https://t.me/TechLiveHack/156

Показать полностью
Гайд Хакеры Информационная безопасность Windows Взлом Linux Интернет Программирование IT Программа Telegram (ссылка)
1
611
DELETED
1 год назад

Бесплатный курс: практики по компьютерным сетям⁠⁠

Сразу хочу отметить, что этот бесплатный курс был опубликован более 6 лет назад. Однако, курс включает в себя огромное кол-во актуальной информации касательно сетей и Wireshark:

Бесплатный курс: практики по компьютерным сетям Информационная безопасность, Программирование, IT, Linux, Курс, Telegram (ссылка)

структура курса:

Анализатор сети Wireshark;
Канальный уровень в Wireshark;
Wi-Fi джунгли;
Протокол IP;
Инкапсуляция;
Протокол DHCP в Wireshark;
Протокол ARP;
Протокол ICMP в Wireshark;
Протокол ICMP, утилита traceroute;
Порты на транспортном уровне;
Установка соединения в TCP;
Протокол DNS в Wireshark;
Типы записей DNS в Wireshark;
DNS: итеративный и рекурсивный режим;
HTTP в текстовом режиме;
SMTP в текстовом режиме;
POP3 в текстовом режиме;
IMAP в текстовом режиме;
FTP в Wireshark;
Протокол IPv6;
Протокол NDP;
Web сокеты.

ссылки:

ссылка на курс

мы в телеграмм

Показать полностью
[моё] Информационная безопасность Программирование IT Linux Курс Telegram (ссылка)
45
23
mozaroc
1 год назад
Серия X-ray и компания

Marzban - Еще одна панель для управления proxy на базе XRay-core⁠⁠

Сегодня поговорим о такой панели управления как Marzban

Marzban - это программное обеспечение (веб-приложение) для управления прокси-серверами. Это программное обеспечение вдохновлено Xray-core и реализовано с использованием Python и React.

Плюсы

  1. Простая установка и настройка.

  2. Не нужно думать и создавать кучу входящих соединений на разных протоколах и поддерживать это для каждого пользователя, достаточно выбрать какие протоколы включить или выключить и для каждого уже созданного пользователя или вновь создаваемого пользователя конфиги сразу будут достпны.

  3. Rest API

  4. Возможна масштабируемость на несколько серверов, для поддержки нескольких локаций

  5. Хорошая документация на русском языке

Минусы

Можно конечно попридераться, но все исправимо, что-то легче, что-то сложнее. То что исправляется легко я исправил своим скриптом, все остальное не так критично.

Установка:

Вам понадобится чистый сервер с минимум 1 CPU и 1 Gb RAM, 10 Gb на диске.
ОС Ubuntu 20
Любой ssh клиент установленный на вашем домашнем ПК
Доменное имя, подойдет сабдомен от duckdns, как его получить рассказывал в паре прошлых статей (тыц туц). А если у вас еще нет сервера, вы его хотите и возможно вы захотите сказать спасибо мне за статью, то приобретайте сервер у компании VEESP по моей реферальной ссылке, бесплатное доменное имя третьего уровня можно будет выбрать при заказе VPS.

Итак, подключаемся к серверу по ssh с пользователем root и выполняем команды:
wget https://raw.githubusercontent.com/mozaroc/bash-hooks/main/in...
chmod +x install_marzban.sh
./install_marzban.sh ВАШЕ_ДОМЕННОЕ_ИМЯ

Что сделает скрипт:
1. Установит докер
2. Установит вебсервер caddy для реверспроксирования и автоматического получения и продления SSL сертифика
3. Подготовит конфиги для marzban (перенос на 127.0.0.1 что бы не светить http в свет, ссылка для подписки, сгенерирует пароль администратора)
4. Подготовит конфиг для кадди (автоматическое получение и продление сертификата, реверспроксирование на внутренний адрес и порт для marzban, рандомный порт на котором caddy будет принимать подключения в панель)

Скрипт выполняется 3-5 минут а в конце, если все хорошо, выдаст следующее:

Marzban installation finished, it is running now...

###############################################

username: admin

password: ЧЧXXcxCCasfg

###############################################

The panel is available at https://ВАШЕ_ДОМЕННОЕ_ИМЯ:64125/dashboard

###############################################

Копируем адрес, и идем авторизовываться c указанными логином и паролем.

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Перед созданием подкючений ищем какой-либо домен в сети провайдера, которым будем прикрываться.

Ищем программой https://github.com/XTLS/RealiTLScanner/releases
скачиваем, распаковываем и запускаем из cmd командой:
.\RealiTLScanner-windows-64.exe -addr 1.1.1.1 -port 443 -thread 100 -timeOut 5
где 1.1.1.1 IP адрес вашего VPS сервера.

Идея! У некоторых хостеров есть собственные зеркала Linux, это как раз тот домен который можно безопасно использовать для фейкового домена, проверить можно так - просто вбивайте в браузере https://mirror.ДОМЕНХОСТЕРА
Если что-то открывается то отлично, смело используйте это доменное имя.

Далее идем в настройки ядра и настраиваем протокол VLESS TCP REALITY

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

В появившемся окне мотаем до нужного протокола (VLESS TCP REALITY)

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Значение порт меняем на 443
Значение dest меняем на найденный нами сайт
И проматываем еще чуть ниже и меняем еще два занчения в serverNames

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

В качестве второго можно указать сайт вашего хостера. Далее сохраняем и перезапускаем ядро:

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Далее можно переходить к настройкам пользователей.
Нажимаем Create User

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

В появившемся окне заполняем поле Username
Далее по трем точкам настраиваем протокол Vless, нужно обязательно указать Flow как указано на скриншоте. И нажимаем Create User для сохранения.

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Остальные протоколы оставляем как есть, т.к. они если и будут использоваться то в качестве резерва.

Теперь мы видим нашего пользователя в списке, справа в строчке мы можем скопировать сылку на подписку, скопировать все конфиги ссылка и показать QR-code для сканирования

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

В QR кодах, левый это код для ссылки подписки, а првые можно полистать, это коды ссылок отдельных протоколов. К сожалению они не подписаны, поэтому не очень понятно какой и где, но это не так важно, т.к. подписка всегда удобней.

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

По щелчку на самого пользователя мы попадем в меню редактирования, в котором можно подправить настройки протоколов для пользователя, посмотреть и сбросить статистику использвоания, а так же удалить его.

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Теперь ссылку на подписку можно скармливать клиентам, для некобокс это делается копипастом в интерфейс, возможно потребуется удалить уже настроенный профайл, в мобильных клиентах это отдельные разделы. Для nekoray - Копируем ссылку в панели для пользователя, запускаем приложение, и просто по Ctrl+V вставляем, нажимаем ОК

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Самые рабочие подключения у нас это VLESS, через 443 порт, выбираем его, запускаем, проверяем

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Для FoXray - Заходим в раздел Subscriptions и добавляем по плюсику, переслать и скопировать ссылку можно через какой-либо мессенджер.

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Далее заполняем имя, вводим URL и нажимаем Add

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Теперь в списке доступных подключений видим что все создалось, находим VLESS-tcp reality, запускаем, проверяем

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Для Android открываем приложение v2rayNG на телефоне, в правом верхнем углу тыкаем на плюсик и выбираем Импорт профиля из QR-кода

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Выбираем отсканировать или открыть код из файла

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Сканируем QR-код подписки, но сразу подключение не добавится, нужно дать команду на обновление подписки. Жмем по трем точкам в правом верхнем углу и выбираем Обновить подписку

Marzban - Еще одна панель для управления proxy на базе XRay-core Linux, Гайд, Инструкция, Компьютерная помощь, Windows, iOS, Telegram (ссылка), Telegram, Длиннопост, Mac Os, VPN, VPS, Роскомнадзор, Обход блокировок

Наше подключение появится и можно его запускать. Далее если произошли какие-то изменения в настройках подключения для пользователя со стороны сервера эти обновления автоматически скачаются.

И конечно не забываем настроить маршрутизацию трафика, что бы не гонять локальные сайты через VPN, да и так трафик вашего устройства будет больше похож на лигитимный, т.к. не весь трафик пойдет в стороны VPN сервера.

Как это сделать можно посмотреть в одной из моих прошлых статей

Как итог, панель достаточно простая и удобная в использовании. Почитав документацию, посидев немного в чате на русском, очень сильно похоже что панель создается програмистами для програмистов, т.к. на ее базе очень хорошо создавать полукоммерческие решения для продажи VPN, что конечно говорит в ее пользу. Но к сожалению некоторые вещи с ней настроить будет сложнее, т.к. нужно будет сразу лезть в голую конфигурацию ядра.

На это все, спасибо за внимание.

Копия статьи в телеграф

Ссылка на телеграм канал где в каментах можно задавать вопросы

Ну и традиционный промокод OCTOBER2023 на приобретение VPS на хостинге veesp.com по моей реферальной ссылке

Показать полностью 18
Linux Гайд Инструкция Компьютерная помощь Windows iOS Telegram (ссылка) Telegram Длиннопост Mac Os VPN VPS Роскомнадзор Обход блокировок
31
Партнёрский материал Реклама
specials
specials

Сколько нужно времени, чтобы уложить теплый пол?⁠⁠

Точно не скажем, но в нашем проекте с этим можно справиться буквально за минуту одной левой!

Попробовать

Ремонт Теплый пол Текст
568
unknwnpikabu
1 год назад
Лига Политики

Canonical выпустила новую Ubuntu 23.10 с гачимучи-локализацией на украинском языке⁠⁠

Canonical выпустила новую Ubuntu 23.10 с гачимучи-локализацией на украинском языке Политика, Сборка компьютера, Linux, Telegram (ссылка)

Впервые на это обратил внимание телеграм-канал «Эмулятор техноблогера», который опубликовал видео с установкой релиза.

Локализацию скомпрометировал некий Danilo Negrilo через сторонний инструмент перевода Weblate, который используется для некоторых приложений. Жалобы от сообщества поступили незамедлительно. Обновленный ISO-образ выпустят после исправления некорректных описаний.

В данный момент Canonical начали расследование вандального перевода украинского установщика Ubuntu 23.10 — релиз отправили на пересборку

Политика Сборка компьютера Linux Telegram (ссылка)
59
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии