[LitCTF 2023]debase64-入土为安的第十八天

news2024/9/22 23:23:25

点进去sub_401520(v15, (int)v4)

  if ( !*a1 )
    return 0;
  v2 = a1 + 4;
  v3 = a1;
  v4 = 0;
  v5 = 0;
  v13 = 0;
  while ( 1 )
  {
    v14 = -1;
    for ( i = 0; i != 64; ++i )
    {
      while ( byte_404000[i] != *v3 )
      {
        if ( ++i == 64 )
          goto LABEL_7;
      }
      LOBYTE(v14) = i;
    }
LABEL_7:
    LOBYTE(i) = 0;
    do
    {
      while ( byte_404000[i] != a1[v4 + 1] )
      {
        if ( ++i == 64 )
          goto LABEL_11;
      }
      BYTE1(v14) = i++;
    }
    while ( i != 64 );
LABEL_11:
    v7 = &a1[v4 + 2];
    for ( j = 0; j != 64; ++j )
    {
      while ( byte_404000[j] != *v7 )
      {
        if ( ++j == 64 )
          goto LABEL_15;
      }
      BYTE2(v14) = j;
    }
LABEL_15:
    v9 = &a1[v4 + 3];
    for ( k = 0; k != 64; ++k )
    {
      while ( byte_404000[k] != *v9 )
      {
        if ( ++k == 64 )
          goto LABEL_19;
      }
      HIBYTE(v14) = k;
    }
LABEL_19:
    v12 = v5 + 1;
    *(_BYTE *)(a2 + v5) = (4 * HIBYTE(v14)) | (BYTE2(v14) >> 4) & 3;
    if ( *v7 == '=' )
      return v12;
    v12 = v5 + 2;
    *(_BYTE *)(a2 + v5 + 1) = (16 * BYTE2(v14)) | (BYTE1(v14) >> 2) & 0xF;
    if ( *v9 == '=' )
      return v12;
    v5 += 3;
    v3 = v2;
    v2 += 4;
    v13 += 4;
    v4 = v13;
    *(_BYTE *)(a2 + v5 - 1) = (BYTE1(v14) << 6) | v14 & 0x3F;
    if ( !*(v2 - 4) )
      return v5;
  }
}
  • 取 chunk 的第三个字节的低 6 位,映射到 Base64 字符。
  • 取 chunk 的第二个字节的低 4 位,左移 2 位,加入 chunk 的第三个字节的高 2 位,映射到 Base64 字符。
  • 取 chunk 的第一个字节的低 2 位,左移 4 位,加入 chunk 的第二个字节的高 4 位,映射到 Base64 字符。
  • 取 chunk 的第一个字节的高 6 位,映射到 Base64 字符。
def custom_base64_encode(input_bytes):
    basetable = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
    # 以每三个字节为一组进行处理
    output = []

    # 确保输入长度为16字节
    input_bytes = input_bytes.ljust(16, b'\0')

    for i in range(0, len(input_bytes), 3):
        chunk = input_bytes[i:i + 3]
        number = 0

        if len(chunk) > 2:
            number += chunk[2] & 0x3F
            output.append(basetable[number])
        else:
            output.append(basetable[0])

        number = 0
        if len(chunk) > 1:
            number += chunk[1] & 0x0F
            number <<= 2
            number += chunk[2] >> 6
            output.append(basetable[number])
        else:
            output.append(basetable[0])

        number = 0
        if len(chunk) > 0:
            number += chunk[0] & 0x03
            number <<= 4
            if len(chunk) > 1:
                number += chunk[1] >> 4
            output.append(basetable[number])
        else:
            output.append(basetable[0])

        number = 0
        if len(chunk) > 0:
            number += chunk[0] >> 2
            output.append(basetable[number])
        else:
            output.append(basetable[0])

    return ''.join(output)


# 定义输入字节数据
input_bytes = bytes([
    0x46, 0xED, 0x18, 0x96, 0x56, 0x9E, 0xD2, 0x72, 0xB2, 0xB3, 0x80, 0x70, 0xFF
])

