الـ Metadata: أسرار جُوّه الملفات
إيه هي الـ metadata في ملفات PDF و Office والصور، وإيه اللي بتكشفه (usernames وإصدارات software)، وأدوات زي exiftool، وتطلّعها من PDF بـ Python.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
في درس Google Dorking طلّعنا ملفات PDF منشورة على موقع الشركة. الملفات دي فيها حاجة أغلب الناس ما بتشوفهاش: الـ metadata.
الـ metadata يعني بيانات عن البيانات. في ملفات PDF و Word: اسم الكاتب، والبرنامج اللي اتعمل بيه، وتاريخ الإنشاء. وفي الصور: نوع الكاميرا، وساعات مكان التصوير بالـ GPS.
ده بيفيد في إيه؟ اسم الكاتب غالباً هو الـ username بتاعه على الـ domain. إصدار البرنامج أو الـ Windows بيقولّك الشركة بتستخدم إيه، ولو قديم يبقى فيه ثَغَرات معروفة. والأداة الأشهر اسمها exiftool. ملف PDF من جُوّه فيه جزء اسمه Info، شكله زي اللي قدامك. نستخدم regular expression تدوّر على slash، وبعدها اسم، وبعدها قيمة بين parentheses، ونحوّل النتيجة لـ dictionary. نشغّل… الكاتب ahmed dot hassan، وده غالباً الـ username بتاعه. والملف اتعمل بـ Word ألفين وستاشر على Windows عشرة.
import re
# The start of a real PDF keeps an "Info" dictionary like this one
pdf = b"""%PDF-1.4
1 0 obj
<< /Title (Q3 Sales Report)
/Author (ahmed.hassan)
/Creator (Microsoft Word 2016)
/Producer (Windows 10 Pro)
/CreationDate (D:20240312094500) >>
endobj
"""
meta = dict(re.findall(rb"/(\w+) \(([^)]*)\)", pdf))
for key, value in meta.items():
print(f"{key.decode():13} {value.decode()}")المخرجات
Title Q3 Sales Report Author ahmed.hassan Creator Microsoft Word 2016 Producer Windows 10 Pro CreationDate D:20240312094500
دورك: اطبع بس الحاجتين المهمين للـ Pentester: الـ Author والـ Creator، وقبل كل واحد كلمة interesting.
لِف على [b"Author", b"Creator"] واطبع meta .decode().
الحل: نشغّل…
import re
# The start of a real PDF keeps an "Info" dictionary like this one
pdf = b"""%PDF-1.4
1 0 obj
<< /Title (Q3 Sales Report)
/Author (ahmed.hassan)
/Creator (Microsoft Word 2016)
/Producer (Windows 10 Pro)
/CreationDate (D:20240312094500) >>
endobj
"""
meta = dict(re.findall(rb"/(\w+) \(([^)]*)\)", pdf))
for key, value in meta.items():
print(f"{key.decode():13} {value.decode()}")
for key in [b"Author", b"Creator"]:
print("interesting:", meta[key].decode())المخرجات
Title Q3 Sales Report Author ahmed.hassan Creator Microsoft Word 2016 Producer Windows 10 Pro CreationDate D:20240312094500 interesting: ahmed.hassan interesting: Microsoft Word 2016
كده خلّصنا الجمع السلبي. الدرس الجاي هنبدأ الجمع النشط: إزاي تعرف أنهي أجهزة شغّالة على الشبكة. يلا بينا.
03 / دروس المسار (22)
- 01يعني إيه جمع معلومات (Recon)؟
- 02سلبي ولا نشط؟ والنطاق القانوني
- 03WHOIS: مين صاحب الـ Domain؟
- 04سجلات DNS: كنز المعلومات
- 05اكتشاف الـ Subdomains
- 06Certificate Transparency: الشهادات بتتكلم
- 07Google Dorking
- 08OSINT: الموظفين والإيميلات
- 09الـ Metadata: أسرار جُوّه الملفاتانت هنا
- 10اكتشاف الأجهزة الشغّالة (Host Discovery)
- 11الـ Port Scanning بيشتغل إزاي؟
- 12Nmap: البداية
- 13أنواع الـ Scan والسرعة في Nmap
- 14كشف الخدمات والإصدارات ونظام التشغيل
- 15NSE Scripts وحفظ النتايج
- 16تعداد الويب: الـ Headers والتكنولوجيا
- 17الـ Directory Brute Force
- 18تعداد SMB
- 19تعداد خدمات تانية: FTP و DNS و SNMP وغيرهم
- 20تنظيم نتايج الـ Recon
- 21أتمتة الـ Recon بـ Python
- 22مراجعة شاملة وخطة Recon