Skip to content
KitploitKITPLOIT
أدواتالمدونة
إرسال
أدواتالمدونة
إرسال

أدوات الاختراق واختبار الاختراق والأمن السيبراني لترسانتك الأمنية!

Kitploit هو دليل لأدوات الاختراق والأمن السيبراني واختبار الاختراق. اكتشف آخر تحديثات المشاريع للعثور على الثغرات وتحليل الأنظمة وأتمتة الاختبارات وتعزيز أمنك.

··الخلاصات·اتصال·الخصوصية·© 2026 Kitploit

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
أدوات/GitHubGitHub/reyammer/shellnoob
الاستغلالالهندسة العكسيةالبرمجة النصية والأتمتةشيل كودمصممي الأخطاءتحليل الملفات الثنائيةالتعلم والتعليمتوليد شيفرة القشرةتطوير الحمولات
GitHubreyammer/shellnoob

shellnoob

طقم أدوات لكتابة الشيلكود

694121منذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

اكتشف الأدوات الأكثر استخدامًا من قبل مجتمعنا.

استكشف جميع الأدوات

تصفح مجموعتنا من الأدوات

عرض جميع الأدوات →
مشاركة
عرض المستودع

ShellNoob

كانت كتابة الشيلكودات دائمًا ممتعة للغاية، لكن بعض الأجزاء مملة للغاية وعرضة للأخطاء. ركّز فقط على الجزء الممتع، واستخدم ShellNoob!

للحصول على نظرة عامة سريعة، اطّلع على شرائح عرض Black Hat Arsenal: الرابط

هل تريد المساهمة؟ طلب ميزة؟ الإبلاغ عن خطأ؟ شتائم؟ كل أنواع الملاحظات مرحّب بها!! (لكن بعض أنواع الملاحظات أكثر ترحيبًا من غيرها :-)).

لا تتردد في مراسلتي على تويتر @reyammer أو إرسال بريد إلكتروني إلى yanick[AT]cs.ucsb.edu لأي أسئلة!

المساهمون والإشادات

  • Levente Polyak (@anthraxx42)
    • أضاف دعم Python 3
    • إصلاحات للأخطاء
  • فريق @ToolsWatch وفريق Black Hat
    • لقد أتاحوا لي فرصة لعرض أداتي :D

الأخبار

  • 01/21/2014 - صدر ShellNoob 2.1! يأتي مع دعم كامل لـ Python 3 والكثير من إصلاحات الأخطاء. كل الفضل يعود إلى Levente Polyak!

  • 07/29/2013 - صدر ShellNoob 2.0!

  • 06/08/2013 - تم قبول ShellNoob في Black Hat Arsenal! اطّلع على الإعلان هنا: الرابط.

الميزات

  • تحويل الشيلكود بين صيغ ومصادر مختلفة. الصيغ المدعومة حاليًا: asm، bin، hex، obj، exe، C، python، ruby، pretty، safeasm، completec، shellstorm. (كل التفاصيل في قسم "وصف الصيغ".)
  • وضع تفاعلي للتحويل من asm إلى opcode (والعكس). هذا مفيد عندما لا يمكنك استخدام بايتات معينة في الشيلكود وتريد معرفة ما إذا كانت تعليمة تجميع معينة ستسبب مشاكل.
  • دعم لكل من صيغة ATT وصيغة Intel. تحقق من الخيار --intel.
  • دعم 32 و 64 بت (عند العمل على جهاز x86_64). تحقق من الخيار --64.
  • حل أرقام استدعاءات النظام (syscall) والثوابت وأرقام الأخطاء (مُطبَّق الآن بشكل حقيقي! :-)).
  • محمول وسهل النشر (يعتمد فقط على gcc/as/objdump و python). إنه مجرد سكربت Python واحد مكتفٍ بذاته، ويدعم كلاً من Python2.7+ و Python3+.
  • تطوير في المكان: تشغّل ShellNoob مباشرة على البنية المستهدفة!
  • دعم مدمج لـ Linux/x86 و Linux/x86_64 و Linux/ARM و FreeBSD/x86 و FreeBSD/x86_64.
  • خيار "إضافة نقطة توقف في البداية". تحقق من الخيار -c.
  • دعم القراءة من stdin / الكتابة إلى stdout (استخدم "-" كاسم ملف)
  • تصحيح أخطاء رخيص للغاية: تحقق من الخيارين --to-strace و --to-gdb!
  • استخدم ShellNoob كوحدة Python في سكربتاتك! تحقق من قسم "ShellNoob كمكتبة".
  • الوضع المفصّل (Verbose) يعرض الخطوات منخفضة المستوى للتحويل: مفيد للتصحيح / الفهم / التعلّم!
  • إضافات إضافية: تصحيح ثنائي سهل مع الخيارات --file-patch، --vm-patch، --fork-nopper! (كل التفاصيل أدناه)

