Python

Some python import and using

import string
import hashlib
import base64
import itertools
import collections
import sys
import pwn
import random
import onetimepad
print "==========upper lower=========="
nama = "SYAHRUL"
namaB = "aulia"
namaKecil = nama.lower()
namaBesar = namaB.upper()
print namaKecil
print namaBesar


print "==========replace=========="
flag = "flagCTF{apa_yaaaa{{{}}}}"
flag = flag.replace('{', '')
print flag


print "==========string=========="
a = string.punctuation
b = string.digits
c = string.ascii_lowercase
# d = string.lowercase
e = string.ascii_uppercase
# f = string.uppercase
print a
print b
print c
print e


print "==========cycle=========="
cycler = "syahrul"
cycler = itertools.cycle(cycler)
cycler_new = [cycler.next() for _ in range(20)]
print ''.join(cycler_new)


print "==========index alphabet=========="
lwc = string.lowercase.index('s')	# s lowercase
print lwc


print "==========collections=========="
collLwc = collections.deque(string.lowercase)
print collLwc
collLwc.rotate(1)
print collLwc
collLwc_new = ''.join(collLwc)
print collLwc_new
print type(collLwc_new)
collLwc_new = ''.join(list(collLwc))
print collLwc_new
print type(collLwc_new)


print "==========permutations=========="
for p in itertools.permutations([1,2,4,'s'],4):
print p


print "==========hashlib=========="
mau_encode = "5Y4hRuL"
encode1 = base64.b64encode(mau_encode)


encode2 = hashlib.sha256()
encode2.update(mau_encode)
encode2 = encode2.hexdigest()


encode3 = hashlib.sha1()
encode3.update(mau_encode)
encode3 = encode3.hexdigest()


encode4 = hashlib.md5()
encode4.update(mau_encode)
encode4 = encode4.hexdigest()


print encode1
print encode2
print encode3
print encode4


print "==========string to list=========="
a = "12, 32, 4, 5, 56, 76"
a = a.split(',')
lst.sort(key = int)
print a


text = 'a,b,c'
text = eval('[' + text + ']')
print text

RSA

