Krijimi i një lloji të skedarit të njohur për R-Studio. Metodat e zbulimit të skedarëve "ngjitur" Kërko për skedarët e nënshkrimit të humbur

Koncepti i " Numri magjik"Në programim ka tre kuptime:

  • Nënshkrimi i të dhënave
  • Vlera unike të zgjedhura që nuk duhet të përputhen me vlera të tjera (për shembull, uuid)
  • Praktika e keqe e programimit.

Nënshkrimi i të dhënave

Numri magjik, ose nënshkrim- një numër i plotë ose tekst i përdorur për identifikim të qartë të një burimi ose të dhënash. Një numër i tillë në vetvete nuk ka kuptim dhe mund të shkaktojë hutuar, duke u takuar në kodin e programit pa një kontekst ose koment të përshtatshëm, me një përpjekje për ta ndryshuar atë në një tjetër, madje edhe me vlerë të ngushtë, mund të çojë në pasoja absolutisht të paparashikueshme. Për këtë arsye, numra të tillë u quajtën me ironi magjik. Aktualisht, ky emër është fiksuar në mënyrë të vendosur si një term. Për shembull, çdo klasë e përpiluar e gjuhës Java fillon me një "numër magjik" heksadecimal "0xcafebabe. E dyta është një shembull i njohur - çdo skedar i ekzekutueshëm i Microsoft Windows me një zgjatje .exe fillon me një sekuencë byte 0x4d5a (e cila korrespondon me ASCII -Simvols MZ - inicialet Mark Zbikovski, një nga krijuesit e MS-DOS). Një shembull më pak i njohur është një tregues i uninializuar në Microsoft Visual C ++ (duke filluar me versionin e vitit 2005 të Microsoft Visual Studio), i cili në modalitetin e debuges ka adresë 0XDeadBeef.

Në sistemet operative të ngjashme me Unix, lloji i skedarit përcaktohet zakonisht nga nënshkrimi i skedarit, pavarësisht nga zgjerimi i emrit të tij. Për të interpretuar nënshkrimin e skedarit në to, ofrohet shërbimi standard i skedarit.

Programimi i praktikës së keqe

Gjithashtu, "numrat magjik" quhen praktikë e keqe e programimit kur rëndësia numerike gjendet në tekstin burimor dhe nuk është e qartë se do të thotë. Për shembull, një fragment i tillë i shkruar në Java do të jetë i keq:

udhëzime (53, 320, 240);

int Screen_Width \u003d 640; Final Int Screen_HEight \u003d 480; Int screen_x_ccenter \u003d screen_width / 2; Int screen_y_center \u003d screen_height / 2; Final int sprite_crosshair \u003d 53; ... DrawPrite (sprite_crosshair, screen_x_center, screen_y_center);

Tani është e qartë: kjo linjë sjell në qendër të sprite-it të ekranit - trashësi. Në shumicën e gjuhëve programuese, të gjitha vlerat e përdorura për konstante të tilla do të llogariten në fazën e përpilimit dhe zëvendësohen në përdorimin e vlerave. Prandaj, një ndryshim i tillë në tekstin burimor nuk përkeqësohet shpejtësia e programit.

Përveç kësaj, numrat magjik janë një burim potencial i gabimeve në program:

  • Nëse numri i njëjtë magjik përdoret në program më shumë se një herë (ose mund të përdoret potencialisht), atëherë ndryshimi i tij do të kërkojë rekurs të secilës hyrje (në vend të një redaktimi të vlerës së quajtur konstante). Nëse jo të gjitha shënimet do të korrigjohen, do të lindë së paku një gabim.
  • Në një minimum, në një nga ngjarjet, numri magjik mund të shkruhet me një gabim fillimisht, dhe është mjaft e vështirë për t'u zbuluar.
  • Numri magjik mund të varet nga parametri i nënkuptuar ose numri tjetër magjik. Nëse këto varësi, nuk janë përzgjedhur në mënyrë eksplicite, nuk do të jenë të kënaqur, do të ketë të paktën një gabim.
  • Kur modifikoni ngjarjet e një numri magjik, është e mundur të gaboni një numër tjetër magjik, të pavarur, por të ketë të njëjtin vlerë numerike.

Numrat magjik dhe ndër-platforma

Ndonjëherë numrat magjik dëmtojnë kodin e kodit. Fakti është se në SI në orën 32- dhe 64-bit, madhësia e llojeve të char, të shkurtër dhe të gjatë është e garantuar, ndërsa madhësia int, e gjatë, size_t dhe ptrfiff_t mund të ndryshojnë (në dy të parët - në varësi të Preferencat e zhvilluesve të përpiluesit, të fundit dy - në varësi të shkarkimit të sistemit të synuar). Në një kod të shkruar ose të pakualifikuar, "numra magjik", që do të thotë çdo lloj madhësie, kur kalon në makina me një tjetër, ata mund të çojnë në gabime të vështira për të bug.

Për shembull:

const size_t number_of_eelements \u003d 10; Gjatë një [numër_of_elements]; MEMASS (A, 0, 10 * 4); // gabim - kuptohet se gjatë është 4 bytes, përdoret një numër magjik i elementeve. MEMASS (A, 0, numër_of_elements * 4); // gabimisht - kjo do të thotë se e gjatë është e barabartë me 4 bytes MEMASS (A, 0, numër_of_elements * Sizeof (LONG)); // jo tërësisht e saktë - dublikimi i emrit të tipit (nëse lloji do të ndryshojë, atëherë do të duhet të ndryshoni këtu) MEMASS (A, 0, Numër_of_Elements * SizeOf (një [0])); // kjo është e drejtë, në mënyrë optimale për vargjet dinamike të madhësisë jo-zero MEMASS (A, 0, Sizeof (a)); // e drejtë, në mënyrë optimale për vargjet statike

Numra që nuk janë magjike

Jo të gjithë numrat duhet të transferohen në konstante. Për shembull, kodi mbi

Kërko kur skanoni skedarët e llojeve të njohura (ose, siç thonë ata, kërkimi për dosjet e nënshkrimit) është një nga më efikasitet të përdorura në programin R-Studio Recovery të të dhënave. Përdorimi i një nënshkrimi të caktuar ju lejon të rivendosni skedarët e një lloji të caktuar në rastin kur është pjesërisht ose plotësisht i munguar (korruptuar) informacion në strukturën e dosjes dhe emrat e skedarëve.

Zakonisht, një tabelë e ndarjeve të diskut përdoret për të përcaktuar vendndodhjen e skedarit. Nëse krahasoni një disk me një libër, atëherë tabela e ndarjes do të jetë e ngjashme me tabelën e saj të përmbajtjes. Kur skanoni kërkimet e R-Studio për dosjet e llojeve të njohura në tabelën e ndarjes së diskut sipas një nënshkrimi të caktuar të caktuar. Kjo bëhet e mundur për shkak të faktit se pothuajse çdo lloj skedari ka një nënshkrim unik ose template të dhënash. Nënshkrimet e skedarëve janë në një vend të caktuar në fillim të dosjes dhe në shumë raste edhe në fund të dosjes. Kur skanimi i R-Studio përputhet me të dhënat e gjetura me nënshkrimet e dosjeve të llojeve të njohura, gjë që u lejon atyre të identifikojnë dhe të rivendosin të dhënat e tyre.

Me ndihmën e skanimit të skedarëve të llojeve të njohura të R-Studio, ju lejon të rivendosni të dhënat nga disqet që janë reformatuar, si dhe seksionet e të cilave janë mbishkruar. Për më tepër, nëse ndarja e diskut është e mbishkruar, e dëmtuar ose fshirë, atëherë skanimi i skedarëve të llojeve të njohura është i vetmi i mundshëm.

Por pothuajse gjithmonë dhe në të gjitha ka pengesa, dhe dosjet e llojeve të njohura të përdorura në R-Studio nuk janë përjashtim. Kështu, kur skanimi i skedarëve të llojeve të njohura të R-Studio ju lejon të riktheni vetëm skedarët jo të nefomave, por siç është përmendur tashmë, në shumicën e kësaj është metodat më të fundit të mundshme.

R-Studio tashmë përfshin nënshkrimet e llojeve më të zakonshme të dosjeve (Shikoni listën e plotë të dosjeve të llojeve të njohura mund të jenë në seksionin R-Studio Online.)

Nëse është e nevojshme, përdoruesi mund të shtojë lloje të reja të llojeve të skedarëve në R-Studio. Për shembull, nëse keni nevojë të gjeni skedarë të ndonjë lloji unik ose të projektuar pas datës së lirimit të fundit të R-Studio, ju mund të shtoni nënshkrimet tuaja në dosjet e llojeve të njohura. Tjetra do të konsiderohet ky proces.

