04-18-2013, 06:24 AM
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 ..
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
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()
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 .
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 .
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>
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