端口+目录扫描

目录

前言:

基础知识:

状态码:

2XX:

3XX:

4XX: 

5XX: 

消息头:

请求头:

响应头:

目录扫描:

接口扫描:

主机存活扫描:

ICMP:

​编辑

NetBIOS:

ARP:

 SNMP:

端口扫描:

NMAP漏洞扫描:


前言:

渗透测试中什么最重要,如果手里没有0day,那前期的信息收集算是很重要的了,可以说直接占了80%,漏洞就那些,大同小异,但是能不能比别人多找到几个暴露点就不一样了,所以有时候渗透有时候还是要有耐心,心细。扫描分为目录扫描,接口扫描和参数扫描,针对不同的架构需要指定不同的扫描方案。

基础知识:

扫描最需要关注的就是返回的状态码和大小,先列出常见的状态码;

状态码:

2XX:

2开头(请求成功)
200[成功]服务器已成功处理了请求。 通常,这表示服务器提供了请求的网页。
201[已创建]请求成功并且服务器创建了新的资源。
202[已接受]服务器已接受请求,但尚未处理。
203[非授权信息]服务器已成功处理了请求,但返回的信息可能来自另一来源。
204[无内容]服务器成功处理了请求,但没有返回任何内容。
205[重置内容]服务器成功处理了请求,但没有返回任何内容。
206[部分内容]服务器成功处理了部分 GET 请求。

3XX:

3开头(请求被重定向)
300[多种选择]针对请求,服务器可执行多种操作。 服务器可根据请求者 (user agent) 选择一项操作,或提供操作列表供请求者选择。
301[永久重定向]超级蜘蛛池之301重定向设置技巧,请求的网页已永久重定向到新位置。 服务器返回此响应[对 GET 或 HEAD 请求的响应]时,会自动将请求者转到新位置
302[临时重定向]服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
303[查看其他位置]请求者应当对不同的位置使用单独的 GET 请求来检索响应时,服务器返回此代码。
304[未修改]自从上次请求后,请求的网页未修改过。 服务器返回此响应时,不会返回网页内容。
305[使用代理]请求者只能使用代理访问请求的网页。 如果服务器返回此响应,还表示请求者应使用代理。
307[临时重定向]服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。

4XX: 

4开头(请求错误)
400[错误请求]服务器不理解请求的语法。
401[未授权]请求要求身份验证。 对于需要登录的网页,服务器可能返回此响应。
403[禁止]服务器拒绝请求。
404[未找到]404 not found,服务器找不到请求的网页,网站404页面对SEO优化的影响及作用
405[方法禁用]禁用请求中指定的方法。
406[不接受]无法使用请求的内容特性响应请求的网页。
407[需要代理授权]此状态代码与 401[未授权]类似,但指定请求者应当授权使用代理。
408[请求超时]服务器等候请求时发生超时。
409[冲突]服务器在完成请求时发生冲突。 服务器必须在响应中包含有关冲突的信息。
410[已删除]如果请求的资源已永久删除,服务器就会返回此响应。
411[需要有效长度]服务器不接受不含有效内容长度标头字段的请求。
412[未满足前提条件]服务器未满足请求者在请求中设置的其中一个前提条件。
413[请求实体过大]服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。
414[请求的 URI 过长]请求的 URI[通常为网址]过长,服务器无法处理。
415[不支持的媒体类型]请求的格式不受请求页面的支持。
416[请求范围不符合要求]如果页面无法提供请求的范围,则服务器会返回此状态代码。
417[未满足期望值]服务器未满足"期望"请求标头字段的要求。

5XX: 

5开头(服务器错误)
500[服务器内部错误]服务器遇到错误,无法完成请求。
501[尚未实施]服务器不具备完成请求的功能。 例如,服务器无法识别请求方法时可能会返回此代码。
502[错误网关]服务器作为网关或代理,从上游服务器收到无效响应。
503[服务不可用]服务器目前无法使用[由于超载或停机维护]。 通常,这只是暂时状态
504[网关超时]服务器作为网关或代理,但是没有及时从上游服务器收到请求。
505[HTTP 版本不受支持]服务器不支持请求中所用的 HTTP 协议版本。

