CYKLICZNE zmienianie IP. MACa i nazwy komputera

Barca

Użytkownik
Dołączył
Marzec 10, 2004
Posty
449
Po przeczytaniu tego: http://gdl.hopto.org/~gdr/gdrwpl/macspoof.php doszedłem do wniosku że muszę coś takiego napisać "pod siebie"
smile.gif
2 główne różnice: napisałem to w bashu a nie c++ i po drugie, zamiast zwykłego pingu posłużyłem się arpingiem co pozwala zignorować fakt używania firewalli.
O co chodzi?? Skrypt zmienia cyklicznie IP naszego komputera na IP pozostałych kompów w LANie, oczywiście tylko tych akurat niewłączonych. Chciałem na początku by skrypt pingował bezpośrednio adresy MAC ale ponieważ nie udało mi się tego na razie rozwiązać, konieczne jest podawanie na początku skryptu (oprócz MACa i hostname) także IP komputera. Jest to o tyle uciążliwe że np. po restarcie routera IP się zmieniają i potrzebne jest odpowiednie pozmienianie wpisoół IP. Poza tym: miodzio
<
Oprócz podania tych 3 parametrów dla każdego kompa, wpisujemy też w zmiennych ile tych kompów w LANie jest (oprócz naszego) no i czas co jaki (w pewnym niewielkim przybliżeniu) ma następować zmiana IP. Potem... jazda!!
Skrypt arpinguje poszczegolne hosty z listy i jak znajdzie martwego to zmienia IP. MAC i hostname na jego. I tak co zadany czas. Dobrze by ten czas nie był przesadnie długi bo inaczej zabierzemy neta jakiemuś gościowi, który jeszcze przed momentem miał komp wyłączony. A co jeśli włączyliśmy program kiedy np. wszystkie hosty były dead a teraz wszystkie są włączone?? Nic się nie stanie
<
Skrypt wykryje sytuację gdy w sieci są mniej niż 2 "wolne" IP i powiadomi nas o tym alarmem, od razu automatycznie przywracając nasze oryginalne ustawienia. Oczywiście jeśli zostaną tylko 2 wolne IP to zmiana naszego IP następuje tylko w obębie tych dwóch. Program działa w nieskończoność, można go zawsze zakończyć wciskająć Enter.
A po co w ogóle taki skrypt?? Oczywiście ze względów anonimowości (nasze ew. wybryki obciążają pozostałych userów) ale nie tylko. Wyobraźmy sobie np. sieć, w której mamy statycznie przydzielone IP ("po MACach"). Mamy przydzielone tylko jedno IP, ale mamy 2 kompy i na obu chcielibyśmy mieć neta. Płacimy drugi abonament?? Niekoniecznie 8) Podłączamy je przez huba. Jeden komp będzie chodził na swoim poprawnym IP a drugi będzie korzystał z IP wyłączonych hostów. Jeśli sieć jest odpowiednio duża i odpowiednio dużo hostów zazwyczaj jest wylączonych ten numer przejdzie nawet z trzecim czy czwartym komputerem
smile.gif

Chciałem zrobić takie coś pod Windę, ale nie umiałem wyłączyć całkowicie interfejsu sieciowego. Zapraszam do komentarzy, jeśli dowiem się co z tym pingowaniem adresów MAC to przerobię odpowiednio skrypt
smile.gif


PS Mam nadzieję że nie zostanę przeklęty za tak długi post.

#!/bin/sh
#
# Zmienia IP cyklicznie na IP wylaczonych hostow
# Do prawidlowego dzialania wymaga arping (ktory z kolei potrzebuje libnet)
# Jesli nie ma przynajmniej dwoch wolnych MACow, program zakonczy dzialanie
# przywracajac oryginalne ustawienia IP, MACa i nazwy komputera.
#
# by Barca
#

# Zdefiniowanie zmiennych

CZAS=10 # czas miedzy zmianami IP (w sekundach)

LICZBA_HOSTOW=5 # liczba wszystkich komputerow w sieci z wyj. tego.
# Minimum to 2, poniewaz w innym przypadku nie ma sensu
# stosowac tego skryptu.

MOJE_IP=XXX.XXX.XXX.XXX # moje prawdziwe IP
MOJ_MAC=XX:XX:XX:XX:XX:XX # moj prawdziwy MAC
MOJA_NAZWA=XXXXXXXXXX # moja prawdziwa nazwa komputera

SASIAD_IP=XXX.XXX.XXX.XXX
SASIAD_MAC=XX:XX:XX:XX:XX:XX
SASIAD_NAZWA=XXXXXXXXXX

ZENEK_IP=XXX.XXX.XXX.XXX
ZENEK_MAC=XX:XX:XX:XX:XX:XX
ZENEK_NAZWA=XXXXXXXXXX

CHAKER_IP=XXX.XXX.XXX.XXX
CHAKER_MAC=XX:XX:XX:XX:XX:XX
CHAKER_NAZWA=XXXXXXXXXX

ADMIN_IP=XXX.XXX.XXX.XXX
ADMIN_MAC=XX:XX:XX:XX:XX:XX
ADMIN_NAZWA=XXXXXXXXXX

ULTRA_IP=XXX.XXX.XXX.XXX
ULTRA_MAC=XX:XX:XX:XX:XX:XX
ULTRA_NAZWA=XXXXXXXXXX

# Funkcje

