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

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

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

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

دليل الأدوات

الفئات

عرض جميع الفئات
Loading categories
tcpcopy — أداة لتكرار الطلبات عبر الإنترنت وإعادة تشغيل تدفقات TCP، مثالية للاختبار الحقيقي، اختبار الأداء، اختبار الاستقرار، اختبار الإجهاد، اختبار الحمل، اختبار التدخين، والمزيد. | Kitploit
أدوات/GitHubGitHub/session-replay-tools/tcpcopy
البرمجة النصية والأتمتةأمن الشبكاتاختبار الاختراقالأدوات والمكونات
GitHubsession-replay-tools/tcpcopy

tcpcopy

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

عرض المستودع
4.7k1.0kمنذ سنة واحدةتمت المراجعة من قبل Kitploit

الأكثر شعبية

عرض الكل →

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

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

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

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

TCPCopy - أداة إعادة تشغيل تدفق TCP

TCPCopy هي أداة إعادة تشغيل تدفق TCP للاختبار الواقعي لتطبيقات خوادم الإنترنت.

التعرف على TCPCopy

نظرة عامة على TCPCopy للمبتدئين

نظرة عامة عامة على بنية TCPCopy

حالات استخدام اختبار TCPCopy

أمثلة التسخين المسبق لـ TCPCopy

الوصف

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

يؤثر TCPCopy بشكل طفيف على نظام الإنتاج، حيث يستهلك فقط وحدة معالجة مركزية إضافية وذاكرة وعرض نطاق ترددي. يعكس عبء العمل المُعاد إنتاجه بيئة الإنتاج من حيث تنوع الطلبات وزمن وصول الشبكة واستخدام الموارد.

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

  • اختبار الإجهاد الموزع
    • استخدم TCPCopy لتكرار حركة المرور الحقيقية لاختبار الإجهاد لبرنامج الخادم الخاص بك، وكشف الأخطاء التي تظهر فقط تحت ظروف الإجهاد العالي.
  • الاختبار الحي
    • تحقق من استقرار الأنظمة الجديدة وحدد الأخطاء التي تظهر فقط في السيناريوهات الحقيقية.
  • اختبار الانحدار
    • تأكد من أن التغييرات الحديثة لم تقدم مشكلات جديدة.
  • مقارنة الأداء
    • قارن أداء النظام عبر إصدارات أو تكوينات مختلفة.

البنية

tcpcopy

الشكل 1. نظرة عامة على بنية TCPCopy.

كما هو موضح في الشكل 1، يتكون TCPCopy من مكونين: tcpcopy و intercept. يعمل مكون tcpcopy على الخادم عبر الإنترنت، حيث يلتقط الطلبات الحية، بينما يعمل intercept على خادم المساعد، ويقوم بمهام مثل تمرير معلومات الاستجابة إلى tcpcopy. يعمل تطبيق الاختبار نفسه على الخادم الهدف.

افتراضيًا، يستخدم tcpcopy مآخذ توصيل خام لالتقاط الحزم في طبقة الشبكة (كما هو موضح بالسهام البرتقالية في الشكل). يتعامل مع عمليات مثل محاكاة تفاعل TCP، والتحكم في زمن وصول الشبكة، ومحاكاة التفاعل في الطبقة العليا. ثم يرسل الحزم إلى الخادم الهدف باستخدام مآخذ توصيل خام للإخراج (كما هو موضح بالسهام الحمراء الفاتحة في الشكل).

المهمة الوحيدة المطلوبة على الخادم الهدف هي تكوين قواعد التوجيه لتوجيه حزم الاستجابة (كما هو موضح بالسهام الخضراء الفاتحة في الشكل) إلى خادم المساعد.

دور مكون intercept هو إعادة توجيه رأس الاستجابة (افتراضيًا) إلى tcpcopy. يلتقط حزم الاستجابة، ويستخرج معلومات رأس الاستجابة، ويرسل هذه المعلومات إلى tcpcopy عبر قناة مخصصة (ممثلة بالسهام الزرقاء الفاتحة في الشكل). عند استلام رأس الاستجابة، يستخدم tcpcopy المعلومات لتعديل سمات الحزم عبر الإنترنت ويواصل إرسال الحزم اللاحقة.

