DES算法总结
算法详解Data Encryption...
XXTEA算法及例题总结
算法详解XXTEA使用更复杂的运算方式,它的块大小可以是任意的,密钥也可以是任意长度的(可以不是4的倍数)。 在加密时,XXTEA会对明文进行分块,然后每个块都会进行加密,加密后的结果再进行拼接,最终形成密文。 在解密时,XXTEA会对密文进行分块,然后每个块都会进行解密,解密后的结果再进行拼接,最终形成明文。 加密过程示意图: 代码实现下面是XXTEA算法加/解密过程的C语言函数实现 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include <stdint.h> #include <stdio.h>#define DELTA 0x9e3779b9 #define MX (((z>>5^y<<2) + (y>>3^z<<4)) ^ ((sum^y) + (key[(p&3)^e] ^...
XTEA算法及例题总结
算法详解在TEA中,密钥是直接分成4个32位部分(总共128位),每轮加密过程中使用这些部分直接参与计算。密钥在整个加密过程中的使用比较固定,没有变化。这样,攻击者只需要通过分析固定密钥的几轮加密就能发现模式,从而降低了加密算法的安全性。 在XTEA中,以及密钥并不是每轮加密中直接使用固定的部分。相反,XTEA通过密钥的不同部分在每一轮加密中进行动态调度,密钥在加密过程中会经过多次变换,从而增强了密钥的复杂性和加密过程的不可预测性。 加密流程示意图: 代码实现下面是XTEA算法加密过程的C语言函数实现 12345678910111213void encrypt(uint32_t v[2], uint32_t const key[4]) { unsigned int i; uint32_t v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9; for (i=0; i < 64; i++) // XTEA默认循环64轮,与TEA不同,题目也可能修改循环次数 { v0 +=...
TEA算法及例题总结
算法详解TEA在加密的过程中要加密的明文使用2个32位无符号整数(2×4字节),秘钥为4个32位无符号整数(4×4字节),更长的明文可通过分为多个4字节为单位的小组分别进行加密(循环) 加密流程示意图: 实战识别在逆向分析实战中判断TEA算法的可从其3行核心加密中出现的右移4左移5,两行各有3个小括号互相异或的加密流程和单次加密循环32次以及运算中出现的sum和delta变量看出 代码实现下面是TEA算法加密过程的C语言函数实现 123456789101112131415#include <stdio.h>#include <stdint.h>void encrypt(uint32_t* temp, uint32_t* key) // 解密函数{ uint32_t v0 = temp[0], v1 = temp[1]; int sum = 0; // 初始sum值,注意此处要修改为delta的32倍 uint32_t delta = 0x9e3779b9; // 和加密函数一致的delta常量 for...
RC4算法及例题总结
算法详解RC4是一种流加密算法,其工作原理可以分为两个主要部分:密钥调度算法KSA和伪随机生成算法PRGA。 KSA密钥调度算法: 初始化一个256字节的数组S,S[i] = i。 根据密钥对S进行混排。通过循环交换S数组中的元素,确保密钥影响S的内容。 PRGA伪随机生成算法: 使用KSA生成的S数组,通过循环更新和交换元素生成伪随机字节。 生成的字节与明文进行异或运算,得到密文。 RC4的加密和解密过程相同,因为它是基于与伪随机流的异或运算。 实战识别在逆向分析实战中判断RC4算法的可从其会初始化一个256字节的数组和将一个key填充到数组中以及加密函数大概率有两个参数,一个是key 一个是keylen 代码实现下面是RC4算法加/解密过程的C语言代码实现 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566#include...
初识反调试
初识反调试IsDebuggerPresent()函数包含在debugapi.h头文件中,函数原型: 1BOOL IsDebuggerPresent(); //未在调试器中运行时返回值为零,否则为非零值 该函数允许程序确定是否正在由用户模式调试器(如 OllyDbg 或 x64dbg)调试它,以便可以修改其行为。通常,该函数只检查进程环境块 (PEB) 的 BeingDebugged 标志。 Assembly: 1234567 call IsDebuggerPresent test al, al jne being_debugged ...being_debugged: push 1 call ExitProcess C/C++: 12if (IsDebuggerPresent()) ...
C语言学习笔记(更新中)
字符串函数这些str开头的函数均包含在string.h头文件中 strlen(const char*str) 用于统计字符串的长度 strcat(char*str1,const char*str2) 将str2拼接在str1后,返回值是拼接第二个字符串后第一个字符串的地址 strncat(char*str1,const char*str2,size_t n) 解决了strcat中分配给str1的空间不够大,溢出到相邻存储单元的问题。第三个参数指定了最大添加字符数 strcmp(const char*str1,const char*str2) 比较字符串,返回0时字符串相等,>0时str1>str2,<0时str1<str2 strncmp(const char*str1,const char*str2,size_t n) 可以限定只查比较n个字符 strcpy(const char*str1,const char*str2) 将str2复制到str1 strncpy(const char*str1,const char*str2,size_t n)...
XYCTF 2025 Re复现
WARMUPVBS逆向,用VScode等文本编辑器打开.vbs文件,将开头处的Execute修改为wscript.echo再运行即可得到源码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051MsgBox "Dear CTFER. Have fun in XYCTF 2025!"flag = InputBox("Enter the FLAG:", "XYCTF")wefbuwiue =...
Linux联调
IDA linux远程调试安装调试服务端程序在IDA的目录下找到以下位置的文件:IDAPro/dbgsrv/linux_server和linux_server64。将这两个文件拖入linux虚拟机中的合适位置。 查看虚拟机IP地址在虚拟机命令行中输入 1ifconfig 可看到以下内容,其中inet后面的就是虚拟机的IP地址: 查看虚拟机远程调试服务端口在终端打开之前调试服务端程序所在位置,然后输入以下命令: 12chmod 777 linux_server64 # 为文件获取足够的权限./linux_server64 # 启动调试服务端程序 此时终端就会显示远程服务的端口号: 配置IDA远程调试将要动态调试的程序也放在那个目录下,然后打开IDA,在菜单栏中找到并点击Debugger,选择Remote Linux...
DeepSeek本地部署过程
现今DeepSeek作为一款性能出色的国产的开源AI大模型,性能与ChatGPT已不相上下,其在国内外均掀起了一片浪潮,登陆其官方网站即可开始使用。但是对于CTF手来说,进行线下断网的比赛时就无法使用网页版了,因此我们可将其部署到本地,以便在断网的情况下也能使用。 安装OllamaOllama是一款帮助用户在本地计算机上运行和交互大型语言模型(LLM)的工具。它简化了开源...