Почему мой код выводит значения перечисления вместо строки? - PullRequest
0 голосов
/ 09 апреля 2019

Я пишу программу атаки на основе словаря в 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, но он печатал только значения перечисления.

1 Ответ

1 голос
/ 09 апреля 2019

Метод repeated_permutation возвращает перечислитель, если вы не предоставите блок. Если вы хотите пройтись по всем перестановкам, вы можете передать блок непосредственно ему:

wordArray.repeated_permutation(7) { |permutation| puts permutation }

Или вы можете передать счетчик куда-нибудь и вызвать .each.

word_enumerator = wordArray.repeated_permutation(7)
word_enumerator.each { |permutation| puts permutation }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...