取证

  • 前言
  • 一、取证工具介绍
    • 1.1 Volatility
      • 1.1.1、镜像信息
      • 1.1.2、扫描内存中的文件带条件过滤
      • 1.1.3、进程查看
      • 1.1.4、dump对应文件
      • 1.1.5、根据pid 来dump运行文件的
      • 1.1.6、内存中查看系统用户名、密码
      • 1.1.7、获取密码哈希
      • 1.1.9、提取内存中保留的cmd命令使用情况
      • 1.1.10、获取sid号涉及用户
      • 1.1.11、查看用户名密码信息
    • 1.2 Autopsy
      • 1.2.1 使用流程
    • 1.3 MAGNET AXIOM
      • 1.3.1 使用流程
    • 1.4 Extundelete
      • 1.4.1 常用命令
    • 1.5 Tshark
      • 1.5.1.从.pcap文件中提取如wireshark表格中显示的USB摘要信息,并将结果输出到一个文件中
      • 1.5.2.对pcap的封包协议作详细解析并输出协议细节
      • 1.5.3.对pcap的封包协议作详细解析增加对TCP头checksum对错的判断
      • 1.5.4.承上,如需将IP头解析为DiffServ
      • **帮助界面命令**
    • 1.6 Mimikatz
      • 1.6.1使用指南
    • 1.7 其余脚本总结
  • 二、真题复现
    • 2.1.2018护网杯取证
    • 2.2 EXT3文件泄露
    • 2.3 简单的取证1
    • 2.4 something_in_image
    • 2.5 Advertising for Marriage
  • 总结

前言

