Różnorodność okazjonalnych opisów na GG

Status w najpopularniejszym w naszym kraju komunikatorze jest znanym i szeroko stosowanym środkiem wyrazu. Przekonałem się dziś, że z okazji Świąt Wielkanocnych użytkownicy GG z listy moich znajomych miewają bardzo rozbieżne przemyślenia :)

"Surrexit Dominus vere, alleluja!"
"The Metal horde raise their swords and hail Iron, Steel, Metal"

Programy Microsoft’u wciąż potrafią zaskakiwać

Poniżej zrzut ekranu z SharePoint Designer’a - programu, który jest następcą FrontPage’a. Ustanowienie limitu wierszy w tabeli na 25 jest dla mnie zadziwiające. Czyżby taki niejawny sposób na zniechęcanie do (niepolecanego) konstruowania strony w oparciu o tabelkę?

Sharepoint

A tak w ogóle, to okazuje się, że jest to całkiem przyzwoity edytor. Próbowałem używać ostatnio Nvu (drętwa obsługa CSS), 1stPage (najnowsza wersja jest niestabilna), OpenOffice’a (kiepska jakość generowanego kodu) ale każdy z nich wprowadzał moim zdaniem zbyt dużo chaosu do kodu i nie zapewniał (dla mnie) odpowiedniego balansu pomiędzy wygodą edytora WYSIWYG a precyzyjnym panowaniem nad kodem. Edytor Microsoft’u jest pod tym względem całkiem dobry. Poniżej kilka spostrzeżeń:

  • Funkcja auto-uzupełniania jest bardzo przydatna. Podsuwa od razu możliwe nazwy atrybutów CSS i ich jednostki. Usprawnia edycję przyspieszając pisanie kodu.

  • Bardzo wygodny menedżer styli CSS. Umożliwia podgląd stylu oraz łatwe zaaplikowanie go do elementu.

  • Sprawdzanie syntaktyki kodu w locie

  • Generowanie kodu XHTML

  • Integracja z framework’iem ASP.NET (czego jeszcze nie miałem okazji przetestować)

  • Wersja 2007 dostępna w ramach Microsoft Academic Alliance

Podsumowując, jest to edytor warty polecenia.

Limit połączeń TCP w Windows XP SP2+ – fakty, mity i fachowe porady

W Service Pack’u 2 do Windows XP został wprowadzony limit współbieżnie wykonywanych prób nawiązania połączenia TCP. W Internecie oraz wielu czasopismach można spotkać ogromną ilość stwierdzeń, że ograniczenie to spowalnia działanie programów P2P, a ostatnio przeczytałem nawet (skądinąd w ponoć znaczącym miesięczniku) takie oto rewelacje, które skłoniły mnie do napisania tego wpisu:

  • Ograniczenie polega na tym, że może być wykonywanych jedynie 10 niezależnych sieciowych wywołań

  • Może się okazać, że nawet połowa dostępnego pasma nie jest przez to wykorzystana.

Już samo użycie sformułowania “wywołanie sieciowe” budzi pewne wątpliwości, czy autor wie na pewno o czym pisze. Abstrahując od sensowności tego sformułowania, nawet pisanie o “limicie połączeń” jest w tym przypadku sporym nadużyciem. W rzeczywistości wprowadzenie tego limitu ma znikomy wpływ na efektywność działania programów P2P a już z całą pewnością nie ma absolutnie żadnego wpływu na ograniczenie szybkości przesyłania danych. Jak zwykle diabeł tkwi w szczegółach, tym razem bardziej technicznych.

Fakty

W tytule użyłem cudzysłowu dla słowa “połączenie” ponieważ limit ten nie dotyczy właściwie połączeń, a jedynie prób ich nawiązania. Wspomina o tym sam Microsoft w tym artykule używając określenia “incomplete outbound TCP connection attempt”. Żeby zrozumieć o co chodzi warto znać podstawy funkcjonowania gniazd, zwanych potocznie socketami. Aby gniazdo mogło służyć do przesyłania danych musi ono znajdować się w stanie asocjacji pełnej. Polega to na tym, że ustalone zostały 2 pary: (adres IP docelowy, port docelowy) oraz (adres IP lokalny, port lokalny), a formalnie jeszcze protokół ale domyślnie chodzi tu o TCP. Po utworzeniu gniazdo nie znajduje się od razu w stanie asocjacji pełnej, tylko w półasocjacji - zazwyczaj nie został przydzielony port efemeryczny - czyli port lokalny, którego programista programując gniazdo nie widzi jawnie. Wspominany limit dotyczy takich właśnie gniazd. W takim stanie gniazdo nie ma możliwości przesyłania danych, połączenie nie zostało jeszcze nawiązane z różnych przyczyn. Logicznym wnioskiem jest tutaj fakt, że skoro nawet nie można mówić o transmisji danych, to tym bardziej o jej szybkości ani jakichkolwiek ograniczeniach. Transmisja zachodzi jedynie przez w pełni zasocjowane gniazda. To, że “próby” nawiązania połączenia - czyli gniazda w stanie półasocjacji są ograniczone liczbowo do 10 w danej chwili nie ma absolutnie żadnego wpływu na gniazda w pełni zasocjowane przez które przesyłane są dane.