من المهم ملاحظة أن الاستجابات من الخادم الهدف يتم توجيهها إلى خادم المساعد، الذي يعمل بمثابة ثقب أسود.

بداية سريعة

بالنسبة لـ intercept، لديك خياران:

  • تحميل أحدث إصدار من intercept.
  • استنساخ المستودع: git clone git://github.com/session-replay-tools/intercept.git.

بالنسبة لـ tcpcopy، لديك أيضًا خياران

  • تحميل أحدث إصدار من tcpcopy.
  • استنساخ المستودع: git clone git://github.com/session-replay-tools/tcpcopy.git.

تثبيت intercept على خادم المساعد

  1. انتقل إلى دليل intercept:
    cd intercept
  2. قم بتشغيل سكريبت التهيئة:
    ./configure
    اختياريًا، حدد أي خيارات تهيئة ضرورية.
  3. قم بتجميع الكود المصدري:
    make
  4. قم بتثبيت أداة intercept:
    make install

خيارات التهيئة لـ intercept

  • --single
    تشغيل intercept في الوضع غير الموزع.

  • --with-pfring=PATH
    تحديد مسار مكتبات مصدر PF_RING.

  • --with-debug
    تجميع intercept مع دعم التصحيح، مع حفظ السجلات في ملف.

تثبيت tcpcopy على الخادم عبر الإنترنت

  1. انتقل إلى دليل tcpcopy:
    cd tcpcopy
  2. قم بتشغيل سكريبت التهيئة:
    ./configure
    قم بتضمين أي خيارات تهيئة ضرورية حسب الحاجة.
  3. قم بتجميع الكود المصدري:
    make
  4. قم بتثبيت أداة tcpcopy:
    make install

خيارات التهيئة لـ tcpcopy

  • --offline
    إعادة تشغيل تدفقات TCP من ملف pcap.

  • --pcap-capture
    التقاط الحزم في طبقة ارتباط البيانات.

  • --pcap-send
    إرسال الحزم في طبقة ارتباط البيانات بدلاً من طبقة IP.

  • --with-pfring=PATH
    تحديد مسار مكتبات مصدر PF_RING.

  • --set-protocol-module=PATH
    تعيين tcpcopy للعمل مع وحدة بروتوكول خارجية.

  • --single
    إذا تم تكوين كل من intercept و tcpcopy باستخدام الخيار --single، فسيعمل نسخة واحدة فقط من tcpcopy مع intercept، مما يؤدي إلى أداء أفضل.

  • --with-tcmalloc استخدام tcmalloc بدلاً من malloc.

تشغيل TCPCopy

افترض أنه تم تكوين كل من tcpcopy و intercept باستخدام ./configure.

  1. على الخادم الهدف الذي يعمل عليه تطبيقات الخادم:

    قم بتكوين قواعد التوجيه لتوجيه حزم الاستجابة إلى خادم المساعد. على سبيل المثال، إذا كان 61.135.233.161 هو عنوان IP لخادم المساعد، استخدم أمر التوجيه التالي لتوجيه جميع الاستجابات من العملاء في نطاق 62.135.200.x إلى خادم المساعد:

    route add -net 62.135.200.0 netmask 255.255.255.0 gw 61.135.233.161

  2. على خادم المساعد الذي يعمل عليه intercept (مطلوب صلاحية الجذر أو صلاحية CAP_NET_RAW):

    ./intercept -F <filter> -i <device>

    لاحظ أن تنسيق المرشح هو نفس تنسيق مرشح pcap. على سبيل المثال:

    ./intercept -i eth0 -F 'tcp and src port 8080' -d

    في هذا المثال، سيلتقط intercept حزم الاستجابة من تطبيق يعتمد على TCP يستمع على المنفذ 8080، باستخدام جهاز الشبكة eth0.

    يرجى ملاحظة أن ip_forward غير ممكّن على خادم المساعد.

  3. على خادم المصدر عبر الإنترنت (مطلوب صلاحية الجذر أو صلاحية CAP_NET_RAW):

    ./tcpcopy -x localServerPort-targetServerIP:targetServerPort -s <intercept server> [-c <ip range>]

