Skip to content

Instantly share code, notes, and snippets.

@4k1
Created March 24, 2017 07:38
Show Gist options
  • Save 4k1/94cd13d767e5e43c614aa1b160fbe93f to your computer and use it in GitHub Desktop.
Save 4k1/94cd13d767e5e43c614aa1b160fbe93f to your computer and use it in GitHub Desktop.
(A series of `no one needs now but might be useful someday`) Make base64-encoded-characters including specific characters.
#! /usr/bin/env python
# -*- coding:utf-8 -*-
# try `b64make`
# > b64make
# [+] stream : "b64make"
# [+] patterns : 29
# [+] hit. [b64makE=] = 0x6fae266a41
# [+] hit. [B64makE=] = 0x07ae266a41
# [+] hit. [B64makE=] = 0x07ae266a41
# [+] hit. [B64makE=] = 0x07ae266a41
# [+] hit. [B64MakE=] = 0x07ae0c6a41
# [+] hit. [B64MAkE=] = 0x07ae0c0241
# [+] hit. [B64MAKE=] = 0x07ae0c00a1
# [ ] hit = 7, miss = 22, err = 0
# [+] fin.
import base64
import binascii
findc = raw_input('> ')
findl = []
# Make list of character patterns
findl.append(findc.lower())
for fixed in range(0, len(findc)):
lf = findc[0:fixed].upper()
rf = findc[fixed:].lower()
for point in range(0, len(rf)):
l = rf[0:point].lower()
m = rf[point:point+1].upper()
r = rf[point+1:].lower()
findl.append(lf + l + m + r)
print("[+] stream : \"" + findc.lower() + "\"")
print("[+] patterns : " + str(len(findl)))
# Make padding
padc = ""
pad = 4 - len(findc) % 4
if pad != 4:
padc = "=" * pad
# Check BASE64 string
hit = mis = err = 0
for v in findl:
try:
b64s = v + padc
b = base64.b64decode(b64s)
b64d = base64.b64encode(b)
if b64s.lower() == b64d.lower():
print("[+] hit. [" + b64d + "] = 0x" + binascii.hexlify(b))
hit += 1
else:
#print(" miss. [" + b64s + "] != [" + b64d + "]")
mis += 1
except:
err += 1
# Finalize
print("[ ] hit = " + str(hit) + ", miss = " + str(mis) + ", err = " + str(err))
print("[+] fin.")
exit()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment