Расшифровывалка паролей FTP для FAR Manager
Потребовалось сегодня по работе, все забыли пароль к одному серваку =)
Всё оказалось проще пареной репы.
- Лезем в настройки фара и находим заветный пароль в формате
hex:a1b21a2112100162681711
- Идем в репо фара и находим исходник шифорвщика/дешифровщика — http://farmanager.com/svn/trunk/plugins/ftp/Crypt.inc
- Пишем обертку для дешифоратора или переделываем его по аналогии на любимый язык
Я подумал и решил, что проще всего переделать его на Ruby
#!/usr/bin/ruby
src = ''
ARGV[0].scan(/../).each { | tuple | src += tuple.hex.chr }
xor_mask = (src[0]^src[1]) | 80
src = src[2..-1]
src.each_byte do |c|
res = c ^ xor_mask
print res.chr
end
print "\n"
P.S. Господа Ruby-кодеры, если меня, конечно, читают такие, объясните, пожалуйста, почему лезет варнинг? Совсем не понимаю где я Doing It Wrong.
./far_pwd_decode.rb:4: warning: already initialized constant Src
./far_pwd_decode.rb:8: warning: already initialized constant Src
P.P.S. За гениальную строчку
.scan(/../).each { | tuple | Src += tuple.hex.chr }
спасибо г-ну James “raggi” Tucker.
P.P.P.S. Ога, оказывается переменная с заглавной буквы это константа. thnx to Подвальный кот. Актуальную версию со всеми фиксам всегда можно стащить с репы: https://bitbucket.org/sunchaser/miscellaneous/src