自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

郭同学如是说

个人网站:www.gls.show。在此处亟需一个宏大的的沉思。

  • 博客(145)
  • 资源 (4)
  • 收藏
  • 关注

原创 安徽大学信息安全专业本科生攻略

安徽大学信息安全专业本科生攻略 Github 链接

2022-03-07 14:11:26 1389 1

原创 【计算机教育中缺失的一课】Git 快速入门

Git 简介Git 是一个分布式版本控制工具,最初版本由Linux之父Linus在一周之内开发完成,目的是为了解决Linux内核维护工作的代码同步(不得不感叹李纳斯简直是神啊)Git 与其他版本控制工具的差异别的版本控制工具侧重文件内容的具体差异Git 关心文件数据的整体是否发生变化,把变化的文件作快照Git 并不保存这些前后变化的差异数据,而是对数据得到进行sha-1摘要,并将此结果作为数据的唯一标识和索引,若文件没有变化,Git 不会再次保存git 使用过程创建文件夹git ini

2022-02-02 22:48:24 1083

原创 【计算机教育中缺失的一课】ssh远程连接主机

什么是sshSecure Shell(安全外壳协议,简称SSH)是一种加密的网络传输协议,可在不安全的网络中为网络服务提供安全的传输环境。SSH通过在网络中创建安全隧道来实现SSH客户端与服务器之间的连接SSH最常见的用途是远程登录系统,利用SSH来传输命令行界面和远程执行命令非常常用举个例子,不管你使用Windows系统还是macOS,都可以使用ssh远程连接Linux服务器,从而在你自己的主机上,运行Linux系统环境,或者完成文件的互传比如笔者有一台Ubuntu的云服务器和一台装了Debi

2022-01-17 11:36:57 1043

原创 【计算机教育中缺失的一课】Markdown快速入门

Markdown简介Markdown 是一种轻量级标记语言Markdown 编写的文档可以导出为多种格式,比如PDF,word,HTML等。平时写实验报告就可以用Markdown编写然后输出为PDF格式Markdown 编写的文档后缀为.md常用编辑器: typoraMarkdown的好处可以只关注文字内容本身,而不是花太多时间在排版上可以导出为多种格式书写美观大方学习之后可以用在书写博客、gitbook等上面,现在很多内容创作平台都支持Markdown语法Markdown快

2022-01-04 20:57:03 499 1

原创 【计算机教育中缺失的一课】Vim快速入门

vim简介——编辑器之神vim是一个文本编辑器,被称为编辑器之神,但与之强大功能所对应的,是陡峭的学习曲线很多人学习vim都是从入门到放弃,之后便将其束之高阁。但是掌握之后,你将感受到vim哲学与效率的巨大提升在学习之前需要明确的几点:学习vim在开始是痛苦的只有多用才会熟练克服的一切困难都是值得的快速入门下面是vim的一个快速使用示范:在命令行中键入vim 1.cpp,会直接进入vim的普通模式(Normal Pattern),此时是无法输入文字的按下i,便进

2022-01-04 13:47:22 305

原创 【计算机教育中缺失的一课】Tmux快速入门

tmux简介——优雅永不过时tmux是个非常强大的终端工具,不仅可以提供终端的多路复用,同时可以将会话(session)与窗口分离,大幅提升生产力在终端写命令的时候,经常碰到这几种状况需要多个终端命令行同时共同工作,但是:根本没有自带分屏(比如Ubuntu),只能多开几个terminal终端窗口自带的分屏非常难用,即是是软粉吹上天的新版Windows terminal,分屏也非常拉胯需要ssh远程连接服务器,但是若丢失了与远程系统的连接(比如突然断网或者卡死),那么一切服务都会被关闭

2022-01-04 13:45:18 821

原创 【一键生成项目文档】Doxygen 入门指南

Doxygen 是个什么牛马 ?Doxygen是一款文档生成工具,它可以从带有注释的代码中提取出关键信息,并一键生成各种文档格式(支持的文档格式有:LaTeX、HTML,PDF,RTF、XML、Docbook、Manpage等)。只要你的代码注释符合标准,那么当你代码敲完的时候,文档已经部署完成了Doxygen不仅仅可以作为文档,还可以作为大型项目的分析手段。它可以生成函数调用,从而帮助理解程序的逻辑关系。支持的语言:C、Objective-C、C#、PHP、Java、Python、IDL(Co