消息头:

请求头:

Accept:定义客户端可接受的响应内容类型;
Accept-charset:定义客户端可接受的字符集;
Accept-Encoding:定义客户端可接受的编码方式,比如打包方式--gzip 等;
cookie:由服务器通过 set-cookie 设置的 cookie;
Content-Length:请求体的长度;
Content-Type:请求体的数据类型:Content-Type: application/x-www-form-urlencoded;
Date:发送该请求的日期和时间;
Host:所请求的服务器地址;
Referrer:表示页面是从哪个地链接过来的,可以用来统计网页上的链接访问量;
User-Agent:显示客户端的身份标识;
If-Modified-Since:用于协商缓存,取自 Response haders 中的 Last-Modified 字段。服务器通过对比这两个字段判断缓存是否有效;
If-None-Match:用于协商缓存,取自 Response Headers 中的 E-tag 字段。服务器通过对比这两个字段判断缓存是否有效;

响应头:

Access-Control-Allow-Origin:指定哪些网站以跨域资源共享(CORS);
Content-Encoding:响应资源的编码方式;
Content-Language:响应资源所使用的语言;
Content-Length:响应资源的长度;
Content-type:响应内容的数据类型;
Date:消息被发送时的日期和时间;
Location:用于重定向;
Set-Cookie:用于设置客户端的 cookie ;
Status:用来说明当前 Http 连接的状态;
Last-Modified:服务器返回给客户端,下次请求通过在 Resquest Headers 中的 If-Modified-Since 字段携带过来。
E-tag:服务器返回给客户端,下次请求通过在 Resquest Headers 中的 If-None-Matched 字段携带过来。
Cache-Control:
    max-age:缓存有效期,浏览器自己通过计时判断缓存是否过期。如果未过期则命中强制缓存。
    no-cache:不使用强制缓存,直接进入协商缓存。
    no-store:不使用缓存,每次请求都会进行 http 请求。

目录扫描:

目录扫描我比较常用的是dirsearch和DirBuster两个工具:

DirBuster没什么好说的,java编写的有可视化界面,可以递归扫描可以在扫描中调整线程,简单方便,网上直接下载使用即可

dirsearch我觉的还是比较好用的,可以递归扫描,可定制的消息头等功能还是不错的,可以直接apt安装:

https://github.com/maurosoria/dirsearch
apt install dirsearch
pip install dirsearch

直接列出我常用的命令,并解释: 

dirsearch -u http://127.0.0.1:8080 -w /home/password/dir.txt -f  -e php,js

这里我的字典中不包含后缀,使用-f 自定义后缀,然后使用-e添加我们要扫描的后缀,扫描的时候会首先扫描字典中不加后缀如amdin,然后admin.php和admin.js

dirsearch -u http://127.0.0.1:8080 -w /home/password/dir.txt  -r -t 10 --max-recursion-depth 3 --recursion-status 200-399

使用-r可以进行递归扫描,-t可以限制线程也就是发包数量,防止被封锁,--max-recursion-depth为最大递归目录层级,--recursion-status为过滤显示的状态码

其他的如果需要添加cookie可以参考帮助内容进行设置;

接口扫描:

接口扫描就不能使用目录扫描工具,我一般使用burp的Intruder功能:

接口扫描一半要配合目录扫描完成,当然如果服务器采用的是resturl也可以通过目录扫描的方式扫描接口,如果不是则可以使用burp有针对性的对接口进行扫描。

主机存活扫描:

针对主机存活扫描主要通过ICMP、NetBIOS、ARP、SNMP、SMB六种协议进行存活扫描,下面一一介绍:

ICMP:

ICMP协议全称为 Internet Control Message Protocol (Internet控制报文协议),主要就是我们常使用的ping命令:

for /l %i in (1,1,255) do @ ping 192.168.5.%i -w 1 -n 1|find /i "ttl="
nmap -sn -PE -T4 192.168.5.0/24

但是通过这种方式扫描很容易被检测到,只要中间存在流量检测设备很容易就发现存在大量异常的ICMP流量,不符合正常,并且主机可以设置关闭ICMP应答,会导致漏报。