function aktualne_dane
{
MOJE_AKTUALNE_IP=`/sbin/ifconfig | grep 'inet addr' | grep Bcast | awk '{print $2}' | awk -F: '{print $2}'`
MOJ_AKTUALNY_MAC=`/sbin/ifconfig | grep HWaddr | awk '{print $5; }'`
MOJA_AKTUALNA_NAZWA=`hostname`
clear
echo Twoje aktualne dane:
echo
echo -e "E[32m$MOJE_AKTUALNE_IP033[0m"
echo -e "E[32m$MOJ_AKTUALNY_MAC033[0m"
echo -e "E[32m$MOJA_AKTUALNA_NAZWA033[0m"
echo
}

function sprawdzenie_ip
{
echo $IP
if arping -c 1 -r $IP
then
ZAJETE_IP=`expr $ZAJETE_IP + 1`
nmblookup -A "$IP" | grep "<00>" | cut -f2 | awk -F" " '{print $1}' | head -n 1
echo -e "E[31mHost wlaczony033[0m"
else
echo $MAC
echo -e "E[32mHost wylaczony - przystepuje do zmiany IP033[0m"
ifconfig eth0 down
killall inetd
killall dhcpcd
ifconfig eth0 hw ether $MAC
hostname $NAZWA
ifconfig eth0 up
sh /etc/rc.d/rc.inet1
sh /etc/rc.d/rc.inet2
aktualne_dane
echo -ne "E[36mWcisnij Enter jesli chcesz zakonczyc dzialanie programu033[0m"
if read -t $CZAS response
then
koniec
else
echo
echo
echo -e "E[36mWyszukuje wolne IP...033[0m"
echo
fi
fi
}

function koniec
{
echo $MOJE_IP
ifconfig eth0 down
killall inetd
killall dhcpcd
ifconfig eth0 hw ether $MOJ_MAC
hostname $MOJA_NAZWA
ifconfig eth0 up
sh /etc/rc.d/rc.inet1
sh /etc/rc.d/rc.inet2
aktualne_dane
echo -e "E[36mNastapil powrot do prawidlowego IP, MACa i nazwy komputera033[0m"
echo
exit
}

function alarm
{
echo $MOJE_IP
ifconfig eth0 down
killall inetd
killall dhcpcd
ifconfig eth0 hw ether $MOJ_MAC
hostname $MOJA_NAZWA
ifconfig eth0 up
sh /etc/rc.d/rc.inet1
sh /etc/rc.d/rc.inet2
aktualne_dane
echo -n -----------------------
echo -ne "E[31m ALARM! 033[0m"
echo -----------------------
echo Uwaga! Wykryto mniej niż dwa wolne adresy MAC w sieci,
echo co oznacza, ze zmienianie IP jest niemozliwe. Przywro-
echo cone zostaly normalne ustawienia IP, MACa i nazwy kom-
echo putera. Musisz poczekac do czasu, gdy mniej komputerow
echo bedzie wlaczonych.
echo ------------------------------------------------------
while
X=0
do
guile -c '(write-char #bel)'
if
read -t 1 response
then
exit
fi
done
}

# Wlasciwy program

aktualne_dane
echo -e "E[36mWyszukuje wolne IP...033[0m"
echo

LICZBA_HOSTOW=`expr $LICZBA_HOSTOW - 1`
while X=0
do
IP=$SASIAD_IP && MAC=$SASIAD_MAC && NAZWA=$SASIAD_NAZWA
sprawdzenie_ip

IP=$ZENEK_IP && MAC=$ZENEK_MAC && NAZWA=$ZENEK_NAZWA
sprawdzenie_ip

IP=$CHAKER_IP && MAC=$CHAKER_MAC && NAZWA=$CHAKER_NAZWA
sprawdzenie_ip

IP=$ADMIN_IP && MAC=$ADMIN_MAC && NAZWA=$ADMIN_NAZWA
sprawdzenie_ip

IP=$ULTRA_IP && MAC=$ULTRA_MAC && NAZWA=$ULTRA_NAZWA
sprawdzenie_ip

if
[ $ZAJETE_IP -ge $LICZBA_HOSTOW ]
then
alarm
else
ZAJETE_IP=0
fi
done
 

el bongos

Użytkownik
Dołączył
Luty 6, 2004
Posty
334
hehe, Barca, w końcu dopiąłeś swego
<
,moje gratulacje, dobry pomysł
ale
<

zastosowanie widzę bardziej dla "anonimowości", bo z tymi dwoma kompami na chacie i jednym ip to wystarczy postawić routera i oba mają legalnie netai to pod dowolnym OSem, no ale twój pomysł jest "szybszy do zrealizowania"
pozdrawiam
 

Barca

Użytkownik
Dołączył
Marzec 10, 2004
Posty
449
W bashu bo na tyle na razie starczają moje umiejętności, a poza tym to w sumie najbardziej uniwersalny "język".
NAT?? No ale jak wg Ciebie?? Jak miałoby Ci to zapewnić większą anonimowość??
 

Andrevus

Użytkownik
Dołączył
Grudzień 12, 2002
Posty
213
brawo, dobre choc nie sprawdzalem, ja to wole prosty skypcik w bashu stowrzyc, mniej mnie to kosztuje a zasada dziala taka sama, tylko ze trzeba juz wskrypcie podac dane tj ip mac itp
Pozdrawiam
 
Do góry Bottom