2022-01-01 17:53:56 1240

原创 一个基于 LKM 的 Linux 内核级 rootkit 的实现

rootkit是一种恶意软件,攻击者可以在获得 root 或管理员权限后安装它,从而隐藏入侵并保持root权限访问。rootkit可以是用户级的,也可以是内核级的。关于rootkit的详细介绍可以参考https://en.wikipedia.org/wiki/rootkit有许多技术可以实现rootkit,本项目使用的是通过编写LKM(Linux kernel module)并hook系统调用表的方式。这种方式具有诸多优点,比如rootkit作为内核模块可以动态的加载和卸载,大多数rootkit也都是通

2023-02-27 15:13:55 1133 3

原创 SEED-lab:Heartbleed Attack Lab

OpenSSL 库中的一个漏洞,受影响的 OpenSSL 版本范围从1.0.1到1.0.1 f,在一些新版本的OpenSSL中无法复现心跳协议是如何工作的。心跳协议由两种消息类型组成: HeartbeatRequest 包和 HeartbeatResponse 包。客户端向服务器发送一个 HeartbeatRequest 数据包。当服务器接收到它时,它会发回 HeartbeatResponse 数据包中接收到的消息的副本。目标是保持连接活跃心脏出血攻击是基于心跳请求的。这个请求只是向服务器发送一些数

2023-02-25 23:17:29 1313

原创 两行代码将vdi文件转换为vmdk文件,使得virtual box虚拟机在vmware中运行

两行代码将vdi文件转换为vmdk文件,使得virtual box虚拟机在vmware中运行

2023-01-15 19:44:32 1757

原创 汇编语言光速入门

一个汇编语言光速入门手册

2022-06-01 19:01:37 623 5

原创 程序的生命周期:从.c文件到二进制文件

一个.c文件是如何成为一个可执行二进制文件的?文件后缀被执行过程工具细节.c预处理预处理器(cpp,c pre-processor)宏替换、头文件展开、注释删除.i编译cclC语言程序转化为汇编语言程序(.s).s汇编编译器汇编语言程序转化可重定位目标文件(.o).o链接ld(链接器)将多个.o文件链接为一个可执行文件预处理使用cpp(C 预处理器)完成了:将.c文件转化为.i文件在这里.i文件只是一个后缀而已,本质上仍然

2022-05-28 20:28:14 656

原创 beamer制作学术slide

beamer简介LaTeX documentclass的一种适合制作学术风格PPT[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qwj1kIuo-1653640684885)(/image/Beamer-titlepageUpdated.png)]一个快速入门途径在GitHub上找一个模板做填空题即可把人名、标题等相关替换掉了解一些beamer的基本使用方法基本语法首行是\documentclass[11pt]{beamer}表示字体

2022-05-27 16:38:41 320

原创 LaTeX快速入门

LaTeXLaTeXLaTeX 编辑器overleaf,一个在线的、网页端的LaTeX编辑器已被墙可以使用谷歌账号登录TeXstudio开源的、跨平台的集成开发环境,由Qt编写LaTeX 基本概念LaTeX 设计初衷:分离内容与格式,以便作者能够专注于内容创作而非版式设计发音:雷泰赫优点强大的数学公式排版能力跨平台、免费、开源容易生成复杂的专业排版元素,如脚注、交叉引用、参考文献、目录等可扩展性(通过开发宏包)LaTeX 基本命令\命令由反斜线

2022-05-27 16:37:43 309

原创 查看Linux系统信息的几种方法

uname命令$ uname -aLinux metalts 5.4.0-84-generic #94~18.04.1-Ubuntu SMP Thu Aug 26 23:17:46 UTC 2021 x86_64 x86_64 x86_64 GNU/Linuxlsb_release$ lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu 18.04.6 LTSRelea

2022-04-21 20:25:09 285

原创 Windows解决scoop下载错误:raw.githubusercontent.com:443

命令行下载scoop:Invoke-Expression (New-Object System.Net.WebClient).DownloadString('https://get.scoop.sh')报错:MethodInvocationException: Exception calling “DownloadString” with “1” argument(s): “请求的名称有效,但是找不到请求的类型的数据。 (raw.githubusercontent.com:443)”首先检查了