Mity

Przede wszystkim zaznaczam, że zarówno w systemie Windows XP SP1, jak i SP2 oraz SP3 zdarzało się uzyskać 100% wykorzystanie przepustowości łącza. Nie zaobserwowałem absolutnie żadnych spowolnień transmisji w przypadku klienta Azureus po zainstalowaniu SP2. Tłumaczenie, że limit ten powoduje spowolnienia jest nieprawdą. Nie twierdzę, jednak, że fakt wprowadzenia limitu nie wpłynął w żaden sposób na zachowanie tych programów. Może to być jednak spowodowane sposobem, a jaki program reaguje na brak możliwości wykonywania kolejnych prób połączeń - a więc jest to już kwestia takiego zaimplementowania mechanizmu połączeń w programie, aby był on świadomy istnienia limitu. W żadnym wypadku jednak nie można winić systemu operacyjnego za spowolnienie transmisji, czy też (co już jest kompletną bzdurą) wykorzystanie łącza jedynie w połowie.

“Fachowe porady”

Istnieje cała masa programów “patch’ujących” sterownik trybu jądra tcpip.sys. Owszem, rozumiem, że zlokalizowanie wspominanej liczby 10 w pliku binarnym jest wykonalne niemalże ze 100% pewnością, że liczba ta dotyczy tego właśnie limitu. Nie zapominajmy jednak, że ingerencja w binarną skompilowaną postać sterownika trybu jądra może doprowadzić do nie dających się przewidzieć konsekwencji dla systemu operacyjnego. Wspomnę tutaj chociażby o mechanizmie SFC, który dba o spójność plików systemowych - nie mamy gwarancji jak zareaguje on na taką zmianę. Nie mamy również gwarancji, co się stanie gdy firma Microsoft uaktualni sterownik tctpip.sys. Zaaplikowanie starego patch’a na ewentualnie zaktualizowany sterownik prawie na pewno spowoduje awarię systemu.

Podsumowanie

Zdecydowanie odradzam więc jakiekolwiek “łatanie” plików systemowych przy użyciu nieautoryzowanych przez Microsoft narzędzi. Radzę natomiast podchodzenie z pewnym dystansem do publikowanych przez “specjalistów” porad, w których brak jest sensownych uzasadnień technicznych, a jedynie mgliste sformułowania w rodzaju “wywołanie sieciowe” i modne wśród tej klasy “speców” narzekanie na firmę Microsoft.

Zarządzanie UPnP

Wszystkie współczesne routery domowe posiadają opcję konfiguracji przez UPnP. Wbrew pozorom nie ma to nic wspólnego z technologią Plug and Play która służy do autokonfiguracji podłączanych do komputera urządzeń (ktoś jeszcze pamięta ręczne wpisywanie numerów przerwań i kanału DMA? ;) ). Universal Plug and Play to zbiór protokołów umożliwiających wysłanie do routera polecenia o tymczasowej zmianie w konfiguracji NAT. Rozwiązanie to jest stosowane m. in. w kliencie Bittorrent’a Azureus (nie mogę przyzwyczaić się do nowej nazwy - Vuze) oraz kliencie sieci eDonkey - eMule. Zaletą tego rozwiązania jest wygoda - program sam konfiguruje sobie tymczasowe (tj. znikające po restarcie urządzenia) przekierowanie portów i bez problemu przyjmuje połączenia przychodzące. Często można spotkać nie do końca uzasadnione “porady”, że stosowanie UPnP jest niebezpieczne. Owszem, włączając tę opcję w routerze musimy być świadomi, że pomimo ręcznej konfiguracji NAT uruchomiony na komputerze w sieci lokalnej program może stworzyć sobie nową własną regułę. Jednak byłbym daleki od twierdzenia, że opcja sama w sobie jest potencjalnie niebezpieczna. Przy stosowaniu podstawowych zasad bezpieczeństwa (aktualizacje oprogramowania i systemu operacyjnego, program anty-wirusowy i anty-spyware, firewall) w połączeniu ze zdrowym rozsądkiem, korzystanie z UPnP przynosi więcej korzyści niż wad.

