Python yordamida Tarmoq Paketlarini Qayta Ishlash va Tahlil Qilish
Last updated
Last updated
Tarmoq paketlarini tahlil qilish – bu tarmoqdagi ma’lumot almashinuvini kuzatish, qayta ishlash va xavfsizlik tahlilini amalga oshirish uchun paketlarni o‘rganish jarayonidir. Paketlarni tahlil qilish uchun Python’da scapy
kutubxonasidan foydalanamiz, bu kutubxona paketlarni yaratish, tahrirlash va tahlil qilish imkonini beradi.
Paketlarni kuzatish: Tarmoq orqali kelayotgan paketlarni kuzatish va yozib olish.
Ma’lumotlarni ajratish: Paketlardagi muhim ma’lumotlarni ajratish.
Xavfsizlik tahlili: Potensial hujum yoki zaifliklarni aniqlash.
scapy
kutubxonasini o‘rnatish uchun quyidagi buyruqdan foydalaning:
scapy
- bu kuchli va keng qo‘llaniladigan tarmoq paketlarini tahlil qilish kutubxonasi bo‘lib, u paketlarni yaratish, qayta ishlash va tahlil qilish imkonini beradi.
Paketlarni tahlil qilish (TCP, UDP, ICMP).
Paketlarni filtr yordamida ajratish va ma’lumot olish.
Tarmoq tekshiruvi va xavfsizlik tahlili uchun turli tarmoq hujumlarini sinab ko‘rish.
Quyida sniff
funksiyasidan foydalanib tarmoq paketlarini kuzatish usuli ko‘rsatilgan. sniff
funksiyasi ma’lum miqdordagi paketlarni qabul qiladi va ularni ekranga chiqaradi.
from scapy.all import sniff
: scapy
kutubxonasidagi sniff
funksiyasini import qiladi. Bu funksiya paketlarni tutib olish imkonini beradi.
def packet_callback(packet):
: packet_callback
nomli funksiyani yaratib, unda har bir qabul qilingan paketni qayta ishlaymiz.
print("Paket:", packet.summary())
: Har bir paketning qisqacha ma’lumotini chiqarish uchun summary()
metodidan foydalanadi.
sniff(prn=packet_callback, count=10)
: 10 ta paketni kuzatadi va har bir paketda packet_callback
funksiyasini chaqiradi.
Filtrlash yordamida ma’lum turdagi paketlarni ajratish va ulardan kerakli ma’lumotlarni olish mumkin. Masalan, faqat ICMP paketlarni yoki TCP port 80 ga yuborilgan paketlarni kuzatish.
if packet.haslayer("IP")
: Agar paketda IP
qatlami mavjud bo‘lsa, shart bajariladi.
print("IP Paketi:", packet["IP"].src, "->", packet["IP"].dst)
: IP manzillarini olish uchun src
va dst
atributlaridan foydalanamiz.
sniff(filter="icmp", prn=packet_callback, count=10)
: Faqat ICMP paketlarini kuzatish uchun filter
parametriga icmp
qiymatini o‘rnatamiz.
Tarmoq paketlari bir nechta qatlami bor (masalan, Ethernet, IP, TCP), va har bir qavat o‘ziga xos ma’lumotlarni saqlaydi. Quyidagi misolda paketlardan manzil va port ma’lumotlarini ajratib olamiz.
if packet.haslayer("IP") and packet.haslayer("TCP")
: Agar paketda IP
va TCP
qavati mavjud bo‘lsa, shart bajariladi.
print("IP:", packet["IP"].src, "->", packet["IP"].dst)
: Paket ichidagi manzillarni chiqaradi.
print("Port:", packet["TCP"].sport, "->", packet["TCP"].dport)
: TCP qavatidagi boshlang‘ich va manzil portlarini chiqaradi.
scapy
paketlarni saqlash va yuklash imkoniyatiga ega. Saqlangan paketlarni qayta ishlash va tahlil qilish qulaydir.
wrpcap("packets.pcap", packet, append=True)
: packets.pcap
nomli faylga paketlarni yozadi. append=True
esa fayl oxiriga yangi paket qo‘shishni ta’minlaydi.
packets = rdpcap("packets.pcap")
: packets.pcap
faylidan barcha paketlarni yuklaydi va ularni packets
o‘zgaruvchisiga saqlaydi.
for packet in packets
: Saqlangan har bir paketni summary()
yordamida chiqaradi.
TCP va UDP paketlarni tahlil qilish uchun quyidagi misoldan foydalanamiz. Bu paketlar bilan bog‘liq asosiy ma’lumotlarni ajratish imkonini beradi.
if packet.haslayer("TCP")
: Paketda TCP qavati mavjudligini tekshiradi.
print("TCP Paketi:", ...)
: TCP paketining boshlang‘ich va manzil portlari bilan IP manzillarini chiqaradi.
elif packet.haslayer("UDP")
: Paketda UDP qavati mavjudligini tekshiradi.
sniff(filter="tcp or udp", prn=packet_callback, count=10)
: Faqat TCP va UDP paketlarini kuzatadi.
scapy
yordamida tarmoqdagi ochiq portlarni aniqlash yoki serverlarning javob berish holatini tekshirish mumkin.
packet = IP(dst=ip) / TCP(dport=port, flags="S")
: IP
va TCP
qavatlarini birlashtirib SYN so‘rovi yuboradi.
sr1(packet, timeout=1, verbose=0)
: Paketni yuboradi va javobni qabul qiladi. timeout=1
javobni 1 soniyada kutadi, verbose=0
esa natijani konsolga yozmaydi.
response.haslayer(TCP) and response.getlayer(TCP).flags == 0x12
: Agar javob TCP SYN-ACK bo‘lsa, port ochiq deb chiqadi.
scapy
yordamida tarmoq paketlarini tahlil qilish, filtrlash va tarmoq xavfsizligi uchun zaifliklarni aniqlash imkonini beradi. Quyidagi amaliyotlarga e’tibor qaratish kerak:
Ma’lumot xavfsizligini saqlash: Faqat ruxsat etilgan tarmoqlarda kuzatishlar o‘tkazing.
Filtr va sinov funksiyalaridan foydalanish: Maxsus filtrlardan foydalanib, qiziqarlilik darajasiga qarab paketlarni ajratib oling.
Tahlil qilish usullarini takomillashtirish: Ma’lumotlarni tahlil qilish va hisobot qilish imkoniyatlarini oshiring.
Quyida yuqoridagi barcha misollarni birlashtirgan to‘liq kod keltirilgan. Ushbu kodda tarmoq paketlarini kuzatish, filtrlash, ma’lumotlarini ajratish, saqlash va tahlil qilish amaliyotlarini o‘z ichiga olgan dastur yozilgan.
Tarmoq paketlarini kuzatish va yozib olish: Dastlab 10 ta paketni kuzatamiz va packets.pcap
fayliga yozib olamiz.
Saqlangan paketlarni yuklash va chiqarish: Saqlangan paketlarni fayldan yuklab olish va ularni chiqarish.
Filtrlangan paketlarni kuzatish (ICMP): Faqat ICMP paketlarni kuzatish.
Paketlardan muhim ma'lumotlarni ajratish (TCP): TCP paketlaridagi IP va port ma’lumotlarini ajratish.
TCP va UDP paketlarni tahlil qilish: TCP va UDP paketlarini ajratib, boshlang‘ich va manzil portlarini chiqarish.
Portlarni skanerlash: TCP SYN so‘rovini yuborish orqali IP adresdagi ochiq portlarni aniqlash.
Eslatma: Bu kodni faqatgina ruxsat etilgan tarmoqlarda va sinov maqsadlarida ishlatish tavsiya etiladi.