ملاحظة

  1. المنصة: تم الاختبار فقط على Linux (kernel 2.6 أو أعلى).
  2. فقدان الحزم: قد يفقد TCPCopy بعض الحزم، مما قد يؤدي إلى فقدان الطلبات.
  3. الصلاحيات: يتطلب صلاحية الجذر أو صلاحية CAP_NET_RAW (مثل setcap CAP_NET_RAW=ep tcpcopy).
  4. نوع الاتصال: يدعم حاليًا فقط الاتصالات التي يبدأها العميل.
  5. SSL/TLS: لا يدعم إعادة التشغيل للتطبيقات التي تستخدم SSL/TLS.
  6. نظرًا لطبقة إضافية من التوجيه في tcpcopy، لا يمكن أن يكون إنتاجية اتصال تطبيق واحد عالية جدًا؛ وإلا فلن يتطابق مع إنتاجية الاتصال الأصلي، خاصة في اختبارات الأداء مثل sysbench أو ab.
  7. إذا كان حجم الطلبات المنسوخة كبيرًا جدًا، فقد يصبح tcpcopy غير مستقر، مع غمر الخيط الواحد بعملية التقاط الحزم، مما يقلل بشكل كبير من فعالية النسخ. في مثل هذه الحالات، يمكن استخدام طرق مساعدة أخرى، مثل الاستفادة من انعكاس المحول باستخدام استراتيجية التقاط الحزم بطريقة التقسيم والغزو أو استخدام إعادة التشغيل دون اتصال.
  8. إعادة تشغيل جلسات MySQL: للحصول على التفاصيل، قم بزيارة mysql-replay-module أو mysql-sgt-replay-module.
  9. لا يمكن استخدام خيار ./configure --with-resp-payload لـ intercept مع خيار ./configure لـ tcpcopy.
  10. إعادة توجيه IP: تأكد من عدم تمكين ip_forward على خادم المساعد.
  11. المساعدة: لمزيد من المعلومات، قم بتشغيل ./tcpcopy -h أو ./intercept -h.

العوامل المؤثرة

يمكن لعدة عوامل أن تؤثر على TCPCopy، كما هو مفصل في الأقسام التالية.

1. واجهة الالتقاط

بشكل افتراضي، يستخدم tcpcopy واجهة إدخال مآخذ توصيل خام لالتقاط الحزم في طبقة الشبكة على الخادم عبر الإنترنت. تحت الحمل العالي، قد يقوم نواة النظام بإسقاط بعض الحزم. إذا تم تكوينه باستخدام --pcap-capture، فإن tcpcopy يلتقط الحزم في طبقة ارتباط البيانات ويمكنه ترشيح الحزم في النواة. يمكن أن يؤدي استخدام PF_RING مع التقاط pcap إلى تقليل فقدان الحزم. للحصول على التقاط مثالي، ضع في اعتبارك عكس حزم الإدخال عبر محول وتوزيع حركة المرور عبر أجهزة متعددة باستخدام موازن تحميل.

2. واجهة الإرسال

يستخدم tcpcopy افتراضيًا واجهة إخراج مآخذ توصيل خام لإرسال الحزم في طبقة الشبكة إلى الخادم الهدف. لتجنب مشاكل ip_conntrack أو تحسين الأداء، استخدم --pcap-send لإرسال الحزم في طبقة ارتباط البيانات بدلاً من ذلك.

3. في الطريق إلى الخادم الهدف

قد تواجه الحزم التي يرسلها tcpcopy تحديات قبل الوصول إلى الخادم الهدف. إذا كان عنوان IP المصدر هو عنوان IP للمستخدم النهائي (افتراضيًا)، فقد تقوم أجهزة الأمان بإسقاط الحزمة باعتبارها غير صالحة أو مزيفة. لاختبار ذلك، استخدم tcpdump على الخادم الهدف. إذا تم إرسال الحزم بنجاح داخل نفس قطاع الشبكة ولكن ليس عبر القطاعات، فقد يتم إسقاط الحزم في منتصف الطريق.

