Хакер - Мастерская хакера. Собираем утилиты, которые облегчат жизнь и работу
Содержание статьи
Не знаешь, чем заняться в праздники? Не пыхтишь над грядкой, подставив пятую точку солнцу? Не орешь песни в пьяном угаре? Не беда! Сейчас я тебе расскажу о замечательных программках, копание с которыми тебя обязательно развлечет. А может быть, что‑то из этого потом будет радовать тебя каждый день!
Это уже четвертая статья о консольных утилитах, которые делают нашу жизнь лучше. В первой мы рассматривали в основном сетевые утилиты, во второй — дашборды и прочие украшательства. В третьей я сконцентрировался на жизни в Windows с WSL.
Я думал было заканчивать серию, но вы продолжаете присылать мне утилиты, которые считаете незаслуженно забытыми на (веб-) страницах Хакера. Поэтому сегодняшняя подборка будет почти полностью состоять из присланных читателями инструментов, часть из которых я уже взял себе на вооружение. Думаю, и в твой чемоданчик что‑то найдется. Пошли смотреть!
РАБОТА С ФАЙЛАМИ
Goful
Goful — это новенький двухпанельный файловый менеджер, написанный на Go. Он поддерживает многие полезные фичи вроде группового переименования с помощью регулярок и поиска. Есть встроенный терминал и многие другие полезности.
Управляется он немного непривычно, но удобно: вместо шоткатов из двух‑трех кнопок здесь положено нажимать всего по одной. Например:
- пробелом можно выбрать один или несколько файлов (как клики с зажатым Ctrl в графических средах);
\
перебрасывает в корневую директорию (немного неочевидно, потому что слеш тут обратный, а не прямой, как принято в никсах);i
— посмотреть файл в страничном просмотрщике;b
— добавить закладку на файл;f
/
— открыть поиск по файлам в текущей папке;K
— создать папку;d
— перейти по пути.
Само собой, это лишь малая часть команд. Полный список есть в README репозитория.
Установить Goful можно одним из двух способов. Первый — просто скачать и запустить бинарный релиз из репозитория на GitHub. Для второго понадобится установленный на твоей машине Go:
go install github.com/anmitsu/goful@latest
Goful и так выглядит неплохо, но можно его еще и кастомизировать: менять управление, цвета, интерпретатор встроенной командной строки, редакторы и просмотрщики. Конфигурационного файла нет, вместо этого предлагается править main.go
, после чего переустановить командой go install
.
Nnn
Nnn — это один из самых минималистичных консольных файловых менеджеров. Его главное преимущество — простота и нетребовательность, хотя последнее в мире домашних компьютеров с 32 Гбайт оперативки стало неактуально.
В Ubuntu ты можешь установить nnn прямо из репозитория:
Теперь когда угодно пиши nnn
, и можешь лететь по каталогам с ветерком! Встроенную справку в любой момент можно открыть, нажав знак вопроса.
Ncdu
Ncdu (NCurses Disk Usage) — это прокачанная версия du
, которая показывает занятое место в красивом псевдографическом интерфейсе.
С ncdu ты можешь не только смотреть, сколько занимают файлы в каком‑то каталоге, но и легко перемещаться между ними, а если решишь удалить что‑то ненужное, то достаточно будет нажать кнопку d. Естественно, по случайному нажатию программа ничего не удалит — в нее встроен новейший телепатический анализатор, который проверит твои намерения, запросив подтверждение.
Установка проста как два рубля:
При запуске ncdu просканирует текущую папку и выдаст результаты. Путь для сканирования можно указать первым аргументом:
Утилита работает с впечатляющей скоростью, чем немало радует.
Diffoscope
Когда обычного diff
мало, может пригодиться diffoscope. Кроме текстовых файлов, эта штуковина умеет сравнивать папки, архивы, бинарники, ISO-образы, PDF-документы и кучу всего еще — поддерживается около 70 типов файлов. Полный список доступен в выводе diffoscope -h
.
Установка на Debian и Ubuntu делается одной командой:
Правда, при такой установке на чистую Ubuntu скачалось 1124 пакета суммарным объемом около полутора гигабайт, потому что в зависимостях есть Python, Java и X-сервер. Зачем это консольной утилите — неизвестно.
docker run --rm -t -w $(pwd) -v $(pwd):$(pwd):ro registry.salsa.debian.org/reproducible-builds/diffoscope
А еще есть версия diffoscope для браузера — try.diffoscope.org (на скриншоте именно она).
Eget
Eget — это классная утилита, с помощью которой можно устанавливать софт из репозиториев GitHub, где авторы разместили релизы с бинарниками.
Если бы eget можно было установить с помощью eget, то достаточно было бы написать
Если же eget у тебя еще нет, придется воспользоваться готовым релизом или скриптом‑установщиком:
curl https://zyedidia.github.io/eget.sh | sh
СЕТЬ
Wireproxy
Если тебе нужно использовать Wireguard, но по каким‑то причинам не хочется поднимать полноценный клиент, обрати внимание на wireproxy. Он подключается к пиру по протоколу Wireguard, но не создает новый сетевой интерфейс, а поднимает SOCKS5-прокси, который ты можешь указывать в своих программах.
Установка сводится к трем строчкам в терминале:
git clone https://github.com/octeep/wireproxy
Если же у тебя нет Go — не беда, просто скачай собранный релиз.
Запуск требует всего одного параметра:
Конфиг — стандартный для Wireguard, но в него нужно добавить две секции (комментарии оставил для ясности):
# TCPServerTunnel is a tunnel listening on wireguard,
# and it forwards any TCP traffic received to the specified target via local network.
# <an app on your wireguard network> --(wireguard)--> 172.16.31.2:3422 --> localhost:25545
# SOCKS5 creates a SOCKS5 proxy on your LAN, and all traffic would be routed via wireguard.
# SOCKS5 authentication parameters, specifying username and password enables
# Avoid using spaces in the password field
Более подробно про wireproxy читай в репозитории проекта.
Ssh-tools
Ssh-tools — это небольшой набор утилит для тех, кто много работает по SSH. Самыми полезными из них кажутся эти:
ssh-ping
— пропинговать SSH-сервис (не машину, а именно демон SSH);ssh-diff
— сравнить файлы на разных машинах;ssh-facts
— немного информации об удаленной системе;ssh-force-password
— пропустить авторизацию по ключу и залогиниться по паролю (если сервер позволяет);ssh-keyinfo
— информация о ключах.
Все утилиты из этого набора парсят ~/.ssh/config
, так что можно использовать уже настроенные имена хостов оттуда.
Набор есть в репозиториях всех популярных дистрибутивов — можешь просто ставить пакет ssh-tools
.
Nala
Nala — это классный интерфейс для APT. Умеет все, что может стандартный apt
, а кроме этого, поддерживает историю и качает пакеты параллельно.
В штатных репозиториях nala пока нет, но можно подключить сторонний и установить оттуда:
echo "deb http://deb.volian.org/volian/ scar main" | sudo tee /etc/apt/sources.list.d/volian-archive-scar-unstable.list
wget -qO - https://deb.volian.org/volian/scar.key | sudo tee /etc/apt/trusted.gpg.d/volian-archive-scar-unstable.gpg > /dev/null
После этого достаточно вместо apt
просто вызывать nala
(nala install nmap
, например).
Iptables-tracer
С помощью iptables-tracer можно посмотреть, проходит ли трафик через нужные нам цепочки iptables. Делает он это, вставляя в каждую цепочку специальные правила‑маркеры (-j NFLOG
), которые будут срабатывать при прохождении пакета через цепочку.
$ iptables-tracer -f "-s 192.0.2.1 -p tcp --dport 443" -t 30s
14:42:00.284882 raw PREROUTING 0x00000000 IP 192.0.2.1.36028 > 203.0.45.41.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:]
14:42:00.287255 mangle PREROUTING 0x00008000 IP 192.0.2.1.36028 > 203.0.45.41.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:]
14:42:00.288966 nat PREROUTING 0x00008000 IP 192.0.2.1.36028 > 203.0.45.41.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:]
14:42:00.290545 mangle FORWARD 0x00008000 IP 192.0.2.1.36028 > 198.2.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:eth1]
14:42:00.292123 filter FORWARD 0x00008002 IP 192.0.2.1.36028 > 198.2.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In:eth0 Out:eth1]
14:42:00.293164 mangle POSTROUTING 0x00008002 IP 192.0.2.1.36028 > 198.2.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In: Out:eth1]
14:42:00.293780 nat POSTROUTING 0x00008002 IP 192.0.2.1.36028 > 198.2.100.8.443: Flags [S], seq 3964691400, win 29200, length 0 [In: Out:eth1]
Для установки нужен Git и Go. Ставим:
git clone https://github.com/x-way/iptables-tracer
./iptables-tracer -f "-s 1.3.5.7 -p tcp --dport 22" -t 90s
Параметр -f
позволяет фильтровать, какой именно трафик нужно отображать, согласно синтаксису iptables, а -t
задает время работы, после которого трассировка прекратится.
Важно помнить, что после остановки трассировки созданные в iptables служебные правила не удаляются, так что потом их нужно удалить такой командой:
INFO
А ты знал, что с Nftables трассировка правил доступна «из коробки»? Мы уже писали об этом подробнее в статье «Nftables. Разбираем преимущества перехода с iptables на новый файрвол». Если много работаешь с файрволом — обязательно ознакомься!
ГРАФИКА
Picocrypt
Picocrypt — простая, но мощная тулза для шифрования файлов. К сожалению, поставляется только с графическим интерфейсом, но вряд ли это будет большой проблемой.
Picocrypt умеет не только шифровать, но и генерить надежные пароли и редактировать метаданные файлов. Если хочется, можно эти метаданные даже полностью удалить, но идея направить потенциальных расследователей по ложному следу выглядит более интересно.
В README автор расхваливает свое творение как чуть ли не лучшее решение для шифрования чего угодно: тут у нас и открытые исходники, и маленький размер, и современный алгоритм, и даже защита от повреждения данных. Полную сравнительную таблицу можно почитать ниже или в репозитории проекта.
Установка в Windows сводится к скачиванию собранного бинарника со страницы релизов, а в Linux ставится через Snap:
Если Snap нет, сначала нужно установить его (sudo apt install snapd
).
Dockeye
Если тебе вдруг потребовался UI для Docker, попробуй dockeye. Это графический клиент для управления Docker, который выглядит почти непохоже на другие подобные инструменты.
Есть сборки для Linux и macOS. Скачать их можно со страницы релизов.
Sysmontask
Если ты соскучился по виндовому диспетчеру задач, то с sysmontask ты будешь в Linux как дома!
Думаю, о том, что он делает, рассказывать не имеет смысла, так что давай просто установим и ты сам все проверишь:
sudo add-apt-repository ppa:camel-neeraj/sysmontask
// Выполнить только на Ubuntu <=20.04
Первый запуск автор рекомендует проводить из консоли командой sysmontask
.
Neofetch
Neofetch — это программка, которая наглядно и красиво выводит статистику о твоем компьютере. Она покажет используемый дистрибутив (с большим логотипом!), версию ядра, информацию об объеме памяти и процессоре, оболочку, окружение рабочего стола (если оно есть), оконный менеджер, активную тему оформления и многое другое.
Neofetch есть в репозитории Ubuntu:
Если ты тоже пользуешься WSL, можешь поставить аналогичную программу wslfetch
, которая поставляется в составе дистрибутивов, собранных в Microsoft. Ее вывод выглядит чуть по‑другому, и работает она заметно медленнее, но не рассказать о предустановленном аналоге я не могу.
TTYgames
Самая важная часть этой статьи — коллекция консольных игр. Хотя и выглядит это в XXI веке как анахронизм, но почему нет? Возможно, эти развлечения даже не заметят на работе. Выход этой статьи был отложен как раз потому, что я нашел прекрасный тетрис (на картинке) и не мог оторваться.
ДЛЯ СКРИПТОВ
HttpX
HttpX — это многоцелевой инструмент для автоматизации работы с HTTP. С его помощью удобно искать HTTP-серверы в результатах сканирования, собирать отпечатки сервисов и исследовать подсети при пентесте.
Особенно удобно комбинировать httpX с другими инструментами.
subfinder -d hackerone.com -silent| httpx -title -tech-detect -status-code
Use with caution. You are responsible for your actions
Developers assume no liability and are not responsible for any misuse or damage.
https://mta-sts.managed.hackerone.com [404] [Page not found · GitHub Pages] [Varnish,GitHub Pages,Ruby on Rails]
https://mta-sts.hackerone.com [404] [Page not found · GitHub Pages] [Varnish,GitHub Pages,Ruby on Rails]
https://mta-sts.forwarding.hackerone.com [404] [Page not found · GitHub Pages] [GitHub Pages,Ruby on Rails,Varnish]
https://docs.hackerone.com [200] [HackerOne Platform Documentation] [Ruby on Rails,jsDelivr,Gatsby,React,webpack,Varnish,GitHub Pages]
https://support.hackerone.com [301,302,301,200] [HackerOne] [Cloudflare,Ruby on Rails,Ruby]
https://resources.hackerone.com [301,301,404] [Sorry, no Folders found.]
Установить программу из исходников мне не удалось из‑за проблем с Go, но eget
без труда подтянул бинарный релиз, который, конечно, можно скачать и вручную.
Флагов у программы очень много, но разбираться с ними я тебе предлагаю самостоятельно — они узкоспецифические, и каждый из них хорошо описан в справке.
Xj
Тем, кто пытался работать с HTML из shell-скриптов, знакома боль от попыток парсинга с помощью регулярок. Для вас существует xj — утилита, которая конвертирует HTML-страницу в JSON для дальнейшей обработки. Обрабатывать JSON из скриптов очень удобно с помощью jq
:
$ wget -qO- https://stedolan.github.io/jq/ | xj | jq '..|select(.title?)[][]'
Прекрасная вещь для простых парсеров, когда по каким‑то причинам не хочется программировать.
Topalias
Topalias генерирует алиасы для команд, которыми ты чаще всего пользовался. Утилита показывает статистику, предлагает сокращения и показывает, как их зарегистрировать.
На скрине выше видна очевидная проблема: утилита понятия не имеет, что некоторые предлагаемые ей алиасы имеют те же имена, что установленные в системе программы, в том числе системные. Например, для команды cd pbsbot
предложен алиас cp
, после применения которого ты не сможешь копировать файлы.
И еще одна неприятность — это битая зависимость при установке. Устанавливать предлагается следующим образом:
pip3 install -U --user topalias
Но при попытке запуска утилита незамедлительно крашнется, ругаясь на непонятную ошибку и не давая даже посмотреть справку. Починить это можно установкой более старой версии пакета click
:
pip3 install -U --user click==7.1.2
Только после этого все заработает нормально.
ПРОЧЕЕ
Jrnl
Для постоянных обитателей терминала существует jrnl — консольная утилита для заметок.
Установка делается через pipx, и автор утилиты предупреждает о возможных проблемах при неправильной установке этого пакетного менеджера. Я ставил pipx через APT (хотя автор так делать не рекомендует) и с проблемами не столкнулся, но имей в виду, что они бывают.
Предположим, что «правильный» pipx у тебя уже есть. Тогда установка делается в одну команду:
Чтобы запустить jrnl
, либо просто передай заметку аргументом командной строки, либо запусти jrnl
и напечатай все в самой утилите — это удобно, если текст заметки длинный.
Можно добавлять к заметкам заголовки, теги, метки времени и даже зашифровать свой журнал.
Файл с заметками — это простой текст, поэтому смотреть его можно самыми разными способами. В дополнение к ним в программе есть ключи --short
(покажет только заголовки) и --export text
(выведет весь файл журнала).
Утилита хоть и выглядит минималистичной, но в реальности возможностей немало. Их подробное описание ты найдешь на сайте разработчика.
Уведомления с Android на Linux
Android2Linux Notifications — это способ показать уведомления из Android на настольном Linux с помощью libnotify
.
И компьютер, и телефон должны находиться в одной сети, так как между ними устанавливается прямое соединение при каждом новом уведомлении. Но никто не запрещает создать эту связь удаленно при помощи VPN-туннеля вроде Wireguard.
Устанавливается сначала сервер на компьютере, а затем приложение на телефоне. Сервер устанавливается следующими командами:
git clone https://github.com/patri9ck/a2ln-server.git
Если возникнут проблемы, установи зависимости через pip
— список лежит в requirements.txt
.
После этого можно запустить сервер командой a2ln 50505
, чтобы слушать на 50505-м порте. Конечно, ты можешь его поменять по своему усмотрению, но помни, что порты ниже 1024-го требуют прав root. А еще не забудь закинуть старт сервера в автозагрузку любым удобным способом, чтобы уведомления продолжили приходить после перезагрузки машины, если ты ее вообще перезагружаешь.
На телефоне нужно скачать из F-Droid приложение‑клиент и вбить в него IP и порт, на котором слушает серверная часть. Если ты счастливый обладатель Huawei, Samsung, Xiaomi или другого телефона с драконовым энергосбережением, то придется озаботиться внесением приложения в белый список, чтобы система его не убивала. Как это сделать — читай на dontkillmyapp.com или в профильных ветках форумов.
Читайте ещё больше платных статей бесплатно: https://t.me/hacker_frei