Tampilkan postingan dengan label Python. Tampilkan semua postingan
Tampilkan postingan dengan label Python. Tampilkan semua postingan

Selasa, 13 Januari 2015

Oprek2 python ke-5

Sekarang kita belajar contoh-contoh python untuk scanning port, semoga bisa di ikuti ya ;)
Ok langsung saja kita mulai, seperti berikut.

Contoh di bawah ini, kita mencoba untuk scanning port dari suatu target IP address dengan menggunakan socket di python.

Simpan nama file portscanner.py
#!/usr/bin/python
import socket

target = input("Masukan IP address: ")
portrange = input("Masukan range port (ex: 1-10): ")

lowport = int(portrange.split('-')[0])
highport = int(portrange.split('-')[1])

print ("Scanning host ", target, "from port ", lowport, " to port ", highport)

for port in range(lowport, highport):
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    status = s.connect_ex((target, port))

    if (status == 0):
        print("Port ", port, "- open")
    else:
        print("Port ", port, "- closed")
    s.close()


Hasil skrinsut nya dari coding di atas sebagai berikut:



Di atas tampak jika socket kita bisa mendeteksi port mana saja yang terbuka dan tertutup.

Ok cukup sampe disini dulu belajar mengenali  cara kerja socket untuk scanning port ;)
Semoga sedikit mulai paham dengan cara kerja socket :D

Oprek2 python ke-4

Sekarang kita belajar contoh-contoh python yang berhubungan dengan socket dan cara kerja nya, semoga bisa di ikuti ya ;)
Ok langsung saja kita mulai, seperti berikut.

Contoh di bawah ini, kita mencoba membuat socket server nya. Cara kerja nya, si server akan mengirimkan pesan ke client, jika memang ada koneksi yang terhubung antara client dan server, serta jika si client yang memutuskan koneksi, maka server akan merespon dengan menampilkan error nya.

Simpan nama file server.py
#!/usr/bin/python
import socket, errno, time

# setup socket untuk listen koneksi yang masuk ke socketnya
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('192.168.229.128', 4444))
s.listen(1)
remote, address = s.accept()
print "Got connections from: ", address

while 1:
    # Jika koneksi berhasil, maka server akan mengirimkan pesan ke client
    try:
        remote.send("message to peer\n")
        time.sleep(1)
    # jika koneksi terputus dari client
    except socket.error, e:
        if isinstance(e.args, tuple):
            print "errno is %d" % e[0]
            if e[0] == errno.EPIPE:
                # remote peer disconnected
                print "Detected remote disconnected"
            else:
                # determine and handle different error
                pass
        else:
            print "socket error ", e
        remote.close()
        break
    # jika socket ada masalah
    except IOError,e:
        print "Got IOError: ", e
        break


Hasil skrinsut nya dari coding di atas sebagai berikut:


Di atas tampak jika koneksi dari client berhasil terhubung ke server, maka secara otomatis server akan mengirimkan pesan ke client 'message to peer'.

Tapi jika client memutuskan koneksi ke server, maka server akan meresponnya dengan error code 32, yang artinya disconnected.

Ok cukup sampe disini dulu belajar mengenali  cara kerja socketnya ;)
Semoga sedikit mulai paham dengan cara kerja socket :D

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

Rabu, 23 April 2014

Oprek2 python ke-2

Sekarang kita belajar contoh-contoh python lain dengan level belajar yang berbeda, semoga bisa di ikuti ya ;)
Ok langsung saja kita mulai, seperti berikut.

Contoh di bawah ini, kita mencoba untuk membedakan antara file dan directory dengan menggunakan python.

Simpan nama file listdirfile.py
#!/usr/bin/python

import os
os.mkdir("newdir")

for item in os.listdir("."):
  • if os.path.isfile(item):
    • print item + " is a file"
  • elif os.path.isdir(item):
    • print item + " is a directory"
  • else:
    • print "unknown"

Hasil skrinsut nya dari coding di atas sebagai berikut:

Gimana, masih bisa di ikuti ya :)
Contoh di bawah ini, kita mencoba untuk menampilkan semua file dan juga contoh membuat filter terhadap file yang akan kita tampilkan dengan menggunakan python.

Simpan nama file latglob.py
#!/usr/bin/python

import os
import glob


