السلام عليكم ورحمة الله و بركاته .
ما هي كيفية معرفة إذا كان الملف نصي ام لا اقصد ASCII اعني ملف نصي عادي .
يعني مثلا لمعرفة إذا كان الملف UTF8 استطيع قراءة ال ' First Bytes ' BFBBEF .
لمعرفة اذا كان الملف UNICODE استطيع قراءة ال ' First Bytes ' FEFF
ولمعرفة اذا كان الملف UNIBIG استطيع قراءة ال ' First Bytes ' FFFE
والخ .
المشكلة كيف يمكن معرفة اذا كان الملف نصي Pure ASCII File فهو لا يملك BOM ولا Fixed First Bytes .
اعلم انني يمكن ان احسب عدد ال F Bytes فيه فاذا تعدى ال 50 في Offset واحدة فهو Pure ASCII File .
شكرا عزيزي tf6mehboul هكذا كله اعرفه .
مثالك يرجع نوع الملف txt file ..... الخ .
انا اصلا اعتمد على الملفات النصية يعني لك المشكلة ليست هنا ,
سوف اوضح لك انشئ ملف نصي جديد عند الحفظ اختر ال Encoding واختر مثلا UTF-8 بعد ذلك حاول فتح الملف باي Hex editor ولحظ البيتات الاولى سوف تجدها BFBBEF ......
سؤالي هو كيفية عرفة هل الملف النصي هو Ansi-Encoding اعني Plain text File , اعني و كانك تحفظ ملف نصي عادي .
1- إن كنت تريد معرفة نوع الملف إنطلاقا من بنيته (Stream/bin) فهدا حسب رأي الخبراء غير إحترافي لأنه هناك ما يعرف بـ :
- التشويش على نقطة البداية .
- حقن بصمة مخالفة عن الأصلية أو إستبدالها في الملف (غالبا في pe) .
(بالطبع هناك طرق أخرى .......)
2- إدا كنت تريد جمع نقاط أو بيتات البداية لجميع أنواع الملفات ووضعها مثلا في : Unit و دمجها بالبرنامج و عمل مقارنة
مع بايت البداية للملف الحالي لإرجاع النوع ممكن أساعدك ؟؟.
3- مجرد رأي + رأي خبير أعرفه ممكن لم أوضح الفكرة جيدا.
لا توجد طريقة مظمونة 100% لمعرفة انه ملف نصي من المحتوى فقط (دون النظر للاحقة)
يمكن ان تفحصه كله حرفا حرفا byte by byte وتقارن القيم
فان وجدتها بمجال قيم Ascii القابلة للطباعة تقول انه نصي
غير ذلك فهو شي اخر
مع ذلك فهذا غير صحيح دائما فهناك من استطاع تحويل ملف تنفيذي لكي يظهر نصي لكنه قابل للتنفيذ بلاحقة .COM مرفق مثال لمبرمج من تايوان
mohfa كتب :شكرا عزيزي tf6mehboul
انا لااتكلم عن ملفات ال PE انا اتكلم عن ملفات نصية Text Files اعني ACSII files
هل رائت يوما ملف نصي Obfuscated لا اظن ذلك .
اظن ان الفكرة وصلت لك
في ما يخص نوع الملف انا لا اتكلم عن الملفات التي لها الاحقة : Txt بل الملفات التي تعتمد في بنيتها
على Lines ؟؟ .