
إطار عمل قائم على Go لاستغلال الشبكات وهجمات الوسيط (MITM)، مخصص لاختبار الاختراق المصرح به، واستطلاع الشبكات، واعتراض حركة المرور، واختبار أمن الشبكات اللاسلكية، والبحث في الهجمات على الطبقات 2/3/7.
إطار عمل لتقييم أمن الشبكات والمضيف المحلي مكتوب بلغة Go. وهو أداة بحث واختبار اختراق مرخّص تغطي خط أنابيب التقييم الشبكي — اكتشاف المضيفين والخدمات، التعداد، تدقيق بيانات الاعتماد، تحديد الثغرات، والاستغلال المرخّص. تمتد فئات وحداته العشر عبر الاستطلاع، التعداد، OSINT، MITM (تسميم ARP/DHCP/DNS/IPv6 والاعتراض المضمّن لـ HTTP/HTTPS)، اللاسلكي، طبقة المفاتيح، الويب، المصادقة، التجسس وما بعد الاستغلال — وكلها تُدار من واجهة REPL تفاعلية، أو معالج موجّه، أو تسلسلات أوامر لمرة واحدة.
MITM هي إحدى القدرات ضمن هذا المجال الأوسع: TOHA3EE لا يقتصر على سيناريوهات الرجل في المنتصف.
تحذير: يعمل toha3ee بنشاط على إعادة توجيه حركة الشبكة وتسميمها وفك تشفيرها واعتراضها. استخدمه فقط على شبكات تملكها أو مصرّح لك باختبارها صراحةً. تشغيل هذه الوحدات ضد أطراف ثالثة غير قانوني في معظم الدول. اقرأ
docs/security.mdأولاً.
تجلب أدوات التثبيت ذات السطر الواحد الثنائي المُجمّع مسبقًا لمنصتك من أحدث إصدار، وتتحقق من مجموع اختباري SHA-256 الخاص به وتضيفه إلى PATH الخاص بك. إذا لم يوجد ثنائي مُجمّع مسبقًا بعد، يتم البناء من المصدر بدلاً من ذلك.
لينكس / ماك أو إس:
curl -fsSL https://raw.githubusercontent.com/qyvora/qyvora-toha3ee/main/scripts/install.sh | sh
ويندوز (PowerShell):
irm https://raw.githubusercontent.com/qyvora/qyvora-toha3ee/main/scripts/install.ps1 | iex
أو من نسخة سحب من المستودع:
make install # installs ~/.local/bin/toha3ee and adds it to PATH
خيارات التثبيت (يونكس): --prefix <dir> (الافتراضي: /usr/local/bin عند التشغيل بصلاحيات الجذر، وإلا ~/.local/bin)، و--no-path لتخطي تعديل rc الخاص بصدفتك، و--from-source للبناء بدلاً من التنزيل، وTOHA3EE_VERSION=<tag> لتثبيت إصدار معيّن. شغّل مع sudo sh ... للتثبيت على مستوى النظام. يضع مثبّت ويندوز الثنائي في %LOCALAPPDATA%\Programs\toha3ee\bin ويحدّث PATH الخاص بالمستخدم؛ أما Windows-on-ARM64 فيشغّل بناء x64.
على لينكس، يسجّل المثبّت التطبيق أيضًا لدى بيئة سطح المكتب: يثبّت الشعار في سمة الأيقونات hicolor ويضع مدخل .desktop بجوار بادئة التثبيت (مثل /usr/local/share أو ~/.local/share)، فيظهر toha3ee في بحث جنوم بأيقونته. على ويندوز ينسخ ملف .ico وينشئ اختصار قائمة ابدأ. يحمل الأرشيفان tarball/zip الخاصان بالإصدار الأيقونة، ليتمكن المثبّت من تسجيلها من نفس الملف الموثّق.
إلغاء التثبيت: احذف الثنائي وسطر PATH الذي أضافه المثبّت إلى rc الخاص بصدفتك (أو %LOCALAPPDATA%\Programs\toha3ee على ويندوز).
يتطلب Go 1.26+ وlibpcap.
# Debian/Ubuntu
sudo apt install libpcap-dev
# then
go build ./cmd/toha3ee
تتطلب عمليات البناء على لينكس ترويسات libpcap (يتحقق خيار المثبّت الاحتياطي من المصدر منها ويطبع أمر apt/dnf الصحيح إذا كانت مفقودة). يأتي ماك أو إس مزوّدًا بـ libpcap مع Xcode Command Line Tools.
# Interactive console (bare command drops straight in)
sudo ./toha3ee --iface eth0
# Interactive console (explicit subcommand)
sudo ./toha3ee interactive --iface eth0
# Guided wizard
sudo ./toha3ee wizard --iface eth0
# One-shot: scan the subnet, then show what was found
sudo ./toha3ee --eval "net.scan; net.show" --iface eth0
# Non-interactive caplet script
sudo ./toha3ee run --iface eth0 caplets/basic.cap
# Dry-run a .toha3ee script (validates it, prints the plan, sends no packets)
./toha3ee --no-sudo build scripts/full-pipeline.toha3ee
# Execute a .toha3ee script non-interactively
sudo ./toha3ee script --iface eth0 scripts/full-pipeline.toha3ee
تتطلب معظم وحدات الهجوم صلاحيات الجذر (raw sockets، التقاط الحزم، وإعادة توجيه IP). شغّلها كجذر أو مع CAP_NET_ADMIN/CAP_NET_RAW حيثما أمكن. أضف --no-color لتعطيل المخرجات الملونة، و-v لتسجيل مفصّل.
تعمل الأداة بصلاحيات إدارية افتراضيًا: على لينكس/ماك أو إس تعيد تنفيذ نفسها تحت sudo وتطالب بكلمة مرور المسؤول (الجذر) عند كل استدعاء. مرّر --no-sudo (أو اضبط TOHA3EE_NO_SUDO=1) للتشغيل بدون صلاحيات، مثل toha3ee --no-sudo version سريعة.
كل شيء هو وحدة (module). تسجّل الوحدات نفسها في init() الخاص بحزمتها وتظهر تلقائيًا عبر السجل (registry)؛ إضافة هجوم تعني إضافة حزمة تحت internal/attacks/ تنفّذ عقد attacks.Module (انظر internal/attacks/attacks.go):
Meta() — المعرّف، الفئة، الخطورة، الأهداف، الوصف، القيودPreflight(ctx) — فحص الشروط المسبقة قبل التشغيلRun(ctx, opts) — حلقة الهجوم (يجب أن تحترم ctx.Done)Verify(ctx) — الإبلاغ عمّا حدثCleanup(ctx) — التراجع عن كل شيء، واستعادة الشبكةدورة حياة safety مركزية (internal/safety) تتعقّب عمليات التنظيف المسجّلة ونبضات القلب بحيث يُفكَّك كل هجوم حتى عند حدوث panic أو SIGINT، ويحتفظ store مشترك بجرد المضيفين، وبيانات الاعتماد الملتقطة، والجلسات، وسجل الأحداث الذي يغذّي مولّد التقارير.
شغّل toha3ee modules للحصول على الكتالوج الكامل والحالي. أبرز ما فيه:
تشغيل toha3ee مباشرة (أو toha3ee interactive) يفتح كونسولًا بأسلوب bettercap/metasploit: شعار @@@، وموجّه toha3eeλ > بلمسة حمراء مع إكمال تلقائي بالضغط على Tab، وشريط حالة HUD سطري دائم أعلى الموجّه يعرض الواجهة، والوحدات قيد التشغيل، والعدّادات المباشرة للمضيفين/المنافذ/بيانات الاعتماد/الأحداث. تُجمَّع المخرجات وتُحاذى بلوحة أخضر/كهرماني/أبيض — يُستخدم الأحمر عمدًا لتمييز الموجّه، والأخطاء الجسيمة ([x])، وعلامة حافة HUD، ووحدات الخطورة الحرجة (الخطورة العالية كهرمانية). مخرجات كل أمر مقسّمة إلى أقسام (─── modules ───)، والجداول محاذاة الأعمدة (تُتجاهل الألوان عند حساب المحاذاة)، وتُلوَّن رسائل الوحدات مركزيًا، فتحصل كل وحدة على رموز حالة متناسقة دون أي عمل خاص بكل وحدة. تتحوّل المخرجات تلقائيًا إلى نص عادي عند تمريرها عبر أنبوب، ويبقى الموجّه ظاهرًا ونشطًا أثناء تشغيل أي وحدة، مثل bettercap.
$ sudo ./toha3ee --iface eth0
@@@@@@@@
@@@@@@@@@@@@@
@@@@@@@@ @@@@@@@
@@@@@@@@ @@@@@@@@
@@@@@@@@ @@@@@@@@
@@@@@@@ @ @@@@@@@
@@@@@@@@ @@@@@@@@@ @@@@@@@
@@@@@@@@ @@@ @ @@@@@@@
@@@@@@@ @@ @@@@@@@@@@ @@@@@@@
@@@@@@ @@ @ @@@@@@@@@@@@@@@@@@ @@@@@@
@@@ @@@ @@@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@ @ @@@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@@ @ @@@@@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@@ @ @@@@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@
@@@ @@@@@ @@@@@@@@@@@@@@@ @@@ @@@
@@@ @@@@@ @@@@@@@@@@@@@@ @@@ @@@
@@@ @@@ @@@@@@@@@@@@@ @@@@ @@@
@@@ @@ @@@@ @@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@ @@@@@@ @@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@ @@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@ @@@ @@@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@ @@@@@@@@@ @@@
@@@ @@@@@@@@@@@@@@@ @@@@@@@@@@@@@ @@@@@@@@@@@ @@@
@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@ @@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@ @@@@ @@@@@@@ @@@@@@@@
@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@@@@@@@ @@@@@@@
@@@@@@@ @@@@@@@ @@@@@@
@@@@@@ @@@@@@@
@@@@@@@@ @@@@@@@
@@@@@@@@
@@@
local & network security assessment framework
[>] iface wlan0 (10.135.199.31, 8c:c8:4b:30:bf:91)
[>] v 0.1.0
type 'help' for commands, 'modules' for the catalogue, 'quit' to exit
[*] session ready. type 'help' for commands.
toha3eeλ> help
تتبع رموز الحالة اصطلاح bettercap:
الكتلة الحمراء ▮ على الحافة اليسرى من HUD تميّز شريط الحالة؛ يُعاد طبع HUD بعد كل أمر لتبقى العدّادات حديثة دون كتابة إضافية.
مثال لجلسة:
toha3eeλ> modules recon # module catalogue filtered by category
toha3eeλ> on net.scan # run a module (preflight checks shown first)
toha3eeλ> net.show # discovered hosts
toha3eeλ> net.profile # profile + ranked attack vectors
toha3eeλ> help # grouped command reference
toha3eeλ> quit
يخزّن set <module.key> <value> إعدادات كل وحدة (معرّفات الوحدات منقوطة بنقاط، لذا يحدث الفصل عند آخر نقطة: set arp.spoof.targets 10.0.0.5)؛ ويطبع config كل ما تم ضبطه حتى الآن. تحتفظ الجلسات بالبيانات الملتقطة عبر تشغيلات الوحدات؛ وينشئ report.generate تقييم Markdown من المخزن في الذاكرة.
تسيّر ملفات .toha3ee خط أنابيب الاستطلاع → الاستغلال → التقرير الكامل بلغة تشبه بايثون وتُقرأ كما لو كانت إنجليزية. نفّذ أحدها عبر toha3ee script <file>، أو من REPL عبر script <file>، أو شغّل أي ملف .toha3ee عبر run <file>. يتحقق toha3ee build <file> (أو build <file> في REPL) من الملف ويطبع خطة تشغيل تجريبية دون لمس الشبكة. scripts/full-pipeline.toha3ee مثال عملي متكامل من البداية إلى النهاية.
# comment (or //)
set net.scan.targets -> "192.168.8.0/24" # configure a module
on net.scan # start a module (run/start)
wait for net.scan # block until it finishes
_hosts -> [$(net.hosts)] # capture a list (or =, >>)
echo -> "found $(_hosts.size) hosts" # print (say/print)
if $(hosts.count) > 1 # conditions
on arp.spoof targets "192.168.8.0/24"
sleep -> 30
off arp.spoof
end
for each _h in $(_hosts) # loops
repeat 3 times
exec -> net.show # run any REPL command once
break
end
end
get net.scan.timeout -> _t # read a config value
report -> "assessment.md" # write the session report
ملاحظات اللغة:
set, get, on/start/run, off/stop, wait for <module> [max <secs>], sleep <secs>, echo/say/print, show <module>, report <file>, exec <command>, if/else/end, , , , , ، و بمفردها تُوقف السكربت.تكون الإعدادات افتراضيًا في toha3ee.json (استخدم --config للتجاوز). تقرأ كل وحدة إعداداتها الخاصة من نطاقها الخاص، مثل report.generate.out، وswitch.portsteal.victim_mac، وhttp.harvest.pcap.
التخفي (Stealth) مفعّل دائمًا، في كل مرحلة، وصولًا إلى مستوى الحزمة الفردية. تأتي كل وحدة ترسل حزمًا بملف تعريف عشوائي ومذبذَب (jittered) افتراضيًا؛ لا يوجد شيء لتفعيله، وتعطيله (set <module>.stealth false) غير مدعوم صراحةً بقصد التصميم.
stealth_shuffle) حتى لا تجتاح الشبكة الفرعية بالترتيب التصاعدي المتوقع الذي يُستخدم لتمييز الماسحات.stealth_jitter, stealth_burst, stealth_pause) بحيث لا تكون حركة المرور تدفقًا موحدًا مستويًا ولا فيضانًا متزامنًا واحدًا.stealth_pad) بدلاً من الإطارات المحشوة بأصفار التي تصدرها معظم الماسحات، ويُجمع مسح net.scan النشط عبر حلقة التقاط واحدة بينما يواصل المستمع السلبي استيعاب حركة المرور.stealth_ports)، وTTL ومعرّف IP (stealth_ttl, stealth_id)، ورقم تسلسل TCP ونافذته، وتمسح أحيانًا بتة DF، فلا يتحول تدفق الفحص إلى بصمة أداة واحدة.تُقرأ المعاملات القابلة للضبط لكل وحدة، مثل set net.scan.stealth_jitter 5ms، وset service.synscan.stealth_burst 128. يبقى موجه REPL ظاهرًا ونشطًا أثناء تشغيل أي وحدة، مثل bettercap.
go test ./...
تغطي مجموعة الاختبارات صانعي الإطارات (DHCP, NDP, 802.11, STP/CDP/LLDP)، والمخزن وعارض التقارير، واختبار عقد السجل الذي يثبّت كتالوج الوحدات الكامل.
تشغّل CI (.github/workflows/ci.yml) gofmt وgo vet وgo build وgo test -race على لينكس بالإضافة إلى اختبارات على ويندوز وماك أو إس لكل push/PR؛ ويشغّل CodeQL تحليلًا أمنيًا ثابتًا. تُدار تحديثات التبعيات عبر Dependabot.
انظر CONTRIBUTING.md وdocs/contributing.md وCODE_OF_CONDUCT.md. أبلغ عن المشكلات الأمنية عبر SECURITY.md — وليس كمشكلات عامة.
| Path | Purpose |
|---|
cmd/toha3ee | واجهة الأوامر: الكونسول، المعالج، --eval، مشغّل الكابليتات، script/build |
internal/ui | عرض الكونسول: الشعار، اللوحة اللونية، الأقسام، الجداول، رموز الحالة، HUD |
internal/script | اللغة النصية .toha3ee: المحلّل المعجمي، المحلّل النحوي، المحرّك |
internal/attacks/ | جميع وحدات الهجوم حسب الفئة |
internal/netx/ | البدائيات البروتوكولية (ARP, DHCP, DNS, NDP, 802.11, SMB/NTLM, proxy, …) |
internal/hijack | وكيل MITM لـ HTTP/HTTPS واعتراض بيانات الاعتماد/الجلسات |
internal/phish | تصيّد بوابات الالتقاط (captive-portal) واستنساخ صفحات تسجيل الدخول |
internal/store | مخزن بيانات مشترك وناقل أحداث |
internal/safety | دورة حياة التنظيف/نبض القلب |
internal/config | تحميل إعدادات JSON |
internal/oui | قاعدة بيانات بائعي MAC |
pkg/certutil | شهادات CA الخاصة بالإطار وشهادات TLS لكل مضيف |
| Category | Modules |
|---|
| mitm | arp.spoof, dns.spoof, dns.rebind, dhcp.rogue, dhcp.starve, dhcp6.spoof, icmp.redirect, ipv6.ra, ipv6.ndp, llmnr.poison, wpad.poison |
| espionage | http.harvest, http.proxy, https.proxy, ssl.strip, phish.inject |
| auth | default.creds, ntlm.relay, smb.signing, smb.kerberoast, auth.spray, auth.brute, auth.userenum, auth.asrep |
| recon | net.scan, net.ping, net.traceroute, net.osdetect, service.synscan, service.tcpconnect, service.udpscan, service.finxmas, service.ack, service.protoscan, service.idle, service.fingerprint, service.tls, web.dir, cve.suggest |
| osint | osint.dns, osint.whois, osint.ct, osint.asn, osint.shodan, osint.bucket, osint.wayback, osint.github, osint.hibp, osint.metadata, osint.dork, osint.harvest |
| enum | smtp.enum, snmp.enum, ldap.enum, nfs.enum, smb.enum, net.ip6sweep |
| web | web.misconfig |
| switch | switch.flood, switch.portsteal, switch.vlanhop, switch.cdp, switch.stp |
| wireless | wlan.scan, wlan.deauth, wlan.handshake, wlan.eviltwin, wlan.pmkid, wlan.beaconflood, wlan.karma |
| post | report.generate, session.replay, pcap.export |
| Glyph | Meaning |
|---|
[*] | معلومة / قيد التشغيل (أبيض) |
[+] | نجاح (أخضر) |
[!] | تحذير (كهرماني) |
[>] | نظام (أبيض عريض) |
[-] | محايد (خافت) |
[x] | خطأ جسيم (أحمر) |
[OK] | موثّق / ناجح (أخضر) |
for each _x in <list>repeat N timeswhile <cond>breakcontinuestop_name -> value، أو _name = value، أو _name >> value؛ [...] يبني قائمة من خاصية، و$(_name.size) و$(_list.size) هما الطولان.$(...) يحلّ حالة الجلسة المباشرة: $(hosts.count)، و$(net.hosts)، و$(creds.count)، و$(sessions.count)، و$(running.list)، و$(iface.ip)، و$(iface.cidr)، و$(iface.mac)، و$(iface.gateway)، و$(config.<module.key>)؛ المسارات المسبوقة بشرطة سفلية تقرأ متغيرات السكربت.== != < > <= >=، و&&، و||، و!؛ تُقارن الأرقام عدديًا. حلقات while محدودة السقف بحيث لا يمكن لشرط خاطئ أن يعلّق السكربت.