Zaawansowane sprawdzanie typu plików w Windowsie

Zaawansowane sprawdzanie typu plików w Windowsie

Pytanie – jak zweryfikować typ pliku w systemie Windows?

Standardowa odpowiedź – rozpoznać po rozszerzeniu. Czy prawidłowa? W gruncie rzeczy tak, ale… nie dla ITPro 🙂
Oczywiście można się zadowolić samym rozszerzeniem pliku i sprawdzać poprzez:

Ewentualnie:

Ale cały czas dostawać będziemy tylko rozszerzenie a nie właściwy typ pliku…

A po co tak właściwie zaprzątać sobie głowę tym problemem? Otóż załóżmy, że mamy do spełnienia cel biznesowy polegający na dostarczeniu rozwiązania, które weryfikuje typ wrzucanych na zasób sieciowy danych. Dopuszczalne będą tylko i wyłącznie wybrane typy plików. Można wykorzystać któryś z ww. sposobów otrzymywania rozszerzeń plików odpowiadając, że taka jest architektura systemu i inaczej się nie da 🙂 Można też pójść krok dalej i wykorzystać Active File Screening (aktywną osłonę plików) – na pewno będzie bardziej profesjonalnie i będzie szybciej działać, ale… nadal będziemy bazować tylko i wyłącznie na rozszerzeniu pliku a nie na tym, co w rzeczywistości zawiera.

Żebyśmy się dobrze zrozumieli, co mam na myśli – Weźmy przykładowy plik instalacyjny javy:

File_ExtensionZmieniamy mu rozszerzenie na „.txt” i dla systemu Windows jest to plik tekstowy jak każdy inny…

File_Extension2

Jak dla ITPro – kicha, masakra, tragedia i inne takie… 🙁

Co więc zrobić? Jak wyjść z twarzą z tego problemu i nie zasłaniać się przed biznesem architekturą systemu? Można na przykład wykorzystać darmowe oprogramowanie FileType z pakietu GnuWin32. Można też pobrać bezpośrednio z mojej strony: file-5.03-setup

Jak go użyć by rozwiązać ten problem?

Uruchamiamy Powershell’a podając ścieżkę do katalogu instalacyjnego oprogramowania FileType, uzupełniamy o przełącznik „-i” oraz „–mime-type” i wskazujemy ścieżkę do pliku, który chcemy zweryfikować. Np:

Jak oprogramowanie zachowa się w przypadku próby oszustwa poprzez zmianę rozszerzenia? Zobaczmy:

Mime-type

Jak widać wyżej badana była paczka instalacyjna .msi flash playera. W przypadku rozszerzenia .msi – otrzymaliśmy odpowiedź, że jest to aplikacja. Po zmianie rozszerzenia na .txt – również otrzymujemy informację, że jest to aplikacja – That’s the point! 🙂 Żeby nie było, że FileType zawsze zwraca typ aplikacyjny zbadałem przykładowy plik tekstowy – odpowiedź – czysty tekst.

Teraz już wystarczy połączyć weryfikację z File Screeningiem lub event’ami systemowymi podczas zapisu plików przy włączonym audycie i do prezentowanego polecenia przekazywać ścieżkę do pliku. Wtedy będziemy mieć pewność, że ktoś nie chce nas oszukać i wykorzystać „luki” architektury Windows’a.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

This site uses Akismet to reduce spam. Learn how your comment data is processed.