encoded_string = custom_base64_encode(input_bytes)
print("编码结果:", encoded_string)

Y0uReallyKn0wB4sAAw/AAAA 

import hashlib

key = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
for i in key:
    str1 = "Y0uReallyKn0wB4s" + i + "==="
    if hashlib.md5(str1.encode('utf-8')).hexdigest() == "5a3ebb487ad0046e52db00570339aace":
        print(str1)
        break

Y0uReallyKn0wB4s3===

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2034288.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【三维重建】SpotlessSplats:去除瞬态干扰物的三维高斯喷溅(3DGS)

代码&#xff1a;https://spotlesssplats.github.io 论文&#xff1a;https://arxiv.org/pdf/2406.20055 来源&#xff1a;DeepMind&#xff0c;多伦多大学&#xff0c;斯坦福大学&#xff0c;西蒙弗雷泽大学 提示&#xff1a;关注B站【方矩实验室】&#xff0c;查看视频讲解…

【SQL】有趣的电影

目录 题目 分析 代码 题目 表&#xff1a;cinema -------------------------- | Column Name | Type | -------------------------- | id | int | | movie | varchar | | description | varchar | | rating | float | -…

JDBC如何避免SQL注入

JDBC如何避免SQL注入 一 . 什么是SQL注入 SQL注入&#xff08;SQL Injection&#xff09;是一种代码注入技术&#xff0c;它允许攻击者将或“注入”恶意的SQL命令到后端数据库引擎执行。这些恶意的SQL命令可以执行未授权的数据库查询、修改数据、管理数据库服务器上的文件系统…

2024.8.12 作业

TCP服务器端代码实现 #include <myhead.h> #define SER_PORT 6666 #define SER_IP "192.168.254.129" int main(int argc,const char *argv[]) {//1.创建套接字文件int sfd socket(AF_INET,SOCK_STREAM,0);if(sfd-1){perror("socket error");retur…

Echarts-GL和three.js对比,实力在一个档次么?

我们都知道echarts非常好用&#xff0c;简单配置就可以实现各式各样的图表下过&#xff0c;echarts有一个扩展叫echarts-GL&#xff0c;可以实现三维图表效果&#xff0c;那么和three.js相比呢&#xff1f; 一、Echarts-GL的来源 ECharts-GL 是百度开源的一款基于 WebGL 的数据…

PMP和PMI-ACP 考哪个证书好,还是两个都考?

PMP是一个由美国项目管理协会&#xff08;PMI&#xff09;发起的项目管理专业人士或专家资格认证&#xff0c;它评估从业者领导和引导项目团队的能力。PMP在中国早已推广&#xff0c;基于系统项目管理的框架体系&#xff0c;是项目管理领域的基本要求。这个证书知名度很高&…

为什么要加强产供协同管理?可以从哪些方面提高产供协同效率?

随着市场竞争的加剧和客户需求的多变&#xff0c;企业之间的竞争已经转变为供应链之间的竞争。在这一背景下&#xff0c;产供协同管理显得尤为重要。本文将概述加强产供协同管理的必要性&#xff0c;探讨其在提升企业响应速度、优化库存、增强客户满意度和降低成本方面的作用&a…

【数学建模备赛】Ep02:TOPSIS模型(优劣解距离法)

文章目录 一、前言&#x1f680;&#x1f680;&#x1f680;二、TOPSIS法&#xff1a;☀️☀️☀️1. 引入&#xff08;综合类评价问题&#xff09;1.1 分析层次分析法的局限1.2 小例子①给出评分类比权重②构造计算评分的公式③解释④拓展问题&#xff08;增加指标个数&#x…

JVM知识总结(类加载器)

文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 文章收录在网站&#xff1a;http://hardyfish.top/ 类加载器 Bootstrap引导类加载器 引导类加载器也被称为启动类加载…

计算机系统基础知识:数据表示及运算

