Sygnatury binarne file ext.

0

Mam nadzieję, że umieszczam to w dobrym temacie.
Potrzebuję sprawdzić rozszerzenie pliku po sygnaturze binarnej, i w tej kwestii parę pytań...

  1. W jaki sposób sprawdzić sygnaturę binarną?
    Wczytać z 1024 pierwszych bajtów pliku i prostu sprawdzić, czy zawiera odpowiedni ciąg?
    2)Skąd wziąć niewielki - dajmy z 1000elementów- zbiór tych sygnatur?

Chyba nie bardzo wiem jak zadać pytanie, ponieważ google wcale mi nie pomaga...
Może istnieje jakaś biblioteka? Chociaż czy do tego tak na prawdę potrzebna jest biblioteka? Chyba że zaletą by była biblioteka tych sygnatur...

Możliwe że proszę o pomoc z google : )

0

żadna sygnatura nie ma 1024 bajtów
tu masz kilka podstawowych https://en.wikipedia.org/wiki/List_of_file_signatures
łatwo możesz rozszerzyć tę bazę ale myślę że zawiera ona już wszystkie popularne formaty a tych niepopularnych są miliony - samemu sprawdź jakie sygnatury mają pliki których potrzebujesz w bazie

0

Liczyłem na większą bazę...ale...
Dzięki.
W jaki sposób sprawdzić te sygnatury? Pseudo kod mile widziany

0

A przeczytałeś chociaż całość artykułu na wiki wraz z linkami zewnętrznymi? :/ Podane jest jak na tacy parę linków do baz sygnatur.

Co do szukania, to raczej nie ma tu pseudokodu do pisania. Na wiki jest kolumna offset. Przykładowo biorąc PDF. Pod offsetem 0 ma być ciąg znaków 25 50 44 46 i już.

0
KozaczekPL napisał(a):

Może istnieje jakaś biblioteka?
Istnieje, np. libmagic z którego korzysta linuksowy file.

0

Super! Czytam po bajcie, potem konwersja na szesnastkowy i sprawdzam.
@kaczus, nie potrzebuje się upewniać :3, ale bardzo mnie ciekawi, więc jakbyś mógł powiedzieć coś więcej
Dzięki za pomoc.

0

Jeśli jest struktura pliku - np pliki iff maja zapisaną wielkość danych - mozesz sprawdzić, czy ta wielkość się zgadza. Jeśli nie, to albo plik jest uszkodzony, albo masz przypadkowe podobieństwo. Dodatkowo nie wiem po co chcesz zamieniać na szasnastkowy - porównujesz bajty binarnie i tyle.

0

@kaczus z tą konwersją na szesnastkowy to dobre rozwiązanie. Widziałem narzędzie (jak na złość nie pamiętam teraz nazwy, a szukania po dysku twardym za dużo) które miało bazę sygnatur zapisaną w pliku o strukturze ini-podobej. Tam właśnie bajty dla wygody użytkownika były zapisywane w postaci szesnastkowej. Samo narzędzie przez to było można rozbudować o coraz to nowe sygnatury formatów nawet bez wiedzy i potrzeby autora.

Co do samej konwersi podejrzewam, że porównywanie było na poziomie bajtów. To sygnatury były zamieniane do postaci bajtów, a nie odwrotnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1