Находясь у родственников и не удовлетворившись качеством роутера TP-Link TL-WR340GD (V3), вызвавшим сурьёзные нарекания по части стабильности wifi-соединения, решил заменить его чем-то другим. Но для начала, чтобы невзначай не остаться без интернета, надо бы найти логин/пароль провайдера для PPPoE-соединения. Конечно, где-то был договор с провайдером, в тексте которого были прописаны эти данные, да только кто бы знал, где ж тот договор…
Роутер примерно такой, картинка из интернета
В принципе, зайдя в веб-морду роутера, можно увидеть логин, но вот пароль отображён чем-то типа •••••• В связи с этим остаётся только одно логичное решение: из-под веб-интерфейса сделать backup настроек, а затем попытаться прочесть этот файл (он называется config.bin).
Открытие сего конфигурационного файла в лоб текстовым редактором не привело ни к чему хорошему: одни иероглифы да кракозябры. Тогда я засунул его в hex-редактор — также ни пусто ни густо, всё та же беспросветная стена из кракозябр. В общем, понятно, труба дело, файл настроек зашифрован. Решил поискать в гугле возможные способы дешифровки, и — о, чудо — практически первая же ссылка вела на гитхаб китайского товарища (коему огромное спасибо), выложившего дешифровочный скрипт (написанный, правда, на python’е). :)
Там у него помимо config.bin ещё какой-то неведомый model.conf дешифруется, но нам в данном случае это не нужно, посему соответствующие сроки из скрипта я выбросил. Поскольку config.bin закачался у меня в директорию Downloads, я там же создал файл decryptme.py такого содержания:
from Crypto.Cipher import DES
from hashlib import md5key = '\x47\x8D\xA5\x0B\xF9\xE3\xD2\xCF'
crypto = DES.new( key, DES.MODE_ECB )data = open('Downloads/config.bin', 'rb').read()
data_decrypted = crypto.decrypt( data ).rstrip('\0')
assert data_decrypted[:16] == md5(data_decrypted[16:]).digest()
open('Downloads/config.bin.txt', 'wb').write(data_decrypted[16:])
Примечание. Кавычки везде должны быть «прямые» (а то Вордпресс «скривляет»): '
А дальше просто запустил в терминале:
python Downloads/decryptme.py
И вуаля — на выходе в той же Downloads появился файл config.bin.txt со всеми данными. :) Даже сам удивился, насколько всё просто оказалось…
{upd}
Господа, читайте также комментарии ниже, информация может быть весьма полезной. Удачи! :)
{upd 30/09/2020}
Часть 2. Как выцепить пароль из ADSL-модема Asus DSL-N10E
Волею судеб ещё разок пришлось столкнуться с описанной проблемой, и теперь под рукой оказался модем/роутер Asus DSL-N10E:
Картинка из интернета
На сей раз, правда, задача стояла не столь остро: в том плане, что пока не решили, стоит ли менять этот, думается, отпахавший своё модем на что-то более приличное и стабильное (по части того же wi-fi-соединения), или же сразу уйти к кабельному провайдеру. 🙂
Однако на случай продолжения пользования ADSL-интернетом и смены модема на современную модель очень неплохо было бы заранее выцепить из него учётные данные для PPPoE-соединения (и не только). Проблема лишь в том, что пароль ожидаемо закрыт буллетами: ••••• Договора с провайдером, естественно, под рукой нет, и где он лежит, никто не помнит. 😺
Однако возиться с дешифровкой конфига откровенно не хотелось, вместо чего решил прямо по-ленински пойти другим путём: с детской наивностью глянуть в браузере (в данном случае, Chrome) эту область с паролем через правую клавишу → «Просмотр кода элемента» («Inspect«).
Разумеется, шансы низкие: кто ж будет скрывать чувствительную информацию лишь средствами CSS/js, да ещё и в случае с таким уважаемый производителем, как Asus… Фактически, «защита от дурака» и не более того.
А поди ж ты — логин и пароль отображаются в девственно чистом виде! 😺
Voilà!
Естественно, способ может сработать и на других модемах и роутерах — проверить немудрено, в отличие от дешифровки на питоне. 🙂
Crypto.Cipher откуда взять? ругается именно на это.
модуль поставь Crypto для питона
Блин круто! А я маялся как пароль вытащить. Спасибо, сработало. Манипуляции проводились на FreeBSD 9.1 :) К питону пришлось тоже устанавливать crypto.
Мсье знает толк… :-))))
Кстати, в adsl-роутерах с вай-фаем типа TD-W8901N фишка не проходит, увы… :( Оттуда удаётся выцепить только пароль админа (да и то другим кодом, а не описанным в статье), но толку с того как с козла молока.
Поясните для тех кто в «танке» 1) Модуля нет по вашей ссылке- нашел в сети — как его установить? Файл как здесь описано создал, скобки поправил но запустить его не могу — пишет синтаксическая ошибка — хотя пишу так же как у вас описано.Если не трудно ответьте — понятно что эта тема не для новичков, но вот то что тут описано как раз новичкам то и нужно.Спасибо. Python 3.3.0
А мне вот этот метод понравился:
http://teknoraver.net/software/hacks/tplink/
Вот, правда, там linux-специфика, но мне как раз очень удобно =)
Вся расшифровка сводится к одной строке:
openssl enc -d -des-ecb -nopad -K 478DA50BF9E3D2CF -in config.bin
1. Скачать установить Питон https://www.python.org/downloads/windows/
2. Скачать модуль крипто https://pypi.python.org/pypi/pycrypto разархивировать его на диск и установить через питон командой
phiton setup.py install
3. выполнить данный модифицированный скрипт:
from Crypto.Cipher import DES
from hashlib import md5
import binascii
key = binascii.a2b_hex('478DA50BF9E3D2CF')
crypto = DES.new( key, DES.MODE_ECB )
data = open('config.bin', 'rb').read()
data_decrypted = crypto.decrypt( data )
open('config.bin.txt', 'wb').write(data_decrypted[16:])
Добрый день! Поясните еще раз, если не затруднит. Все скачал по Вашим ссылкам. Питон установил, но не могу установить модуль крипто — пишет «синтаксическая ошибка». Я понимаю, что для Вас это все как 2*2… но у меня не получается. Где должно что лежать? как именно на диск распаковывать? что значит фраза — «распакуйте на диск»??? на какой и куда именно? по конкретней-то можно? должен же быть хоть какой-то путь указан… Питон установил в папку по умолчанию «C:\Users\»Username»\AppData\Local\Programs\Python\Python35-32\python.exe»
Заранее спасибо!
Ещё бы перевести на c++/c# этот скрипт! Чтобы лучше понять суть произведённых манипуляций)
Действительно, сделали бы пошаговую инструкцию для обычных юзеров винды, мы понимаем, что для вас это — элементарно, ну и что? Я уверен — знаю и могу многое, о чем вы не в курсе, но спросите меня что-нибудь из этого и я всё подробно поясню а не просто сообщу, что это — примерно там и надо тупо запустить скрипт…
Всё давно сделано до нас:
http://www.nirsoft.net/utils/router_password_recovery.html
скачиваем утилиту и открываем файл бэкапа, всё.
Спасибо тебе, Добрый Фей!!!!! Я неделю ё*ся, чтобы пароль узнать, как говориться «и раком и боком», уже хотел у провайдера попросить новый пароль(роутер 5-ти летней давности, вот купил новый, а карточку с паролем потерял) и тут такое счастье!! Большое человеческое спасибо!!!!!!!!!!!!!!!!!!!!
Подскажите пожалуйста, а на Android можно установить python и запустить этот скрипт?
Заранее спасибо!
Можно сделать проще. Заходите http://des.online-domain-tools.com/
Выбираете Input type: File, указываете путь к файлу.
Выбираете DES и мод ECB. Ключ: 478DA50BF9E3D2CF . И ставите на Hex. Дешифруете и потом нажимаете [Download as a binary file]
Спасибо!!
Спасибо огромное!!! Коротко, легко и понятно!! )))
Спасибо большое.
Hello! My name is MaryMarkova, our compane need to advertise on your website. What is your prices? Thank you. Best regards, Mary.
супер! работает. вытащил пароль. спасибо!
После обновления прошивки и загрузки сохраненных настроек пароль слетел (не заходит со старым). Вышеуказанными манипуляциями 2 мя способами удалось посмотреть пароль, но он вида » kЙоБнRН“Ыdы!фxЊ™ » не понятно что делать.
Исправленный код, работает даже на телефоне:
from Crypto.Cipher import DES
from hashlib import md5
#
key = b’\x47\x8D\xA5\x0B\xF9\xE3\xD2\xCF’
crypto = DES.new( key, DES.MODE_ECB )
#
data = open(‘download/config.bin’, ‘rb’).read()
data_decrypted = crypto.decrypt( data ).rstrip(b’\0′)
assert data_decrypted[:16] == md5(data_decrypted[16:]).digest()
open(‘download/config.bin.txt’, ‘wb’).write(data_decrypted[16:])