Showing posts with label Programming. Show all posts
Showing posts with label Programming. Show all posts

Monday, April 25, 2016

[Python] Pycrypto: Python Cryptography Toolkit - Crypto.Cipher

Encryption Algorithms, menggunakan input string dan key untuk menghasilkan ciphertext. Chipertext memiliki 2 type antara lain Block Cipher dan Stream, untuk Block Ciphers bekerja pada ukuran 8 atau 16 byte, sedangkan stream ciphers bekerja pada bit-by-bit.

[Python] Pycrypto: Python Cryptography Toolkit - Crypto.Hash

Pycrypto atau Python Cryptography toolkit, merupakan sebuah modul untuk fungsi kriptograpi pada python. Dari sumber developer pycrypto, module ini memiliki berbagai fungsi enkripsi seperti hash functions yang terdiri dari SHA256, RIPEMD160 dan berbagai algoritma enkripsi seperti AES,DES, RSA dan E1Gamal dan lain - lainya.

Cypto.Hash: Hash Functions
Fungsi hash atau algoritma hash mengambil sebuah strings sebagai input dan menghasilkan fixed-length string berdasarkan input, bisa dikatakan output string disebut nilai hash. Nilai hash dari fungsi hash memiliki panjang yang tetap(digest length) misalkan 128-bit untuk MD2,MD4,MD5,RIPEMD 160-bits dan SHA160-bits. Berikut contoh penggunaan pycrypto.

[Python] Informasi Service dari Port dan Network Protocol

Penggunaan socket.getservbyport(), untuk memberikan nama service, ketika kita menampilkan port yang diberikan.


#!/usr/bin/python2.7
#simpan dengan nama service.py
import socket

def find_service_name():
    list_port=[22,23,25,80,21,53,110,123,137,138,139,194,220]
    for port in list_port:
        print "Port: %s => service name %s" %(port, socket.getservbyport(port,'tcp'))

if __name__ == '__main__':
    find_service_name()


Pada socket.getservbyport(port,'tcp'), didefinisikan untuk port (22,23,25,80,21,53,110,123,137,138,139,194,220) dengan jenis port yaitu protokol tcp


$ python service.py 
Port: 22 => service name ssh
Port: 23 => service name telnet
Port: 25 => service name smtp
Port: 80 => service name http
Port: 21 => service name ftp
Port: 53 => service name domain
Port: 110 => service name pop3
Port: 123 => service name ntp
Port: 137 => service name netbios-ns
Port: 138 => service name netbios-dgm
Port: 139 => service name netbios-ssn
Port: 194 => service name irc
Port: 220 => service name imap3

Sunday, April 17, 2016

[Python] Mengetahui IP dari Sebuah Domain

Suatu alamat domain website,kadang kita perlu mengetahui berapakah alamat IP-nya, sebagai contoh untuk meng-lookup sebuah domain dengan library dari socket yaitu socket.gethostbyname(). untuk contoh pada kasus ini, kita ingin melihat alamat IP dari domain "google.com" sebagai remote hostname



#!/usr/bin/python2.7
#penggunaan fungsi socket.gethostbyname() untuk memberikan alamat ip hostname
#simpan dengan nama remote_domain.py

import socket

def main():

    domain= "google.com"
    print "Domain %s alamat ip nya %s " %(domain, socket.gethostbyname(domain))

if __name__ == '__main__':
    main()


$ python remote_domain.py
Domain google.com alamat ip nya 202.70.50.17

setelah di eksekusi (terhubung ke jaringan internet), socket.gethostbyname(domain) memberikan alamat IP dari domain "google.com" yaitu 202.70.50.17

[Python] Hostname,IPv4 Local Machine

Pemrograman python pada kali ini menggunakan modul socket.gethostname() dan socket.gethostbyname(string). Berikut source code sederhana menggunakan modul socket tersebut:


