自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 问答 (3)
  • 收藏
  • 关注

原创 C语言实现字符串排序

如果只有英文字符且不区分大小写的话按照字典序排序可以用strcmp函数,两个字符串自左向右逐个字符相比(按ASCII值大小相比较)例如"A"<"C" 、"d">"D"、 "computer">"compare"strcmp("A","a"),返回的是负数,因为a的ACIIS码比A大。strcasecmp("A","a"),返回0,把A和a看成一样的。如果想要不区分大小写的话可以用strcasecmp函数。当s1==s2时,返回值= 0;当s1<s2时,返回为负数;当s1>s2时,返回正数。

2024-07-07 11:55:49 277 1

原创 C语言实现集合

有一个长度为整数L(1<=L<=10000)的马路,可以想象成数轴上长度为L的一个线段,起点是坐标原点,在每个整数坐标点有一棵树,即在0,1,2,...,L共L+1个位置上有L+1棵树。现在要求移走所有区间的树之后剩下的树的个数。我们把时间轴都表示到一个数组flag里,flag[i]=0表示在i时刻没有响声,flag[i]=1表示在i时刻有响声,这样即使在某一时刻有多门炮在后面计算时也只计算一次。同理我们设一个flag[10001]数组,flag[i]等于1表示i点有树,flag[i]等于0表示i点无树。

2024-07-07 11:51:41 123

原创 最长公共子序列求长度和输出子序列C代码

用res[i][j]表示截止到字符串A的第i个字符串和截止到字符串B的第j个字符的最长公共子序列。如两个字符串helloworld和loop,res[5][3]表示子串hello和子串loo的最长公共子序列,为lo,长度为2。当A[i]≠B[j]时,res[i][j]= max(res[i][j-1], res[i-1][j])当A[i]=B[j]时,res[i][j]= res[i-1][j-1]+1。求两个字符串的公共子序列我们都知道需要使用用动态规划思想。当i=0或j=0时,res[i][j]=0。

2024-07-06 21:39:13 195

原创 大数的排列组合公式C代码

我们知道,计算排列A(n,m)和组合C(n,m)可以用先求阶乘的方式实现,但是当数很大时求阶乘很容易溢出,所以这里给出非阶乘的方式求排列组合。由于结果肯定是非负数,所以可以用unsigned long long数据类型,能表示0~2^64-1,范围比较大。分母和分子可以抵消,最后代码如下。

2024-07-06 21:29:47 273

原创 Dijkstra算法C代码

一开始dist数组中{0,500,100,inf}最小值为100,对应的点为v2,所以将v2作为中心节点,令mid=2,再计算v2到所有未访问点的直达距离,更新dist,此时还有v1和v3未访问。然后令visit[mid]=1表示已访问,依次类推,经过n-1轮后每个点visit位都为1,这个时候dist数组中dist[i]就表示起点到i结点的最短路径。先定义一个邻接矩阵graph,graph[i][j]表示从i到j的距离,i到j没有路就表示为无穷。先初始化dist,初始值为起点到所有点的直达距离。

2024-06-29 10:01:15 240

原创 螺旋矩阵问题C代码

这题刚好跟上题相反,现在是输出螺旋矩阵,这里螺旋矩阵的方向是逆时针,所以方向向量需要改一下。给定一个n行m列的二维数组,要求按顺时针螺旋顺序输出矩阵中的所有元素,n和m小于等于10。要求输出 1 2 3 4 8 12 11 10 9 5 6 7。例如输入5,输出如下,要求每个元素间隔四个空格且左对齐,如下图。给定矩阵的长度n,要求逆时针输出一个n*n螺旋矩阵。如下图是一个三行四列的螺旋矩阵。

2024-06-29 09:50:06 182

原创 C语言一些逆置算法

整数逆置如7234变为4327。

2024-06-28 11:30:43 297 1

原创 大数求和C语言实现

