Finding DOMAIN NAME in an IP Address
#1
Code:
#!/usr/bin/python
#author : u5h4nt
import urllib
import urllib2
import re
import sys

def ip2domain(ip):
    link = "http://bgp.he.net/ip/%s#_dns" % ip
    opener = urllib2.build_opener()
    opener.addheaders = [('User-agent',"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13")]
    urllib2.install_opener(opener)
    page = urllib2.urlopen(link)
    page = page.read()
    domains = re.findall('/dns/\S+', page)
    for i in domains:
        print "[+] %s >>> %s" % (ip, i[5:-1]) + "\n"


if __name__=='__main__':
    ip2domain(sys.argv[1])

sekarang mari kita bahas baris perbarisnya .. Smile
Pertama kita perlu melakukan inisialisasi terhadap module-module python yang akan kita gunakan dalam tools ini.
Code:
import urllib
import urllib2
import re
import sys
urllib dan urllib2, merupakan module python untuk melakukan interaksi dengan url seperti melakukan request terhadap sebuah URL, dan lain-lain.
re, merupakan module python untuk fungsi regular expresion, karena kita akan menggunakan fasilitas yang disediakan oleh http://bgp.he.net/ untuk menemukan domain dalam IP Address, lalu kemudian kita melakukan penyeleksian(mem-parsing) isi halaman HTML nya dan mengambil domain name nya saja. kita melakukan ini dengan fungsi regula expression melalui module re ini.
sys, disini kita gunakan cuman untuk mengambil argumen/parameter pada saat tool ini dijalankan. parameter nanti berupa sebuah IP Address.

Bagian berikutnya dalam code ini adalah kita membuat sebuah fungsi yg kita namai ip2domain dengan sebuah parameter by value yaitu ip. jadi pada saat fungsi ini dipanggil maka harus disertakan dengan parameter yang berisi string IP Address.
Code:
def ip2domain(ip):

Kemudian dalam fungsi ip2domain terdapat :
Code:
link = "http://bgp.he.net/ip/%s#_dns" % ip
opener = urllib2.build_opener()
opener.addheaders = [('User-agent',"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/537.13 (KHTML, like Gecko) Chrome/24.0.1290.1 Safari/537.13")]
urllib2.install_opener(opener)
page = urllib2.urlopen(link)
page = page.read()
baris pertama kita membuat variabel link yang berisi url . perhatikan url tersebut. sekarang coba buka di browser anda url ini > http://bgp.he.net/ip/205.204.72.34#_dns . nah tampil banyak domain kan, jadi itulah domain-domain yang ada didalam IP Address 205.204.72.34. yang kita akan lakukan adalah sederhana, kita hanya perlu mengambil domain-domain name dari source HTML nya. Smile
perhatikan :

Code:
link = "http://bgp.he.net/ip/%s#_dns" % ip

%s dalam string ini mewakili string ip, yang mana variabel ip ini diperoleh dari parameter dari fungsi ip2domain tadi. semoga anda mengerti yang saya maksud . Big Grin

Setelah membuat variabel link, berikutnya kita akan membuat sebuah urllib opener, yang akan menjadi interface kita untuk melakukan request terhadap sebuah website(dalam ha ini bgp.he.net). kemudian kita menambahkan header berupa User-Agent kedalam opener tadi. setelah selesai mem-build opener, lalu install_opener . Big Grin

Selanjutnya kita langsung melakukan request terhadap link yg sudah di inisialisasikan sebelumnya. kemudian kita membaca response nya (HTML Source), sehingga kita mendapatkan source code dari halaman HTML nya.

sekarang kita telah memiliki source code html nya, maka tinggal melakukan parsing untuk mengambil domain name yg ada. disini kita menggunakan peran modul re
sebelumnya perhatikan potongan source code html dari halaman web bgp.he.net sebagai contoh :

Code:
<a title="xpresprint.com" href="/dns/xpresprint.com">xpresprint.com</a>, <a title="xxxfucktube.com" href="/dns/xxxfucktube.com">xxxfucktube.com</a>, <a title="yeemai.com" href="/dns/yeemai.com">yeemai.com</a>, <a title="ylva.net" href="/dns/ylva.net">ylva.net</a>, <a title="ypal.me" href="/dns/ypal.me">ypal.me</a>, <a title="yuksedekah.org" href="/dns/yuksedekah.org">yuksedekah.org</a>, <a title="zabossu.com" href="/dns/zabossu.com">zabossu.com</a>, <a title="zanychew.com" href="/dns/zanychew.com">zanychew.com</a>, <a title="zonaputih.com" href="/dns/zonaputih.com">zonaputih.com</a>
nah sedikit tentang regular expression, kita menggunakan regex untuk melakukan seleksi terhadap sekumpulan string berdasarkan ketentuan(patern) yang kita buat.
berikut line untuk mengambil domain-domain dari HTML Source nya:

Code:
domains = re.findall('/dns/\S+', page)

methode findall dalam class re, akan menghasilkan list. sehingga kita tinggal perlu menampilkan semua isinya secara teratur dengan membuat sebuah for-loop

Code:
for i in domains:
        print "[+] %s >>> %s" % (ip, i[5:-1]) + "\n"

itulah penjelasan fungsi ip2domain yang kita buat.
terakhir adalah

Code:
if __name__=='__main__':
    ip2domain(sys.argv[1])

kita menjalankan fungsi ip2domain dengan parameter yang diambil dari argumen ke-1 pada saat program dijalankan.
jadi cara menjalankan sourcenya adalah >

Code:
python ip2domain.py <IP_ADDRESS>

Screen Shot
[Image: Screenshot-from-2013-04-18-061215.png]

#2
buset panjang :O
nice share om, ilmu python ku belum sampe kesini, masih tahap pembelajaran Big Grin

#3
(04-18-2013, 06:32 AM)junior.riau18 Wrote: buset panjang :O
nice share om, ilmu python ku belum sampe kesini, masih tahap pembelajaran Big Grin

hehehhe ahh pendek kok itu om, cuman 15an baris .. Smile)
cuman sy coba jelasin aja line per line biar yg mau paste ngerti maksudnya apaa .. gitu oom .. Smile)

btw INSPIRASI nya dari script perl ini sih >> http://pastebin.com/MXdadiBk
jadi sy buat python version nya saja .. Big Grin

#4
wah keren om ,... makasih ... makin nambah ilmu ane .. dan belum nyampe ke sini juga ilmu siluman phton ane Big Grin Big Grin






Users browsing this thread: 1 Guest(s)