#!/usr/bin/python2.7
#Penggunaan socket.hostname() dan socket.gethostbyname(string)
#Simpan dengan nama local_machine.py

import socket

def main():
    #pengunaan socket.gethostname,untuk menampilkan hostname mesin
    host_local = socket.gethostname()
    #menampilkan alamat ip pada host local
    ip_address = socket.gethostbyname(host_local)
    print "host name : %s " % host_local
    print "IP address : %s " % ip_address

if __name__ == '__main__':
    main()

Setelah dieksekusi.

$ python local_machine.py 
host name : linux 
IP address : 127.0.1.1

Sunday, April 10, 2016

Beberapa Editor Keren Yang Bisa Kamu Coba


Cerita seorang penulis dan juga seorang newbie programmer ataupun para programmer lainnya pasti sangat dekat hubungan nya dengan editor khususnya web programmer,text editor. kenapa tidak?. karena dengan lingkungan editor itulah para programmer bisa bekerja, ataupun berinteraksi dengan program yang akan dibuatnya.

Saturday, November 7, 2015

[Bash] Sistem Monitoring Sederhana

Berikut merupakan script sederhana untuk monitoring system pada OS linux, menggunakan script bash

# Simple Scripts Monitoring using bash script v.1
# code and modified by twster

#color
green='\e[0;32m'
redbold='\e[1;31m'
#users
user=$(whoami)
echo -e $green"[+] User Online : " $redbold $user
# os type
os=$(uname -o)
echo -e $green"[+] Operating System : "$redbold $os
# Machine Hardware
machinehardware=$(uname -m)
echo -e $green"[+] Architecture : "$redbold $machinehardware
# network node hostname
nodename=$(uname -n)
echo -e $green"[+] Hostname : "$redbold $nodename
# kernel release
kernelrelease=$(uname -r)
echo -e $green"[+] Kernel Release : "$redbold $kernelrelease
# kernel version
kernelversion=$(uname -v)
echo -e $green"[+] Kernel Version : "$redbold $kernelversion
# OS Release
cat /etc/os-release | grep 'NAME\|VERSION' | grep -v 'VERSION_ID' | grep -v 'PRETTY_NAME' > /tmp/osnameversion
echo -n -e $green"[+] OS Name : "$redbold  && cat /tmp/osnameversion | grep -v "VERSION" | cut -f2 -d\"
echo -n -e $green"[+] OS Version : "$redbold  && cat /tmp/osnameversion | grep -v "NAME" | cut -f2 -d\"
#OS Homepage
cat /etc/os-release | grep 'HOME_URL' > /tmp/oshomepage
echo -n -e $green"[+] OS Homepage : "$redbold  && cat /tmp/oshomepage | cut -f2 -d\"
# internal IP
internalip=$(hostname -I)
echo -e $green"[+] Internal IP : "$redbold $internalip
#external IP
externalip=$(curl -s checkip.dyndns.org | sed -e 's/.*Current IP Address: //' -e 's/<.*$//';echo)
echo -e $green"[+] External IP : "$redbold $externalip
#memoriinfo
cat /proc/meminfo | grep 'MemTotal\|MemFree\|MemAvailable' > /tmp/meminfo
echo -n -e $green"[+] Memori Total : "$redbold && cat /tmp/meminfo | grep -v "MemFree" | grep -v "MemAvailable" | cut -c18-
echo -n -e $green"[+] Memori Free : "$redbold && cat /tmp/meminfo | grep -v "MemTotal" | grep -v "MemAvailable" | cut -c18-
echo -n -e $green"[+] Memori Available : "$redbold && cat /tmp/meminfo | grep -v "MemTotal" | grep -v "MemFree" | cut -c18-




















Untuk source code silahkan berkunjung ke repository github di sini

Sunday, June 5, 2011

Belajar bahasa Assembly menggunakan NASM (Linux)

