为什么我的代码输出的是enumaration值而不是字符串?-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文

为什么我的代码输出的是enumaration值而不是字符串?

小六码奴 2019-04-09 17:14:26 959

我正在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找到的用户名/密码字符串,但它只打印枚举值。

数据安全/隐私保护 Ruby
分享到
取消 提交回答
全部回答(1)
  • 小六码奴
    2019-07-17 23:33:01

    repeated_permutation如果您不提供块,则该方法返回一个Enumerator。如果您想要遍历所有排列,可以直接将块传递给它:

    wordArray.repeated_permutation(7) { |permutation| puts permutation }
    或者你可以在某个地方传递枚举器并调用.each它。

    word_enumerator = wordArray.repeated_permutation(7)
    word_enumerator.each { |permutation| puts permutation }

    0 0
+ 订阅

云安全开发者的大本营

推荐文章
相似问题