INSTYTUT INŻYNIERII I GOSPODARKI WODNEJ
POLITECHNIKA KRAKOWSKA im. TADEUSZA KOŚCIUSZKI
Magdalena Kruczek
MONITOROWANIE ORAZ IDENTYFIKACJA
ZMIAN W STRUKTURZE PLIKÓW
SYSTEMU WINDOWS
praca magisterska
studia dzienne
kierunek studiów: informatyka
specjalność: informatyka stosowana w inżynierii środowiska
promotor: dr inż. Robert Szczepanek
nr pracy: 2211
K
R A K Ó W
2 0 0 8
ul. Warszawska 24, 31-155 Kraków
tel/fax (+48 12) 628 20 41
e-mail: sekretariat@iigw.pl
internet:
www.iigw.pl
Dziękuję
Panu dr. inż. Robertowi Szczepankowi
za poświęcony czas, cenne uwagi oraz pomoc udzieloną przy pisaniu niniejszej pracy,
Rodzicom
za możliwość rozwoju,
Andrzejowi
za wsparcie oraz wiarę we mnie.
Magdalena Kruczek Praca Magisterska
S
P I S
T
R E Ś C I
RZEZNACZENIE PROJEKTOWANEGO SYSTEMU
..................................................... 7
TECHNOLOGIE ZASTOSOWANE W APLIKACJI „FILM” ....................... 16
............................................................................. 28
................................................................................ 50
ONITOROWANIE ZMIAN W STRUKTURZE PLIKÓW
. ............................................ 54
EFINIOWANIE ATRYBUTÓW I UŻYCIE FILTRÓW
................................................. 59
.............................................................................................. 63
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
1
Magdalena Kruczek Praca Magisterska
1. Wstęp
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
2
Magdalena Kruczek Praca Magisterska
Banki, urzędy, szkoły, firmy informatyczne, farmaceutyczne, budowlane. Instytucje
te można wymieniać w nieskończoność. O wiele łatwiej byłoby wymienić instytucje
czy osoby prywatne, które nie mają żadnego kontaktu z komputerem. Prawie każdy
przechowuje różnego rodzaju dane, mniej lub bardziej ważne, w pamięci komputera. Ile
razy zdarza się, że któryś z plików „zniknie”, i w żaden sposób „nie chce się nam dać”
odszukać ?
Aby zaspokoić ciekawość, w popularnej wyszukiwarce internetowej została wpisana
fraza do wyszukania „zaginął plik”. Jedną z pierwszych odpowiedzi był wpis na forum
internetowym: „Jak odszukać plik tekstowy ? Nie pamiętam nazwy..zaginął mi” i dalej
owa internautka pisze „to strasznie pilne, zaginął mi bardzo ważny dokument”.
Pierwsza odpowiedź, którą otrzymała, brzmiała „No to pozostaje modlitwa...”[5].
Oczywiście nie jest to jedyna metoda jaką należy stosować w sytuacji zagubienia
ważnego pliku. Można przeszukiwać pamięć dysku za pomocą wbudowanych narzędzi,
odpowiednich dla używanego systemu operacyjnego. Dla systemu Windows możemy
się posłużyć tzw. „Pomocnikiem wyszukiwania”. Jednak w sytuacji wspomnianej
internautki, będzie to przejrzenie wszystkich plików (o takim samym rozszerzeniu,
ponieważ nazwa nie jest znana), znajdujących się na dysku twardym. W przypadku
zbadanego dysku o pojemności około 160 GB, w 90% zapełnionego różnymi danymi,
plików o losowo wybranym rozszerzeniu .txt, zostało znalezionych 2639.
Cel pracy
Celem niniejszej pracy jest przedstawienie rozwiązania, które pozwoli na
monitorowanie i katalogowanie plików w systemie Windows, oraz implementacja
systemu FilM będącego odzwierciedleniem tego rozwiązania. Zostanie również
przedstawione porównanie narzędzi o podobnym przeznaczeniu, istniejących na rynku
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
3
Magdalena Kruczek Praca Magisterska
polskim, jak również ogólnoświatowym, dostępnych na licencji Freeware
oraz
Shareware
.
Zawartość pracy
Pierwszy rozdział stanowi wstęp, którego zadaniem jest krótkie zapoznanie
czytelnika z tematem pracy.
W rozdziale drugim został zawarty opis problemu monitorowania zmian
w strukturach plików oraz trudności z katalogowaniem tychże plików w sytuacji
częstego korzystania z danych w nich zawartych. Określony został również zakres
projektu, czyli wyodrębnione zostały moduły i udostępniane opcje, które mogą być
rozwiązaniem wcześniej nakreślonych problemów.
Rozdział trzeci zawiera krótkie omówienie przykładowych narzędzi, których
przeznaczenie częściowo pokrywa się z przeznaczeniem projektowanego systemu FilM.
W rozdziale czwartym omówione zostały technologie, które zastosowano
w aplikacji.
Rozdział piąty stanowi opis sytemu. W tej części pracy zawarto opis środowiska
i języka w którym aplikacja została napisana, struktury bazy danych a także opis
wszystkich udostępnianych opcji.
W rozdziale szóstym zawarto wnioski a w siódmym podsumowanie.
1
Licencja Freeware – Program udostępniany na tej licencji jest darmowy i zabronione jest czerpanie
korzyści finansowych z jego dystrybucji. Licencja nie dotyczy produktów
stworzonych przy użyciu programu..
2
Licencja Shareware – Tą licencją objęte są zazwyczaj programy płatne. Producenci jednak dają
możliwość nieodpłatnego „wypróbowania” takiego programu przez określony
czas (np. 30 dni).
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
4
Magdalena Kruczek Praca Magisterska
2. Zakres projektu
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
5
Magdalena Kruczek Praca Magisterska
2.1 Opis problemu
Często zdarza się, że dostęp do plików ma wiele osób. Im więcej tym większe
prawdopodobieństwo, że ktoś je przypadkowo przeniesie, zmodyfikuje lub usunie.
Może przez to zostać straconych wiele dni pracy, wspomnienia w postaci zdjęć czy
zmodyfikowane ważne informacje. Nieświadomy tej sytuacji właściciel pliku nie
będzie mógł w porę zareagować. Warto się przed takimi sytuacjami zabezpieczyć. Plik
taki oczywiście można odnaleźć znając jego nazwę lub część tekstu (jeśli jest to plik
tekstowy). Można również poprawić lub postarać się odtworzyć zmienioną zawartość,
jednak aby próbować naprawić zepsute, trzeba zdawać sobie sprawę, że się zepsuło.
Z potrzeby uchronienia się przed takimi sytuacjami zrodził się pomysł zaprojektowania
aplikacji FilM, której głównym zadaniem będzie monitorowanie struktury plików.
Praca z dużą ilością plików potrafi być uciążliwa. W zależności od rodzaju
wykonywanej pracy, na plikach można przeprowadzać różnego rodzaju operacje.
Czasami przydałoby się posegregować pliki w zależności od ich przeznaczenia,
zawartości itp.. Bywają również sytuacje, że taki plik powinien się znaleźć w dwóch
różnych grupach np. plik typu umowa należałoby, dla porządku, przechowywać w
katalogu z plikami tego samego typu. Do każdej takiej umowy powinien być
wystawiony aneks. Jeżeli jest to duża ilość plików, utworzenie takich aneksów potrwa
trochę czasu, więc wygodne byłoby oznaczanie, że dla konkretnej umowy aneks został
wystawiony. Pomysłowość ludzka nie zna granic, więc każdy znalazłby sposób aby nie
pogubić się w gąszczu plików. Jednak może się zdarzyć sytuacja, że przy konkretnym
zadaniu pracuje więcej niż jedna osoba i każdy znajdzie własne rozwiązanie. Takich
przykładów, kiedy potrzebujemy wiedzieć coś o pliku bez konieczności dopytywania
i wyszukiwania tych informacji, jest mnóstwo.
Praktycznym przykładem problemów związanych z katalogowaniem i opisywaniem
plików a także monitorowaniem zmieniającej się zawartości, może być również
struktura plików zawierająca zeskanowane strony roczników hydrologicznych. Prace
nad utworzeniem takiej struktury są długotrwałe i jeżeli zajmuje się tym więcej niż
jedna osoba to wymagają sprawnej koordynacji, aby zapobiec np. dwukrotnemu
zeskanowaniu tego samego rocznika opadowego. Z takich zasobów na pewno chętnie
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
6
Magdalena Kruczek Praca Magisterska
będą korzystać studenci, ponieważ jest to bardzo wygodna forma dostępu do danych.
Strony roczników w formie elektronicznej są o tyle wygodniejsze, że można je
skopiować i zabrać ze sobą, bez konieczności przepisywania danych w nich zawartych.
W takiej strukturze, jak przytoczona wyżej, jeden plik odpowiada jednej stronie
z rocznika hydrologicznego, dlatego najczęściej nazwy ich odpowiadają numerowi
strony. Aby takie nazewnictwo miało sens i pliki nie były nadpisywane (takie same
nazwy plików dla różnych roczników), dla każdego rocznika musi być stworzony
osobny katalog. Takie rozwiązanie nie jest jednak doskonałe, ponieważ zeskanowane
strony mogą zostać zapisane w nieodpowiednich katalogach (dla innego rocznika).
W takim przypadku błąd może nie zostać szybko wykryty, ponieważ plik o nazwie np.
59 (będący zeskanowaną stroną nr 59 z rocznika hydrologicznego z roku 1980)
w katalogu stworzonym dla rocznika hydrologicznego z 1979 roku nie wzbudzi
podejrzeń.
Aby ułatwić takie i inne zadania, w aplikacji FilM udostępniona została możliwość
nadawania plikom dodatkowych atrybutów
.
2.2 Przeznaczenie projektowanego systemu.
Aplikacja została tak zaprojektowana, aby umożliwić użytkownikowi
monitorowanie wybranej struktury plików (wybranego folderu) a zatem wszystkich
plików zawartych w tym katalogu oraz w jego podkatalogach. Użytkownik powinien
mieć możliwość wyboru typów plików, które chciałby obserwować.
System przede wszystkim powinien zapewnić „ochronę” powierzonych mu plików. Pod
pojęciem „ochrony” rozumiane jest przechowywanie w bazie danych wszelkich
informacji umożliwiających:
• poprawne zidentyfikowanie pliku w przypadku zmiany jego nazwy,
• odszukanie pliku w przypadku zmiany lokalizacji (w ramach obserwowanej
struktury),
3
Atrybut – atrybutem w niniejszej pracy nazywany będzie dodatkowy, definiowany przez użytkownika,
opis pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
7
Magdalena Kruczek Praca Magisterska
• sprawdzenie, czy pliki zostały zmodyfikowane od czasu ostatniego zapisu do
bazy.
Na podstawie zebranych danych powinna być możliwość jednoznacznej identyfikacji
poszczególnych plików. System, po pobraniu danych z bazy, powinien umożliwić
sprawdzenie czy konkretne informacje dotyczące monitorowanej struktury są tożsame
ze stanem aktualnym owej struktury plików. Powinien również umożliwić
użytkownikowi, w razie niezgodności ścieżki do pliku lub jego nazwy, wybór czy dane
zapisywane do bazy danych powinny zostać zaktualizowane czy może pliki na dysku
powinny zostać przywrócone do stanu poprzedniego (ostatniego zapisu do bazy).
Każda aplikacja powinna umożliwiać użytkownikowi jak największą konfigurowalność,
tak aby mógł ją dostosować do swoich potrzeb. W związku z tym w projektowanym
programie FilM powinna być możliwość decydowania o tym:
• który katalog ma być monitorowany,
• jakie typy plików będą monitorowane,
• czy struktura danych zostanie objęta wbudowaną usługą indeksowania plików
systemu Windows,
• jakie atrybuty będzie posiadał każdy plik.
Po wczytaniu danych (otwarciu projektu), aplikacja powinna zapewnić użytkownikowi,
w obrębie monitorowanej struktury, możliwość:
• Weryfikacji poprawności ścieżek wszystkich monitorowanych plików
(sprawdzenie czy pliki znajdują się w wybranym przez użytkownika miejscu),
• sprawdzenia, czy od ostatniego zapisu zawartość plików się nie zmieniła,
• odnalezienie pliku, którego nazwa została zmieniona,
• sprawdzenia, czy w strukturze pojawiły się nowe pliki,
• sprawdzenia, czy i które pliki zostały usunięte.
Monitorowanie w czasie rzeczywistym
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
8
Magdalena Kruczek Praca Magisterska
Projektowana aplikacja pozwalać będzie również na monitorowanie plików
zawartych w wybranej strukturze, w czasie rzeczywistym. Jeżeli w obrębie
monitorowanego katalogu pojawi się nowy plik lub już istniejący zostanie usunięty,
jeżeli plik zostanie przeniesiony lub jego nazwa będzie zmodyfikowana a także jeśli
zmieni się zawartość któregoś z plików, użytkownikowi powinien zostać przekazany
odpowiedni komunikat.
Dodatkowe atrybuty
Aby użytkownik mógł grupować i opisywać pliki na różne sposoby, aplikacja
powinna zapewnić możliwość definiowania dodatkowych atrybutów dla plików. Aby
zapewnić spójność dodatkowych danych dla wszystkich plików, każdy z nich powinien
posiadać takie same atrybuty ( wartości dla tych atrybutów powinny oczywiście być
odpowiednie dla każdego pliku).
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
9
Magdalena Kruczek Praca Magisterska
3. Dostępne narzędzia
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
10
Magdalena Kruczek Praca Magisterska
Śledzenie plików na dysku znajduje swoje zastosowanie z wielu różnych
względów. Mechanizm ten używany jest do obserwacji procesu instalacji aplikacji
pozwalając później na całkowitą ich deinstalację, śledzenie co dany proces robi
z plikami na dysku co pozwala często wykrywać podejrzane zachowania, może być
użyty również do organizacji np. zdjęć czy muzyki. Aplikacje takie nabierają również
znaczenia w przypadku systemów takich jak Windows, w których zasoby plikowe
dzielone są przez wielu różnych użytkowników, którzy mają prawa do modyfikacji np.
ich położenia. Istnieje wiele rozwiązań w rozmaity sposób powiązanych z zagadnieniem
śledzenia zasobów dyskowych. Pewne jest, że ile osób chętnych do korzystania z tego
typu narzędzi, tyle pomysłów jak mogłyby one wyglądać. Każde z poniżej omówionych
rozwiązań może posłużyć do monitorowania zmian w strukturze plików, jednak wydaje
się, że przeznaczone są dla zupełnie różnych grup odbiorców.
3.1 FileWatcher
FileWatcher (Rysunek 1) jest programem przeznaczonym do ciągłego
monitorowania (w trakcie działania aplikacji) zmian zachodzących w wybranej
strukturze katalogów. Ponadto aplikacja daje możliwość automatycznego wywoływania
pewnej, zdefiniowanej akcji w odpowiedzi na komunikat o nowym pliku zapisanym
w strukturze. Akcją może być komenda, która powinna składać się z nazwy pliku
wykonywalnego typu exe, pliku wsadowego typu bat lub pliku typu com oraz
parametrów.
Ustawienia opcjonalne dla każdego monitorowanego katalogu:
• Użytkownik może wybrać, czy monitorowane będą zmiany tylko w wybranym
katalogu, czy też brane pod uwagę będą również wszystkie podkatalogi.
• Możliwe jest podanie typów plików, które powinny być monitorowane.
• Dostępna jest również opcja „czekaj na wyłączny dostęp do pliku”. Zaznaczenie
jej powoduje, że akcja może być wykonana pod warunkiem, że żadna inna
aplikacja nie przetwarza pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
11
Magdalena Kruczek Praca Magisterska
• Zdefiniowana akcja domyślnie wykonywana jest wraz z nadejściem informacji
o nowym pliku. Można jednak określić po jakim czasie od pojawienia się
nowego pliku akcja zostanie uruchomiona. Opcja ta ma umożliwić
uruchomienie jednego procesu dla grupy plików przychodzących razem.
• Również zależne od użytkownika są typy zdarzeń, które będą logowane przez
program. Możliwe do wyboru są opcje „Nowe pliki”, „Uaktualnione pliki” oraz
“Usunięte pliki”. Jeżeli użytkownik zaznaczyłby tylko opcję „Nowe pliki” to
logi pojawiałyby się tylko w przypadku utworzenia nowego pliku w obrębie
monitorowanego katalogu.
Wydawcą tego programu jest DataMystic. Aplikację można pobrać ze strony
producenta [14] po opłaceniu licencji. Dostępna jest również trzydziesto-dniowa wersja
testowa.
Rysunek 1. Aplikacja FileWatcher
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
12
Magdalena Kruczek Praca Magisterska
3.2 FolderWatch
Program FolderWatch (Rysunek 5) zapewnia ochronę plików poprzez tworzenie
kopii zapasowych (w wybranym przez użytkownika katalogu). Monitoring wybranego
katalogu możliwy jest pod warunkiem, że program jest uruchomiony. W związku z tym,
możliwe jest takie skonfigurowanie aplikacji, aby uruchamiała się wraz ze startem
systemu.
Aby dodać katalog do obserwowanych, należy utworzyć tzw. „Watch” a następnie
skonfigurować ustawienia dotyczące sposobu reakcji na zmiany w folderze, oraz
wybrać katalog, w którym zapisywane będą kopie zapasowe. Aplikacja umożliwia
dodanie nowej struktury do obserwowanych na dwa sposoby:
Pierwszy sposób to utworzenie nowego „Watch’a” za pomocą opcji „Add New
Watch”. Pozwala ona na wybranie jednego katalogu, którego zawartość (tylko pliki)
będzie monitorowana. Poprzez dostępne opcje użytkownik może modyfikować sposób
reakcji na zmiany zachodzące w folderze.
Drugim sposobem na dodanie nowego folderu do obserwowanych jest użycie opcji
„Add multiple Watches AT once”. Opcja ta jest bardzo podobna do poprzedniej, z tym
że tym razem mamy możliwość utworzenia nowych procesów (Watch) dla całej
struktury danych (możliwe jest wybranie poziomu zagnieżdżenia katalogów dla których
utworzone mają być procesy). Opcjonalnie jest również możliwe utworzenie struktury
katalogów, odpowiadającej oryginalnej, w folderze docelowym dla kopi zapasowych.
Niestety jeżeli ta opcja nie zostanie zaznaczona i aplikacja nie odnajdzie katalogu
o takiej samej nazwie w tym folderze, monitoring nie zostanie uruchomiony.
Najważniejsze opcje:
• Kryteria monitoringu. W tym miejscu podać można nazwy lub wybrać typy
plików, które mają być monitorowane.
• Przydatną opcją może się okazać wybór sposobu uruchamiania konkretnego
„Watch’a”. Dostępne opcje to „Automatic” (startuje wraz z uruchomieniem
aplikacji), „Manual” (stan procesu po uruchomieniu aplikacji będzie adekwatny
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
13
Magdalena Kruczek Praca Magisterska
do ostatniego zapamiętanego stanu) oraz „Scheduled” (proces uruchamiany
będzie cyklicznie w zdefiniowanych przez użytkownika odstępach czasu).
• Sposób reakcji na zdarzenie
. Dostępne opcje to „Copy” (skopiowanie pliku),
„Move” (przeniesienie pliku) oraz „Append” (opcja przeznaczona dla plików
nieedytowalnych np. filmów, ponieważ zmiany w oryginalnych plikach nie będą
uwzględniane w kopiach zapasowych).
• W zależności od wybranego sposobu reakcji na zdarzenie dostępne są opcje:
o Dla każdego nowego folderu (utworzonego po starcie procesu
monitorowania) w wybranym katalogu (tylko dla pierwszego poziomu
zagnieżdżenia), utworzony zostanie nowy „Watch” (Copy, Move, Append).
o Kopia zapasowa zostanie usunięta jeśli oryginalny plik zostanie usunięty
(Copy, Append).
Wydawcą tego programu jest firma Diginaut. Na stronie domowej producenta dostępna
jest wersja testowa (działająca przez dwadzieścia jeden dni). Po opłaceniu licencji
możliwe jest pobranie pełnej wersji.
Rysunek 2 Aplikacja FolderWatch
4
Zdarzenie – zdarzeniem może być edycja pliku istniejącego, dodanie nowego pliku, usunięcie pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
14
Magdalena Kruczek Praca Magisterska
3.3 FileMon
Aplikacja FileMon (Rysunek 3) pozwala na monitorowanie w czasie
rzeczywistym operacji przeprowadzanych na systemie plików. Jej zaawansowane
możliwości sprawiają, że jest ona dobrym narzędziem aby odkrywać w jaki sposób
aplikacje Windows korzystają z plików (w szczególności bibliotek DLL), ułatwia
również rozwiązywanie problemów powiązanych z konfiguracją plików aplikacji.
FileMon daje informacje o rodzaju wykonywanej operacji na pliku (np. odczyt, zapis,
otwarcie, usunięcie ...), o tym jaki proces wykonał operacje, o jej statusie itp. Aplikacja
umożliwia również monitorowanie zasobów na dyskach sieciowych (dla Windows
NT/2K/XP).
Rysunek 3 Aplikacja FileMon
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
15
Magdalena Kruczek Praca Magisterska
4. Technologie zastosowane
w aplikacji „FilM”
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
16
Magdalena Kruczek Praca Magisterska
Jednym z istotniejszych problemów w procesie monitorowania struktury jest
jednoznaczna identyfikacja plików. Identyfikacja na podstawie nazwy okazała się
niewystarczająca, ponieważ nie daje żadnej informacji na temat zawartości pliku.
Przechowywanie kopii plików umożliwiłoby porównanie zawartości, jednak
spowodowałoby to, zbyt duży rozmiar bazy danych. Rozwiązaniem tego problemu są,
zaczerpnięte z kryptografii, jednokierunkowe funkcje skrótu. W rozdziale 4.1, w celu
wprowadzenia, przedstawione zostały ogólne zagadnienia dotyczące kryptografii oraz
algorytmy szyfrujące, będące istotną częścią tej dziedziny nauki. Najszerzej omówione
zostały oczywiście funkcje skrótu a także, związany z tą tematyką interfejs
udostępniany przez .NET Framework i sposób w jaki został użyty w aplikacji do
obliczeń wartości tych funkcji.
Projektowany system umożliwia monitorowanie zmian zachodzących w obrębie
wybranej struktury plików. Może się jednak zdarzyć, że plik lub pliki zostaną
przeniesione poza obserwowaną strukturę. Aby taki plik wyszukać można użyć,
udostępnianą przez Windows, wyszukiwarkę plików. System Windows udostępnia
również usługę indeksowania, która odpowiednio użyta, może znacznie przyspieszyć
proces wyszukiwania konkretnych plików w zasobach dyskowych. Indeksy plików
budowane mogą być również w oparciu o ich zawartość (dla niektórych typów plików),
co rozszerza możliwości przeszukiwania. W aplikacji został udostępniony interfejs,
który umożliwi podstawową konfigurację ustawień systemowych i obsługę tej usługi.
W części 4.2 umieszczony został opis działania systemowej usługi indeksowania
a także opis sposobu implementacji tego rozwiązania w aplikacji, przy użyciu metod
udostępnianych przez .NET.
Aby umożliwić weryfikację zmian w strukturze po ponownym uruchomieniu
aplikacji, dane dotyczące zarówno projektu jak i plików muszą być przechowywane
w bazie danych. Opisany w rozdziale 4.3 system bazodanowy SQLite został wybrany,
ponieważ łączy prostotę użytkowania i administrowania z dość szerokimi
możliwościami. Baza danych nie wymaga instalacji ani konfiguracji a funkcje jakie
udostępnia są w zupełności wystarczające dla aplikacji.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
17
Magdalena Kruczek Praca Magisterska
4.1 Kryptografia
Kryptologia - nauka o bezpiecznych sposobach przekazywania informacji, obejmuje
dwa działy. Jednym z nich jest Kryptografia. Drugim działem, ściśle związanym
z pierwszym jest Kryptoanaliza.
Kryptografia jest to dziedzina wiedzy, która zajmuje się zagadnieniami ochrony
informacji poprzez szyfrowanie danych. Współcześnie w kryptografii wyróżnia się dwa
główne nurty: kryptografię symetryczną (z
jednym kluczem szyfrowania)
i asymetryczną (z parą zależnych kluczy – prywatnym i publicznym) [7].
Kryptoanaliza natomiast zajmuję się deszyfrowaniem wiadomości (proces ten określa
się czasem jako „łamanie kodu”) bez znajomości odpowiedniego klucza. Każdy, lub
prawie każdy miał do czynienia w swoim życiu z „produktem” kryptografów. Jedną
z technik w której kryptografia ma zastosowanie jest elektroniczny odpowiednik
tradycyjnego podpisu – podpis cyfrowy, oparty o kryptografię asymetryczną. Coraz
bardziej popularny mechanizm podpisu elektronicznego
wykorzystywany jest np. przez
banki, które przesyłają wyciągi z kont (opatrzone właśnie podpisem cyfrowym) drogą
e-mail’ową.
Zaopatrując się w zestaw do składania podpisu cyfrowego nieco
„ułatwiamy” sobie życie, ponieważ możliwe jest już, aby za pomocą drogi
elektronicznej, składać deklaracje podatkowe, deklaracje ZUS, wystawiać faktury VAT
itp.
Kryptografia znalazła również zastosowanie w protokołach, służących do bezpiecznej
transmisji danych np. SSL. Protokół SSL jest protokołem typu klient- serwer. Jego
zadaniem jest zapewnienie poufności (szyfrowanie) przesyłanych danych, integralności
tych danych oraz sprawdzenie autentyczności serwera z którym się komunikujemy.
Czy kryptografia daje bezpieczeństwo?
Obecnie w szyfrowaniu danych wykorzystywane są złożone matematyczne procedury,
teoretycznie bezpieczne i odporne na próby włamania. Jednak osoba mająca do
dyspozycji wystarczająco dużą moc obliczeniową, lub posiadająca wystarczająco dużo
czasu mogłaby „złamać” taki kod.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
18
Magdalena Kruczek Praca Magisterska
4.1.1 Algorytmy szyfrujące
Algorytm symetryczny
Algorytm symetryczny zwany jest inaczej algorytmem z kluczem tajnym. Przy
zastosowaniu tego algorytmu tekst jawny jest szyfrowany i deszyfrowany za pomocą
tego samego klucza. Problemem, który się pojawia, jest przekazanie tajnego klucza
odbiorcy zaszyfrowanej wiadomości. Jego ujawnienie będzie się wiązało z możliwością
odszyfrowania kryptogramu przez każdego, kto ten klucz zdobędzie. Pomimo iż przy
szyfrowaniu i deszyfrowaniu stosowany jest ten sam klucz, niemal zawsze korzysta się
z dwóch procedur
(osobne dla szyfrowania i deszyfrowania). Algorytmy symetryczne
zaprojektowane zostały pod kątem szybkości działania [1], [2].
Algorytm asymetryczny
Algorytm asymetryczny zwany jest również algorytmem z kluczem publicznym
bądź jawnym. Sądząc po nazwie można byłoby przypuszczać, że jest to algorytm
podobny do symetrycznego z tym, że klucz jest ujawniany. Szyfrowanie jednak nie
miałoby wtedy najmniejszego sensu. Sztywnym założeniem jest więc używanie dwóch
różnych kluczy (klucza publicznego oraz klucza prywatnego). Zarówno do szyfrowania
jak i deszyfrowania może być używana jedna procedura
5
(ale równie dobrze mogą być
użyte dwie procedury). Asymetryczność algorytmu polega na tym, iż na podstawie
klucza publicznego niemożliwe
jest wyliczenie klucza prywatnego, natomiast w drugą
stronę (czyli wyliczenie klucza publicznego na podstawie klucza prywatnego) jest
wykonalne. Zasadą jest, że klucz publiczny jest przekazywany „szerszemu odbiorcy”
(czyli każdemu kto będzie przesyłał nam szyfrowaną wiadomość), natomiast klucz
prywatny jest „ściśle tajny” i nie może być ujawniony.
W większości przypadków szyfrowanie tekstu jawnego wykonywane jest za pomocą
klucza publicznego a deszyfrowanie za pomocą klucza prywatnego. Zdarzają się jednak
5
Procedura – opis wszystkich czynności, które należy wykonać aby zaszyfrować tekst jawny (uzyskać
szyfrogram) lub odszyfrować szyfrogram (uzyskać tekst jawny).
6
„ Niemożliwe” rozumiemy tu w sensie kryptologicznym, tzn. nie można tego zrealizować przy
zastosowaniu znanych środków w praktycznie akceptowalnym czasie [1].
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
19
Magdalena Kruczek Praca Magisterska
przypadki kiedy następuje sytuacja zupełnie odwrotna np. przesłanie podpisu
identyfikującego osobę – nadawcę [1].
4.1.2 Jednokierunkowe funkcje haszujące
Kryptografia nie polega tylko i wyłącznie na szyfrowaniu danych. Należy również
pamiętać o integralności danych. W tym celu wykorzystywane są jednokierunkowe
funkcje haszujące zwane również jednokierunkowymi funkcjami skrótu (z ang. One
Way Hash Function).
Jednokierunkowe funkcje skrótu określane są również jako funkcje kompresujące,
funkcje koncentrujące, skróty wiadomości i kryptograficzne sumy kontrolne. Pod
pojęciem funkcji skrótu kryje się zatem przekształcenie odwzorowujące wiadomość
o dowolnej długości w ciąg bitów o określonej, ustalonej długości. Jednokierunkowość
natomiast oznacza, że niemożliwe jest wyznaczenie funkcji odwrotnej, takiej która
pozwoli na odszyfrowanie wiadomości.
Jednokierunkowa funkcja skrótu musi spełniać pewne wymagania.
Jednym z podstawowych jest to, aby dla znanej wartości funkcji haszującej niemożliwe
było wyliczenie takiego ciągu bajtów, który generowałby taką samą wartość haszującą.
Funkcja skrótu, musi zapewniać odporność na kolizje (bezkonfliktowość). Spełni ten
warunek, gdy dla zadanego ciągu bajtów, nie będzie możliwe (a przynajmniej będzie
bardzo trudne) znalezienie innego ciągu bajtów o tej samej wartości haszującej.
Wymagane jest również, aby na podstawie wartości funkcji haszującej niemożliwe było
wywnioskowanie wiadomości wejściowej. Zmiana nawet jednego bitu powinna
spowodować wygenerowanie zupełnie innej wartości.
Funkcje skrótu nie wykorzystują żadnych kluczy. Zgodnie z założeniem, każdy
(znający algorytm) powinien być w stanie obliczyć wartość funkcji. Przeszkodą może
być skomplikowana budowa jednokierunkowych funkcji haszujących [1].
Do czego mogą posłużyć takie funkcje haszujące, skoro odwrócenie tego procesu jest
niemożliwe?
Pierwszą, nasuwającą się odpowiedzią jest przechowywanie haseł. Bardzo
niebezpiecznym rozwiązaniem jest przechowywanie haseł jawnie. Nawet jeśli dostęp do
pliku czy bazy danych jest ograniczony, istnieje spore prawdopodobieństwo obejścia
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
20
Magdalena Kruczek Praca Magisterska
tych zabezpieczeń. Można sobie wyobrazić co stałoby się, gdyby bank przechowywał
w ten sposób hasła do kont internetowych i zostałyby one przechwycone.
Innym zastosowaniem funkcji skrótu, jest weryfikacja zgodności danych. Z różnych
przyczyn przesyłane dane mogą ulec modyfikacji. Zgodność tych danych można
sprawdzić poprzez wyliczenie wartości funkcji skrótu (weryfikacja możliwa jest pod
warunkiem, że znana będzie wartość funkcji wyliczona na podstawie niezmienionych
danych).
Najpopularniejsze ataki przeciw funkcjom haszującym
• Atak słownikowy. Jest to najprostsza metoda łamania haseł przechowywanych
pod postacią wartości funkcji skrótu. Celem „atakującego” jest odgadnięcie
jakiegokolwiek hasła do systemu (nie ma znaczenia którego użytkownika). Jak
sama nazwa wskazuje atak ten polega na odgadywaniu haseł na podstawie plików
z listą słów, często tworzoną na podstawie ogólnodostępnych słowników. Nawet
długie hasło nie stanowi przeszkody jeśli jest logicznym słowem (np. stokrotka)
przechowywanym w słowniku, dużo bardziej bezpieczne są ciągi przypadkowych
znaków (np. Qd$jn&) [12].
• Atak urodzinowy. Atak ten polega na znalezieniu kolizji funkcji haszującej.
Załóżmy, że mamy dokument, który ma być opatrzony podpisem cyfrowym
(może to być np. umowa). Ze względu na wielkość tekstu podpisywana jest
wartość funkcji haszującej dla niego obliczona. Zawartość dokumentu trochę nam
nie odpowiada, więc tworzymy drugi dokument, który będzie „poprawioną”
wersją umowy. Modyfikujemy go tak, aby spełniał nasze wymagania. Jeżeli
dokonamy drobnych modyfikacji (np. dodanie kilku spacji) obu dokumentów, tak
aby powstała odpowiednia ilość różnych wersji, to z dużym
prawdopodobieństwem znajdziemy parę poprawna umowa – zmodyfikowana
umowa, która będzie mieć te same wartości funkcji haszującej. Modyfikujemy
obie wersje dokumentu (oryginalnego i sfałszowanego) ponieważ znalezienie
umowy (wśród kolekcji zmodyfikowanych wersji sfałszowanej umowy), która
posiada tę samą wartość funkcji skrótu co dokument oryginalny (bez modyfikacji)
ma mniejsze prawdopodobieństwo niż znalezienie pary dokumentów o tej samej
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
21
Magdalena Kruczek Praca Magisterska
wartości sumy kontrolnej (wśród kolekcji zmodyfikowanych wersji dokumentu
oryginalnego i sfałszowanego) [3].
4.1.3 Rozwiązania .NET
Framework .NET dostarcza wielu standardowych algorytmów z dziedziny
kryptografii. Algorytmy te są proste w użyciu a ich autorzy dołożyli starań by
optymalnie dobrać domyślne parametry. Dodatkowo, w modelu kryptograficznym .NET
hierarchia obiektów, podejście oparte na strumieniach jak i konfiguracja obiektów są
niezwykle elastyczne i dają się w łatwy sposób rozszerzać.
Hierarchia obiektów.
System
zabezpieczeń .NET implementuje rozszerzalny zbiór klas oraz
interfejsów, których hierarchię można przedstawić jak poniżej:
Klasy „typ algorytmu” – na przykład algorytmy symetryczne lub algorytmy haszujące.
Ten poziom klas jest abstrakcyjny.
Klasy algorytmów – dziedziczą z klas typów algorytmów, na przykład RC2 lub SHA1.
Ten poziom klas jest abstrakcyjny.
Implementacje algorytmów – dziedziczą z klas algorytmów, na przykład
RC2CryptoServiceProvider albo SHA1Managed. Ten poziom klas jest w pełni
zaimplementowany.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
22
Magdalena Kruczek Praca Magisterska
Wspomniane powyżej hierarchie klas przedstawione są na rysunkach 4 i 5.
Rysunek 4. Klasy przestrzeni nazw System.Security.Cryptography dla algorytmu szyfrowania
symetrycznego, za [7]
Rysunek 5. Klasy przestrzeni nazw System.Security.Cryptography dla algorytmu szyfrowania
haszującego, za [7]
Używając takiego modelu dziedziczenia, łatwo jest dodać nowy algorytm albo
nową implementację istniejącego algorytmu. Na przykład aby stworzyć nowy algorytm
z publicznym kluczem, należałoby zdefiniować nową klasę dziedziczącą z klasy
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
23
Magdalena Kruczek Praca Magisterska
AsymetricAgorithm. Aby stworzyć nową implementację tego algorytmu należałoby
stworzyć nową, nie abstrakcyjną klasę dziedziczącą z klasy algorytmu. Dzięki takiemu
podejściu odpowiednio wykorzystując polimorficzne właściwości klas, można
w istniejących implementacjach łatwo podmieniać implementację algorytmów.
Podejście strumieniowe.
Biblioteka
implementująca algorytmy kryptograficzne w .NET zaprojektowana
jest w sposób zorientowany na przetwarzanie strumieni. To podejście zastosowane jest
zarówno w implementacji algorytmów symetrycznych jak i haszujących. W tym
kontekście bardzo ważną klasą staje się CryptoStream dziedziczącą z klasy Stream.
Wszystkie obiekty kryptograficzne oparte o przetwarzanie strumieni używają jednego
wspólnego interfejsu obsługującego transfer danych wejściowych. CryptoStream jest
swego rodzaju łącznikiem między danymi wejściowymi a konkretną implementacją
transformacji tych danych. Poniżej znajduje się przykładowe użycie CryptoStream do
szyfrowania z użyciem algorytmu symetrycznego Rijndael
:
static
void
Main()
{
// Stworzenie obiektu Rijndael object pozwalające na
// wygenerowanie klucza oraz wektora inicjalizacyjnego
Rijndael
RijndaelAlg =
Rijndael
.Create();
string
sData =
"Tekst do zaszyfrowania"
;
string
FileName =
"Zaszyfrowany.txt"
;
// Szyfrowanie danych przy użyciu odpowiedniego klucza
// oraz wektora IV
EncryptTextToFile(sData, FileName, RijndaelAlg.Key,
RijndaelAlg.IV);
// Rozszyfrowanie danych przy użyciu odpowiedniego
// klucza oraz wektora IV
string
Final = DecryptTextFromFile(FileName, RijndaelAlg.Key,
RijndaelAlg.IV);
7
Rijndael (inaczej AES ang. Advanced Encryption Standard) to symetryczny szyfr blokowy przyjęty
przez NIST w wyniku konkursu ogłoszonego w roku 1997.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
24
Magdalena Kruczek Praca Magisterska
}
public
static
void
EncryptTextToFile(
String
Data,
String
FileName,
byte
[] Key,
byte
[] IV)
{
// Otworzenie pliku do zapisu zaszyfrowanych danych
FileStream
fStream =
File
.Open(FileName,
FileMode
.OpenOrCreate);
// Stworzenie obiektu Rijndael (dziedziczy z
// SymmetricAlgorithm)
Rijndael
RijndaelAlg =
Rijndael
.Create();
// Stworzenie obiektu CryptoStream powiązanego z plikiem
// (FileStream),
// kluczem szyfrowania oraz wektorem inicjalizacyjnym
CryptoStream
cStream =
new
CryptoStream
(fStream,
RijndaelAlg.CreateEncryptor(Key, IV),
CryptoStreamMode
.Write);
// Stworzenie obiektu do zapisu strumienia
StreamWriter
sWriter =
new
StreamWriter
(cStream);
// Zapis danych do strumienia, zaszyfrowanie ich.
sWriter.WriteLine(Data);
}
public
static
string
DecryptTextFromFile(
String
FileName,
byte
[]
Key,
byte
[] IV)
{
// Otwórz plik z danymi wejściowymi
FileStream
fStream =
File
.Open(FileName,
FileMode
.OpenOrCreate);
// Stworzenie obiektu Rijndael (dziedziczy z
// SymmetricAlgorithm)
Rijndael
RijndaelAlg =
Rijndael
.Create();
// Stworzenie obiektu CryptoStream powiązanego z plikiem
// (FileStream), kluczem szyfrowania oraz wektorem
// inicjalizacyjnym
CryptoStream
cStream =
new
CryptoStream
(fStream,
RijndaelAlg.CreateDecryptor(Key, IV),
CryptoStreamMode
.Read);
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
25
Magdalena Kruczek Praca Magisterska
// Stworzenie obiektu do odczytu strumienia
StreamReader
sReader =
new
StreamReader
(cStream);
string
val =
null
;
// Odczytanie danych ze strumienia czyli rozszyfrowanie ich.
return
sReader.ReadLine();
}
Z racji tego, że wszystkie obiekty kryptograficzne oparte o przetwarzanie strumieni
oparte są o ten sam interfejs, można łączyć ze sobą wiele obiektów (takich jak obiekty
haszujące czy obiekty kodujące), co pozwala na przeprowadzanie na danych
wejściowych wielu operacji bezpośrednio. Taki właśnie model oparty o strumienie
pozwala również na zespalanie ze sobą wielu obiektów, na przykład połączenie
algorytmów enkrypcji i haszowania mogą być widziane jako jeden obiekt
przetwarzający strumienie, niezależnie od tego, że został stworzony ze zbioru innych
obiektów.
Algorytmy
haszujące mogą zostać użyte w analogiczny sposób jak pokazuje to
przykład w ramce powyżej (oczywiście bez możliwości rozszyfrowania). Wszystkie
klasy haszujące dostępne w przestrzeń nazw System.Security.Cryptography dziedziczą
z klasy HashAlgorithm, co sprawia, że wszystkie jej implementacje muszą udostępniać
metodę:
public byte[] ComputeHash(byte[]);
Dzięki czemu operacja haszowania może być przeprowadzona w bardzo prosty sposób,
tak jak pokazano to w ramce poniżej:
///
<summary>
///
zwraca wyliczoną wartość funkcji skrótu dla pliko o podanej
///
ścieżce
///
</summary>
///
<param name="a_path">ścieżka do pliku</param>
///
<returns></returns>
public
string
ComputeSHA1Checksum(
string
a_spath)
{
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
26
Magdalena Kruczek Praca Magisterska
string
strResult =
""
;
string
strHashData =
""
;
byte
[] arrbytHashValue;
System.IO.
FileStream
oFileStream =
null
;
System.Security.Cryptography.
SHA1CryptoServiceProvider
oSHA1Hasher =
new
System.Security.Cryptography.
SHA1CryptoServiceProvider
();
try
{
oFileStream = GetFileStream(a_spath);
arrbytHashValue = oSHA1Hasher.ComputeHash(oFileStream);
oFileStream.Close();
strHashData =
System.
BitConverter
.ToString(arrbytHashValue);
strHashData = strHashData.Replace(
"-"
,
""
);
strResult = strHashData;
}
catch
(System.
Exception
ex)
{
System.Windows.Forms.
MessageBox
.Show(ex.Message,
"Próba
wyliczenia wartości funkcji skrótu niepowiodła się"
,
System.Windows.Forms.
MessageBoxButtons
.OK,
System.Windows.Forms.
MessageBoxIcon
.Error,
System.Windows.Forms.
MessageBoxDefaultButton
.Button1);
}
return
(strResult);
}
///
<summary>
///
zwraca strumień pliku potrzebny do wyliczania wartości funkcji
///
skrótu
///
</summary>
///
<param name="p">ścieżka do pliku</param>
///
<returns></returns>
private
FileStream
GetFileStream(
string
a_spath)
{
FileStream
streamReader;
return
streamReader =
File
.OpenRead(p);
}
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
27
Magdalena Kruczek Praca Magisterska
Powyższy fragment kodu oblicza 160 bitową wartość funkcji SHA1 z danych
wejściowych, używając implementacji dostarczonej przez CSP
( ang. Cryptographic
Service Provider).
Konfiguracja środowiska.
Konfiguracja
środowiska kryptograficznego pozwala na wiązanie specyficznych
implementacji algorytmów szyfrujących z konkretnymi nazwami, pozwalając na łatwe
rozszerzanie zbioru klas kryptograficznych w .NET Framework. Windowsowe SDK
(Software Development Kit) pozwala administratorowi komputera na konfiguracje
domyślnych algorytmów szyfrowania, jak również ich implementacji, których
framework .NET i odpowiednio napisane aplikacje będą używać. Na przykład
przedsiębiorstwo mające swoje własne implementacje algorytmów szyfrujących może
skonfigurować swoje komputery w taki sposób aby były one używane domyślnie
zamiast tych wydanych razem z Windows SDK. Oczywiście każda aplikacja może
samodzielnie wybierać rodzaj implementacji algorytmu, jednakże rekomendowane jest
aby tworzyć obiekty używając systemowej konfiguracji kryptograficznej. Możliwe jest
dodanie własnej, sprzętowej bądź programowej implementacji algorytmu i nadanie jej
prostej wybranej przez siebie nazwy, dzięki której aplikacje będą mogły z niej
korzystać. Jeśli nazwa algorytmu nie jest wyspecyfikowana w pliku konfiguracyjnym
zostaną użyte ustawienia domyślne.
4.2 Indeksowanie w Windows
Usługa indeksowania stała się bazową usługą w rodzinie systemów Windows
poczynając od wersji 2000. Jej działanie można najprościej opisać jako wyciąganie
informacji z plików i tworzenie indeksowanych katalogów, które znacznie poprawiają
efektywność i szybkość przeszukiwania. Serwis indeksowania potrafi tworzyć swoje
8
W systemach Microsoft Windows Cryptographic Service Provider jest programistyczną biblioteką,
która implementuje funkcje kodujące/dekodujące, które mogą być później używane przez inne aplikację.
CSP dostarcza tym samym interfejsu kryptograficznego (ang. Cryptographic Application Programming
Interface, inaczej CryptoAPI, Microsoft Cryptography API, lub po prostu CAPI).
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
28
Magdalena Kruczek Praca Magisterska
katalogi zarówno na podstawie właściwości plików jak i ich treści. Indeksowane mogą
być katalogi znajdujące się na danym hoście, jak i te na zdalnych maszynach, pliki
mogą być po prostu częścią wybranego systemu plików albo częścią wirtualnej sieci
Web udostępnianej przez np. IIS ( ang. Internet Information Services ).
Usługa indeksowania wyciąga informacje z plików poprzez ich filtrowanie za
pomocą specjalnych komponentów rozumiejących strukturę poszczególnych formatów
plików.
Możliwe jest tworzenie własnych filtrów, muszą one jednak implementować
interfejs IFilter, który dostarcza metody pozwalające na przeczytanie pliku, dokonanie
ekstrakcji informacji tekstowych oraz właściwości plików. Systemy Windows 2000
i XP dostarczają wiele wbudowanych filtrów pozwalających na czytanie plików np.
Microsoft Office, HTML, czy zwykłych plików tekstowych.
Po
użyciu filtrów, serwis indeksowania scala później przeczytane informacje do
katalogów indeksu pozwalając w ten sposób na szybsze przeszukiwanie monitorowanej
struktury. Indeksowanie polega na filtrowaniu, tworzeniu pól indeksu i grupowanie ich
w katalogi. Ostatnim krokiem procesu indeksowania jest tworzenie katalogu, który
zawiera indeks główny (oraz inne indeksy pomocnicze) jak również listę
posortowanych wyrazów oraz ich lokalizację w zbiorze indeksowanych dokumentów.
System Windows posiada podstawowe mechanizmy pozwalające na tworzenie
zapytań do serwisu indeksowania jak również narzędzi do zarządzania indeksami.
W momencie gdy usługa indeksowania jest włączona, proste wyszukiwanie plików lub
folderów (z menu start) spowoduje przeglądanie katalogów indeksu. Za pomocą
narzędzi administracyjnych można zatrzymać/wstrzymać/uruchomić ponownie usługę
indeksowania jak również zarządzać jej bogatym zbiorem parametrów.
Wszystkie
parametry
usługi indeksowania przechowywane są w rejestrze
systemowym. Proces indeksowania wymaga wykonania wielu obliczeń oraz operacji
dyskowych, dlatego system Windows uruchamia procedurę indeksowania w momencie
gdy użytkownik nie jest aktywny.
Platforma programistyczna SDK (ang. Software Development Kit) dostarcza
dodatkowych wszechstronnych i elastycznych mechanizmów pozwalających na
programową współpracę z serwisem indeksującym.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
29
Magdalena Kruczek Praca Magisterska
Użycie usługi indeksowania w programach C#
Windowsowe SDK dostarcza wielu możliwości współpracy programów z usługą
indeksowania. W tej części opisane zostaną te wykorzystane w niniejszej pracy.
Konfiguracja usługi.
Serwis indeksowania dostarcza trzech kategorii obiektów, które mogą zostać
wykorzystane w programach współpracujących z tą usługą:
• Administration Automation Objects
• Query Automation Objects
• Language Resource Objects
W tej pracy wykorzystane zostały obiekty z pierwszej grupy, które zawarte są w
bibliotece ciodm.dll. Pozwalają na zarządzanie usługą indeksowania.
AdminIndexServer - pozwala na zarządzanie usługą indeksowania. Daje identyczne
możliwości jak te dostępne poprzez narzędzia administracyjne systemu (Microsoft
Management Console). Można za pomocą tego obiektu np. zatrzymać bądź włączyć
usługę indeksowania, dodać nowe indeksy, wymusić indeksowanie w danej chwili itp.
CatAdm – pozwala na zarządzanie pojedynczym indeksem. Pojedynczy indeks będzie
tu rozumiany jako zbiór katalogów do indeksowania.
ScopeAdm – pozwala na zarządzanie pojedynczym zakresem, czyli innymi słowy,
katalogiem który ma być indeksowany.
W systemie może być zdefiniowane wiele indeksów, każdy mogą odpowiadać za
indeksowanie wielu katalogów.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
30
Magdalena Kruczek Praca Magisterska
Dostęp do indeksowanych danych.
Do realizacji dostępu do rezultatów działania usługi indeksowania wykorzystany
został dostawca OLE DB
dla usługi indeksowania. Z tego poziomu możliwy jest
dostęp (tylko do odczytu) do zawartości poszczególnych indeksów. OLE DB jest
zbiorem interfejsów, które opisują w jaki sposób aplikacje klienckie mogą pobierać
dane ze źródła oraz w jaki sposób dane te w postaci tabel mają być prezentowane.
Dostęp do danych zawartych w indeksie może uzyskać za pomocą kilku linii kodu:
//Konfiguracja połączenia dostawca OLE DB usługi indeksowania to
MSIDXS
//Jako parametr należy również podać nazwę indeksu
string
connectionString =
"Provider= \"MSIDXS\";Data
Source=\"NazwaIndeksu\";"
);
//utworzenie obiektu połączenia
OleDbConnection
connection =
new
OleDbConnection
(connectionString);
//zapytanie
string
query =
"SELECT Path FROM scope() Where ... ;"
;
//utworzenie komendy, powiązanie jej z połączeniem
OleDbCommand
command =
new
OleDbCommand
(query, connection);
//otwarcie połączenia
connection.Open();
//wykonanie komendy
OleDbDataReader
reader = command.ExecuteReader();
9
OLE DB (ang. Object Linking and Embedding, Database, czasem opisywany jako OLEDB lub OLE-
DB) - interfejs programistyczny firmy Microsoft służący do uzyskiwania dostępu do danych. Jest to
obiekt COM, który funkcjonuje w podobny sposób jak ODBC, ale w odniesieniu do dowolnego źródła
danych, a nie tylko baz danych SQL.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
31
Magdalena Kruczek Praca Magisterska
Wykorzystanie usługi Indexing Service.
Usługa indeksowania została wykorzystana w niniejszej pracy jako opcjonalny
element wspomagający wyszukiwanie obiektów przeniesionych z monitorowanej
struktury. Aplikacja FilM dostarcza bardzo prostego interfejsu pozwalającego na
dodawanie obszarów do indeksowania, konfiguracje samej usługi jak i jej
przeszukiwanie. Użytkownik może dodawać katalogi które będą później indeksowane
przez systemową usługę. Będzie miało to sens dla katalogów spoza monitorowanej
struktury i znacznie przyśpieszy ich znajdowanie (po nazwie lub zawartości)
w przypadku gdy zostaną one przeniesione w obszar nie monitorowany przez FilM.
4.3 SQLite
SQLite jest biblioteką, która implementuje silnik SQL. Daje możliwość używania
bazy danych bez konieczności uruchamiania osobnego procesu serwera. Chociaż jest
biblioteką napisaną w języku C, to posiada również API do innych języków
programowania takich jak Perl, PHP (od wersji PHP5 biblioteka standardowo
dołączana), Ruby, C++, Python, Java, Tcl, Visual Basic i oczywiście do platformy
.NET. O SQLite nie należy myśleć jako o zastępstwie dla Oracle czy MS SQL a raczej
jako o zamienniku funkcji fopen() [9]. Na domowej stronie Harvard Mathematics
Department Computing ta baza danych została opisana jako „prosta, mała, szybka
i niezawodna” [11].
Zawartość całej bazy danych przechowywana jest na dysku w jednym pliku, który może
osiągnąć rozmiar nawet do dwóch terabajtów. Niewątpliwie zaletą, którą doceni każdy
użytkownik aplikacji opartej o tę właśnie bazę danych jest fakt, iż nie wymaga ona
żadnej instalacji ani konfiguracji. Ponieważ wszystkie dane znajdują się w jednym
pliku, mogą one być łatwo przenoszone pomiędzy różnymi maszynami.
SQLite udostępnia większość standardu ANSI SQL-92, oraz transakcje ACID.
Jest jednak kilka cech, których użytkownikowi innych baz danych może brakować.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
32
Magdalena Kruczek Praca Magisterska
W SQLite, jak do tej pory, zabrakło:
• Kluczy obcych (Foreign Key), które zapewniają integralność danych (nie można
odwołać się do rekordu w innej tabeli, który nie istnieje).
• Niektórych możliwości, które zazwyczaj daje polecenie ALTER TABLE. W
SQLite nie można użyć wariantu ALTER TABLE takiego jak DROP
COLUMN (usuwanie kolumny) czy ADD CONSTRAINT (dodanie
ograniczenia np. klucza podstawowego).
• Operacji prawostronnego złączenia RIGHT OUTER JOIN, oraz pełnego
złączenia FULL OUTER JOIN.
• Pełnej obsługi wyzwalaczy (TRIGGER). Pominięta została możliwość wyrobu
FOR EACH STATEMENT (wyzwalacz zadziałałby dla całej operacji),
domyślnie więc wyzwalacze tworzone są z opcją FOR EACH ROW (wyzwalacz
zadziała dla każdego wiersza). Pominięta również została opcja INSTEAD OF
dla tabel (możliwe tylko dla widoków), której „ustawienie” powoduje, że trigger
zostanie wykonany zamiast zdarzenia, które go uruchomiło.
• Możliwości wykonania operacji DELETE, INSERT I UPDATE dla widoków
(VIEWS).
• Obsługi zagnieżdżonych transakcji.
• Instrukcji GRANT (nadawanie praw użytkownikom do wykonywania instrukcji)
oraz instrukcji REVOKE (odbieranie praw użytkownikom).
Typy danych obsługiwanych w SQLite.
SQLite, w odróżnieniu od większości baz danych, nie używa statycznej kontroli
typów. Typ wartości jest rozpoznawany na podstawie określonych zasad i zapisywany
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
33
Magdalena Kruczek Praca Magisterska
jako obiekt jednej z dostępnych klas. Możliwa więc staje się sytuacja, że w kolumnie
z zadeklarowanym typem znajdzie się wartość nieodpowiadająca temu typowi.
Przechowywanie danych zgodnych z typem kolumny jest „tylko” zalecane, ale nie jest
wymagane (niemniej jednak stosowanie się do zaleceń zwiększa kompatybilność
pomiędzy SQLite i innymi bazami danych).
Klasy składowania oraz zasady rozpoznawania typu wartości:
• NULL – wartości NULL
• INTEGER – wartości, które nie są opatrzone cudzysłowem, nie posiadają
separatora dziesiętnego (przecinka lub kropki), nie posiadają wykładnika,
• REAL – wartości, które nie są opatrzone cudzysłowem i posiadają wykładnik
lub separator dziesiętny,
• TEXT – wartości zapisane w pojedynczym lub podwójnym cudzysłowie,
• BLOB – wartości dostarczone przy użyciu sqlite3 bind *
Typy kolumn
Ponieważ typ danych określany jest na podstawie wartości a nie typu kolumny,
każda kolumna może przechowywać dane dowolnego typu. Wyjątek stanowi kolumna
określona jako PRIMARY KEY (klucz główny), która musi zawierać liczbę całkowitą.
Do czego więc potrzebna jest deklaracja typu kolumny? Na jego podstawie jest
dobierana metoda porównania i sortowania.
Twórcy SQLite zdecydowali się również na konwersję typów.
W kolumnie typu TEXT powinny być przechowywane dane należące do klas NULL,
TEXT lub BLOB. Jeżeli do takiej kolumny nastąpi próba zapisania danych liczbowych,
to jeszcze przed zapisem zostaną one przekonwertowane do postaci tekstowej. Jeżeli
wystąpi sytuacja odwrotna, czyli do kolumny typu liczbowego będą zapisywane dane
typu tekstowego, SQLite będzie próbował je przekonwertować do typu liczbowego.
I odpowiednio, jeśli dane będą umieszczane w kolumnie typu NUMERIC, zostanie
podjęta próba przekonwertowania ich do typu INTEGER lub REAL. Jeśli próba się
powiedzie to właśnie tak zostaną zapisane, jeśli nie, to zostaną zachowane w postaci
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
34
Magdalena Kruczek Praca Magisterska
tekstowej. Podobnie będzie to wyglądało w przypadku zapisu do kolumny typu
INTEGER, z tym, że będą dodatkowo sprawdzane typowe ograniczenia dla tego typu.
Jeżeli chodzi o typ REAL również przebiega to podobnie, ale ze względu na
wewnętrzną optymalizację „małe” liczby bez części ułamkowych przechowywane na
dysku będą w postaci liczb całkowitych, a przy odczycie będą konwertowane do liczb
zmiennoprzecinkowych.
Udostępniane przez SQLite typy kolumn:
• TEXT
• NUMERIC
• INTEGER
• REAL
• NONE
Kiedy SQLite się sprawdzi?
Jeżeli potrzebna jest baza, która ma być prosta w obsłudze, łatwa
w administrowaniu, utrzymywaniu i dostosowywaniu, w sytuacjach kiedy prostota jest
ważniejsza od skomplikowanych funkcjonalności to SQLite jest właściwym wyborem.
Należy unikać SQLite w sytuacji gdy bazy danych będzie używać jednocześnie wielu
użytkowników. Jeżeli zaistnieje sytuacja, w której te same dane będzie modyfikował
więcej niż jeden użytkownik w tym samym czasie to może dojść do uszkodzenia bazy.
SQLite udostępniany jest na licencji typu Public Domain. Używając tę bazę danych nic
nie można stracić (oprócz czasu oczywiście), a pewnie niemało zyskać, chociażby
doświadczenie i możliwość zapoznania się z nowym podejściem do zagadnienia baz
danych. SQLite ciągle jest rozwijany, coraz bardziej popularny, więc może warto mu
się bliżej przyjrzeć.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
35
Magdalena Kruczek Praca Magisterska
SQLite Administrator [12]
Powstały różne narzędzia służące do administrowania bazą danych. Ponieważ SQLite
nie potrzebuje zbyt wiele „opieki” to narzędzia też nie są zbyt skomplikowane
w użyciu.
Rysunek 6. SQLite Administrator
Przykładowe narzędzie (Rysunek 6) umożliwia utworzenie pliku bazy danych oraz
wykonanie wszystkich podstawowych operacji SQL. Umożliwia również tworzenie
widoków (VIEWS) i wyzwalaczy (TRIGGER). Pozwala też na eksport danych do
plików typu CSV, XLS, HTML oraz XML, niestety import możliwy jest jedynie
z plików CSV. SQLite Administrator jest darmowy pod warunkiem, że nie jest
używany komercyjnie.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
36
Magdalena Kruczek Praca Magisterska
5. Opis systemu „FilM”
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
37
Magdalena Kruczek Praca Magisterska
Aplikacja FilM została napisana przy użyciu języka C# (w wersji 3.0, dla
którego środowiskiem uruchomieniowym jest .NET Framework wersja 3.5) w systemie
operacyjnym Microsoft Windows XP (wersja 2002). Środowisko programistyczne jakie
zostało wykorzystane do pracy nad programem to darmowy Microsoft Visual Studio C#
2008 Express Edition. Nazwa aplikacji FilM pochodzi od słów File (plik) oraz
Monitoring (monitorowanie)
Ideą aplikacji jest, kontrolowany przez użytkownika, monitoring wybranej
struktury danych. Monitoring oznacza tutaj możliwość sprawdzenia zmian, które zaszły
w obserwowanej strukturze plików od czasu ostatniego pobrania informacji
dotyczących tejże struktury i umożliwiających tę weryfikację. Użytkownik, aby
rozpocząć obserwację plików zawartych w strukturze danych, musi utworzyć projekt
(proces tworzenia projektu opisany został w dalszej części). Projekt w tym przypadku
oznacza zbiór informacji o każdym z plików monitorowanej struktury, uporządkowany
w określony sposób. Wszystkie dane potrzebne do weryfikacji pobierane są
automatycznie przy tworzeniu projektu. Aby zapewnić możliwość weryfikacji zmian
w strukturze również po ponownym uruchomieniu aplikacji, wszystkie dane, po
wybraniu przez użytkownika odpowiedniej opcji, zostaną zapisane w bazie danych.
Informacje odczytane z bazy danych (dla konkretnego projektu) porównane zostaną
z sytuacją rzeczywistą, zastaną w monitorowanej strukturze danych. W zależności od
zmian, jakie zaszły w wybranym katalogu, każdy z plików przyporządkowany zostanie
do jednej z wymienionych grup – plik usunięty, plik dodany, plik przeniesiony, zmiana
zawartości, zmiana nazwy, plik niezmieniony. Dla każdej z grup plików dostępne
będzie dedykowane menu. Opcje w menu pozwolą (oczywiście w zależności od grupy
pliku) na przywrócenie poprzedniego stanu pliku lub na zaakceptowanie zmiany.
Elementem dodatkowym, mogącym ułatwić użytkownikowi pracę z plikami są
atrybuty. Dla każdego projektu możliwe jest zdefiniowanie dodatkowych atrybutów,
których wartości będą o typie tekstowym, liczbowym lub w formacie daty. Atrybuty
definiowane dla projektu w rzeczywistości będą pełniły funkcję dodatkowych własności
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
38
Magdalena Kruczek Praca Magisterska
dla każdego pliku. Dzięki tak stworzonym atrybutom użytkownik będzie mógł
przeszukiwać strukturę plików (w oparciu o wartości atrybutów).
W systemie udostępniona została również możliwość ciągłego monitorowania struktury
danych w trakcie działania aplikacji. Jest to osobny moduł aplikacji FilM. Pomimo
zbieżności nazw, monitorowanie struktury danych i monitorowanie struktury danych
w czasie rzeczywistym są różnymi modułami i działają od siebie niezależnie. Efekt
działania obu modułów jest podobny, różnią się jednak przeznaczeniem. Dzięki
obserwacji w czasie rzeczywistym użytkownik zobaczy, że plik został dodany lub
usunięty ze struktury danych a także, że już istniejący został edytowany zaraz po
nastąpieniu tego zdarzenia.
Rysunek 7 przedstawia przypadki użycia, czyli możliwe funkcje, które system
udostępnia.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
39
Magdalena Kruczek Praca Magisterska
Rysunek 7. Diagram przypadków użycia.
Okno główne aplikacji
Główne okno aplikacji (Rysunek 8) składa się z pięciu paneli i menu. W panelach
znajdują się informacje dotyczące projektów i plików w nich zawartych, takie jak lista
projektów (panel nr 2), lista plików w projekcie (panel nr 1), atrybuty dla konkretnego
pliku lub projektu (panel nr 4). Panel nr 5 wykorzystywany jest w trakcie działania
monitoringu w czasie rzeczywistymi, natomiast panel nr 3 generowany jest na
podstawie zdefiniowanych dla projektu atrybutów. W menu dostępne opcje umożliwiają
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
40
Magdalena Kruczek Praca Magisterska
zapis, otwarcie oraz utworzenie nowego projektu a także konfigurację atrybutów oraz
usługi indeksowania.
Rysunek 8. Okno główne aplikacji.
Obszar nr 1
W panelu tym znajduje się lista monitorowanych plików.
Obszar nr 2
Na ten obszar składa się panel, którym znajduje się lista różnych projektów a także
przyciski „Monitoruj” oraz „Stop”. Kliknięcie w przycisk „Monitoruj” rozpoczyna
monitorowanie struktury w czasie rzeczywistym, proces ten zostaje zatrzymany po
kliknięciu w przycisk „Stop”.
Obszar nr 3
Panel znajdujący się w tym obszarze składa się z dwóch zakładek. W zakładce „Edytor
atrybutów” użytkownik będzie mógł wprowadzić wartości atrybutów dla każdego pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
41
Magdalena Kruczek Praca Magisterska
Zakładka Filtrowanie to dynamicznie generowany (w zależności od zdefiniowanych
atrybutów) zestaw filtrów.
Obszar nr 4
W obszarze tym umieszczony został panel (siatka właściwości, z ang. Property Grid),
w którym znajdą się wszystkie stałe atrybuty, zarówno dla plików jak i dla projektów,
wraz z wartościami pozyskanymi w trakcie tworzenia projektu jak i działania aplikacji.
Informacje widoczne będą po zaznaczeniu konkretnego pliku lub projektu.
Siatka właściwości dla projektu
Rysunek 9. Siatka właściwości dla projektu.
Atrybuty projektu:
• Maksymalna wielkość pliku – maksymalna wielkość pliku, którego zawartość
zostanie zapisana w bazie danych.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
42
Magdalena Kruczek Praca Magisterska
• Autor - autor projektu.
• Katalog główny – ścieżka do obserwowanej struktury.
• Nazwa – nazwa projektu.
• Utworzono – data utworzenia projektu.
Siatka właściwości dla pliku
Rysunek 10. Siatka właściwości dla pliku.
Atrybuty pliku
• Katalog – nazwa katalogu, w którym znajduje się plik.
• Nazwa – nazwa pliku.
• Rozmiar – rozmiar pliku.
• Sygnatura – wartość funkcji skrótu.
• Ścieżka – ścieżka do pliku.
• Utworzono – data utworzenia pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
43
Magdalena Kruczek Praca Magisterska
• Zmodyfikowano – data ostatniej modyfikacji.
• Autor – autor pliku (wartość zależy od użytkownika).
• Opis – ogólne opis pliku (wartość zależy od użytkownika).
Obszar nr 5
W oknie tym pojawiać się będą komunikaty, jeśli zostanie uruchomiony monitoring
w czasie rzeczywistym.
Obszar nr 6
Na obszar ten składa się menu oraz filtr, który umożliwia przeszukiwanie listy plików
po nazwie.
Opcje dostępne w menu:
• Projekt
o Nowy Æ Monitorowanie struktury plików – opcja pozwala na przejście
do okna tworzenia nowego projektu.
o Otwórz – opcja pozwala na otwarcie projektu.
o Zapisz – opcja pozwala na zapisanie projektu.
• Ustawienia
o Indeksowanie – opcja pozwala na przejście do okna konfiguracji usługi
indeksowania.
o Atrybuty – opcja pozwala na przejście do okna definiowania atrybutów.
Utworzenie projektu.
Aplikacja umożliwia utworzenie nowego projektu poprzez wybór odpowiedniej opcji
z menu w głównym oknie aplikacji.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
44
Magdalena Kruczek Praca Magisterska
Rysunek 11. Wybór opcji umożliwiającej przejście do okna tworzenia projektu.
Rysunek 12 przedstawia okno umożliwiające skonfigurowanie i utworzenie projektu.
Przy tworzeniu nowego projektu należy podać takie informacje jak:
• Nazwa – podanie nazwy projektu jest wymagane, aby ułatwić późniejszą
identyfikację..
• Autor - możliwe jest również podanie nazwy autora projektu, nie jest to jednak
wymagane.
• Katalog główny – użytkownik musi wybrać katalog główny, który będzie pełnił
funkcję korzenia w drzewie katalogów. Wszystkie pliki znajdujące się w tym
drzewie zostaną dodane do listy monitorowanych plików.
• Typy plików – użytkownik może określić typy plików, które mają być
monitorowane np. tylko pliki z rozszerzeniem .txt. Możliwe do wybrania są typy
plików: txt, doc, docx, pdf, xls, xlsx, JPG, bmp, avi, mp3, gif lub opcja
„wszystkie typy plików”. Zaznaczenie opcji „wszystkie typy plików”
spowoduje, że monitorowane będą wszystkie pliki z wybranej struktury, nawet
te, których rozszerzenia nie znajdują się na liście możliwych do wybrania.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
45
Magdalena Kruczek Praca Magisterska
Rysunek 12. Okno umożliwiające utworzenie nowego projektu.
Po skonfigurowaniu nowego projektu, w oknie głównym pojawią się wszystkie pliki
z wybranego wcześniej folderu oraz wszystkich jego pod-folderów (Rysunek 11). Dla
każdego z tych plików obliczona zostanie wartość funkcji skrótu. Użytkownik, za
pomocą znaków graficznych znajdujących się przed nazwą pliku, informowany jest
o tym, które pliki mają już taką wartość obliczoną ( ikona ) i dla którego z plików ta
wartość jest właśnie obliczana (ikona
).
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
46
Magdalena Kruczek Praca Magisterska
Rysunek 13 Główne okno aplikacji.
Zapis projektu
Wybór opcji „Zapisz” z podmenu „Projekt” powoduje przejście do standardowego (dla
systemu Windows) okna zapisu pliku (Rysunek 14).
Na wykonanie tej operacji składa się zapis informacji do pliku jak i do bazy danych.
W pliku przechowywana będzie nazwa projektu i jego identyfikator bazodanowy. Plik
taki zostanie opatrzony rozszerzeniem „mnf”, aby łatwo można było rozpoznać projekt
utworzony w tej aplikacji. Rozszerzenie takie również aplikacji umożliwi identyfikację
pliku. Tylko z takich plików będzie ona w stanie odczytać odpowiednie informacje.
Informacje te pozwolą na identyfikację zarówno projektu jak i wszystkich plików przy
otwieraniu projektu.
Otwarcie projektu
Po wybraniu opcji „otwórz” i wskazaniu konkretnego pliku .mnf zostaną odczytane
zawarte w nim informacje. Na podstawie tych informacji możliwe będzie
zidentyfikowanie wszystkich informacji znajdujących się w bazie danych
a przypisanych do tego projektu.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
47
Magdalena Kruczek Praca Magisterska
Rysunek 14. Okno zapisu i otwarcia projektu.
Konfiguracja usługi indeksowania
Indeksowanie. W menu dostępna jest opcja konfiguracji indeksowania. Dzięki tej
funkcjonalności możemy wymusić na usłudze Windowsowej indeksowanie struktury
danych.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
48
Magdalena Kruczek Praca Magisterska
Rysunek 15. Okno umożliwiające dodawanie katalogów do indeksów.
Dostępne opcje:
• Uruchom ponownie usługę. Zaznaczenie tej opcji spowoduje wyłączenie usługi
indeksowania i ponowne jej uruchomienie.
• Wymuś indeksowanie. Jeśli opcja ta będzie zaznaczona i użytkownik kliknie
przycisk „Dodaj >>”, spowoduje, że po zakończeniu wszystkich wcześniejszych
operacji wykonywanych przez aplikację, rozpocznie się proces indeksowania
dodanych plików. Proces ten zostanie jednak przerwany jeżeli użytkownik
wykaże jakąkolwiek aktywność w systemie (zostanie wznowiony przy braku
takiej aktywności).
• Wymuś automatyczny start usługi indeksowania. Ponieważ usługa
indeksowania może zostać zatrzymana, zaznaczenie tej opcji spowoduje
uruchomienie usługi przy starcie systemu operacyjnego.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
49
Magdalena Kruczek Praca Magisterska
• Dodaj do nowego indeksu. Użytkownik zaznaczając tę opcję wymusi
utworzenie nowego indeksu FilMIndex w usłudze (jeśli jeszcze nie został
dodany) i dodanie do niego wybranej struktury plików.
• Użyj indeksu systemowego. Po zaznaczenie tej opcji, aplikacja doda strukturę
do istniejącego indeksu systemowego.
Atrybuty
Ta opcja umożliwi użytkownikowi zdefiniowanie dodatkowych atrybutów dla
konkretnego projektu (rozdz. 5.1).
5.1 Struktura bazy danych
W bazie danych przechowywane będą wszelkie informacje dotyczące
monitorowanej struktury danych (wybranego przez użytkownika katalogu oraz
wszystkich plików w nim zawartych).
Zaproponowana struktura bazy danych umożliwi przechowywanie wszystkich,
potrzebnych informacji dotyczących zarówno projektu jak i monitorowanych plików
w obrębie tego projektu.
Rysunek 7 przedstawia strukturę bazy danych wykorzystywaną w aplikacji. Składa się
z trzech tabel relacyjnie ze sobą powiązanych. Każda z tabel posiada kolumnę
z unikalnymi wartościami zwaną kluczem głównym (na rysunku oznaczone symbolem
kluczyka). W tabelach znajdują się również tzw. klucze obce (kolumny posiadające
referencje do kluczy prywatnych innych tabel). Ponieważ w SQLite nie istnieje pojęcie
klucza obcego, integralność danych trzeba zapewniać programowo. W każdej z tabel
przechowywane są dane obiektu określonego typu.
Projektowana struktura bazy danych powinna charakteryzować się możliwie prostą
budową, zapewniającą przy tym możliwość przechowywania wszystkich potrzebnych
danych. W trakcie projektowania bazy danych należy również pamiętać, że należy
danym zapewnić integralność nie narażając się przy tym na redundancję.
Dla każdego projektu możliwe jest zdefiniowanie nieokreślonej ilości atrybutów.
Osobna tabela, przechowująca dla każdego pliku wartości atrybutów mogłaby się
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
50
Magdalena Kruczek Praca Magisterska
składać z kolumn zawierających: klucz główny, nazwę atrybutu, wartość atrybutu,
referencje do pliku (klucz główny odpowiadający określonemu plikowi) i ewentualnie
referencje do projektu. Rozwiązanie takie nie zostało jednak wykorzystane, ponieważ
dane byłyby powtarzane (redundancja np. nazwy atrybutu), co prowadziłoby do
niepotrzebnego wzrostu rozmiaru pliku przechowującego informacje (SQLite wszystkie
dane przechowuje w jednym pliku). Drugi sposób, zastosowany w projektowanej
aplikacji, polega na zapisie nazw wszystkich, zdefiniowanych w projekcie, atrybutów
w jednym polu tekstowym (w tabeli PROJECT). Wartości tych atrybutów dla
konkretnego pliku również będą zapisane w jednym polu tekstowym, tym razem
w tabeli FILE. Aby móc wyodrębnić poszczególne nazwy jak i wartości atrybutów
powinny być one rozdzielone ustalonym znakiem specjalnym (w przypadku aplikacji
FilM będzie to średnik). Oczywiście taki zapis zapewniony będzie programowo. Aby
odczyt takich informacji był poprawny, w polu, w którym przechowywane są nazwy
i wartości atrybutów nie może się znaleźć żaden znak specjalny (w tym przypadku
średnik), ponad te które zostały zapisane przez system. Z tego powodu użytkownik nie
będzie mógł używać tego znaku zarówno podczas definiowania atrybutów jak
i przypisywaniu odpowiednich wartości dla plików. Aby wykluczyć przypadkowe
użycie takiego znaku, na polach tekstowych zostanie założona walidacja.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
51
Magdalena Kruczek Praca Magisterska
Rysunek 16. Schemat struktury bazy danych.
Relacje między tabelami w strukturze bazy danych.
Relacje
między tabelami umożliwiają podział bazy danych na tabele. Klucze
główne i obce zapewniają możliwość dopasowania odpowiednich rekordów z różnych
tabel. Dzięki takiemu podziałowi bazy danych uniknąć można redundancji danych,
czyli niepotrzebnego zapisu tych samych informacji kilkakrotnie.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
52
Magdalena Kruczek Praca Magisterska
Relacje w strukturze bazy danych aplikacji FilM:
• Relacja pomiędzy tabelami PROJECT i FILE określona została jako jeden do
wielu. Wynika z tego, że jeden rekord w tabeli FILE może posiadać relację tylko
do jednego rekordu w tabeli PROJECT, oraz to, że różne rekordy z tabeli FILE
mogą posiadać relacje do tego samego rekordu w tabeli PROJECT.
• Relacja pomiędzy tabelami FILE i FILE_VERSION również została określona
jako jeden do wielu.
Typy danych oraz opis kolumn w tabelach.
Tabela PROJECT zawiera informacje dotyczące utworzonego przez użytkownika
projektu.
Tabela 1. Struktura tabeli PROJECT
Nazwa
Typ
Opis
PRO_ID Integer
Klucz
główny tabeli
PRO_NAME
Text
Nazwa projektu utworzonego przez
użytkownika
PRO_CREATION_TIME
Date
Data utworzenia projektu
PRO_LAST_MODIFICATION Date Data
ostatniej modyfikacji projektu
PRO_ROOT_FOLDER_PATH Text
Ścieżka do wybranej struktury
PRO_AUTHOR
Text
Nazwa autora projektu
PRO_FILTERS_NAME Text
Nazwy
zdefiniowanych pól (filtrów)
W tabeli FILE przechowywane są wszystkie niezbędne informacje dotyczące każdego
pliku dodanego w projekcie.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
53
Magdalena Kruczek Praca Magisterska
Tabela 2. Struktura tabeli FILE
Nazwa
Typ
Opis
FIL_ID Integer
Klucz
główny tabeli
FIL_PRO_ID
Integer
Klucz obcy do tabeli PROJECT
FIL_NAME Text
Nazwa
pliku
FIL_PATH Text
Ścieżka do pliku
FIL_PARENT Text
Nazwa
katalogu w którym znajduje się
plik
FIL_SIZE Integer
Rozmiar
pliku
FIL_AUTHOR Text
Autor
pliku
FIL_HASH_CODE Text Wartość funkcji skrótu
FIL_CREATION_TIME
Date
Data utworzenia pliku
FIL_LAST_WRITE_TIME Date
Data ostatniej modyfikacji pliku
FIL_DESCRIPTION Text Opis
pliku
FIL_FILERS_VALUE Text
Wartości pól zdefiniowanych
W tabeli FILE_VERSION mogą być przechowywane zawartości poszczególnych
plików w postaci binarnej.
Tabela 3. Struktura tabeli FILE_VERSION
Nazwa
Typ
Opis
FVE_ID Integer
Klucz
główny tabeli
FVE_FIL_ID
Integer
Klucz obcy do tabeli FILE
FVE_PRO_ID Integer
Klucz obcy do tabeli PROJECT
FVE_BINARY_DATA Blob
Zawartość pliku w postaci binarnej
5.2 Monitorowanie zmian w strukturze plików.
Pierwszym z dwóch sposobów, w który można obserwować wybraną strukturę
jest monitorowanie w czasie rzeczywistym. Wybór tego sposobu jest opcjonalny
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
54
Magdalena Kruczek Praca Magisterska
i działa tylko w czasie gdy aplikacja jest uruchomiona. Użytkownik, wybierając tę opcję
będzie otrzymywał informację o konkretnej zmianie, która zaszła w monitorowanej
strukturze danych. Zdarzenia o których informacje będą przekazywane to utworzenie
pliku lub katalogu, usunięcie pliku lub katalogu oraz zmiana pliku. Przy zdarzeniach
dotyczących plików (utworzenie, edycja oraz usunięcie) użytkownik otrzyma również
informację, że katalog, w którym plik jest umieszczony, został zmieniony.
Każdy komunikat dla pliku i katalogu składa się z następujących informacji: daty
i godziny zdarzenia, informacji o typie zdarzenia (utworzono plik, edytowano plik,
usunięto plik), nazwy edytowanego katalogu oraz nazwy pliku (lub tylko nazwy
katalogu, jeżeli zdarzenie nie dotyczyło żadnego pliku)
Rysunek 17. Komunikaty o zdarzeniach w monitorowanej strukturze.
W przykładzie, którego wynik przedstawiony jest na rysunku nr 17, wykonane zostały
dwie zmiany w monitorowanej strukturze.
Pierwszą było dodanie pliku „Nowy plik tekstowy.txt”. W takim przypadku użytkownik
otrzyma dwa komunikaty zwrotne. Pierwszy – informację o utworzeniu pliku, i drugi –
informację o edycji katalogu w którym plik został utworzony.
Drugą zmianą w strukturze było przeniesienie, wcześniej utworzonego pliku, do innego
katalogu (znajdującego się w obrębie projektu). W takim przypadku zwrócone zostaną
cztery komunikaty zwrotne, ponieważ operacja przeniesienia pliku w system
operacyjnym wykonywana jest w dwóch krokach. Przeniesienie to nic innego jak
usunięcie pliku i utworzenie go w innej lokalizacji, dlatego pierwszym komunikatem
zwrotnym będzie informacja o usunięciu pliku a drugim informacja o utworzeniu pliku.
Trzeci i czwarty komunikat to będzie informacja o edytowaniu katalogu z którego plik
został przeniesiony i o edytowaniu katalogu docelowego dla pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
55
Magdalena Kruczek Praca Magisterska
Drugi sposób monitorowania struktury działa również w przypadku gdy aplikacja nie
jest uruchomiona. Wybór opcji „Weryfikuj” z menu kontekstowego dla projektu
pozwala na sprawdzenie zmian, jakie wydarzyły się w strukturze od czasu zapisu
projektu do bazy danych. Każdy plik, w zależności od zmian jakie zaszły w stosunku
do niego, zostanie zaklasyfikowany do jednej z sześciu grup: plik dodany, plik usunięty,
plik przeniesiony, zmieniona zawartość, zmieniona nazwa oraz plik niezmieniony.
Użytkownik będzie mógł rozpoznać grupę w jakiej znalazł się plik po ikonie
umieszczonej przy jego nazwie.
Tabela 4. Symbole odpowiadające grupom plików.
Symbol Grupa
Plik dodany
Plik usunięty
Plik przeniesiony
Zmieniona zawartość
Zmieniona nazwa
Plik niezmieniony
Podczas wykonywania operacji weryfikacji porównywane są informacje
przechowywane w zmiennych obiektu, utworzonego dla każdego monitorowanego
pliku, oraz rzeczywiste informacje odczytane w danym momencie ze struktury.
Porównywanie dla każdego pliku wygląda tak samo. W pierwszej kolejności
sprawdzone zostaje czy pod zapisaną ścieżką rzeczywiście istnieje taki plik. Następnie
porównane zostają daty ostatniej modyfikacji, jeżeli dla konkretnego pliku
informacje
są identyczne to plik zostaje zaklasyfikowany do grupy „plik niezmieniony”. Następnie,
dla plików rzeczywistych, które pozostały niezaklasyfikowane, wyliczane są wartości
funkcji skrótu. Zostają one porównane z wartościami funkcji plików zapisanych
w projekcie. Jeżeli wartość funkcji haszującej dla pliku rzeczywistego zostanie
odnaleziona w zapisanych danych, oznacza to że plik ten istniał w strukturze już
wcześniej. Jeżeli plik zostanie zidentyfikowany po jego wartości HashCode, oznaczać
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
56
Magdalena Kruczek Praca Magisterska
to może, że albo została zmieniona jego nazwa, albo został przeniesiony. Jeżeli
zmodyfikowana została tylko nazwa, to pliki (rzeczywisty i zapisany) powinny
znajdować się w tym samym folderze. Jeśli tak rzeczywiście jest to trafia on do grupy
„Zmieniona nazwa”. W przypadku gdy nazwy katalogów się nie zgadzają, oznacza to,
że plik został przeniesiony i do takiej też grupy zostanie zaklasyfikowany.
W następnym kroku poszukiwane będą te pliki, których wartość została zmieniona. Aby
plik trafił do tej grupy musi spełniać następujące warunki: nie zostały zaklasyfikowane
wcześniej do żadnej grupy, lokalizacja pliku nie została zmieniona oraz nazwa pliku
zapisanego zgadza się z nazwą pliku rzeczywistego. Na koniec zostały dwie grupy
plików. Pierwsza z nich to pliki znajdujące się w projekcie i nie odnalezione
w rzeczywistej strukturze. Takie pliki uznane zostają za usunięte i zaklasyfikowane do
takiej grupy. Ostatnia gromada to pliki które istnieją w strukturze rzeczywistej ale nie
mają swoich odpowiedników w projekcie. Dla każdego z tych plików stworzony
zostanie nowy obiekt typu ProjectFile
, który dopisany będzie do listy w projekcie.
Tabela 5. Wymagane zgodności atrybutów dla poszczególnych grup plików.
Symbol Grupa Ścieżka
Data modyfikacji Nazwa pliku
Sygnatura
Folder
Plik usunięty -
-
-
- -
Plik przeniesiony
-
-
+
+
-
Zmieniona zawartość +
-
+
-
+
Zmieniona nazwa
-
-
-
+
+
Plik niezmieniony
+
+
+
Opcje dla projektu dostępne w menu kontekstowym
.
• Weryfikuj. Po wybraniu tej opcji, dane zaczytane z bazy danych, porównane
zostaną z plikami znajdującymi się aktualnie w strukturze, która jest
monitorowana.
10
ProjectFile – klasa przechowująca informacje o pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
57
Magdalena Kruczek Praca Magisterska
• Monitoruj. Opcja pozwala na rozpoczęcie monitoringu struktury w trakcie
działania aplikacji.
• Sprawdź lokalizację. Opcja pozwala na sprawdzenie czy katalog (wybrana
struktura danych) istnieje.
Opcje dla plików dostępne w menu kontekstowym.
Każdy plik, po zweryfikowaniu, zostanie zaklasyfikowany do odpowiedniej grupy.
Dla każdej grupy dostępne będzie menu.
Tabela 6. Opcje menu dostępne dla poszczególnych grup plików.
Grupa
Dostępne opcje w menu
Plik niezmieniony
otwórz
Plik przeniesiony
otwórz, przywróć lokalizację, akceptuj lokalizację
Plik dodany
otwórz
Plik usunięty usuń z kolekcji plików
Zmieniona zawartość
otwórz, akceptuj zmiany
Zmieniona nazwa
otwórz, akceptuj nazwę, przywróć poprzednią nazwę
• Otwórz. Wybranie opcji powoduje otwarcie pliku w odpowiednim dla typu
tego pliku programie.
• Przywróć lokalizację. Opcja dostępna dla plików, które zmieniły lokalizację
w obrębie monitorowanej struktury plików. Wybranie tej opcji spowoduje, że
plik zostanie przeniesiony w miejsce, na które wskazuje atrybut „Ścieżka”
(ścieżka, która wskazuje poprzednią, zaakceptowaną lokalizację pliku ).
• Akceptuj lokalizację. Wybranie opcji powoduje przypisanie do atrybutu
„Ścieżka” wartości będącej nową ścieżką do pliku. Oznacza to, że plik zostanie
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
58
Magdalena Kruczek Praca Magisterska
przeklasyfikowany do grupy „Plik niezmieniony” i będą dla niego dostępne,
odpowiednie dla tej grupy, opcje menu.
• Usuń z kolekcji plików. Wybranie tej opcji spowoduje usunięcie pliku
z kolekcji plików w projekcie.
• Akceptuj zmiany. Wybranie tej opcji spowoduje przeklasyfikowanie pliku do
grupy „Plik niezmieniony” oraz przypisanie do atrybutu „Sygnatura” wartości
funkcji skrótu wyliczonej dla pliku aktualnie znajdującego się w strukturze na
dysku (ze zmienioną zawartością).
• Akceptuj nazwę. Po wybraniu tej opcji do atrybutu „Nazwa” zostanie
przypisana wartość, będąca nową nazwą pliku.
• Przywróć poprzednią nazwę. Nazwa pliku zawartego w strukturze zostanie
zamieniona na wartość atrybutu „Nazwa”.
5.3 Definiowanie atrybutów i użycie filtrów
Moduł atrybutów został stworzony aby użytkownik mógł „opisywać” poszczególne
pliki bez konieczności ograniczania się tylko do ich nazwy. Nazwa nadawana plikom
jest bardzo pomocna w identyfikacji pliku. Jeżeli ma się do czynienia z dużą ilością
podobnych (w sensie typu) do siebie plików o nazwach, z których nie da się
wywnioskować informacji na temat zawartości, to pracę z takim zbiorem należy
zaklasyfikować jako, co najmniej, niewygodną.
Jako przykładu użyć można strukturę katalogów, zawierających zeskanowane strony
roczników opadowych. Dla każdego rocznika (jeden rok) można oczywiście utworzyć
osobny folder, jednak jak nazwać poszczególne pliki? Najlepiej tak, aby łatwo, szybko
i bez potrzeby otwierania określić co jest w środku. Może się to jednak wiązać
z nadaniem nazwy wieloczłonowej. Wprawdzie pozwoli to na szybki przegląd
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
59
Magdalena Kruczek Praca Magisterska
i wyszukiwanie odpowiednich plików, ale stanie się mało czytelne. Gdyby spróbować
nadać nazwę zeskanowanej stronie nr 36, z rocznika opadowego z roku 1979, która
zawiera część alfabetycznego spisu stacji i posterunków (od stacji Pogórze do stacji
Przełęcz Karkonoska), mogłaby ona brzmieć: „1978, opadowy, stacje, 36, Pogórze,
Przełęcz Karkonoska.jpg”. Oczywiście jest to nazwa tylko przykładowa i mogłaby ona
wyglądać zupełnie inaczej (np. tylko numer strony), w zależności od potrzeb właściciela
plików.
Aplikacja FilM daje możliwość definiowania dodatkowych „nazw” dla plików, czyli
atrybutów.
Definiowanie atrybutów
Aby przejść do definicji atrybutów, należy zaznaczyć projekt a następie z menu
„Ustawienia” wybrać opcję „Atrybuty”. Aby zdefiniować nowy atrybut należy podać
jego nazwę oraz wybrać jeden z dostępnych typów (Liczba, Tekst, Data) i dodać do
kolekcji.
Rysunek 18. Okno umożliwiające definiowanie nowych atrybutów.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
60
Magdalena Kruczek Praca Magisterska
Atrybuty te zdefiniowane zostały dla przykładowego projektu „Monitorowanie
struktury plików Roczniki Opadowe” przedstawionego na rysunku nr 20.
Dzięki takim atrybutom, każdy plik zyskuje dodatkowe, niezależne własności, których
wartości będą go opisywały.
Wartości dla zdefiniowanych atrybutów dodaje się poprzez „Edytor atrybutów”
przedstawiony na rysunku nr 19.
Rysunek 19. Edytor atrybutów.
Plik, dla którego wartości atrybutów widoczne są na rysunku nr 19, to plik z rocznika
opadowego z roku 1979. Jest on 106 stroną tego rocznika i przedstawia wysokości
dobowe opadów z sierpnia 1979 roku. Takie definicje atrybutów posiada każdy plik
w tym projekcie.
Filtry
Z jednej strony definiowanie atrybutów dla całego projektu może wdawać się
ograniczeniem, jednak z drugiej strony takie podejście daje nowe możliwości użycia
atrybutów. Możliwości te oczywiście w aplikacji zostały wykorzystane co
zaowocowało panelem filtrów.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
61
Magdalena Kruczek Praca Magisterska
Panel filtrów jest dynamicznie generowany na podstawie zdefiniowanych atrybutów.
Panel przedstawiony na rysunku nr 20 został wygenerowany dla atrybutów
zdefiniowanych jak na rysunku 19. Zasada generowania jest prosta, ile zdefiniowanych
atrybutów tyle dostępnych pól do filtrowania w panelu. Poza obszarem dodawanym
dynamicznie znajdują się części stałe, które pojawią się jeżeli zostanie zdefiniowany co
najmniej jeden atrybut.
Rysunek 20. Panel filtrów.
Jednym z takich „stałych” obiektów jest pole wyboru „Akceptuj pliki bez wartości dla
atrybutu”. Przykładowo jeżeli wyszukiwane są pliki, które są zeskanowanymi stronami
rocznika opadowego (wartość atrybutu „Typ rocznika” - opadowy) z roku 1979
(wartość atrybutu „Rok” = 1979), pole „Akceptuj pliki bez…” nie jest zaznaczone.
W takim przypadku zostaną wyszukane pliki, które dla atrybutu „Typ rocznika” mają
przypisaną wartość „Opadowy” i dla atrybutu „Rok” mają wartość „1979”. Gdyby
zaznaczone było pole „Akceptuj pliki bez…” zostałyby również wyszukane takie pliki,
które do tych atrybutów nie mają przypisanej wartości, czyli pliki które posiadać mogą
takie kombinacje wartości:
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
62
Magdalena Kruczek Praca Magisterska
Typ rocznika
Rok
Opadowy 1979
Opadowy Brak
wartości
Brak wartości 1979
Brak wartości Brak
wartości
Atrybuty „Strona” i Rodzaj” nie będą w przeszukiwaniu kolekcji plików uwzględnianie
ponieważ zostały wyłączone z procesu filtrowania (oznaczone są znakiem X).
Drugi stały element w panelu filtrów to opcja „Uwzględniaj tekst podobny”. Opcja ta
działa tylko dla atrybutów o typie tekstowym. Jeżeli nie jest zaznaczona, to
wyszukiwane są pliki, której wartość atrybutu jest dokładnie taka jak zdefiniowana
w filtrze. Dla podanego wcześniej przykładu (Rysunek 19, Rysunek 20) zostałyby
odnalezione tylko pliki, które dla atrybutu „Typ rocznika” mają wartość „opadowy”
(małe i duże litery nie są rozróżniane). Jeżeli, dla tego samego przykładu, opcja ta
zostałaby zaznaczona, to odnalezione zostałyby również pliki, których wartości atrybutu
„Typ rocznika” zawierają ciąg znaków „opadowy”.
Oczywiście zawsze w panelu filtrów znajdą się przyciski „Filtruj”, który powoduje
przeszukanie kolekcji plików, oraz „Zakończ filtrowanie”, po kliknięciu którego
z powrotem pojawi się cała lista.
5.4 Rozwój systemu
Jednym z pomysłów na rozwój aplikacji jest udostępnienie użytkownikowi
możliwości zapisywania kopii zapasowych plików. Kopie byłyby zapisywane w bazie
danych, która pod taką możliwość została już przygotowana. Oczywiście zapis
wszystkich plików, wiązałby się z potrzebą udostępnienia dwa razy większej ilości
miejsca (dla struktury i dla bazy danych), co nie zawsze byłoby zgodne
z oczekiwaniami użytkownika. Aby uchronić się przed takim problemem, użytkownik
w trakcie tworzenia projektu miałby możliwość ustalenia maksymalnej wielkości pliku,
który byłby zapisywany w bazie danych. Rysunek 21 przedstawia okno tworzenia
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
63
Magdalena Kruczek Praca Magisterska
projektu z zaznaczonym atrybutem „CashLimit”, za pomocą którego użytkownik
mógłby ustalić maksymalny rozmiar pliku.
Przechowywanie w bazie kopi pliku zapewniłoby ochronę zawartości przed usunięciem
lub modyfikacją.
Rysunek 21. Okno tworzenia nowego projektu.
Drugim rozwinięciem aplikacji mogłaby być opcja przeszukiwania indeksu w celu
odnalezienia określonego pliku. Obecnie, po dodaniu struktury do indeksu (usługa
indeksowania Windows), plik można wyszukać poprzez standardową wyszukiwarkę
systemu Windows (Start Æ Wyszukaj).
Tabela nr 6 przedstawia opcje menu kontekstowego dla poszczególnych grup plików,
rozszerzone o te, które będą dodane (zaznaczone na pomarańczowo) wraz z rozwojem
aplikacji.
• Przywróć poprzednią wersję. Po wybraniu tej opcji, zawartość pliku
w monitorowanej
strukturze
zostanie nadpisana danymi z bazy,
odpowiadającymi poprzedniej wersji pliku.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
64
Magdalena Kruczek Praca Magisterska
• Zapisz poprzednią wersję jako. Gdyby zawartość pliku została nieumyślnie
zmieniona, to opcja ta pozwoli zapisać na dysku wersję pliku, która znajduje się
w bazie danych.
• Szukaj w indeksie. W razie gdyby plik został usunięty lub przeniesiony metoda
wywołana po kliknięciu opcji „sprawdź lokalizację” zwróci nam informację, że
takiego pliku nie ma we wskazanym miejscu. Opcja „znajdź” pozwoli na
wyszukanie zaginionego pliku na podstawie jego nazwy lub frazy podanej przez
użytkownika. Opcja znajdź zadziała pod warunkiem, że katalog został wcześniej
dodany do listy katalogów indeksowanych.
Tabela 7. Opcje menu dostępne dla poszczególnych grup plików z dodatkowymi opcjami.
Grupa
Dostępne opcje w menu
Plik niezmieniony
otwórz
Plik przeniesiony
otwórz, przywróć lokalizację, akceptuj lokalizację
Plik dodany
otwórz
Plik usunięty przywróć, usuń z kolekcji plików,
szukaj w indeksie
Zmieniona zawartość
otwórz, akceptuj zmiany
, przywróć poprzednią wersję
,
zapisz
poprzednią wersję jako
Zmieniona nazwa
otwórz, akceptuj nazwę, przywróć poprzednią nazwę
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
65
Magdalena Kruczek Praca Magisterska
6. Wnioski
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
66
Magdalena Kruczek Praca Magisterska
Aplikacja, przedstawiona w niniejszej pracy, umożliwia użytkownikowi
monitorowanie zmian w wybranej strukturze plików a także konfigurowanie atrybutów,
które mogą stanowić dodatkowe opisy plików.
W przypadku struktury plików, zawierającej np. skany roczników hydrologicznych,
użytkownik korzystający z programu FilM będzie miał możliwość zaobserwowania
następujących zmian:
• Dodanie nowych plików do struktury. Jeżeli w strukturze zostanie zapisany nowy
plik, będzie on automatycznie dodany do projektu (w trakcie weryfikacji zmian).
Ponieważ każdy plik w projekcie ma zdefiniowane stałe atrybuty, również dla
nowych plików wartości atrybutów będą pokazane w siatce właściwości (Rysunek
10). Użytkownik będzie miał możliwość sprawdzenia np. kiedy plik został
utworzony lub w którym katalogu się znajduje.
• Przeniesienie plików w obrębie struktury. Użytkownik będzie miał informację o
poprzedniej i nowej lokalizacji pliku.
• Zmiany zawartości, zmiany nazwy, usunięcia plików. Informacja o takich zmianach
pozwoli na sprawdzenie, które pliki i w jaki sposób zostały zmienione.
Jeżeli w nazewnictwie plików w strukturze przyjęta zostanie zasada, że nazwa pliku
odpowiada numerowi strony, to w jednej strukturze (np. zawierającej roczniki
hydrologiczne z kilku lat) znajdzie się kilka plików o tych samych nazwach. Jeżeli
dla takiej struktury zdefiniowane zostaną atrybuty (np. rok wydania rocznika), to
łatwo będzie można odnaleźć poszukiwany plik, nawet jeśli zostanie omyłkowo
zapisany w nieodpowiednim katalogu (np. strona nr 47 z rocznika z 1979 roku
zostanie zapisana w katalogu dla rocznika z 1971 roku).
Takie informacje pozwolą na wyeliminowanie błędów związanych z omyłkowym
zapisem, usunięciem czy zmianą nazwy. Dodatkowe atrybuty pozwolą na opisanie
plików w dowolny, wygodny dla użytkownika sposób. Spowoduje to że, przy
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
67
Magdalena Kruczek Praca Magisterska
odpowiednio skonfigurowanych atrybutach wyszukanie pliku, w którym znajduje się
np. informacja na temat liczby dni z burzą, w stacji pomiarowej w Sieniawie, w 1979
roku, będzie znacznie ułatwione.
W pracy przedstawione zostały przykładowe aplikacje, których zadaniem jest
monitorowanie plików. Program FilM różni się od nich podejściem do problemu
monitorowania. Zadaniem aplikacji FileWatcher i FolderWatch jest wykonanie akcji
(np. utworzenie kopii pliku w przypadku FolderWatch) w odpowiedzi na zmianę
w strukturze np. zapisanie nowego pliku. FileMon przekazuje użytkownikowi na
bieżąco (tylko w trakcie działania aplikacji) informacje o rodzaju wykonywanej na
pliku operacji. Zadaniem FilM’u jest natomiast sprawdzanie i identyfikowanie zmian,
jakie zaszły w obserwowanej strukturze. Informacje te przekazane są użytkownikowi
i to on decyduje co w takiej sytuacji należy zrobić (również poprzez opcje
udostępnianie przez FilM).
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
68
Magdalena Kruczek Praca Magisterska
7. Podsumowanie
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
69
Magdalena Kruczek Praca Magisterska
Celem niniejszej pracy było przedstawienie rozwiązania a także zaprojektowanie
i implementacja aplikacji pozwalającej na monitorowanie zmian w wybranej strukturze
plików. Rozszerzeniem programu FilM jest moduł atrybutów, dzięki któremu można
definiować dodatkowe właściwości dla plików.
W pracy znalazła się część teoretyczna, w której omówione zostały technologie
wykorzystane w aplikacji, takie jak jednokierunkowe funkcje haszujące
wykorzystywane do identyfikacji pliku czy mechanizm indeksowania systemu
Windows.
W następnej części przedstawione zostały przykładowe, dostępne na rynku,
narzędzia, które w pewnym stopniu pełnić mają tę samą funkcję co projektowana
aplikacja. Porównanie to pokazało, na jak wiele sposobów można rozwiązać jeden
problem, w tym przypadku zabezpieczenie plików.
Kolejna część zawiera opis zaimplementowanej aplikacji. Przedstawiona tutaj
została struktura bazy danych, opis rozwiązań jakie zostały zastosowane w celu
umożliwienia monitorowania struktury plików oraz opis modułu atrybutów. Dzięki
założeniu, że atrybuty definiowane są dla wszystkich monitorowanych plików możliwe
było udostępnienie funkcji filtrowania. Filtry działają na zasadzie porównań wartości
podanej przez użytkownika ze zdefiniowaną wartością atrybutu.
Podsumowując, uznać można, że system zaimplementowany został zgodnie
z założeniami, zapewniając analizę zmian w wybranej strukturze a także możliwość
opisu pliku w dowolny sposób. Nowe pomysły wdrażane w aplikacji powinny sprawić,
że stanie się ona bardziej przyjazna i pomocna użytkownikowi.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
70
Magdalena Kruczek Praca Magisterska
8. Słownik pojęć
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
71
Magdalena Kruczek Praca Magisterska
fopen() – Funkcja otwierająca plik.
Funkcja skrótu – Zwana również funkcją haszującą. Jest to funkcja, która dowolnie
długiej wiadomości, przyporządkowuje krótką, posiadającą stały rozmiar
wartość.
Klucz prywatny – Pojęcie używane w kryptografii asymetrycznej, nazywany również
kluczem tajnym. Służy do deszyfrowania wiadomości oraz bierze udział w
procesie tworzenia podpisu elektronicznego. Tworzy nierozerwalną parę z
kluczem publicznym. Klucz powinien być znany tylko właścicielowi.
Pojęcie to również używane jest w kryptografii symetrycznej.
Klucz publiczny – Pojęcie używane w kryptografii asymetrycznej. Służy do
szyfrowania wiadomości (do odszyfrowania służy klucz tajny) oraz do
weryfikacji podpisu elektronicznego. Klucz ten jest udostępniany
publicznie.
Kryptogram – Zaszyfrowana wiadomość.
Podpis cyfrowy –
„
Dane dołączone do danych lub ich przekształcenie kryptograficzne,
które pozwala odbiorcy danych udowodnić pochodzenie danych
i zabezpieczyć je przed fałszerstwem (norma ISO 7498-2:1989).
Podpis cyfrowy nie musi być generowany przez człowieka.
Podpis elektroniczny – Dane w postaci elektronicznej, które wraz z innymi danymi, do
których zostały dołączone lub z którymi są logicznie powiązane, służą do
identyfikacji osoby składającej podpis elektroniczny (Art. 3 ust. 1) . Pojęcie
podpisu elektronicznego wprowadzone zostało przez dyrektywę unijną
1999/93/EC i określa, że jest to operacja podpisywania danych przez osobę
fizyczną.
Statyczna kontrola typów – Sprawdzenie zgodności typów zachodzące podczas
kompilacji programu.
Trigger – Wyzwalacz. Jest to zadanie (jedno, lub więcej zapytań SQL) wykonujące się
w tle, gdy zajdzie określona okoliczność (np. dodanie rekordu do bazy) .
VIEWS – Widok. Wirtualna tabela określona przez zapytanie SQL. Składa się
z kolumn innej tabeli lub tabel. Odwołać się do niej można jak do zwykłej
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
72
Magdalena Kruczek Praca Magisterska
tabeli, jednak operacje wstawiania, usuwania i modyfikowania nie zawsze
działają.
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
73
Magdalena Kruczek Praca Magisterska
9. Bibliografia
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
74
Magdalena Kruczek Praca Magisterska
[1] Reinhard Wobst. Kryptologia. Budowa i łamanie zabezpieczeń. Wydawnictwo
RM, 2002.
[2] Bruce Schneier. Kryptografia dla praktyków. WNT, Warszawa 1995.
[3] Mirosław Kutyłowski, Willy-B. Strothmann. Kryptografia. Teoria i praktyka
zabezpieczania systemów komputerowych. Wydawnictwo Lupus, Warszawa 1998.
[4] Portal dla programisów .NET
http://codeguru.pl/article-154.aspx
[5] Forum dyskusyjne
[6] Wikipedia - Internetowa encyklopedia
[7] Wikipedia – artykuł o kryptografii
http://pl.wikipedia.org/wiki/Kryptografia
[8] Podstawy kryptografii w środowisku .NET
http://codeguru.pl/article-154.aspx
[9] .NET Framework Developer Center – .NET Framework Cryptography Model
http://msdn.microsoft.com/en-us/library/0ss79b2x.aspxmsdn.microsoft.com
[10] Oficjalna dokumentacja SQLite
[11] Strona wydziału matematyki Uniwersytetu Harvard (Harvard Mathematics
Department Home page)
http://www.math.harvard.edu/computing/sqlite/index.html
[12] Strona producenta narzędzia SQLite Administrator
http://sqliteadmin.orbmu2k.de/
[13] Helionica – sieciowa encyklopedia informatyki
http://encyklopedia.helion.pl/index.php/Atak_s%C5%82ownikowy
[14] Strona producenta program FileWatcher
http://www.datamystic.com/license.html
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
75
Magdalena Kruczek Praca Magisterska
Spis ilustracji
Rysunek 1. Aplikacja FileWatcher ................................................................................ 12
Rysunek 2 Aplikacja FolderWatch ................................................................................. 14
Rysunek 3 Aplikacja FileMon ........................................................................................ 15
Rysunek 4. Klasy przestrzeni nazw System.Security.Cryptography dla algorytmu
szyfrowania symetrycznego, za [7] ................................................................................ 23
Rysunek 5. Klasy przestrzeni nazw System.Security.Cryptography dla algorytmu
szyfrowania haszującego, za [7] ..................................................................................... 23
Rysunek 6. SQLite Administrator ................................................................................. 36
Rysunek 7. Diagram przypadków użycia. ...................................................................... 40
Rysunek 8. Okno główne aplikacji. ................................................................................ 41
Rysunek 9. Siatka właściwości dla projektu................................................................... 42
Rysunek 10. Siatka właściwości dla pliku...................................................................... 43
Rysunek 11. Wybór opcji umożliwiającej przejście do okna tworzenia projektu.......... 45
Rysunek 12. Okno umożliwiające utworzenie nowego projektu. .................................. 46
Rysunek 13 Główne okno aplikacji. ............................................................................... 47
Rysunek 14. Okno zapisu i otwarcia projektu. ............................................................... 48
Rysunek 15. Okno umożliwiające dodawanie katalogów do indeksów........................ 49
Rysunek 16. Schemat struktury bazy danych. ................................................................ 52
Rysunek 17. Komunikaty o zdarzeniach w monitorowanej strukturze. ........................ 55
Rysunek 18. Okno umożliwiające definiowanie nowych atrybutów. ............................ 60
Rysunek 19. Edytor atrybutów. ...................................................................................... 61
Rysunek 20. Panel filtrów............................................................................................... 62
Rysunek 21. Okno tworzenia nowego projektu.............................................................. 64
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
76
Magdalena Kruczek Praca Magisterska
Spis tabel
Tabela 1. Struktura tabeli PROJECT............................................................................. 53
Tabela 2. Struktura tabeli FILE ..................................................................................... 54
Tabela 3. Struktura tabeli FILE_VERSION .................................................................. 54
Tabela 4. Symbole odpowiadające grupom plików........................................................ 56
Tabela 5. Wymagane zgodności atrybutów dla poszczególnych grup plików. .............. 57
Tabela 6. Opcje menu dostępne dla poszczególnych grup plików. ................................ 58
Tabela 7. Opcje menu dostępne dla poszczególnych grup plików z dodatkowymi
opcjami............................................................................................................................ 65
Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows
77