Changeset 1485

Show
Ignore:
Timestamp:
12/07/07 18:10:57 (9 months ago)
Author:
jose
Message:

[phoneyc]
let's start treating honeywalk as a useful program
- usage string
- options

+ -d to output a dot digraph file

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • phoneyc/trunk/honeywalk.py

    r1451 r1485  
    22 
    33from honeyclient import * 
    4 import md5, popen2, sys, time 
     4import getopt, md5, popen2, sys, time 
    55 
    66hc = HttpHoneyClient() 
     
    88hc.maxdepth = 4 
    99hc.cnt = 0 
     10hc.digraph = [] 
     11 
     12def usage(progname): 
     13    usagestr = """%s [-d] url 
     14HoneyClient spider tool 
     15 
     16OPTIONS: 
     17    -d          output a Graphviz directed graph 
     18                of URLs walked 
     19""" % progname 
     20    print usagestr 
     21    sys.exit(1) 
    1022 
    1123def scan(body): 
     
    3547    if depth[URL] > hc.maxdepth: return 
    3648    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) 
    3751 
    3852    print "===> %s " % URL, 
     
    6781                walk(hc, url, URL, visited, depth) 
    6882 
    69 def main(): 
     83def 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 
    7093    start = time.time() 
    7194    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}) 
    7396    except KeyboardInterrupt: print '' 
    7497    end = time.time() 
    7598 
    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) 
    77103 
    78104if __name__ == '__main__': 
    79     main(
     105    main(sys.argv
    80106