Skip to content

Instantly share code, notes, and snippets.

@vvanglro
Created June 18, 2024 09:58
Show Gist options
  • Save vvanglro/972afadba086ae4e393e9b08e00792a7 to your computer and use it in GitHub Desktop.
Save vvanglro/972afadba086ae4e393e9b08e00792a7 to your computer and use it in GitHub Desktop.
import base64
import random
import string
chars = string.ascii_letters + string.digits
def base64_encode(data):
encoded_bytes = base64.b64encode(data.encode("utf-8"))
return encoded_bytes.decode("utf-8")
def base64_decode(encoded_data):
decoded_bytes = base64.b64decode(encoded_data.encode("utf-8"))
return decoded_bytes.decode("utf-8")
# 混淆编码
def obfuscate_base64(encoded_data, positions):
encoded_list = list(encoded_data)
# 逆序插入字符,确保位置不变
for pos in sorted(positions, reverse=True):
if pos < len(encoded_list):
encoded_list.insert(pos, random.choice(chars))
return "".join(encoded_list)
# 解混淆
def deobfuscate_base64(obfuscated_data, positions):
obfuscated_list = list(obfuscated_data)
for pos in positions:
if pos < len(obfuscated_list):
del obfuscated_list[pos]
deobfuscated_data = "".join(obfuscated_list)
return deobfuscated_data
# 生成固定插入位置
def generate_fixed_positions(length):
return [i for i in range(0, length, 2)]
# 示例
data = "wd98"
encoded_data = base64_encode(data)
print(f"Original Encoded Data: {encoded_data}")
positions = generate_fixed_positions(len(encoded_data))
print(f"Positions: {positions}")
# 混淆编码数据
obfuscated_data = obfuscate_base64(encoded_data, positions)
print(f"Obfuscated Encoded Data: {obfuscated_data}")
# 解混淆编码数据
deobfuscated_data = deobfuscate_base64(obfuscated_data, positions)
print(f"Deobfuscated Encoded Data: {deobfuscated_data}")
decoded_data = base64_decode(deobfuscated_data)
print(f"Decoded Data: {decoded_data}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment