Changeset 1485
- Timestamp:
- 12/07/07 18:10:57 (9 months ago)
- Files:
-
- phoneyc/trunk/honeywalk.py (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
phoneyc/trunk/honeywalk.py
r1451 r1485 2 2 3 3 from honeyclient import * 4 import md5, popen2, sys, time4 import getopt, md5, popen2, sys, time 5 5 6 6 hc = HttpHoneyClient() … … 8 8 hc.maxdepth = 4 9 9 hc.cnt = 0 10 hc.digraph = [] 11 12 def usage(progname): 13 usagestr = """%s [-d] url 14 HoneyClient spider tool 15 16 OPTIONS: 17 -d output a Graphviz directed graph 18 of URLs walked 19 """ % progname 20 print usagestr 21 sys.exit(1) 10 22 11 23 def scan(body): … … 35 47 if depth[URL] > hc.maxdepth: return 36 48 hc.cnt += 1 49 if referrer: hc.digraph.append('\t"%s" -> "%s";' % (referrer, URL)) 50 else: hc.digraph.append('\t%s [shape=box, color=lightblue, style=filled];' % URL) 37 51 38 52 print "===> %s " % URL, … … 67 81 walk(hc, url, URL, visited, depth) 68 82 69 def main(): 83 def main(argv): 84 try: opts, args = getopt.getopt(argv[1:], 'dh') 85 except: usage(sys.argv[0]) 86 87 do_dot = False 88 for o, a in opts: 89 if o == '-d': do_dot = True 90 else: usage(sys.argv[0]) 91 url = args[0] 92 70 93 start = time.time() 71 94 print 'HoneyWalk started at %s UTC' % time.asctime(time.gmtime()) 72 try: walk(hc, sys.argv[1], False, [], {sys.argv[1]: 0})95 try: walk(hc, url, False, [], {url: 0}) 73 96 except KeyboardInterrupt: print '' 74 97 end = time.time() 75 98 76 print 'walked %d URLs in %f seconds' % (hc.cnt, end-start) 99 if do_dot: 100 print 'walked %d URLs in %f seconds' % (hc.cnt, end-start) 101 print '\n\ndigraph "%s" {' % url 102 print '%s\n}' % '\n'.join(hc.digraph) 77 103 78 104 if __name__ == '__main__': 79 main( )105 main(sys.argv) 80 106
