obnova_smazanych_dat_file_carving

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
obnova_smazanych_dat_file_carving [2021/08/15 23:57]
pavel created
obnova_smazanych_dat_file_carving [2022/01/03 01:12] (current)
Line 1: Line 1:
 ====== Jak obnovit smazané soubory pomocí metody file carving ====== ====== Jak obnovit smazané soubory pomocí metody file carving ======
 +===== Úvod =====
 +
 Začnu životní příhodou. Jeden krásný týden jsem byl se skauty na puťáku, měli jsme půjčenou GOPRO kameru, abychom něco natočili. Prvních pár dní jsme natáčeli jako diví, takže nám brzo došla kapacita SD karty. Bylo z ní potřeba data přesunout na cloud. Bohužel, jelikož po vložení do mobilu OS Android nabídl velkou nabídku na formátování. Kamarád se překlikl a videa byla fuč. Abychom měli alepoň nějakou naději na záchranu dat, tak jsme SD kartu ihned odstavili z provozu, aby se data nestihla přepsat, a používali jsme jinou. Začnu životní příhodou. Jeden krásný týden jsem byl se skauty na puťáku, měli jsme půjčenou GOPRO kameru, abychom něco natočili. Prvních pár dní jsme natáčeli jako diví, takže nám brzo došla kapacita SD karty. Bylo z ní potřeba data přesunout na cloud. Bohužel, jelikož po vložení do mobilu OS Android nabídl velkou nabídku na formátování. Kamarád se překlikl a videa byla fuč. Abychom měli alepoň nějakou naději na záchranu dat, tak jsme SD kartu ihned odstavili z provozu, aby se data nestihla přepsat, a používali jsme jinou.
 Toto rozhodnutí bylo logické, protože na paměťových médiích se nikdy hnedka nepřepisují bajty smazaných souborů. Jen se označí, že jsou volné k zápisu. V případě formátování se taky vše nepřepisuje. Toto rozhodnutí bylo logické, protože na paměťových médiích se nikdy hnedka nepřepisují bajty smazaných souborů. Jen se označí, že jsou volné k zápisu. V případě formátování se taky vše nepřepisuje.
 +
 +===== Teorie =====
  
 Takže teď přistupme k věci. Před veškerou manipulací s sd kartou doporučuji pro jistotu vytvořit její obraz, třeba pomocí příkazu dd. Potom lze buď pracovat se samotnou karktou, nebo právě s tím obrazem. Takže teď přistupme k věci. Před veškerou manipulací s sd kartou doporučuji pro jistotu vytvořit její obraz, třeba pomocí příkazu dd. Potom lze buď pracovat se samotnou karktou, nebo právě s tím obrazem.
 File carving funguje na úplně jednoduchém principu. Je to docela zřejmé už z názvu (carving = vyřezávání), jelikož nenáme ze souborováho systému žádné informace o souboru, co hledáme (jeho metadata neexistují, ale data pořád někde jsou), tak se postupně procházejí po skupinách bajty a zjišťuje se, jestli právě ty neznačí nějaký znamý začátek souboru (file signature). Když se něco známého najde, tak se do paměti uloží, kolikátý to je bajt a dále se hledá známý konec tohoto souboru. Když je nalezen, tak se vytvoří soubor na disku a do něj se zkopírují všechna data mezi začátkem a koncem. Pokud daný typ suboru žádný známý konec nemá, tak se zkopíruje předem daný počet bajtů. File carving funguje na úplně jednoduchém principu. Je to docela zřejmé už z názvu (carving = vyřezávání), jelikož nenáme ze souborováho systému žádné informace o souboru, co hledáme (jeho metadata neexistují, ale data pořád někde jsou), tak se postupně procházejí po skupinách bajty a zjišťuje se, jestli právě ty neznačí nějaký znamý začátek souboru (file signature). Když se něco známého najde, tak se do paměti uloží, kolikátý to je bajt a dále se hledá známý konec tohoto souboru. Když je nalezen, tak se vytvoří soubor na disku a do něj se zkopírují všechna data mezi začátkem a koncem. Pokud daný typ suboru žádný známý konec nemá, tak se zkopíruje předem daný počet bajtů.
 Nějaký takový program bych sice mohl napsat, ale jelikož by to trvalo dlouho a já jsem líný, tak jsem hledal mezi existujícím softwarem něco vhodného.  Nějaký takový program bych sice mohl napsat, ale jelikož by to trvalo dlouho a já jsem líný, tak jsem hledal mezi existujícím softwarem něco vhodného. 
 +
 +===== Postup =====
  
 Našel jsem prográmek Scalpel, který výše zmíněné zastává. Nyní popíšu, jak s tím pracovat: Našel jsem prográmek Scalpel, který výše zmíněné zastává. Nyní popíšu, jak s tím pracovat:
Line 50: Line 56:
   *  takto vypadá program při své práci, ta je rozdělena do dvou fází - v první hledá, ve druhé "rozřezává"   *  takto vypadá program při své práci, ta je rozdělena do dvou fází - v první hledá, ve druhé "rozřezává"
 {{::scalpel.png?400|}} {{::scalpel.png?400|}}
-  * hmm, nic mi to nenašlo, pokračovat budu tím pádem asi někdy jindy...+  * hmm, nic mi to nenašlo, pokračovat budu tím pádem asi někdy jindy. Ne vždy se podaří, šance na obnovu hlavně  výrazně klesá, když se vytvoří nové soubory. To se právě kvůli Androidu stalo, bohužel...
  
 {{::scalpel_nic.png?400|}} {{::scalpel_nic.png?400|}}
  
 pokračování příště... pokračování příště...
 +No, tak alespoň dopovím, jak jsem chtěl po vytažení souborů pokračovat.
 +  * vylezlo by několik stejně velkých souborů a jelikož nelze podle určitého ocásku v souboru určit konec, tak by se na to muselo složitěji
 +  * musíme napřed zjistit velikost souboru a potom takto velký soubor zkopírovat z původního
 +  * využijeme toho, že poslední atom bývá typu ''moov''
 +  * zkusíme najít v souboru právě tyto 4 bajty a zjistíme offset, kde jsou: ''grep -obarUP "moov" /cesta/k/souboru.mp4'' 
 +
 +{{::find_moov_offset.png?400|}}
 +
 +  * pomocí 4 bajtů, které jsou před ''moov'' zjistíme samotnou délku atomu typu moov.
 +  * Tu zjistíme pomocí: ''dd skip=(OFFSET-4) count=4 if=soubor.mp4 bs=1|xxd'' (bez té závorky)
 +
 +{{:find_moov_size.png?400|}}
 +
 +  * výslednou délku spočítáme: ''offset-4+délka moov'' (z offsetu musíme odečíst 4, protože před ním jsou ty 4 bajty délky, které se do té samé délky započítávají
 +  * nyní známe vše potřebné, stačí už jen zkopírovat vypočítanou délku do nového souboru
 +  * to uděláme opět pomocí dd: ''dd count=vypocitana_delka if=puvodni.mp4 of=vystup.mp4 bs=1''
 +
 +No a to je vše, teď by mělo video s trochou štěstí fungovat.
  • obnova_smazanych_dat_file_carving.1629071850.txt.gz
  • Last modified: 2022/01/03 01:12
  • (external edit)