تنظيم نتايج الـ Recon
إزاي تنظّم كل اللي جمعته في هيكل folders ثابت، وملف لكل host، وتحفظ النتايج بـ JSON، وتسأل أسئلة على البيانات بـ Python.
نص شرح المعلم والكود الذي كتبه ونتيجة تشغيله، بنفس ترتيب الدرس.
بعد ساعات من الـ Recon، هيبقى عندك scans، و subdomains، و banners، و notes. لو مش مترتّبين، هتنسى حاجة مهمة، وده أكتر سبب الناس بتفشل بيه في OSCP.
اعمل هيكل folders ثابت لكل هدف: folder للـ scans، وجُوّاه نتايج Nmap. folder للـ loot، يعني أي ملفات أو باسوردات لقيتها. و folder للـ exploits. نفس الترتيب في كل جهاز، علشان دماغك تتعوّد عليه.
والأهم: احفظ البيانات في شكل منظّم، زي JSON. ملف لكل host. فيه الـ OS، والـ ports، والخدمات، والـ notes. كده تقدر تسأله أسئلة بالـ code بعدين. هنا dictionary لجهازين، كل واحد فيه الـ OS والـ ports والـ notes. نطبعهم بشكل مرتّب، وبعدين نحفظهم في ملف JSON. نشغّل… كل جهاز بخدماته وملاحظاته، واتحفظ في recon dot json. ده بقى مصدر الحقيقة بتاعك.
import json
hosts = {
"10.10.10.5": {
"os": "Linux",
"ports": {22: "OpenSSH 7.2p2", 80: "Apache 2.4.18"},
"notes": ["robots.txt -> /backup", "WordPress 5.x"],
},
"10.10.10.20": {
"os": "Windows",
"ports": {445: "SMB", 3306: "MySQL 5.7"},
"notes": ["SMB share Public: READ/WRITE"],
},
}
for ip, data in hosts.items():
print(f"=== {ip} ({data['os']}) ===")
for port, service in data["ports"].items():
print(f" {port:>5} {service}")
for note in data["notes"]:
print(f" note: {note}")
with open("recon.json", "w") as f:
json.dump(hosts, f, indent=2)
print("saved recon.json")المخرجات
=== 10.10.10.5 (Linux) ===
22 OpenSSH 7.2p2
80 Apache 2.4.18
note: robots.txt -> /backup
note: WordPress 5.x
=== 10.10.10.20 (Windows) ===
445 SMB
3306 MySQL 5.7
note: SMB share Public: READ/WRITE
saved recon.jsonدورك: اسأل البيانات سؤال: أنهي أجهزة port eighty مفتوح عليها، وأنهي أجهزة four forty five؟
لِف على [80, 445] واطبع الـ IPs اللي الـ port فيها جُوّه data["ports"].
الحل: نشغّل… كده تقدر تجاوب أي سؤال عن الشبكة في لحظة.
import json
hosts = {
"10.10.10.5": {
"os": "Linux",
"ports": {22: "OpenSSH 7.2p2", 80: "Apache 2.4.18"},
"notes": ["robots.txt -> /backup", "WordPress 5.x"],
},
"10.10.10.20": {
"os": "Windows",
"ports": {445: "SMB", 3306: "MySQL 5.7"},
"notes": ["SMB share Public: READ/WRITE"],
},
}
for ip, data in hosts.items():
print(f"=== {ip} ({data['os']}) ===")
for port, service in data["ports"].items():
print(f" {port:>5} {service}")
for note in data["notes"]:
print(f" note: {note}")
with open("recon.json", "w") as f:
json.dump(hosts, f, indent=2)
print("saved recon.json")
for port in [80, 445]:
ips = [ip for ip, data in hosts.items() if port in data["ports"]]
print(f"port {port}: {ips}")المخرجات
=== 10.10.10.5 (Linux) ===
22 OpenSSH 7.2p2
80 Apache 2.4.18
note: robots.txt -> /backup
note: WordPress 5.x
=== 10.10.10.20 (Windows) ===
445 SMB
3306 MySQL 5.7
note: SMB share Public: READ/WRITE
saved recon.json
port 80: ['10.10.10.5']
port 445: ['10.10.10.20']الدرس الجاي: نعمل أتمتة لكل ده في script واحد. يلا بينا.
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