
Набор функций для повышения продуктивности при хакерской работе с Bash
bashacks — это набор bash-функций, которые могут быть полезны программистам, специалистам по безопасности и обычным пользователям, которым нужны низкоуровневые операции.
На самом деле в bashacks нет ничего принципиально нового; все функции написаны с использованием существующего программного обеспечения в UNIX-подобных системах. Однако это позволяет использовать короткие команды для выполнения задач, которые обычно требуют нескольких команд.
Используйте команду make, чтобы создать один файл, содержащий все функции, и подключите его через source:
make
source bashacks.sh
Всё. Теперь вы можете просмотреть доступные функции из нового терминала, набрав bh_ и нажав Tab.
Если вы хотите сделать это постоянным, добавьте строку в ваш ~/.bash_profile:
echo "source $(pwd)/bashacks.sh" >> ~/.bash_profile
Кое-что есть, но оно устарело. PR приветствуются!
Сколько сейчас времени в эпохе Unix?
$ bh_epoch
1522324129
Прибавить 4 к 'f' по алфавиту
$ bh_charcalc f + 4
j
Узнать мой внешний IP-адрес
$ bh_myip
177.212.113.13
Создать базовый скелет программы на C
$ bh_skel_c > hello.c
$ cat hello.c
Будет выведено:
#include <stdio.h>
int main(int argc, char *argv[]) {
return 0;
}
Вычислить распространённые контрольные суммы файлов
$ bh_hashes /bin/ip*
387478f58a0669173fb6557d392a58e9 /bin/ip
1dd0f3b100bd6efc4664da0cdefff801d7d2efd8 /bin/ip
1d418ae3a767280c7fc6026a25e5bb9774c0e8afc7b3387b547765b62cbe578f /bin/ip
78868acd29e4a33194fb786f6589d3d1 /bin/ipcmk
8c22a129ff4b5748cc62222a93ba8471d7fdce19 /bin/ipcmk
34a068d7f85e85746b3fc98502fa96a734cc51f3a9d49cad92911e8f239bd9c9 /bin/ipcmk
69c2bedc20e77c039912c9d5e7af33db /bin/ipcrm
7992a936b28359d7f087a448d2b8a2418ef4f112 /bin/ipcrm
cded383eb3b74467409c1731c2804350fe3d1123bdac7304c1c6f3af9e7976f7 /bin/ipcrm
499f17765c0aa55ac99739c9bcac1d0c /bin/ipcs
c476949e77ef8710398fd8ec4f78c8cf1d76a420 /bin/ipcs
33c77a5b625f4de919f55dc24207645d219a2fde2e0b92be27c5cda8c662cd72 /bin/ipcs
6a738c5c2506f7e87c9458e0c3df378f /bin/iptables-xml
ba97af2e429aca6beb5a2b8861e370bbf874dee9 /bin/iptables-xml
cb8c10461da5247e8d6d63a123ba563df95ae1e78f29e1717eb8bb02c2ca045b /bin/iptables-xml
Найти файлы по MIME-типу (игнорируя расширение):
$ bh_findmime -elf /bin | head
/bin/[
/bin/addpart
/bin/appres
/bin/apt
/bin/apt-cache
/bin/apt-cdrom
/bin/apt-config
/bin/apt-extracttemplates
/bin/apt-ftparchive
/bin/apt-get
Результат можно передать в xargs, чтобы быстро вычислить контрольные суммы:
$ bh_findmime -pe ~/Downloads/ | xargs shasum
d9e49c4209087170e36cbef689d96240d736cf3b /Users/menteb/Downloads/CSCWCNG.dll
50dfeea02e89f41caf52df152c7cb923c667bffc /Users/menteb/Downloads/Receitanet-1.10.exe
86a5f89d43ab11456fb817aeceb14b83cc6c2608 /Users/menteb/Downloads/Xojo2017r3Setup.exe.opdownload
Преобразовать строку в hex в различных форматах вывода
$ bh_str2hex mentebinaria
6d 65 6e 74 65 62 69 6e 61 72 69 61
$ bh_str2hex -x mentebinaria
\x6d\x65\x6e\x74\x65\x62\x69\x6e\x61\x72\x69\x61
$ bh_str2hex -c mentebinaria
{ 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x62, 0x69, 0x6e, 0x61, 0x72, 0x69, 0x61 }
В bashacks реализована очень базовая обработка ошибок. Если функция не получает необходимые аргументы, она просто возвращает 1.
Есть ещё много интересного. Установите и убедитесь сами. :)
В некоторых строковых функциях приходится экранировать специальные символы, потому что bash пытается их интерпретировать. Пример с функцией bh_strxor:
$ bh_strxor 0x41 fernando
'$3/ /%.
$ bh_strxor 0x41 "'\$3/ /%." # строка в двойных кавычках, знак доллара экранирован
fernando
Многие функции bashacks используют механизм разбиения строк на слова (word splitting) из bash, поэтому по умолчанию они не работают в Zsh. Однако можно настроить Zsh на разбиение строк следующей командой:
$ setopt sh_word_split
Тогда всё должно заработать.