"Как новый год встретишь, так его и проведешь!"
Все началось на новогодние праздники... В начале 2025 года (да, пост немного задержался))) ...
Ко мне в гости приехал мой хороший друг и программист
@octet8 (спасибо тебе!). И в один прекрасный день я показал ему свой
ldap_shell, рассказал про боль и главную проблему инструмента: инструмент изначально создавался как автономная версия
модуля ntlmrelayx, и все написанные
командлеты были методами класса LdapShell. Было очень легко просто скопировать готовый метод и перенести его в ntlmrelayx и получить больше опций при проведении ntlm relay атаки...
Но это несло и целую кучу проблем: контрибьютерам было сложно и непонятно, куда дописывать свои атаки, код разрастался... и один класс занимал уже тысячи строк кода, каждый раз при добавлении нового функционала приходилось вручную менять вывод команды help. В какой-то момент это все вышло из-под контроля, и так продолжаться дальше не могло. Поэтому мой друг помог мне переписать ядро инструмента и построить по-настоящему модульную архитектуру. В таком виде инструмент увидел свет в апреле этого года!
В конце 2025 года я не знаю людей, которые не используют в своей работе ИИ - новая архитектура как нельзя лучше подошла для интеграции с ИИ при разработке своих модулей.
Все модули аккуратно лежат в папке
ldap_modules, каждый модуль имеет общий
шаблон, в котором описываются основные составляющие модуля (такие как справка, пример использования модуля, класс ModuleArgs, использующий pydantic для описания и валидации аргументов модуля и его типов, а также метод
__call__, содержащий основную логику модуля и т.п.).
Если у вас возникает проблема с написанием модуля - вы можете посмотреть, как описаны подобные модули.
А теперь давайте поговорим про ИИ и его роль. ИИ очень любит понятный и небольшой контекст, а также любит делать небольшие файлики с кодом. Например, вам захотелось сделать модуль, который меняет конкретные биты в UAC - сделать это можно достаточно удобно из PowerShell, но если под рукой только Linux, то данная задача уже не выглядит так просто. Но на самом деле все проще, чем может показаться). В Cursor у меня уже был загружен проект ldap_shell, я открыл новый чат, перетащил ему в контекст
папку и описал, что мне надо редактировать побитово атрибут userAccountControl, и о чудо! С первого раза и без единой ошибки был сгенерирован модуль
uac_modify, который сразу работал и делал то, что я хочу. Данный модуль я решил оставить в неизменном виде именно так, как мне его сгенерил ИИ с первого раза :)
Теперь вы видите, как это стало легко и понятно, теперь вы можете очень удобно перенести свои костыли в аккуратный интерфейс ldap_shell или автоматизировать то, что выглядело ранее сложно и требовало пляски с бубном вокруг LDAP. Создавайте свои модули, делитесь ими и становитесь контрибьютерами!!! Лучшие модули я буду добавлять в инструмент.