自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 网络渗透测试实验四 CTF实践

实验目的:通过对目标靶机的渗透过程,了解CTF竞赛模式,理解CTF涵盖的知识范围,如MISC、PPC、WEB等,通过实践,加强团队协作能力,掌握初步CTF实战能力及信息收集能力。熟悉网络扫描、探测HTTP web服务、目录枚举、提权、图像信息提取、密码破解等相关工具的使用。系统环境:Kali Linux 2、WebDeveloper靶机来源:https://www.vulnhub.com/实验工具:不限实验步骤和内容:目的:获取靶机Web Developer 文件/root/flag.txt中fla

2020-12-07 22:10:09 534 1

原创 渗透测试实验二 网络嗅探与身份认证

实验目的:1、通过使用Wireshark软件掌握Sniffer(嗅探器)工具的使用方法,实现捕捉HTTP等协议的数据包,以理解TCP/IP协议中多种协议的数据结构、通过实验了解HTTP等协议明文传输的特性。2、研究交换环境下的网络嗅探实现及防范方法,研究并利用ARP协议的安全漏洞,通过Arpspoof实现ARP欺骗以捕获内网其他用户数据。3、能利用BrupSuite实现网站登录暴力破解获得登录密码。4、能实现ZIP密码破解,理解安全密码的概念和设置。系统环境:Kali Linux 2、Window

2020-11-13 22:40:59 607

原创 渗透测试实验一 网络扫描与网络侦察

一.用搜索引擎Google或百度搜索麻省理工学院网站中文件名包含“network security”的pdf文档,截图搜索得到的页面。二、照片中的女生在哪里旅行?截图搜索到的地址信息1.首先,再搜索引擎中输入图片中的关键信息cafe brasserie letrentehuit2.找到店的门牌号为38 avenue de Suffren,75015 Paris, ,France,发现这家店位于巴黎3.在谷歌地球中输入门牌号,即得到街景信息4.在百度地图中输入门牌号38 avenue d

2020-11-06 18:16:59 1018

原创 网络渗透测试实验三 XSS和SQL注入

实验目的:了解什么是XSS;了解XSS攻击实施,理解防御XSS攻击的方法;了解SQL注入的基本原理;掌握PHP脚本访问MySQL数据库的基本方法;掌握程序设计中避免出现SQL注入漏洞的基本方法;掌握网站配置。系统环境:Kali Linux 2、Windows Server网络环境:交换网络结构实验工具: Beef;AWVS(Acunetix Web Vulnarability Scanner);SqlMAP;DVWA实验步骤:XSS部分:利用Beef劫持被攻击者客户端浏览器。实验环境搭建。角色

2020-12-14 22:38:34 644

原创 利用深度策略解决迷宫问题

#include <stdio.h>#include <stdlib.h>struct MAZE_STRU{ int size; int **data;};typedef struct MAZE_STRU Maze;typedef int DataType;struct Node{ DataType data; struct Node*next;};typedef struct Node*PNode;typedef stru..

2020-12-13 16:01:09 1617

原创 判断两个顶点之间是否存在路径