这里需要注意使用nmap的参数为:

-PE/PP/PM : 对应为使用ICMP echo、 ICMP timestamp、ICMP netmask 请求包发现主机

  1. ICMP Echo(回显请求和回显应答):

    • 回显请求(Echo Request)是一种ICMP消息,通常由网络管理员或工具发送给目标主机,以测试目标主机的可达性和测量往返时间(Round-Trip Time,RTT)。
    • 目标主机接收到回显请求后,会返回一个回显应答(Echo Reply)消息,其中包含与请求相对应的数据,以确认目标主机的可达性。
    • Ping工具使用的就是ICMP Echo请求和应答消息。
  2. ICMP Timestamp(时间戳请求和时间戳应答):

    • 时间戳请求(Timestamp Request)是一种ICMP消息,用于获取目标主机的当前时间戳信息。
    • 目标主机接收到时间戳请求后,会返回一个时间戳应答(Timestamp Reply)消息,其中包含与请求相对应的时间戳信息。
    • 时间戳请求和应答消息可以用于同步网络中的时间,进行时间测量和故障排除等操作。
  3. ICMP Netmask(掩码请求和掩码应答):

    • 掩码请求(Address Mask Request)是一种ICMP消息,用于获取目标主机的子网掩码信息。
    • 目标主机接收到掩码请求后,会返回一个掩码应答(Address Mask Reply)消息,其中包含与请求相对应的子网掩码信息。
    • 掩码请求和应答消息可以用于获取目标主机所在网络的子网掩码,有助于进行网络配置和路由表的设置。

ICMP Echo用于测试主机的可达性和测量往返时间(Ping),ICMP Timestamp用于获取主机的时间信息,ICMP Netmask用于获取主机的子网掩码信息。这些消息在网络管理、故障排除和配置中发挥着不同的作用,所以在使用nmap扫描的时候可以根据实际情况选择使用哪个协议

NetBIOS:

NetBIOS(Network Basic Input/Output System)是一种面向会话的网络通信协议,最初由IBM开发,用于在局域网中的计算机之间进行通信。NetBIOS提供了一组用于命名、发现和管理网络上计算机资源的服务。

NetBIOS协议的主要功能包括:

  1. 命名服务:NetBIOS允许计算机在局域网中注册和识别自己的名称。每个计算机可以使用一个15个字符的NetBIOS名称来标识自己。这些名称可以用于标识计算机、打印机、共享文件夹等资源。

  2. 会话服务:NetBIOS提供了会话层的功能,允许计算机之间建立会话并进行数据传输。它支持可靠的、面向连接的会话,确保数据的可靠传输和错误处理。

  3. 数据报服务:NetBIOS还提供了无连接的数据报服务,允许计算机之间以无连接的方式发送和接收数据。这种方式类似于UDP协议。

  4. 名称解析服务:NetBIOS使用名称解析服务将NetBIOS名称转换为网络地址(如IP地址)。这使得计算机可以通过名称来寻找和访问其他计算机,而不需要直接使用IP地址。

NetBIOS协议在早期的局域网环境中广泛使用,特别是在Microsoft Windows操作系统中。然而,随着网络技术的发展和引入更先进的协议(如TCP/IP),NetBIOS的重要性逐渐下降。然而,NetBIOS仍然被用于一些特定的应用场景和遗留系统中。

需要注意的是,NetBIOS是一个协议,而NetBIOS名称服务(NBNS)是一种基于UDP的名称解析服务,用于将NetBIOS名称转换为IP地址。NBNS使用端口号137进行通信。

nmap -sn -PE -T4 192.168.5.0/24

可以看到扫描是基于UDP扫描137端口,所以要配合tcp扫描,进而得到比较全的暴露面

 当然也可以使用nbtscan工具扫描,下载地址如下:

http://www.unixwiz.net/tools/nbtscan.html#download

ARP:

ARP(Address Resolution Protocol,地址解析协议)是在计算机网络中用于将IP地址转换为物理MAC地址的协议。它是在局域网(LAN)中工作的一种协议,用于解决网络层(IP层)和数据链路层(MAC层)之间的地址映射问题。