2022-04-21 20:20:08 3060 1

原创 github开源项目:给PDF添加书签

下载地址:https://github.com/ifnoelse/pdf-bookmark/releases软件环境:Windows获取目录打开http://product.china-pub.com/,在搜索框中输入书名,可以得到一个一个有目录的页面,比如计算机组成与设计:硬件/软件接口(原书第5版),复制该目录偏移偏移数字=当前页面数字减去真实页面数字比如我当前是14页,但是其实是第1页,则偏移为13运行打开软件,将目录复制进去,然后选中PDF,点击生成目录,会生成一个带有目录版本

2022-04-21 18:10:24 722

原创 命令行自动纠错命令:fuck

thefuckthefuck是github上一个项目,可纠正命令中的错误打开链接查看神奇效果安装与配置以我所在的Ubuntu服务器为例:sudo apt install thefuckvim ~/.bashrc#文件末加入下面语句,给thefuck取别名fuckeval "$(thefuck --alias fuck)"#使配置生效source ~/.bashrc官方推荐的安装方法:On macOS or Linux, you can install The Fuck via

2022-04-21 17:18:51 817

原创 watch命令实现Linux监控

watch命令简介watch命令可以重复的执行命令,并且将其输出在命令行上,可以方便的实现一些简单的监控 watch -n 1 cat 1.txt上面的这个命令输出1.txt的内容,-n 1表示每隔一秒钟执行一次命令右侧shell执行命令,左侧是watch的输出我们可以看到先是输出了wdnmd,然后输出了nmsl,至此,我们很简单的实现了一个不断变化的文件的监控,但它是实用的——比如监控一个动态变化的log日志另一个小例子:在所有进程中查找是否有node关键字的进程,每隔三秒刷新一次 wa

2022-04-21 16:26:20 1730

原创 一文搞懂 Linux TTY

TTY的历史TTY全称TeleTYpewriter,也即是电传打字机,它通过两根电缆连接计算机,一根用于向计算机发送指令,一根用于接收计算机的输出,输出结果是打印在纸上的由于历史原因, Linux保留了TTY,上述的输入和输出两个电缆,可以简单的认为是键盘输入和显卡输出tty和stty命令tty命令返回当前的终端名字,1表示可以通过Ctrl+Alt+F3得到$ tty/dev/pts/1stty是对tty进行设置的命令,s表示set - Display all settings for

2022-04-19 18:18:54 4499

原创 shell脚本转化为二进制文件

shc简介shc,全称 shell script compiler,可以将shell脚本编译为二进制可执行文件,从而达到隐藏源代码的目的shc的工作过程分为两步:将shell脚本转化为C语言源码将C语言源码进行编译链接得到二进制文件shc网站安装方式sudo apt-get install shc使用vim hello.sh写入:#!/bin/bashecho "hello,world~"$ shc -f hello.sh$ lshello.sh hello.sh

2022-04-18 20:32:32 5405

原创 Linux句柄相关全局变量及其函数调用链分析

一切皆文件在 Linux 中,一切皆文件。许多操作,比如文件打开、进程创建、管道创建、新的网络连接创建,甚至计时器创建(timerfd _ create)和事件生成(eventfd) ,都会增加 nr_files文件描述符与inode的关系file-maxfile-max定义了系统级别的、所有进程的打开文件限制This file defines a system-wide limit on the number of open files for all process

2022-04-18 16:54:30 426

原创 Linux硬链接与软连接

硬链接不同的文件名可以指向相同的 i-node 节点,也将这些名称称为链接,有时也称之为硬链接(用来与符号链接作区别)比如下面的1、2两个文件名可以指向相同的inode结点811212支持硬链接的系统:原生 LinuxUNIX 文件系统均支持硬链接微软的 NTFS 文件系统支持硬链接不能为目录创建硬链接利用 ln 命令为一个已存在的文件创建新的硬链接zaralts@metalts:~/C$ echo wdnmd > 1zaralts@metalts:~/C$ ls -lito

2022-04-16 16:33:56 825

原创 Linux UTS namespace 的简单实现

