Strona używa cookies (ciasteczek). Dowiedz się więcej o celu ich używania i zmianach ustawień. Korzystając ze strony wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.    X

Kilka narzędzi sieciowych od Siebie

Witam.

Ostatnio zacząłem nieco programować w Pythonie i napisałem kilka narzędzi które być może przydadzą się komuś ;-)

wconfig

Link do projektu:
- wconfig w GITHub.com

Klient shellowy do WICD, potrafi skanować w poszukiwaniu sieci WIFI, zapisywać output w formacie XML (bardzo łatwo parsowalny).

Posiada dodatkowo opcję automatycznego podłączenia do pierwszej działającej sieci wifi - jest to idealna funkcja na tabletpc czy laptop będąc często w podróży, wystarczy dodać wpis wconfig -as do /etc/rc.local lub innego skryptu startowego a połączenie wifi zawsze zostanie samo nawiązane*.

* Działa zarówno z zabezpieczonymi jak i niezabezpieczonymi sieciami (wicd zapamiętuje hasło - jeżeli już używaliśmy sieci, to się do niej podłączy), wybiera sieć z największym sygnałem

webnull@webnull-gentoo-desktop wconfig $ ./wconfig.py --help wconfig for GNU/Linux, a wireless scanner with option to connect automaticaly to wireless, provide also XML output Usage: wconfig [long GNU option] [option] --xml, -x - output results as XML to be easy to parse --auto-connect, -a - output results as XML to be easy to parse --debug, -g - enable extra debugging --disconnect, -d - disconnect from network if connected --connect-by-mac, -m - connect to wireless network by mac adress --connect-by-name, -e - connect to wireless network name (essid) --help, -h this screen Examples: wconfig -s # scan for wireless networks and show results as plaintext wconfig -xs # scan for wireless networks and show results as parsable XML wconfig -d # disconnect from wireless network wconfig -ds # disconnect from wireless network and scan for network wconfig -m 00:00:00:00:00:00 # connect to wireless network by MAC adress wconfig -e my-network # connect to wireless network by bssid (network name) wconfig -i 0 # connect to first network from list, to list networks type wconfig -s wconfig -as # connect to first working network webnull@webnull-gentoo-desktop wconfig $ ./wconfig.py -s 0 XX:XX:XX:XX:XX:XX "webnull-home-network" WPA2 90% Master 7 *ACTIVE* 1 XX:XX:XX:XX:XX:XX "linksys" WPA2 27% Master 11 2 XX:XX:XX:XX:XX:XX "Litwa" WPA2 33% Master 11 webnull@webnull-gentoo-desktop wconfig $ ./wconfig.py -xs <?xml version="1.0" encoding="UTF-8"?> <networks> <network> <mac>XX:XX:XX:XX:XX:XX</mac> <name>webnull-home-network</name> <encryption>WPA2</encryption> <percentage_strength>90</percentage_strength> <mode>Master</mode> <channel>7</channel> <active>True</active> </network> <network> <mac>XX:XX:XX:XX:XX:XX</mac> <name>linksys</name> <encryption>WPA2</encryption> <percentage_strength>27</percentage_strength> <mode>Master</mode> <channel>11</channel> <active>False</active> </network> <network> <mac>XX:XX:XX:XX:XX:XX</mac> <name>Litwa</name> <encryption>WPA2</encryption> <percentage_strength>33</percentage_strength> <mode>Master</mode> <channel>8</channel> <active>False</active> </network> </networks>

Zastosowanie wconfig:
- Laptop/tablet, włączamy urządzenie i jesteśmy od razu podłączeni do internetu jeżeli jesteśmy w zasięgu sieci wifi która oferuje dostęp

- Zbieranie statystyk, można wysyłać skany sieci w postaci XML do zdalnego serwera który zbiera sobie listy sieci wifi na danym obszarze ;-)

wtop

Link do projektu:
- wconfig w GITHub.com

Program używa curses do wyświetlania grafiki, skanuje lokalne sieci wifi i wypisuje na ekranie.

Posiada historię w której zapamiętuje każdą sieć, nawet tą która jest poza zasięgiem, w historii sieć WIFI jest zapamiętywana zawsze z najlepszą jakością sygnału (jak przybliżymy się do access pointu danej sieci to do historii zostanie wpisana lepsza jakość sygnału).