لمعالجة ذلك، قم بنشر tcpcopy والتطبيقات الهدف و intercept داخل نفس قطاع الشبكة. بدلاً من ذلك، استخدم وكيلاً في نفس القطاع لإعادة توجيه الحزم إلى الخادم الهدف في قطاع آخر.

قد يواجه نشر تطبيق الخادم الهدف على جهاز افتراضي داخل نفس القطاع هذه المشكلات أيضًا.

4. نظام تشغيل الخادم الهدف

قد يستخدم الخادم الهدف rpfilter للتحقق من شرعية عناوين IP المصدر، وإسقاط الحزم التي تعتبر مزيفة. إذا تم التقاط الحزم بواسطة tcpdump ولكن لم تتم معالجتها، فتحقق من إعدادات rpfilter واضبطها أو أزلها حسب الحاجة. قد تؤثر مشكلات أخرى مثل إعدادات iptables أيضًا على tcpcopy.

5. التطبيقات على الخادم الهدف

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

6. نظام تشغيل خادم المساعد

تأكد من تعيين ip_forward على false على خادم المساعد لمنعه من توجيه الحزم وضمان عمله كثقب أسود.

التحليل المنطقي للمشكلة حيث يفشل خادم الاختبار في استلام البيانات

أولاً، استخدم telnet على الخادم عبر الإنترنت للاتصال بمنفذ خادم الاختبار. سيتحقق هذا مما إذا كان مسار الشبكة متاحًا. إذا فشل الاتصال، قم بحل هذه المشكلة قبل متابعة التشخيصات التالية.

افترض أنه أثناء اختبار tcpcopy، لا يتلقى التطبيق على خادم الاختبار أي طلبات. حدد ما إذا كانت حزمة المصافحة الأولية (أي حزمة SYN) تصل إلى خادم الاختبار.

1. إذا وصلت حزمة SYN إلى خادم الاختبار، فمن الممكن وجود السيناريوهات التالية:

1.1 تم التقاط حزم SYN فقط: إذا كنت تستخدم tcpdump على خادم الاختبار ورأيت أن حزم SYN المنسوخة تصل، فهذا يشير إلى أنها وصلت إلى طبقة ارتباط البيانات لخادم الاختبار. إذا أظهر netstat عدم وجود اتصالات للتطبيق، فهذا يعني أنه تم إسقاط الحزم في طبقة IP. تحقق مما إذا كان rpfilter مهيئًا - إذا كان كذلك، قم بإزالة هذا الإعداد، ويجب حل المشكلة بشكل عام. إذا لم يتم تعيين rpfilter، فتأكد من عدم وجود تعارضات في إعدادات iptables واضبط القواعد ذات الصلة إذا لزم الأمر.

1.2 SYN متبوعة بحزمة RST: إذا تم إرسال حزمة SYN فورًا بعدها حزمة إعادة تعيين (RST) (مع أقل من ثانية واحدة بينهما في نفس الجلسة)، فهذا يشير إلى وجود مشكلة توجيه أو تعارض، مما يؤدي إلى إرسال حزمة الاستجابة مباشرة إلى العميل الحقيقي.

1.3 خادم الاختبار يستجيب بحزمة المصافحة الثانية: قم بالتقاط الحزم على خادم المساعد للتحقق مما إذا كانت حزمة المصافحة الثانية قد وصلت إليه.

  • إذا لم تصل الحزمة إلى خادم المساعد، فهذا يشير إلى أن إعداد التوجيه غير فعال، وبالتالي لا يمكن لـ intercept التقاط حزمة المصافحة الثانية، مما يمنع المزيد من إعادة التشغيل. الحل المحتمل هو تشغيل intercept مباشرة على خادم الاختبار (ملاحظة: حافظ على إعداد التوجيه دون تغيير، وتأكد من أن المعامل -c في tcpcopy لم يتم تعيينه على عنوان IP الذي يستخدمه tcpcopy للاتصال بـ intercept، وإلا فلن يتصل tcpcopy بـ intercept).

  • إذا تم التقاط حزمة المصافحة الثانية، تحقق مما إذا كان ip_forward ممكّنًا. إذا كان ممكّنًا، قم بتعطيل هذا الإعداد، لأنه قد يؤدي إلى إرسال حزم الاستجابة مباشرة إلى العميل، مما يتداخل مع الاختبار.

