Guest User

Untitled

a guest
Nov 23rd, 2017
170
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.66 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. from pygments import highlight, lexers, formatters
  4. import os
  5. import itertools
  6. import pygeoip
  7. import json
  8. import dns.resolver
  9. import tqdm
  10. import signal
  11. import time
  12. import sys
  13. import multiprocessing
  14.  
  15.  
  16.  
  17. signal.signal(signal.SIGPIPE, signal.SIG_DFL) #IOError: Broken Pipe
  18. signal.signal(signal.SIGINT, signal.SIG_DFL) #KeyboardInterrupt: Ctrl-C
  19.  
  20.  
  21.  
  22. def get_host_ip(output):
  23. my_resolver = dns.resolver.Resolver()
  24. my_resolver.timeout = 3
  25. my_resolver.lifetime = 3
  26. try:
  27. answer = my_resolver.query(output, 'A')
  28. for rdata in answer:
  29. return rdata
  30. except:
  31. pass
  32.  
  33.  
  34.  
  35. def remove_blanks(output):
  36. if output:
  37. text = os.linesep.join([s for s in output.splitlines() if s])
  38. return text
  39.  
  40.  
  41.  
  42. def ipLocator(ip):
  43. ip = remove_blanks(ip)
  44. try:
  45. LIST_OF_GEO = []
  46. GeoIPDatabase = './GeoLiteCity.dat'
  47. ipData = pygeoip.GeoIP(GeoIPDatabase)
  48. record = ipData.record_by_name(ip)
  49. if record:
  50. record['Hostname'] = ip
  51. record['IP-Addr'] = str(get_host_ip(ip))
  52. #print_this(record)
  53. LIST_OF_GEO.append(record.copy())
  54.  
  55. if LIST_OF_GEO:
  56. return LIST_OF_GEO
  57. except:
  58. pass
  59.  
  60.  
  61. def print_this(record):
  62. formatted_json = json.dumps(record, sort_keys=True, ensure_ascii=True, indent=3)
  63. colorful_json = highlight(unicode(formatted_json, 'UTF-8'), lexers.JsonLexer(), formatters.TerminalFormatter())
  64. print(colorful_json)
  65.  
  66.  
  67.  
  68.  
  69. def main():
  70. #with open('netflix.txt', 'r') as f:
  71. with open(sys.argv[1], 'r') as f:
  72. MCKIN_HOSTS = [ l for l in f.readlines() if l ]
  73.  
  74. if MCKIN_HOSTS:
  75. p = multiprocessing.Pool(25)
  76. result = p.map(ipLocator, MCKIN_HOSTS)
  77. if result:
  78.  
  79. #if LIST_OF_GEO:
  80. print_this(result)
  81.  
  82.  
  83. if __name__ == '__main__':
  84. main()
Add Comment
Please, Sign In to add comment