31 marca 2011

Apache FOP na Apache Tomcat cz.2

Jak człowiek sam nie pokombinuje, to sobie może szukać w necie i oczywistych rzeczy nie zobaczy... Wystarczyło ściągnąć źródła FOPa, przekompilować wszystko ant, przekopiować fop.war do katalogu webapps/ i już. W Slackware, wystarczyło ściagnąć i odpalić Tomcat'a, wcześniej kopiując skompilowany pod Debianem fop.war do katalogu webapps/ i... gotowe.

Apache FOP na Apache Tomcat cz.1

Zachciało mi się to odpalać... ech... jak na razie pod górę... a chciałem tylko generować sobie skomplikowane PDFy w przeglądarce... Niby w manualach wygląda to na dziecinnie proste, ale schody są od początku. Pierwsze próby na Debianie, niby gotowe paczki i tak dalej a jednak nie wychodzi... To co się będzie działo, jak będę próbował to odpalać na Slacku... Mam nadzieję, że się uda, bo jak zobaczyłem FOPa w akcji, to szczena mi opadła... A jak się nie uda, to się zrobi jakiegoś wrappera w Perlu i już...

29 marca 2011

Ubiquiti cz.1

Ponieważ ostatnio mieliłem temat skanowania mikrotików, przyszło mi do głowy aby zrobić podobny skaner do urządzeń Ubiquiti. Dostępny jest oficjalny skaner, wieloplatformowy, napisany w Javie, działający w trybie graficznym, a... ja pracuję w konsoli i trzeba było sobie z tym jakoś poradzić. Z tym wykrywaniem ubiquiti jest malutki problem, zmienny format ramki. Ponieważ mam możliwość przeskanowania kilku rodzajów tych urządzeń, nie było więc problemu z rozszyfrowaniem ich struktury. Szczegóły techniczne zostawię na część drugą...

Orinoco

Jak już jestem w temacie skanowania urządzeń, pierwszym skryptem do skanowania jaki napisałem, był skaner access pointów Orinoco. Oczywiście istniała aplikacja do ich skanowania - ScanTool. Problem z tą aplikacją polegał na tym, że uruchamiała się tylko pod... Windows 98. Dopiero po dość długim czasie, zapewne po hotfix'ach wydanych przez Microsoft do swoich systemów, zaczął działać poprawnie pod Windows 2000 i XP. Ale tym razem nie będę się tu rozpisywał na temat samego skryptu, ponieważ sprzęt który wykorzystywaliśmy, stał się ciężko osiągalny i do tego został wyparty przez rozwiązania oparte na urządzeniach MikroTik. Jednakże gdy pojawią się zainteresowani, udostępnię kod.

26 marca 2011

MNDP cz.2

Aplikacja Winbox w momencie rozpoczęcia wykrywania urządzeń, wysyła na adresie rozgłoszeniowym trzy ramki UDP o wartości 0x00000000, na porcie 5678. Urządzenia odpowiadają ramką w formacie MNDP, bardzo podobną do CDP. Ponieważ skrypt do wykrywania mikrotików napisałem w perlu, strukturę ramki przedstawię jako argument funkcji unpack, a wygląda ona następująco:
@s = unpack "H2H2H4(H4n/a*)*", $ramka;

             MNDP           CDP
$s[0]        ??             wersja ramki CDP
$s[1]        ??             time-to-live
$s[2]        age?           suma kontrolna
(
    $s[3]    typ            typ
    X
    $s[4]    wartość        wartość
)
...
W tabeli zawarto porównanie elementów struktury ramki MNDP z ramką CDP. Trzy pierwsze elementy struktury są ciężkie do zidentyfikowania, na podstawie wartości które tam się pojawiają. Element oznaczony X to długość następującego po nim łańcucha. Element ten jest automatycznie "wchłaniany" przez unpack, dlatego nie występuje jako osobny element w zwracanej tablicy. Element $s[3], jak sama nazwa wskazuje, zawiera typ przesyłanej wartości. Rozpoznane typy:
    0x0001    MAC interfejsu z którego urządzenie wysłało odpowiedź
    0x0005    identyfikator urządzenia (domyślnie MikroTik)
    0x0007    wersja RouterOS/SwOS
    0x0008    platforma
    0x000a    uptime w sekundach (unsigned long)
    0x000b    software-id - jeśli dotyczy
    0x000c    model RouterBOARD'a - jeśli dotyczy
    0x000d    niezidentyfikowany - zawsze pusty łańcuch
Więcej typów nie zaobserwowałem, być może jest ich więcej (sprawdzałem ramki dla różnych wersji oprogramowania RouterOS oraz SwOS). Grup, składających się z elementów $s[3] i $s[4] jest kilka. Ilość i ich rodzaj, uzależniona jest od wersji RouterOS/SwOS. Na razie to tyle, skrypt w kolejnej części.

24 marca 2011

MNDP cz.1

MNDP (MikroTik Neighbor Discovery Protocol) to protokół wykorzystywany przez Mikrotik'a do odnajdywania urządzeń w sieci. Jeśli ktoś interesował się produktami firmy Mikrotik, wie na pewno co to jest Winbox. Ale... Winbox działa tylko pod Windows. Potrzebowałem narzędzia, które wykryje mi urządzenia w linuksowej konsoli. Kiedyś na innym swoim blogu, umieściłem źródła pierwszej wersji takiej aplikacji. Miała ona poważne błędy, potrafiła wywołać Segmentation fault w pewnych specyficznych warunkach, do tego nie wykrywała urządzeń o adresie IP nie należącym do podsieci postawionej na maszynie, na której uruchamiano aplikację. Co ciekawe, wykrywała urządzenia bez ustawionego adresu IP. Głównym problemem do rozwiązania, była interpretacja ramki MNDP. Po wielu próbach, gdy udało się to rozgryźć, okazało się że to niemal to samo co CDP (Cisco Discovery Protocol) Więc jak wygląda struktura ramki MNDP w praktyce? O tym w następnym odcinku...

23 marca 2011

RRDTool i BOINC

Przyczyną powstania tego małego projektu, było posiadanie własnych statystyk BOINC. Zaczęło się od wyciągania danych z plików xml bezpośrednio z menadżera BOINC. Ale... wymagało to zainstalowania klienta BOINC i dodania do niego wszystkich monitorowanych projektów. Projekt ewoluował... i teraz dane są wyciągane bezpośrednio z schedulerów projektów. Zawsze można pobierać dane z istniejących baz danych, ale dane te są aktualizowane jedynie kilka razy na dobę albo i rzadziej. W tym przypadku, ograniczeniem na częstotliwość pobrań danych, są ustawienia samego schedulera projektu.

Wszystko dokładnie jest opisane na osobnej stronie http://boinc.mindc.net, którą napisałem już jakiś czas temu, więc nie będę tu się rozpisywał...