Poradnik Bash Bushidō cz. VI – hakierska sygnaturka
Korzystając z sieci typu P2P (np. Torrent), zdarza nam się pobrać zawartość, w której jest plik README. W pliku tym z reguły znajdziemy informację à propos osoby lub grupy, która tę zawartość przygotowała lub udostępniła. W tej części Bash Bushidō zajmiemy się tematem wypisywania tekstu na ekran – oczywiście w niecodzienny sposób. Jest to najlżejsza część naszej drogi wojownika.
Korzystając z sieci typu P2P (np. Torrent), zdarza nam się pobrać zawartość, w której jest plik README. W pliku tym z reguły znajdziemy informację à propos osoby lub grupy, która tę zawartość przygotowała lub udostępniła. W tej części Bash Bushidō zajmiemy się tematem wypisywania tekstu na ekran – oczywiście w niecodzienny sposób. Jest to najlżejsza część naszej drogi wojownika. Na końcu pozwolę sobie zdradzić czytelnikom mały sekret :)
Banner
Program banner poznałem na szkoleniu dobre kilka lat temu. Służył on wykładowcom do komunikowania się przy pomocy rzutnika. Sam program jest tak stary, że czytając jedną ze starszych implementacji oraz patrząc na warunkowe kompilacje, (program jest napisany w C, za warunkowe kompilacje odpowiada preprocesor) zrozumiałem, że przede mną jest kod nadający się do repozytorium Debian Stable muzeum. Sam banner, zgodnie ze swoją nazwą, wypisuje na wyjście banner (większe litery).
Instalacja pakietu zawierającego banner wymaga repozytorium EPEL.
sudo yum install -y epel-release && sudo yum install -y banner
Przykładowa wiadomość:
[root@localhost]$ banner "OBIAD 13?" ####### ###### ### # ###### # ### ##### # # # # # # # # # ## # # # # # # # # # # # # # # # # # # # ###### # # # # # # ### ### # # # # # ####### # # # # # # # # # # # # # # # # # ####### ###### ### # # ###### ##### ### #
FIGlet
FIGLet jest programem, który pomoże wygenerować naszą hakierską sygnaturkę. Sama nazwa pochodzi o autorów programu (ich imion i „letters”, czyli z angielskiego „litery”). Jak mówi jego manual – wyświetla on duże litery stworzone ze zwyczajnych znaków.
Instalacja w EuroLinuksie i innych Linuksach z rodziny Enterprise:
sudo yum install -y epel-release && sudo yum install -y figlet
Przykładowy Figlet dla naszej grupy hakierskiej.
Alex@rrw ~ ➞ figlet "GNU/hackers" ____ _ _ _ _ ___ _ / ___| \ | | | | | / / |__ __ _ ___| | _____ _ __ ___ | | _| \| | | | |/ /| '_ \ / _` |/ __| |/ / _ \ '__/ __| | |_| | |\ | |_| / / | | | | (_| | (__| < __/ | \__ \ \____|_| \_|\___/_/ |_| |_|\__,_|\___|_|\_\___|_| |___/
Co ciekawe figlet posiada wbudowane wsparcie dla dedykowanych fontów. Są one zapisane w plikach z rozwinięciem flf
. By zobaczyć domyślne fonty, możemy użyć następującego jednolinijkowca.
[Alex@SpaceShip ~]$ rpm -ql figlet | grep flf | sed 's:.*/::' | sed "s/.flf//" banner big block bubble digital ivrit lean mini mnemonic script shadow slant small smscript smshadow smslant standard term
Wykorzystujemy tutaj fakt, iż pakiety RPM zawierają listę plików, które dostarczają, reszta to obróbka danych.
Mając już wszystkie dostępne czcionki, możemy zrobić test. Poniższy skrypt wyświetli nam wszystkie czcionki z napisem „lorem ipsum”.
#!/bin/bash for i in $(rpm -ql figlet | grep flf | sed 's:.*/::' | sed "s/.flf//"); do echo "Czcionka: $i" figlet -f "$i" "Minus dolor labore eos eveniet ducimus vel." ; echo -e "\n\n" done
Ciekawostka ze świata DuckDuckGo – jedną z funkcji wyszukiwarki przygotowanej przez DuckDuckHack Community jest figlet
. Wystarczy więc wpisać w pasek wyszukiwania DDG figlet FooBar
, by dostać nasz napis w stylu figlet.
Cowsay
Następną, dobrze znaną metodą wypisywania, jest program cowsay
– czyli z ang. krowamówi. Co, jak sama nazwa nam podpowiada, wypisze krowę, która w jakiś sposób będzie chciała nam przekazać wiadomość.
Nie wszyscy użytkownicy cowsay
zdają sobie sprawę z tego, że razem z cowsay
mamy z reguły cowthink
(ang. krowamyśli) oraz wiele innych trybów pracy tego programu, łącznie z możliwością używania różnych obrazków.
cowsay
możemy zaczerpnąć z repozytorium EPEL:
sudo yum install -y epel-release && sudo yum install -y cowsay
Przykładowe cowsay
:
[Alex@SpaceShip ~]$ cowsay ala ma kota _____________ < ala ma kota > ------------- \ ^__^ \ (oo)\_______ (__)\ )\/\ ||----w | || ||
Niektóre tryby pracy (zmieniają oczy i/lub język naszej krowy), można je łączyć z niektórymi fontami (obrazkami).
-b
tryb Borg
-d
martwa krowa
-g
tryb chciwej krowy
-s
krowa jest „zjarana” (ang. stoned)
-t
tryb, w którym nasza krówka jest zmęczona
-w
tryb nakręconej krowy
-p
krowa w paranoi
-y
tryb, w którym krowa wydaję się młodsza.
Jak już wspomniałem wyżej, istnieje możliwość używania innych obrazków. Poniżej mamy kilka przykładów:
[Alex@SpaceShip ~]$ cowsay -f tux Linux _______ < Linux > ------- \ \ .--. |o_o | |:_/ | // \ \ (| | ) /'\_ _/`\ \___)=(___/
cowsay -f surgery Where are my testicles, Summer? _________________________________ < Where are my testicles, Summer? > --------------------------------- \ \ / \ \/ (__) /\ (oo) O O _\/_ // * ( ) // \ (\\ // \( \\ ) ( \\ ) /\ ___[\______/^^^^^^^\__/) o-)__ |\__[=======______//________)__\ \|_______________//____________| ||| || //|| ||| ||| || @.|| ||| || \/ .\/ || . . '.'.` COW-OPERATION
Same pliki obrazków są zlokalizowane w /usr/share/cowsay
i mają rozszerzenie .cow
. Poniższy skrypt iteruje po wszystkich plikach obrazków. Parametr -W
ustawia szerokość ekranu, w naszym przypadku na 100 znaków:
for i in /usr/share/cowsay/*cow; do cowsay -W 100 -f "$i" "I'm using: $i" done
Ansible a cowsay
Ansible posiada w sobie irytujący „easter egg”, czyli dowcip w oprogramowaniu/grze. W momencie, kiedy na systemie jest zainstalowany cowsay
, następne kroki wykonania naszego playbooka są nam przekazywane przez cowsay
, czyli krowę. W celu zmiany tego zachowania możemy ustawić flagę nowcows = 1
w ansible.cfg
. Jeśli chcielibyśmy ustawić to globalnie, możemy wyedytować /etc/ansible/ansible.cfg
.
Więcej na ten temat znajdziemy w jednym ze śmieszniejszych wątków, jakie zdarzyło mi się czytać na GitHubie.
https://github.com/ansible/ansible/issues/10530
Lolcat
Lolcat w slangu oznacza śmieszny obrazek z kotem. Dla przykładu „grumpy cat” – czyli w bardzo swobodnym tłumaczeniu „zrzędny kot”, był swojego czasu bardzo popularnym internetowym fenomenem.
lolcat
to także program, którego możemy użyć z linii komend. Jest to gra słów i znaczeń. Słów, bo połączenia wyrażenia lol
i unixowego programu cat
. Znaczeniowo, gdyż oznacza właśnie obrazek ze śmiesznym obrazkiem. Sam program napisany jest w Ruby. Pozwolę go sobie zainstalować z pomocą menadżera pakietów rubiego gem
. Celem lolcata jest wypisanie teksu na ekran w kolorowy sposób.
Instalacja:
sudo yum install rubygems -y && gem install lolcat
lolcat
może być używany jak normalny cat
. Jeśli chodzi o jego przełączniki, to moim ulubionym jest -a
, który wypisując każdą linię, tworzy kolorową animację zmiany koloru.
NMS
NMS – No More Secret – to polecenie, które „szyfruje” tekst, a następnie przedstawia go w animacji rozszyfrowania, naśladując film „Sneakers”.
Instalacja na EuroLinuksie w wersji 7 ogranicza się do wykonania kilku komend:
sudo yum install -y @development # gcc, git i make git clone [email protected]:bartobri/no-more-secrets.git cd no-more-secrets make all sudo make install
Użyteczną flagą jest -a
czyli autodecrypt. Wtedy odszyfrowanie pliku odbywa się bez oczekiwania na naciśnięcie przycisku.
Mały osobisty sekret – czyli jak wita mnie terminal
W celu dobrego nastawienia się do pracy, za każdym razem, gdy otwieram nową konsolę (sesje powłoki), automatycznie wykonuje się skrypt witający moją osobę.
W Bashu dodałem następujące do .bashrc
.
bash_greeting(){ banner -s "Welcome Alex!" | lolcat } # Tutaj są wszystkie ustawienia bash_greeting
Z kolei powłoka Fish posiada wbudowaną funkcję fish_greeting
, którą nadpisuję w pliku /.config/fish/config.fish
. Jej wywołanie nie jest konieczne, Fish zrobi to za nas.
function fish_greeting banner -s "Welcome Alex!" | lolcat end
Zakończenie
Na koniec chciałbym po raz kolejny podziękować Państwu za spędzenie czasu na naszym blogu. Następne Bash Bushidō będzie już dotyczyć trudniejszego technicznie tematu, jakim jest debugowanie i ustawianie pułapek.