Znalazłem na CodeProject program, który umożliwia wyświetlenie oraz edycję wspomnianej tymczasowej konfiguracji NAT. Jest to UPnP Port Forward Utility.

UPnP

Może on być przydatnym narzędziem gdy zachodzi potrzeba szybkiego (bez konieczności logowania się do routera) wprowadzenia zmian w przekierowaniu portów, albo po prostu zweryfikowania co też poustawiały sobie uruchomione programy. Z moich eksperymentów zauważyłem, że do poprawnego działania programu konieczne jest zainstalowanie interfejsu UPnP ze składników Windows (w miejscach sieciowych pojawia się wówczas ikonka routera).

UPnP Windows XP

Zarządzanie telefonem z poziomu komputera

Zagadnienie dotyczy sposobów w jaki z poziomu komputera możemy edytować kontakty i kalendarz w telefonie komórkowym. Zalety takiego rozwiązania są oczywiste: widok na całym ekranie jest bardziej przejrzysty i pozwala “ogarnąć” więcej, możliwość zrobienia kopii zapasowej na wypadek utraty danych lub przypadkowego skasowania, współdzielenie danych z innymi użytkownikami etc.

Nie będę rozpisywać się na temat wad i zalet oprogramowania do telefonów z którym miałem do czynienia. Postaram się streścić to w kilku zdaniach. Program dostarczany za darmo do telefonów Nokia mówiąc delikatnie nie spełnia swojego zadania i ma małe możliwości (kontakty widoczne jako pliki w oknie “Mój komputer”?), oprogramowanie firm trzecich jest po pierwsze płatne, po drugie albo coś w nim nie działa albo czegoś brakuje. Po rozpoznaniu kilku tego typu narzędzi stwierdziłem, że nie tędy droga i więcej nie będę zagłębiać się w tego typu oprogramowanie.

Najciekawszym rozwiązaniem okazały się darmowe internetowe usługi synchronizacji przez SyncML. Jest to standard obsługiwany przez większość telefonów, więc korzystać może praktycznie każdy. Wygląda to w ten sposób, że po założeniu konta albo dostajemy sms’s z konfiguracją do telefonu albo jesteśmy instruowani co i gdzie wpisać do telefonu, żeby zaczęło działać. Po udanym skonfigurowaniu wybiera się w telefonie opcję synchronizacji, następuje transfer jedynie kilkudziesięciu KiB i możemy edytować swoje dane z poziomu przeglądarki internetowej na naszym koncie i dokonywać synchronizacji z telefonem. Synchronizacja działa w obie strony i przepisuje zmiany z tego miejsca (telefon, konto w serwisie) w którym dane są najbardziej aktualne (trzeba zadbać o poprawne ustawienie stref czasowych). Należy więc uważać na próbę synchronizacji pustego zbioru, bo o ile nie jest to pierwsza synchronizacja a skasowanie nastąpiło później niż edycja w drugim miejscu to w tym drugim miejscu też nastąpi skasowanie - ponieważ zostanie uznane za stan najbardziej aktualny.

Do synchronizacji kontaktów używam mobical.net

Mobical

 

Natomiast do kalendarza scheduleworld.com, którego największą zaletą jest możliwość synchronizacji z Google Calendar co w konsekwencji daje możliwość synchronizacji tego ostatniego z telefonem komórkowym (bardzo przydatne).

Mobical