Uwaga: Na niektórych kartach sieciowych potrafi zerwać połączenie wifi przez zbyt częste odświeżanie (co 6 sekund) listy z sieciami bezprzewodowymi. Testowano na dwóch kartach sieciowych, jedna słabsza (od zawsze znana z awarii sprzętowych) potrafi zerwać połączenie.

Zastosowanie wtop:
- Sprawdzanie zasięgu własnej sieci WIFI
- Sprawdzanie ile sieci można wyłapać na danym obszarze

scan-network

Link do projektu:
- wconfig w GITHub.com

Narzędzie do skanowania danego zakresu adresów IP, można nim przeskanować całą sieć lokalną.

Uwaga: Wymaga uprawnień administratora (do ICMP), za niedługo postaram się dodać wersję nie wymagającą uprawnień roota (używającej shellowego pinga zamiast implementacji pinga w Pythonie)

webnull-gentoo-desktop scan-network # ./scan-network.py --from=100 --to=110 --ip 192.168.1 Adresses to scan: 10 Ping 192.168.1.{100 to 110} Delay: 1 192.168.1.100 responds in 0.0013279914856 192.168.1.101 not responding, offline 192.168.1.102 responds in 0.000174999237061 192.168.1.103 not responding, offline 192.168.1.104 not responding, offline 192.168.1.105 not responding, offline 192.168.1.106 not responding, offline 192.168.1.107 not responding, offline 192.168.1.108 not responding, offline 192.168.1.109 not responding, offline 192.168.1.110 not responding, offline

Zastosowanie scan-network:
- Sprawdzanie czy jakiś intruz nie grasuje po naszej sieci (jeżeli DHCP dostępne)
- Sprawdzanie który z naszych komputerów w domu jest włączony i podłączony do sieci
- Atakujący publiczne sieci może wykryć ile jest komputerów w sieci, następnie sprawdzić je dodatkowo przy pomocy nmap czy innego narzędzia

W przygotowywaniu mam narzędzia:
+ Skaner do śledzenia sygnału bluetooth
+ Analizator pakietów zesniffowanych Wiresharkiem (filtr na HTTP - POST i GET, z wyciąganiem ciasteczek oraz pól z GET i POST, być może generowanie ciasteczek dla Firefoksa)
+ Upierdliwy, denerwujący rozsyłacz kartek elektronicznych (vCard) masowo przez bluetooth, czyli bluejacking ;-) 

Komentarze

0 nowych
Vifon   5 #1 28.03.2011 07:22

Widzę, że napisałeś kupę przydatnych skryptów! Jak tylko mój - znacznie prostszy - skrypt do łączenia mnie zawiedzie (oby nie szybko), na pewno wypróbuję ten pierwszy. Pozostałe dwa spróbuję obejrzeć dzisiaj wieczorem.

XeonBloomfield   5 #2 28.03.2011 11:36

Bardzo dobre skrypty.

BenderBendingRodriguez   6 #3 28.03.2011 14:33

Bardzo fajny pomysł, jest tylko jedno ale, czemu nie dołączyć się do developerów np. iwconfig zamiast tworzyć multum narzędzi które mało kto odkryje chyba że jakoś to wypromujesz. Według mnie najbardziej przydatne byłoby pomaganie przy aktywnych projektach, ulepszanie ich zamiast tworzenia nowych. Oczywiście jest to dobre dla prefekcjonowania swoich umiejętności nie powiem ale przypomina mi to multum dystrybucji linuxowych a 90% jest oparte o ubuntu :)

webnull   9 #4 28.03.2011 16:06

@BenderBendingRodriguez
wconfig oparty jest o wicd'a i służy do bardzo podstawowej konfiguracji sieci bez potrzeby jakiej kolwiek wiedzy o tym co się robi w porównaniu do iwconfig.

Poza tym piszę aplikacje w Pythonie a nie w C, dopiero uczę się języka i wykorzystuję zalety Uniksowych systemów - integralność systemu od strony interfejsu programistycznego.

"pomaganie przy aktywnych projektach, ulepszanie ich zamiast tworzenia nowych."

No ja podziękuję, jeżeli z iwconfig miałby wyjść scyzoryk do bluetooth, wifi, gsm itp. czyli coś jak gadu-gadu czy winamp.