حالات الاستخدام

المساعدة المدمجة

root@kitploit:~
$ ./shellnoob.py -h
shellnoob.py [--from-INPUT] (input_file_path | - ) [--to-OUTPUT] [output_file_path | - ]
shellnoob.py -c (prepend a breakpoint (Warning: only few platforms/OS are supported!)
shellnoob.py --64 (64 bits mode, default: 32 bits)
shellnoob.py --intel (intel syntax mode, default: att)
shellnoob.py -q (quite mode)
shellnoob.py -v (or -vv, -vvv)
shellnoob.py --to-strace (compiles it & run strace)
shellnoob.py --to-gdb (compiles it & run gdb & set breakpoint on entrypoint)

Standalone "plugins"
shellnoob.py -i [--to-asm | --to-opcode ] (for interactive mode)
shellnoob.py --get-const <const>
shellnoob.py --get-sysnum <sysnum>
shellnoob.py --get-errno <errno>
shellnoob.py --file-patch <exe_fp> <file_offset> <data> (in hex). (Warning: tested only on x86/x86_64)
shellnoob.py --vm-patch <exe_fp> <vm_address> <data> (in hex). (Warning: tested only on x86/x86_64)
shellnoob.py --fork-nopper <exe_fp> (this nops out the calls to fork(). Warning: tested only on x86/x86_64)

"Installation"
shellnoob.py --install [--force] (this just copies the script in a convinient position)
shellnoob.py --uninstall [--force]

Supported INPUT format: asm, obj, bin, hex, c, shellstorm
Supported OUTPUT format: asm, obj, exe, bin, hex, c, completec, python, bash, ruby, pretty, safeasm
All combinations from INPUT to OUTPUT are supported!

التثبيت (فقط إذا أردت)

root@kitploit:~
$ ./shellnoob.py --install

هذا فقط ينسخ السكربت إلى /usr/local/bin/snoob. هذا كل شيء. (شغّل ./shellnoob.py --uninstall للتراجع).

تحويل الشيلكود من/إلى صيغ مختلفة عبر واجهة سطر أوامر مرنة للغاية.

root@kitploit:~
$ snoob --from-asm shell.asm --to-bin shell.bin

بعض البدائل المكافئة (ستحاول الأداة تخمين ما تريده بناءً على امتداد الملف..)

root@kitploit:~
$ snoob --from-asm shell.asm --to-bin
$ snoob shell.asm --to-bin
$ snoob shell.asm --to-bin - > shell.bin
$ cat shell.asm | snoob --from-asm - --to-bin - > shell.bin

وصف الصيغ

  • "asm" - تجميع قياسي. صيغة ATT افتراضيًا، استخدم --intel لاستخدام صيغة Intel. (انظر قسم "Asm كصيغة إخراج" لمزيد من التفاصيل)
  • "bin" - ثنائي خام ('\x41\x42\x43\x44')
  • "hex" - ثنائي خام مُرمّز بالنظام الست عشري ('41424344')
  • "obj" - ملف ELF
  • "exe" - ملف ELF قابل للتنفيذ
  • "c" - شيء جاهز للتضمين في برنامج C.
  • "python"، "bash"، "ruby" - نفس الشيء هنا.
  • "completec" - كود C قابل للترجمة يضبط الذاكرة بشكل صحيح على RWX (لدعم الشيلكودات ذاتية التعديل)
  • "safeasm" - تجميع قابل للتجميع 100%: أحيانًا يكون مخرج objdump، الذي يُؤخذ منه "asm"، غير قابل للتجميع. سيؤدي هذا إلى إخراج البايتات "الخام" (بترميز .byte) بحيث يمكن تجميعها بواسطة "as".
  • "shellstorm" - يأخذ الخيار --from-shellstorm كوسيط <shellcode_id>. سيقوم ShellNoob بسحب الشيلكود المحدد من قاعدة بيانات شيلكودات shell-storm، وتحويله إلى الصيغة المحددة.

تصحيح أخطاء سهل

root@kitploit:~
$ snoob -c shell.asm --to-exe shell
$ gdb -q shell
$ run
Reading symbols from ./shell...(no debugging symbols found)...done.
(gdb) run
Starting program: ./shell

Program received signal SIGTRAP, Trace/breakpoint trap.
0x08048055 in ?? ()
(gdb) 

أو يمكنك استخدام الخيارين الجديدين --to-strace و --to-gdb!

root@kitploit:~
$ snoob open-read-write.asm --to-strace
Converting open-read-write.asm (asm) into /tmp/tmpBaQbzP (exe)
execve("/tmp/tmpBaQbzP", ["/tmp/tmpBaQbzP"], [/* 97 vars */]) = 0
[ Process PID=12237 runs in 32 bit mode. ]
open("/tmp/secret", O_RDONLY)           = 3
read(3, "thesecretisthedolphin\n", 255) = 22
write(1, "thesecretisthedolphin\n", 22thesecretisthedolphin
) = 22
_exit(0)  
root@kitploit:~
$ snoob open-read-write.asm --to-gdb
Converting open-read-write.asm (asm) into /tmp/tmpZdImWw (exe)
Reading symbols from /tmp/tmpZdImWw...(no debugging symbols found)...done.
(gdb) Breakpoint 1 at 0x8048054
(gdb)

لاحظ كيف يقوم ShellNoob تلقائيًا بتعيين نقطة توقف عند نقطة الدخول!

الحصول على أرقام استدعاءات النظام والثوابت و errno

root@kitploit:~
$ snoob --get-sysnum read
i386 ~> 3
x86_64 ~> 0
$ snoob --get-sysnum fork
i386 ~> 2
x86_64 ~> 57
root@kitploit:~
$ snoob --get-const O_RDONLY
O_RDONLY ~> 0
$ snoob --get-const O_CREAT
O_CREAT ~> 64
$ snoob --get-const EINVAL
EINVAL ~> 22
root@kitploit:~
$ snoob --get-errno EINVAL
EINVAL ~> Invalid argument
$ snoob --get-errno 22
22 ~> Invalid argument
$ snoob --get-errno EACCES
EACCES ~> Permission denied
$ snoob --get-errno 13
13 ~> Permission denied

الوضع التفاعلي

root@kitploit:~
$ ./shellnoob.py -i --to-opcode
asm_to_opcode selected
>> mov %eax, %ebx
mov %eax, %ebx ~> 89c3
>> 
root@kitploit:~
./shellnoob.py -i --to-asm
opcode_to_asm selected
>> 89c3
89c3 ~> mov %eax,%ebx
>>

ShellNoob كمكتبة

root@kitploit:~
$ python
>>> from shellnoob import ShellNoob
>>> sn = ShellNoob(flag_intel=True)

>>> sn.asm_to_hex('nop; mov ebx,eax; xor edx,edx')
'9089c331d2'
>>> sn.hex_to_inss('9089c331d2')
['nop', 'mov ebx,eax', 'xor edx,edx']

>>> sn.do_resolve_syscall('fork')
i386 ~> 2
x86_64 ~> 57

Asm كصيغة إخراج

عندما تكون "asm" هي صيغة الإخراج، سيبذل ShellNoob قصارى جهده. يُستخدم Objdump كأداة تفكيك، لكن مخرجه ليس مضمونًا تمامًا. يحاول ShellNoob تعزيز التفكيك بإضافة البايتات (ترميز .byte)، وعند الاقتضاء، سيعرض ما يعادلها في ASCII (ترميز .ascii). هذا مفيد عندما تريد تعديل/تجميع مخرج objdump ولكنك بحاجة إلى إصلاح سريع.

مثال مع ترميز .byte:

root@kitploit:~
jmp 0x37              # .byte 0xeb,0x35      
pop %ebx              # .byte 0x5b          
mov %ebx,%eax         # .byte 0x89,0xd8      
add $0xb,%eax         # .byte 0x83,0xc0,0x0b 
xor %ecx,%ecx         # .byte 0x31,0xc9      

مثال مع ترميز .ascii:

root@kitploit:~
das                   # .ascii "/"
je 0xac               # .ascii "tm"
jo 0x70               # .ascii "p/"
jae 0xa8              # .ascii "se"
arpl %si,0x65(%edx)   # .ascii "cre"
je 0xa0               # .ascii "tX

الترخيص

تم إصدار ShellNoob بموجب رخصة MIT. اطّلع على ملف COPYRIGHT.

تنزيل الأداة