Dosjet me porosi të llojeve të famshme
Nënshkrimet e skedarëve me porosi të llojeve të njohura ruhen në skedarin XML të specifikuar në kutinë e dialogut Settings. Shtimi i një nënshkrimi përbëhet nga dy pjesë:

  1. Identifikoni nënshkrimin e skedarit në fillim të skedarit dhe nëse ka në fund të dosjes.
  2. Krijimi i një skedari XML që përmban nënshkrimin e skedarit dhe informacione të tjera rreth llojit të skedarit.

E gjithë kjo mund të kryhet duke përdorur R-Studio. Në këtë rast, ju nuk keni nevojë të jeni specialist në përgatitjen (redaktimin) e dokumenteve XML ose në fushën e redaktimit heksadecimal - në këtë manual (neni), të orientuar drejt nivelit fillestar të përdoruesit, të gjitha fazat e këtij procesi do të jenë konsiderohen në detaje.

Shembull: Shtimi i nënshkrimit për skedarin e formatit MP4 (XDCAM-EX CODEC)
Konsideroni të shtoni një nënshkrim të skedarit në shembullin e një skedari. MP4 krijuar duke përdorur Sony XDCAM-EX. Ajo mund ta përdorë atë, për shembull, në rast të dëmtimit të kartës SD për atë që nuk keni pasur kohë për të kursyer në hard diskun e kompjuterit.

Faza e parë: definicioni i nënshkrimit të skedarit
Për të përcaktuar nënshkrimin e skedarit, shqyrtoni shembuj të skedarëve të të njëjtit format.

Le këto katër skedarë video me Sony XDCAM-EX:
ZRV-3364_01.mp4
ZRV-3365_01.mp4
ZRV-3366_01.mp4
ZRV-3367_01.mp4

Për lehtësinë e konsideratës, le të jetë një skedar i vogël. Dosjet më të mëdha janë më të vështira për t'u parë në formë heksadecimal.

1. Hapni skedarët në R-Studio. Për ta bërë këtë, klikoni në çdo skedar me butonin e djathtë të miut dhe zgjidhni Shiko / Edit (Shiko / Edit) të menysë së kontekstit.

2. Krahasoni skedarët. Ne do të kërkojmë të njëjtin template të gjetur në të katër dosjet. Ai do te jete nënshkrimi i skedarit. Si rregull, nënshkrimet e skedarëve janë në fillim të dosjes, por ndonjëherë në fund.

3. Përcaktoni nënshkrimin e skedarit në fillim të skedarit. Sipas shembullit tonë, është në fillim të skedarit. Vini re se nuk ndodh gjithmonë - shpesh nënshkrimi i skedarit është në fillim të dosjes, por jo në vijën e parë (zhvendosje).

Nga imazhet e mëposhtme, rrjedh se përmbajtja e të katër dosjeve janë të ndryshme, por të gjithë fillojnë me nënshkrimin e njëjtë të skedarit.


Klikoni mbi imazhin për ta rritur atë.


Klikoni mbi imazhin për ta rritur atë.


Klikoni mbi imazhin për ta rritur atë.


Klikoni mbi imazhin për ta rritur atë.

Zona e zgjedhur në imazhe është nënshkrimi i skedarit të këtij lloji të skedarëve. Është e përfaqësuar në të dy tekstet dhe hexadecimal.

Fytyra e Formës së Formës së Tekstit ka formën e mëposhtme:
.... ftyptmp42 .... mp42 ........ pa pagesë

Pikët (".") Karakteret që nuk mund të paraqiten në formën e tekstit tregohen. Prandaj, është gjithashtu e nevojshme për të dhënë një pamje hexadecimal të nënshkrimit të skedarit:
00 00 00 18 66 74 79 6D 70 34 32 00 00 00 00 6d 70 34 32 00 00 00 00 00 00 00 08 66 72 65 65

4. Në të njëjtën mënyrë, ne përcaktojmë nënshkrimin e skedarit, por në fund të dosjes. Kjo mund të jetë një nënshkrim tjetër i skedarit, një gjatësi tjetër.

Nënshkrimi i imazhit në fund të dosjes është theksuar në imazhet e mëposhtme:


Klikoni mbi imazhin për ta rritur atë.


Klikoni mbi imazhin për ta rritur atë.


Klikoni mbi imazhin për ta rritur atë.


Klikoni mbi imazhin për ta rritur atë.

Ju lutem vini re se të dhënat janë para zonës së zgjedhur (nënshkrimi i skedarit), në të katër dosjet, të njëjta. Ky është një informacion teknik që nuk është një nënshkrim i skedarit, por sugjeron që të gjitha katër fotografitë (skedari) janë bërë duke përdorur një aparat fotografik me të njëjtat parametra. Zakonisht është e mundur të dallosh modelet përkatëse me informacionin teknik nga nënshkrimi i skedarit. Në shembullin tonë, në vijën e fundit para fillimit të nënshkrimit të skedarit, ne shohim tekstin 'Regjistrimi i markës \u003d "normal"', i cili tregon qartë se ky është një lloj parametri i skedarit, dhe jo nënshkrimi. Gjithmonë i kushtoni vëmendje të veçantë kësaj vargu në gabime nuk përfshini informacionin teknik në nënshkrimin e skedarit.

Në rastin tonë, nënshkrimi i skedarit është teksti i mëposhtëm:
...
Kujtojnë se pikat tregojnë karaktere që nuk mund të paraqiten në formë teksti.

Në një formë heksadecimal, nënshkrimi i skedarit ka formën e mëposhtme:
3N 2F 4E 6F 6E 52 65 61 6N 54 69 6A 65 4A 65 74 61 3E 0D 0A 00
Shënim: Në fund të dosjes, nënshkrimi nuk do të jetë gjithmonë.

Faza e dytë: Krijimi i një skedari XML që përshkruan një lloj të njohur të skedarit
Tani, duke përcaktuar nënshkrimin e skedarit, mund të krijoni një skedar XML dhe të aktivizoni llojin e duhur të skedarëve në R-Studio. Kjo mund të bëhet në dy mënyra:

2.1 Përdorimi i redaktorit të nënshkrimit të skedarit të integruar:
Zgjidhni Menyjen e Cilësimeve (Tools) (Tools), në kutinë e dialogut Settings që hapet, klikoni në skedarët e njohur të skedarëve) tab dhe pastaj klikoni Edit Llojet e skedarëve të përdoruesit.

Klikoni mbi imazhin për ta rritur atë.

