M7 Sniffing Python
M7 Sniffing Python
Sniffing merupakan proses untuk melakukan monitoring dan meng"capture" semua paket data
yang melewati jaringan menggunakan software/aplikasi maupun perangkat keras (hardware).
Umumnya sniffing dilakukan oleh seorang network administrator untuk mengamati
penggunaan jaringan, namun kenyataannya saat ini begitu banyak aplikasi yang mudah
diperoleh, maka banyak juga pengguna yang melakukan iseng terhadap penggunaan
jaringan.
• Aktif Sniffing
Aktif sniffing merupakan tindakan yang dilakukan pada jaringan berbasis switch. Switch
tentunya lebih pintar daripada hub, secara fungsinya. Serangan ini dilakukan dengan cara
mengirimkan packet ke komputer target setelah memeriksa table mac address. Teknik aktif
sniffing umumnya menggunakan cara ARP Spoofing.
• Pasif Sniffing
Pasif sniffing merupakan tindakan sniffing yang dilakukan dengan melakukan monitoring
paket dari jaringan yang berbasis hub. Dengan menempatkan software packet sniffer pada
jaringan menggunakan metode promiscuous, seorang attacker dapat melakukan capture
paket data dalam subnet jaringan tersebut.
• struct.pack(fmt, v1, v2, ...) : Method ini akan mengembalikan string yang mengandung
nilai v1, v2 dan lain-lain, sedangkan paket yang diterima akan mengacu pada format
yang diberikan.
• struct.unpack(fmt, string) : Method ini akan membongkar isi string sesuai dengan
format yang diberikan.
arsip = struct.pack('hhl', 1, 2, 3)
print (arsip)
k = struct.unpack('hhl', arsip)
print k
Output program tersebut :
Gambar 7.1 Contoh Penggunaan Modul Struct
Kode program tersebut menggunakan method pack dan unpack, sehingga kalau
diimplementasikan pada konsep pemrograman socket, hasilnya adalah sebagai berikut:
host = "0.0.0.0"
port = 12347
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(1)
conn, addr = s.accept()
print "Menerima koneksi dari ip :", addr
arsip = struct.pack('hhl', 1, 2, 3)
conn.send(arsip)
conn.close()
Nama file : unstructt.py sebagai client
import socket
import struct
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "0.0.0.0"
port = 12347
s.connect((host, port))
msg = s.recv(1024)
print msg
print struct.unpack('hhl', msg)
s.close()
Output kode program apabila kedua file tersebut dijalankan:
Gambar 7.2 Implementasi Struct pada method pack dan unpack
Untuk melakukan setting interface card agar menjadi mode promiscuous mode adalah
sebagai berikut :
Perintahnya adalah :
root@kali:~# ifconfig
eth0 Link encap:Ethernet HWaddr 08:00:27:bf:ed:99
inet6 addr: fe80::a00:27ff:febf:ed99/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:34 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:0 (0.0 B) TX bytes:6358 (6.2 KiB)
root@kali:~#
Setelah muncul tulisan UP BROADCAST RUNNING PROMISC MULTICAST maka eth0 siap
digunakan untuk melakukan sniffing terhadap komputer.
while True:
pkt = s.recvfrom(2048)
ethhead = pkt[0][0:14]
eth = struct.unpack("!6s6s2s", ethhead)
binascii.hexlify(eth[2])
ipheader = pkt[0][14:34]
ip_hdr = struct.unpack("!12s4s4s", ipheader)
print "-----------IP------------------"
print "Source IP", socket.inet_ntoa(ip_hdr[1])
print "Destination IP", socket.inet_ntoa(ip_hdr[2])
print "---------TCP----------"
tcpheader = pkt[0][34:54]
tcp_hdr = struct.unpack("!HH9ss6s", tcpheader)
Pada gambar 4.7, terlihat bahwa percobaan dalam melakukan sniffing masih gagal karena
alamat mac address baik sumber dan tujuan belum dapat terbaca menggunakan beberapa
modul di python. Ini murni karena programmer belum mahir menguasai konsep networking di
python.
Tugas Praktikum
Berdasarkan kode program yang sudah dituliskan, silakan berikan keterangan dan
penjelasan, maksud dari kode program tersebut. Berikan tampilan output! Tampilan harus
berbeda dengan milik teman-temannya.