This is what I have so far as code:


=begin

Timed Challenge #1
[http://www.hellboundhackers.org/challenges/timed/timed1/index.php]

RULE: You have 1 second to retrieve/submit this!
GOAL: 1. Decrypt the following random string: a2UpYDkyYjhyLCRebCFneA==
      2. Answer like this:
/challenges/timed/timed/index.php?b64=decryptedString

=end


require 'net/http'
require 'socket'
require 'base64'

# The web server
host = 'www.hellboundhackers.org'
# Default HTTP port
port = 80
# The file we want
path = "/challenges/timed/timed1/index.php"

# This is the HTTP request we send to fetch a file
request = "GET #{path} HTTP/1.0\r\n\r\n"

# Connect to server
socket = TCPSocket.open(host,port)
# Send request
socket.print(request)
# Read complete response
response = socket.read
# Split response at first blank line into headers and body
headers,body = response.split("\r\n\r\n", 2)
print body

# The encryted message to work on
if(body =~ /\w*==/)
  encoded = $1;
end

# Decryption of Base64 string value
decoded = Base64.decode64(encoded)
pre-answer = '/challenges/timed/timed1/index.php?b64='+decoded
answer = "Get #{pre-answer} HTTP/1.0\r\n\r\n"

# Submit the decrypted text to "/challenges/timed/timed1/index.php?b64="
socket.print(answer)
response = socket.read
# Split response at first blank line into headers and body
headers,body = response.split("\r\n\r\n", 2)
print body


I am stuck on using login data before submitting anything. I know how to
do this in PHP's cURL library, but not with Ruby.

Any help would be greatly appreciated. No spoiler either. I like to work
for the answer. I would not want to ruin it for my brain.
-- 
Posted via http://www.ruby-forum.com/.