Badanie: adres zewnętrzny w sieci tor – Bash + SQL
Ostatnimi czasy chciałem potrenować sobie programowanie w shellu i połączyć je z kwerendami w języku SQL. Po paru godzinach przygotowań postawiłem sobie cel (aby nie programować bezcelowo, czego nienawidzę):
Napisać aplikację, która będzie badać i zapisywać adresy zewnętrzne używane po wyjściu z sieci Tor.
Przygotowanie:
Pakiety do zainstalowania: mysql-server, tor, curl.
Implementacja:
Najpierw zebrałem informacje odnośnie kluczowych poleceń:
- echo „{KWERENDA}” | mysql ${baza} –user {uzytkownik} –password={haslo} – kwerendy SQL w bashu,
- date +%Y%m%d%H%M%S,
- curl http://checkip.dyndns.com/ -s -p –socks5 localhost:9050 – pozyskiwanie zew. adresu IP,
- http://api.hostip.info/get_html.php?ip=${adres_ip} – pozyskiwanie danych o położeniu adresu,
- INET_ATON(‚{adres_ip}) oraz INET_NTOA({pole_adresu_w_bazie}) – konwersja adresu do liczby ( obliczeniowo-wydajniejsze przechowywanie w bazie).
Po godzince skrypcik był gotowy i po następnej – wstępnie przetestowany:
#!/bin/bash
#Skrypt sprawdza adres zewnętrzny po przepuszczeniu polaczenia przez siec TOR
#nastepnie zapisuje go do bazy danych (mySQL)
#spassite.wordpress.com
baza=””
pass=””
user=””
OKRES=”15s”
#nie edytować poniżej tej linijki
OSTATNI=””;
while [ 1 ]; do
AKTUALNY=`curl http://checkip.dyndns.com/ -s -p –socks5 localhost:9050 | grep -o -E ‚[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+’`;
clear;
if [ „$AKTUALNY” != „$OSTATNI” ]; then
if [ -n „$AKTUALNY” ]; then
ISTNIEJE=`echo „SELECT count(adres) FROM adresy WHERE adres=INET_ATON(‚${AKTUALNY}’);” | mysql ${baza} –user ${user} –password=${pass} | grep -E ‚[0-1]+’`;OSTATNI=$AKTUALNY;
if [ $ISTNIEJE == 0 ]; then
CZAS=`date +%Y%m%d%H%M%S`;
LINK=”http://api.hostip.info/get_html.php?ip=${AKTUALNY}”
TMP=`curl -s ${LINK}`;
MIASTO=`echo $TMP | cut -d „:” -f 3 | tr -d ‚,. )(‚`;
KRAJ=`echo $TMP | cut -d „:” -f 2 | cut -d „(” -f 1 | tr -d ‚, .()’`;
echo „$CZAS $KRAJ „XXX” $MIASTO „XXX” $AKTUALNY „XXX” $OSTATNI”;
kwerenda=”INSERT INTO adresy(adres,data,kraj,miasto) VALUES INET_ATON(‚${AKTUALNY}’),NOW(),\”${KRAJ}\”,\”${MIASTO}\”);”;echo „Wykonuje kwerende: $kwerenda”;
echo „———-BLEDY?———–„;
echo „$kwerenda” | mysql ${baza} –user ${user} –password=${pass}
echo „———/BLEDY?———–”
else
echo „Adres juz istnieje w bazie”;
sleep $OKRES;
fi
fi
else
#akcje gdy taki sam
echo „Adres juz istnieje w bazie”;
sleep $OKRES;
fi
done
Do zrobienia (przy odrobinie czasu i chęci):
- wyświetlanie tabeli (narazie wywołuję ręcznie poprzez: watch ‚echo „select INET_NTOA(adres),data,kraj,miasto FROM adresy ORDER BY data DESC LIMIT 20;” | mysql zzz -u zzzz –password=zzzzzzz’ ),
- gromadzenie wiekszej ilości danych z WHOIS i magazynowanie w bazie,
- strona php z geolokalizacją.
Podsumowanie:
Skrypt spełnia swoje zadanie choć można go dopracować. Mam nadzieję, że komuś się przyda on sam, bądź jego część. Jak narazie rezultat sieci Tor to zmieniony adres co 10minut.
Najnowsze komentarze