Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

background image

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

background image






























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.

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

S

P I S

T

R E Ś C I

1.

 

WSTĘP...................................................................................................................... 2

 

2.

 

ZAKRES PROJEKTU ............................................................................................ 5

 

2.1

 

O

PIS PROBLEMU

.................................................................................................... 6

 

2.2

 

P

RZEZNACZENIE PROJEKTOWANEGO SYSTEMU

..................................................... 7

 

3.

 

DOSTĘPNE NARZĘDZIA .................................................................................. 10

 

3.1

 

F

ILE

W

ATCHER

.................................................................................................... 11

 

3.2

 

F

OLDER

W

ATCH

.................................................................................................. 13

 

3.3

 

F

ILE

M

ON

............................................................................................................ 15

 

4.

 

TECHNOLOGIE ZASTOSOWANE W APLIKACJI „FILM” ....................... 16

 

4.1

 

K

RYPTOGRAFIA

.................................................................................................. 18

 

4.1.1 

Algorytmy szyfrujące ............................................................................................. 19 

4.1.2 

Jednokierunkowe funkcje haszujące...................................................................... 20 

4.1.3 

Rozwiązania .NET .................................................................................................. 22 

4.2

 

I

NDEKSOWANIE W

W

INDOWS

............................................................................. 28

 

4.3

 

SQL

ITE

............................................................................................................... 32

 

5.

 

OPIS SYSTEMU „FILM”..................................................................................... 37

 

5.1

 

S

TRUKTURA BAZY DANYCH

................................................................................ 50

 

5.2

 

M

ONITOROWANIE ZMIAN W STRUKTURZE PLIKÓW

. ............................................ 54

 

5.3

 

D

EFINIOWANIE ATRYBUTÓW I UŻYCIE FILTRÓW

................................................. 59

 

5.4

 

R

OZWÓJ SYSTEMU

.............................................................................................. 63

 

6.

 

WNIOSKI ............................................................................................................... 66

 

7.

 

PODSUMOWANIE ............................................................................................... 69

 

8.

 

SŁOWNIK POJĘĆ ................................................................................................ 71

 

9.

 

BIBLIOGRAFIA.................................................................................................... 74

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

1

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

1. Wstęp

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

2

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

polskim, jak również ogólnoświatowym, dostępnych na licencji Freeware

1

oraz

Shareware

2

.

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

2. Zakres projektu

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

5

background image

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

background image

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

3

.

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

background image

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

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

3. Dostępne narzędzia

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

10

background image

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

background image

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

background image

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

background image

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

4

. 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

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

4. Technologie zastosowane

w aplikacji „FilM”

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

16

background image

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

background image

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

background image

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

5

(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

6

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

background image

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

background image

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

background image

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

background image

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

background image

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

7

:

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

background image

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

background image

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

background image

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

background image

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

8

( 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

background image

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

background image

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

background image

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

9

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

5. Opis systemu „FilM”

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

37

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

10

, 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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

6. Wnioski

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

66

background image

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

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

7. Podsumowanie

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

69

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

8. Słownik pojęć

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

71

background image

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

background image

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

background image

Magdalena Kruczek                                                                                   Praca Magisterska

 

9. Bibliografia

Monitorowanie oraz identyfikacja zmian w strukturze plików systemu Windows

74

background image

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

http://f.kafeteria.pl

[6] Wikipedia - Internetowa encyklopedia

http://www.wikipedia.org

[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

http://www.sqlite.org

[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

background image

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

background image

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


Wyszukiwarka

Podobne podstrony:
Naprawa plików systemowych w Windows 7
Automatyczne wprowadzanie zmian z artykułów wiedzy w systemie Windows
Opis udostępniania plików i uprawnień w systemie Windows XP
Gdzie zapisywane są zrzuty pamięci po awarii systemu Windows oraz jak sztucznie wywołać Bluescreen
1 Interfejs systemu Windows oraz sposoby uruchamiania programów
Ext2 Instalowalny system plików dla Windows
Jak Zmienić Identyfikator Produktu W Systemie Windows XP
Dyskietki startowe systemu Windows XP
abc systemu windows xp 47IMHOQVXQT6FS4YTZINP4N56IQACSUBZSUF7ZI
Autoodtwarzanie w systemie Windows XP
Sztuczki w rejestrze systemu Windows
Samorządowy PR. Zadania biura prasowego i PR oraz jego miejsce w strukturze urzędu, Public Relations
Typy i Fazy Instalacji Systemu Windows, Informatyka, Instalacja Systemu
Instalacja systemu Windows z pendrive'a szybko i wygodnie
Cwiczenie 01 Instalowanie systemu Windows 2003
Po reinstalacji systemu Windows Nieznany

więcej podobnych podstron