Ok langsung saja kita mulai, seperti berikut.
Contoh di bawah ini, kita mencoba membuat socket Server dan Client. Cara kerja nya, si client akan mengirimkan pesan ke server, dan server akan menerima pesan tersebut dan menampilkan ke layar
Simpan nama file Server.py
#!/usr/bin/python
import socket
host = "0.0.0.0"
port = 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((host, port))
s.listen(2)
print "waiting for a client ..."
(client, (ip, sock)) = s.accept()
print "received connection from: ", ip
print "starting ECHO output ..."
data = 'dummy'
while len(data):
data = client.recv(2048)
print "client sent: ", data
client.send(data)
print "closing connection ..."
client.close()
print "shutting down server"
s.close()
Simpan nama file Client.py
#!/usr/bin/python
import socket
import sys
port = 8000
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((sys.argv[1], port))
while 1:
userInput = raw_input("please enter a string: ")
s.send(userInput)
print s.recv(2048)
s.close()
Hasil skrinsut nya dari coding di atas sebagai berikut:
Gimana, masih bisa di ikuti ya :)
Contoh di bawah ini adalah contoh lain dari socket server dan client, tapi beda nya kita hanya menyiapkan server aja, untuk client nya kita menggunakan perintah "nc" di linux.
Simpan nama file TcpServer.py
#!/usr/bin/python
import SocketServer
import socket
host = "0.0.0.0"
port = 9000
class EchoHandler(SocketServer.BaseRequestHandler):
def handle(self):
print "Got connection from: ", self.client_address
data = "dummy"
while len(data):
data = self.request.recv(1024)
print "Client sent: ", data
self.request.send(data)
print "Client kabur :)"
s = SocketServer.TCPServer((host, port), EchoHandler)
s.serve_forever()
Hasil skrinsut nya dari coding di atas sebagai berikut:
Berikut nya kita belajar untuk membuat sebuah web server sederhana dengan menggunakan python, kemudian kita akan mencoba mengakses nya melalui browser ;)
Simpan nama file WebServer.py
#!/usr/bin/python
""" Membuat HTTP Server sederhana """
import SocketServer
import SimpleHTTPServer
host = ""
port = 10000
class HttpRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
def do_GET(self):
if self.path == "/admin":
self.wfile.write("This page is only for Admins !")
self.wfile.write(self.headers)
else:
SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)
httpServer = SocketServer.TCPServer((host, port), HttpRequestHandler)
httpServer.serve_forever()
Hasil skrinsut nya dari coding di atas sebagai berikut:
Berikut nya kita belajar gimana caranya melakukan sniffing di network dengan menggunakan python.
Perhatikan contoh di bawah ini.
Simpan nama file sniff.py
#!/usr/bin/python
import socket
import struct
import binascii
# PF_PACKET : packet interface
# SOCK_RAW : raw socket
# htons(0x800) : pilih internet protocol packet ke kernel, ref /usr/include/linux/if_ether.h
rawSocket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x0800))
packet = rawSocket.recvfrom(2048)
print 'packet: ', packet
ethernetHeader = packet[0][0:14]
eth_hdr = struct.unpack('!6s6s2s', ethernetHeader) # !6s6s2s: 6 byte type string, 6 byte type string, 2 byte type string
print 'eth_hdr: ', eth_hdr
binascii.hexlify(eth_hdr[0]) # mac dst
binascii.hexlify(eth_hdr[1]) # mac src
binascii.hexlify(eth_hdr[2]) # eth type 0x800
ipHeader = packet[0][14:34]
ip_hdr = struct.unpack('!12s4s4s', ipHeader)
print "ip_hdr: ", ip_hdr
print "Source IP Address: ", socket.inet_ntoa(ip_hdr[1]) # ntoa : network to ascii
print "Destination IP Address: ", socket.inet_ntoa(ip_hdr[2])
# initial part of the tcp header
tcpHeader = packet[0][34:54]
tcp_hdr = struct.unpack('!HH16s', tcpHeader) # 1 byte port dest, 1 byte port src, 16 byte packet
print 'tcp_hdr: ', tcp_hdr
Hasil skrinsut nya dari coding di atas sebagai berikut:
Berikut nya kita belajar gimana caranya melakukan inject mengirimkan sebuah pesan ke dalam traffic di network.
Perhatikan contoh di bawah ini.
Simpan nama file injector.py
#!/usr/bin/python
import socket
import struct
rawSocket = socket.socket(socket.PF_PACKET, socket.SOCK_RAW, socket.htons(0x0800))
rawSocket.bind(("eth0", socket.htons(0x800)))
packet = struct.pack("!6s6s2s", '\xaa\xaa\xaa\xaa\xaa\xaa', '\xbb\xbb\xbb\xbb\xbb\xbb', '\x08\x00')
rawSocket.send(packet + "Hello there")
Hasil skrinsut nya dari coding di atas sebagai berikut:
Lanjut lagi belajarnya, sekarang kita belajar untuk membuat arp scanner dengan menggunakan scapy di python
Perhatikan contoh di bawah ini.
Simpan nama file ArpScanner.py
#!/usr/bin/python
from scapy.all import *
# Subnet Scanner
for lsb in range(1,50):
ip = "10.8.9." + str(lsb)
arpRequest = Ether(dst="ff:ff:ff:ff:ff:ff")/ARP(pdst=ip,hwdst="ff:ff:ff:ff:ff:ff")
arpResponse = srp1(arpRequest, timeout=1, verbose=0)
if arpResponse:
print "IP: " + arpResponse.psrc + " MAC: " + arpResponse.hwsrc
Hasil skrinsut nya dari coding di atas sebagai berikut:
Ok cukup sampe disini dulu belajar nya ;)
Semoga ga pusing :D