aboutsummaryrefslogtreecommitdiffstats
path: root/dtube
diff options
context:
space:
mode:
authorLaurent Ghigonis <laurent@p1sec.com>2013-02-28 02:19:41 +0100
committerLaurent Ghigonis <laurent@p1sec.com>2013-02-28 02:19:41 +0100
commitb089dd0ce4d578f414d361415f5ed00930f8037a (patch)
treecf4fd912b37634e733b7f3f965e227c4a04fb4be /dtube
parentdtube - Tube Definer, detube the intertubes to look into the right tube (diff)
downloadlaurent-tools-b089dd0ce4d578f414d361415f5ed00930f8037a.tar.xz
laurent-tools-b089dd0ce4d578f414d361415f5ed00930f8037a.zip
dtube: work mostly on layout
Diffstat (limited to 'dtube')
-rwxr-xr-xdtube/dtube.py70
1 files changed, 30 insertions, 40 deletions
diff --git a/dtube/dtube.py b/dtube/dtube.py
index 076a0c3..2639e42 100755
--- a/dtube/dtube.py
+++ b/dtube/dtube.py
@@ -3,26 +3,6 @@
# dtube - Tube Definer, detube the intertubes to look into the right tube
# 2013 Laurent Ghigonis <laurent@p1sec.com>
#
-# Get info from AS
-# /AS23118
-# AS Info - Route propagation - Prefixes - Peers - Whois - IRR
-#
-# Get info from IP range
-# /net/213.186.33/24
-# Network Info - Whois - DNS - IRR
-#
-# Get info from IP
-# /ip/173.194.34.1
-# XXX
-#
-# Get info from DNS name
-# /dns/google.de
-# DNS Info - Website Info - IP Info - Whois
-#
-# Get info from Country
-# /country/US
-# XXX
-
# TODO
# * command line usage
# * cache
@@ -41,7 +21,15 @@ from optparse import OptionParser
import conf_dtube
def usage():
- return "usage: %s [-t ranges|A|PTR|ip] [-f filter] [-v] range-cidr|AS|DNS|IP" % sys.argv[0]
+ return """usage: %s [-t ranges|A|PTR|ip] [-f filter] [-v] AS|range-cidr|IP|DNS|country
+
+Example:
+%s AS23118
+%s 91.220.156.0/24
+%s 8.8.8.8
+%s ovh.net
+%s US
+""" % (sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0], sys.argv[0])
# XXX already exists in python libs ?
def merge_table(left, right):
@@ -127,16 +115,20 @@ class HeAS(He):
"description": p.xpath('td[position()=2]/child::text()')[0].strip(),
"country": p.xpath('td/div/img')[0].get('title'),
}
- pp = pprint.PrettyPrinter()
- self.prefixes_txt = pp.pformat(self.prefixes)
+ self.prefixes_txt = ""
+ for p in self.prefixes.keys():
+ self.prefixes_txt += p \
+ + '\t' + self.prefixes[p]["description"] \
+ + '\t(' + self.prefixes[p]["country"] + ')' + '\n'
# XXX Peers
# XXX Whois
# XXX IRR
def show(self):
- print "====== INFOS ======"
+ print "====== INFO ======"
print self.info
print "====== PREFIXES ======"
+ print "Range\t\tDescription\t(Country)"
print self.prefixes_txt
class HeIPrange(He):
@@ -151,14 +143,7 @@ class HeIPrange(He):
def parse(self):
# Network Info
info_it = self.tree.xpath('//div[@id="netinfo"]')[0]
- self.info = [e.text for e in info_it.getiterator()]
- # XXX
- #self.info.remove(None)
- #for tab in info_it.xpath('table'):
- # head = '\t'.join(tab.xpath('tr/th/child::text()'))
- # net = '\t'.join(tab.xpath('tbody/tr/td/a/child::text()'))
- # desc = tab.xpath('tbody/tr/td/child::text()')[-1]
- # self.info += head + '\n' + net + '\t' + desc + '\n'
+ self.info = [e.text for e in info_it.getiterator()] # XXX ugly
# XXX Whois
# DNS
dns_l = self.tree.xpath('//div[@id="dns"]')
@@ -170,17 +155,22 @@ class HeIPrange(He):
"href": i.xpath('td[position()=1]/a')[0].get('href'),
"PTR": i.xpath('td[position()=2]/a/child::text()')[0],
"PTR_href": i.xpath('td[position()=2]/a')[0].get('href'),
- "A_list": i.xpath('td[position()=2]/a/child::text()'),
+ "A_list": i.xpath('td[position()=3]/a/child::text()'),
"A_href_list": [it.get('href') for it in i.xpath('td[position()=3]/a')],
}
- pp = pprint.PrettyPrinter()
- self.dns_txt = pp.pformat(self.dns)
+ self.dns_txt = ""
+ for d in self.dns.keys():
+ self.dns_txt += d + '\t' + self.dns[d]["PTR"]
+ if len(self.dns[d]["A_list"]) > 0:
+ self.dns_txt += ' | ' + ' '.join(self.dns[d]["A_list"])
+ self.dns_txt += '\n'
# XXX IRR
def show(self):
- print "====== INFOS ======"
+ print "====== INFO ======"
print self.info
print "====== DNS ======"
+ print "IP\tPTR [| A]"
print self.dns_txt
class HeIP(He):
@@ -225,10 +215,10 @@ if __name__ == '__main__':
sys.exit(0)
parser = OptionParser(usage=usage())
- parser.add_option('-t', action="store", dest="query_type", default=0, type=str,
- help='Query type: range, A, PTR, ip, country')
- parser.add_option('-f', action="store", dest="filter", default=None, type=str,
- help='Filter regex for company name')
+ #parser.add_option('-t', action="store", dest="query_type", default=0, type=str,
+ # help='Query type: range, A, PTR, ip, country')
+ #parser.add_option('-f', action="store", dest="filter", default=None, type=str,
+ # help='Filter regex for company name')
parser.add_option('-v', action="store_true", dest="verbose", default=False,
help='verbose')
(options, args) = parser.parse_args()