Klikoni butonin Krijo llojit të skedarit (redaktoni kutinë e dialogut të skedarëve të përdoruesit.
Vendosni parametrat e mëposhtëm:

  • ID është një identifikues digjital unik. Ky numër do të zgjidhet në mënyrë arbitrare; E vetmja që nuk duhet të përputhet me identifikuesin digjital të ndonjë lloji tjetër të skedarëve.
  • Përshkrimi i grupit është një grup në të cilin do të gjenden skedarët e gjetur në R-Studio. Ju mund të vendosni ose një grup të ri, ose të zgjidhni një nga ata që janë tashmë atje. Ne do të kemi këtë grup "Multimedia Video (Multimedia: Video)".
  • Përshkrimi - një përshkrim të shkurtër të llojit të skedarëve. Në shembullin tonë, ju mund të përdorni, për shembull, "Sony Cam Video, XDCAM-EX".
  • Zgjerimi - zgjerimi i dosjeve të këtij lloji. Në rastin tonë - MP4.

Parametri i pronave (karakteristikat) është fakultative, në rastin tonë nuk kemi nevojë ta përdorim atë.

Klikoni mbi imazhin për ta rritur atë.

Tjetra, duhet të futni nënshkrimin fillestar dhe përfundimtar të skedarit. Për ta bërë këtë, zgjidhni Start (filloni) dhe pastaj në kontekstin e komandës së menysë Shto nënshkrim (Shto nënshkrim).

Klikoni mbi imazhin për ta rritur atë.

Pastaj klikoni dy herë në fushë<пустая сигнатура> () Dhe futni tekstin e duhur.

Klikoni mbi imazhin për ta rritur atë.

Pastaj krijoni nënshkrimin përfundimtar të skedarit. Mos harroni të hyni në 21 në fushën e kolonës nga (nga).

Klikoni mbi imazhin për ta rritur atë.

Ju keni krijuar me sukses nënshkrimin tuaj të dosjeve të llojit të njohur.

Tani ju duhet ta ruani atë. Ka dy mënyra: Ju ose mund ta ruani atë në skedarin e parazgjedhur të specifikuar në skedën në shtëpi (kryesore) të kutisë së dialogut të Cilësimeve (Savetime) duke klikuar në butonin Save. Ose klikoni në butonin Save As ... (përveç si ...) dhe ruani nënshkrimin në ndonjë skedar tjetër.

2.2 Krijimi i një skedari XML që përshkruan një tip të njohur të skedarit, me dorë:
Për të krijuar këtë skedar, përdorni versionin XML Version 1.0 dhe kodimin UTF-8. Mos e humbni shpresën nëse nuk e dini se çfarë është - vetëm hapni çdo redaktor teksti (për shembull, notepad.exe) dhe në vijën e parë, futni tekstin e mëposhtëm:

Tjetra, ne do të krijojmë një tag XML që përcakton llojin e skedarit (filetype). Duke marrë parasysh atributet e përshkruara më parë të tagut XML do të duken kështu:

Vendoseni menjëherë pas

Tjetra, ne përcaktojmë nënshkrimin e skedarit (tag ). Nënshkrimi fillestar (në fillim të skedarit) do të jetë brenda etiketës pa asnjë atributet. Ne përdorim pamjen e tekstit të nënshkrimit, por në të njëjtën kohë duke zëvendësuar karaktere heksadecimale që nuk mund të përfaqësohen në formë teksti. Para çdo simbol hexadecimal futur "\\ x" kështu tag Me nënshkrimin e skedarit do të duket kështu:

Nëse keni nevojë të përcaktoni gjithashtu nënshkrimin përfundimtar (në fund të skedarit). Për këtë, përdoret etiketa e njëjtë, por me elementin "nga" dhe atributi "fund". Do të duket kështu:

Kujtojnë se në nënshkrimin e skedarit përfundimtar nuk kishte simbole joet, megjithatë, ajo ishte bërë pirg dhe kllapa trekëndore. Për të shmangur konfuzionin dhe gabimet në sintaksën XML, ne do të zëvendësojmë në karakteret e nënshkrimit "/", "<" и ">"Ata janë hexadecimal.

Në fund të nënshkrimeve të skedarit, duhet të përmbajë tags mbyllës filetype dhe filetypelist:

Kështu, të gjithë dosjen duhet të duket kështu:


\\ X00 \\ x00 \\ x00 \\ x18ftypmp42 \\ x00 \\ x00 \\ x00 \\ x00mp42 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x08free
\\ x3c \\ x2fnonrealtimmeta \\ x3e \\ x0d \\ x0a \\ x00

Mos harroni: Sintaksa XML është e ndjeshme ndaj regjistrit, prandaj, tagu do të jetë i saktë , por jo .

Ruaj skedarin në formatin e tekstit me extension.xml. Për shembull: sonycam.xml.

Ne kemi krijuar me sukses nënshkrimin tuaj të dosjeve të llojit të njohur. Ky shembull është mjaft i mjaftueshëm për të kuptuar parimet themelore të krijimit të një skedari të tipit të përdoruesit. Përdoruesit më me përvojë mund të përdorin versionin XML 2.0. Ju mund të lexoni më shumë për këtë në seksionin R-Studio Online Certifikata.

Hapi 3: Kontrolloni dhe shtoni një skedar që përshkruan llojin e njohur të skedarëve
Në hapin tjetër, duhet të shtoni (shkarkoni) skedarin tuaj XML në R-Studio. Në këtë rast, do të verifikohet automatikisht.

Ngarko në R-Studio krijuar në fazën e mëparshme XML. Për ta bërë këtë, zgjidhni menunë e mjeteve të cilësimeve (Settings) (mjetet). Në zonën e llojeve të skedarëve të cilësisë (llojet e skedarëve të përdoruesit) Tabs Home (kryesore) Cilësimet Kutia e dialogut (Cilësimet) Ne do të shtojmë skedarin XML të krijuar nga ne (SonyCam.XML). Klikoni butonin Aplikoni.

Klikoni mbi imazhin për ta rritur atë.

2. Shqyrtoni YES (po) me kërkesën për shkarkimin e një lloji të ri të skedarëve.

Klikoni mbi imazhin për ta rritur atë.

3. Për të kontrolluar faktin se lloji i skedarëve është ngarkuar me sukses, klikoni në skedën e skedarëve të njohur të skedarëve (lloje të njohura të skedarëve) të kutisë së dialogut të Cilësimeve (Cilësimet). Kujtojnë se ne kemi shtuar llojin e skedarit në grupin video multimedial (multimedia: video). Hapja e këtij grupi (dosje), ne duhet ta shohim artikullin me përshkrimin e përcaktuar nga ne kur krijojmë një skedar XML: Sony Cam Video, XDCAM-EX (.mp4).

Klikoni mbi imazhin për ta rritur atë.


Klikoni mbi imazhin për ta rritur atë.

Nëse ka ndonjë gabim në sintaksën e skedarit, do të shihni mesazhin përkatës:

Klikoni mbi imazhin për ta rritur atë.

Në këtë rast, kontrolloni përsëri skedarin tuaj XML për gabime. Mos harroni: Sintaksa XML është e ndjeshme ndaj regjistrit dhe për çdo etiketë në fund duhet të ketë një tag mbyllës.

Hapi 4: Testimi i një skedari që përshkruan llojin e njohur të skedarëve
Për të kontrolluar korrektësinë e skedarit të krijuar nga përdoruesi i krijuar nga ne, le të gjejmë skedarët tanë në një flash të lëvizshëm USB.

1. Nën Windows Vista ose Windows 7, ju do të kryeni një format të plotë (jo të shpejtë) të diskut ose të përdorni shërbimin e pastrimit të diskut (për shembull, R-Wipe & Clean) për të fshirë plotësisht të gjitha të dhënat në dispozicion në diskun e të dhënave. Le të dekorohet një disk USB në FAT32 (madhësia e skedarëve të kërkimit nuk kalon 2 GB).

2. rikrijoni skedarët e testimit në disk dhe rifilloni kompjuterin në mënyrë që përmbajtja e kujtesës së cache të ruhen në disk. Ju gjithashtu mund të fikni diskun e jashtëm dhe pastaj ta lidhni përsëri.

3. Operatori i diskut do të përcaktohet si, për shembull, një disk logjik F: \\.

4. Filloni R-Studio. Zgjidhni diskun tonë (f: \\) dhe klikoni butonin Scan (Scan)

Klikoni mbi imazhin për ta rritur atë.

5. Në kutinë e dialogut Scan (Scan) në sistemin e skedarit, klikoni butonin Edit ... (Ndrysho ...) dhe hiqni të gjitha flamujt. Kështu, ne do të fikim kërkimin për sistemet e skedarëve dhe skedarët duke përdorur tabelën e ndarjes.
Klikoni mbi imazhin për ta rritur atë.

6. Instaloni kutinë e kontrollit të skedarëve të avancuar të gjeni (kërkim shtesë për lloje të njohura të skedarëve). Kjo do të lejojë R-Studio për të kërkuar kur skanoni dosjet e llojeve të njohura.

7. Për të filluar skanimin, klikoni butonin Scan (Scan).

8. Le të presim derisa R-Studio skanon diskun. Në skedën e informacionit të skanimit, skanimi (progresi) do të shfaqet.


Klikoni mbi imazhin për ta rritur atë.

9. Pas përfundimit të skanimit, zgjidhni skedarët shtesë të gjetur (skedarë shtesë të gjetur) dhe klikoni dy herë mbi të.


Klikoni mbi imazhin për ta rritur atë.

10. Dosjet tona të testimit do të vendosen në dosjen Sony Cam Video, dosjen XDCAM-EX (ose në një dosje nën një emër tjetër, që korrespondon me përshkrimin e llojit të skedarëve të përcaktuar në fazën e dytë).


Klikoni mbi imazhin për ta rritur atë.

Ju shikoni se emrat e skedarëve, datat dhe vendet (dosjet) nuk janë restauruar, pasi që ky informacion është ruajtur në sistemin e skedarëve. Prandaj, në R-Studio, automatikisht çdo skedar do të shfaqet me një emër të ri.

Megjithatë, mund të shihet se përmbajtja e dosjeve nuk është dëmtuar. Për të siguruar që ju do t'i hapni ato në programin e duhur, siç është VLC Media Player.


Klikoni mbi imazhin për ta rritur atë.

Përfundim
Mundësia e R-Studio Kur skanoni, kërkimi për lloje të njohura ju lejon të rivendosni të dhënat edhe nga një disk, skedarët e të cilëve ose ose të mbishkruani. Ju mund të kërkoni në mënyrë efektive skedarët duke përdorur nënshkrimet e tyre, e cila është veçanërisht e dobishme nëse jeni të njohur me saktësi për llojin e dosjeve të rikuperuara, të tilla si në shembullin tonë. Aftësia për të krijuar lloje të skedarëve me porosi ju lejon të shtoni ndonjë skedar me një nënshkrim të caktuar të skedarit në listën e skedarëve të llojeve të njohura.

Bosët më vënë një detyrë mjaft interesante. Në një kohë të shkurtër, shkruani një analizues të skedarëve të ekzekutueshëm, të cilat me nënshkrime do të jenë në gjendje të gjenin trupin e viruseve dhe të përcaktojnë paketën / kriptorin e përdorur. Prototipi i përfunduar u shfaq në disa orë.

Fjala e autorit

Analiza e alarmit

Kërkimi për një firmosje me qëllim të keq është ajo që çdo antivirus mund. Në përgjithësi, nënshkrimi është një përshkrim i formalizuar i disa veçorive, të cilat mund të përcaktojnë se dosja e skanuar është një virus dhe virusi është mjaft i përcaktuar.

Ka teknika të ndryshme këtu. Si një opsion, përdorni një nënshkrim të përbërë nga n byte e një objekti me qëllim të keq. Në këtë rast, nuk është e mundur një krahasim budalla, por një krahasim për disa maskë (të tilla si kërkimi bytes EB ?? CD 13). Ose vendosni kushte shtesë si "të tilla, bytes duhet të jenë në pikën hyrëse të programit" dhe kështu me radhë. Nënshkrimi i Malvivës është i veçantë.

Në mënyrë të ngjashme, përshkruhen disa veçori në të cilat është e mundur të përcaktohet se skedari i ekzekutueshëm është i mbushur me një kriptore të veçantë ose një paketues (për shembull, një aspak banale). Nëse lexoni me kujdes revistën tonë, sapo kam dëgjuar për një mjet të tillë si një vaks, i aftë për të përcaktuar paketuesit, kriptorët dhe përpiluesit më të përdorur (në bazën e të dhënave ka një numër të madh të nënshkrimeve) për skedarin PE të transferuar në të. Mjerisht, versionet e reja të programit nuk lënë për një kohë të gjatë, dhe kohët e fundit një mesazh u shfaq në faqen zyrtare të internetit që projekti nuk do të zhvillohet më tej. Është për të ardhur keq, sepse mundësitë e Peid (sidomos duke pasur parasysh sistemin e shtojcës) mund të jenë të dobishme për mua. Pas një analize të shkurtër, u bë e qartë se kjo nuk është një opsion. Por duke luftuar në bloget anglishtfolëse, unë shpejt gjeta atë që kam ardhur. Projekti Yara (code.google.com/p/yara-project).

Çfarë është Yara?

Unë kam qenë i bindur për fillimin që diku në rrjet tashmë ka zhvillime të hapura që do të merrnin detyrën e përcaktimit të konformitetit midis një nënshkrimi dhe skedarit në studim. Nëse mund të gjeja një projekt të tillë, mund të vihet lehtësisht në binarët e një aplikacioni të internetit, të shtoni nënshkrime të ndryshme atje dhe të merrni atë që kërkohej nga unë. Plani filloi të duket edhe më real kur lexova përshkrimin e projektit YARA.

Zhvilluesit vetë po e pozicionojnë atë si një mjet për të ndihmuar studiuesit e Malvarit në identifikimin dhe klasifikimin e mostrave me qëllim të keq. Studiuesi mund të krijojë përshkrime për një lloj të ndryshëm të keqbërjes duke përdorur modelet e tekstit ose binarit, të cilat përshkruajnë shenjat e formalizuara të Malvarit. Kështu, janë marrë nënshkrime. Në fakt, çdo përshkrim përbëhet nga një sërë rreshtat dhe disa shprehje logjike, në bazë të të cilave është përcaktuar analiza e analizës.

Nëse kushtet e një prej rregullave janë të kënaqur për skedarin në studim, është përcaktuar në përputhje me rrethanat (për shembull, një krimb të diçkaje të tillë). Një shembull i thjeshtë i sundimit për të kuptuar se çfarë ka rëndësi:

rregulla Silent_Banker: Banker
{
Meta:
Përshkrimi \u003d "Ky është vetëm një shembull"
Thread_Level \u003d 3.
in_the_wild \u003d e vërtetë.
Strings:
$ A \u003d (6a 40 68 00 30 00 00 6a 14 8D 91)
$ B \u003d (8D 4D B0 2B C1 83 C0 27 99 6A 4E 59 F7 F9)
$ C \u003d "UVODFRYSIHLNWPEJXQZAKCBGMT"
Kushti:
$ A ose $ b ose $ c
}

Në këtë rregull, ne flasim Yara se çdo skedar që përmban të paktën një nga mostrat e rreshtave të përshkruara në $ A, $ b, $ C variablat duhet të klasifikohen si silent_banker trojan. Dhe ky është një rregull shumë i thjeshtë. Në fakt, rrotullat mund të jenë shumë më të komplikuara (ne do të flasim për këtë më poshtë).
Autoriteti i projektit YARA thotë edhe një listë projektesh që e përdorin atë, dhe kjo është:

  • Shërbimet e inteligjencës së malware të virustotal (vt-mis.com);
  • jsunpack-n (jsunpack.jeek.org);
  • Wewatchyourwebsite.com).