`提示:掌握基础很关键


一、取证工具介绍

1.1 Volatility

记住走流程的关键命令:

1.1.1、镜像信息

volatility -f [内存文件名] imageinfo 特别关注Suggested Profile(s)的第镜像信息版本类型

1.1.2、扫描内存中的文件带条件过滤

volatility -f [内存文件名] --profile=(系统版本) filescan | grep “flag” 单个条件
volatility -f [内存文件名] --profile=(系统版本) filescan | grep -E “jpg|png|jpeg|bmp|gif” 多个条件

1.1.3、进程查看

volatility -f [内存文件名] --profile=(系统版本) pslist 查看进程

volatility -f [内存文件名] --profile=(系统版本) pstree 查看进程列表(树形)

1.1.4、dump对应文件

volatility -f [内存文件名] --profile=(系统版本) dumpfiles -Q 0xxxxxx --dump-dir=./

1.1.5、根据pid 来dump运行文件的

volatility -f [内存文件名] --profile=(系统版本) memdump -p 123 -D ./

volatility -f [内存文件名] --profile=(系统版本) procdump -p 1234 -D ./

1.1.6、内存中查看系统用户名、密码

volatility -f [内存文件名] --profile=(系统版本) printkey -K “SAM\Domains\Account\Users\Names”
volatility -f [内存文件名] --profile=(系统版本) printkey -K “SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon”

1.1.7、获取密码哈希

volatility -f [内存文件名] --profile=(系统版本) hivelist

获取密码哈希:
1.获取system 的 virtual 地址,SAM 的 virtual 地址:
volatility -f mem.raw --profile=WinXPSP2x86 hivelist

2.hashdump:
volatility -f mem.raw --profile=WinXPSP2x86 hashdump -y 0xe1018358 -s 0xe16acb60

1.1.9、提取内存中保留的cmd命令使用情况

volatility -f [内存文件名] --profile=(系统版本) cmdline

1.1.10、获取sid号涉及用户

volatility -f [内存文件名] --profile=(系统版本) getsids

1.1.11、查看用户名密码信息

volatility -f (内存文件名) --profile=(系统版本) hashdump

其他命令介绍:

功能 命令行及参数
进程列表(psx视图) volatility -f (内存文件名) –profile=(系统版本) psxview
网络通讯连接 volatility -f (内存文件名) –profile=(系统版本) netscan
加载的动态链接库 volatility -f (内存文件名) –profile=(系统版本) dlllist
屏幕截图 volatility -f 1(内存文件名) --profile=(系统版本) screenshot --dump-dir=./
查看SSDT表 volatility -f (内存文件名) –profile=(系统版本) ssdt
查看UserAssist痕迹 volatility -f (内存文件名) –profile=(系统版本) userassist
notepad插件 volatility -f [内存文件名] --profile=(系统版本) notepad 查看当前展示的 notepad 文本
解析MFT记录 volatility -f (内存文件名) –profile=(系统版本) mftparser
查看最后关机时间 volatility -f (内存文件名) –profile=(系统版本) shutdowntime
查看浏览器历史记录 volatility -f (内存文件名) --profile=(系统版本) iehistory
查看服务列表 volatility -f (内存文件名) –profile=(系统版本) svcscan
查看ShellBags volatility -f (内存文件名) –profile=(系统版本) shellbags
导出MFT记录,恢复文件 volatility -f (内存文件名) –profile=(系统版本) mftparser –output-file=mftverbose.txt -D mftoutput
提取注册表数据 volatility -f (内存文件名) –profile=(系统版本) dumpregistry
查看IE历史记录 volatility -f (内存文件名) –profile=(系统版本) iehistory
查看ShimCache痕迹 volatility -f (内存文件名) –profile=(系统版本) shimcache
查看Windows帐户hash volatility -f (内存文件名) –profile=(系统版本) hashdump
获取TrueCrypt密钥 volatility -f (内存文件名) –profile=(系统版本) truecryptmaster
获取TrueCrypt密码 volatility -f (内存文件名) –profile=(系统版本) truecryptpassphras

1.2 Autopsy

详细的中文版用户手册 :https://www.wangan.com/docs/1658
外网视频指导:https://www.youtube.com/watch?v=fEqx0MeCCHg

也是图形化界面,但是个人感觉功能稍逊于‘MAGNET AXIOM’

1.2.1 使用流程

首先创建New Case,填写好项目的名称与保存地址,然后next的设置任意填写即可,点击finish完成创建



跳转出新项目的设置,第一步便对新项目命名,然后关键的一步选中调查文件的类型,有磁盘镜像,VM虚拟机文件、本地磁盘,以及各类文件或已调查的结果。
这里以攻防世界里的一道题为例,选择了第一个镜像文件的选项。


选择好镜像文件的路径其余的默认即可,点击Next后也是默认扫描选项即可,默认勾选点击Next,等待最后的扫描完成即可进行取证


1.3 MAGNET AXIOM

1.3.1 使用流程

这个应用全程图形化界面,取证流程相对于Volatility简单的多,这里拿一个内存文件举例。首先打开Magnet AXIOM新建案件然后填写好案件编号类型设置路径便可以点击下一步了,选中证据来源然后选中系统,进行加载证据,选择取证的种类,大多数是内存也有可能是镜像,我们这里对内存文件进行取证,点击内存后选择内存文件即可等待进行下一步。






选择推荐的镜像配置文件然后点击下一页,后面的便是按着默认的来(如果没有特殊扫描要求,一般是按着默认的全局扫描)在等待扫描的过程中会弹出另外一个分析窗口,



在此可点击右上角的蓝色字体”查看所有使用痕迹类别" 进行进一步的详细分析,大致的基础使用方法便是这样


1.4 Extundelete

该软件在kali中默认装好的,没装的也可以直接apt-get install extundelete安装

1.4.1 常用命令

命令 功能
–inode ino 显示节点“ino”的信息。通常查看 --inode 2
–block blk 显示数据块“blk”的信息。
-restore-inode ino[,ino,…] 恢复命令参数,表示恢复节点“ino”的文件,恢复的文件会自动放在当前目录下的RESTORED_FILES文件夹中,使用节点编号作为扩展名。
–restore-file ‘path’ 恢复命令参数,表示将恢复指定路径的文件,并把恢复的文件放在当前目录下的RECOVERED_FILES目录中。
–restore-files ‘path’ 将恢复文件“路径”中列出的文件。每个文件名的格式应该与选项相同 -restore-file,每行应该有一个。
–restore-directory ‘path’ 将恢复目录’path’。 'path’是相对于文件系统的根目录的恢复目录在输出目录中创建为“path”。
–restore-all 恢复命令参数,表示将尝试恢复所有目录和文件。
–log filename 将所有消息记录到文件夹中。
-b blocknumber 表示使用之前备份的超级块来打开文件系统,一般用于查看现有超级块是不是当前所要的文件。
-o directory 将恢复的文件放置到指定的目录中.恢复后的文件创建在一个目录中默认为’RECOVERED_FILES/'。

1.5 Tshark

1.5.1.从.pcap文件中提取如wireshark表格中显示的USB摘要信息,并将结果输出到一个文件中

tshark -r usb.pcapng -T fields -e usb.capdata > out.txt

其中-T是指设置解码结果输出的格式,-T fields选项已经指定,所以需要用-e用来指定输出哪些字段;

1.5.2.对pcap的封包协议作详细解析并输出协议细节

tshark -r test.pcap -V

如要将解析结果输出到文本文件中则为:tshark -r udp.pcap -V -T pdml,输出格式有多种,具体参见tshark.html对参数 -T的说明

1.5.3.对pcap的封包协议作详细解析增加对TCP头checksum对错的判断

tshark -r test.pcap -V -o tcp.check_checksum:TRUE

为TRUE即checksum对错要作判断,为FALSE为不判断同理,对UDP checksum的判断则为:tshark -r udp.pcap -V -o udp.check_checksum:TRUE

1.5.4.承上,如需将IP头解析为DiffServ

tshark -r test.pcap -V -o ip.decode_tos_as_diffserv:TRUE

——————————————————————————————————

帮助界面命令

捕获接口:-i: -i <interface> 指定捕获接口,默认是第一个非本地循环接口;-f: -f <capture filter> 设置抓包过滤表达式,遵循libpcap过滤语法,这个实在抓包的过程中过滤,如果是分析本地文件则用不到。-s: -s <snaplen> 设置快照长度,用来读取完整的数据包,因为网络中传输有65535的限制,值0代表快照长度65535,默认也是这个值;-p: 以非混合模式工作,即只关心和本机有关的流量。-B: -B <buffer size> 设置缓冲区的大小,只对windows生效,默认是2M;-y: -y<link type> 设置抓包的数据链路层协议,不设置则默认为-L找到的第一个协议,局域网一般是EN10MB等;-D: 打印接口的列表并退出;-L 列出本机支持的数据链路层协议,供-y参数使用。捕获停止选项:-c: -c <packet count> 捕获n个包之后结束,默认捕获无限个;-a: -a <autostop cond.> ... duration:NUM,在num秒之后停止捕获;filesize:NUM,在numKB之后停止捕获;files:NUM,在捕获num个文件之后停止捕获;
捕获输出选项:-b <ringbuffer opt.> ... ring buffer的文件名由-w参数决定,-b参数采用test:value的形式书写;duration:NUM - 在NUM秒之后切换到下一个文件;filesize:NUM - 在NUM KB之后切换到下一个文件;files:NUM - 形成环形缓冲,在NUM文件达到之后;RPCAP选项:remote packet capture protocol,远程抓包协议进行抓包;-A:  -A <user>:<password>,使用RPCAP密码进行认证;输入文件:-r: -r <infile> 设置读取本地文件处理选项:-2: 执行两次分析-R: -R <read filter>,包的读取过滤器,可以在wireshark的filter语法上查看;在wireshark的视图->过滤器视图,在这一栏点击表达式,就会列出来对所有协议的支持。-Y: -Y <display filter>,使用读取过滤器的语法,在单次分析中可以代替-R选项;-n: 禁止所有地址名字解析(默认为允许所有)-N: 启用某一层的地址名字解析。“m”代表MAC层,“n”代表网络层,“t”代表传输层,“C”代表当前异步DNS查找。如果-n和-N参数同时存在,-n将被忽略。如果-n和-N参数都不写,则默认打开所有地址名字解析。-d: 将指定的数据按有关协议解包输出,如要将tcp 8888端口的流量按http解包,应该写为“-d tcp.port==8888,http”;tshark -d. 可以列出所有支持的有效选择器。输出选项:-w: -w <outfile|-> 设置raw数据的输出文件。这个参数不设置,tshark将会把解码结果输出到stdout,“-w -”表示把raw输出到stdout。如果要把解码结果输出到文件,使用重定向“>”而不要-w参数。-F: -F <output file type>,设置输出的文件格式,默认是.pcapng,使用tshark -F可列出所有支持的输出文件类型。-V: 增加细节输出;-O: -O <protocols>,只显示此选项指定的协议的详细信息。-P: 即使将解码结果写入文件中,也打印包的概要信息;-S: -S <separator> 行分割符-x: 设置在解码输出结果中,每个packet后面以HEX dump的方式显示具体数据。-T: -T pdml|ps|text|fields|psml,设置解码结果输出的格式,包括text,ps,psml和pdml,默认为text-e: 如果-T fields选项指定,-e用来指定输出哪些字段;-E: -E <fieldsoption>=<value>如果-T fields选项指定,使用-E来设置一些属性,比如header=y|nseparator=/t|/s|<char>occurrence=f|l|aaggregator=,|/s|<char>-t: -t a|ad|d|dd|e|r|u|ud 设置解码结果的时间格式。“ad”表示带日期的绝对时间,“a”表示不带日期的绝对时间,“r”表示从第一个包到现在的相对时间,“d”表示两个相邻包之间的增量时间(delta)。-u: s|hms 格式化输出秒;-l: 在输出每个包之后flush标准输出-q: 结合-z选项进行使用,来进行统计分析;-X: <key>:<value> 扩展项,lua_script、read_format,具体参见 man pages;-z:统计选项,具体的参考文档;tshark -z help,可以列出,-z选项支持的统计方式。其他选项:-h: 显示命令行帮助;-v: 显示tshark 的版本信息;

1.6 Mimikatz

1.6.1使用指南

学习视频指南:

https://www.youtube.com/watch?v=AZirvtZNIEw&t=11s

项目地址:

https://github.com/gentilkiwi/mimikatz/

Mimikatz最新版打包下载地址:

https://github.com/gentilkiwi/mimikatz/releases/tag/2.2.0-20210810

运行mimikatz时可以cd到某文件夹下,一般进入配置文件config文件中

初始步骤(不管后面怎么操作必须先给予权限):

privilege::debug


sekurlsa::logonpasswords


常用关键功能:

lsadump::sam

图中出现了administrator的syskey哈希值,我们将其放到cmd5中或其他平台破解即可,因为这个密码是本人在虚拟机中设置的较为复杂所以破解不出来

lsadump::sam /sam:SAM /system:SYSTEM 查看这个文件夹里面所有的用户名和密码

lsadump::sam /sam:SAM /system:SYSTEM

1.7 其余脚本总结

鼠标点击流量复原脚本(根据实际情况更改):

nums = []
keys = open("F:/Python3/out.txt",'r')
f = open("F:/Python3/keykey.txt",'w')
posx = 0
posy = 0
for line in keys:# print(len(line))if len(line) != 24:continuex=int(line[12:14],16)y=int(line[15:17],16)if x > 127 :x -= 256if y > 127 :y -= 256posx += xposy += ybtn_flag = int(line[0:2],16)  # 1 for left , 2 for right , 0 for nothingif btn_flag == 0 : # 1 代表左键f.write(str(posx))f.write(' ')f.write(str(posy))f.write('\n')f.close()

键盘流量复原脚本:

mappings = { 0x04:"A",  0x05:"B",  0x06:"C", 0x07:"D", 0x08:"E", 0x09:"F", 0x0A:"G",  0x0B:"H", 0x0C:"I",  0x0D:"J", 0x0E:"K", 0x0F:"L", 0x10:"M", 0x11:"N",0x12:"O",  0x13:"P", 0x14:"Q", 0x15:"R", 0x16:"S", 0x17:"T", 0x18:"U",0x19:"V", 0x1A:"W", 0x1B:"X", 0x1C:"Y", 0x1D:"Z", 0x1E:"1", 0x1F:"2", 0x20:"3", 0x21:"4", 0x22:"5",  0x23:"6", 0x24:"7", 0x25:"8", 0x26:"9", 0x27:"0", 0x28:"\n", 0x2a:"[DEL]",  0X2B:"    ", 0x2C:" ",  0x2D:"-", 0x2E:"=", 0x2F:"[",  0x30:"]",  0x31:"\\", 0x32:"~", 0x33:";",  0x34:"'", 0x36:",",  0x37:"." }
nums = []
keys = open('F:/Python3.0Work/CTF/键盘流量/out.txt')
for line in keys:if line[0]!='0' or line[1]!='0' or line[3]!='0' or line[4]!='0' or line[9]!='0' or line[10]!='0' or line[12]!='0' or line[13]!='0' or line[15]!='0' or line[16]!='0' or line[18]!='0' or line[19]!='0' or line[21]!='0' or line[22]!='0':continuenums.append(int(line[6:8],16))
keys.close()
output = ""
for n in nums:if n == 0 :continueif n in mappings:output += mappings[n]
print ('output :\n' + output)

二、真题复现

2.1.2018护网杯取证

考察知识点:volatilty的使用

使⽤volatilty进⾏分析(我这使用的是windows版本的,如果使用的是kali2018会默认安装的,直接volatility接参数就可以

.\volatility_2.6_win64_standalone.exe -f easy_dump.img imageinfo


在Syggested Profile后方第一个Win7SP1x64大概率的版本号,指定并用pslist命令方法查看进程

.\volatility_2.6_win64_standalone.exe -f easy_dump.img --profile=Win7SP1x64 pslist

其中一个名为DumpIt.exe的程序我们使⽤memdump命令方法将其dump出来。

.\volatility_2.6_win64_standalone.exe -f easy_dump.img --profile=Win7SP1x64 memdump -p 1724 -D ./

使⽤foremost进⾏分析,发现有个压缩包,解压后获得⼀个message.img


file命令检测⼀下,发现是ext2⽂件系统数据。


使⽤DiskGenius打开message.img。在磁盘⽬录中找到⼀个hint.txt,并且在files目录中找到⼀个vim的swp⽂件,


保存.message.swp文件在linux中使⽤ vim -r 命令恢复,得到⼀段字符串

yispyweise!dmsx_tthv_arr_didvi


保存并打开hite.txt发现很像坐标点,利用python代码的PIL库将其构造出来

from PIL import Imagefile = open('F:/Python3.0Work/CTF/坐标代码/hint.txt','r')
data = file.read()
pic = Image.new('RGB',(300,300))
data = data.split('\n')
#print(data)
for i in data[0:-1]:#print(i)a = i.split(' ')print(a[0])x = int(a[0])y = int(a[1])pic.putpixel([x,y],(255, 255, 255))
pic.show()
pic.save('result.png')

跑出来是一个二维码图片:

扫描得到的结果是:

Here is the vigenere key: aeolus, but i deleted the encrypted message。

维吉尼亚密码,前面恢复的是密文"yispyweise!dmsx_tthv_arr_didvi"而现在得到了密钥"aeolus"解码即可

得到结果:yeeeeeeeet!just_find_and_solve

2.2 EXT3文件泄露

考察知识点:extundelete的使用

2.2.1 首先我们获取到一个文件名为HZ,利用file对其分析发现是一个ext3文件,我们可以将这个文件挂载到本系统中利用extundelete进行恢复

2.2.2 先创建一个文件夹,然后使用挂载命令,查看挂载情况

mkdir 1998
mount HZ /1998
df


2.2.3 使用extundelete中的查询模块,查询根路径下的文件

extundelete /dev/loop0 --inode 2

2.2.4 我们在下方发现重要的文件“.f1@gggggggggggg.swp" ,后方发现他被删除了,那我们恢复他

extundelete /dev/loop0 --restore-file .f1@gggggggggggg.swp

2.2.5 恢复后会在该目录自动生成一个名为RECOVERED_FILES的文件夹,我们切换到该目录中,因为文件隐藏,利用ls -a打开,如果直接去cat会发现有乱码,这里因为文件是swp结尾的,是一个非常规退出时产生的文件,我们可以通过

vim -r .f1@gggggggggggg.swp

然后回车查看即可


很显然其实cat也看到了这一串flag,只是为了更完美

2.3 简单的取证1

考察知识点:Mimikatz的使用

首先拿到题目我们将其解压

运行mimikatz.exe并给予权限

.\mimikatz.exe
privilege::debug


切换到目标文件夹下,获取所有用户的hash值,找到对应用户对其进行破解

cd C:\Users\Administrator1\Desktop\config
lsadump::sam /sam:SAM /system:SYSTEM

通过对数据用户的逐一破解,发现administrator-QQAAzz这个用户的hash值经过md5解码后是密码

最后的结果便是:administrator-QQAAzz_forensics


2.4 something_in_image

考察知识点:extundelete的使用,及挂载硬盘命令

首先我们拿到这个无后缀的文件先可以放在kali中利用file命令查看其格式
该题文件为ext3扩展文件系统,可挂载的一种文件

接着我们创建一个文件夹,将其挂载到文件夹,然后再利用extundelete对其根目录查看情况

mkdir 1998
mount badimages /1998
df


对指定目录进行查询

extundelete /dev/loop0 --inode 2

发现Flag.txt文件,接着我们将其恢复,输入以下命令,成功后便会在该目录下生成RECOVERED_FILES文件夹其中包含Flag.txt,打开便有

extundelete /dev/loop0 --restore-file /Flag.txt


2.5 Advertising for Marriage

考察知识点:volatility的使用、GIMP的使用

⾸先使⽤⼯具volatility分析

.\volatility_2.6_win64_standalone.exe imageinfo -f AM.raw

查询中得到系统大概率为WinXPSP2x86
查询其进程情况

.\volatility_2.6_win64_standalone.exe -f AM.raw --profile=WinXPSP2x86 psscan


发现有⼀个画图进程,提取⼀下,因为他肯定是一张图片,但是宽高不敢确定,最花时间的步骤就在这里了

.\volatility_2.6_win64_standalone.exe -f AM.raw --profile=WinXPSP2x86 memdump -p 332 -D ./


将332.dmp文件后缀更改成data这样GIMP才能打开图像,使⽤GIMP打开,各种调整⾼度 发现575 640 635,拉取到下方,得到⼀个图,有四个字母PJCX但是感觉图片被颠倒了


将图片竖直翻转后发现图片中的字符串为b1cx,不知道这有什么用再去进程中看看还有没有什么线索

发现notepad进程,将notepad提取查看

.\volatility_2.6_win64_standalone.exe -f AM.raw --profile=WinXPSP2x86 notepad


看见下方有个提示:hint:???needmoneyandgirlfirend,大胆猜测之前那四位便是这里的前四位,有概率是上面的PJCX转换成小写pjcxneedmoneyandgirlfirend,但也有可能是b1cxneedmoneyandgirlfirend

到此为止也就发现了一串密钥,现在再去看看磁盘中是否存在其他线索,针对性的查寻图片、text文档、doc等,这边使用window的volatility会出现一些报错现象也不是很好解决,这边就转到kali2018自带的volatility工具中,使用grep命令进行过滤查询

volatility -f AM.raw filescan
–profile=WinXPSP2x86 | grep -E “jpg|png|bmp”

发现在⼀个名为vegetable.png的图片,将其提取

volatility -f AM.raw --profile=WinXPSP2x86 dumpfiles -
Q 0x000000000249ae78 -n --dump-dir=./

提取后利用foremost对其分离,但是图片是损坏的打不开,这时候需要使⽤crc32校验爆破的脚本查询该图片正确的长宽

import zlib
import struct# 同时爆破宽度和高度
filename = 'C:/Users/1998/Desktop/122.png'
with open(filename, 'rb') as f:all_b = f.read()crc32key = int(all_b[29:33].hex(), 16)data = bytearray(all_b[12:29])n = 4095for w in range(n):width = bytearray(struct.pack('>i', w))for h in range(n):height = bytearray(struct.pack('>i', h))for x in range(4):data[x+4] = width[x]data[x+8] = height[x]crc32result = zlib.crc32(data)if crc32result == crc32key:print("宽为:", end = '')print(width, end = ' ')print(int.from_bytes(width, byteorder='big'))print("高为:", end = '')print(height, end = ' ')print(int.from_bytes(height, byteorder='big'))#后面用十进制转十六进制

正确宽为:00 00 01 1F 正确高为:00 00 00 D3

发现完整的图片:

stegsolve查看猜测其低通道是存在LSB隐写的,
使用LSB解密脚本:lsb脚本项目地址:https://github.com/livz/cloacked-pixel
注意:这边脚本使用的是python2,安装了crypto库,需要将python2文件夹中lib中的crypto的首位改成大写变成Crypto

这边的密钥尝试上方猜测的两个,发现b1cxneedmoneyandgirlfirend是真实密钥,得到文件2.txt

python lsb.py extract 1.png 2.txt b1cxneedmoneyandgirlfirend


得到⼀个base64编码的数据,通过解码可得

VmlyZ2luaWEgY2lwaGVydGV4dDpnbnh0bXdnN3IxNDE3cHNlZGJzNjI1ODdoMA==

Virginia ciphertext:gnxtmwg7r1417psedbs62587h0

维吉尼亚密码解密,
密文:gnxtmwg7r1417psedbs62587h0
密钥:bcxneedmoneyandgirlfirend
(因为密钥只能是由字母组成,而不是b1cxneedmoneyandgirlfirend )

得到结果:

flagisd7f1417bfafbf62587e0

总结

提示:练习题目最重要

有关于取证的笔记——包含详细例题解析相关推荐

  1. 一文搞定子网划分!子网掩码!超详细例题解析!

    子网划分理论基础 为什么进行子网划分 减少网络流量,无论什么样的流量,我们都希望它少些,网络流量亦如此.如果没有可信赖的路由器,网络流量可能导致整个网络停顿,但有了路由器后,大部分流量都将呆在本地网络 ...

  2. PV操作详解(附详细例题解析和总结)

    PV操作详解 写在前面:本文主要讲解PV操作与信息量结合,实现进程的同步与互斥 文章目录 PV操作详解 1. PV操作定义 2. 信号量的应用 3. 经典问题分析 3.1 课上例题 3.2 课下习题分 ...

  3. 电子数据取证Windows取证读书笔记

    电子数据取证第六章Windows取证读书笔记 其实Windows的取证可以依靠像美亚的取证大师这类取证软件来进行. 这类软件可以完成大多数的取证需要 用户目录: WindowsXP----Docume ...

  4. 最全自建蚂蚁(leanote)笔记超详细步骤

    服务器(Windows系统)自建蚂蚁(leanote)笔记超详细步骤(包含数据备份和数据还原) 需要依赖(工具) 轻量服务器(云服务器)一台 -- 环境Windows Server 2019 Mong ...

  5. 最优控制和轨迹规划学习笔记 包含多个实际案例 主要思路是使用优化算法来找到车辆的最佳路径

    最优控制和轨迹规划学习笔记 包含多个实际案例 倒立摆上翻控制 满足车辆运动学约束的路径规划 离散点参考线优化 lattice横向距离规划 这段代码包含了三个程序,我们将分别对它们进行详细的分析. 最速 ...

  6. JUC.Condition学习笔记[附详细源码解析]

    JUC.Condition学习笔记[附详细源码解析] 目录 Condition的概念 大体实现流程 I.初始化状态 II.await()操作 III.signal()操作 3个主要方法 Conditi ...

  7. C语言实现小波分解,提取近似与细节分量,包含详细例程

    C语言实现小波分解,提取近似与细节分量,包含详细例程 声明 本文的C语言实现小波分解非本人原创,均参考了网络上的文章(详见最后的参考资料),程序主要来自李承宇的文章和程序. 我只对程序进行了少量的修改 ...

  8. 路由器二次开发一步一步把工业路由器变成一个高端的可指定出网、节点和链路的路由器,包含详细过程及快捷脚本(四)

    路由器二次开发一步一步把工业路由器变成一个高端的可指定出网.节点和链路的路由器,包含详细过程及快捷脚本(四). 如果没有 路由器 可以采用 废旧的电脑,详细环境部署参考第(一)篇文章,这里采用800米 ...

  9. 路由器二次开发一步一步把工业路由器变成一个高端的可指定出网、节点和链路的路由器,包含详细过程及快捷脚本(五)

    路由器二次开发一步一步把工业路由器变成一个高端的可指定出网.节点和链路的路由器,包含详细过程及快捷脚本(五). 如果没有 路由器 可以采用 废旧的电脑,详细环境部署参考第(一)篇文章,这里采用800米 ...

最新文章

  1. map集合根据value找key,默认取第一个key
  2. 【鸿蒙 HarmonyOS】Ability 简介 ( 简介 | 创建应用 | Page Ability 生命周期 )
  3. 微信小程序工具真机调试提示page xxx/xxx/xxx is not found
  4. 【system generator】基于system generator的根号运算系统实现
  5. boost::function_types::is_callable_builtin用法的测试程序
  6. 统计学习方法-第二章课后习题答案整理
  7. 【Hitachi2020C】ThREE【构造】【二分图染色】
  8. python字典中的键是什么_在python字典中作为键的对象
  9. Android判断设备是否打开WIFI、GPRS数据连接
  10. 来看看国内大公司官网隐藏的彩蛋
  11. 3811.排列-AcWing题库
  12. 解决打开excel报文件格式或文件扩展名无效的问题
  13. CUBE+STM32F103 入门
  14. 3D游戏模型是怎么制作出来的?
  15. vue echarts结合高德地图
  16. 多人群聊聊天室java_#java 聊天室(一)—— 实现一个简单Telnet多人群聊聊天室...
  17. AppID、AppKey、AppSecret
  18. 2023年我终于进阿里了,阿里offer五面经验与总结
  19. tomcat启动一闪而逝
  20. 北达软微服务架构设计与实践圆满结束

热门文章

  1. torch.repeat()
  2. js html body onload,动态添加页面body OnLoad事件的简单js代码
  3. 苹果将于4月20日举行产品发布会
  4. [JavaScript 刷题] 搜索 - 腐烂的橘子, leetcode 994
  5. 1. 在 SAP ABAP 事物码 SEGW 里创建 SAP OData 项目
  6. 数据库原理及应用-李唯唯主编-实验3-2
  7. c\c++: modifier, qualifier, specifier
  8. 网络教育计算机和英语难度怎样,网络教育统考大学英语b难吗?
  9. Java面试题——基础篇一
  10. VS2013中F#的新特性