W trzeciej części kursu hackingu pod Ubuntu pobawimy się pętlami. Jak zawsze, aby było ciekawiej, przetestujemy nasze umiejętności na jednym z dużych serwisów. Przypominam jednak, że naszym celem nie jest wyrządzenie jakichkolwiek szkód, hacking to nie to samo co crackig.
Co to są pętle?
Najprościej mówiąc pętle to struktury, które pozwalają na wykonywanie tej samej funkcji kilkakrotnie z różnymi parametrami.
Najprostsza pętla w bashu wygląda tak:
for x in 1 2 3Polecenie echo zostało wykonane 3 razy, za każdym razem zmieniał się parametr $x przez co otrzymaliśmy rezultat w postaci:
do
echo "czesc poraz "$x
done
Definiowanie ilości zapętleń w sposób "for x in 1 2 3 ..." nie jest zbyt wygodne, co gdybyśmy chcieli wyświetlić napis 100 lub więcej razy?Z pomocą przychodzi polecenie seq dzięki któremu wystarczy podać początkową i końcową liczbę:
for x in `seq 1 100`Tym razem napis zostanie wyświetlony 100 razy. Mam nadzieję, że dostatecznie dobrze pokazałem jak działają pętle i nikt nie będzie miał z nimi problemu.
do
echo "czesc poraz "$x
done
Pobieranie avatarów z Last.fm
Czas na moją ulubioną część, czyli wykorzystywanie zgromadzonej wiedzy w praktyce. Nasz skrypt pobierze avatary uczestników wybranej grupy w Last.fm. Do czego będą tu przydatne pętle? Otóż uczestnicy danej grypy zazwyczaj wyświetlani są na wielu stronach, gdyż zwyczajnie jest ich zbyt wiele by mogli się zmieścić na jednej. Za pomocą pętli będziemy się "przemieszczać" między stronami. Musicie wiedzieć, że aby stworzyć nawet tak prosty skrypt jak ten, należy dokładnie sprawdzić jak funkcjonuje. Dokładnie chodzi o to by dowiedzieć się jak zbudowane są linki do kont użytkowników, zdjęć czy tak jak w naszym przypadku do przeglądania użytkowników grup. W Last.fm przełączanie się między stronami podczas przeglądania można opisać wyrażeniem:
"http://www.lastfm.pl/group/"$GRUPA"/members?memberspage="$x
Zmienna $GRUPA to nazwa grupy, której avatary będziemy pobierać natomiast $x to strona w wynikach przeglądania. Z każdej strony wywołanej poprzednim poleceniem będziemy musieli "spisać" linki do avatarów. Zajmie się tylm linijka:
grep -o -e 'http://userserve-ak.last.fm/serve/.\{1,50\}\jpg' | uniq >> membersPolecenie grep wyodrębnia ze strony wszystkie linki znajdujące się na zdefiniowanym serwerze natomiast polecenie uniq dopisuje do pliku tekstowego o nazwie members odpowiednie linki.
Cała pętla będzie więc wyglądała tak:
for x in `seq 1 10`Właściwie najważniejszy element skryptu mamy już gotowy, teraz wystarczy tylko dodać odpowiednią zmienną i polecenie które pobierze obrazki z linków zapisanych w pliku tekstowym. Tak więc ostatecznie cały skrypt przyjmuje postać:
do
curl "http://www.lastfm.pl/group/"$GRUPA"/members?memberspage="$x| grep -o -e 'http://userserve-ak.last.fm/serve/.\{1,50\}\jpg' | uniq >> members
done
#!/bin/bashGrupa "Metal Polska" została oczywiście użyta tylko jako przykład, zmienną GRUPA można modyfikować dowolnie. Jeśli uważnie zapoznaliście się z tym artykułem to myślę, że macie już kilka własnych pomysłów jak wykorzystać zdobyte umiejętności :)
GRUPA="Metal+Polska"
for x in `seq 1 10`
do
curl "http://www.lastfm.pl/group/"$GRUPA"/members?memberspage="$x| grep -o -e 'http://userserve-ak.last.fm/serve/.\{1,50\}\jpg' | uniq >> members
done
wget `cat members`
Jeśli nie zrozumiałeś tego artykułu zapoznaj się z:
- Podstawy hackingu w Ubuntu, część 1
- Podstawy skryptów
- Pobieranie stron internetowych z Wget




jak zapisać np. tą najprostszą pętlę? php > .php python > .sy a to?
nie musi mieć rozszerzenia. może być tylko nazwa pliku. Ewentualnie .sh ale to nic nie zmieni jak dasz .jpg też zadziała. Jedyne co musisz zrobić to nadać prawo wykonywania dla tego pliku. Np.(chmod +x nazwapliku)