Ky kod është shkruar në Python, dhe përdoruesi i ofrohet vetë modulit për përdorim në zhvillimin e saj dhe thjesht skedar të ekzekutueshëm për të përdorur YARA si një aplikim të pavarur. Si pjesë e punës së saj, unë zgjodha opsionin e parë, por për thjeshtësi në artikull ne do ta përdorim analizuesin thjesht si një aplikim konsol.

Running pak, shpejt kuptova se si të shkruaj për rregullat e YARA, si dhe për të lidhur nënshkrimin e viruseve nga Avra \u200b\u200bdhe Packers lirë Avra \u200b\u200bdhe Peid. Por le të fillojmë me instalim.

Instalim

Siç thashë, projekti është shkruar në Python, kështu që mund të instalohet lehtësisht në Linux, dhe në Windows, dhe në Mac. Në fillim, ju mund të merrni vetëm një binar. Nëse e quani aplikacionin në tastierë, ne do të marrim rregullat për të kandiduar.

$ Yara.
Përdorimi: Yara ... ... File | Pid

Kjo është, formati i thirrjes së programit është si vijon: Së pari, emri i programit po vjen, atëherë lista e opsioneve, pas së cilës është përcaktuar dosja me rregullat, dhe në fund - emri i skedarit nën studim (ose directory që përmbajnë skedarë) ose identifikuesin e procesit. Tani do të ishte një e mirë për të shpjeguar se si janë përpiluar këto cilësime, por unë nuk dua të të dërgoj menjëherë me një teori të thatë. Prandaj, ne do të vazhdojmë ndryshe dhe do të konsiderojmë nënshkrimet e njerëzve të tjerë në mënyrë që Yara të kryejë një nga detyrat që keni dorëzuar - një përkufizim të plotë të viruseve me nënshkrime.

Antivirus e tij

Pyetja më e rëndësishme është se ku të merrni nënshkrimet bazë të viruseve të famshme? Kompanitë antivirus janë të ndarë në mënyrë aktive nga baza të tilla mes vete (dikush më bujarisht, dikush është më pak). Për të qenë i sinqertë, unë së pari dyshova se diku në rrjet dikush hapte hapur gjëra të tilla. Por, siç doli, ka njerëz të mirë. Baza e duhur nga kolamav anti-virus popullor është në dispozicion për të gjithë (clamav.net/lang/en). Në seksionin e fundit të lirimit të qëndrueshëm, ju mund të gjeni një lidhje me versionin më të fundit të produktit antivirus, si dhe lidhjet për shkarkimin e bazave të virusit Claamav. Ne së pari do të jenë të interesuar në main.cvd fotografi (db.local.clamav.net/main.cvd) dhe dity.cvd (db.local.clavd.net/daily.cvd).

E para përmban bazën e të dhënave kryesore të nënshkrimit, e dyta është baza më e plotë me shtesa të ndryshme. Për qëllimin e caktuar, ditore.cvd është mjaft e mjaftueshme, në të cilën janë mbledhur më shumë se 100,000 blinds. Megjithatë, baza clamav nuk është një bazë Yara, kështu që ne duhet ta konvertojmë atë në formatin e dëshiruar. Por si? Në fund të fundit, ne ende nuk dimë asgjë për formatin clamav, as për formatin yare. Ky problem tashmë ishte kujdesur për ne, duke përgatitur një skriptor të vogël, duke konvertuar bazën e të dhënave të nënshkrimit të virusit Clamav në një sërë rregullash Yara. Skenari quhet clamav_to_ yara.py dhe shkruar Matthew Richard (bit.ly/ij5hvs). Shkarkoni skriptin dhe konvertoni bazat e të dhënave:

$ Python clamav_to_yara.py -f daily.cvd -o clamav.yara

Si rezultat, në skedarin Clamav.yara, ne do të marrim një bazë të dhënash nënshkrimi që menjëherë do të jetë gati për përdorim. Ne tani provojmë kombinimin e bazave të Yara dhe Clamav në veprim. Skanimi i një dosje duke përdorur një nënshkrim kryhet nga një komandë e vetme:

$ yara -r clamav.yara / Pentest / MSF3 / të dhëna

Opsioni -R tregon se skanimi duhet të kryhet rekursivisht për të gjitha nën-dosjen e dosjes aktuale. Nëse dosja / Penest / MSF3 / të dhëna kishte një lloj virusesh (të paktën ata në bazën e clamav), atëherë Yara do ta shpallë këtë menjëherë. Në parim, ky është një skaner i gatshëm i nënshkrimit. Për lehtësi më të madhe, kam shkruar një skenar të thjeshtë që e kontrolloi përditësimin e bazës së clamav, shkarkuar nënshkrime të reja dhe i ktheu ato në formatin YARA. Por këto janë detajet. Një pjesë e detyrës është përfunduar, tani ju mund të vazhdoni të hartoni rregullat për përcaktimin e paketuesve / kriptorëve. Por për këtë unë kam për të kuptuar atë pak.

Lojë sipas rregullave

Pra, rregulli është mekanizmi kryesor i programit që ju lejon të atribuoni një skedar të caktuar për çdo kategori. Rregullat përshkruhen në një skedar (ose skedarë) të veçantë dhe në pikëpamjen e saj shumë i ngjajnë strukturës së strukturës () nga gjuha C / C ++.

rregulla Badboy
{
Strings:
$ a \u003d "win.exe"
$ B \u003d "http://foo.com/badfi le1.exe"
$ c \u003d "http://bar.com/badfi le2.exe"
Kushti:
$ A dhe ($ b ose $ c)
}

Në parim, asgjë e komplikuar në rregullat e shkrimit. Si pjesë e këtij artikulli, unë vetëm prekja pikat kryesore, dhe do të gjeni detaje në Manul. Ndërkohë, dhjetë pikat më të rëndësishme:

1. Çdo rregull fillon me rregullin e fjalëve, pas së cilës po vjen identifikuesi i rregullit. Identifikuesit mund të kenë të njëjtat emra si variablat në C / C ++, që është, i përbërë nga letra dhe numra, dhe karakteri i parë nuk mund të jetë një shifër. Kohëzgjatja maksimale e emrit identifikues është 128 karaktere.

2. Zakonisht rregullat përbëhen nga dy seksione: Përkufizimet (strings) dhe seksioni i kushteve (kusht). Në seksionin e vargjeve, të dhënat jepen në bazë të së cilës do të bëhet një zgjidhje në seksionin e kushteve, nëse dosja e specifikuar plotëson kushte të caktuara.

3. Çdo varg në seksionin e vargjeve ka identifikuesin e vet që fillon nga shenja $ - në përgjithësi, si një ndryshore e reklamës në PHP. Yara mbështet linjat e zakonshme të mbyllura në kuotat e dyfishta ("") dhe linjat heksadecimale përfunduan në kllapa kaçurrela (()), si dhe shprehje të rregullta:

$ My_text_string \u003d "tekst këtu"
$ My_hex_string \u003d (E2 34 A1 C8 23 fb)

4. Seksioni i gjendjes përmban të gjitha logjikën e rregullave. Ky seksion duhet të përmbajë një shprehje logjike që përcakton se në cilin rast skedari ose procesi plotëson rregullin. Zakonisht në këtë seksion ka një apel për linjat e shpallura më parë. Një identifikues i vargut konsiderohet si një ndryshore logjike që kthehet e vërtetë nëse vargu u gjet në dosjen ose memorien e procesit, dhe të rreme ndryshe. Rregulli i mësipërm përcakton që dosjet dhe proceset që përmbajnë vargun Win.exe dhe një nga dy URL-të duhet t'i atribuohen kategorisë së Badboy (me emrin e rregullave).

5. Linjat hexadecimal ju lejojnë të përdorni tre dizajne që i bëjnë ato më fleksibël: zëvendësimet (wildcards), grupet (hedhje) dhe përzgjedhjen alternative (alternativa). Zëvendësimet janë vende në vargun që janë të panjohur, dhe në vendin e tyre mund të jenë çdo kuptim. Ata tregojnë simbolin "?":

$ HEX_STRING \u003d (E2 34 ?? C8 A? FB)

Kjo qasje është shumë e përshtatshme kur specifikon vargjet, gjatësia e së cilës është e njohur, dhe përmbajtja mund të ndryshojë. Nëse një pjesë e linjës mund të jetë me gjatësi të ndryshme, është e përshtatshme për të përdorur vargjet:

$ hex_string \u003d (f4 23 62 b4)

Ky rekord do të thotë se në mes të linjës mund të jetë nga 4 në 6 byte të ndryshme. Ju gjithashtu mund të zbatoni një zgjedhje alternative:

$ HEX_STRING \u003d (F4 23 (62 B4 | 56) 45)

Kjo do të thotë se në skenën e byte të tretë mund të jetë 62 B4 ose 56, një rekord i tillë korrespondon me vargjet F42362B445 ose F4235645.

6. Për të verifikuar që vargu i specifikuar është në një zhvendosje specifike në skedarin ose hapësirën e adresës së procesit, përdoret operatori:

$ A në 100 dhe $ b në 200

Nëse vargu mund të jetë brenda një sërë adresash, është përdorur:

$ A në (0..100) dhe $ b në (100..fi lesize)

Ndonjëherë ka situata kur është e nevojshme për të specifikuar se dosja duhet të përmbajë një numër të caktuar nga grupi i specifikuar. Kjo është bërë duke përdorur operatorin e:

rregulla example1
{
Strings:
$ foo1 \u003d "Dummy1"
$ foo2 \u003d "Dummy2"
$ foo3 \u003d "dummy3"
Kushti:
2 të ($ foo1, $ foo2, $ foo3)
}

Rregulli kërkon që dosja të përmbajë çdo dy rreshta nga grupi ($ foo1, $ foo2, $ foo3). Në vend që të specifikoni një numër të caktuar të rreshtave në skedar, mund të përdorni çdo variabl (të paktën një rresht nga grupi i specifikuar) dhe të gjitha (të gjitha linjat nga një grup i caktuar).

7. E pra, mundësia e fundit interesante për t'u marrë parasysh është të aplikoni një kusht për shumë rreshta. Kjo veçori është shumë e ngjashme me operatorin e shtetit, vetëm më e fuqishme është operatori për ...

për shprehjen e string_set: (boolean_expression)

Kjo hyrje duhet të lexohet si kjo: nga vargjet e specifikuara në string_ vendosur, të paktën një pjesë të shprehjes duhet të plotësojë gjendjen boolean_expression. Ose, me fjalë të tjera: shprehja boolean_expression llogaritet për çdo rresht nga string_set, dhe shprehja e tyre duhet të kthehet në të vërtetë. Tjetra, ne e konsiderojmë këtë dizajn në një shembull të caktuar.

Duke e bërë peid.

Pra, kur gjithçka është bërë më pak e qartë me rregullat, mund të vazhdoni me zbatimin në projektin tonë të detektorëve të paketuesve dhe të kriptorëve. Si një material fillestar në fillim, unë huazova nënshkrime të paketuesve të njohur nga e njëjta peid. Në dosjen Plugins ka një skedar userdb.txt, i cili përmban atë që na nevojitet. Në bazën e të dhënave doli 1850 nënshkrime.

Shumë, kështu që në mënyrë që t'i importoni plotësisht ato, ju këshilloj të shkruani disa scriptor. Formati i kësaj baze të dhënash është i thjeshtë - përdoret skedari i zakonshëm i tekstit, në të cilin ruhen të dhënat e formularit:


