Created
December 28, 2013 05:24
-
-
Save Ell/8156324 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import requests | |
| #import grequests | |
| import datetime | |
| import time | |
| import hashlib | |
| import random | |
| import string | |
| import json | |
| API_URL = 'https://feelinsonice.appspot.com/' | |
| TOKENS = { | |
| 'static_token': 'm198sOkJEn37DjqZ32lpRu76xmw288xSQ9', | |
| 'ENCRYPT_KEY_2': 'M02cnQ51Ji97vwT4', | |
| 'req_token_pattern': '0001110111101110001111010101111011010001001110011000110001000110', | |
| 'req_token_secret': 'iEk21fuwZApXlz93750dmW22pw389dPwOk' | |
| } | |
| USER_AGENT = 'Snapchat/4.1.01 (Nexus 4; Android 18; gzip)' | |
| def timestamp(): | |
| n = datetime.datetime.now() | |
| unix_time = time.mktime(n.timetuple()) | |
| return unix_time | |
| def random_string(l=20): | |
| return ''.join(random.choice(string.ascii_uppercase + string.digits) for x in range(l)) | |
| def random_email(): | |
| return "{0}@gmail.com".format(random_string()) | |
| def random_password(): | |
| return random_string(10) | |
| def generate_us_phone_numbers(): | |
| area = 220 | |
| number = 0 | |
| while True: | |
| yield "%s%s" % (area, str(number).zfill(7)) | |
| number += 1000 | |
| s = str(area) | |
| if s[1] == s[2]: | |
| area += 1 | |
| generate_us_phone_numbers() | |
| if number > 9999999: | |
| area += 1 | |
| number = 0 | |
| if number == 9999999 and area == 999: | |
| return | |
| def request_token(auth_token, timestamp): | |
| secret = "iEk21fuwZApXlz93750dmW22pw389dPwOk" | |
| pattern = "0001110111101110001111010101111011010001001110011000110001000110" | |
| first = hashlib.sha256(secret + auth_token).hexdigest() | |
| second = hashlib.sha256(str(timestamp) + secret).hexdigest() | |
| bits = [first[i] if c == "0" else second[i] for i, c in enumerate(pattern)] | |
| return "".join(bits) | |
| def static_request_token(timestamp): | |
| return request_token(TOKENS['static_token'], timestamp) | |
| def login(req_token, username, password): | |
| t = timestamp() | |
| url = API_URL + '/bq/login' | |
| data = { | |
| "req_token": req_token, | |
| "timestamp": t, | |
| "username": username, | |
| "password": password | |
| } | |
| r = requests.post(url, data=data).text | |
| return r | |
| def create_user(): | |
| url = API_URL + '/bq/register' | |
| t = timestamp() | |
| data = { | |
| 'timestamp': t, | |
| 'req_token': static_request_token(t), | |
| 'email': random_email(), | |
| 'password': random_string, | |
| 'age': 23, | |
| 'birthday': '1990-01-21' | |
| } | |
| r = requests.post(url, data=data).json() | |
| if not r['logged']: | |
| create_user() | |
| url2 = API_URL + '/ph/registeru' | |
| data2 = { | |
| 'timestamp': t, | |
| 'req_token': static_request_token(t), | |
| 'email': data['email'], | |
| 'username': random_string() | |
| } | |
| r2 = requests.post(url2, data2).json() | |
| l = login(request_token(r['token'], t), data2['username'], data['password']) | |
| #return { | |
| # 'username': l['username'], | |
| # 'token': l['auth_token'], | |
| # 'email': data['email'] | |
| #} | |
| return l | |
| def find_phone_number(num, user): | |
| n = json.dumps({str(num): random_string()}) | |
| url = API_URL + "/ph/find_friends" | |
| t = timestamp() | |
| data = { | |
| 'username': user['username'], | |
| 'timestamp': t, | |
| 'req_token': request_token(user['token'], t), | |
| 'countryCode': 'US', | |
| 'numbers': n | |
| } | |
| r = requests.post(url, data=data).text | |
| return r | |
| if __name__ == '__main__': | |
| user = create_user() | |
| print user | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment