ایجاد یک نوع فایل شناخته شده کاربر برای R-Studio. روش های تشخیص فایل های "چسب" جستجو برای فایل های امضا شده از دست رفته

مفهومی از " شماره جادویی"در برنامه نویسی سه معانی دارد:

  • امضای داده
  • مقادیر منحصر به فرد انتخاب شده که نباید با سایر مقادیر (به عنوان مثال، UUID)
  • تمرین برنامه نویسی بد.

امضای داده

شماره جادویی، یا امضاء- یک عدد صحیح یا متن ثابت برای شناسایی یکپارچه از یک منبع یا داده استفاده می شود. چنین تعداد به خودی خود هیچ حس نمی کند و می تواند باعث ناراحتی شود، بدون اینکه یک زمینه یا نظر مناسب را در کد برنامه ملاقات کند، با تلاش برای تغییر آن به دیگری، حتی نزدیک شدن به ارزش، می تواند منجر به عواقب مطلقا غیر قابل پیش بینی شود. به همین دلیل، چنین اعداد به صورت جادویی به نام جادویی بودند. در حال حاضر، این نام به طور محکم به عنوان یک اصطلاح ثابت است. به عنوان مثال، هر کلاس کامپایل شده از زبان جاوا با یک "شماره جادویی" هگزادسیمال شروع می شود 0xcafebabe. دوم یک نمونه شناخته شده است - هر فایل اجرایی مایکروسافت ویندوز با یک فرمت .exe با یک توالی بایت 0x4D5A آغاز می شود (که مربوط به ASCII -Simvols MZ است - مارک Zbikovski، یکی از سازندگان MS-DOS). یک مثال کمتر شناخته شده یک اشاره گر بی نظیر در مایکروسافت ویژوال C ++ (با شروع نسخه 2005 مایکروسافت ویژوال استودیو)، که در حالت اشکال زدایی دارای آدرس 0xDeadBeef است.

در سیستم عامل های یونیکس، نوع فایل معمولا توسط امضای فایل، صرف نظر از گسترش نام آن تعیین می شود. برای تفسیر امضای فایل در آنها، ابزار فایل استاندارد ارائه شده است.

برنامه نویسی بد

همچنین، "اعداد جادویی" عمل برنامه نویسی بد نامیده می شود، زمانی که اهمیت عددی در متن منبع یافت می شود و واضح نیست که این بدان معنی است. به عنوان مثال، چنین قطعه ای که در جاوا نوشته شده است بد خواهد بود:

drawsPrite (53، 320، 240)؛

iNT INT SCREEN_WIDTH \u003d 640؛ INT INT SCREEN_HEIGHT \u003d 480؛ INT SCREEN_X_CENTER \u003d SCREEN_WIDTH / 2؛ INT INT SCREEN_Y_CENTER \u003d SCREEN_HEIGHT / 2؛ نهایی int sprite_crosshair \u003d 53؛ ... drawsprite (sprite_crosshair، screen_center، screen_y_center)؛

در حال حاضر روشن است: این خط به مرکز صفحه نمایش Sprite - متقاطع سطل زباله به ارمغان می آورد. در اکثر زبان های برنامه نویسی، تمام مقادیر مورد استفاده برای این ثابت ها در مرحله تدوین محاسبه می شود و به استفاده از مقادیر جایگزین می شود. بنابراین، چنین تغییری در متن منبع، سرعت برنامه را بدتر نمی کند.

علاوه بر این، اعداد جادویی یک منبع بالقوه خطاهای در برنامه هستند:

  • اگر همان شماره جادویی در برنامه بیش از یک بار استفاده شود (یا به طور بالقوه می تواند مورد استفاده قرار گیرد)، تغییر آن نیاز به استفاده از هر ورودی (به جای یک ویرایش ارزش به نام ثابت). اگر همه نوشته ها اصلاح نشوند، حداقل یک خطا بوجود می آید.
  • در حداقل، در یکی از موارد، تعداد جادویی را می توان با یک خطا در ابتدا نوشته شده است، و تشخیص بسیار دشوار است.
  • شماره جادویی ممکن است به پارامتر ضمنی یا سایر عدد جادویی بستگی داشته باشد. اگر این وابستگی ها به صراحت انتخاب نشده باشند، راضی نخواهند شد، حداقل یک خطا وجود خواهد داشت.
  • هنگام اصلاح وقایع یک عدد جادویی، ممکن است یکی دیگر از شماره های جادویی، مستقل، اما داشتن مقدار عددی مشابه را انجام دهید.

اعداد سحر و جادو و پلت فرم متقابل

گاهی اوقات اعداد جادویی به کد پلت فرم متصل می شوند. واقعیت این است که در SI در سیستم عامل 32 و 64 بیتی، اندازه انواع کاراکتر، کوتاه و بلند مدت تضمین شده است، در حالی که اندازه int، long، size_t و ptrdiff_t ممکن است متفاوت باشد (در دو اول - بسته به ترجیحات توسعه دهندگان کامپایلر، دو سال گذشته - بسته به تخلیه سیستم هدف). در یک کد نوشته شده قدیمی یا نامناسب، "اعداد جادویی"، به این معنی هر اندازه اندازه، زمانی که به ماشین ها با کمی دیگر تغییر می کند، می توانند به خطاهای دشوار به اشکال منجر شوند.

مثلا:

const size_t number_of_elements \u003d 10؛ طولانی [number_of_elements]؛ MEMSET (A، 0، 10 * 4)؛ // اشتباه - این قابل درک است که طولانی است 4 بایت، تعداد جادویی از عناصر استفاده می شود. MeMet (a، 0، number_of_elements * 4)؛ // اشتباه - به این معنی است که طول آن برابر با 4 بایت است memset (a، 0، number_of_elements * sizeof (long))؛ // کاملا درست نیست - تکثیر نام نوع (اگر نوع تغییر کند، پس شما باید اینجا تغییر دهید) memset (a، 0، number_of_eelements * sizeof (a [0]))؛ // این درست است، به طور مطلوب برای آرایه های پویا از اندازه غیر صفر memset (a، 0، sizeof (a))؛ // راست، به طور مطلوب برای آرایه های استاتیک

اعداد که جادویی نیستند

نه همه اعداد باید به ثابت ها منتقل شوند. به عنوان مثال، کد در

جستجو در هنگام اسکن کردن فایل های نوع شناخته شده (یا، همانطور که می گویند، جستجو برای فایل های امضاء) یکی از کارآمد ترین استفاده شده در ابزار بازیابی اطلاعات R-Studio است. استفاده از یک امضا داده شده به شما اجازه می دهد تا فایل های خاصی را در مورد فایل های خاصی که به طور جزئی یا به طور کامل در مورد ساختار دایرکتوری و نام فایل ها به طور کامل یا به طور کامل وجود نداشته باشید بازگردانید.

معمولا یک جدول پارتیشن دیسک برای تعریف محل فایل استفاده می شود. اگر یک دیسک را با یک کتاب مقایسه کنید، جدول پارتیشن مشابه جدول محتویات آن است. هنگامی که اسکن R-Studio برای فایل های نوع شناخته شده در جدول پارتیشن دیسک با توجه به یک امضا مشخص خاص جستجو می کند. این ممکن است به دلیل این واقعیت که تقریبا هر نوع فایل دارای امضای منحصر به فرد یا قالب داده است. امضاهای فایل در ابتدای فایل و در بسیاری از موارد نیز در انتهای فایل قرار دارند. هنگامی که اسکن R-Studio با داده های موجود با امضاء فایل های نوع شناخته شده مطابقت دارد، که به آنها اجازه می دهد اطلاعات خود را شناسایی و بازگردانند.

با کمک اسکن فایل های نوع شناخته شده R-Studio، به شما اجازه می دهد تا داده ها را از دیسک هایی که اصلاح شده بودند، بازگردانید و همچنین بخش هایی از آن رونویسی شد. علاوه بر این، اگر پارتیشن دیسک رونویسی شود، آسیب دیده یا حذف شود، سپس فایل های اسکن انواع شناخته شده تنها ممکن است.

اما تقریبا همیشه و در همه نقص ها وجود دارد، و فایل های نوع شناخته شده مورد استفاده در R-studio هیچ استثنائی نیست. بنابراین، هنگامی که اسکن فایل های شناخته شده از نوع شناخته شده از R-studio اجازه می دهد تا شما را به بازگرداندن فایل های غیر nephomy، اما، همانطور که قبلا ذکر شد، در اکثر موارد جدید ترین روش های ممکن است.

R-Studio در حال حاضر شامل امضاهای رایج ترین انواع فایل ها (مشاهده لیست کامل فایل های نوع شناخته شده می تواند در بخش آنلاین R-Studio باشد.)