Nënshkrimi \u003d 50 e8 ?? ?? ?? ?? 58 25 ?? F0 FF FF 8B C8 83 C1 60 51 83 C0 40 83 EA 06 52 FF 20 9D C3
Ep_only \u003d e vërtetë.

Vargu i parë përcakton emrin e paketuesit që do të shfaqet në peid, për ne do të jetë identifikuesi i sundimit. E dyta është vetë nënshkrimi vetë. E treta është flamuri ep_only, duke treguar nëse do të kërkojë këtë varg vetëm në adresën e pikës së hyrjes, ose në të gjithë dosjen.

Epo, le të përpiqemi të krijojmë një rregull, të themi, për aspak? Siç doli, nuk ka asgjë të komplikuar. Së pari, krijoni një skedar për ruajtjen e rregullave dhe thirrni atë, për shembull, Packers.Yara. Ne pastaj kërkojmë në bazën e të dhënave të PEID të gjitha nënshkrimet, në titullin e të cilit shfaqet ANDACK, dhe i mbajnë ato për të rregulluar:

sundon aspak
{
Strings:
$ \u003d (60 e8 ?? ?? ?? 5D 81 ed ?? (43 | 44) ?? B8 ?? (43 | 44) ?? 03 C5)
$ \u003d (60 EB ?? 5D EB ?? ?? ?? ?? ?? e9)
[.. prerë ..]
$ \u003d (60 E8 03 00 00 00 00 E9 EB 04 5D 45 55 C3 E8 01)
Kushti:
Për cilindo prej tyre: ($ në hyrje)
}

Të gjitha të dhënat gjetën flamurin EP_Only është vendosur në të vërtetë, dmth. Këto rreshta duhet të vendosen në adresën e pikës së hyrjes. Prandaj, ne shkruajmë kushtet e mëposhtme: "Për cilindo prej tyre: ($ në hyrje)."

Kështu, prania e të paktën një prej rreshtave të specifikuara në adresën e pikës së hyrjes do të thotë se dosja është e mbushur me ANDACK. Gjithashtu edhe vëmendja që në këtë rregull të gjitha rreshtat janë thjesht të vendosur duke përdorur shenjën $, pa një identifikues. Kjo është e mundur, pasi në seksionet e gjendjes nuk kontaktojmë ndonjë të veçantë, por ne përdorim të gjithë grupin.

Për të kontrolluar ecurinë e sistemit të marrë, është e mjaftueshme për të kryer komandën në tastierë:

$ Yara -r paketuesit.yara somefi le.exe

E drejta ka disa aplikacione, ANDACK i paketuar, kam bërë të sigurt se gjithçka funksionon!

Përfunduar prototip

Yara ishte një mjet jashtëzakonisht i qartë dhe transparent. Unë nuk kam bërë shumë vështirësi për të shkruar një webAdming për të dhe të krijojë punë si një shërbim web. Disa rezultate krijuese dhe të thata të analizuesit tashmë janë pikturuar me ngjyra të ndryshme, duke treguar shkallën e rrezikut të themelimit të themelimit. Një përditësim i vogël i bazës së të dhënave, dhe një përshkrim i shkurtër është i disponueshëm për shumë nga kriptorët, dhe nganjëherë edhe unpacking udhëzime. Prototipi është krijuar dhe veprat e anuluara, dhe bosët vallëzimet nga kënaqësia!

Kodi i funksionit (FC) në kokën e telegramit identifikon llojin e telegramit, siç është telegrami i kërkesës (kërkesa ose telegrami i dërgimit / kërkesës (korniza e njohjes, korniza e përgjigjes). Përveç kësaj, kodi i funksionit përmban funksionin aktual të transmetimit dhe kontrollin e informacionit që parandalon humbjen dhe dublikimin e mesazheve, ose llojin e stacionit me statusin e FDL.

7 6 5 4 3 2 1 0 FC: Kërkesa e kodit të funksionit
1 Kërkoni telegrame.
X. Fcv \u003d alternuar pak i ndezur
X. href \u003d "http://profibus.felser.ch/en/funktionscode.htm#aufruffolgebit»\u003e fcb \u003d bit alternative (nga numërimi kornizë)
1 0 (0x0) CV \u003d vlera e orës ()
1 tjetri I rezervuar
0 0 (0x0) Te \u003d ngjarja kohore (sinkronizimi i orës)
0 3 (0x3) SDA_LOW \u003d Dërgo të dhënat e njohura - Prioritet i ulët
0 4 (0x4) SDN_LOW \u003d Dërgo të dhëna nuk pranohen - prioritet të ulët
0 5 (0x5) SDA_High \u003d Dërgo të dhënat e njohura - Prioritet i lartë
0 6 (0x6) SDN_High \u003d Dërgo të dhëna nuk pranohen
0 7 (0x7) MSRD \u003d Dërgo të dhënat e kërkesës me përgjigje multicast
0 9 (0x9) Kërkoni statusin e FDL.
0 12 (0xc) Srd Low \u003d Dërgoni dhe kërkoni të dhëna
0 13 (0XD) SRD HIGH \u003d Dërgoni dhe kërkoni të dhëna
0 14 (0xe) Kërkoni idenë me përgjigje
0 15 (0xf) Kërkoni statusin e LSAP me përgjigje 1)
0 tjetri I rezervuar

1) Kjo vlerë është në versionin e fundit të standardit që nuk është përcaktuar më, por vetëm i rezervuar

7 6 5 4 3 2 1 0 FC: Përgjigja e kodit funksion
0 Përgjigjeni telegramin
0 I rezervuar
0 0 Skllav.
0 1 Master nuk është gati.
1 0 Master gati, pa shenjë
1 1 Master gati, në unazë shenjë
0 (0x0) NE RREGULL.
1 (0x1) Ue \u003d Gabim i përdoruesit
2 (0x2) RR \u003d Nuk ka burime
3 (0x3) Rs \u003d SAP nuk është aktivizuar
8 (0x8) Dl \u003d të dhënat e ulëta (rasti normal me dp)
9 (0x9) Nr \u003d nuk ka të dhëna përgjigje të gatshme
10 (0xa) DH \u003d Të dhënat e larta (diagnoza e PD-së në pritje)
12 (0xc) RDL \u003d Të dhënat nuk janë marrë dhe të dhënat e ulëta
13 (0XD) RDH \u003d Të dhënat nuk janë marrë dhe të dhënat e larta
tjetri I rezervuar

Korniza numëron bit kuadri i kornizës Bit FCB (B5) parandalon kopjimin e mesazhit nga stacioni i pranimit ose i përgjigjes (responder) dhe çdo humbje nga stacioni i thirrjes (iniciatori). Përjashtuar nga kjo janë kërkesa pa pranimin (SDN) dhe statusin e FDL, identifikimin dhe kërkesat e statusit të LSAP.

Për sekuencën e sigurisë, iniciatori duhet të mbajë një FCB për çdo përgjigje. Kur një kërkesë e kërkesës (kërkesa ose dërgimi / kërkesa) dërgohet në një përgjigje për herë të parë, ose nëse ri-dërgohet në një përgjigje të regjistruar aktualisht si jo-operacionale, FCB duhet të vendoset siç përcaktohet në përgjigjen. Iniciatori e arrin këtë në një telegram të kërkesës me FCV \u003d 0 dhe FCB \u003d 1. Përgjigja duhet të vlerësojë një telegram të këtij lloji si cikli i mesazhit të parë dhe ruani FCB \u003d 1 së bashku me adresën e iniciatorëve (SA). Ky cikël i mesazhit nuk do të përsëritet nga iniciatori. Në telegramë të mëvonshëm për të njëjtin përgjigje, iniciatori duhet të vendosë FCV \u003d 1 dhe të ndryshojë FCB me çdo telegram të ri të kërkesës. Çdo përgjigje që merr një telegram të kërkesës drejtuar asaj me FCV \u003d 1 duhet të vlerësojë FCB. Nëse FCB ka ndryshuar kur krahasohet me të njëjtën iniciator (SAM SA), kjo është konfirmim i vlefshëm se cikli i mesazhit të mëparshëm u përfundua siç duhet. Nëse telegrami i kërkesës vjen nga një iniciator tjetër (SA të ndryshme), vlerësimi i FCB nuk është më i pavlerë. Në të dy rastet, responderi duhet të shpëtojë FCB me burimin SA deri në marrjen e një telegrami të ri të adresuar për të. Në rastin e një vlerësimi të humbur ose të dëmtuar të telegramit ose përgjigjes, FCB nuk duhet të ndryshohet nga iniciatori në ciklin e mesazhit të mëparshëm ishte i gabuar. Nëse përgjigja merr një telegram të kërkesës me FCV \u003d 1 dhe të njëjtin FCB si i njëjti iniciator (SA SA), kjo do të tregojë një kërkesë për të përsëritur. Responderi duhet të kthehet në kthimin e telegramit të pranimit ose reagimit të mbajtur në gatishmëri. Deri në konfirmimin ose marrjen e lartpërmendur të një telegrami me një adresë tjetër (SA ose DA) që nuk është pranuar (dërgoni të dhëna pa pranoni, SDN) Përgjegjësia duhet të mbajë njohjen e fundit ose përgjigjen e përgjigjes në gatishmëri për çdo kërkesë të mundshme . Në rastin e telegrameve të kërkesës që nuk janë të pranuara dhe me kërkesën për statusin e FDL, identifikimin dhe statusin e LSAP, FCV \u003d 0 dhe FCB \u003d 0; Vlerësimi nga përgjigja nuk është më e nevojshme.

