Beniamin?

Dnia 22 czerwca 2006, minister edukacji Roman Giertych ogłosił bezpłatne publiczne udostępnienie programu komputerowego zabezpieczającego internautów przed niepożądanymi treściami. Wszyscy zainteresowani mogą go pobrać ze strony http://beniamin.pl/, link do programu został też umieszczony na stronie Ministerstwa Edukacji Narodowej. Autorem programu jest firma podpisująca się jako AKKORP oraz AKCorp - użycie dwóch różnych nazw może świadczyć o niedawnym powstaniu firmy. Bezpłatną, niewyłączną licencję na darmową dystrybucję programu posiada Katolickie Centrum Kultury.

Pierwszy rzut oka

Ponieważ uważam, że sam potrafię odfiltrować treści, których nie chcę czytać, nie czułem potrzeby zainstalowania programu zaraz po jego ogłoszeniu, doszły do mnie jednak głosy, że program ten blokuje dostęp do wielu popularnych stron, w tym systemów blogowych - platformy, która w chwili obecnej jest głównym sposobem wolnej wymiany poglądów. Postanowiłem więc przyjrzeć się programowi bliżej.

Program zainstalowałem (w wersji 1.4.185), czytając uprzednio licencję, oraz uruchomiłem program konfiguracyjny (Manager.exe). Chciałem obejrzeć reguły blokowania stron, jednak - jak się okazało - nie jest to możliwe z poziomu tego programu, umożliwia on jedynie dodawanie własnych reguł do nieokreślonego zbioru reguł wbudowanych.

Analiza

Od porneLa wiedziałem, że pliki ze słowami są zaszyfrowane, dowiedziałem się również, że z jego wstępnego rozeznania wynika, że plikiem odpowiedzialnym za zapamiętywanie reguł blokowania jest data4.dat w katalogu programu. Sprawdziłem histogram pliku na wypadek, gdyby był on zakodowany XORem ze stałym kluczem - niestety tak nie było. PorneL próbował deszyfrowania XOR z różnymi kluczami, a także wszystkich wariacji algorytmu Cezara - tutaj również się nie powiodło. Tutaj każdy z nas poszedł swoją drogą, porneL próbował zaatakować plik algorytmicznie, dodając do niego różne reguły i sprawdzając jak plik się zmienia, a ja spróbowałem disassemblacji programu - licencja tego nie zabrania.

Po ponad dniu śledzenia programu, udało mi się wyizolować kod odpowiedzialny za deszyfrowanie plików konfiguracyjnych. Algorytm okazał się nie aż tak banalny, jak się tego spodziewaliśmy, ale do skomplikowanych również nie należy. Dla zainteresowanych szczegółami: dekodowanie odbywa się znak po znaku. Użyty jest stały słownik odwzorowujący każdy znak na jeden inny, następnie - wartość ASCII znaku przetłumaczonego według słownika zwiększamy o jego indeks jego pozycji w ciągu (modulo 32). Viola, gotowe.

Wnioski

Napisałem dekoder i uzyskałem za jego pomocą jawną postać pliku konfiguracyjnego w formacie XML. Można w nim znaleźć listę blokowanych słów, adresów oraz numerów IP i portów - zależnie od ustawionych opcji blokowania. Odkodowaną listę w postaci przyjaznej człowiekowi opublikował porneL. Nie podejmuję się w tym dokumencie oceny słów kluczowych niejawnie blokowanych przez program, Czytelnik powinien zapoznać się z nimi sam oraz wyciągnie odpowiednie wnioski.