Vifon   5 #5 28.03.2011 18:15

Właśnie przetestowałem wszystkie trzy.
Jak już mówiłem, wconfig nie jest mi na razie potrzebny, bo mam własny skrypt, ale wydaje się przydatny.
wtop może się przyda, bo ostatnio się zastanawiałem jak wygląda rozłożenie sieci koło mojego domu.
scan-network zapowiada się dla mnie najużyteczniej (tak długo jak mnie z uczelni nie wyrzucą za skanowanie sieci). Mógłby tylko nie wskazywać dokładnie na pythona2.7 (shebang), bo nie każdy używa tej wersji.
Będę śledzić rozwój.

Pytanie do fachowców od Gita. Używam go od niedawna i raczej jednoosobowo. Da się jakoś przez niego łatwo zasugerować poprawki bez żadnej autoryzacji ze strony webnulla?

@BenderBendingRodriguez
Uczy się, więc coś pisać musi. Lepsze to niż to, co ja ostatnio robiłem w ramach szlifowania mojego C++-fu. Program nie robił praktycznie nic (a to co robił nie było najmądrzejsze), ale użyłem prawie wszystkich znanych mi mechanizmów C++. Przy okazji powstał obiektowy wrapper na menu ncurses, jak ktoś chce to jest na githubie (login taki sam).

webnull   9 #6 28.03.2011 19:24

@Vifon
Tworzysz fork mojego repozytorium i zgłaszasz pull request, ja akceptuję pull request i merguję z główną gałęzią.

webnull   9 #7 28.03.2011 19:33

@Vifon
Ciekawe projekty masz, makefile-generator jest interesujący - w przyszłości skorzystam.

Odnośnie klienta MPD to fakt, nie wysiliłeś się - tzn. nie zastosowałeś biblioteki MPD tylko wywołujesz mpc po shellu (dodatkowe zależności - mpc, powolniej działająca całość).

Myślę, że mógłbyś spróbować napisać klienta MPD w Pythonie, jest gotowe API, przynajmniej w Gentoo widzę - dev-python/python-mpd.

webnull   9 #8 28.03.2011 19:48

@Vifon
Co byś powiedział na aplikację napisaną w PHP która monitorowałaby repozytoria GIT (GITHub posiada specjalną funkcję wywołującą np. zewnętrzny adres HTTP kiedy zostanie wniesiona poprawka) i budowała nowe wersje paczek dla wszystkich możliwych dystrybucji Linuksa? ; -)

To byłoby dosyć proste do zbudowania ale i jak bardzo użyteczne, oczywiście sam taki "builder" umieściłbym na GITHubie ;-)

Vifon   5 #9 28.03.2011 20:01

@webnull
Na razie to z sugestii mam tylko wspomnianą zmianę pierwszej linii, więc chyba nie ma co się bawić w forki, ale dobrze wiedzieć na przyszłość. Wreszcie wiem o co chodzi z tymi pull requestami.

Z tym MPD to nawet nie wiesz ile kombinowałem. Program prawie działał. Przy pierwszym przejściu przez pętlę chodził. Potem sypał NULLami na prawo i lewo. Patrzyłem na działający kod (mpc) i nie widziałem żadnych różnic. Możliwe, że problem leży w tym, że mpc wykonuje się raz (a to u mnie działa) i nie jest projektowane do wielokrotnego odczytu danych. Musiałbym popatrzeć np. na ncmpcpp, ale to już znacznie bardziej skomplikowany twór. Ostatecznie używam system() i tak pewnie będzie dopóki nie przepiszę tego syfu do Perla, bo planuję to od pewnego czasu w ramach jego nauki.

Vifon   5 #10 28.03.2011 20:05

@webnull
Hmm... To by było naprawdę niezłe! Ułatwiłoby instalację programów mniej zaawansowanym użytkownikom. Ja PHP niestety nie znam, więc Ci raczej nie pomogę, ale pomysł mi się bardzo podoba.

webnull   9 #11 28.03.2011 20:33

@Vifon
Ja PHP znam od ok. 5 lat, piszę aktualnie Swojego "frameworka" (coś opartego o kernel, nie tradycyjny framework - nie trzymam się standardów budowania frameworka, ważne aby był wygodny i elastyczny i bezpieczny) na nim oparłbym aplikację takiego "buildera" repozytoriów ;-)