Я пишу программу атаки на основе словаря в ruby для CTF, но мой вывод выводит значение перечисления вместо строки. Я попытался явно преобразовать переменную, которая выводится в строку, но это ничего не изменило.
require 'net/http'
def checkUsage()
if ARGV.length != 1
return false
end
return true
end
def generateUsername()
wordArray = Array.new
wordlist = File.open("words.txt", "r")
for word in wordlist
wordArray.push(word)
end
return wordArray.repeated_permutation(7).to_s
end
def generatePassword()
wordArray = Array.new
wordlist = File.open("words.txt", "r")
for word in wordlist
wordArray.push(word)
end
return wordArray.repeated_permutation(7).to_s
end
def requestAuthentication()
if(!checkUsage())
puts("Usage: frsDic <wordlist>")
return false
end
uri = URI("http://challenges.laptophackingcoffee.org:3199/secret.php")
req = Net::HTTP::Get.new(uri)
loop do
username = generateUsername()
password = generatePassword()
if req.basic_auth username, password
puts"Username found: " + username
puts"Password found: " + password
break
else
puts"Username failed: " + username
puts"Password failed: " + password
end
end
end
requestAuthentication()
Выход:
#<Enumerator:0x000055a491c74ad0>
#<Enumerator:0x000055a491c74828>
#<Enumerator:0x000055a491c74ad0>
#<Enumerator:0x000055a491c74828>
Я ожидал распечатать строку имен пользователей / паролей, найденных bruteforce, но он печатал только значения перечисления.