当主机在发送数据包时,需要知道目标主机的物理地址(MAC地址),以便将数据包正确地发送到目标主机。然而,主机通常只知道目标主机的IP地址,而不知道其MAC地址。这时候,ARP协议就发挥作用了。

ARP协议工作的基本原理如下:

  1. 主机A想要发送数据包给目标主机B,但只知道B的IP地址。

  2. 主机A首先检查本地的ARP缓存表(ARP Cache)中是否存在目标主机B的IP地址对应的MAC地址。如果存在,主机A可以直接使用缓存中的MAC地址。

  3. 如果ARP缓存表中没有目标主机B的IP地址对应的MAC地址,主机A将发送一个ARP请求广播消息到局域网上的所有主机。

  4. ARP请求消息中包含了主机A自己的IP地址、MAC地址以及目标主机B的IP地址。其他主机收到ARP请求消息后,会检查自己的IP地址是否与请求中的目标IP地址相匹配。

  5. 目标主机B收到ARP请求后,会向主机A发送ARP响应消息,包含自己的IP地址和MAC地址。

  6. 主机A收到ARP响应消息后,将目标主机B的IP地址和MAC地址添加到ARP缓存表中,并使用该MAC地址发送数据包给目标主机B。

针对ARP的扫描,windows下可以使用arp-scan.exe,下载地址如下:

https://github.com/QbsuranAlang/arp-scan-windows-

 

linux下可以使用arp-scan,命令如下:

arp-scan --interface=eth0 192.168.5.0/24
arp-scan --localnet

 也可以使用nmap:

nmap -sn -PR 192.168.0.*

 SNMP:

SNMP(Simple Network Management Protocol,简单网络管理协议)是一种用于管理和监控网络设备的应用层协议。它提供了一种标准的方式,使得网络管理员可以远程监视和管理网络中的设备、收集性能数据、配置设备以及检测和解决故障。

SNMP的基本原理如下:

  1. 管理站点和代理:SNMP网络中通常包含一个或多个管理站点(Manager)和被管理的设备(Agent)。管理站点负责监控和管理网络设备,而代理则是网络设备上运行的软件模块,负责与管理站点进行通信。

  2. MIB(Management Information Base):MIB是一种数据库,用于存储和组织网络设备的管理信息。MIB定义了一组对象(Object),每个对象都有一个唯一的标识符(OID,Object Identifier)和相关的属性。管理站点通过查询和设置这些对象来获取和修改设备的状态和配置。

  3. SNMP消息:SNMP使用消息进行管理和监控操作。常见的SNMP消息类型包括Get(获取单个对象的值)、Set(设置单个对象的值)、Trap(设备主动发送的事件通知)等。

  4. SNMP版本:SNMP有多个版本,包括SNMPv1、SNMPv2c、SNMPv3等。这些版本在安全性、功能和协议特性方面有所差异。

SNMP主要用于监控网络设备的状态和性能,例如路由器、交换机、服务器等。它可以提供有关设备的信息,如CPU利用率、内存使用情况、网络流量、接口状态等。通过SNMP,管理员可以实时监控设备的运行状况、识别潜在问题并采取相应的措施。

需要注意的是,SNMP是一种面向连接的协议,使用UDP作为传输层协议,运行在应用层。为了确保安全性,SNMPv3引入了加密和认证机制,以保护管理信息的机密性和完整性

我们可以使用nmap进行探测,但是这里需要主要设定-p端口,如果不设置会扫描默认端口,会非常慢,不建议在探测的时候进行扫描。

nmap -sU --script snmp-brute 192.168.139.0/24 -T4 -p 445

在扫描中首先是通过arp广播,有返回了才会对445端口测试 

 

在探测中推荐arp探测主机存活,然后将没扫描到的通过ICMP检查是否有遗漏。

端口扫描:

端口扫描我们经常使用的是nmap,其参考文档地址如下:

https://nmap.org/book/man.html

先列出在端口扫描中常用的配置解释:

扫描类型:
-sT    TCP connect()扫描,这种方式会在目标主机的日志中记录大批连接请求和错误信息。
-sS    半开扫描,很少有系统能把它记入系统日志。不过,需要Root权限
-sU	   UDP扫描,但UDP扫描是不可靠的
-sn    对目标进行ping检测,不进行端口扫描扫描参数:
-p    指定端口,如"1-65535、1433、135、22、80"等
--script=<脚本名称>    添加脚本扫描
-O    对目标主机的操作系统进行扫描
-sV   探测端口服务版本
-Pn   目标机禁用ping,绕过ping扫描扫描技术:
-sN    使用TCP Null扫描。在Null扫描中,发送的TCP报文没有设置任何标志位(即所有标志位均为0),用于测试目标主机对Null扫描的响应。如果目标主机返回RST响应,则表示该端口是关闭的。
-sF    使用TCP FIN扫描。在FIN扫描中,发送的TCP报文中只设置了FIN标志位,用于测试目标主机对FIN扫描的响应。如果目标主机返回RST响应,则表示该端口是关闭的。
-sX    使用TCP Xmas扫描。在Xmas扫描中,发送的TCP报文的FIN、URG和PSH标志位都被设置为1,用于测试目标主机对Xmas扫描的响应。如果目标主机返回RST响应,则表示该端口是关闭的。
-sA    使用TCP ACK扫描。在ACK扫描中,发送的TCP报文只设置了ACK标志位,用于测试目标主机对ACK扫描的响应。ACK扫描常用于确定防火墙规则和过滤器的存在、绕过防火墙的限制等。响应的不同情况可能有多种解释。 
-sI <代理主机> <目标主机>   通过代理主机扫描目标配置参数:
--source-port    随机化端口号
--scan-delay     延迟数据包发送,减慢扫描速度
--max-parallelism 设置扫描线程
-T4: 指定扫描过程使用的时序,总有6个级别(0-5),级别越高,扫描速度越快,但也容易被防火墙或IDS检测并屏蔽掉

半开模式tcp扫描),使用-sT会产生大量的日志,不建议使用:

nmap -sS  -sV -O -Pn 192.168.1.1  --source-port  -p 1-65535  --max-parallelism 100

UDP扫描:

添加了--scan-delay扫描速度会极其的慢,在有防火墙的可以:

nmap -sU -Pn 192.168.1.1 --scan-delay 500ms --source-port   -p 1-65535 

快速扫描:

nmap -sU -Pn 192.168.5.99 --source-port -T3 -p 1-65535

NMAP漏洞扫描:

当我们使用nmap扫描目标的时候,当扫描出具体的服务指纹对应到对应的服务版本号,这个时候我们可以使用nmap脚本比对该版本是否存在cve漏洞,可以极大的减轻我们的工作负担:

有vulscan和nmap-vulners两个工具,链接如下,随便选一个就行,我这里用第一个:

https://github.com/scipag/vulscan
https://github.com/vulnersCom/nmap-vulners/tree/master

首先进入目录/usr/share/nmap/scripts/新建vulscan

​cd /usr/share/nmap/scripts/vulscangit clone https://github.com/scipag/vulscan.git

 定期更新内部cve库:

chmod 744 update.sh
./update.sh

使用命令如下:

完全扫描:
nmap --script=vulscan/vulscan.nse  -sV -O 192.168.5.99  
指定csv扫描:
nmap --script=vulscan/vulscan.nse --script-args vulscandb=exploitdb.csv -sV -O 192.168.5.99

 其中我们可以指定vulscandb来指定使用哪个csv,全部都用会有大量无用数据,反而很难分析,指定一个就够了:

共有八个csv可以选择:
exploitdb.csv  
osvdb.csv      
securityfocus.csv    
xforce.csv
securitytracker.csv  
cve.csv      
openvas.csv    
scipvuldb.csv 

总结:

主机扫描差不多就这些了,包括目录扫描,端口扫描,前期对目标的web服务进行目录扫描和主机服务的端口扫描加漏洞扫描基本用的就是上述方法和工具,当然还有很多其他很好用的工具,但是原理都差不多,用的顺手都差不多,针对内网主机的扫描使用的是另外一种方法和工具,这个后期再进行讲解 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/584022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页设计期末 建筑博物馆首页 HTML+CSS+js 完整代码(轮播图+瀑布流)

文章目录 前言&#xff1a;完整代码在总结处跳转&#xff01;&#xff01;&#xff01; 描述&#xff1a;结果展示&#xff1a;部分代码演示&#xff1a;&#xff08;完整代码在总结处跳转&#xff09;总结&#xff1a;&#xff08;完整代码在此处跳转&#xff09; 前言&#x…

C++面试宝典第11题:两数之和

题目 给定一个整数数组和一个目标值,请在该数组中找出和为目标值的那两个整数,并返回他们的数组下标,要求时间复杂度为O(n)。可以假设每种输入只会对应一个答案,注意:不能重复利用这个数组中同样的元素。 解析 这道题主要考察应聘者对算法时间复杂度和空间复杂度的理解,时…

【JVM篇】Java是如何实现平台无关的?

Java是如何实现平台无关的? ✔️什么是平台无关性✔️平台无关性的实现✔️Java虚拟机✔️字节码✔️Java语言规范 ✔️扩展知识仓✔️平台无关性的好处✔️ 有哪些语言实现了平台无关?✔️Java中基本数据类型的大小都是确定的吗? ✔️什么是平台无关性 平台无关性就是一种语…

Net6 Core webApi发布到IIS

Net6 Core Api发布到IIS不同于webapi&#xff0c;依赖框架不同&#xff0c;配置也移至项目内Program.cs 一、发布到指定文件夹和IIS&#xff0c;不过注意IIS应用程序池选择的是 “无托管代码“ 在IIS管理器中点击浏览&#xff0c;访问接口路径报500.19&#xff0c;原因是所依赖…

机器学习之K-means聚类

概念 K-means是一种常用的机器学习算法,用于聚类分析。聚类是一种无监督学习方法,它试图将数据集中的样本划分为具有相似特征的组(簇)。K-means算法的目标是将数据集划分为K个簇,其中每个样本属于与其最近的簇中心。 以下是K-means算法的基本步骤: 选择簇的数量(K值)…

HTTP协议编程实战(一)实战一

http使用在应用层&#xff0c;http是单次连接&#xff0c;一次只能发送一个请求。http是一个无状态协议&#xff0c;他不会保存客户端的状态信息&#xff0c;从而提高运行效率&#xff0c;保持比较快的响应速度。http是一种面向对象的协议&#xff0c;允许传送任意数据类型的对…

2024年医院设备维修培训安排

在你还考虑该不该干的时候别人已经走好远了 小时候觉得忘带作业是天大的事&#xff0c;高中的时候&#xff0c;觉得考不上大学是天大的事&#xff0c;恋爱的时候&#xff0c;觉得跟喜欢的人分开是天大的事&#xff0c;到现在回头看看&#xff0c;那些难以跨过的山&#xff0c;…

1200PLC连接分布式IO组态编程应用

SMART PLC作为S7-1200PLC的智能IO从站设备组态和编程应用详细介绍请参考下面链接文章&#xff1a; https://rxxw-control.blog.csdn.net/article/details/130257474https://rxxw-control.blog.csdn.net/article/details/130257474这篇博客我们介绍S7-1200PLC和分布式IO连接组…

【C语言深度剖析——第一节(关键字1)】《C语言深度解剖》+蛋哥分析+个人理解

你未曾见过火光&#xff0c;难怪甘愿漂泊寒夜 本文由睡觉待开机原创&#xff0c;未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 首先简单介绍一下《C语言深度解剖》&#xff1a; 全书特点&am…

BUUCTF Reverse/[2019红帽杯]Snake

BUUCTF Reverse/[2019红帽杯]Snake 下载解压缩后得到可执行文件&#xff0c;而且有一个unity的应用程序&#xff0c;应该是用unity编写的游戏 打开是一个贪吃蛇游戏 用.NET Reflector打开Assembly-CSharp.dll。&#xff08;unity在打包后&#xff0c;会将所有的代码打进一个Ass…

交叉验证的种类和原理(sklearn.model_selection import *)

