القائمة الرئيسية

الصفحات

التعرف على sniffing socket المهمة في الشبكات في بايثون Python الدرس |23|

 

python


مقدمة الدرس

سنستخدم في هذا الدرس الـ 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)

6

شرح السكربت

عملنا 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.

معنى التعليقات الذي في الأعلى

ethnet header 0:14 !6s6s2s
الـ ethnet header يأخذ بايتس من 0 حتى 14 و الفورمات له هي !6s6s2s تعني 6+6+2 تساوي 14 اي من 0 حتى 14 و علامة التعجب تكلمنا عنها بدروس سابقة انها تستخدم مع الشبكات.

ipheader 14:34    !12s4s4s
يعني ipheader يأخذ من 14 حتى  34 و باقي الشرح نفس سابقتها.

tcpheader 34:54   !HH16s
الـ tcpheader يأخذ من 34 حتى 54 و الفورمات لها !HH16 و كل حرف H يأخذ 2 بايتس.

%25D8%25AA%25D8%25AD%25D9%2585%25D9%258A%25D9%2584%2B%25D8%25B3%25D9%2583%25D8%25B1%25D8%25A8%25D8%25AA 


هل اعجبك الموضوع :

تعليقات

التنقل السريع