def home(request, code=None): form = SignupForm(request.POST or None) if request.method == 'POST': if form.is_valid(): signup = form.save() request.session['code'] = base36.base36encode(signup.pk) if code: try: signup_inviter = Signup.objects.get(pk=base36.base36decode(code.upper())) signup_inviter.invitees = F('invitees') + 1 signup_inviter.save() except Exception, e: pass return redirect(reverse('launch_app_success')) else: # If user has signed up already, show the invite code try: signup = Signup.objects.get(email=form.data.get('email', '')) return render_to_response('launch/already_registered.html', { 'code': base36.base36encode(signup.pk).lower() }, context_instance=RequestContext(request)) except: pass
def post(self): img = self.request.get("imgfile") if not img: self.response.write("error!") else: image = models.Image(image=db.Blob(img)) image.put() num = 0 short = models.ImageKeyRel.gql("WHERE short != -1 ORDER BY short DESC").fetch(limit=1) if short: num = short[0].short + 1 rel = models.ImageKeyRel(key_=str(image.key()), short=num) rel.put() self.response.out.write('<meta http-equiv="refresh" content=".5;URL=/' + base36.base36encode(num) + '">')
def hello(): url = request.args.get("url", "") alias = request.args.get("alias", "") origin_url = redis_get_url_by_key(alias) if origin_url == url: return "%s is created!" % alias; if origin_url is None and len(alias) > 0: redis_set_number_url(base36decode(alias), url) return "%s is created!" % alias; alias = redis_get_alias_by_url(url) if alias is not None: return "%s is created!" % alias; count = int(redis_get_unused_number()) alias = base36encode(count) redis_set_number_url(count, url) return "%s is created!" % alias;
def post(self): img = self.request.get("imgfile") if not img: self.response.write("error!") else: image = models.Image(image=db.Blob(img)) image.put() num = 0 short = models.ImageKeyRel.gql( "WHERE short != -1 ORDER BY short DESC").fetch(limit=1) if short: num = short[0].short + 1 rel = models.ImageKeyRel(key_=str(image.key()), short=num) rel.put() self.response.out.write( '<meta http-equiv="refresh" content=".5;URL=/' + base36.base36encode(num) + '">')
def update_all_reddits(self, smallest_id, largest_id): # http://www.reddit.com/dev/api # t3_ means link # example: # http://www.reddit.com/by_id/t3_zcd40t3_zcd41,t3_zcd42,t3_zcd43/.json print "Attempting to download all reddit submissions between id: ", smallest_id, " and ", largest_id i = 0 entries_written = 0 entries_non_existent = 0 while smallest_id < largest_id: i += 1 # Debug printing every 50 runs (after processing 5000 entries) ~ every 100 seconds: if (i - 1) % 50 == 0: #if self.db_manager.new_rows_written % 1000 == 0 and self.db_manager.new_rows_written != 0: print "Entries written: ", entries_written, " [Non-existent: ", entries_non_existent, "] - on id: ", smallest_id url = "http://www.reddit.com/by_id/" submissions_to_fetch_int = set() # Queue up 100 submissions to fetch which the database does not currently contain while smallest_id < largest_id and len(submissions_to_fetch_int) < ENTRIES_TO_FETCH: # print "row_id = ", most_recent_id if not self.db_manager.row_exists(smallest_id): submissions_to_fetch_int.add(smallest_id) smallest_id += 1 # Create a URL string for the query submissions_to_fetch_str = [] for s in submissions_to_fetch_int: submissions_to_fetch_str.append("t3_" + base36encode(s)) url += ','.join(submissions_to_fetch_str) # Query for the submissions submissions = None try: submissions = self.r.request_json(url, params={'limit': 100}, data=None, as_objects=True, retry_on_error=True) # print submissions submissions = submissions['data']['children'] except: print "Error when trying to fetch url: ", url submissions_fetched_int = set() if submissions: for submission in submissions: self.__update_given_submission(submission) entries_written += 1 submission_id = base36decode(submission.id) submissions_fetched_int.add(submission_id) # subtract submissions_fetched_int from submissions_to_fetch_int submissions_not_fetched = submissions_to_fetch_int.difference(submissions_fetched_int) for submission_id in submissions_not_fetched: # Mark nonexistent entries if not self.db_manager.row_exists(submission_id): non_existent_entry = Submission.non_existent_submission(submission_id) self.db_manager.insert_submission(non_existent_entry) entries_non_existent += 1
def redis_get_alias_by_url(url): if r.hexists(REDIS_URL2NUMBER, url): number = int(r.hget(REDIS_URL2NUMBER, url)) if number <= int(r.get(REDIS_COUNT)): return base36encode(number) return None
def record(name, secret): val = hashlib.sha224(name + secret + local_secret).hexdigest() hashval = base36encode(int(val, 16)) key = name + '.' + hashval + base return key
#!/usr/bin/env python2 from pwn import * from morse_talk import decode, encode import binascii import hashlib from base36 import base36decode, base36encode r = remote("morset.pwning.xxx", 11821) p = r.recv() print binascii.unhexlify("0{:02x}".format(base36decode(decode(p)))) temp = binascii.unhexlify("0{:02x}".format(base36decode( decode(p)))).split("SHA256(")[1][:-2] print "to hash is: %s" % temp h = hashlib.new("sha256") h.update(temp) print "hexdigest: %s" % h.hexdigest() print "hexlified: %s" % binascii.hexlify(h.hexdigest()) print "base36ed: %s" % base36encode(int(binascii.hexlify(h.hexdigest()), 16)) r.sendline(encode(base36encode(int(binascii.hexlify(h.hexdigest()), 16)))) import time time.sleep(1) rep = r.recv().rstrip().strip() print "rep is: %s" % rep print binascii.unhexlify("{:02x}".format(base36decode(decode(rep))))
IMAGE_URL_TEMPLATE = Template(IMAGE_URL_TEMPLATE_STRING) # Generator and matching regex for image IDs IMAGE_ID_GENERATOR = lambda: str(uuid.uuid4()) IMAGE_ID_REGEX = r'([\w]{8}-[\w]{4}-[\w]{4}-[\w]{4}-[\w]{12})' # Regex for valid file extensions FILE_EXT_REGEX = r'(\.(?:BMP|bmp|JPG|jpg|JPEG|jpeg|PNG|png|gif|GIF|tif|TIF|tiff|TIFF))?' # URL regex for all images IMAGE_URL_REGEX = IMAGE_URL_TEMPLATE.substitute({'album_id': ALBUM_ID_REGEX, 'image_id': IMAGE_ID_REGEX + FILE_EXT_REGEX}) # URL prefix for all shareable items SHARE_ROOT_URL = '/share' # Function to generate a random index for all shareable items SHARE_INDEX_GENERATOR = lambda: random.randint(0, sys.maxint) # Template to generate a shareable URL SHARE_URL_TEMPLATE_STRING = SHARE_ROOT_URL + '/${hash}' SHARE_URL_TEMPLATE = Template(SHARE_URL_TEMPLATE_STRING) # Generator and matching regex for shareable URL hashes SHARE_HASH_GENERATOR = lambda index: base36encode(index) SHARE_HASH_REGEX = r'([0-9a-z]{1,' + str(len(str(sys.maxint))) + '})' # URL regex for all shareable items SHARE_URL_REGEX = SHARE_URL_TEMPLATE.substitute({'hash': SHARE_HASH_REGEX + FILE_EXT_REGEX})
#!/usr/bin/env python2 from pwn import * from morse_talk import decode, encode import binascii import hashlib from base36 import base36decode, base36encode r = remote("morset.pwning.xxx", 11821) p = r.recv() print binascii.unhexlify("0{:02x}".format(base36decode(decode(p)))) temp = binascii.unhexlify("0{:02x}".format(base36decode(decode(p)))).split("SHA256(")[1][:-2] print "to hash is: %s" % temp h = hashlib.new("sha256") h.update(temp) print "hexdigest: %s" % h.hexdigest() print "hexlified: %s" % binascii.hexlify(h.hexdigest()) print "base36ed: %s" % base36encode(int(binascii.hexlify(h.hexdigest()),16)) r.sendline(encode(base36encode(int(binascii.hexlify(h.hexdigest()),16)))) import time; time.sleep(1) rep = r.recv().rstrip().strip() print "rep is: %s" % rep print binascii.unhexlify("{:02x}".format(base36decode(decode(rep))))