Na koniec kilka uwag:

  • Słyszałem o podobnej usłudze SyncML oferowanej przez samego Google. Tyle tylko, że dla telefonów Nokia nie jest obsługiwany kalendarz

  • Program CalSyncS60 dla Symbiana służący do synchronizacji z kalendarzem Google chociaż wygląda na dobre narzędzie, nie działa prawidłowo na dzień dzisiejszy, więc go nie polecam

  • Inna usługa tego typu jak GooSync w wersji darmowej ma poważne ograniczenia - synchronizacja kalendarza tylko na 30 wprzód

  • Nie wspominałem o oprogramowaniu dla aparatów SonyEricsson ponieważ interesuje mnie tylko Nokia. Niemniej jednak podobno znakomitą aplikacją dla tych telefonów jest MyPhoneExplorer.

  • Jako ciekawostkę podaję, że firma Microsoft oferuje darmowe narzędzie do wykonania kopii zapasowej całego telefonu - Phone Data Manager.

  • Owszem, wiem że ScheduleWorld obsługuje też kontakty, a MobiCal obsługuje też kalendarz :). Używam obu ponieważ MobiCal znalazłem jako pierwszy i się przyzwyczaiłem, natomiast ScheduleWorld współpracuje z Google a Mobical nie.

Napisz 100 razy

W czasach dzieciństwa zdarzało się być terroryzowanym przez niekoniecznie kompetentne nauczycielki poleceniami w stylu “za karę napisz w zeszycie X razy…”. Dynamiczny rozwój tzw. Web 2.0 oraz rozmaitych usług i aplikacji webowych niewątpliwie stwarza użytkownikom ogromne możliwości. Gdy natknąłem się na poniżej prezentowaną stronę pomyślałem, że trochę żałuję, że te możliwości nie były dostępne gdy byłem dzieckiem :)

Zasadniczo nie mam zamiaru prezentować na blogu startup’ów (modne ostatnio słowo), ponieważ robią to już inni blogerzy - ale strona yourfonts.com spodobała mi się wyjątkowo.

Chodzi o to, że możemy naprawdę łatwo stworzyć czcionkę z naszym własnym odręcznym pismem. Strona udostępnia specjalny szablon, który należy wydrukować a następnie pracowicie wypełnić pisanymi literkami uważając na zaznaczone linijki. Gotowy szablon skanuje się w rozdzielczości 300 dpi i wgrywa na stronę. Po chwili otrzymujemy plik z czcionką w formacie TTF.

Z pewnością można wymyślić wiele mniej lub bardzie poważnych zastosowań posiadania własnej czcionki. Ja pomyślałem na razie o jednym, całkiem sensownym - czasem może zajść potrzeba oszacowania ile stron zajmie dany tekst pisany odręcznie.

Font

PS. Istotną może być informacja, że rozmiar wyglądający jak oryginał to w moim przypadku wyszło 18pt.

Podłączenie do sieci przez wiele interfejsów

Zastanawiałem się kiedyś co się stanie gdy podłączy się komputer do sieci z wielu “źródeł”. Co prawda rzadko się zdarza, aby w komputerze desktopowym było wiele kart sieciowych, ale już w laptopach zazwyczaj są 2 urządzenia sieciowe - zwykła karta sieciowa Ethernet i karta bezprzewodowa. Nasuwa się pytanie czy można uruchomić oba połączenia jednocześnie. Okazuje się, że można - system wybierze “lepsze” z nich i przez nie będą nawiązywane połączenia.

Szczegółowe wyjaśnienie można wydobyć z tablicy routingu. Jest to tabela zawierająca informacje o tym gdzie i którędy przekazać informacje kierowane pod dany adres sieciowy. Podczas przesyłania pakietów danych pod konkretny adres analizowane są po kolei wpisy z tablicy routingu i na tej podstawie podejmowana jest decyzja o trasie jaką ten pakiet wędruje. Jeżeli żaden z wpisów tablicy “nie pasuje”, to pakiet kierowany jest do bramy domyślnej czyli w przypadku sieci lokalnych zazwyczaj do routera który podłączony jest do Internetu. Tablicę routingu w systemie Windows (w sumie to nie tylko) można wyświetlić poleceniem route print

Poniżej przykładowo ekran z moją tablicą:

Interfejsy

Z tablicy wynika, że połączenia “do świata” kierowane są do bramy domyślnej - mojego routera - na 192.168.0.1. Wynika również, że połączenia do podsieci 192.168.0.0 (czyli w konsekwencji przez bramę domyślną do świata) realizowane są przez 2 interfejsy: 192.168.0.187 i 192.168.0.196. Ten drugi to Ethernet. On właśnie ma mniejszą metrykę, czyli szacunkowy koszt połączenia. System wybiera połączenia z mniejszą metryką. Usuwając ręcznie jeden z wpisów poleceniem route można by upewnić się, że mimo fizycznego podłączenia przez 2 interfejsy używany jest tylko jeden. Tablica routingu jest aktualizowana automatycznie po ustanowieniu połączenia na dowolnym interfejsie sieciowym.

