当前位置: 首页 > news >正文

CryptoHack 简介

CryptoHack 简介

文章目录

    • CryptoHack 简介
      • 一、python的安装,运行
      • 二、ASCII码
      • 三、十六进制
      • 四、Base64
      • 五、字节和大整数
      • 六、XOR
        • 1.基本
        • 2.xor属性
        • 3.xor隐藏字节
        • 4.cryptohack——You either know, XOR you don't

一、python的安装,运行

二、ASCII码

  1. chr()函数可用于将 ASCII 序数转换为字符(该ord()函数执行相反的操作)。

  2. a=[99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 114, 49, 110, 116, 52, 98, 108, 51, 125]
    for i in range(len(a)):print(chr(a[i]))
    #crypto{ASCII_pr1nt4bl3}
    

三、十六进制

  1. 首先,根据 ASCII 表将每个字母转换为序数。然后将十进制数转换为以 16 为基数的数字,也称为十六进制。这些数字可以组合在一起,形成一个长的十六进制字符串。

  2. 在 Python 中,该bytes.fromhex()函数可用于将十六进制转换为字节。.hex()可以对字节字符串调用实例方法来获取十六进制表示形式。

  3. a="63727970746f7b596f755f77696c6c5f62655f776f726b696e675f776974685f6865785f737472696e67735f615f6c6f747d"
    print(bytes.fromhex(a))
    #b'crypto{You_will_be_working_with_hex_strings_a_lot}'
    

四、Base64

  1. Base64,它允许我们使用 64 个字符的字母表将二进制数据表示为 ASCII 字符串。Base64 字符串的一个字符编码 6 个二进制数字(位),因此 Base64 的 4 个字符编码 3 个 8 位字节。

  2. 在 Python 中,使用 导入 base64 模块后import base64,即可使用该base64.b64encode()函数。请记住先解码十六进制,如挑战描述所述。

  3. import base64
    a="72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf"
    print(base64.b64encode(bytes.fromhex(a)))
    #crypto/Base+64+Encoding+is+Web+Safe/
    

五、字节和大整数

  1. 最常见的方法是获取消息的序数字节,将其转换为十六进制,然后连接起来。这可以解释为 16 进制/十六进制数字,也可以用 10 进制/十进制表示。

  2. 消息:HELLO
    ascii 字节:[72, 69, 76, 76, 79]
    十六进制字节:[0x48, 0x45, 0x4c, 0x4c, 0x4f]
    十六进制:0x48454c4c4f
    十进制:310400273487

  3. Python 的 PyCryptodome 库使用方法bytes_to_long()和来实现这一点long_to_bytes()。您首先必须安装 PyCryptodome 并使用导入它from Crypto.Util.number import *

  4. from Crypto.Util.number import *
    a=11515195063862318899931685488813747395775516287289682636499965282714637259206269
    print(long_to_bytes(a))
    b'crypto{3nc0d1n6_4ll_7h3_w4y_d0wn}'
    

六、XOR

1.基本
  • 对于较长的二进制数,我们逐位进行异或:0110 ^ 1010 = 1100。我们可以先将整数从十进制转换为二进制,然后对整数进行异或。我们可以先将每个字符转换为表示 Unicode 字符的整数,然后对字符串进行异或。
  • 给定字符串label,将每个字符与整数13进行异或。将这些整数转换回字符串并将标志提交为crypto{new_string}。Pythonpwntools库有一个方便的xor()函数,可以将不同类型和长度的数据异或在一起。但首先,您可能需要实现自己的函数来解决这个问题。
from pwn import xor# 定义字符串
label = "label"# 将字符串转换为字节
label_bytes = label.encode()# 使用 pwntools 的 xor 函数进行 XOR 操作
new_bytes = xor(label_bytes, 13)# 将结果转换回字符串
new_string = new_bytes.decode()# 格式化输出
flag = f"crypto{{{new_string}}}"
print(flag)
2.xor属性

使用 XOR 运算符解决挑战时,我们应该考虑四个主要属性

交换律:A ⊕ B = B ⊕ A
结合律:A ⊕ (B ⊕ C) = (A ⊕ B) ⊕ C恒
等式:A ⊕ 0 = A
自逆:A ⊕ A = 0

