سؤال

أحاول تنفيذ 3-واي-هادنشاك مع مقبس الخام في بيثون واستخدام سكابي.

الرمز هو:

s=socket.socket(socket.AF_PACKET, socket.SOCK_RAW, socket.IPPROTO_TCP)
ss=StreamSocket(s)
iph=IPheader()
syn = TCP(sport=TCP_SOURCE_PORT,dport=TCP_DESTINATION_PORT, flags="S")
synack = ss.sr1(iph/syn)
myack = iph/TCP(dport=synack[TCP].sport, sport=synack[TCP].dport, seq=synack[TCP].ack, ack=synack[TCP].seq+1, flags="A")
ss.send(myack)

طريقة إيفيدر () إرجاع رأس إب سكابي.

عند تشغيل البرنامج النصي أحصل على هذا الخطأ:

ERROR: --- Error in child 3057
Traceback (most recent call last):
File "/usr/lib/python2.7/dist-packages/scapy/sendrecv.py", line 89, in sndrcv
pks.send(p)
File "/usr/lib/python2.7/dist-packages/scapy/supersocket.py", line 34, in send
return self.outs.send(sx)
error: [Errno 6] No such device or address
هل كانت مفيدة؟

المحلول

أرى اثنين من المشاكل المحتملة مع التعليمات البرمجية الخاصة بك:

  • قبل التذرع StreamSocket() تحتاج إلى إنشاء اتصال بمقبس عادي.لذلك تحتاج إلى إجراء اتصال ، شيء من هذا القبيل s.connect(("10.1.1.1",9000)) قبل الخط ss=StreamSocket(s).يمكن العثور على مزيد من المعلومات هنا

  • قد تحتاج إلى تصحيح نوع المقبس الأساسي.أود أن أقترح شيئا مثل s=socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_TCP).لمزيد من المعلومات تحقق هذا

نصائح أخرى

الجهاز لا يستجيب لحزمة SYN الخاصة بك لأن المقبس الخام لا يفعل ذلك.عليك أن ترسل SYN-ACK يدويا.أيضا، WireShark و TCP عرض أرقام التسلسل كنسب.من أجل إظهار الرقم الفعلي، يجب عليك تشغيل هذا الخيار.ثالثا، يمكنك تعيين رقم التسلسل يدويا أو عشوائيا باستخدام

giveacodicetagpre.

أو

giveacodicetagpre.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top