此算法为用“邻接矩阵表示的深度优先搜索算法”简化版,DFS算法已在注释中标出,可进行对比。visited数组用于记录遍历到的节点,若visited[i]=1和visite[j]=1,则i和j节点连通。IsOrNot函数和DFS函数如下void IsOrNot(GraphMatrix *graphMatrix,int *visited,int source){ int j; visited[source]=1;//若i节点被访问到,visited[i]=1 for(j=0;j&l

2020-12-13 10:47:01 7388 1

原创 判断一个有向图是否存在回路

本算法改编自“用邻接矩阵表示的深度优先搜索算法”,即DFS算法,两者共同点均为递归调用,DFS算法已在注释中标出,可进行对比学习。loop函数无论是强连通图和非强连通图均能判断出是否存在回路。在loop函数中1.visited数组用于记录被访问过的节点,和DFS算法中的visited数组相同。2.count数组只有一个元素即count[0],初始值为1,若能找到回路,则count[0]=1;为什么用count[0]而不直接用int count变量?因为loop函数中要进行很多次递归调用,若用count

2020-12-13 10:10:45 15599

原创 利用prim算法构造最小生成树

一.构造最小生成树必须满足以下条件①只能使用图中的边;②只能使用图中的n-1条边;③添加的边不能产生回路;Prim算法是通过每次选择提条代价最小的边辑器相应 的顶点加入到最小生成树中,因此来构造最小生成树。二.基本步骤设基本图为G=(V,E),最小生成树Tmst=(Vt,Et)。①从图G中的任意顶点Vm(Vm属于V)开始,将Vm加入最小生成树中;②选择代价最小的边(Vk,Vj)加入最小生成书中,并将顶点Vj加入最小生成树中,要求两个顶点属于不同的集合,Vk属于Vt,Vj属于V-Vt;③重复

2020-12-12 21:10:48 2896

原创 利用floyd算法求最短路径长度与并输出路径

#include <stdio.h>#include <stdlib.h>#define MAX 1000typedef struct SHORTRSTPATH_STRU{ int size;//图中节点的个数 int**pathLen;//二位数组保存每对顶点中的最短路径长度 int **nextVex;//二维数组保存vi到vj最短路径上vi后续节点的下标}ShortPath;typedef struct GRAPHMATRIX_STRU{

2020-12-12 20:26:08 2463 1

原创 Dijkstra算法实例

本题采用Dijkstra算法,以下简称Dj算法,Dijkstraj算法的可以求出每一个节点距离源节点的最短路径长度。1.Distance[w]表示从源节点出发,到达w节点的最短路径长度。2.found[w]数组用来记录已经求得最短路径的节点。若founp[w]=1,则w节点以求得最短路径长度。3.path[i]数组用来记录i节点的前驱节点,本题未用到path数组,若求得最短路径长度后,想再求最短路径,可以使用path数组。Dijkstra函数如下int* dijkstra(GraphMatri..

2020-12-12 20:07:17 1668

原创 有向图的拓扑排序

一.拓扑排序的步骤如下1.输出AOV网中没有前驱节点的节点。2.在AOV网中删除该节点以及对应的出边。3.重复上述步骤,直到所有节点都输出为止,完成的拓扑排序;或者还有为输出的顶点,这些顶点有前驱不能删除,说明存在回路,这样的工程是不可行的。二.基本思想1.inpoint数组记录各个顶点的入度。2.变量count用于记录拓扑序列中的顶点个数。count若等于图中的顶点个数,说明完成的拓扑排序,否则不能完成拓扑排序。3.步骤如下①计算各个顶点的入度;②将入度为0的顶点入栈;③如果栈不空,从

2020-12-12 20:06:58 1086

原创 聪明的学生

代码及注释如下#include <stdio.h>#include <stdlib.h>int step(int t1,int t2){ if(t2>t1) return t2-t1; else return t2+3-t1;}int times(int i,int j,int t1,int t2,int t3){ int k; k=i-j; if(k==0) { retu.

2020-10-31 17:45:09 688

原创 利用广度策略解决农夫过河问题

代码及注释如下#include <stdio.h>#include <stdlib.h>typedef char DataType;struct Queue{ int Max; int f; int r; DataType *elem;};typedef struct Queue *SeqQueue;SeqQueue SetNullQueue_seq(int m){ SeqQueue squeue; squeue = (SeqQueue)malloc.

2020-10-31 17:41:04 876

原创 利用广度策略解决迷宫问题

代码及注释如下#include <stdio.h>#include <stdlib.h>typedef int DataType;struct Node{ DataType data; struct Node *link;};typedef struct Node*PNode;struct Queue{ PNode f; PNode r;};typedef struct Queue *LinkQueue;struct MAZ..

2020-10-31 17:33:42 1316

原创 利用链队列解决舞伴配对问题,c语言实现

基本思路① 初始化Mdancers队列和Fdancers队列。② 反复循环,依次将跳舞者根据其性别插入Mdancers队列或Fdancers队列。③ 当Mdancers队列和Fdancers队列均为非空时,反复循环,依次输出男女舞伴的姓名。④ 如果Fdancers队列非空,则输出Fdancers队列的队头女士的姓名。⑤ 如果Mdancers队列非空,则输出Mdancers队列的队头男士的姓名。代码及注释如下#include<stdio.h>#include<stdlib..

2020-10-21 19:17:52 3371

原创 利用链栈和链队列判断字符串是否为回文

基本思想:将需要判断的字符分别压入一个空链栈和空链队列中。当字符串全部压入栈和队列后,逐个弹出字符,对链栈和链队列弹出的字符逐个进行比较是否相等,由于栈是先进后出,队列是先进先出,从而相当于对字符串首尾行进比较,从而能判断出字符串是否为回文。代码即详细注释如下:#include<stdio.h>#include<stdlib.h>typedef char DataType;struct Node//链栈空节点 { DataType data;

2020-10-19 21:20:55 4111

原创 ARP协议的工作流程

1.主机A首先查看自己的ARP表,如果找到了主机B的MAC地址,直接对IP数据包进行帧封装,发送给主机B。2.如果主机A再ARP表中找不到主机B的

2020-10-14 20:33:59 4733

原创 顺序栈常规插入删除操作

#include <stdio.h>#include <stdlib.h>typedef int DataTapy;struct Stack{ int MAX;//最大容量 int top;//栈顶指针 DataTapy *elem;//存放元素的数组起始指针};typedef struct Stack *SeqStack;//定义顺序栈类型SeqStack SetNullStack_sqe(int m){ SeqStack sstac

2020-10-10 23:57:54 4642

原创 链栈常规插入删除操作

#include <stdio.h>#include <stdlib.h>typedef int DataType;struct Node{ DataType data; struct Node*next;};typedef struct Node*PNode;//节点类型typedef struct Node*top,*LinkStack;//栈顶和链栈类型LinkStack SetNullStack_Link()//创建空链栈{ Link

2020-10-10 23:53:29 3505

原创 链栈实现十进制数转换为八进制和十六进制

#include <stdio.h>#include <stdlib.h>typedef int DataType;struct Node{ DataType data; struct Node*next;};typedef struct Node*PNode;//节点类型typedef struct Node*top,*LinkStack;//栈顶和链栈类型LinkStack SetNullStack_Link()//创建空链栈{ Link

2020-10-10 23:45:00 5820 2

原创 多项式的加法,利用单向链表处理操作

输入格式:输入在第一行给出第一个多项式POLYA的系数和指数,并以0,0 结束第一个多项式的输入;在第二行出第一个多项式POLYB的系数和指数,并以0,0 结束第一个多项式的输入。输出格式:对每一组输入,在一行中输出POLYA+POLYB和多项式的系数和指数。输入样例:5,0 2,1 1,6 8,15 0,0-2,1 3,6 4,8 0,0输出样例:5,0 4,6 4,8 8,15本题主要思路;1.建立两个头指针分别为head1和head2链表,链表每一个节点分别记录每一个多项式的系数c

2020-10-06 23:29:46 955

原创 链表中奇偶结点的移动

本题要求实现一个函数,实现对单循环链表中奇数和偶数结点的移动,要求奇数在前面,偶数在后面,且结点之间的相对顺序不变。1.建立结构体并宏定义变量。代码如下LinkList CreateList_Tail_loop(){ LinkList head = (LinkList)malloc(sizeof(struct Node)); PNode cur = NULL; PNode tail = head; DataType data; scanf("%d", &data); while (

2020-10-04 19:39:24 1111

原创 链表的插入算法

本题要求实现一个插入函数,实现在链表llist中的元素x之后插入一个元素y的操作。函数接口定义;int InsertPost_link(LinkList llist, DataType x, DataType y);其中 llist是操作的链表,x是待插入元素y的前驱节点元素,y是待插入的元素完整代码如下`#include <stdio.h>#include <stdlib.h>typedef int DataType;struct Node{ DataTy

2020-10-02 20:14:26 3655

原创 链表的常规删除算法

本题要求实现一个函数,实现删除链表llist中的指定元素deldata函数接口定义:void DelNode_Link(head, deldata);1.创建结构体和宏定义类型名#include<stdio.h>#include<stdlib.h>typedef int DataType;struct Node { DataType data; struct Node* next;};typedef struct Node *PNode;typedef

2020-10-02 20:14:02 3150

原创 合并两个递增有序的单循环链表

合并两个递增有序的单循环链表 本题要求实现一个合并函数,实现对有序单循环链表tail1和tail2的合并,要求合并时实现去重操作,即合并后的链表中没有重复的元素,并且合并后的链表为递增有序链表。 1.创建结构体并宏定义类型名。代码如下#include<stdio.h>#include<stdlib.h>typedef int DataType; struct Node { DataType data; struct Node* next;

2020-10-02 20:06:17 2188

原创 移动链表的最大元素到表尾,链表各元素位置发生改变

这种方式采用冒泡排序法,链表中各个元素的位置会发生改变(还有另一种方式,移动链表的最大元素到表尾时,元素的各个位置未发生改变,详情请参考博主另一篇博客《c语言移动链表的最大元素到表尾,链表各元素位置为发生改变》)1.定义结构体和宏定义变量名。代码如下#include<stdio.h>#include<stdlib.h>typedef int DataType;struct Node { DataType data; struct Node*

2020-10-02 20:05:50 1802 1

原创 移动链表中的最大值到尾部,链表各元素位置未发生改变

编写函数MoveMaxToTail(),实现查找单链表中值最大的结点,并将其移动到链表尾部,注意其他结点的相对次序不变。要求尽量具有较高的时间效率。 例如输入8 12 46 30 5,输出为8 12 30 5 461.定义结构体和宏定义类型名#include<stdio.h>#include<stdlib.h>typedef int DataType; struct Node{ DataType data; struct Node* nex

2020-10-02 20:05:21 5143 8

原创 数据结构链表置逆

完整代码如下#include<stdio.h>#include<stdlib.h>typedef int DataType;struct Node { DataType data; struct Node* next;};typedef struct Node *PNode;typedef struct Node *LinkList;LinkList SetNullList_Link(){ LinkList head = (LinkList)ma

2020-10-01 19:02:10 288

原创 采用尾插法建立单链表并输出链表

代码如下``#include<stdio.h>#include<stdlib.h>typedef int DataType;struct Node { DataType data; struct Node* next;};typedef struct Node *PNode;typedef struct Node *LinkList;LinkList SetNullList_Link(){ LinkList head =

2020-10-01 18:36:24 3535

转载 kali linux切换到root用户的方式

linux下 如何切换到root用户默认安装完成之后并不知道root用户的密码,那么如何应用root权限呢?(1)sudo 命令xzm@ubuntu:~$ sudo这样输入当前管理员用户密码就可以得到超级用户的权限。但默认的情况下5分钟root权限就失效了。(2)sudo -ixzm@ubuntu:~$ sudo -i通过这种方法输入当前管理员用户的密码就可以进到root用户。(3)如果想一直使用root权限,要通过su切换到root用户。那我们首先要重设置root用户的密码:xzm

2020-09-27 20:55:50 22157

空空如也

空空如也

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

TA关注的人

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