Rabu, 30 April 2014

Oprek2 python ke-3

Sekarang kita belajar contoh-contoh python yang berhubungan dengan network, semoga bisa di ikuti ya ;)
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

Tidak ada komentar:

Posting Komentar