b5. b4. Pozita e vogël
FCB. FCV. Kusht Kuptim. Veprim.
0 0 Da \u003d ts / 127 Kërkesë pa pranim
Kërkoni statusin e FDL / Statusi i Identifikimit / LSAP
Fshini mirënjohjen e fundit
0/1 0/1 Da # ts. Kërkoni një përgjigje tjetër
1 0 Da \u003d ts. Kërkesa e parë FCBM: \u003d 1
Sam: \u003d SA
Fshij pranimin / përgjigjen e fundit
0/1 1 Da \u003d ts.
Sa \u003d sam.
FCB # FCBM.
Kërkesë e re. Fshij pranimin / përgjigjen e fundit
FCBM: \u003d FCB
Mbajeni pranimin / përgjigjen në gatishmëri për të përsëritur
0/1 1 Da \u003d ts.
Sa \u003d sam.
FCB \u003d FCBM.
Kërkoni rifilloni FCBM: \u003d FCB
Përsëriteni pranimin / përgjigjen dhe vazhdoni të mbani në gatishmëri
0/1 1 Da \u003d ts.
Sa # Sam.
Iniciator i ri FCBM: \u003d FCB
Sam: \u003d Sa të mbajë pranimin / përgjigjen në gatishmëri për të përsëritur

FCBM i ruajtur FCB në kujtesën Sam Stored SA në kujtesë

Shumë prej tyre mund të dëgjojnë për skedarë të tillë si Rarjpeg "dhe. Ky është një lloj i veçantë i skedarëve, i cili është një imazh i ngjitur i ngushtë JPEG dhe një arkiv rar. Është një enë e shkëlqyer për të fshehur faktin e transferimit të informacionit. Krijo Rarjpeg duke përdorur komandat e mëposhtme :

Unix: cat image1.jpg Archive.Rar\u003e image2.jpg
Windows: kopjo / b image1.jpg + Archive.Rar image2.jpg

Ose në prani të një redaktori heks.

Natyrisht, jo vetëm formati JPEG mund të përdoret për të fshehur transferimin e informacionit të informacionit, por shumë të tjerë. Çdo format ka karakteristikat e veta, falë të cilave mund të jetë i përshtatshëm ose jo për rolin e enës. Unë do të përshkruaj se si mund të gjeni skedarët e ngjitur në formatet më të njohura ose specifikoni faktin e ngjitjes.

Metodat për zbulimin e dosjeve të ngjitura mund të ndahen në tri grupe:

  1. Metoda e kontrollit të zonës pas EOF-Marker. Shumë formate të njohura të skedarëve kanë të ashtuquajturën shënues fundor të skedarit, i cili është përgjegjës për shfaqjen e të dhënave të dëshiruara. Për shembull, programet për shikimin e fotografive lexojnë të gjitha bytes deri në këtë shënues, megjithatë, zona pasi ajo mbetet e injoruar. Kjo metodë është ideale për formatet: jpeg, png, gif, zip, rar, pdf.
  2. Metodën e kontrollimit të madhësisë së dosjes. Struktura e disa formateve (kontejnerët audio dhe video) ju lejon të llogarisni madhësinë aktuale të skedarit dhe të krahasoni atë me madhësinë origjinale. Formatet: AVI, WAV, MP4, MOV.
  3. Metodë për të kontrolluar skedarët CFB. CFB ose Formati Binar i Kompleksit - Formati i dokumentit i zhvilluar në Microsoft, i cili është një enë me sistemin e vet të skedarit. Kjo metodë bazohet në anomali të zbulimit në dosje.

A ka ndonjë jetë pas përfundimit të skedarit?

Jpeg.

Për të gjetur një përgjigje për këtë pyetje, është e nevojshme të thellohet në specifikimin e formatit, e cila është një "springchart" e skedarëve të ngjitur dhe të kuptojë strukturën e saj. Çdo JPEG fillon me nënshkrimin 0XFF 0XD8.

Pas kësaj nënshkrimi është një informacion i shërbimit, opsionalisht ikona e imazhit dhe, së fundi, vetë imazhi i ngjeshur. Në këtë format, fundi i imazhit është shënuar me një nënshkrim dy-byte 0xff 0xD9.

Png.

Tetë bytes e para të skedarit PNG merr nënshkrimin e mëposhtëm: 0x89, 0x50, 0x4E, 0x47, 0x0d, 0x0a, 0x1a, 0x0a. Nënshkrimi i fundit që përfundon rrjedhën e të dhënave: 0x49, 0x45, 0x4E, 0x44, 0xae, 0x42, 0x60, 0x82.

Rar

Nënshkrimi total për të gjitha arkivat rar: 0x52 0x61 0x72 0x21 (RAR!). Pas kësaj, informacioni në lidhje me versionin e arkivit dhe të dhënave të tjera të lidhura është në dispozicion. Mënyra eksperimentale u gjet se arkivi përfundon me një nënshkrim të 0x0A, 0x25, 0x25, 0x45, 0x4f, 0x46.

Tabela e formateve dhe nënshkrimeve të tyre:
Algoritmi për të kontrolluar për ngjitjen në këto formate është jashtëzakonisht e thjeshtë:

  1. Gjeni nënshkrimin fillestar;
  2. Gjeni nënshkrimin përfundimtar;
  3. Nëse pas nënshkrimit përfundimtar nuk ka të dhëna - dosja juaj është e pastër dhe nuk përmban bashkëngjitje! Në këtë rast, duhet të kërkoni formate të tjera pas nënshkrimit përfundimtar.

GIF dhe PDF.

Dokumenti PDF mund të ketë më shumë se një shënues të EOF, për shembull, për shkak të gjenerimit të pahijshëm të dokumentit. Numri i nënshkrimeve të fundme në skedarin GIF është i barabartë me numrin e kornizave në të. Bazuar në karakteristikat e këtyre formateve, ju mund të përmirësoni algoritmin për të kontrolluar praninë e dosjeve të ngjitura.
  1. Paragrafi 1 përsëritet nga algoritmi i mëparshëm.
  2. Paragrafi 2 përsëritet nga algoritmi i mëparshëm.
  3. Kur gjetja e nënshkrimit përfundimtar për të kujtuar vendndodhjen e saj dhe për të kërkuar më tej;
  4. Nëse kjo mënyrë arriti shënuesin e fundit të EF - skedari është i pastër.
  5. Nëse skedari nuk përfundon me nënshkrimin përfundimtar - goto vendos nënshkrimin e fundit të gjetur fund.
Dallimi i madh në mes të madhësisë së dosjes dhe pozitës pas nënshkrimit të fundit të fundosur tregon praninë e një shtojce ngjitëse. Dallimi mund të jetë më shumë se dhjetë bytes, edhe pse është e mundur të instaloni vlera të tjera.

Zip.

Tipari i arkivave zip është prania e tre nënshkrimeve të ndryshme: struktura e arkivit është si më poshtë:
Header lokal 1
Të dhënat e skedarit 1.
Përshkrimi i të dhënave 1.
Header lokal 2
Të dhënat e skedarit 2.
Përshkrimi i të dhënave 2.
...
Kreu lokal i skedarit n
Data e skedarit N.
Përshkrimi i të dhënave N.
Header i decryption arkiv.
Arkivi i të dhënave shtesë të të dhënave
Drejtoria qendrore.
Më interesante është dosja qendrore që përmban meta të dhëna për skedarët në arkiv. Directory Qendrore gjithmonë fillon me një nënshkrim prej 0x50 0x4b 0x01 0x02 dhe përfundon me një nënshkrim 0x50 0x4b 0x05 0x06, pas së cilës 18 byte e metadata vijon. Ajo që është interesante, arkivat bosh përmbajnë vetëm nga nënshkrimi përfundimtar dhe 18 bytes zero. Pas 18 byte ndjek zonën e komenteve në arkiv, e cila është enë perfekte për të fshehur skedarin.