# tambahan dr http://www.factordb.com/
def egcd(a, b):
	if a == 0:
		return (b,0,1)
	else:
		g,y,x = egcd(b%a, a)
		return (g, x-(b//a)*y, y)


def modinv(a, m):
	g,x,y = egcd(a, m)
	if g != 1:
		raise Exception('modular inverse does not exist')
	else:
		return (x%m)

n = 113138904645172037883970365829067951997230612719077573521906183509830180342554841790268134999423971247602095979484887092205889453631416247856139838680189062511282674134361726455828113825651055263796576482555849771303361415911103661873954509376979834006775895197929252775133737380642752081153063469135950168223
p = 11556895667671057477200219387242513875610589005594481832449286005570409920461121505578566298354611080750154513073654150580136639937876904687126793459819369
q = 9789731420840260962289569924638041579833494812169162102854947552459243338614590024836083625245719375467053459789947717068410632082598060778090631475194567
e = 65537 # public key, umumnya 65537
d = modinv(e,(p-1)*(q-1))

# chiper text
c = 108644851584756918977851425216398363307810002101894230112870917234519516101802838576315116490794790271121303531868519534061050530562981420826020638383979983010271660175506402389504477695184339442431370630019572693659580322499801215041535132565595864123113626239232420183378765229045037108065155299178074809432

print hex(pow(c,d,n))[2:-1].decode('hex')

Python PIL

# the idea is converting the image to vertical position
from PIL import Image


gambar_asli = Image.open("out-copy.jpg")
data_gambar_asli = gambar_asli.load()
print(gambar_asli.size)
# width = 27968
# height = 1
# print(type(size))
width = 304
height = 92
gambar_baru = Image.new('RGB',(width,height))
data_gambar_baru = gambar_baru.load()


i = 0
for x in range(width):
for y in range(height):
# try:
data_gambar_baru[x,y] = data_gambar_asli[i,0]
i += 1
# except:
# break


gambar_baru.save("gambar_baru3.jpg")
gambar_baru.show()

Urllib

Request Method :

delete(url, args)
Sends a DELETE request to the specified url
get(url, params, args)
Sends a GET request to the specified url
head(url, args)
Sends a HEAD request to the specified url
patch(url, data, args)
Sends a PATCH request to the specified url
post(url, data, json, args)
Sends a POST request to the specified url
put(url, data, args)
Sends a PUT request to the specified url
request(method, url, args)
Sends a request of the specified method to the specified url

Some args :
url
Required. The url of the request
data
Optional. A dictionary, list of tuples, bytes or a file object to send to the specified url
json
Optional. A JSON object to send to the specified url
files
Optional. A dictionary of files to send to the specified url
allow_redirects
Optional. A Boolean to enable/disable redirection.
Default True (allowing redirects)
auth
Optional. A tuple to enable a certain HTTP authentication.
Default None
cert
Optional. A String or Tuple specifying a cert file or key.
Default None
cookies
Optional. A dictionary of cookies to send to the specified url.
Default None
headers
Optional. A dictionary of HTTP headers to send to the specified url.
Default None
proxies
Optional. A dictionary of the protocol to the proxy url.
Default None
stream
Optional. A Boolean indication if the response should be immediately downloaded (False) or streamed (True).
Default False
timeout
Optional. A number, or a tuple, indicating how many seconds to wait for the client to make a connection and/or send a response.
Default None which means the request will continue until the connection is closed
verify
Optional. A Boolean or a String indication to verify the servers TLS certificate or not.
Default True

Post Method :
requests.post(url, data={key: value}, json={key: value}, args) 
args means zero or more of the named arguments in the parameter table below. Example:
requests.post(url, data = myobj, timeout=2.50)

url diganti saja, dibawah ini cuman contoh url

# in python2 use urllib2
import urllib.request
import urllib.parse
import urllib.robotparser
from urllib.parse import * parse_url = urlparse('https://www.geeksforgeeks.org / python-langtons-ant/') 
# BEGINNER -------------------------------


import requests


x = requests.get('https://w3schools.com/python/demopage.htm')


print(x.text)


# -------------------------------


# delete(url, args)             Sends a DELETE request to the specified url
# get(url, params, args)        Sends a GET request to the specified url
# head(url, args)               Sends a HEAD request to the specified url
# patch(url, data, args)        Sends a PATCH request to the specified url
# post(url, data, json, args) 	Sends a POST request to the specified url
# put(url, data, args) 	        Sends a PUT request to the specified url
# request(method, url, args)    Sends a request of the specified method to the specified url


request_url = urllib.request.urlopen('http://timesink.be/speedy/')
print(request_url.read())


print(parse_url)
print("\n")
unparse_url = urlunparse(parse_url)
print(unparse_url)
bot = rb.RobotFileParser()


# checks where the website's robot.txt file reside 
x = bot.set_url('https://www.geeksforgeeks.org / robot.txt')
print(x)


# reads the files 
y = bot.read()
print(y)


# we can crawl the main site 
z = bot.can_fetch('*', 'https://www.geeksforgeeks.org/')
print(z)


# but can not crawl the disallowed url 
w = bot.can_fetch('*', 'https://www.geeksforgeeks.org / wp-admin/')
print(w)


print('Headers: ---------------------')
print(request_url.getheaders())


# print the actual response data
print('Returned data: ---------------------')
print(request_url.read().decode('utf-8'))


# ARGS PAYLOAD -------------------------------
url = 'http://httpbin.org/get'


# define sample data to pass to the GET request
args = {
'color': 'Blue',
'shape': 'Circle',
'is_active': True
}


# url-encoded data before passing as arguments
data = urllib.parse.urlencode(args)


# issue the request with the data params as part of the URL
result = urllib.request.urlopen(url + '?' + data)


print('Result code: {0}'.format(result.status))
print('Returned data: ----------------------')
print(result.read().decode('utf-8'))


# POST REQS -------------------------------


url = 'http://httpbin.org/post'


# define sample data to pass to the GET request
args = {
'color': 'Blue',
'shape': 'Circle',
'is_active': True
}


# url-encoded data before passing as arguments
data = urllib.parse.urlencode(args)


data = data.encode()
result = urllib.request.urlopen(url, data=data)


print('Result code: {0}'.format(result.status))
print('Returned data: ----------------------')
print(result.read().decode('utf-8'))


# ERROR HANDLING -------------------------------


from urllib.error import HTTPError, URLError
from http import HTTPStatus


url = 'http://httpbin.org/html'


# wrap the web request in a try catch block
try:
result = urllib.request.urlopen(url)
print('Result code: {0}'.format(result.status))
if (result.getcode() == HTTPStatus.OK):
print(result.read().decode('utf-8'))


# happens on a non-success error code
except HTTPError as err:
print('There was an HTTP Error with code: {0}'.format(err.code))


# happens when there is something wrong with the URL itself
except URLError as err:
print('There has been a catastrophic failure. {0}'.format(err.reason))


# Atau
url = 'http://i-dont-exist.org/'


# wrap the web request in a try catch block
try:
result = urllib.request.urlopen(url)
print('Result code: {0}'.format(result.status))
if (result.getcode() == HTTPStatus.OK):
print(result.read().decode('utf-8'))


# happens on a non-success error code
except HTTPError as err:
print('There was an HTTP Error with code: {0}'.format(err.code))


# happens when there is something wrong with the URL itself
except URLError as err:
print('There has been a catastrophic failure. {0}'.format(err.reason))

Module & Package

python modul & package

folder : # istilahnya package
file : # istilahnya modul

  • fungsi1.py
  • fungsi2.py
  • __init__.py

Praktek

mkdir paket; touch file_utama.py paket/fungsi1.py paket/fungsi2.py paket/__init__.py

lalu misal dengan isian

file_utama.py :

import paket

print paket.a

brute = paket.fungsi1.brute(2)

for i in brute:
	print i

fungsi1.py

from string import digits
import itertools

isi = []
def brute(j):
	brute = itertools.product(digits,repeat=j)
	for i in brute:
		tmp = ''.join(i)
		isi.append(tmp)
	return isi

fungsi2.py

a = 10

__init__.py :

import fungsi1
from fungsi2 import *

Kesimpulan

file1.py   ----\ 	
  └─> tes()     \
                 \
file2.py  --------\ __init__.py -> import folder
  └─> a          /
  └─> b         /
               /
file3.py ----/
             /
dsb         /

Struct

import struct

print "nilai 0xdeadbeef :", 0xdeadbeef, "type :", type(0xdeadbeef)

print "nilai 3735928559 :", hex(3735928559), "type :", type(hex(3735928559))

# 16 bit

"nilai struct H :", struct.pack("H", 0xdead)

"nilai struct <H :", struct.pack("<H", 0xdead)

"nilai struct >H :", struct.pack(">H", 0xdead)

# 32 bit

"nilai struct I :", struct.pack("I", 0xdeadbeef)

"nilai struct <I :", struct.pack("<I", 0xdeadbeef)

"nilai struct >I :", struct.pack(">I", 0xdeadbeef)

# 64 bit

"nilai struct Q :", struct.pack("Q", 0xdeadbeef)

"nilai struct <Q :", struct.pack("<Q", 0xdeadbeef)

"nilai struct >Q :", struct.pack(">Q", 0xdeadbeef)

OS

Python | os.urandom()

OS module in Python provides functions for interacting with the operating system. OS comes under Python’s standard utility modules. This module provides a portable way of using operating system dependent functionality.

os.urandom() method is used to generate a string of size random bytes suitable for cryptographic use or we can say this method generates a string containing random characters.

Syntax: os.urandom(size)

Parameter:
size: It is the size of string random bytes

Return Value: This method returns a string which represents random bytes suitable for cryptographic use.

# Python program to explain os.urandom() method 
          
# importing os module 
import os 
      
# Declaring size
size = 5
  
# Using os.urandom() method
result = os.urandom(size) 
      
# Print the random bytes string
# Output will be different everytime
print(result) 

Output:

b'\xe2\xaf\xbc:\xdd'

Lambda

lambda arguments : expression

x = lambda a : a + 10
print(x(5)) 

x = lambda a, b : a * b
print(x(5, 6)) 

x = lambda a, b, c : a + b + c
print(x(5, 6, 2))

def myfunc(n):
    return lambda a : a * n
mydoubler = myfunc(2)
print(mydoubler(11))

def myfunc(n):
    return lambda a : a * n
mydoubler = myfunc(2)
mytripler = myfunc(3)
print(mydoubler(11))
print(mytripler(11))

li = [5, 7, 22, 97, 54, 62, 77, 23, 73, 61]
final_list = list(filter(lambda x: (x%2 != 0) , li))
print(final_list)

# Python code to illustrate 
# reduce() with lambda()
# to get sum of a list
from functools import reduce
li = [5, 8, 10, 20, 50, 100]
sum = reduce((lambda x, y: x + y), li)
print (sum)