وبلاگ شخصی علیرضا داودی

وبلاگ شخصی علیرضا داودی دانشجوی کارشناسی ارشد هوش مصنوعی

وبلاگ شخصی علیرضا داودی

وبلاگ شخصی علیرضا داودی دانشجوی کارشناسی ارشد هوش مصنوعی

وبلاگ شخصی علیرضا داودی

مطالبی که به نظرم جالب می آید را در این وبلاگ منتشر خواهم کرد.

۱ مطلب در خرداد ۱۳۹۳ ثبت شده است

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

حال با فایل های بدون پسوند چه کار باید کرد؟ یا فایل هایی که افراد به خاطر مقاصد خاصی پسوندشان را تغییر می دهند!؟

بگذارید با یک مثال این مساله را باز کنم. فرض کنید فایلی به دست شما رسیده است (مثلا از طریق ایمیل)؛ پسوند این فایل jpg است. ولی آیا واقعا این یک فایل Jpg است؟! حتی اگر با باز کردن آن فایل یک عکس هم نشان داده شود نمی توان گفت که آن فایل یک ویروس نبوده است!! بله ویروس ها می توانند خود را به انواع فایل ها بچسبانند.

خوب در مواقعی مثل مورد بالا باید چه کار کرد؟

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

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

اما تشخیص نوع یک فایل از روی هدر آن کار آسانی نیست. زیرا هزاران نوع فایل داریم که ممکن است برخی هدر ها تا حدی شبیه هم باشند. مثلا هدر فایل های اجرایی مثل dll ها و exe ها و ocx و ... بسیار شبیه هم هستند. ضمن اینکه خود این فایل ها داری انواع مختلفی هستند. به عنوان مثال 5 نوع فایل Jpg داریم.

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

در یک پروژه به خاطر نیاز به همچین برنامه ای بعد از تحقیق در اینترنت به برنامه ای به نام TrIDNet رسیدم. این برنامه از یک سری فایل xml که مشخصات کلیدی نوع های مختلف در آنها ذخیره شده است،برای تشخیص نوع فایل استفاده می کند. اما مشکلی که وجود داشت این بود که این برنامه فقط در نسخه ی 32 بیت منتشر شده است و نسخه ی 64 بیت که مورد نیاز ما بود، وجود ندارد. به گفته ی تیم توسعه دهنده ی این نرم افزار نسخه ی 64 بیت در آینده منتشر خواهد شد؛ ولی برای ما دیر بود.

به همین دلیل با استفاده از همان فایل های xml برنامه ای نوشتم که همان کار را انجام می داد.

به نظرم برنامه های این چنینی که تکنولوژی خاصی ندارد را باید در اختیار همگان قرار داد. این کار به توسعه ی سریعتر علم کمک می کند.

به همین جهت بنده سورس این نرم افزار را در اختیار عموم قرار می دهم که با ذکر نام استفاده کنند.


این برنامه با زبان c++ و کتابخانه ی Qt نوشته شده است.



دریافت سورس
عنوان: سورس برنامه ی تشخیص نوع فایل
حجم: 481 کیلوبایت
توضیحات: سورس برنامه

دریافت فایل اجرایی
عنوان: برنامه تشخیص نوع فایل
حجم: 16.7 مگابایت
توضیحات: فایل اجرایی برنامه تشخیص نوع فایل


۴ نظر موافقین ۱ مخالفین ۰ ۱۸ خرداد ۹۳ ، ۱۸:۱۶
علیرضا داودی