Për të kontrolluar arkivin ZIP, ju duhet të gjeni nënshkrimin përfundimtar të dosjes qendrore, kaloni 18 bytes dhe kërkoni për nënshkrime të formateve të njohura në zonën e komenteve. Madhësia e madhe e komenteve gjithashtu tregon një fakt ngjitës.

Masa ka rendesi

AVI.

Struktura e skedarit AVI është si më poshtë: Çdo skedar fillon me nënshkrimin e riff (0x52 0x49 0x46 0x46). Më 8, nënshkrimi i nënshkrimit AVI (0x41 0x56 0x49 0x20) vijon. Një bllok në kompensim 4, i përbërë nga 4 bytes, përmban madhësinë fillestare të bllokut të të dhënave (urdhër byte - pak e endian). Për të gjetur numrin e bllokut që përmban madhësinë tjetër, duhet të vendosni madhësinë e titullit (8 bytes) dhe madhësinë e marrë në bllokun 4-8 byte. Kështu, është llogaritur madhësia e plotë e skedarit. Supozohet se madhësia e llogaritur mund të jetë më e vogël se madhësia aktuale e dosjes. Pas madhësisë së llogaritur, skedari do të përmbajë vetëm zero bytes (është e nevojshme për të lidhur kufirin në 1 KB).

Shembull i Llogaritjes së madhësisë:


Wav

Ashtu si AVI, skedari WAV fillon me nënshkrimin e riff, megjithatë, ky skedar ka një nënshkrim nga 8 bytes - valë (0x57 0x41 0x56 0x45). Madhësia e skedarit llogaritet në të njëjtën mënyrë si AVI. Madhësia aktuale duhet të përputhet plotësisht me atë të llogaritur.

Mp4

MP4 ose MPEG-4 - Formati i procesorit të medias që përdoret për të ruajtur transmetimet video dhe audio, gjithashtu parashikon ruajtjen e titrave dhe imazheve.
Në kompensimin e 4 bytes ka nënshkrime: lloji i skedarit FTYP (66 74 79 70) dhe nëntipi i skedarit MMP4 (6d 6d 70 34). Për të njohur skedarët e fshehur, ne jemi të interesuar për mundësinë e llogaritjes së madhësisë së skedarit.

Konsideroni një shembull. Madhësia e bllokut të parë është në zero kompensuar, dhe është e barabartë me 28 (00 00 00 1c, rendin e byte të madhe endian); Ajo gjithashtu tregon për kompensimin ku ndodhet madhësia e bllokut të dytë të të dhënave. Në 28 zhvendosje ne gjejmë madhësinë e bllokut të ardhshëm prej 8 (00 00 00 08). Për të gjetur madhësinë e bllokut në vijim, ju duhet të shtoni madhësitë e blloqeve të mëparshme të gjetura. Kështu, është llogaritur madhësia e skedarit:

Mov.

Ky format i përdorur gjerësisht është gjithashtu një enë MPEG-4. MOV përdor një algoritëm të pronarit të kompresimit të të dhënave, ka një strukturë MP4 dhe përdoret për të njëjtat qëllime - për ruajtjen e të dhënave audio dhe video, si dhe materialeve të lidhura.
Ashtu si MP4, çdo skedar MOV ka një nënshkrim 4 byte 4 byte të FTYP, megjithatë, nënshkrimi i mëposhtëm ka vlerën QT__ (71 74 20 20). Rregulli i llogaritjes së madhësisë së skedarit nuk ka ndryshuar: që nga fillimi i dosjes, llogarit madhësinë e bllokut të ardhshëm dhe dele.

Metoda për të kontrolluar këtë grup të formateve për praninë e dosjeve "ngjitur" është llogaritja e madhësisë sipas rregullave të specifikuara më lart dhe e krahasojnë atë me madhësinë e dosjes që kontrollohet. Nëse madhësia aktuale e skedarit është shumë më e vogël se ajo e llogaritur, atëherë kjo tregon faktin e ngjitjes. Kur kontrollohet skedarët AVI lejohet që madhësia e llogaritur të jetë më e vogël se madhësia e dosjes për shkak të pranisë së zeros të shtuar për të lidhur kufirin. Në këtë rast, është e nevojshme të kontrolloni zero pas madhësisë së llogaritur të skedarit.

Kontrolloni formatin binar të skedarit të pajtueshëm

Ky format i skedarit, i projektuar në Microsoft, njihet edhe si OLE (lidhja e objekteve dhe embedding) ose COM (modeli i objektit të komponentit). Doc, skedarë XLS, PPT i përkasin grupit të formatit CFB.

Dosja CFB përbëhet nga një header 512 byte dhe sektorë të së njëjtës gjatësi që ruajnë rrjedhat e të dhënave ose informacionin e shërbimit. Secili sektor ka numrin e vet jo-negativ, përjashtimi është numra të veçantë: "-1" - numrat e sektorit të lirë, "-2" - numrat e sektorit, duke mbyllur zinxhirin. Të gjithë zinxhirët e sektorëve përcaktohen në tryezën e yndyrës.

Supozoni se sulmuesi ndryshoi një lloj skedari doc dhe ngjitej një skedar tjetër në fund të saj. Ka disa mënyra të ndryshme për të zbuluar atë ose për të treguar një anomali në dokument.

Madhësia e skedarit anormal

Siç u përmend më lart, çdo skedar CFB përbëhet nga një header dhe sektorë me gjatësi të barabartë. Për të gjetur madhësinë e sektorit, duhet të lexoni një numër me dy byte në 30 kompensuar nga fillimi i skedarit dhe ndërtoni 2 në shkallën e këtij numri. Ky numër duhet të jetë i barabartë me 9 (0x0009), ose 12 (0x000c), respektivisht, madhësia e sektorit të skedarëve është 512 ose 4096 bytes. Pas gjetjes së sektorit, duhet të kontrolloni barazinë e mëposhtme:

(FileSize - 512) MOD SECTORSIZE \u003d 0

Nëse kjo barazinë nuk ekzekutohet, mund të specifikoni faktin e vendosjes së skedarëve. Megjithatë, kjo metodë ka një pengesë të konsiderueshme. Nëse sulmuesi e di madhësinë e sektorit, atëherë është e mjaftueshme për të ngjitur dosjen e tij dhe një tjetër n byte në mënyrë që madhësia e të dhënave të ngjitura është madhësia e sektorit të shumëfishtë.

Lloji i sektorit të panjohur

Nëse sulmuesi e di për mënyrën e anashkalimit të kontrollit të mëparshëm, kjo metodë mund të zbulojë disponueshmërinë e sektorëve me lloje të pasigurta.

Ne përcaktojmë barazinë:

Filesize \u003d 512 + countreal * SECTORSIZE, ku skedarët është madhësia e skedarit, sektorët - madhësia e sektorit, numërimi i numrit të sektorëve.

Ne gjithashtu përcaktojmë variablat e mëposhtëm:

  1. Numërimi - numri i sektorëve të yndyrës. Është 44 kompensuar nga fillimi i skedarit (4 bytes);
  2. Countminifat - numri i sektorëve minifat. E vendosur në 64 kompensuar nga fillimi i skedarit (4 bytes);
  3. Numërimi i numrit të sektorëve të difat. E vendosur në 72 kompensuar nga fillimi i skedarit (4 bytes);
  4. COUNTDE - Numri i sektorëve të hyrjes në dosje. Për të gjetur këtë variabël, është e nevojshme për të gjetur sektorin e parë de, i cili ndodhet në 48 zhvendosje. Pastaj ju duhet të merrni një pamje të plotë të de nga yndyra dhe të llogarisni numrin e sektorëve de de;
  5. Countstreams - numri i sektorëve të të dhënave;
  6. Countfree - numri i sektorëve të lirë;
  7. Numërimi i akorduar - numri i sektorëve me një lloj të caktuar;
COUNTLASSIFIED \u003d COUNTFAT + COUNTMINIFAT + COUNTDIFAT + COUNTDE + COUNTSTREAMS + LOTEFREE

Natyrisht, në pabarazinë e akuzës së akorduar dhe të kundërt, mund të bëni një përfundim në lidhje me ngjitjen e skedarëve të mundshëm.