计算机系统基础知识 1. 计算机系统基本组成2. 数据表示及运算2.1 数据表示进位计数值及其转换机器数和码制定点数和浮点数十进制编码ASCII码汉字编码Unicode 2.2 校验码2.3 逻辑代数及运算2.4 机器数的运算机器数的加减运算机器数的乘除运算浮点运算 1. 计算机系统基本组成 计…

opencv-python图像增强二:图像去雾(暗通道去雾)

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 一、简介&#xff1a;二、暗通道去雾方案简述&#xff1a;三、算法实现步骤3.1最小值滤波3.2 引导滤波3.3 计算图像全局光强 四&#xff1a;整体代码实现五&#xf…

iLight混合点光源 激光与LED技术的结合

51camera机器视觉产品资料查询平台的光源种类比较丰富&#xff0c;今天我们一起来看看其合作厂商iCore的明星产品iLight混合点光源&#xff0c;该产品提供了比LED更高的亮度&#xff0c;作为传统LED和氙气灯的替代品&#xff0c;它将激光和LED技术的结合&#xff0c;提供了长达…

创建vscode debug环境

c语言或者其他语言在 字符串指针使用细节很多&#xff0c;你不能编译整个镜像下载在设备里来调试。这些在一个.c文件里需要验证的细节&#xff0c;可以在vscode里创建一个main函数调试 1&#xff0c;环境创建 主要参考下面链接&#xff1a; 如何在VScode中让printf输出中文…

【项目】基于Vue2+Router+Vant 前端面经项目

环境配置 Vue脚手架的创建 在终端中打开输入 vue create 项目包名 -m npm注意⚠️&#xff1a;项目名称不再允许包含大写字母。 选择第三项 3.选择要安装的模块 从上到下的功能模块&#xff1a; Babel - ES&#xff1a;降级处理Router-Vue&#xff1a;路由插件CSS预处理器E…

基于STM32开发的智能家居照明控制系统

目录 引言环境准备工作 硬件准备软件安装与配置系统设计 系统架构硬件连接代码实现 初始化代码控制代码应用场景 家庭照明自动化节能照明管理常见问题及解决方案 常见问题解决方案结论 1. 引言 智能家居照明控制系统通过整合各种传感器和控制器&#xff0c;能够实现对家居照…

[全文]买椟还珠和坏事变好事?《分析模式》漫谈19

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 “Analysis Patterns”的第一章有这么一句&#xff1a; Modeling in a programming language also presents the danger of tying the models to that language. The model may use f…

pythonUI自动化008::allure测试报告(安装及应用)

allure报告预览 1 下载jdk&#xff0c;配置jdk Path变量&#xff1a; https://www.cnblogs.com/FBGG/p/15103119.html&#xff08;这里不作阐述&#xff0c;请看该偏文章配置即可&#xff09; 2 下载allure驱动&#xff0c;配置allure Path变量&#xff1a; 下载allure驱动&a…

Springboot 开发之 Quartz 任务调度框架简介

引言 Quartz Scheduler是一个功能丰富的开源作业调度库&#xff0c;它允许开发人员以灵活的方式创建和管理定时任务。以下是对Quartz Scheduler的详细解析&#xff1a; 官网地址&#xff1a;https://www.quartz-scheduler.org/w3cschool 官方文档&#xff1a;https://www.w3c…

离子交换技术:助力电池材料纯度提升的环保解决方案

在新能源技术迅猛发展的今天&#xff0c;电池正极材料的生产和性能成为了科研与工业界的关注焦点。特别是锂离子电池&#xff0c;其广泛运用于电动汽车和各类便携式电子设备中&#xff0c;对电池性能的要求日益严苛。电池正极材料中的球形氢氧化镍直接影响着电池的充放电效率、…

PhotoShop - 初级抠图

1. 调整边缘 1.1 快速选择工具 使用快速选择工具&#xff0c;photoshop会智能的去识别图像中的边缘部分并以此选区 1.2 参数调整 使用快速选择工具选区之后&#xff0c;实际上很多边缘部分是识别不明确的&#xff0c;所以我们需要进一步调节参数使得选区中的边缘识别更加明…