در صورت لزوم، کاربر می تواند انواع جدیدی از انواع فایل را به R-Studio اضافه کند. به عنوان مثال، اگر شما نیاز به پیدا کردن فایل های هر نوع منحصر به فرد، و یا پس از تاریخ آخرین انتشار R-Studio، شما می توانید امضا خود را به فایل های نوع شناخته شده اضافه کنید. بعدا این روند را در نظر گرفته خواهد شد.

فایل های سفارشی از انواع معروف
امضاهای فایل های سفارشی از انواع شناخته شده در فایل XML مشخص شده در کادر محاوره ای تنظیمات ذخیره می شوند. اضافه کردن یک امضا شامل دو بخش است:

  1. امضای فایل را در ابتدای فایل شناسایی کنید و اگر در انتهای فایل وجود داشته باشد.
  2. ایجاد یک فایل XML حاوی امضا فایل و سایر اطلاعات مربوط به نوع فایل.

همه اینها را می توان با استفاده از R-Studio انجام داد. در این مورد، شما لازم نیست که متخصص در آماده سازی (ویرایش) اسناد XML یا در زمینه ویرایش هگزادسیمال - در این کتابچه راهنمای (مقاله)، به سطح اولیه کاربر هدایت شود، تمام مراحل این فرایند خواهد بود در نظر گرفته شده در جزئیات

به عنوان مثال: اضافه کردن امضا برای فایل فرمت MP4 (XDCAM-EX CODEC)
در نظر گرفتن اضافه کردن یک امضا فایل در مثال یک فایل. mp4 ایجاد شده با استفاده از سونی XDCAM-EX. به عنوان مثال، می توانید از آن استفاده کنید، به عنوان مثال، در صورت آسیب به کارت SD برای آن زمان برای ذخیره در هارد دیسک کامپیوتر ندارید.

مرحله اول: تعریف امضاء فایل
برای تعیین امضای فایل، نمونه هایی از فایل های فرمت را در نظر بگیرید.

اجازه دهید این چهار فایل ویدئویی با سونی XDCAM-EX:
ZRV-3364_01.mp4
ZRV-3365_01.mp4
ZRV-3366_01.mp4
ZRV-3367_01.mp4

برای سهولت توجه، اجازه دهید آن را یک فایل کوچک است. فایل های بزرگتر در شکل هگزادسیمال مشکل تر هستند.

1. فایل های باز را در R-Studio باز کنید. برای انجام این کار، بر روی هر فایل با دکمه سمت راست کلیک کنید و مشاهده / ویرایش (View / Edit) از منوی زمینه را انتخاب کنید.

2. مقایسه فایل ها. ما به دنبال یک قالب مشابه در هر چهار فایل جستجو خواهیم کرد. او خواهد بود امضای پرونده. به عنوان یک قاعده، امضا فایل ها در ابتدای فایل قرار دارد، اما گاهی اوقات در پایان.

3. امضای فایل را در ابتدای فایل تعیین کنید. در مثال ما، آن را در ابتدای فایل وجود دارد. توجه داشته باشید که همیشه اتفاق نمی افتد - اغلب امضای فایل در ابتدای فایل است، اما نه در خط اول (جابجایی).

از تصاویر زیر، به این معنی است که محتویات هر چهار فایل متفاوت هستند، اما همه آنها با همان امضای فایل شروع می شوند.


روی تصویر کلیک کنید تا آن را افزایش دهید.


روی تصویر کلیک کنید تا آن را افزایش دهید.


روی تصویر کلیک کنید تا آن را افزایش دهید.


روی تصویر کلیک کنید تا آن را افزایش دهید.

منطقه انتخاب شده بر روی تصاویر، امضای فایل این نوع فایل ها است. این در هر دو متون و هگزادسیمال نمایندگی می شود.

فرم ارسال فایل فرم متن فرم زیر است:
.... ftypmp42 .... mp42 ........ رایگان

امتیازات (".") کاراکترهایی که در فرم متن ارائه نمی شوند، نشان داده می شوند. بنابراین، لازم است که یک دیدگاه هگزادسیمال از امضای فایل را ارائه دهیم:
00 00 00 18 66 74 74 79 6D 70 34 32 00 00 00 00 00 6D 70 34 32 00 00 00 00 00 00 00 08 66 72 65 65

4. به همان شیوه، ما امضا فایل را تعریف می کنیم، اما در انتهای فایل. این ممکن است یکی دیگر از امضای پرونده، طول دیگری باشد.

امضای تصویر در انتهای فایل در تصاویر زیر برجسته شده است:


روی تصویر کلیک کنید تا آن را افزایش دهید.


روی تصویر کلیک کنید تا آن را افزایش دهید.


روی تصویر کلیک کنید تا آن را افزایش دهید.


روی تصویر کلیک کنید تا آن را افزایش دهید.

لطفا توجه داشته باشید که داده ها قبل از منطقه انتخاب شده (امضای فایل)، در هر چهار فایل، همان است. این یک اطلاعات فنی است که امضای فایل نیست، اما پیشنهاد می کند که تمام چهار عکس فوری (فایل) با استفاده از یک دوربین با پارامترهای مشابه ساخته شده است. معمولا ممکن است الگوهای همزمان را با اطلاعات فنی از امضای فایل تشخیص دهیم. در مثال ما، در آخرین خط قبل از شروع امضای پرونده، ما متن را "RecordingMode type \u003d" Normal "می بینیم، که به وضوح نشان می دهد که این نوع پارامتر فایل و نه امضا است. همیشه توجه ویژه ای به این رشته را به اشتباه توجه کنید تا اطلاعات فنی را در امضای فایل قرار ندهید.

در مورد ما، امضای فایل متن زیر است:
...
به یاد بیاورید که نقاط نشان می دهد شخصیت هایی که نمی توانند در فرم متن ارائه شوند.

در یک فرم هگزادسیمال، امضای فایل فرم زیر را دارد:
3n 2f 4E 6F 6E 52 65 61 6n 54 69 6A 65 4A 65 74 61 3E 0D 0A 00
توجه: در پایان فایل، امضای همیشه نخواهد بود.

مرحله دوم: ایجاد یک فایل XML توصیف نوع شناخته شده فایل
در حال حاضر، با تعریف امضای فایل، می توانید یک فایل XML ایجاد کنید و نوع مناسب فایل ها را به R-Studio روشن کنید. این میتواند با دو راه انجام شود:

2.1 با استفاده از ویرایشگر امضا شده در فایل داخلی:
منوی تنظیمات (ابزار) را انتخاب کنید، در کادر محاوره ای تنظیمات که باز می شود، بر روی انواع فایل های شناخته شده کلیک کنید) زبانه را کلیک کنید و سپس روی ویرایش فایل های کاربر ویرایش کلیک کنید.

روی تصویر کلیک کنید تا آن را افزایش دهید.

