سؤال

لدي إطار إيثرنت خام أريد إرساله

كيف يجب أن أفعل ذلك؟حاولت إرسال قيم سداسية عشرية للإطار ولكني مازلت غير قادر على التحكم في رأس الحزمة التي تحتوي على عنوان ومنافذ src/dst

import socket

# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
addr = ('46.165.204.237', 10000)

# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind((HOST, 0))

netpacket = '\xDE\xB0\x7B\xE5\xA7\xCD\x4C\x17\xEB\x07\x0D\xBC\x08\x00\x45\x00\x00\x92\x68\x94\x40\x00\x78\x06\xDC\x94\x2E\xA5\xCC\xED\xC0\xA8\x01\x02\x27\x10\x07\xC8\x04\xD7\xEA\xEA\xC3\x2A\x4E\xA2\x50\x18\x01\x02\x39\xB0\x00\x00\x3C\x3F\x78\x6D\x6C\x20\x76\x65\x72\x73\x69\x6F\x6E\x3D\x22\x31\x2E\x30\x22\x3F\x3E\x3C\x50\x61\x63\x6B\x65\x74\x3E\x3C\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E\x3E\x33\x3C\x2F\x6F\x70\x65\x72\x61\x74\x69\x6F\x6E\x3E\x3C\x64\x61\x74\x61\x3E\x33\x24\x30\x24\x30\x24\x30\x24\x30\x24\x30\x3C\x2F\x64\x61\x74\x61\x3E\x3C\x65\x78\x74\x64\x61\x74\x61\x3E\x3C\x2F\x65\x78\x74\x64\x61\x74\x61\x3E\x3C\x2F\x50\x61\x63\x6B\x65\x74\x3E'
#netpaket = netpacket.encode('UTF-8')
s.sendto(netpacket.encode('UTF-8'), addr)

هل توجد في بايثون وظيفة مثل sendRaw() أو sendRawFrame()؟

أعلم أن scapy يمكنه التعامل مع هذا، لكني أحتاج إلى القيام بذلك عدة مرات، وفي كل مرة باستخدام بيانات الحمولة النافعة المختلفة.كيف يمكن أتمتة scapy؟أعني أن برنامج python النصي الذي يقوم بتشغيل scapy ينشئ حزمة بها بعض الحمولة ويرسلها.

scapy.py
packet1 = IP(dst='46.165.204.237')/TCP(sport=1992, dport=10000)/'<?xml version="1.0"?><Packet><operation>99</operation><data><![CDATA[8 fast]]></data><extdata><![CDATA[]]></extdata></Packet>.'
send(packet1)

الهدف منه هو إرسال حزمة من منفذ قيد الاستخدام بالفعل.إذا كان هناك حل أفضل لهذه المشكلة؟

خارج الموضوع:ربما يعرف شخص ما كيفية إرسال الحزم من خلال معرف المقبس المفتوح في النوافذ (ليس فقط في بيثون)؟

هل كانت مفيدة؟

المحلول

يمكنك تزويد Scapy بمدخلات أولية باستخدام ملف Raw طبقة.

netpacket = Raw('\xDE\xB0...')

لإرسال حزم على طبقة الإيثرنت - راجع وثائق ل sendp.

sendp(netpacket, iface="eth1")
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top