2. إذا لم تصل حزمة SYN إلى خادم الاختبار، فهناك سيناريوهان محتملان:

2.1 تم التقاط حزم tcpcopy على الخادم عبر الإنترنت: إذا قمت بالتقاط حزم tcpcopy المُعاد توجيهها باستخدام tcpdump على الخادم عبر الإنترنت، ولكن الحزم لا تصل إلى خادم الاختبار، فهذا يشير إلى أنها تم إسقاطها على طول الطريق. يمكنك محاولة استخدام المعامل -c في tcpcopy لتعديل عنوان IP للعميل إلى عنوان صالح. في الحالات القصوى، قم بتعيين عنوان IP للعميل إلى عنوان IP للجهاز الذي يعمل عليه tcpcopy (ملاحظة: قد تنشأ مشاكل NAT، وإذا كان intercept يعمل على خادم الاختبار، فتأكد من أن المعامل -c في tcpcopy لم يتم تعيينه على عنوان IP الذي يستخدمه tcpcopy للاتصال بـ intercept، وإلا فلن يتصل tcpcopy بـ intercept).

2.2 لم يتم التقاط حزم tcpcopy على الخادم عبر الإنترنت:

  • إذا لم يتم العثور على معلومات all clt:xx في سجل tcpcopy، فهذا يشير إلى أن tcpcopy غير قادر على التقاط الحزم في طبقة IP. في هذه الحالة، استخدم الخيار --pcap-capture لالتقاط الحزم في طبقة ارتباط البيانات. قم بتعيين المعامل -F (على سبيل المثال، 'tcp and dst port 80 and dst host 10.100.1.2') والمعامل -i (واجهة الشبكة) لتجاوز الالتقاط في طبقة IP.

  • إذا تم رؤية all clt:xx، حيث xx > 0، في سجل tcpcopy، فهذا يعني أن tcpcopy التقط الحزمة بنجاح، ولكن تمت تصفيتها بواسطة طبقة IP على الخادم عبر الإنترنت. تحقق من قيود iptables على سلسلة الإخراج، من بين إعدادات أخرى. إذا كانت iptables هي المشكلة ولا يمكن تعديلها على الخادم عبر الإنترنت، فاستخدم الخيار --pcap-send لإرسال الحزم من طبقة ارتباط البيانات.

تاريخ الإصدارات

  • 2014.09 v1.0 تم إصدار TCPCopy
  • 2024.09 v1.0 المصدر المفتوح بالكامل يستخدم اللغة الإنجليزية

الأخطاء وطلبات الميزات

هل لديك خطأ أو طلب ميزة؟ يرجى فتح مشكلة جديدة. قبل فتح أي مشكلة، يرجى البحث عن المشكلات الموجودة.

الدعم

إذا وجدت هذا المشروع مفيدًا، فكر في التبرع: Donate

حقوق النشر والترخيص

حقوق النشر 2025 بموجب ترخيص BSD.

شكر وتقدير

كان العديد من الأفراد حاسمين في كتابة هذا المستند من خلال مراجعة المسودات وتقديم الملاحظات. أنا ممتن بشكل خاص لمساهمات Hongshen Wang.

تنزيل الأداة

  • --with-debug
    تجميع tcpcopy مع دعم التصحيح، مع حفظ السجلات في ملف.

  • على سبيل المثال (بافتراض أن 61.135.233.160 هو عنوان IP للخادم الهدف):

    ./tcpcopy -x 80-61.135.233.160:8080 -s 61.135.233.161 -c 62.135.200.x

    في هذا المثال، يلتقط tcpcopy الحزم على المنفذ 80 من الخادم الحالي، ويغير عنوان IP للعميل إلى عنوان من نطاق 62.135.200.x، ويرسل هذه الحزم إلى المنفذ 8080 على الخادم الهدف (61.135.233.160). كما يتصل بـ 61.135.233.161 لطلب intercept لإعادة توجيه حزم الاستجابة. على الرغم من أن معامل -c اختياري، إلا أنه يستخدم هنا لتبسيط قواعد التوجيه.