روی دکمه Create File Type کلیک کنید (جعبه محاوره ی فایل های کاربر را ویرایش کنید.
پارامترهای زیر را تنظیم کنید:

  • شناسه یک شناسه دیجیتال منحصر به فرد است. این شماره به صورت خودسرانه انتخاب خواهد شد تنها کسی نباید با شناسه دیجیتال هر نوع نوع دیگر فایل ها همخوانی داشته باشد.
  • توضیحات گروه یک گروه است که در آن فایل های موجود در R-Studio یافت می شود. شما می توانید یک گروه جدید را تنظیم کنید یا یکی از کسانی را که قبلا وجود دارد را انتخاب کنید. ما این گروه را "چند رسانه ای ویدئو (چند رسانه ای: ویدئو) خواهیم داشت."
  • توضیحات - شرح مختصری از نوع فایل ها. به عنوان مثال، شما می توانید، به عنوان مثال، "Sony Cam Cam Video، XDCAM-EX" استفاده کنید.
  • Extension - گسترش فایل های این نوع. در مورد ما - MP4.

پارامتر خواص (ویژگی ها) اختیاری است، در مورد ما ما نیازی به استفاده از آن نیست.

روی تصویر کلیک کنید تا آن را افزایش دهید.

بعد، باید امضاء اولیه و نهایی را وارد کنید. برای انجام این کار، شروع را انتخاب کنید (شروع) و سپس در فرمان منوی زمینه افزودن امضا (اضافه کردن امضا).

روی تصویر کلیک کنید تا آن را افزایش دهید.

سپس روی فیلد دوبار کلیک کنید<пустая сигнатура> () و متن مناسب را وارد کنید

روی تصویر کلیک کنید تا آن را افزایش دهید.

سپس امضای فایل نهایی را ایجاد کنید. فراموش نکنید که 21 را در قسمت ستون از (از) وارد کنید.

روی تصویر کلیک کنید تا آن را افزایش دهید.

شما با موفقیت امضا خود را از فایل های نوع شناخته شده ایجاد کرده اید.

حالا شما باید آن را ذخیره کنید. دو راه وجود دارد: شما می توانید آن را به فایل پیش فرض مشخص شده در صفحه اصلی (اصلی) جعبه محاوره ای تنظیمات (Savetings) را با کلیک بر روی دکمه ذخیره ذخیره کنید. هر دو روی دکمه ذخیره به عنوان کلیک کنید ... (ذخیره به عنوان ...) و امضای را به هر فایل دیگر ذخیره کنید.

2.2 ایجاد یک فایل XML توصیف یک نوع فایل شناخته شده، دستی:
برای ایجاد این فایل، از نسخه XML نسخه 1.0 و رمزگذاری UTF-8 استفاده کنید. اگر شما نمی دانید که آن را نمی دانید - فقط هر ویرایشگر متن را باز کنید (به عنوان مثال، notepad.exe) و در خط اول، متن زیر را وارد کنید:

بعد، ما یک تگ XML را تعریف می کنیم که نوع فایل (filetype) را تعریف می کند. با توجه به ویژگی های قبلا شرح داده شده از برچسب XML به نظر می رسد:

بلافاصله آن را وارد کنید

بعد، ما امضای فایل را تعریف می کنیم (برچسب ) امضای اولیه (در ابتدای فایل) در داخل برچسب قرار خواهد گرفت بدون هیچ گونه ویژگی ما از دیدگاه متن امضا استفاده می کنیم، اما در عین حال جایگزین کاراکترهای هگزادسیمال را که نمی توان در فرم متن نشان داد. قبل از هر نماد هگزادسیمال "\\ x" را به طوری که برچسب را وارد کنید با امضای فایل به نظر می رسد:

اگر شما باید امضای نهایی را نیز تعریف کنید (در انتهای فایل). برای این، همان تگ استفاده می شود، اما با "از" عنصر "و" پایان "ویژگی. شبیه این خواهد شد:

به یاد بیاورید که در امضای نهایی پرونده، هیچ نمادین غیرمستقیم وجود نداشت، با این حال، آن را انباشته شده و براکت های مثلثی بود. برای جلوگیری از سردرگمی و اشتباهات در نحو XML، ما در شخصیت های امضا "/" جایگزین خواهیم شد "<" и ">"آنها هگزادسیمال هستند.

در پایان امضای فایل، شما باید حاوی بسته بندی برچسب ها و filetypelist:

بنابراین، کل فایل باید به نظر برسد:


\\ x00 \\ x00 \\ x00 \\ x18ftypmp42 \\ x00 \\ x00 \\ x00 \\ x00mp42 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x00 \\ x08free
\\ x3c \\ x2fnonrealtimemeta \\ x3e \\ x0d \\ x0a \\ x00

به یاد داشته باشید: نحو XML به ثبت نام حساس است، بنابراین برچسب درست خواهد بود ، اما نه .

فایل را در فرمت متن با Extension.XML ذخیره کنید. به عنوان مثال: sonycam.xml.

ما با موفقیت امضا خود را از فایل های نوع شناخته شده ایجاد کرده ایم. این مثال بسیار کافی است تا اصول اساسی ایجاد یک فایل کاربر را درک کند. کاربران با تجربه تر می توانند از XML نسخه 2.0 استفاده کنند. شما می توانید در بخش گواهینامه آنلاین R-Studio بیشتر بخوانید.

مرحله 3: فایل را بررسی کنید و اضافه کنید که نوع فایل های شناخته شده را توصیف می کند
در مرحله بعدی، شما باید فایل XML خود را به R-Studio اضافه کنید. در این مورد، آن را به طور خودکار تایید خواهد شد.

آپلود در R-Studio ایجاد شده در فایل XML مرحله قبلی. برای انجام این کار، منوی ابزار (تنظیمات) را انتخاب کنید (ابزار). در منطقه نوع فایل های کیفیت (انواع فایل های کاربر) زبانه ها صفحه اصلی (اصلی) جعبه محاوره ای تنظیمات (تنظیمات) ما فایل XML ایجاد شده توسط ما (sonycam.xml) را اضافه خواهیم کرد. روی دکمه اعمال کلیک کنید.

روی تصویر کلیک کنید تا آن را افزایش دهید.

2. بررسی بله (بله) به درخواست برای دانلود نوع جدید از فایل ها.

روی تصویر کلیک کنید تا آن را افزایش دهید.

3. برای بررسی این واقعیت که نوع فایل ها با موفقیت بارگذاری شده است، بر روی تب نوع فایل های شناخته شده (انواع فایل های شناخته شده) از کادر محاوره ای تنظیمات (تنظیمات) کلیک کنید. به یاد بیاورید که ما نوع فایل را به گروه ویدئویی چند رسانه ای اضافه کردیم (چند رسانه ای: ویدئو). باز کردن این گروه (پوشه)، ما باید آیتم را با توضیحات مشخص شده توسط ما در هنگام ایجاد یک فایل XML مشاهده کنیم: Sony Cam Video، XDCAM-EX (.MP4).

روی تصویر کلیک کنید تا آن را افزایش دهید.


روی تصویر کلیک کنید تا آن را افزایش دهید.

اگر هر گونه خطایی در نحو فایل وجود داشته باشد، پیام مربوطه را مشاهده خواهید کرد:

روی تصویر کلیک کنید تا آن را افزایش دهید.

در این مورد، فایل XML خود را برای خطاهای دوباره بررسی کنید. به یاد داشته باشید: Syntax XML به ثبت نام حساس است و برای هر برچسب در پایان باید یک برچسب بسته باشد.

مرحله 4: تست یک فایل توصیف نوع فایل شناخته شده
برای بررسی صحت فایل ایجاد شده توسط کاربر ایجاد شده توسط ما، اجازه دهید فایل های ما را بر روی یک درایو فلش USB قابل جابجایی پیدا کنیم.

1. تحت ویندوز ویندوز ویستا یا ویندوز 7، شما یک فرمت کامل (نه سریع) دیسک را انجام می دهید یا از دستگاه تمیز کردن دیسک (به عنوان مثال، R-Wipe & Clean) استفاده کنید تا تمام اطلاعات موجود در دیسک داده را کاملا حذف کنید. اجازه دهید یک دیسک USB در FAT32 تزئین شود (اندازه فایل های جستجو بیش از 2 گیگابایت نیست).

2. بازسازی فایل های تست به دیسک و راه اندازی مجدد کامپیوتر به طوری که محتویات حافظه حافظه پنهان بر روی دیسک ذخیره می شود. شما همچنین می توانید دیسک خارجی را خاموش کنید و سپس آن را دوباره وصل کنید.

3. اپراتور دیسک به عنوان مثال، یک دیسک منطقی F: \\ تعریف می شود.

4. شروع R-Studio. دیسک ما را انتخاب کنید (F: \\) و روی دکمه اسکن کلیک کنید (اسکن)

روی تصویر کلیک کنید تا آن را افزایش دهید.

5. در جعبه محاوره اسکن (اسکن) در سیستم فایل، روی دکمه ویرایش کلیک کنید ... (تغییر ...) و حذف تمام پرچم ها. بنابراین، ما جستجو برای سیستم های فایل و فایل ها را با استفاده از جدول پارتیشن خاموش می کنیم.
روی تصویر کلیک کنید تا آن را افزایش دهید.

6. نصب جعبه های جستجوی پیشرفته فایل ها را نصب کنید (جستجوی اضافی برای انواع فایل های شناخته شده). این اجازه می دهد R-Studio برای جستجو در هنگام اسکن کردن فایل های نوع شناخته شده.

7. برای شروع اسکن، روی دکمه اسکن (اسکن) کلیک کنید.

8. بیایید صبر کنیم تا R-Studio دیسک را اسکن کند. در برگه اطلاعات اسکن، اسکن (پیشرفت) نمایش داده خواهد شد.


روی تصویر کلیک کنید تا آن را افزایش دهید.

9. پس از تکمیل اسکن، فایل های اضافی یافت شده (فایل های اضافی یافت شده را انتخاب کنید) و روی آن دوبار کلیک کنید.


روی تصویر کلیک کنید تا آن را افزایش دهید.

10. فایل های تست ما در پوشه ویدیوی سونی CAM، پوشه XDCAM-EX (یا در یک پوشه تحت نام دیگری قرار می گیرند، مربوط به توصیف نوع فایل های مشخص شده در مرحله دوم).


روی تصویر کلیک کنید تا آن را افزایش دهید.

شما می بینید که نام فایل ها، تاریخ ها و مکان ها (پوشه ها) بازسازی نشده اند، زیرا این اطلاعات در سیستم فایل ذخیره می شود. بنابراین، در R-studio، به طور خودکار هر فایل با نام جدید نمایش داده می شود.

با این حال، می توان دید که محتویات فایل ها آسیب دیده اند. برای اطمینان از اینکه آنها را در برنامه مناسب مانند VLC Media Player باز کنید.


روی تصویر کلیک کنید تا آن را افزایش دهید.

نتیجه
امکان R-Studio هنگام اسکن کردن، جستجو برای انواع شناخته شده به شما امکان بازگرداندن داده ها حتی از یک دیسک، سیستم فایل های آن یا بازنویسی شده است. شما می توانید به طور موثر فایل ها را با استفاده از امضا خود جستجو کنید، که به ویژه مفید است اگر شما به طور دقیق برای نوع فایل های بازیابی شده، مانند در مثال ما شناخته شده است. توانایی ایجاد انواع فایل های سفارشی به شما امکان اضافه کردن هر فایل را با امضای فایل خاص به لیست فایل های نوع شناخته شده اضافه کنید.

کارفرمایان به من یک کار جالب توجه می دهند. در یک زمان کوتاه، یک تحلیلگر از فایل های اجرایی را بنویسید، که توسط امضاء قادر به پیدا کردن ویروس ها و تعیین بسته بندی / رمزنگاری استفاده شده است. نمونه اولیه به پایان رسید در چند ساعت ظاهر شد.

کلمه نویسنده

تجزیه و تحلیل زنگ هشدار

جستجو برای یک امضای شیطانی مخرب چیزی است که هر آنتی ویروس می تواند باشد. به طور کلی، امضای یک توصیف رسمی از برخی از ویژگی های است، که می تواند تعیین کند که فایل اسکن شده یک ویروس است و ویروس کاملا تعریف شده است.

تکنیک های مختلف در اینجا وجود دارد. به عنوان یک گزینه، از یک امضا تشکیل شده از بایت N از یک شیء مخرب استفاده کنید. در این مورد، ممکن است یک مقایسه احمقانه، اما مقایسه برای برخی از ماسک (مانند جستجو بایت های EB؟ ؟؟ ؟؟؟ یا تنظیم شرایط اضافی مانند "چنین، بایت ها باید در نقطه ورود برنامه" و غیره باشد. امضا Malviva خاص است.

به طور مشابه، برخی از ویژگی های شرح داده شده است که در آن ممکن است تعیین کنید که فایل اجرایی با یک رمزنگاری خاص یا یک بسته بندی (به عنوان مثال، یکپارچه بنال) بسته بندی شده است. اگر شما مجله ما را به دقت بخوانید، من فقط در مورد چنین ابزار به عنوان یک PEID شنیده ام، قادر به تعیین مجموعه های رایج ترین استفاده شده، رمزنگارها و کامپایلرها (در پایگاه داده تعداد زیادی از امضا وجود دارد) برای پرونده PE منتقل شده به آن. افسوس، نسخه های جدید برنامه برای مدت زمان طولانی ترک نمی کنند، و اخیرا یک پیام در وب سایت رسمی ظاهر شد که این پروژه بیشتر توسعه نخواهد یافت. این تاسف است، زیرا امکانات PEID (به ویژه سیستم پلاگین) می تواند برای من مفید باشد. پس از یک تجزیه و تحلیل کوتاه، مشخص شد که این یک گزینه نیست. اما مبارزه با وبلاگ های انگلیسی زبان، من به سرعت متوجه شدم که چه اتفاقی افتاد. پروژه Yara (code.google.com/p/yara-project).

یرا چیست؟

من از همان ابتدا متقاعد شدم که جایی در شبکه در حال حاضر پیشرفت های باز وجود دارد که وظیفه تعیین انطباق بین برخی از امضای و پرونده مورد مطالعه را متقاعد می کند. اگر بتوانم چنین پروژه ای پیدا کنم، می توان آن را به راحتی بر روی ریل های یک برنامه وب قرار داد، امضاهای مختلف را اضافه کنید و آنچه را که از من مورد نیاز بود، دریافت کنید. این طرح زمانی که توصیف پروژه یرا را خواند، حتی بیشتر به نظر می رسید.

توسعه دهندگان خود را به عنوان یک ابزار برای کمک به محققان Malvari در شناسایی و طبقه بندی نمونه های مخرب قرار می دهند. محقق می تواند توصیف انواع مختلفی از مخرب را با استفاده از متنی یا الگوهای دوتایی ایجاد کند که نشانه های رسمی مالواری را توصیف می کند. بنابراین، امضا به دست می آید. در حقیقت، هر توضیحی شامل مجموعه ای از ردیف ها و برخی از بیان منطقی است که بر اساس آن تجزیه و تحلیل تجزیه و تحلیل تعیین می شود.

اگر شرایط یکی از قوانین برای پرونده مورد مطالعه راضی باشد، بر اساس آن تعریف می شود (به عنوان مثال، یک کرم از چنین چیزی) تعریف شده است. یک مثال ساده از قانون برای درک آنچه در مورد:

قانون silent_banker: بانکدار
{
متا:
شرح \u003d "این فقط یک مثال است"
thread_level \u003d 3.
in_the_wild \u003d درست است.
رشته های:
$ A \u003d (6A 40 68 00 30 00 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"
وضعیت:
$ a یا $ b یا $ c
}

در این قانون، ما به یرا صحبت می کنیم که هر پرونده ای حاوی حداقل یکی از نمونه های ردیف توصیف شده در $ A، $ B، متغیرهای $ C باید به عنوان Silent_Banker Trojan طبقه بندی شود. و این یک قانون بسیار ساده است. در واقع، رول ها می توانند بسیار پیچیده باشند (ما در مورد آن صحبت خواهیم کرد).
مقامات پروژه یرا حتی فهرستی از پروژه هایی را که از آن استفاده می کنند می گوید و این است:

  • خدمات اطلاعاتی بدافزار VirusTotal (vt-mis.com)؛
  • jsunpack-n (jsunpack.jeek.org)؛
  • wewatchyourwebsite.com).

همه کد در پایتون نوشته شده است، و کاربر هر دو ماژول خود را برای استفاده در توسعه خود ارائه می دهد، و به سادگی فایل اجرایی برای استفاده از Yara به عنوان یک برنامه مستقل ارائه شده است. به عنوان بخشی از کار خود، من اولین گزینه را انتخاب کردم، اما برای سادگی در مقاله ما از آنالایزر به سادگی به عنوان یک برنامه کنسول استفاده خواهیم کرد.

در حال اجرا کمی، من به سرعت متوجه شدم که چگونه برای قوانین یرا نوشتم، و همچنین امضای ویروس ها را از نسخه های رایگان Avra \u200b\u200bو PEID بسته بندی کنید. اما بیایید با نصب شروع کنیم.

نصب و راه اندازی

همانطور که گفتم، این پروژه در پایتون نوشته شده است، بنابراین می توان آن را به راحتی بر روی لینوکس نصب کرد، و در ویندوز و مک. در ابتدا، شما فقط می توانید باینری را بگیرید. اگر شما از برنامه در کنسول استفاده می کنید، قوانین را برای اجرا دریافت خواهید کرد.

$ یارا
استفاده: YARA ... ... فایل | دره

یعنی، فرمت تماس برنامه به شرح زیر است: اول، نام برنامه در حال آمدن است، سپس لیست گزینه ها، پس از آن فایل با قوانین مشخص شده است، و در پایان - نام فایل تحت مطالعه (یا دایرکتوری حاوی فایل ها) یا شناسه فرایند. در حال حاضر خوب است که توضیح دهید که چگونه این تنظیمات کامپایل شده اند، اما من نمی خواهم بلافاصله شما را با یک نظریه خشک بفرستم. بنابراین، ما به طور متفاوتی ادامه خواهیم داد و امضاهای دیگران را مورد توجه قرار خواهیم داد تا یرا بتواند یکی از وظایفی که شما تحویل داده اید را انجام دهید - تعریف کامل از ویروس ها توسط امضا.

آنتی ویروس او.

مهمترین سوال این است که کجا را به امضای پایه ای از ویروس های معروف تبدیل کنید؟ شرکت های آنتی ویروس به طور فعال توسط این پایگاه ها تقسیم می شوند (کسی سخاوتمندانه تر، کسی کمتر است). صادقانه بگویم، ابتدا حتی شک داشتم که جایی در شبکه کسی که به طور آشکار چنین چیزهایی را برمی گرداند. اما، همانطور که معلوم شد، افراد خوب وجود دارد. پایه مناسب از محبوب ضد ویروس محبوب Clamav برای همه در دسترس است (clamav.net/lang/en). در آخرین بخش نسخه پایدار، شما می توانید یک لینک را به آخرین نسخه محصول آنتی ویروس، و همچنین لینک ها برای دانلود پایگاه های ویروس CLAMAV پیدا کنید. ما ابتدا به فایل های main.cvd علاقه مند خواهیم شد (db.local.clamav.net/main.cvd) و daily.cvd (db.local.clavd.net/daily.cvd).

اولین شامل پایگاه داده امضای اصلی، دوم، پایه ترین پایه با افزودنی های مختلف است. برای هدف تعیین شده، Daily.CVD به اندازه کافی کافی است، که در آن بیش از 100،000 پرده جمع آوری شده است. با این حال، پایه CLAMAV پایه یرا نیست، بنابراین ما باید آن را به فرمت دلخواه تبدیل کنیم. اما چطور؟ پس از همه، ما هنوز هیچ چیز در مورد فرمت CLAMAV و نه در مورد فرمت یرا نمی دانیم. این مشکل در حال حاضر مراقبت از ما بود، با تهیه یک اسکریپتور کوچک، تبدیل پایگاه داده امضای ویروس CLAMAV به مجموعه ای از قوانین یارا. اسکریپت CLAMAV_TO_ YARA.PY نامیده می شود و متیو ریچارد نوشته شده است (bit.ly/ij5hvs). دانلود اسکریپت و تبدیل پایگاه های داده ها:

$ python clamav_to_yara.py -f daily.cvd-i clamav.yara

در نتیجه، در فایل Clamav.yara، ما یک پایگاه داده امضا را دریافت خواهیم کرد که بلافاصله برای استفاده آماده می شود. ما اکنون ترکیبی از پایگاه های یرا و Clamav را در عمل انجام می دهیم. اسکن یک پوشه با استفاده از یک امضا توسط یک فرمان واحد انجام می شود:

$ yara -r clamav.yara / pentest / msf3 / داده ها

گزینه -R نشان می دهد که اسکن باید به صورت بازگشتی برای تمام زیر پوشه های پوشه فعلی انجام شود. اگر پوشه / Penest / MSF3 / داده ها نوعی ویروس ها داشته باشند (حداقل کسانی که در پایه Clamav بودند)، پس از آن یرا این را بلافاصله اعلام خواهد کرد. در اصل، این یک اسکنر امضای آماده است. برای راحتی بیشتر، من یک اسکریپت ساده نوشتم که به روز رسانی پایه CLAMAV را بررسی کرد، امضا های جدید را دانلود کرد و آنها را به فرمت یارا تبدیل کرد. اما این جزئیات است. یکی از قسمت های این کار تکمیل شده است، اکنون می توانید قوانین را برای تعیین بسته های / رمزنگاری آماده کنید. اما برای این باید کمی آن را بفهمم.

بازی با توجه به قوانین

بنابراین، قانون مکانیسم اصلی برنامه است که به شما اجازه می دهد یک فایل مشخص شده را به هر دسته اختصاص دهید. قوانین در یک فایل جداگانه (یا فایل ها) شرح داده شده و در دیدگاه آن بسیار شبیه ساختار ساختار () از زبان C / C ++ است.

قانون Badboy
{
رشته های:
$ a \u003d "win.exe"
$ b \u003d "http://foo.com/badfi le1.exe"
$ c \u003d "http://bar.com/badfi le2.exe"
وضعیت:
$ a و ($ b یا $ c)
}

در اصل، هیچ چیز پیچیده در قوانین نوشتن نیست. به عنوان بخشی از این مقاله، من فقط نقاط اصلی را لمس کردم، و شما جزئیات را در Manul پیدا خواهید کرد. در عین حال، ده امتیاز مهم دیگر:

1. هر قانون با قانون کلیدواژه آغاز می شود، پس از آن شناسه قانون در حال آمدن است. شناسه ها می توانند نام های مشابهی را به عنوان متغیرهای C / C ++ داشته باشند، یعنی شامل حروف و اعداد، و اولین کاراکتر نمی تواند یک رقم باشد. حداکثر طول نام شناسه 128 کاراکتر است.

2. معمولا قوانین شامل دو بخش هستند: بخش تعاریف (رشته ها) و بخش شرایط (شرایط). در بخش رشته ها، داده ها بر اساس آن یک راه حل در بخش وضعیت ساخته می شود، آیا فایل مشخص شده شرایط خاصی را برآورده می کند.

3. هر رشته در بخش رشته دارای شناسه خاص خود است که از $ علامت $ شروع می شود، به طور کلی، به عنوان یک متغیر تبلیغ در PHP. یارا از خطوط معمول محصور شده در نقل قول های دوگانه ("") و خطوط هگزادسیمال که در براکت های فرفری (())، و همچنین عبارات منظم به دست می آید، پشتیبانی می کند:

$ my_text_string \u003d "متن اینجا"
$ my_hex_string \u003d (E2 34 A1 C8 23 fb)

4. بخش وضعیت شامل تمام منطق قوانین است. این بخش باید یک عبارت منطقی باشد که تعیین می کند که در این صورت فایل یا فرآیند حکم را برآورده می کند. معمولا در این بخش درخواست تجدید نظر به خطوط قبلا اعلام شده وجود دارد. یک شناسه رشته به عنوان یک متغیر منطقی در نظر گرفته می شود که اگر رشته در فایل یا حافظه فرآیند پیدا شود، درست می شود و در غیر این صورت نادرست است. قانون فوق تعیین می کند که فایل ها و فرآیندهای حاوی رشته Win.exe و یکی از دو URLS باید به رده Badboy (به نام قانون) نسبت داده شود.

5. خطوط هگزادسیمال به شما این امکان را می دهد که از سه طرح استفاده کنید که آنها را انعطاف پذیر تر می کند: جایگزینی (wildcards)، باند ها (جهش) و انتخاب جایگزین (جایگزین ها). جایگزینی مکان هایی در رشته ای است که ناشناخته است و در جای آنها می تواند معنی داشته باشد. آنها نماد را نشان می دهند "؟":

$ hex_string \u003d (E2 34 ؟؟ c8 a؟ fb)

این رویکرد بسیار مناسب است در هنگام تعیین رشته ها، طول آن شناخته شده است، و محتویات ممکن است متفاوت باشد. اگر بخشی از خط می تواند از طول های مختلف باشد، مناسب است که از محدوده استفاده کنید:

$ hex_string \u003d (F4 23 62 b4)

این رکورد به این معنی است که در وسط خط می تواند از 4 تا 6 بایت مختلف باشد. شما همچنین می توانید انتخاب جایگزین را اجرا کنید:

$ hex_string \u003d (F4 23 (62 b4 | 56) 45)

این به این معنی است که در صحنه بایت سوم می تواند 62 B4 یا 56 باشد، چنین رکوردی مربوط به رشته های F42362B445 یا F4235645 است.

6. برای تأیید اینکه رشته مشخص شده بر روی یک جابجایی خاص در فایل یا آدرس فضای فرآیند است، اپراتور مورد استفاده قرار می گیرد:

$ A در 100 و $ b در 200

اگر رشته ممکن است در محدوده خاصی از آدرس ها باشد، استفاده می شود:

$ a in (0..100) و $ b در (100..fi telize)

گاهی اوقات شرایطی وجود دارد که لازم باشد مشخص شود که فایل باید یک عدد خاص از مجموعه مشخص شده باشد. این کار با استفاده از اپراتور انجام می شود:

قانون ofexample1
{
رشته های:
$ foo1 \u003d "dummy1"
$ foo2 \u003d "dummy2"
$ foo3 \u003d "dummy3"
وضعیت:
2 از ($ foo1، $ foo2، $ foo3)
}

این قانون مستلزم آن است که فایل حاوی هر دو خط از مجموعه ($ foo1، $ foo2، $ foo3) باشد. به جای مشخص کردن تعداد خاصی از ردیف ها در فایل، می توانید از هر متغیرهایی (حداقل یک خط از مجموعه مشخص شده) و همه (تمام خطوط از یک مجموعه داده شده) استفاده کنید.

7. خوب، آخرین فرصت جالب برای در نظر گرفتن این است که یک بیماری را به بسیاری از ردیف اعمال کنید. این ویژگی بسیار شبیه به اپراتور دولتی است، تنها قدرتمندتر از اپراتور است:

برای بیان string_set: (boolean_expression)

این مطلب باید مانند این باشد: از رشته های مشخص شده در string_ تنظیم شده، حداقل یک قطعه بیان باید شرایط Boolean_expression را برآورده کند. یا، به عبارت دیگر: بیان Boolean_Expression برای هر ردیف از string_set محاسبه می شود و بیان آنها باید به TRUE بازگردد. بعد، ما این طرح را در یک مثال خاص در نظر می گیریم.

ساخت PEID

بنابراین، هنگامی که همه چیز با قوانین کمتر روشن می شود، می توانید در پروژه ما از آشکارساز Packers و Cryptors ادامه دهید. به عنوان یک ماده شروع در ابتدا، من امضاء بسته های شناخته شده از همان PEID را قرض گرفتم. در پوشه Plugins یک فایل userdb.txt وجود دارد که حاوی آنچه ما نیاز داریم. در پایگاه داده من 1850 امضا شد.

خیلی، بنابراین به منظور به طور کامل آنها را وارد کنید، من به شما توصیه می کنم که برخی از اسکار را بنویسید. فرمت این پایگاه داده ساده است - فایل متنی معمولی استفاده می شود، که در آن سوابق فرم ذخیره می شود:


امضا \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 درست است.

رشته اول نام بسته بندی را که در PEID نمایش داده می شود، تنظیم می کند، زیرا ما شناسه قانون خواهد بود. دوم خود را امضا خود است. سوم پرچم EP_only است که نشان می دهد که آیا این رشته را فقط در آدرس نقطه ورود یا در سراسر فایل جستجو کنید.

خوب، بیایید سعی کنیم یک قانون ایجاد کنیم، بگو، برای آسپاک؟ همانطور که معلوم شد، هیچ چیز پیچیده ای وجود ندارد. اول، یک فایل برای ذخیره سازی قوانین ایجاد کنید و به عنوان مثال، Packers.yara تماس بگیرید. سپس ما در پایگاه داده PEID تمام امضا ها را دنبال می کنیم، در عنوان آن به نظر می رسد Aspack، و حمل آنها را به قانون:

قاچاق
{
رشته های:
$ \u003d (60 E8 ؟؟ \u200b\u200b؟؟ ؟؟؟ 5d 81 ed ؟؟؟ (43 | 44) ؟؟ b8 ؟؟ ؟؟؟ (43 | 44) ؟؟ 03 C5)
$ \u003d (60 eb ؟؟ 5d eb ff ؟؟ ؟؟ ؟؟ ؟؟؟؟؟
[.. بریدن ..]
$ \u003d (60 E8 03 00 00 00 E9 EB 04 5D 45 55 C3 E8 01)
وضعیت:
برای هر یک از آنها: ($ در نقطه ورود)
}

تمام سوابق پیدا شده است که پرچم EP_only به درستی تنظیم شده است، یعنی این خطوط باید در آدرس نقطه ورود قرار گیرد. بنابراین، ما شرایط زیر را بنویسیم: "برای هر یک از آنها: ($ در نقطه ورود)."

بنابراین، حضور حداقل یکی از ردیف های مشخص شده به آدرس نقطه ورود به این معنی است که فایل Aspack بسته بندی شده است. همچنین توجه به این که در این قانون تمام ردیف ها به سادگی با استفاده از $ علامت، بدون شناسه تنظیم شده است. این امکان وجود دارد، زیرا در بخش های وضعیت ما با برخی از آنها تماس نمی گیریم، اما ما از کل مجموعه استفاده می کنیم.

برای بررسی عملکرد سیستم به دست آمده، کافی است که فرمان را در کنسول انجام دهید:

$ YARA -R PACKERS.YARA SOMEFI LE.EXE

درست است که چند برنامه کاربردی وجود دارد، بسته بندی شده Aspack، من مطمئن شدم که همه چیز کار می کند!

نمونه اولیه به پایان رسید

یرا ابزار بسیار واضح و شفاف بود. من مشکل زیادی برای نوشتن یک وبسایت برای او نداشتم و کار را به عنوان یک سرویس وب ایجاد کردم. برخی از نتایج خلاقانه و خشک از آنالایزر در حال حاضر با رنگ های مختلف رنگ شده اند، که نشان دهنده میزان خطر بنیاد یافت شده است. به روز رسانی پایگاه داده کوچک، و شرح مختصری برای بسیاری از رمزنگارها در دسترس است و گاهی اوقات حتی دستورالعمل ها را باز می کند. نمونه اولیه ایجاد شده است و کار می کند لغو شده است، و کارفرمایان از لذت رقص می کنند!

کد تابع (FC) در هدر تلگراف، نوع تلگراف را شناسایی می کند، از قبیل درخواست تلگراف (درخواست یا ارسال / درخواست تلگراف (Frame-Frame، Frame Response). علاوه بر این، کد تابع شامل عملکرد انتقال واقعی و کنترل اطلاعاتی است که از از دست دادن و تکرار پیام ها جلوگیری می کند یا نوع ایستگاه با وضعیت FDL.

7 6 5 4 3 2 1 0 FC: درخواست کد تابع
1 درخواست telegramm.
ایکس. FCV \u003d بیت متناوب روشن شد
ایکس. href \u003d "http://profibus.felser.ch/en/funktionscode.htm#aufruffolgebit»\u003e FCB \u003d بیت متناوب (از تعداد فریم)
1 0 (0x0) CV \u003d ارزش ساعت ()
1 دیگر محفوظ
0 0 (0x0) TE \u003d زمان رویداد (هماهنگ سازی ساعت)
0 3 (0x3) sda_low \u003d ارسال اطلاعات تایید شده - اولویت کم
0 4 (0x4) sdn_low \u003d ارسال اطلاعات تایید نشده - اولویت کم
0 5 (0x5) sda_high \u003d ارسال اطلاعات تایید شده - اولویت بالا
0 6 (0x6) sdn_high \u003d ارسال اطلاعات تایید نشده است
0 7 (0x7) MSRD \u003d ارسال اطلاعات درخواست با پاسخ چندرسانه ای
0 9 (0x9) درخواست وضعیت FDL
0 12 (0xc) SRD LOW \u003d ارسال و درخواست داده ها
0 13 (0xD) SRD High \u003d ارسال و درخواست داده ها
0 14 (0xe) درخواست شناسایی با پاسخ
0 15 (0xf) درخواست وضعیت LSAP با پاسخ 1)
0 دیگر محفوظ

1) این مقدار در آخرین نسخه استاندارد نیست که دیگر تعریف نشده اما تنها رزرو شده است

7 6 5 4 3 2 1 0 FC: پاسخ تابع کد
0 پاسخ تلگراف
0 محفوظ
0 0 برده
0 1 استاد آماده نیست
1 0 استاد آماده، بدون نشانه
1 1 استاد آماده، در حلقه Token
0 (0x0) خوب.
1 (0x1) ue \u003d خطای کاربر
2 (0x2) rr \u003d منابع
3 (0x3) Rs \u003d SAP فعال نیست
8 (0x8) dl \u003d داده های پایین (مورد معمول با DP)
9 (0x9) nr \u003d اطلاعات پاسخ آماده نیست
10 (0xA) DH \u003d داده ها بالا (تشخیص DP در انتظار)
12 (0xc) RDL \u003d داده های دریافت نشده و داده ها کم است
13 (0xD) RDH \u003d داده ها دریافت نشده و داده های بالا
دیگر محفوظ

شمارش شمارش بیت شمارش تعداد فریم FCB (B5) جلوگیری از تکرار پیام توسط ایستگاه تصدیق یا پاسخ دهنده (پاسخ دهنده) و هر گونه از دست دادن توسط ایستگاه تماس (آغازگر). حذف شده از این درخواست ها بدون تایید (SDN) و وضعیت FDL، درخواست های IDENT و LSAP است.

برای توالی امنیتی، آغازگر باید یک FCB را برای هر پاسخ دهنده حمل کند. هنگامی که یک درخواست تلگراف درخواست (درخواست یا ارسال / درخواست) برای اولین بار فرستاده می شود، یا اگر دوباره به پاسخ گیرنده ارسال شود که در حال حاضر به عنوان غیر عملیاتی مشخص شده است، FCB باید به عنوان تعریف شده در پاسخ دهنده تعیین شود. این آغازگر این را در یک درخواست تلگراف با FCV \u003d 0 و FCB \u003d 1 به دست می آورد. پاسخ دهنده باید یک تلگراف از این نوع را به عنوان اولین چرخه پیام ارزیابی کند و FCB \u003d 1 را همراه با آدرس آغازگر (SA) ذخیره کند. این چرخه پیام توسط آغازگر تکرار نخواهد شد. در درخواست بعدی تلگراف به همان پاسخ دهنده، آغازگر باید FCV \u003d 1 را تنظیم کند و FCB را با هر تلگراف درخواست جدید تغییر دهد. هر پاسخگو که یک تلگرام درخواست را دریافت می کند، با FCV \u003d 1 باید FCB را ارزیابی کند. اگر FCB در مقایسه با همان آغازگر (همان SA) تغییر کرده است، این تایید معتبر است که چرخه پیام پیش از آن به درستی به پایان رسید. اگر Telegram درخواست از آغازگر دیگری (متفاوت SA) حاصل شود، ارزیابی FCB دیگر nescessary نیست. در هر دو مورد، پاسخ دهنده باید FCB را با منبع SA صرفه جویی کند تا زمانی که یک تلگراف جدید به آن پاسخ داده شود. در مورد یک تلگراف از دست رفته یا اختلال یا تلگراف پاسخ، FCB نباید توسط آغازگر در چرخه قبلی پیغام تغییر کند. اگر پاسخ دهنده یک تلگرام درخواست را با FCV \u003d 1 و همان FCB دریافت کند، همان ابتکار (همان SA)، این یک درخواست را دوباره نشان می دهد. پاسخ دهنده باید به نوبه خود بازپرداخت تاییدیه یا پاسخ تلگراف را در آمادگی برگزار کند. تا زمان تایید یا دریافت یک تلگرام با یک آدرس متفاوت (SA یا DA) که تایید نشده است (ارسال داده ها بدون تایید، SDN) پاسخ گیرنده باید آخرین تصدیق یا پاسخ تلگراف را در آمادگی برای هر گونه درخواست احتمالی داشته باشد . در مورد درخواست تلگراف هایی که تایید نشده اند و با درخواست FDL درخواست، وضعیت IDENT و LSAP، FCV \u003d 0 و FCB \u003d 0؛ ارزیابی پاسخ دهنده دیگر ضروری نیست.

b5 b4 موقعیت بیت
FCB FCV وضعیت معنی عمل.
0 0 da \u003d ts / 127 درخواست بدون تصدیق
درخواست FDL وضعیت / شناسه / وضعیت LSAP
حذف آخرین تصدیق
0/1 0/1 دا # ts درخواست به پاسخ گیرنده دیگر
1 0 da \u003d ts درخواست اول FCBM: \u003d 1
sam: \u003d sa
حذف آخرین اذعان / پاسخ
0/1 1 da \u003d ts
SA \u003d سام
FCB # FCBM.
درخواست جدید حذف آخرین اذعان / پاسخ
FCBM: \u003d FCB
تایید اذعان / پاسخ در آمادگی برای تلاش مجدد
0/1 1 da \u003d ts
SA \u003d سام
FCB \u003d FCBM.
درخواست مجدد FCBM: \u003d FCB
تکرار اذعان / پاسخ و ادامه دادن به آمادگی
0/1 1 da \u003d ts
sa # sam
آغازگر جدید FCBM: \u003d FCB
SAM: \u003d SA تایید تایید / پاسخ در آمادگی برای تلاش مجدد

FCBM ذخیره سازی FCB در حافظه SAM ذخیره شده SA در حافظه

بسیاری از آنها می توانند در مورد چنین فایل هایی به عنوان Rarjpeg شنیدند "و. این یک نوع خاص از فایل ها است که یک تصویر JPEG نزدیک چسب و یک آرشیو RAR است. این یک کانتینر عالی برای مخفی کردن واقعیت انتقال اطلاعات است. RARJPEG را با استفاده از دستورات زیر ایجاد کنید :

یونیکس: گربه image1.jpg Archive.rar\u003e image2.jpg
پنجره ها: کپی / b image1.jpg + Archive.rar image2.jpg

یا در حضور یک ویرایشگر HEX.

البته، نه تنها فرمت JPEG را می توان برای مخفی کردن انتقال اطلاعات اطلاعات، بلکه بسیاری دیگر استفاده کرد. هر فرمت دارای ویژگی های خاص خود است، به لطف که آن را می توان مناسب یا نه برای نقش ظرف. من توضیح خواهم داد که چگونه می توانید فایل های چسبنده را در فرمت های محبوب ترین پیدا کنید یا واقعیت چسباندن را مشخص کنید.

روش های تشخیص فایل های چسبنده را می توان به سه گروه تقسیم کرد:

  1. روش بررسی منطقه پس از EOF-Marker. بسیاری از فرمت های فایل های محبوب دارای نشانگر به اصطلاح فایل به اصطلاح هستند که مسئول نمایش داده های مورد نظر است. به عنوان مثال، برنامه های مشاهده عکس ها تمام بایت ها را به این نشانگر می خوانند، با این حال، منطقه پس از آن نادیده گرفته می شود. این روش ایده آل برای فرمت ها: JPEG، PNG، GIF، ZIP، RAR، PDF.
  2. روش بررسی اندازه فایل. ساختار برخی از فرمت ها (ظروف صوتی و تصویری) به شما امکان می دهد تا اندازه فایل واقعی را محاسبه کنید و آن را با اندازه اصلی مقایسه کنید. فرمت ها: AVI، WAV، MP4، MOV.
  3. روش چک کردن فایل های CFB. فرمت دودویی فایل CFB یا ترکیب فرمت - فرمت سند توسعه یافته در مایکروسافت، که یک ظرف با سیستم فایل خود است. این روش بر اساس ناهنجاری های کشف در فایل است.

آیا پس از پایان فایل زندگی می کنید؟

jpeg

برای پیدا کردن پاسخ به این سوال، لازم است که در مشخصات فرمت عمیق تر شود، که "SpringCart" از فایل های چسبنده است و ساختار آن را درک می کند. هر JPEG با نشانه 0xFF 0xD8 شروع می شود.

پس از این امضای یک اطلاعات خدمات، به صورت اختیاری آیکون تصویر و، در نهایت، تصویر فشرده خود را. در این فرمت، پایان تصویر با دو بایت 0xFF 0xD9 امضا شده است.

png

اولین هشت بایت فایل PNG امضای زیر را امضا می کند: 0x89، 0x50، 0x4e، 0x47، 0x0d، 0x0A، 0x1A، 0x0A. امضای انتهایی که جریان داده را به اتمام می رساند: 0x49، 0x45، 0x4e، 0x44، 0xAE، 0x42، 0x60، 0x82.

رار

امضای کل برای همه آرشیوهای RAR: 0x52 0x61 0x72 0x21 (RAR!). پس از آن، اطلاعات در مورد نسخه آرشیو و سایر اطلاعات مربوطه در دسترس است. راه آزمایشی متوجه شد که آرشیو با امضای 0x0A، 0x25، 0x25، 0x45، 0x4F، 0x46 به پایان می رسد.

جدول فرمت ها و امضاهای آنها:
الگوریتم برای بررسی چسباندن در این فرمت ها بسیار ساده است:

  1. امضای اولیه را پیدا کنید
  2. امضای نهایی را پیدا کنید
  3. اگر پس از امضای نهایی هیچ اطلاعاتی وجود ندارد - فایل شما تمیز است و حاوی پیوست نیست! در این مورد، پس از امضای نهایی، باید فرمت های دیگر را جستجو کنید.

GIF و PDF.

سند PDF ممکن است بیش از یک نشانگر EOF داشته باشد، به عنوان مثال، به دلیل نسل نادرست سند. تعداد امضاهای محدود در فایل GIF برابر با تعداد فریم های آن است. بر اساس ویژگی های این فرمت ها، شما می توانید الگوریتم را برای بررسی حضور فایل های چسبناک بهبود دهید.
  1. پاراگراف 1 از الگوریتم قبلی تکرار می شود.
  2. پاراگراف 2 از الگوریتم قبلی تکرار می شود.
  3. هنگام پیدا کردن امضای نهایی برای به یاد آوردن محل آن و به دنبال بیشتر؛
  4. اگر این راه به آخرین EOF نشانگر رسید - فایل تمیز است.
  5. اگر فایل با امضای نهایی پایان نمی یابد - رفتن به آخرین امضا پایان یافته را پیدا کنید.
تفاوت بزرگ بین اندازه فایل و موقعیت پس از آخرین امضای محدود، حضور یک ضمیمه چسب را نشان می دهد. تفاوت می تواند بیش از ده بایت باشد، هرچند ممکن است ارزش های دیگر را نصب کنید.

زیپ

ویژگی Zip-Archives حضور سه امضا مختلف است: ساختار آرشیو به شرح زیر است:
هدر فایل محلی 1
داده های فایل 1
توصیفگر داده 1.
هدر فایل محلی 2
داده های فایل 2
توصیفگر داده 2.
...
هدر فایل محلی n
داده های فایل N.
توصیفگر داده N.
هدر رمزگشایی بایگانی
بایگانی اطلاعات اضافی
دایرکتوری مرکزی
جالب ترین دایرکتوری مرکزی است که شامل متادیتا در مورد فایل ها در بایگانی است. دایرکتوری مرکزی همیشه با امضای 0x50 0x4b 0x01 0x02 شروع می شود و با امضای 0x50 0x4b 0x05 0x06 به پایان می رسد، پس از آن 18 بایت متادیتا به شرح زیر است. آرشیوهای جالب و خالی تنها از امضا نهایی و 18 صفر بایت هستند. پس از 18 بایت، منطقه نظر را به آرشیو پیروی می کند، که کانتینر کامل برای مخفی کردن فایل است.

برای بررسی آرشیو ZIP، شما باید امضای پایان را از دایرکتوری مرکزی پیدا کنید، 18 بایت را پر کنید و امضاء فرمت های شناخته شده در منطقه نظر را جستجو کنید. اندازه بزرگ نظر نیز نشان دهنده یک واقعیت چسبناک است.

مسائل اندازه

avi

ساختار فایل AVI به شرح زیر است: هر فایل با امضای ریف شروع می شود (0x52 0x49 0x46 0x46). در 8، امضای امضا AVI (0x41 0x56 0x49 0x20) به شرح زیر است. یک بلوک در Offset 4، متشکل از 4 بایت، شامل اندازه اولیه بلوک داده (سفارش بایت - کمی اندین). برای پیدا کردن شماره بلوک حاوی اندازه بعدی، شما باید اندازه عنوان (8 بایت) و اندازه به دست آمده در بلوک 4-8 بایت. بنابراین، اندازه فایل کامل محاسبه می شود. فرض بر این است که اندازه محاسبه شده ممکن است کمتر از اندازه واقعی فایل باشد. پس از اندازه محاسبه شده، فایل تنها صفر بایت دارد (لازم است که مرز را در 1 کیلوبایت قرار دهید).

مثال محاسبه اندازه:


امواج

مانند AVI، فایل WAV با امضای ریف شروع می شود، با این حال، این فایل دارای امضای 8 بایت است - موج (0x57 0x41 0x56 0x45). اندازه فایل به همان شیوه AVI محاسبه می شود. اندازه واقعی باید به طور کامل با محاسبه شده سازگار باشد.

mp4

MP4 یا MPEG-4 - فرمت پردازشگر رسانه ای مورد استفاده برای ذخیره جریان های ویدئویی و صوتی، همچنین برای ذخیره زیرنویس ها و تصاویر فراهم می کند.
در جبران 4 بایت امضاها وجود دارد: نوع فایل FTYP (66 74 79 70) و زیرمجموعه فایل MMP4 (6D 6D 70 34). برای تشخیص فایل های مخفی، ما علاقه مند به امکان محاسبه اندازه فایل هستیم.

یک مثال را در نظر بگیرید اندازه بلوک اول در صفر صفر است و برابر 28 (00 00 00 1C، منظور از بایت بزرگ Endian)؛ همچنین به جبران خسارت اشاره می کند که در آن اندازه بلوک داده دوم قرار دارد. در 28 جابجایی ما اندازه بلوک بعدی 8 (00 00 00 08) را پیدا می کنیم. برای پیدا کردن اندازه بلوک های زیر، شما باید اندازه بلوک های قبلی را اضافه کنید. بنابراین، اندازه فایل محاسبه می شود:

MOV

این فرمت به طور گسترده ای استفاده شده نیز یک ظرف MPEG-4 است. MOV از یک الگوریتم فشرده سازی داده اختصاصی استفاده می کند، دارای یک ساختار MP4 است و برای اهداف مشابه برای ذخیره سازی داده های صوتی و تصویری و همچنین مواد مرتبط استفاده می شود.
مانند MP4، هر فایل MOV دارای یک امضا 4 بایت 4 بایت FTYP است، اما امضای زیر دارای مقدار QT__ (71 74 20 20) است. قانون محاسبه اندازه فایل تغییر نکرده است: از شروع فایل، اندازه بلوک بعدی را محاسبه کرده و برابر شود.

روش چک کردن این گروه از فرمت ها برای حضور فایل های "چسب" این است که محاسبه اندازه با توجه به قوانین مشخص شده در بالا و مقایسه آن با اندازه فایل بررسی شده است. اگر اندازه فایل فعلی بسیار کوچکتر از محاسبه شده است، این واقعیت را نشان می دهد که واقعیت چسباندن است. هنگام چک کردن فایل های AVI، اجازه می دهد که اندازه محاسبه شده ممکن است کمتر از اندازه فایل باشد به دلیل حضور صفر های اضافه شده برای تراز کردن مرز. در این مورد، پس از اندازه فایل محاسبه شده، صفر را بررسی کنید.

فرمت باینری فایل Compaund را بررسی کنید

این فرمت فایل، طراحی شده در مایکروسافت، همچنین به عنوان OLE (پیوند شیء و تعبیه) یا COM (مدل شیء جزء) شناخته شده است. DOC، XLS فایل ها، PPT متعلق به گروه فرمت CFB است.

فایل CFB شامل یک هدر 512 بایت و بخش هایی از همان طول است که جریان داده ها یا اطلاعات خدمات را ذخیره می کند. هر بخش دارای تعداد غیر منفی خود است، استثناء اعداد خاص است: "-1" - اعداد بخش آزاد، "-2" - اعداد بخش، بسته شدن زنجیره ای. تمام زنجیرهای بخش در جدول چربی تعریف می شوند.

فرض کنید که مهاجم یک نوع فایل DOC را اصلاح کرد و یک فایل دیگر را به پایان رساند. راه های مختلفی برای تشخیص آن وجود دارد یا آنومالی را در سند نشان می دهد.

اندازه فایل ناهموار

همانطور که در بالا ذکر شد، هر فایل CFB شامل هدر و بخش های طول مساوی است. برای پیدا کردن اندازه بخش، شما باید یک شماره دو بایت را در 30 افست از ابتدای فایل بخوانید و 2 را به درجه این شماره بسازید. این تعداد باید به ترتیب با 9 (0x0009) یا 12 (0x000C) برابر باشد، اندازه بخش فایل 512 یا 4096 بایت است. پس از پیدا کردن این بخش، باید برابری زیر را بررسی کنید:

(فایل ها - 512) mod sectorsize \u003d 0

اگر این برابری اجرا نشود، می توانید واقعیت فایل های تخمگذار را مشخص کنید. با این حال، این روش دارای نقص قابل توجهی است. اگر مهاجم اندازه بخش را می داند، پس کافی است که فایل خود و یک بایت دیگر را چسباند تا مقدار داده های چسبنده اندازه چند بخش باشد.

نوع بخش ناشناخته

اگر مهاجم در مورد روش دور زدن بررسی قبلی بداند، این روش می تواند دسترسی به بخش ها را با انواع نامشخص تشخیص دهد.

ما برابری را تعریف می کنیم:

FileSize \u003d 512 + courteria * sectorsize، جایی که فایل ها اندازه فایل، بخش بخش ها، اندازه بخش، کشور است - تعداد بخش ها.

ما همچنین متغیرهای زیر را تعریف می کنیم:

  1. COUNTFAT - تعداد بخش های چربی. این 44 از شروع فایل (4 بایت) جبران می شود؛
  2. Countminifat - تعداد بخش های مینییفات. واقع در 64 افست از شروع فایل (4 بایت)؛
  3. COUNTDIFAT - تعداد بخش های مختلف. واقع در 72 افست از شروع فایل (4 بایت)؛
  4. COUNTDE - تعداد بخش های ورودی دایرکتوری. برای پیدا کردن این متغیر، لازم است اولین بخش DE را پیدا کنید که در 48 جابجایی قرار دارد. سپس شما باید یک دیدگاه کامل از DE از چربی دریافت کنید و تعداد بخش های DE را محاسبه کنید.
  5. COUTTREAMS - تعداد بخش های داده؛
  6. CountFree - تعداد بخش های آزاد؛
  7. CountClassified - تعداد بخش ها با یک نوع خاص؛
CountClassified \u003d COUNTFAT + COUNTMINIFAT + COUNTDIFAT + COUNTDE + COUNTSTREAMS + COUNTFREE

بدیهی است، در نابرابری شمارش معکوس و کشور، شما می توانید نتیجه گیری در مورد چسباندن فایل احتمالی ایجاد کنید.