Praktyczny wniosek jest taki, że jeżeli mamy komputer podłączony do sieci bezprzewodowo i dodatkowo podłączymy go również do tej sieci kablem, to transmisja będzie się odbywała właśnie po kablu pomimo aktywnego połączenia bezprzewodowego.

Ciekawa informacja w nietypowym miejscu

W ubiegłym semestrze podczas zajęć z przedmiotu Technika Mikroprocesorowa zajmowałem się programowaniem mikrokontrolera MSP430 firmy Texas Instruments. Jednym z naszych projektów był zegar cyfrowy. Przy pisaniu programu do układu korzystałem z dokumentacji biblioteki zegarowej firmy Texas. Znajduje się tam ciekawa informacja - często zdarzyło mi się zastanawiać kiedy następują zmiany czasu z zimowego na letni i odwrotnie. Okazuje się, że jest to precyzyjnie określone dla całej Unii Europejskiej i oddzielnie dla USA:

Begins (hour +1) Ends (hour -1)
US First Sunday in April at 2am Last Sunday in October at 2am
EU Last Sunday in March at 1am Last Sunday in October at 1am

Wydobywanie ciekawych informacji z zakładek i historii Firefoksa 3

W przeglądarce Firefox od wersji 3 funkcjonalność zakładek i historii została zaimplementowana jako relacyjna baza danych SQLite. Wiąże się to ze znacznym zwiększeniem możliwości przeszukiwania zgromadzonych w ten sposób informacji, choć niestety z elastyczności tej nie można w pełni korzystać bezpośrednio z przeglądarki. Z Internetu korzystam w dość intensywny sposób, w przeglądarce mam ponad 2000 zakładek i codziennie zdarza się dodawać nowe. Chociaż staram się to jakoś zorganizować według folderów i etykiet, jednak do pełni szczęścia potrzebowałem 2 informacji:

  • Zobaczyć zakładki dodane w ciągu ostatnich x dni

  • Zobaczyć w jakim folderze znajduje się zakładka (prawdopodobnie moje nazewnictwo folderów nie sprawdza się rewelacyjnie ;) )

Ponieważ jest to baza danych, od razu przychodzi na myśl potencjalna możliwość zadawania zapytań w języku SQL. Poniżej opisuję narzędzia którymi można to zrobić, ich sposób użycia oraz kod przykładowych zapytań SQL.

Znaleziony i używany przeze mnie program do otwierania bazy danych SQLite to SQLite Browser. Nie wymaga on instalacji, bezpośredni link spod którego można go pobrać jest tutaj.

Dodatkowe informacje i narzędzia (które jednak nie są konieczne do wykonania tej “sztuczki”), w tym również fizyczny schemat bazy danych użytej w Firefoksie znajduje się na http://www.firefoxforensics.com/.

Pierwszą czynnością jaką należy wykonać jest skopiowanie (dla bezpieczeństwa) pliku bazy danych w inne miejsce spod, którego będzie on otwierany w SQLite Browser. Może być konieczne włączenie widoku ukrytych plików w opcjach folderów Windows. Plik nazywa się “places.sqlite” i znajduje się

  • W systemie Windows XP:

    C:\Documents and Settings\<nazwa użytkownika>\Application Data\Mozilla\Firefox\Profiles\<ciąg znaków i cyfr>\
    
  • W systemie Windows Vista:

    C:\Users\<nazwa użytkownika>\AppData\Roaming\Mozilla\Firefox\Profiles\<ciąg znaków i cyfr>\
    

Po uruchomieniu SQLite Browser otwieramy skopiowany plik “places.sqlite” i przechodzimy do zakładki Execute SQL. W pierwszym okienku wklejamy kod zapytania SQL a w kolejnym okienku baza danych podaje wynik. Poniżej kilka przykładowych zapytań.

1. Folder zawierający daną zakładkę. Nazwę szukanej zakładki wpisujemy pomiędzy znaki %, tutaj jest to “codeflux”.

SELECT title FROM moz_bookmarks WHERE id = (SELECT moz_bookmarks.parent        
from         
moz_bookmarks, moz_places         
where moz_places.url like '%codeflux%'         
AND         
moz_bookmarks.fk = moz_places.id       
AND        
moz_places.visit_count > 0)

