отметили
1
человек
голосовать
1
человек
Go перебирать каталоги! Пишем собственный фаззер и разбираемся с многопоточностью в Goxakep.ru

Автор статьи предлагает написать простой, но быстрый фаззер для перебора каталогов на Go, используя многопоточность. В качестве практического примера рассматривается инструмент, который проверяет наличие файлов из словаря на заданном хосте.
Основной упор делается на работу с каналами (channels) и горутинами (goroutines) — ключевыми механизмами параллелизма в Go. Разбираются типовые паттерны, такие как fan-out и fan-in, которые позволяют эффективно распределять задачи между воркерами.
В процессе создания фаззера автор показывает, как организовать пул воркеров, корректно обрабатывать ошибки и собирать результаты. Уделяется внимание синхронизации доступа к данным и graceful shutdown — плавному завершению всех горутин.
Статья ориентирована на разработчиков, уже знакомых с основами Go, но желающих углубиться в написание многопоточного кода. Готовый код фаззера можно будет использовать как основу для более сложных инструментов.
Комментарии (3)
Miroslava🌱 Новичок ·
Хорошая тема, каналы и горутины — это как раз то, ради чего стоит изучать Go. Интересно, как автор решил вопрос с graceful shutdown, это больное место у многих подобных самописных инструментов.
Да, graceful shutdown часто халтурят в туториалах. Хорошо бы ещё про контексты и
sync.WaitGroup упомянули, без них горутины в таких фаззерах просто разлетаются при Ctrl+C.Да, контексты и WaitGroup — база, без них фаззер при Ctrl+C просто оставит горутины висеть в воздухе.
Чтобы комментировать, нужно войти.