result.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. @Author: hywell
  5. @Email: hywell.28@gmail.com
  6. @Blog: iassas.com
  7. @Date: 2019/10/17 22:14
  8. """
  9. import time
  10. from lib.core.setting import CONF, TARGETS, RESULT
  11. def save():
  12. with open("output/result/" + str(time.time()) + ".txt", 'w+') as f:
  13. f.write(str(RESULT))
  14. def dirParse(base_url, url, result):
  15. results = []
  16. status = result[0]
  17. if base_url:
  18. RESULT[base_url]["dic"].append([url, status])
  19. else:
  20. RESULT[url]["status"] = status
  21. TARGETS.END.url.append(base_url)
  22. return results
  23. def subDomainParse(base_domain, domain, results):
  24. result = []
  25. status = results[0]
  26. if base_domain and status == 1:
  27. RESULT[base_domain]["subDomain"]["open"].append([domain, results[2]])
  28. for sub in CONF.dns_sub:
  29. result.append("%s.%s" % (sub, domain))
  30. elif base_domain and status != 1:
  31. RESULT[base_domain]["subDomain"]["close"].append([domain, results[2]])
  32. else:
  33. RESULT[domain]["status"] = "open" if status == 1 else "close"
  34. TARGETS.END.domain.append(base_domain)
  35. return result
  36. def portScanParse(ip, results):
  37. services = {}
  38. result = results.hosts
  39. put_targets = []
  40. if result:
  41. RESULT[ip]["status"] = "open"
  42. result = result[0]
  43. for service in result.services:
  44. if "http" in service.service or "https" in service.service:
  45. put_targets.append(str(ip) + ":" + str(service.port))
  46. services[service.port] = [service.service, service.state]
  47. HostNames = result.hostnames[0] if result.hostnames else None
  48. RESULT[ip]["nmap"] = {
  49. "MAC": result.mac,
  50. "HostNames": HostNames,
  51. "services": services
  52. }
  53. else:
  54. RESULT[ip]["status"] = "close"
  55. TARGETS.END.ip.append(ip)
  56. return put_targets
  57. def resultParse(task_queue, target, results):
  58. put_targets = []
  59. flag = target[0]
  60. current_target = target[1]
  61. if flag == 1:
  62. put_targets = portScanParse(current_target, results)
  63. elif flag == 2:
  64. base_domain = target[2]
  65. put_targets = subDomainParse(base_domain, current_target, results)
  66. elif flag == 3:
  67. base_url = target[2]
  68. put_targets = dirParse(base_url, current_target, results)
  69. if CONF.level == "not now":
  70. for put_target in put_targets:
  71. task_queue.put_nowait(put_target)