2. Zakładki dodane w ciągu ostatnich x dni. Tutaj sprawa może być trochę bardziej skomplikowana, jeśli wśród naszych zakładek znajdują się kanały RSS. Z punktu widzenia bazy danych są one nieodróżnialne od zwykłych zakładek, a ponieważ kanały RSS aktualizują się bardzo często może się okazać że większość wyniku tego zapytania będą stanowić jakieś pozycje np. aktualności z kanału RSS. Niemniej jednak ten sposób korzystania z RSS jest mało efektywny (polecam Google Reader) i raczej rzadko używany, więc nie powinno to stanowić problemu. W poniższym zapytaniu liczba dni to 4.

select datetime( (dateAdded/1000000), 'unixepoch' ) , moz_bookmarks.title, moz_places.url, moz_bookmarks.parent        
from         
moz_bookmarks, moz_places         
where ( strftime('%s', 'now') - strftime('%s', datetime( (dateAdded/1000000),'unixepoch')) < 4*86400) AND         
moz_bookmarks.fk = moz_places.id       
AND        
moz_places.visit_count > 0

3. 20 najczęściej odwiedzanych stron.

SELECT *        
FROM moz_places         
ORDER by visit_count DESC         
LIMIT 20

4. Liczba unikatowych stron internetowych. Z moich obserwacji wynika, że chodzi o liczbę różnych stron w tym sensie, że wszystkie odwiedzane podstrony liczą się raz - tak jak strona główna. Przykładowo - wejście na stronę Onet.pl i przeglądanie działów prognoz pogody, wiadomości, sportu również będzie się liczyło raz - ponieważ wszystko to jest “w obrębie” strony Onet.pl. Liczba jest tylko przybliżona, bo mogą wliczyć się pobierane pliki oraz niektóre długie i nietypowe adresy mogą policzyć się kilka razy chociaż są podstronami. Z resztą widać to na liście tych stron - punkt 4.

SELECT COUNT(*) FROM ( SELECT count(moz_places.rev_host), url        
FROM moz_places, moz_historyvisits         
WHERE moz_places.id = moz_historyvisits.place_id         
GROUP BY moz_places.rev_host         
ORDER BY url ASC )

5. Jak wyżej, tylko lista tych stron

SELECT count(moz_places.rev_host), url        
FROM moz_places, moz_historyvisits         
WHERE moz_places.id = moz_historyvisits.place_id         
GROUP BY moz_places.rev_host         
ORDER BY url ASC

6. Lista wszystkich adresów internetowych przechowywanych w historii

