Archiwum

Posts Tagged ‘proxy’

Badanie: adres zewnętrzny w sieci tor – Bash + SQL

3 września 2008 Dodaj komentarz

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

Skrypt w akcji

Skrypt w akcji

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.

Kategorie:linux Tagi: , , , , ,