print "contoh tampil semuanya"
for item in glob.glob(os.path.join(".", "*")):
  • print item
print "contoh tampil hanya extensi py"
for item in glob.glob(os.path.join(".", "*.py")):
  • print item

Hasil skrinsut nya dari coding di atas sebagai berikut:

Berikut nya kita belajar untuk clon dari sebuah proses yang kita buat dengan menggunakan python.

Simpan nama file fork-demo.py
#!/usr/bin/python

# fork : clonning a process
import os
def child_process():
  • print "I am the child process and my PID is : %d" %os.getpid()
  • print "The child is exiting"
def parent_process():
  • print "I am the parent process with PID is : %d" %os.getpid()
  • childpid = os.fork()

  • if childpid == 0:
    • # we are inside the child
    • child_process()
  • else:
    • # we are inside the parent process
    • print "We are inside the parent process"
    • print "Our child has the PID : %d" %childpid

  • while True:
    • pass
parent_process()

Hasil skrinsut nya dari coding di atas sebagai berikut:

Berikut nya kita belajar tentang membuat thread dengan menggunakan python. Contoh coding ini jika di eksekusi, maka akan jalan terus sampai kita menghentikan proses eksekusi nya.
Perhatikan contoh di bawah ini.

Simpan nama file thread1.py 
#!/usr/bin/python

import thread
import time

def worker_thread(id):
  • print "Thread ID %d now alive!" %id
  • count = 1
  • while True:
    • print "Thread with ID %d has counter value %d" %(id, count)
    • time.sleep(2)
    • count += 1

for i in range(5):
  • thread.start_new_thread(worker_thread, (i,))

print "Main thread going for a infinite wait loop"
while True:
  • pass

Hasil skrinsut nya dari coding di atas sebagai berikut:

Lanjut lagi belajarnya, sekarang kita belajar tentang queue dengan menggunakan python, cara kerja nya kita akan membuat thread sebanyak 3, kemudian kita akan membagi 6 aktifitas ke masing-masing thread tersebut dengan berurutan. Seperti ilustrasi di bawah ini.
1 | 2 | 3
--|---|--
0 | 2 | 3
1 | 5 | 6
4 |    |

Perhatikan contoh di bawah ini.

Simpan nama file q1.py 
#!/usr/bin/python

import threading
import Queue
import time

class WorkerThread(threading.Thread):
        # constructor, parameter awal selalu self
        def __init__(self, queue):
                threading.Thread.__init__(self)
                self.queue = queue

        # method run utk menjalankan class nya
        def run(self):
                print "In WorkerThread"
                while True:
                        counter = self.queue.get()
                        get_worker = threading.Thread.getName(self)
                        print "Ordered to sleep for %d seconds on worker %s" %(counter,get_worker)
                        time.sleep(counter)
                        print "task %d on worker %s finished" %(counter,get_worker)
                        self.queue.task_done()

queue = Queue.Queue()


# buat thread pekerja nya
for i in range(1,4):
        print "Creating WorkerThread : %d" %i
        worker = WorkerThread(queue)
        worker.setDaemon(True)
        worker.start()
        print "WorkerThread %d Created!" %i

# buat aktifitas yg akan di lakukan oleh thread pekerja nya
for j in range(7):
        queue.put(j)

queue.join()
time.sleep(0)
print "All tasks over!"

Hasil skrinsut nya dari coding di atas sebagai berikut:

Berikut nya kita belajar untuk memblok Ctrl+C agar program yang kita eksekusi tidak bisa di hentikan dengan menggunakan python :)

Simpan nama file signal1.py 
#!/usr/bin/python

import signal

def ctrlc_handler(signum, frm):
        print "Haha! you can't kill me!"

print "Installing signal handler...."
signal.signal(signal.SIGINT, ctrlc_handler)

print "Done"

while True:
        pass

Hasil skrinsut nya dari coding di atas sebagai berikut:

Berikut nya kita belajar untuk mencoba eksekusi suatu perintah di linux dengan menggunakan python :)

Simpan nama file subprocess1.py 
#!/usr/bin/python

import subprocess

subprocess.call(['ps', 'aux'])
subprocess.call(['ls', '-al'])
subprocess.check_output(['ls', '-al'])
lines = subprocess.check_output(['ls'])
print lines
line_list = lines.split('\n')
print line_list

