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…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序
一、开发准备 环境搭建: 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 项目创建: File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...
如何为服务器生成TLS证书
TLS(Transport Layer Security)证书是确保网络通信安全的重要手段,它通过加密技术保护传输的数据不被窃听和篡改。在服务器上配置TLS证书,可以使用户通过HTTPS协议安全地访问您的网站。本文将详细介绍如何在服务器上生成一个TLS证…...
Java 加密常用的各种算法及其选择
在数字化时代,数据安全至关重要,Java 作为广泛应用的编程语言,提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景,有助于开发者在不同的业务需求中做出正确的选择。 一、对称加密算法…...
根据万维钢·精英日课6的内容,使用AI(2025)可以参考以下方法:
根据万维钢精英日课6的内容,使用AI(2025)可以参考以下方法: 四个洞见 模型已经比人聪明:以ChatGPT o3为代表的AI非常强大,能运用高级理论解释道理、引用最新学术论文,生成对顶尖科学家都有用的…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
什么?连接服务器也能可视化显示界面?:基于X11 Forwarding + CentOS + MobaXterm实战指南
文章目录 什么是X11?环境准备实战步骤1️⃣ 服务器端配置(CentOS)2️⃣ 客户端配置(MobaXterm)3️⃣ 验证X11 Forwarding4️⃣ 运行自定义GUI程序(Python示例)5️⃣ 成功效果,那这次我们看看ArcGIS Pro如何更加快捷的操作。…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...