SELECT url, datetime( (visit_date/1000000), 'unixepoch' )        
FROM moz_places, moz_historyvisits         
WHERE [moz_places.id](http://moz_places.id) = moz_historyvisits.place_id        
ORDER by visit_date DESC

Kilka nieco innych zapytań znajduje się na wspominanej wyżej stronie Firefoxforensics. Zachęcam do różnych twórczych eksperymentów z formułowaniem zapytań - jeśli uda się napisać coś ciekawego zapraszam do komentarzy. Polecam raczej wzorowanie się na istniejących zapytaniach niż próbę zrozumienia struktury bazy danych - widać, że jest ona zdenormalizowana (zapewne aby zapewnić szybkość działania nowego paska adresu) i przez to dość niejasna. Co prawda pewnie na deweloperskich stronach Mozilli znajduje się dokumentacja, ale osobiście nie miałem ochoty w to wnikać. Bardzo dobrym (na początek) źródłem wiedzy o języku SQL jest dział na stronie W3Schools.

Zabezpieczenie profilu Firefox’a i nie tylko

W różnego rodzaju poradnikach dość często można spotkać różne pomysły na zabezpieczenie dostępu do całego profilu Firefox’a hasłem. Najskuteczniejsze z nich są te, które zalecają utworzenie nowego profilu na zaszyfrowanej partycji TrueCrypt - uruchamiając przeglądarkę z opcją -p wyświetli się menedżer profili w którym można je tworzyć w nowych miejscach i usuwać. Ale tworzenie nowego profilu i próba przeniesienia zawartości starego do tego nowego może być czynnością niekoniecznie wygodną. Stosując proste narzędzie można skutecznie zabezpieczyć istniejący profil, a idąc dalej - można pokusić się o próbę zabezpieczenia dostępu do innych aplikacji np. profilu starego (tzn. starszego niż wersja 8, bo w nowych wersjach zaimplementowano już szyfrowanie profilu) Gadu-Gadu.

Słów kilka o TrueCrypt. Jest to znane i bardzo cenione opensource’owe narzędzie szyfrujące. Sposób użycia jest bardzo prosty - w TrueCrypt tworzymy plik o zadeklarowanym rozmiarze który później montuje się pod wybraną literę napędu dyskowego w Windows. Aby zamontować napęd trzeba oczywiście podać hasło. Fizycznie więc nie jest to prawdziwy dysk, TrueCrypt sprawia, że zawartość tego zaszyfrowanego pliku jest widziana jako dysk do którego dostęp jest chroniony hasłem. Jedynym praktycznym użytkowym mankamentem jest brak możliwości zwiększenia rozmiaru raz utworzonego “pliku-dysku”, więc dobrze jest szacować rozmiar z solidnym zapasem.

Sztuczka polega na zastosowaniu dowiązania twardego do profilu znajdującego się na zaszyfrowanej partycji w miejsce aktualnego katalogu profilu. Taka “konstrukcja” będzie przezroczysta dla samego programu, nie następuje żadna ingerencja z pliki profilu - jedynie przeniesienie ich w nowe bezpieczne miejsce, a w poprzednim miejscu postawienie “odnośnika” który automatycznie kieruje dostęp w nowe miejsce.

Dowiązanie twarde zwane częściej po prostu hard-linkiem jest “wskaźnikiem” na inny plik albo katalog. Z użytkowego punktu widzenia plik fizycznie znajduje się w jednym miejscu na dysku ale widziany jest pod swoją oryginalną nazwą oraz pod nazwami “wskaźników” - wyglądają one identycznie jak pliki - użytkowo są mu równoważne. Aby odróżnić hard-link od oryginału trzeba użyć dodatkowych narzędzi.

W systemie Windows do tworzenia hard-linków (i zarazem odróżniania ich od właściwych plików) polecam konsolowe narzędzie Junction firmy Sysinternals. W systemach Vista i nowszych można również użyć wbudowanego polecenia mklink.

Podsumowując - aby zabezpieczyć swój profil dowolnej aplikacji np. Firefoxa należy:

  1. Utworzyć zaszyfrowany “plik-partycję” w TrueCrypt. Dobrym rozmiarem powinno być 100MB chociaż to zależy jaki rozmiar pamięci podręcznej został ustawiony z przeglądarce. Przykładowo mój profil zajmuje ok 60MB przy pamięci zadeklarowanej na 32MB. W każdym razie tutaj lepiej jest wybrać za duży rozmiar niż zbyt mały.

Zlokalizować swój profil - np. w przypadku Firefox’a znajduje się on w katalogu

c:\Documents and Settings\<nazwa użytkownika>\Application Data\Mozilla\Firefox\Profiles\<ciąg losowych liter i cyfr>
  1. W systemie Vista zamiast “Documents and Settings” jest to katalog “Users”.

  2. Skopiować profil na zaszyfrowany dysk TrueCrypt.

  3. Dla bezpieczeństwa, aby mieć pewność, że poprzedni profil nie zostanie odzyskany skasować go przy użyciu narzędzia do bezpiecznego kasowania np. Sdelete, albo O&O SafeErase.

  4. W miejscu katalogu z profilem utworzyć hard-link o nazwie profilu (ciąg liter i cyfr) prowadzący do kopii profilu na partycji zaszyfrowanej.

Zastosowanie takiej sztuczki uniemożliwia dostęp do wszelkich informacji związanych z naszą działalnością internetową - historii przeglądania, haseł, zakładek etc. osobie niepowołanej. Nie znam się dokładnie na szyfrowaniu, ale z tego co wiem, algorytmy szyfrujące stosowane w TrueCrypt uznaje się obecnie za niemożliwe do złamania, więc myślę, że jest to skuteczny sposób na zabezpieczanie swoich danych. Warto zauważyć, że w ten sposób możemy zabezpieczać programy, które same w sobie nie posiadają możliwości ochrony dostępu hasłem.

PS. Nie wiem czy podany sposób funkcjonuje w systemach uniksopodobnych. O ile wiem w niektórych systemach plików hard-linki można tworzyć tylko w obrębie tej samej partycji, więc nie ma możliwości utworzenia dowiązania prowadzącego do zaszyfrowanej partycji TrueCrypt.