CTF密码学实战:5种Base编码变种题解与Python实现(附完整代码)
CTF密码学实战:5种Base编码变种题解与Python实现(附完整代码)
在CTF竞赛中,Base系列编码题目几乎每年都会出现在密码学赛道。这类题目看似简单,但实际解题时往往会遇到自定义编码表、多层嵌套、混合加密等复杂情况。本文将深入剖析Base16/32/64及其变种的实战解法,通过5道典型赛题还原真实解题思路,并提供可直接复用的Python代码实现。
1. 自定义Base64变表破解实战
题目场景:2020年某CTF赛事中出现了一道Base64变表题,给出密文"q3b0p1="和自定义编码表"XYZABCDEFGHIJKLMNOPQRSTUVWxyz0123456789+/"。
这类题目的核心解题步骤:
- 构建标准Base64编码表与自定义表的映射关系
- 将密文字符逐个转换为标准表对应字符
- 使用标准Base64解码
import base64 custom_table = "XYZABCDEFGHIJKLMNOPQRSTUVWxyz0123456789+/" standard_table = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/" cipher = "q3b0p1=" translation = str.maketrans(custom_table, standard_table) standard_cipher = cipher.translate(translation) plaintext = base64.b64decode(standard_cipher).decode('utf-8') print(f"解密结果: {plaintext}")注意:实际比赛中可能遇到大小写敏感问题,需要仔细核对编码表字符顺序
2. 多层Base编码嵌套破解
典型特征:题目给出经过多次Base编码的密文,常见组合如Base64→Base32→Base16。2021年新生赛某题就是典型案例。
破解策略:
- 观察密文字符特征判断最后一步编码类型
- 按编码层级逆向解码
- 设置循环终止条件(解码后不再符合Base特征)
from base64 import b16decode, b32decode, b64decode import re def auto_decode(cipher): while True: try: if re.match(r'^[A-Z2-7=]+$', cipher): cipher = b32decode(cipher).decode('utf-8') print(f"Base32解码: {cipher}") elif re.match(r'^[A-Za-z0-9+/=]+$', cipher): cipher = b64decode(cipher).decode('utf-8') print(f"Base64解码: {cipher}") elif re.match(r'^[0-9A-F=]+$', cipher): cipher = b16decode(cipher).decode('utf-8') print(f"Base16解码: {cipher}") else: break except: break return cipher cipher = "1L2V3C1R3C1J3C1J3C1R3C1R3C1J3C==" print(f"最终明文: {auto_decode(cipher)}")3. Base与古典密码混合题型
2023年某赛题解法:题目先进行Base64编码,再用凯撒密码加密,最后用栅栏密码混淆。
解题流程:
- 尝试栅栏密码解密(需测试不同栏数)
- 识别Base64特征(结尾可能有=)
- 凯撒密码爆破常见偏移量
from base64 import b64decode from itertools import product def rail_fence_decrypt(cipher, rails): matrix = [['' for _ in range(len(cipher))] for _ in range(rails)] dir_down = None row, col = 0, 0 for i in range(len(cipher)): if row == 0 or row == rails-1: dir_down = not dir_down matrix[row][col] = '*' col += 1 row += 1 if dir_down else -1 index = 0 for i in range(rails): for j in range(len(cipher)): if matrix[i][j] == '*' and index < len(cipher): matrix[i][j] = cipher[index] index += 1 result = [] row, col = 0, 0 dir_down = True for _ in range(len(cipher)): if row == 0 or row == rails-1: dir_down = not dir_down if matrix[row][col] != '*': result.append(matrix[row][col]) col += 1 row += 1 if dir_down else -1 return ''.join(result) def caesar_decrypt(text, shift): result = "" for char in text: if char.isupper(): result += chr((ord(char) - shift - 65) % 26 + 65) elif char.islower(): result += chr((ord(char) - shift - 97) % 26 + 97) else: result += char return result cipher = "VmpKMFUxTnRWbk5qUlZKU1ltdGFjRlpxU2t0aFZtOTNUMFJHYTAxV1JqTlVWekZ6V2xkV2VtTXpWbXhTYlZKd1ZXMTRhazlYVWtoWFdHUlBUV3RhY2xSc1VtOVNWRlp2V2tSS2FrMVhVbkphVjNoMFRVUkZkMDVFV1RCT2VrVjRXbFJSTlU5VVVUSk9SR2N5VG1wWmVrNXFXVEZPZWtVd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDBSQk1rMTZWVFJPUkZrelQwUlJNazVFVlRKT1JFMHdUMFJCTUU5VVVUSk9SR3N3V2xSUk1FMTZXVEpPUkdjeFRtcFplazU2VVRKT1JHTjVUWHBOTUU1NlNUSk9SR042VG1wWk1rNUVWVEpPUkUwd1QwUkJNMDVFVVRCT1JGa3hUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVEpPUkUwd1RsUk5NazE2VVRST1JHTXhUbXBaZWs1NlNUSk9SR042VDFSUk1rNUVWVE