交叉验证的种类和原理 所有的来自https://scikit-learn.org/stable/modules/cross_validation.html#cross-validation-iterators并掺杂了自己的理解。 文章目录 前言一、基础知识1.1 交叉验证图形表示1.2 交叉验证主要类别 二、部分交叉验证函数&#xff08;每类一个&#xff0…

【C++入门(一)】:详解C++语言的发展及其重要性

&#x1f3a5; 屿小夏 &#xff1a; 个人主页 &#x1f525;个人专栏 &#xff1a; C入门到进阶 &#x1f304; 莫道桑榆晚&#xff0c;为霞尚满天&#xff01; 文章目录 &#x1f324;️什么是C&#x1f324;️C的发展史&#x1f324;️C的重要性☁️语言的广泛度☁️C的领域⭐…

绝地求生:大逃杀,鼠标灵敏度设置教程及枪法练习技巧 鼠标灵敏度怎么设置

《绝地求生大逃杀》鼠标灵敏度怎么设置&#xff1f;作为一款FPS游戏&#xff0c;如何调整鼠标参数是大家急需掌握的&#xff0c;今天闲游盒带来“院长尼克”分享的《绝地求生大逃杀》鼠标灵敏度设置教程及枪法练习技巧&#xff0c;废话不多说&#xff0c;下面我们一起来看吧。 …

C语言——小细节和小知识7

一、逆序字符串 1、递归1 #include <stdio.h> #include <string.h>void ReverseArray(char *str) {char temp *str;//1int len (int)strlen(str);*str *(str len - 1);//2*(str len - 1) \0;//3if(strlen(str 1) > 2)//只要字符串还大于2&#xff0c;就…

【nodejs】Express概念与使用介绍

Express Express是基于Node.js平台&#xff0c;从内置模块http封装出来的第三方模块&#xff0c;可以更方便的开发Web服务器。 中文官网&#xff1a; http://www.expressjs.com.cn/ 一、基本使用 // 导入express const express require(express) // 创建web服务器 const a…

SpringBoot 2 集成Spark 3

前提条件: 运行环境&#xff1a;Hadoop 3.* Spark 3.* ,如果还未安装相关环境&#xff0c;请参考&#xff1a; Spark 初始 CentOS 7 安装Hadoop 3 单机版 SpringBoot 2 集成Spark 3 pom.xml <?xml version"1.0" encoding"UTF-8"?> <pro…

【数据结构和算法】---二叉树(2)--堆的实现和应用

目录 一、堆的概念及结构二、堆结构的实现2.1堆向下调整算法2.2堆向上调整算法2.3删除堆顶元素2.4插入元素2.5其他函数接口 三、堆结构的应用3.1堆排序3.2Top-k问题 四、堆概念及结构相关题目 一、堆的概念及结构 如果有一个数字集合&#xff0c;并把它的所有元素按完全二叉树…

MS6459字符叠加可兼容MAX7456

MS6459 是 OSD 电路,与 MCU 配合使用,可控制不同类型的显示系统。显示点阵为 1218&#xff0c;内置部分数字、英文字符、拉丁字符和中文字符。电路集成有上电复位电路和 VRAM 清零电路用于减轻 MCU 的工作量。 主要特点 输入信号&#xff1a;混合视频信号&#xff1b; 显示字符…

ksuser.dll文件缺失怎么办?软件或游戏无法启动,一键自动修复

很多小伙伴反馈&#xff0c;自己的电脑中了病毒&#xff0c;被杀毒软件清理后&#xff0c;在打开游戏或软件的时候&#xff0c;经常会报错“提示无法找到ksuser.dll文件&#xff0c;建议重新安装软件或游戏”。自己根据提示重装后&#xff0c;还是报错&#xff0c;不知道应该怎…

C++ Qt开发:SqlRelationalTable关联表组件

Qt 是一个跨平台C图形界面开发库&#xff0c;利用Qt可以快速开发跨平台窗体应用程序&#xff0c;在Qt中我们可以通过拖拽的方式将不同组件放到指定的位置&#xff0c;实现图形化开发极大的方便了开发效率&#xff0c;本章将重点介绍SqlRelationalTable关联表组件的常用方法及灵…