我正在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()
我原本希望打印出由bruteforce找到的用户名/密码字符串,但它只打印枚举值。
repeated_permutation如果您不提供块,则该方法返回一个Enumerator。如果您想要遍历所有排列,可以直接将块传递给它:
wordArray.repeated_permutation(7) { |permutation| puts permutation }
或者你可以在某个地方传递枚举器并调用.each它。
word_enumerator = wordArray.repeated_permutation(7)
word_enumerator.each { |permutation| puts permutation }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。