from pwn import xork1=bytes.fromhex("a6c8b6733c9b22de7bc0253266a3867df55acde8635e19c73313")
k12=bytes.fromhex("37dcb292030faa90d07eec17e3b1c6d8daf94c35d4c9191a5e1e")
k2=xor(k1,k12)
k23=bytes.fromhex(" c1545756687e7573db23aa1c3452a098b71a7fbf0fddddde5fc1")
k3=xor(k2,k23)
flag_xor=bytes.fromhex("04ee9855208a2cd59091d04767ae47963170d1660df7f56f5faf")
flag=xor(k1,k2,k3,flag_xor)
print(flag)
#b'crypto{x0r_i5_ass0c1at1v3}'
3.xor隐藏字节
#我使用 XOR 与单个字节隐藏了一些数据,但该字节是秘密。别忘了先从十六进制解码。#73626960647f6b206821204f21254f7d694f7624662065622127234f726927756dfrom pwn import xor# 已知的十六进制加密数据
encrypted_hex = "73626960647f6b206821204f21254f7d694f7624662065622127234f726927756d"
encrypted_bytes = bytes.fromhex(encrypted_hex)# 尝试所有可能的单字节密钥
for key in range(256):decrypted = xor(encrypted_bytes, key)try:# 尝试解码成可读字符串result = decrypted.decode("utf-8")print(f"Key: {key} -> {result}")except UnicodeDecodeError:# 跳过不可解码的字节组合continue
#crypto{0x10_15_my_f4v0ur173_by7e}
4.cryptohack——You either know, XOR you don’t

在这里插入图片描述
在这里插入图片描述

相关文章:

CryptoHack 简介

CryptoHack 简介 文章目录 CryptoHack 简介一、python的安装,运行二、ASCII码三、十六进制四、Base64五、字节和大整数六、XOR1.基本2.xor属性3.xor隐藏字节4.cryptohack——You either know, XOR you dont 一、python的安装,运行 二、ASCII码 chr()函数…...

transformControls THREE.Object3D.add: object not an instance of THREE.Object3D.

把scene.add(transformControls);改为scene.add(transformControls.getHelper());...

游戏开发与游戏运营:哪个更难?

在探讨游戏产业时,游戏开发和游戏运营是两个至关重要的环节。它们各自承担着不同的职责,共同推动着游戏产品的成功与发展。然而,关于哪个环节更难的问题,并没有一个绝对的答案,因为两者都涉及复杂的流程、专业技能和独…...

大模型在自动化渗透测试中的应用

1. 引言 随着人工智能技术的快速发展,特别是大模型(如GPT-3、GPT-4等)的出现,自动化渗透测试领域迎来了新的机遇。大模型具有强大的自然语言处理能力和生成能力,能够在多个环节提升渗透测试的效率和准确性。本文将详细…...

《AI在企业战略中的关键地位:以微软和阿里为例》

内容概要 在当今商业环境中,人工智能(AI)的影响力如滔滔洪水,愈演愈烈。文章将揭示AI在企业战略中的崛起,尤其以微软和阿里巴巴为代表的企业,这两家科技巨头通过不同方式,将智能技术融入其核心…...

C语言 | Leetcode C语言题解之第537题复数乘法

题目: 题解: bool parseComplexNumber(const char * num, int * real, int * image) {char *token strtok(num, "");*real atoi(token);token strtok(NULL, "i");*image atoi(token);return true; };char * complexNumberMulti…...

Vue如何实现数据的双向绑定和局部更新?

1、Vue如何实现数据的双向绑定和局部更新? Vue.js中数据的双向绑定和局部更新可以通过v-model指令来实现。v-model是一个内置的双向数据绑定机制,用于将输入元素(如input、textarea、select等)与Vue实例的数据进行双向绑定。 在…...

java学习1

一、运算符 1.算术运算符 在代码中,如果有小数参与计算,结果有可能不精确 1-1.隐式转换和强制转换 数字进行运算时,数据类型不一样不能运算,需要转成一样的,才能运算 (1)隐式转换&#xff1a…...

如何缩小PPT演示文稿的大小?

有时候PPT的磁盘空间一不小心就变得意想不到的大,比如上百MB,该如何缩小PPT的大小从而便于上传或者携带呢? 导致PPT大的原因: 媒体文件在插入或者复制到演示文稿里会被直接涵盖在其中(.pptx版本)&#xf…...

闯关leetcode——234. Palindrome Linked List

大纲 题目地址内容 解题代码地址 题目 地址 https://leetcode.com/problems/palindrome-linked-list/description/ 内容 Given the head of a singly linked list, return true if it is a palindrome or false otherwise. Example 1: Input: head [1,2,2,1] Output: tru…...

通过源码分析类加载器里面可以加载的类

类列表 每一个ClassLoader里面的类列表,类的数量都是固定的。 对上一节中的dex反编译 使用DexClassLoader类动态加载插件dex   利用jadx对dex进行反编译可以看到有哪些类 源码分析 BaseDexClassLoader 从BaseDexClassLoader类加载器开始分析 在BaseDexClassLoade…...

