Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Odczyt danych z pliku binarnego
Forum PHP.pl > Forum > PHP
fullrespect
Witam serdecznie!
Ostatnio zabrałem sie za napisanie skryptu do przetwarzania danych tekstowych, wszystko juz działa jak należy.
Bardzo mi sie to spodobało i chciałbym pójść dalej...

Troche o tym co to robi:
Strona www obsługuje zawody / konkurencje odbywające sie w sieci na symulatorze lotu szybowca http://www.condorsoaring.com
Po wykonanym locie, cały log z lotu zapisywany jest w pliku binarnym (*.ftr), jest także możliwość zapisu tego loga w pliku *.IGC który moja stronka już obsługuje. Plik iGC zaś można bardzo łatwo zmienić edytując go w notatniku, co oczywiście zaskutkuje że moj system łyknie zmiany (np. długości lotu - bo tego nie da sie wykryc i porównać z niczym aby ewentualnie odrzucić błędne dane). Chciałbym dorobić możliwość wysyłania pliku *.ftr który jest dla normalnego zjadacza chleba, po prostu nieczytelny.

przykładowy plik ftr: https://docs.google.com/open?id=0B9O9_6wNQG3DaTBaanRINHdfdFk
przykładowy plik igc: https://docs.google.com/open?id=0B9O9_6wNQG3DMzBTYmtGR2ZvZFU
pliki te zawierają identyczne informacje o długosci, prędkosci, imie, nazwiko, nick, itp sprawy.

na mojej stronie mozecie zobaczyć jak to wygląda: http://rcs.projekty.pl/wrs/index.php?actio...p;cctaskid=5566

Teraz pytanie i prośba do Was, jak dobrać sie do pliku ftr który jest zapisany w formacie binarnym i wydobyć z niego te informacje ?

Z góry dzieki za jakiekolwiek podpowiedzi.
Crozin
Musiałbyś znaleźć specyfikację formatu FTR, gdzie byłoby opisane jak zbudowany jest plik.

Jednak opieranie mechanizmu zabezpieczenia na "nieczytelności dla zwykłego zjadacza chleba" to proszenie się o problemy.
fullrespect
Witam,
a jeśli nie znam specyfiki pliku i nie mam możliwości aby się tego dowiedzieć to czy są jakies sposoby jak zdekodować plik binarny ?
Crozin
1. Ten plik najprawdopodobniej nie jest w żaden sposób zakodowany, ot surowe dane jedynie zapisane w nieznanym Ci formacie.
2. Bez specyfikacji będzie to dosyć ciężkie zadanie. Musiałbyś posiadać wiele plików, które wiedziałbyś, że różnią się w bardzo nieznacznym stopniu. Następnie musiałbyś znaleźć różnicę pomiędzy plikami oraz przyjąć, że różniący je fragment odpowiada za daną zmienną. Musiałbyś też odgadnąć jaki typ owa zmienna posiada (np. czy jest to typ INT (4 bajty) czy może SHORT (2 bajty), a może format pliku jest taki paskudny, że jest to np. 7 bitów). Bardzo dużo pracy, która może w dodatku okazać się na tyle nieprecyzyjna, że będzie bezwartościowa.
fullrespect
Szkopół polega na tym, że ktoś juz to zrobił i jest w pelni funkcjonalne, co najlepsze są jedyni na naszym globie tongue.gif
prosze: http://www.condor-club.eu/besttimes/0/?id=5566

ciekaw jestem czy mają wyłączność na to czy po prostu zapytali producenta symulatora. Fakt jest taki że jak pisalem kiedys zwykle pytanko do producenta to niestety nie odpisali.

Może warto spróbować, a jak sie nie uda to wtedy zabrac sie za crackowanie tongue.gif

Witam ponownie, tak jak sie spodziewalem autor nie ma zamiaru udostepnic specyfikacji pliku.

Jest jeszcze inna droga.

Moge polegać na plikach tekstowych. Tylko te pliki mozna bardzo latwo zmienic w notatniku na przyklad.

Plik ten jest zapisywany po skonczeniu gry (lotu w symulatorze szybowca). W sumie to gracza zadanie zeby taki plik sobie zapisac (wyeksportowac zapis lotu z symulatora, coś jak zapis trasy z nawigacji).

teraz mając taki plik jak ustrzec się przed zmianą wartości jakiegoś parametu przez gracza ?

Plik wygląda tak: https://docs.google.com/file/d/0B9O9_6wNQG3...mtGR2ZvZFU/edit

teraz gdy sprytny gracz zmieni sobie wartość "LCONFlightInfoAverageSpeed" na jakąś inną i wyśle tak zapisany plik na moja stronkę, system łyka błędne dane bo nie ma sposobu aby sprawdzic czy prędkość jest newłaściwa gdyz nie mam wzornika z którym moglby to porownac.

Jest jakas inna mozliwosc aby sprawdzic czy plik nie został zmieniony po jego wygenerowaniu ???

Dzieki za pomoc!


cudny
Sprawdź czy nie uległa zmianie jego waga, to chyba najprostsze rozwiązanie.
Crozin
Cytat
Jest jakas inna mozliwosc aby sprawdzic czy plik nie został zmieniony po jego wygenerowaniu questionmark.gif?
W Twojej sytuacji chyba nie ma żadnego sensownego sposobu na wykonanie takiej weryfikacji.
fullrespect
Cytat(cudny @ 11.10.2012, 14:34:53 ) *
Sprawdź czy nie uległa zmianie jego waga, to chyba najprostsze rozwiązanie.


Jak zmienisz liczbe 128 na 158 to ulegnie zmianie waga pliku questionmark.gif? smile.gif nie sądze tongue.gif

@Crozin - a co z sumami kontrolnymi, datą wygenerowania pliku a datą modyfikacji pliku - nic nie wskóram ?
Crozin
Sumy kontrolne jak najbardziej tak, ale... znasz sposób ich generowania? To może być tajemnicą producenta, a jak widzisz ten nie chce ujawnić Ci specyfikacji. Do daty utworzenia/modyfikacji pliku na moim komputerze na całe szczęście nie masz dostępu, także nie tędy droga.
abort
Choć nie ma gwarancji, że się uda - a jeśli się uda, to czas wykonania może być... DŁUGI, a całe przedsięwzięcie nieopłacalne, to ja bym jeszcze spróbował "pobawić się" modyfikacjami czystego pliku IGC, skonwertowania na format FTR, a potem niestety mozolne ślęczenie nad danymi, które się zmieniły w postaci binarnej...
Może coś Ci się uda zrobić, ale reverse engineering to naprawdę nieciekawe zajęcie.
fullrespect
Witam po przerwie,
Dowiedzialem sie ze pliki IGC posiadają G-Record
Teraz tylko jak sie za to zabrac to pojęcia nie mam zadnego.
Czym to walidowac ?
Zapewne znow potrzebna mi jakas specyfikacja... sad.gif

Jakies sugestie Panowie ?
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.