把两个大数存到两个字符数组s1和s2中,然后将s2加到s1中,即最后的结果存到s1中。多组数据输入 两个大整数(位数不超过1000)求两个相同位数的大整数和。

2024-06-28 11:09:16 129

原创 OpenSSL命令行实现RSA加解密

【代码】OpenSSL命令行实现RSA加解密。

2024-06-27 19:52:56 155

原创 数据结构之树的超详细讲解(附C代码实现)

char data;//数据域//定义lchild变量为指向Node结构体的指针,指向左子树根结点//rchild指向右子树根结点}BiNode;

2024-06-27 19:44:07 1728 1

原创 GandCrab5.2勒索病毒复现

病毒行为总结:首次执行时,会生成勒索ID,遍历计算机所有文件,对非空文件进行加密,生成随机字符串后缀,并在同级目录下生成勒索信(-MANUAL.txt),并更换桌面壁纸为特定壁纸,会显示受害主机的用户名。步骤3 运行病毒程序,然后再次打开test目录,可以看到除了空文件,所有文件文件都被加了后缀naeluc,无法打开,且说明该病毒不会加密空文件,因为空文件没有价值。步骤5 使用虚拟机的快照功能恢复初始状态,再运行病毒程序,发现结果一样,非空文件都被加了后缀,且跟刚刚后缀不一样,说明后缀是随机生成的。

2024-06-24 20:18:44 342

原创 CTF-蓝帽杯 2022 初赛Misc计算机取证题目详解

使用工具:Volatility、Passware Kit、Arsenal Image Mounter、DiskGenius题目文件如下:首先要知道这些文件是什么:dmp后缀指Dump文件,是windows系统中的错误转储文件。包含计算机程序运行时的内存信息的文件。通常操作系统或应用程序在遇到系统崩溃、死机或其他严重错误时,会自动将程序运行环境的所有信息导出到一个.dmp文件中。所以可以利用该文件帮助程序员诊断程序运行过程中的错误,还可以获取账户、密码等敏感信息。

2024-06-23 00:55:24 883

原创 解决vs2022无法安装扩展程序包

在工具—>NuGet包管理器—>程序包管理设置,把程序包源设置为。然后就可以在管理解决方案包界面搜索下载自己需要的扩展包。

2024-06-23 00:15:51 644

原创 基于快速排序算法找第k小的元素

但是我们只需要找第k小的元素,所以没必要对所有元素进行排序,跟快排不同的是,上述算法每次只需要对左、右分区中的一个进行分区,即n+n/2+n/4+....1,所以时间复杂度为O(n)如果先对整个序列进行快排然后输出a[k]时间复杂度为O(nlogn)同理我们可以写出找第k大元素的代码。首先是跟快排一样的分区函数。

2024-05-30 21:24:16 233 1

原创 埃式筛法判断素数

最后等于0的有:prime[2]=0,prime[3]=0, prime[5]=0, prime[7]=0, prime[11]=0,prime[13]=0,prime[17]=0,prime[19]=0。用一个prime[21]数组,如果prime[i]=1表示i不是素数,prime[i]=0表示i是素数,一开始初始化prime为全0,筛选n轮后prime[i]=0即为素数。由于prime[2]=0,从2开始,所以筛掉2的所有倍数并prime置1,prime为0的剩下以下数。

2024-05-30 21:08:36 197

原创 fcrackzip工具的使用教程

盲目的使用字典破解概率很低,如果能通过社工的方式得到用户信息,然后再根据用户信息批量创建个性化的字典,就能大大增加成功率,假设已知我们要攻击用户的姓名lyt,那么常用的密码组合就是名字字符加数字。以上命令表示使用暴力破解,密码组合是数字和小写字母,长度为1到10,这样破解要花很长的时间,因为密码长度范围很大。-c 指定掩码类型 a表示a-z,A表示A-Z,1表示0-9,!如果已知密码的长度就能直接指定,能快速破解,可以看到成功破解007lyt。使用刚刚生成的字典文件,成功破解。min设定最小字符串长度。

