ARP ping

Posted by Michał ‘mina86’ Nazarewicz on 6th of June 2008

Czas jakiś temu zainstała u mnie potrzeba sprawdzenia, na komputerze bez przydzielonego adresu sieciowego, czy komputer o danym adresie istnieje. Chciałem mianowicie, zależnie od wyników sprawdzenia skonfigurować sieć statycznie lub dynamicznie. Stosunkowo szybko doszedłem do wniosku, iż szczególną uwagę należy zwrócić na protokół ARP.

W protokole Ethernet urządzenia są rozpoznawane za pomocą adresów MAC, a więc, aby móc wysłać pakiet do komputera o danym IP należy najpierw poznać jego adres sprzętowy. Do tego właśnie służy protokół ARP (gwoli ścisłości, może on być wykorzystany również przy innych protokołach warstwy drugiej i trzeciej).

Jak to działa? Pierwsza strona rozsyła do wszystkich (na adres broadcast, tj.q FF:FF:FF:FF:FF:FF) zapytanie, wypełniając swój adres IP i MAC oraz adres IP, o który chce się zapytać. W odpowiedzi, druga strona wysyła ramkę z oboma adresami, swoimi i komputera wysyłającego pytanie.

Nie każdy zdaje sobie sprawę, iż protokół ten można wykorzystywać nawet jeżeli nie ma się swojego adresu sieciowego — wówczas w odpowiednie pole wpisujemy same zera. W niczym to nie przeszkadza — w żadnym momencie protokół warstwy trzeciej nie jest wszak wykorzystywany.

Warto wspomnieć, iż mechanizm ten jest wykorzystywany przez klienty DHCP, do sprawdzania (na wszelki wypadek), czy adres im nadany jest faktycznie wolny — nazywa się to Adress Conflict Detection.

Dla zainteresowanych aplikacja, która próbuje wykryć adres sprzętowy urządzenia o podanym adresie sieciowym.

Bezpieczeństwo logowania

Posted by Michał ‘mina86’ Nazarewicz on 10th of May 2008

czyli czemu OpenID jest trzy razy mniej bezpieczny od zwykłego hasła.

Double-checked locking pattern

Posted by Michał ‘mina86’ Nazarewicz on 29th of April 2008

Jakiś czas temu w pewnych okolicznościach poruszony został wzorzec double-checked locking singleton, który jak powszechnie wiadomo nie jest do końca poprawny. Wynikła z tego krótka dyskusja, której kompilację pozwolę sobie wkleić poniżej (gdyż nie jest ona ogólnie dostępna, a nie lubię, gdy informacje się marnują).

Ochrona stosu

Posted by Michał ‘mina86’ Nazarewicz on 8th of April 2008

Prezentacja, którą omawiałem w trakcie prezentacji na 5. Sesji Linuksowej traktująca o mechanizmie ochrony stosu polegającym na dodaniu strażnika pomiędzy adresem powrotu, a zmiennymi lokalnymi funkcji. Archiwum zawiera również proste programy, które były prezentowane w trakcie wykładu.

Stałość fizyczna i logiczna w C++

Posted by Michał ‘mina86’ Nazarewicz on 21st of March 2008

Chciałbym zaprezentować pewien tekst, który przygotowałem na jeden z przedmiotów na studiach. Traktuje on o modyfikatorze const i mutable oraz określa pojęcie stałości logicznej czyli niezmienności zachowania obiektu, gdy patrzymy z zewnątrz. Może komuś się to przyda. Czekam również na wszelkie komentarze.

Transmisja cyfrowa

Posted by Michał ‘mina86’ Nazarewicz on 13th of February 2008

Zainspirowany wpisem Michała Górnego postanowiłem napisać coś o transmisji cyfrowej. Wszak wielkości w naturze rzadko kiedy występują w postaci cyfrowej--aby się takiej doszukać należy zejść aż do poziomu cząstek elementarnych i analizowanie spinów i innych niezrozumiałych dla zwykłego człowieka parametrów. Jak więc to się dzieje, że komputer operuje na bitach? Co to w ogóle ta telewizja cyfrowa?

Komentarz to, czy może skrypt?

Posted by Michał ‘mina86’ Nazarewicz on 12th of February 2008

Przenosząc się na Joggera straciłem sporo czasu na dochodzenie czemu skrypty, które zamieszczałem nie działały tak jak powinny (tzn. nie działały w ogóle). Okazało się, że zależnie od typu MIME strony skrypty są różnie interpretowane. A dokładniej mechanizmy ochrony skryptów.

Ze względu na przeglądarki nie rozumiejące tagu script przyjęło się kod skryptu umieszczać w komentarzu. Przeglądarki wspierające skrypty domyślały się, że to tak naprawdę kod skryptu i jakoś sobie z tym radziły. Ku memu lekkiemu zdziwieniu odkryłem, że Opera i Firefox przestają wykonywać kod skryptu, gdy strona jest dostarczona jako application/xhtml+xml. Aby sprawę zbadać bardziej szczegółowo stworzyłem taką oto stronę testową:

Zabezpieczanie kodu strony WWW

Posted by Michał ‘mina86’ Nazarewicz on 12th of February 2008

Niektórzy uważają, że użytkownik czytający ich stronę nie powinien mieć dostępu do niczego poza ostatecznym efektem renderowania strony. Najczęściej jest to spowodowane chęcią zabezpieczenia kodu HTML lub obrazków przed kopiowaniem i używaniem ich do własnych celów.

O kryptografii słów kilka

Posted by Michał ‘mina86’ Nazarewicz on 12th of February 2008

Każdy człowiek ma jakieś tajemnice, których nie chce nikomu zdradzać. Równocześnie każdy ma sekrety, którymi chce się z kimś podzielić, ale tak, żeby nikt więcej ich nie poznał. Sytuacje takie mogą się zdarzać w codziennym życiu przeciętnego obywatela, w życiu dużej firmy lub całego państwa. Utrzymanie w tajemnicy pewnych tajemnic może się przyczynić do czyjegoś sukcesy lub porażki. Winston Churchill (1874-1965) przyznał, że złamanie kodów Enigmy przez trzech polskich matematyków (Mariana Rejewskiego (1905-1980), Jerzego Różyckiego (1906-1942) i Henryka Zygalskiego (1906-1978)) pozwoliło w znacznym stopniu skrócić czas wojny (i co za tym idzie, zmniejszyć liczbę ofiar).

Pierwsze kroki po zainstalowaniu Slackware’a

Posted by Michał ‘mina86’ Nazarewicz on 12th of February 2008

W niniejszym artykule opiszę czynności, jakie zazwyczaj wykonuję zaraz po zainstalowaniu Slackware’a. Nie są to rzeczy, które doprowadzają do idealnego zabezpieczenia, olbrzymiego wzrostu wydajności, czu użyteczności systemu, ale raczej kroki wyważone pomiędzy tymi aspektami. Oczywiście, jest to opis tego co ja robję, więc niekoniecznie wszystko, co zostało tutaj opisane, będzie Ci odpowiadać.

UPDATE 18/04/08: Dodane TMOUT.