Cara menggunakan binascii python 3

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.

Metode dalam melakukan sniffing terdiri dari dua macam, yaitu:

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 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.

Implementasi Network Sniffer Menggunakan Python

Pada python, untuk melakukan network sniffing dapat menggunakan modul struct. Beberapa method yang terdapat pada modul struct diantaranya :

  • 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.

Contoh penggunaan kode programnya :

Nama file : struct1.py

import struct

arsip = struct.pack['hhl', 1, 2, 3]
print [arsip]
k = struct.unpack['hhl', arsip]
print k

Output program tersebut :

[email protected]:~# 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] lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:20 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1200 [1.1 KiB] TX bytes:1200 [1.1 KiB] [email protected]:~# ifconfig eth0 promisc [email protected]:~# 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 PROMISC 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] lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:20 errors:0 dropped:0 overruns:0 frame:0 TX packets:20 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:1200 [1.1 KiB] TX bytes:1200 [1.1 KiB] [email protected]:~#

Setelah muncul tulisan UP BROADCAST RUNNING PROMISC MULTICAST maka eth0 siap digunakan untuk melakukan sniffing terhadap komputer.

Berikut ini terdapat kode program sederhana untuk melakukan sniffing :

Nama File : sniff.py

import socket
import struct
import binascii

#pake socket.PF_PACKET apabila menggunakan linux
s = socket.socket[socket.AF_INET, socket.SOCK_RAW, socket.ntohs[0x0800]]

while True:
    pkt = s.recvfrom[2048]
    ethhead = pkt[0][0:14]
    eth = struct.unpack["!6s6s2s", ethhead]

    print "--------Ethernet Frame--------"
    print "desination mac", binascii.hexlify[eth[0]]
    print "Source mac", binascii.hexlify[eth[1]]

    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]

    print "Source Port ", tcp_hdr[0]
    print "Destination port ", tcp_hdr[1]
    print "Flag ", binascii.hexlify[tcp_hdr[3]]

Output program tersebut ketika dijalankan menggunakan kali linux :

Gambar 7.4 Output sniff.py

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.

Bài mới nhất

Chủ Đề