UTS 简介UTS是Linux命名空间的一种,可以用作主机名的隔离代码实现command()函数返回*Cmd结构体,参数sh表示被 fork 出来的新进程内的初始命令为shtype Cmd struct { Path string Args []string Env []string Dir string Stdin io.Reader Stdout io.Writer Stderr io.Writer ExtraFiles []*

2022-04-15 22:49:39 796

原创 Linux namespace 原理

简介Linux使用namespace进行系统资源的隔离,比如通过PID namespace用来隔离进程号下图中,主机视角下的进程6,在他自己的namespace视角下,是进程1namespace规则进程可以分配给不同类型的不同名称空间但是对于每个类型,它只能属于一个名称空间默认情况下,进程与其父进程处于相同的名称空间中,它可以通过传递特定的标志在进程创建期间添加到新的名称空间,或者在进程运行期间通过调用 setns 系统调用添加到新的名称空间理想情况下,只有同一名称空间中的进

2022-04-15 15:49:31 1732 2

原创 vscode下载go语言插件【步骤以及报错解决】

为了配置go语言环境,需要在vscode中下载相关插件,比如: go-outline gotests gomodifytags但是我点击install之后,vscode中弹窗显示无法下载插件,于是开始问题的排查查找日志信息我是ssh连接服务器进行开发,日志目录在~/.vscode-server/data/logs/下找到最近的日志,发现:Installing github.com/ramya-rao-a/go-outline@latest FAILED{ "killed": fa

2022-04-12 17:58:44 2894

原创 文件描述符与inode的关系

文件描述符Linux中,文件描述符(File descriptor,fd),是表示指向文件的引用的抽象化概念,在形式上是一个非负整数,当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符下面open系统调用返回一个文件描述符给fdfd = open(pathname, flags, mode)常见的几个文件描述符:STDIN,文件描述符:0;标准输入,默认从键盘读取信息;STDOUT,文件描述符:1;标准输出,默认将输出结果输出至终端;STDERR,文件描述符:2;标准

2022-04-09 22:10:18 2104

原创 Linux输入输出重定向

标准输入、标准输出、标准错误STDIN,文件描述符:0;标准输入,默认从键盘读取信息;STDOUT,文件描述符:1;标准输出,默认将输出结果输出至终端;STDERR,文件描述符:2;标准错误,默认将输出结果输出至终端常用重定向命令将命令的标准输出重定向到文件中SomeCommand > SomeFile.txt 将命令的标准输出重定向、追加到文件中SomeCommand >> SomeFile.txt将命令的标准输出、标准错误重定向到文件中Some

2022-04-08 11:50:58 231

原创 fork炸弹分析

Linux系统创建进程的方式十分简单,只需写一行fork();即可。因此,很容易在Linux环境下使用fork系统调用不断复制自身从而引发拒绝服务攻击Unix环境下的fork炸弹:(){ :|: & };:: 是函数名| 是管道命令,将前者的输出作为输入给后者,在这里每次调用:函数会执行:两次Unix中&表示将函数后台运行,换句话说,解除两函数的关联,当前面的:函数被终止,并不会杀死后面的:函数;表示函数定义结束后面的:是第一次的函数调用C语言实现#include &

2022-04-08 10:45:09 2281

原创 fork 系统调用解析

fork:一次调用,两个返回值fork 函数用于在Linux中创建新进程,英文本意是叉子,fork系统调用就像是叉子一样,寓意一分为二,一次调用,两个返回值fork执行后发生了什么?fork函数执行后,后将存在两个进程,且每个进程都会从 fork()的返回处继续执行新的子进程几近于对父进程的翻版:子进程获得父进程的栈、数据段、堆和执行文本段的拷贝执行 fork()之后,每个进程均可修改各自的栈数据、以及堆段中的变量,而并不影响另一进程父进程的fork返回值为子进程的pid,子进程的fork返

2022-04-07 23:33:36 1702

原创 docker 常用命令

列出所有容器镜像docker image ls查看所有容器信息以及其状态docker ps -a以下命令与之等价: docker container ls -a停止容器实例运行只有在停止容器实例之后才能删除对应的镜像docker stop/kill/start/restart container_id删除容器镜像docker rmi image_id命令行模式进入容器中docker exec -it container_id /bin/bashi:交互的(inter

2022-04-07 13:44:26 405

原创 将docker镜像上传到dockerhub

将docker镜像上传到dockerhub

2022-04-05 21:14:26 1371 1

原创 构建最小化的 go 语言 docker 容器

将你的go语言代码容器化如何通过引入Scratch,创建一个尽可能小的、go语言代码写的Docker容器?官方的docker仓库有个项目:https://github.com/docker-library/hello-world,可以在shell终端打印出hello world,本文只需三行Dockerfile+一个简单的.go文件即可完成功能编写go语言代码下面是一个简单的go语言程序源码,它每两秒打印出wdnmd字符package mainimport "fmt"import "time

2022-04-05 20:42:50 1212

原创 Linux 安装 go 语言并配置环境

安装go语言下载官网的源码压缩文件到本机:wget https://go.dev/dl/go1.18.linux-amd64.tar.gz解压缩:tar -C /usr/local -zxvf go1.18.linux-amd64.tar.gz配置go语言的环境变量:sudo vim /etc/profile按下G跳转到最后一行,粘贴:export GOROOT=/usr/local/goexport PATH=$PATH:$GOROOT/binexport GOPATH=$HO

2022-04-02 20:08:12 869

原创 Ubuntu 一键安装 docker

安装https://get.docker.com/有自动安装的脚本,因此下载到本地安装即可$ curl -fsSL get.docker.com -o get-docker.sh$ sudo sh get-docker.sh --mirror Aliyun

2022-04-02 18:23:37 2858

原创 解决apt命令报错:Could not get lock /var/lib/dpkg/lock

执行apt-get指令遇到一个诡异的报错: Could not get lock /var/lib/dpkg/lock原因:有别的apt进程正在执行看一下apt有关的进程:执行命令:sudo rm /var/lib/dpkg/lock再次查看进程:发现相关进程已被kill之后,apt指令正常使用...

2022-04-02 16:16:31 230

原创 分析Linux二进制文件的常用命令:xxd readelf file objdump

本文讲解了以下基本命令的使用:xxdreadelffileobjdumpxxd该命令将二进制文件以16进制表示$ xxd a.out | lessreadelf输出 elf 文件的有关信息-a 输出全部-h 输出elf 文件头file鉴别文件类型objdupmobjdump -f filename输出文件相关信息objdump -d filename输出文件反汇编之后的结果...

2022-03-31 19:03:00 846

原创 使用 strace 分析Linux系统调用

系统调用简介进程通过系统调用使用内核服务。系统调用会进入内核,让内核执行服务然后返回一些常见的系统调用:系统调用描述fork()创建进程exit()结束当前进程wait()等待子进程结束exec(filename, *argv)加载并执行一个文件open(filename, flags)打开文件,flags 指定读/写模式read(fd, buf, n)从文件中读 n 个字节到 bufwrite(fd, buf, n)从 buf 中

2022-03-31 18:31:54 499

原创 查看、管理 Linux 进程的几个常见命令

pidofpidof命令罗列出给定名字对应的进程id罗列出bash的进程id号:$ pidof bash2674500 2950 2454杀死bash相关所有进程: $ kill $(pidof name)pstreepstree 命令将正在运行的进程以树形式输出命令:pstree [option]option为-p:同时输出进程号option为user:输出特定用户的进程示例:$ pstree -p root输出root用户的进程树,同时输出其进程号ps输出所有

2022-03-27 14:44:43 1028

原创 使用SSH连接GitHub,解决报错:git@github.com: Permission denied (publickey)t

先检查ssh-agent的状态:$ Get-Service ssh-agentStatus Name DisplayNameStopped ssh-agent OpenSSH Authentication Agent这说明没有开启ssh服务,我们将ssh服务开启:$ eval $(ssh-agent)添加私钥,我在github端加入了wdnmd.pub,因此在这里将wdnmd私钥添加:$ ssh-add ~/.ssh/wdnmd下面

2022-03-26 20:49:08 1332

网络原理_历年试卷_AHU.zip

网络原理_历年试卷_AHU.zip

2021-03-11

计算机网络_谢希仁_第七版_课后答案.pdf

计算机网络_谢希仁_第七版_课后答案.pdf

2021-03-11

计算机网络_自顶向下_PPT.zip

计算机网络_自顶向下_PPT.zip

2021-03-11

病毒分析与防护实验1——注册表.pdf

病毒分析与防护实验1——注册表.pdf

2021-03-07

空空如也

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

TA关注的人

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