2024-04-19 18:20:26 595

原创 PE文件注入恶意代码改变代码执行顺序教程

E9后面的值=目的地址-(jmp指令地址+5)=00 00 10 00-(00 00 10 32+5)=FF FF FF C9(这里减法是一位一位运算,不够就向前面一位借16), FF在前面表示为负数,即往前面跳转,反写为C9 FF FF FF,所以jmp后面应该跟上C9 FF FF FF,即写成E9 C9 FF FF FF。ExitProcess函数的参数,程序退出码。call ptr[?call ptr[?call ptr[?ExitProcess的函数后面添加MessageBoxExa函数的参数,?

2024-04-19 16:38:13 779 1

原创 PE文件添加函数教程

修改HelloPE.exe,添加user32.dll的另一个函数MessageBoxExA,并测试。如何构造HelloPE.exe可以看我上次发的博客主要思路:添加一个user32.dll的MessageBoxExA函数,运行程序后会先后弹出两个窗口,首先需要明白需要修改哪些部分1、.text需要修改,因为要添加函数,就要加添加push和参数2、.rdata段需要重新修改导入表和导入函数地址,是最难的部分3、.data段需要为新加的弹出窗口设置标题和内容。

2024-04-15 17:21:44 1018

原创 python编程解决直线斜率问题

【代码】python编程解决直线斜率问题。

2024-04-14 22:00:19 218 1

原创 PE文件的分析和构造超详细过程

本文详细讲述如何从0构造一个PE文件,运行该文件会弹出一个HelloPE的窗口。

2024-04-13 22:44:13 1707

原创 蓝桥杯真题有奖问答

小蓝正在参与—个现场问答的节目。活动中一共有30道题目,每题只有答对和答错两种情况,每答对—题得10分,答错—题分数归零。小蓝可以在任意时刻结束答题并获得目前分数对应的奖项,之后不能再答任何题目。最高奖项需要100分,所以到达100分时小蓝会直接停止答题。请注意小蓝也可能在不到100分时停止答题。已知小蓝最终实际获得了70分对应的奖项,请问小蓝所有可能的答题情况有多少种?本题是填空题,直接简单暴力dfs,本题要跑挺久的。

2024-04-12 19:26:27 410 1

原创 python之堆的实现

堆本质是一个完全二叉树,分为大根堆和小根堆,大根堆每个结点的值都大于它的孩子的值,小根堆相反,每个结点的值都小于它的孩子的值。heappush(heap, item),将item的值加入到heap中,保持堆性质不变。​heapq.nlargest(n,heap),返回一个列表,为heap的前n个最大值。heapq.nsmallest(n,heap),返回一个列表,为heap的前n个最小值。heappop(heap),弹出并返回heap的堆顶(即最小值),保持堆的不变。heapq库常用的几个函数。

2024-04-11 23:44:51 294

原创 数据结构之树的性质总结

且必须按照从上到下从左到右的顺序依次填满,叶子节点只出现在倒数第一层和倒数第二层,如以下为一个完全三叉树。需要最少的结点,则除了叶子结点外其它结点度数都为2,设度数为2的结点有。2 个,则根据度数性质:所有节点的总度数等于节点数减一。个结点的二叉树,按从上到下,从左到右依次给结点编号。层数:根节点为第一层,根的子节点为第二层,以此类推。0 个叶子结点,则该二叉树的总结点数至少是。节点的度:该节点拥有的孩子个数。所有节点的总度数等于节点数减一。, ceil 表示向上取整。叉树,节点的度数最大为。

2024-04-09 11:40:42 475

原创 n皇后问题python实现

用一个visit数组标记某一列列是否有棋子,依次对行递归,直到最后一行就放了n个棋子。,跟visit数组一样再用两个数组分别存储该对角线是否有棋子。个皇后不允许处在同一排,同一列,也不允许处在与棋盘边框成。第三条:(3,1) (2,2) (1,3)第三条:(1,1) (2,2) (3,3)个皇后不允许处在同一排,同一列。第二条:(1,2) (2,1)第四条:(3,2) (2,3)第二条:(1,2) (2,3)第四条:(2,1) (3,2)条,按左上到右下的顺序编号为。条,按右上到左下的顺序编号为。

2024-04-08 15:54:35 584

原创 python之遍历求二叉树的深度、先序遍历、中序遍历、后序遍历

二叉树的结点用一个数组顺序存储,-1表示该节点为空,实现求该二叉树的深度、先序遍历、中序遍历、后序遍历。首先定义一个 Node 类 ,用于表示二叉树中的节点。dfs算法求树的深度。

2024-04-07 13:21:37 295

原创 网络编程之数据包套接字

(1)应用程序双方是不对等的,服务器要先行启动,处于被动的等待访问的状态,而客户机则可以随时主动地请求访问服务器。两者在进行网络通信时,服务器要经过创建套接字、绑定套接字、交换数据和关闭套接字4个阶段,而客户机不需要进行套接字的绑定。数据报套接字提供一种无连接、不可靠的服务。(2)服务器进程将套接字绑定到众所周知的端口,或事先指定的端口,并且,客户机端必须确切地知道服务器端套接字使用的网络地址。(3)客户机端套接字使用动态分配的自由端口,不需要进行绑定,服务器端事先也不必知道客户机端套接字使用的网络地址。

2024-03-28 20:39:49 419

原创 网络编程之流式套接字

流式套接字(SOCK_STREAM)是一种网络编程接口,它提供了一种面向连接的、可靠的、无差错和无重复的数据传输服务。而作为服务器,一般是工作在被动连接的方式下,所以必须通过显示的调用bind()将监听套接字绑定到一个端口上,以等待客户端的连接。服务端:socket() --> bind() --> listen() --> accept() --> recv() --> close()客户端:socket() --> connect() --> send() --> recv() --> close()

2024-03-27 21:55:14 1260

原创 密码学之哈希碰撞和生日悖论

班里只有50个人,两个人相同生日的概率竟高达0.9704,与我们的惯性思维差很多,这就是著名的生日悖论问题。可以看成取值空间大小为365,计算次数为50的哈希碰撞问题。哈希碰撞是指找到两个不一样的值,它们的哈希值却相同。假设班里有50个人,求班里至少两个人相同生日的概率。这里虽然k太小,但是实际值和估计值不会差很多。所以至少两个值相同(即存在哈希碰撞)的概率。假设哈希函数的取值空间大小为。先算每个值不一样的概率P’用python编程计算。

2024-03-23 13:50:11 407

原创 python之二分法求最值

小明—共有N块巧克力,其中第i块是Hi× Wi的方格组成的长方形。0的个数由因子2和5相乘得到,而在阶乘中,2的数量肯定比5多,也就是说0的个数就等于因子5的个数,然后我们要知道求阶乘因子个数的一个性质,例如—块6x5的巧克力可以切出6块2x2的巧克力或者2块3x3的巧克力。小朋友们都希望得到的巧克力尽可能大,请计算出最大的边长。的末尾恰好有K个0的最小的n是多少?,相当于在1到25中5的倍数有5个(5,10,15,20,25),中因子5的个数有5+1=6个。,相当于在1到5中5的倍数有1个(5)

2024-03-18 22:39:38 474

原创 python之bisect模块

3、bisect_right(a,x)函数,返回x将会插入列表a的位置,如果有相同元素的话,返回插入右边的位置,但不会插入。2、bisect_left(a,x)函数,返回x将会插入列表a的位置,如果有相同元素的话,返回插入左边的位置,但不会插入。6、insort_right(a, x),在列表a中插入元素x,并能保持a的顺序。5、insort_left(a, x),在列表a中插入元素x,并能保持a的顺序。4、insort(a, x)函数,把变量x插入到列表a中,并能保持a的顺序。导入bisect模块。

2024-03-12 21:08:04 622

原创 python之十进制转化成n进制

用字母A对应数字1,B对应2,以此类推,用Z对应26。对于27以上的数字,用两位或更长位的字符串来对应,例如AA 对应27,AB对应28,AZ对应52,LQ 对应329。请问输入一个任意数,求其对应的字符串。虽然这题说大于27才进位,但是开始是从1开始的,也就是说数字范围是1到26,所以还是26进制,还要注意的是由于模26结果范围是0到25,所以当结果为0时要单独判断为字符Z。数字大于十可能要用编码来表达,例如十进制转换十六进制,当数字大于等于10时,10用A表示,11用B表示…

2024-03-06 16:21:58 544

原创 python之双端队列deque

普通队列只能进行队尾插入和出队头的操作,双端队列可以对队头和队尾进行操作,而且相比于list实现的队更具有优越性,list实现在删除和插入时的时间复杂度大约为O(n),而deque的时间复杂度是O(1)创建 deque() 对象的时候可以添加 maxlen 参数来限制这个列表的长度,队尾操作:appendleft()、popleft()、extendleft()队头操作:append()、pop()、extend()例如指定最大长度为5:q=deque(maxlen=5)python实现双端队列在c。

2024-03-05 19:41:12 271

原创 python实现有限域GF(2^8)上的乘法运算

将这两个多项式相乘再模多项式x^8+x^4+x^3+x+1得到结果为1110 0101,转换为十六进制为e5。3f转换成二进制为0011 1111,对应的多项式为x^5+x^4+x^3+x^2+x+1。5e转换成二进制为0101 1110,对应的多项式为x^6+x^4+x^3+x^2+x。有限域GF(2^8)上的乘法运算可以看成多项式的乘法。

2024-03-04 14:17:19 672 2

原创 python之顺序取数

还可以进行剪枝,2024/3=674.6,最小的数一定小于平均数,所以i的范围可以缩小到1到674,第二小的数最大的时候是当最小的数取1时,剩下两个数和为2023,2023/ 2=1011.5,所以第二小的数范围可以缩小到i到1011。确定了两个数并且和为2024就能确定第三个数为2024-i-j,可以减少一个for循环遍历,但是需要保证2024-i-j是最大的,不然会有重复的情况。三个不一样的数,一定有大有小,所以可以直接暴力搜索,三个for循环分别搜索三个数,三个数大小为i<j<k。

2024-03-02 20:42:08 253

原创 python实现ElGamal算法

ElGamal公钥密码算法是在密码协议中有着重要应用的一类公钥密码算法,基于公钥密码体制和椭圆曲线加密体系,其安全性是基于有限域上离散对数学问题的难解性。至今仍是一个安全性良好的公钥密码算法。Alice和Bob生成各自的密钥,并交换彼此的公钥(p,g,y),Alice和Bob之间约定签署的消息m(20240301),Alice签署消息m,将三元组(m,r,s)发给Bob,Bob验证签名。这种数据或变换允许数据单元的接收者用以确认数据单元的来源和数据单元的完整性并保护数据,防止被人(例如接收者)进行伪造。

2024-03-01 23:58:46 758

原创 网络攻防之CVE-2020-15778漏洞的复现及修复详细过程

OpenSSH的8.3p1中的scp允许在scp.c远程功能中注入命令,攻击者可利用该漏洞执行任意命令。(10)可以看到在监听窗口反弹出靶机的shell(root@localhost),攻击成功,即使靶机通过防火墙禁止了ssh远程登录能通过此漏洞远程控制靶机,在shell中输入ls命令查看靶机的根目录文件。漏洞危害:该漏洞危害性很高, 因为一旦入侵成功,攻击者可以尝试在目标系统上的shell上执行恶意代码,执行各种命令,获取系统信息,上传或下载文件,甚至完全控制目标系统。

2024-02-29 16:18:31 2054

原创 约数个数及约数和公式python实现

例如56的约数有1、2、4、7、8、14、28、56共8个,和为120。根据约数和公式:(1+2+2^2+2^3)(1+7)=15*8=120。任何数都可以表示成若干个素数的乘积,即写成如下形式。根据约数个数公式:(1+3)(1+1)=8。

2024-02-27 12:44:56 728 1

原创 网络攻防之网络扫描

(1)TCP连接扫描原理:完整的进行了TCP三次连接,然后扫描机再发送RST复位,表示该端口开放,若端口不开放目的主机会发送RST+ACK包特点:不安全,失败的TCP连接会被记录在目的主机的日志中,对大量端口进行扫描时,容易被发现,且扫描速度慢使用命令:nmap -sT 目的主机的IP(2)TCP SYN扫描原理:不进行第三次握手,扫描机会发送RST包进行断连,对于已开放的端口,接收方会回应SYN/ACK 表示端口开放,对于未开放的端口,接收方会回应 RST/ACK包。

2024-02-26 15:09:47 1511

原创 网络攻防之ARP欺骗和DNS劫持实验

实验环境:攻击主机:kali2023虚拟机,IP地址为192.168.133.141靶机:Windows10虚拟机,IP地址为192.168.133.129网关地址:192.168.133.2(1)ARP协议介绍在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。这个目标主机的MAC地址就是通过地址解析协议ARP获得的。ARP协议中通常有两种数据包:ARP请求包和ARP应答包。

2024-02-24 16:24:30 2388

原创 欧拉函数性质和快速幂算法及python实现

由于1的二进制除了最低位是1,其他的全是0,因此可以利用n&1来判断n的二进制的最低位是否为1,如果n&1等于1,说明当前n的最低位是1,需要乘底数,反之n的最低位是0不用进行乘法,然后将n使用>>进行右移一位,产生新的最低位,直到n所有位数都移完,a在每次循环后都要进行平方更换为新底数。将指数进行二进制分解,然后按二进制从右到左的顺序即倒回来遍历,如果二进制为1,则进行乘法运算,需要乘。两个不同的正整数a,b,若gcd(a,b)=1,则a和b互质,1与任何正整数都互质。由分解公式求数a的欧拉函数值。

2024-02-23 18:31:44 1395

蓝帽杯 2022 初赛Misc计算机取证所用工具和题目文件

包含Arsenal-Image-Mounter、DiskGenius 64bit、Passware Kit工具,和题目用的内存镜像

2024-06-23

华为ICT大赛计算赛道题库

计算赛道考点OpenEuler部分题库,含真题,HCIA认证也适用, 主要考察Linux操作系统方面的知识

2024-01-22

putty和SecureCRT的安装程序

putty和SecureCRT,用于远程连接Linux操作系统的shell,常用于远程管理Linux系统,支持 SSH,Telnet等协议

2024-01-20

python蓝桥杯题目,使用每个月天数列表巧解

题目描述为:记一个日期为yy年mm月dd 日,统计从2000年1月1日(含)到2000000年1月1日(不含),有多少个日期满足年份yy是月份mm的倍数,同时也是dd的倍数。

2024-01-19

一道python编程题经典的时间题,学习使用datetime类

文件含答案源代码和datetime类的详细使用教程,题目描述为:对于一个日期,我们可以计算出年份的各个数位上的数字之和,也可以分别计算月和日的各位数字之和。请问从1900年1月1日至9999年12月31日,总共有多少天,年份的数位数字之和等于月的数位数字之和加日的数位数字之和。例如,2022年11月13日满足要求,因为2+0+2 +2 =(1+1)+(1+3)。请提交满足条件的日期的总数量

2024-01-19

Winscp软件的安装程序

用于本地与远程计算机间安全的复制文件、也可以链接Linux系统,主机需要与虚拟机ping通

2024-01-19

redhat6环境下运行cmatrix代码雨

包含源码包和每一步的详细教程,学习Linux编译源码包的方法

2024-01-18

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除