Tworzenie nieczytelnego archiwum zip

0

Dzień dobry, dzisiaj chciałbym tylko zapytać (nie proszę o gotowy kod!) tylko zapytać.
Czy używając dowolnego komponentu dla delphi tj obiektu TZipFile, Abbrevia, ZipForge itp można stworzyć archiwum zip, ale takie archiwum, które
będzie zupełnie nieczytelne dla popularnych archiwizerów typu WinRar, 7zip, WinZip?

Chciałbym sobie stworzyć programik, który utworzyłby mi archiwa moich dokumentów, które są dla mnie bardzo ważne, ale wolałbym aby właśnie nie dało się ich
odczytać komercyjnym oprogramowaniem.

Z góry dziękuję za potencjalne wskazówki.

1

Jeśli nie chcesz żeby dane można było odczytać to je po prostu zaszyfruj :) Wymyślanie własnych rozwiązań być może uniemożliwi odczyt komercyjnym oprogramowaniem, ale jeśli ktoś nad tym przysiądzie to złamie to bez problemu. Natomiast powszechnie stosowane szyfry są bardzo sprawdzone.

2

Jeśli te dokumenty są dla Ciebie istotne, wykorzystaj gotowe, sprawdzone rozwiązania w stylu Borg czy CryFS (bądź cokolwiek innego, co jest dostępne na Twojej platformie), nie pisz aplikacji sam.

Tym niemniej, odpowiadając na Twoje pytanie: tak, coś takiego jest jak najbardziej możliwe. Nawet jeśli taki komponent aktualnie nie istnieje, zawsze możesz napisać własny i samemu go podpiąć pod swoje Delphi.

0

Być może się ośmieszę, ale cóż, i tak kariery programisty nie zrobię (szczególnie w pascalu), ale od jakiegoś czasu bawię się RPG Makerem i pliki gry po "kompilacji" leżą niezabezpieczone w żaden sposób, to jest otwarta struktura jak w każdym jednym katalogu na dysku, ja właśnie chciałbym to jakoś "upchać" w jedną paczkę (jak assety w grach AAA) i zczytywać zawartość moim programikiem.
Bawiłem się w wirtualizację plików, ale... Nie zdaje to egzaminu, znaczy się zdaje, ale to nie jest jeszcze to co bym chciał osiągnąć.

Chociaż z drugiej strony... Mam na dysku klasę, która całkiem nieźle szyfruje pliki, tylko nie wiem jak sobie ona poradzi z plikami multimedialnymi (ogg i png), spróbuję tą klasą zaszyfrować i odszyfrować te pliki i dam znać co wyszło, jak pójdzie wszystko dokładnie jak po mojej myśli, to wątek uznam za rozwiązany. :)

0

chciałbym to jakoś "upchać" w jedną paczkę (jak assety w grach AAA) i zczytywać zawartość moim programikiem.

Tylko... po co? ;-p

0

Skoro masz klasę która "nieźle" szyfruje to wydaje mi się że format nie ma znaczenia. A co do archiwum, to myślałeś nad zabezpieczaniem ich po prostu hasłem które byłoby trzymane w zmiennej?

0

@Patryk27: Dlatego, że tak wygląda lepiej po instalacji:
https://ibb.co/cDZRXSM niż tak//ibb.co/M2SSVgj

@Yukiteru Gromadzki:
Hasło w zmiennej to chyba nie najlepszy pomysł, ale brałem to też pod uwagę, ma to jednak sporą wadę, klasyczne rozpakowanie wypakuje archiwum, a po zakończeniu gry pliki musiałyby być kasowane, ale
ktoś cwany może zminimalizować grę i skopiować pliki. Tak mi się wydaje.

0

Wydaje mi się że jest możliwe rozpakowanie w pamięci, ale to już zależy od implementacji. Wiadomo hasło w zmiennej to bardziej imitacja zabezpieczenia, ale jeżeli ktoś się uprze to i tak tego dokona więc wielu opcji nie masz.

2

Dlatego, że tak wygląda lepiej po instalacji:

Dla mnie wygląda to na:

  1. Utrudnione pracowanie nad grą (np. konieczność przebudowania wszystkich bundli w celu sprawdzenia jak będzie wyglądała zmieniona grafika czy dźwięk).
  2. Utrudnione patchowanie gry.
  3. Utrudnione modowanie gry.
  4. Omijanie natywnych mechanizmów keszowania plików zaimplementowanych w systemie operacyjnym (np. LRU cache w RAMie).
  5. W razie uszkodzenia Twojego archiwum, prawdopodobnie cały bundle zostanie uszkodzony - w przypadku eksploatowania systemu plików, uszkodzony mógłby zostać tylko jeden plik, lecz sama gra mogłaby działać dalej.

... a to wszystko w imię subiektywnego bo wygląda lepiej ;-)

klasyczne rozpakowanie wypakuje archiwum

Możesz operować na archiwum w całości w pamięci, bez wypakowywania na dysk.

0

Masz na myśli drogi @Patryk27 użycie TMemoryStream ?

0

Ano ;-)

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