Hasil skrinsut nya dari coding di atas sebagai berikut:

Ok cukup sampe disini dulu belajar nya ;)

Selasa, 22 April 2014

Oprek2 python ke-1

Saat ini saya mencoba untuk berbagi dari hasil oprek2 bahasa python, yang nanti nya akan kita gunakan untuk khusus kasus pentest ;)
Untuk materi dasar nya bisa di pelajari dari internet ya ;) karena saya memang sengaja tidak membahas dasar-dasar nya.
Ok langsung saja kita mulai, seperti berikut.

Contoh di bawah ini, logika if dengan menggunakan python, cara kerja nya user di minta untuk memasukkan suatu karakter string dan kemudian akan di cek dari beberapa kondisi yang sudah kita definiskan sebelum nya.

Simpan nama file if.py
#!/usr/bin/python

name = raw_input("siapa namamu ? ")
print "namamu adalah " + name

if name == "a":
    print "kamu adalah a"
elif name == "b":
    print "kamu adalah b"
else:
    print "ga kenal :)"

Hasil skrinsut nya dari coding di atas sebagai berikut:


Gimana, ga susah kan :)
Sekarang lanjut kita belajar logika while dengan menggunakan python, cara kerja nya user di minta untuk memasukkan suatu angka dan kemudian akan terjadi perulangan jika user memasukkan angka di atas 10, perulangan akan berhenti jika angka yang di masukkan di bawah 10.

Simpan nama file while.py
#!/usr/bin/python

age = 20
while age > 10:
    age = int(raw_input("berapa usiamu ? "))
    if age > 10:
        print "> 10"
    else:
        print "< 10"


Hasil skrinsut nya dari coding di atas sebagai berikut:

Berikut nya kita belajar untuk membuat suatu function dengan menggunakan python. Cara kerja function ini hanya mengulang dengan menggunakan logika for dari suatu karakter yang di input oleh user. Karakter yang di input harus tanpa spasi ;)

Simpan nama file func.py
#!/usr/bin/python
import sys

def print5times(line_to_print):
    for count in range(0, 5):
        print line_to_print

print5times(sys.argv[1])


Hasil skrinsut nya dari coding di atas sebagai berikut:

Berikut nya kita belajar agak berat, yaitu tentang class dan inheritance dengan menggunakan python. Pada dasarnya cara kerja nya mirip dengan bahasa lain, perhatikan contoh di bawah ini.

Simpan nama file class1.py 
#!/usr/bin/python

class Calculator:
    def __init__(self, ina, inb):
        self.a = ina
        self.b = inb

    def add(self):
        return self.a + self.b

    def mul(self):
        return self.a * self.b

# inheritance
class Scientific(Calculator):
    def power(self):
        return pow(self.a, self.b)

newCalc = Calculator(10, 20)
print 'a+b: %d' %newCalc.add()
print 'a*b: %d' %newCalc.mul()

newPow = Scientific(2, 3)
print 'a+b: %d' %newPow.add()
print 'a*b: %d' %newPow.mul()

print 'a pow b: %d' %newPow.power()

Hasil skrinsut nya dari coding di atas sebagai berikut:

Lanjut lagi belajar tentang class, tapi dengan model berbeda, agar kita bisa mengetahui variasi lain dari class :D, perhatikan contoh di bawah ini.

Simpan nama file classdemo.py 
#!/usr/bin/python

class Calculator:
    def __init__(self, ina, inb):
        self.a = ina
        self.b = inb

    def add(self):
        return self.a + self.b

    def mul(self):
        return self.a * self.b

# inheritance
class Scientific(Calculator):
    def power(self):
        return pow(self.a, self.b)

def quickAdd(a, b):
    return a+b

Simpan nama file moduldemo.py
#!/usr/bin/python

import classdemo # panggil file classdemo.py
print 'Quick Add a+b:  %d' %classdemo.quickAdd(10,20)
ins = classdemo.Scientific(5,6)
print '%d' %ins.power()

Simpan nama file moduldemo2.py
#!/usr/bin/python

from classdemo import Scientific # spesific panggil class Scientific dari file classdemo.py
ins = Scientific(5,6)
print '%d' %ins.power()
:wq

Hasil skrinsut nya dari coding di atas sebagai berikut:



Ok cukup sampe disini dulu belajar nya ;)