recent
أخبار ساخنة

إنشاء جلسة sniffing عن طريق مكتبات struct و socket في بايثون الدرس |23|

الصفحة الرئيسية
 

إنشاء جلسة sniffing عبر socket و struct

سوف نستخدم في هذا الدرس الـ sniffing لكن الأفضل نستخدم مكتبة socket أفضل من scapy في الويندوز.

لكن توجد مشاكل بتنزيل سكابي على إصدارات ويندوز المُختلفة, سكابي تكون أفضل على لينكس linux, سوف نستخدم في هذا الدرس socket و struct.

لفتح جلسة sniffing يجب اولاً أن نستخدم الشل بصلاحيات adminstrator.
import socket
import struct
#ethnet header 0:14 !6s6s2s
#ipheader 14:34 !12s4s4s
#tcpheader 34:54 !HH16s
s = socket.socket(socket.AF_INET,socket.SOCK_RAW,socket.IPPROTO_IP)
s.bind(("127.0.0.1",0))
s.setsockopt(socket.IPPROTO_IP,socket.IP_HDRINCL,1)
s.ioctl(socket.SIO_RCVALL,socket.RCVALL_ON)
while True:
data = s.recvfrom(10000)
#ethernet header
ethernetheader = data[0][0:14]
eth_hdr = struct.unpack("!6s6s2s",ethernetheader)
print(eth_hdr[0])
print(eth_hdr[1])
print(eth_hdr[2])
#ipheader
ipheader = data[0][14:34]
print(ipheader)
#tcpheader
tcpheader = data[0][34:54]
#tcp_h = struct.unpack("!HH16s",tcpheader)
print(tcpheader)

شرح السكربت السابق
قُمنا في البداية بإستدعاء للمكتبات عبر الأمر import و المكتبات المطلوبة هي socket و struct و أنشأنا متغير من أجل تعيين الجلسة s = socket.socket و كتبنا له الأذرفاميلي AF_INET يعني IPV4 و SOCK_RAW تعني عمل sniff للـ raw و socket.IPPROTO_IP إخترنا له الآيبي بروتوكول.

و بعدها عملنا bind على local host لدينا و البورت حددناه 0 و setsockopt نحدد له الآيبي بروتوكول لدينا و أعطينا قيمة IP_HDRINCL القيمة 1 و هذه الخطوات هي خطوات أساسية مهمة في الويندوز و لا يجب الإستغناء عنها.

و الميثود ioctl يجب ايضاً أن تكون مفعلة في و يندوز من أجل عمل إستقبال rcv للبيانات و ممكن أن تكون off لكن نحن هنا وضعناها on و بعدها خزننا كل هذا في data و صورة الداتا تكون 10000.

تعليقات سكربت الجلسة

  1. تعليق ethnet header 0:14 !6s6s2s : يأخذ بايتس Bytes من 0 حتى 14 و الفورمات له هي !6s6s2s تعني 6+6+2 تساوي 14 أي من 0 حتى 14 و علامة التعجب تكلمنا عنها بدروس سابقة أنها تستخدم مع الشبكات.
  2. تعليق ipheader 14:34  !12s4s4s : يعني ipheader يأخذ من 14 حتى 34 و باقي الشرح نفس سابقتها.
  3. تعليق tcpheader 34:54 !HH16s : الـ tcpheader يأخذ من 34 حتى 54 و الفورمات لها !HH16 و كل حرف H يأخذ 2 بايتس Bytes.

google-playkhamsatmostaqltradent