CryptoHack 简介
CryptoHack 简介
文章目录
- CryptoHack 简介
- 一、python的安装,运行
- 二、ASCII码
- 三、十六进制
- 四、Base64
- 五、字节和大整数
- 六、XOR
- 1.基本
- 2.xor属性
- 3.xor隐藏字节
- 4.cryptohack——You either know, XOR you don't
一、python的安装,运行
二、ASCII码
-
chr()函数可用于将 ASCII 序数转换为字符(该ord()函数执行相反的操作)。 -
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}
三、十六进制
-
首先,根据 ASCII 表将每个字母转换为序数。然后将十进制数转换为以 16 为基数的数字,也称为十六进制。这些数字可以组合在一起,形成一个长的十六进制字符串。
-
在 Python 中,该
bytes.fromhex()函数可用于将十六进制转换为字节。.hex()可以对字节字符串调用实例方法来获取十六进制表示形式。 -
a="63727970746f7b596f755f77696c6c5f62655f776f726b696e675f776974685f6865785f737472696e67735f615f6c6f747d" print(bytes.fromhex(a)) #b'crypto{You_will_be_working_with_hex_strings_a_lot}'
四、Base64
-
Base64,它允许我们使用 64 个字符的字母表将二进制数据表示为 ASCII 字符串。Base64 字符串的一个字符编码 6 个二进制数字(位),因此 Base64 的 4 个字符编码 3 个 8 位字节。
-
在 Python 中,使用 导入 base64 模块后
import base64,即可使用该base64.b64encode()函数。请记住先解码十六进制,如挑战描述所述。 -
import base64 a="72bca9b68fc16ac7beeb8f849dca1d8a783e8acf9679bf9269f7bf" print(base64.b64encode(bytes.fromhex(a))) #crypto/Base+64+Encoding+is+Web+Safe/
五、字节和大整数
-
最常见的方法是获取消息的序数字节,将其转换为十六进制,然后连接起来。这可以解释为 16 进制/十六进制数字,也可以用 10 进制/十进制表示。
-
消息:HELLO
ascii 字节:[72, 69, 76, 76, 79]
十六进制字节:[0x48, 0x45, 0x4c, 0x4c, 0x4f]
十六进制:0x48454c4c4f
十进制:310400273487 -
Python 的 PyCryptodome 库使用方法
bytes_to_long()和来实现这一点long_to_bytes()。您首先必须安装 PyCryptodome 并使用导入它from Crypto.Util.number import * -
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)隐式转换:…...
如何缩小PPT演示文稿的大小?
有时候PPT的磁盘空间一不小心就变得意想不到的大,比如上百MB,该如何缩小PPT的大小从而便于上传或者携带呢? 导致PPT大的原因: 媒体文件在插入或者复制到演示文稿里会被直接涵盖在其中(.pptx版本)…...
闯关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…...
衡石分析平台系统分析人员手册-指标分析看板
指标分析看板为业务指标量身打造的分析看板。拖拽指标就可形成看板,通过点选对指标分析图表进行配置,整个过程简单易上手。分析人员根据业务分析场景制作图表,无需对指标的数据进行再次加工处理。 指标分析是为业务指标定制的看板࿰…...
《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…...
深度学习在微纳光子学中的应用
深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向: 逆向设计 通过神经网络快速预测微纳结构的光学响应,替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...
Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
04-初识css
一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
C# 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...
视频行为标注工具BehaviLabel(源码+使用介绍+Windows.Exe版本)
前言: 最近在做行为检测相关的模型,用的是时空图卷积网络(STGCN),但原有kinetic-400数据集数据质量较低,需要进行细粒度的标注,同时粗略搜了下已有开源工具基本都集中于图像分割这块,…...