RSA算法:数字安全的基石

## RSA算法:数字安全的基石 RSA算法是现代密码学的重要组成部分,它为安全通信和数据保护提供了坚实的基础。本文将探讨RSA算法的基本原理、实施过程以及实际应用场景。 ### 一、RSA算法概述 RSA(Rivest-Shamir-Adleman)算法是由…...

DPDK高性能处理框架VPP

VPP 环境安装 $ git clone -b stable/1801 https://github.com/FDio/vpp.git $ ./extras/vagrant/build.sh && make 在编译成功以后,会生成上图红色的 deb 表 $ dpkg –i vpp-lib_18.01.2-1~g9b554f3_amd64.deb $ dpkg –i vpp_18.01.2-1~g9b554f3_amd…...

Spring工厂方式实现实例化bean有哪些方式?

在Spring框架中,实例化Bean的方式有多种,其中通过工厂方法(Factory Method)来创建Bean是一种常见的方式。这种方式允许你通过自定义的工厂类或静态方法来生成Bean实例,从而提供了更灵活和复杂的实例化逻辑。 以下是Sp…...

衡石分析平台系统分析人员手册-指标分析看板

指标分析看板为业务指标量身打造的分析看板。拖拽指标就可形成看板,通过点选对指标分析图表进行配置,整个过程简单易上手。分析人员根据业务分析场景制作图表,无需对指标的数据进行再次加工处理。 指标分析是为业务指标定制的看板&#xff0…...

《C++17 结构化绑定:解锁不同类型处理的秘籍》

在 C17 中,结构化绑定是一个强大且引人注目的特性。它为开发者处理复杂的数据结构和多种类型的返回值提供了一种简洁而高效的方式。然而,正确处理不同类型的绑定和初始化问题是充分发挥这一特性优势的关键。 理解结构化绑定的本质 结构化绑定允许我们使…...

大型音频模型:AudioLLMs

大型音频模型(Large Audio Models,简称AudioLLMs)是近年来人工智能领域的一个重要研究方向,它们基于深度学习和大模型架构,能够处理和理解复杂的音频数据。以下是对大型音频模型的研究综述: 1. 引言 随着…...

【ShuQiHere】️理解Python中的相对路径:使用 `..` 和 `.` 的指南

【ShuQiHere】️🌟 目录 引言什么是相对路径?路径中使用 . 和 ..相对路径的示例使用子文件夹中的数据使用相对路径的最佳实践结论进一步探索 引言 🌍 在Python编程中,处理文件时了解如何使用相对路径至关重要。相对路径使我们…...

DMFLDR数据载入使用实践

1、DMFLDR概述 1.1DMFLDR功能介绍 dmfldr(DM Fast Loader)是 DM 提供的快速数据装载命令行工具。用户通过使用 dmfldr 工具能够把按照一定格式 排序的文本数据以简单、快速、高效的方式载入到 DM 数据库中,或把 DM 数据库中的数据按照一定格…...

发布 NPM 包时,终端显示发布成功但实际上版本并没有更新,可能是由于以下原因

如果发布仍然没有生效,可以检查以下几点: 版本号是否更新: 如果版本号没有更新,NPM 会拒绝发布新的包版本。运行以下命令以确保版本号增加了: bash 复制代码 npm version patch # 更新小版本号 正确的 NPM 注册表&a…...

华为云AI开发平台ModelArts

华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...

golang循环变量捕获问题​​

在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - ​​循环变量捕获问题​​。让我详细解释一下: 问题背景 看这个代码片段: fo…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器

一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

Qt Widget类解析与代码注释

#include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//解释这串代码,写上注释 当然可以!这段代码是 Qt …...

leetcodeSQL解题:3564. 季节性销售分析

leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...

2023赣州旅游投资集团

单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学(silicon photonics)的光波导(optical waveguide)芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中,光既是波又是粒子。光子本…...

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析

Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...

现有的 Redis 分布式锁库(如 Redisson)提供了哪些便利?

现有的 Redis 分布式锁库(如 Redisson)相比于开发者自己基于 Redis 命令(如 SETNX, EXPIRE, DEL)手动实现分布式锁,提供了巨大的便利性和健壮性。主要体现在以下几个方面: 原子性保证 (Atomicity)&#xff…...

AI+无人机如何守护濒危物种?YOLOv8实现95%精准识别

【导读】 野生动物监测在理解和保护生态系统中发挥着至关重要的作用。然而,传统的野生动物观察方法往往耗时耗力、成本高昂且范围有限。无人机的出现为野生动物监测提供了有前景的替代方案,能够实现大范围覆盖并远程采集数据。尽管具备这些优势&#xf…...