Untuk kali ini saya sharing belajar bahasa Assembly di linux menggunakan NASM, pada tutorial sebelumnya telah dijelaskan cara instalasi program nasm di sistem operasi linux menggunakan linux ubuntu. nah untuk program pertama yang sangat mudah karena masih belum menggunakan proses percabangan seperti interuksi jmp,je,ja sebagainya.. gunakan gedit,vi,pico atau aplikasi editor teks lainnya pada linux.
section .data
hello: db 'hello,Apa Kabar,,,?',10
nama: db 'Tri Wanda Septian',10
helloLen: equ $-hello
helloLna: equ $-nama
section .text

global _start

_start:
mov eax,4
mov ebx,1
mov ecx,hello
mov edx,helloLen
int 80h

mov ecx,nama
mov edx,helloLna
int 80h

mov eax,1
mov ebx,0
int 80h

Kemudian lakukan seperti pada postingan sebelumnya yaitu compile dan link ke objek

Analisa program
  • Menggunakan NASM

section .data
hello: db 'hello,Apa Kabar,,,?',10 ; 'hello,Apa Kabar,,,?' dengan banyak linefeed karakternya
nama: db 'Tri Wanda Septian',10 ; 'Tri Wanda Septian' dengan banyak linefeed karakternya
helloLen: equ $-hello ; batas untuk label hello yaitu 'hello,Apa Kabar,,,?'
helloLna: equ $-nama ; batas untuk label nama yaitu 'Tri Wanda Septian?'

section .text

global _start
;dimana pada bagian inilah kode assembly ditulis. Bagian teks. harus dimulai dengan global  _start ;sebagai deklarasi global, yang akan memberitahu kernel dimana eksekusi program dimulai.

_start:
mov eax,4 ; sistem pemanggilan untuk menulis (sys_write)
mov ebx,1 ; file pengdeskripsi yaitu 1 sebagai standar output
mov ecx,hello ;offset dari label hello ke register ecx
mov edx,helloLen ;batas dari string.label helloLen adalah konstan tidak perlu mengatakannya mode tak langsung ;seperti mov edx,[helloLen]
int 80h ; intruksi memanggil kernel

mov ecx,nama ;offset dari label nama ke register ecx
mov edx,helloLna ;batas dari string
int 80h ; interuksi memanggil kernel

mov eax,1;memanggil sistem untuk keluar (sys_exit)
mov ebx,0 ;interuksi keluar dengan kode 0
int 80h ; interuksi memanggil kernel

  • Menggunakan TASM pada DOS

.MODEL SMALL
.CODE
ORG 100h
Program : JMP Start
hello db 'hello,Apa Kabar,,,?$'
nama db 'Tri Wanda Septian$'
Start : mov ah,09h
mov dx,offset hello
int 21h

mov dx,offset nama
int 21h
int 20h
END Program

Silahkan belajar menganalisa perbandingan antara 2 program tersebut. :)

Sumber referensi :

  • http://docs.cs.up.ac.za/programming/asm/derick_tut/

Assembler NASM pengganti TASM di linux

Bahasa assembly merupakan bahasa tingkat rendah yang hanya mengindetifikasi register pada mikroprosesor, namun perlu kita ketahui struktur dari compiler untuk bahasa pemrograman assembly pada setiap sistem operasi agak sedikit berbeda dan kali ini, tutorial singkat untuk mencoba pemrograman bahasa assembly di linux(Ubuntu)

Friday, April 15, 2011

[Kriptografi] Caesar Cipher


  • Pendahuluan Tentang Kriptografi
Dalam bidang ilmu kriptografi terdapat algortima yang menjadi fungsi dasarnya, yaitu :

  1. Enkripsi, merupakan pengamanan data yang dikirimkan agar terjaga kerahasiaannya. Pesan asli disebut plaintext, yang diubah menjadi kode – kode yang tidak bisa dimengerti. Dalam hal ini enkripsi disebut juga dengan cipher atau kode.