当前位置: 首页 > news >正文

TCP/IP协议攻击与防范

 一、TCP/IP协议攻击介绍

1.1 Internet的结构

LAN:局域网  WAN:广域网   WLAN:无线局域网

私有IP地址与公有IP地址? 

私有地址:A类:10.0.0.0~10.255.255.255
B类:172.16.0.0~172.31.255.255
C类:192.168.0.0~192.168.255.255

NAT技术:网络地址转换,将私有地址转换成公网地址。

1.2 TCP/IP协议栈

ISO:国际标准化组织

物理层:定义了线缆、接口和电压的标准-----数据以比特流进行传输

数据链路层:数据以数据帧的方式进行传输,是以MAC地址进行寻址,设备:交换机

网络层:数据以IP包的方式进行传输,是以IP地址进行寻址,设备:路由器 协议:IP/ICMP/ARP

传输层:以端口来确定数据的收发,协议:TCP/UDP

会话层:建立会话

表示层:对数据进行压缩、加密码、解密等

应用层:就是指各种应用程序(软件)

实际使用的是:TCP/IP模型(五层、四层)

1.3 TCP/IP协议栈典型封包过程

1.4 IP网络互连的原理


1.5 TCP/IP网络协议栈-安全缺陷与攻击技术

1.6 基于TCP/IP协议簇的安全架构

二、MAC泛洪攻击的实施与防御

MAC泛洪攻击是一种针对局域网交换机的攻击方式,目的在于窃取局域网内用户的通信数据。

2.1 MAC泛洪攻击原理

MAC泛洪攻击主要是利用局域网交换机的mac学习和老化机制。

交换机的工作流程如下

局域网中的pc1发送数据帧给pc2,经过交换机时,交换机会在内部mac地址表中查找数据帧中的目标mac地址,如果找到就将该数据帧发送到相应的端口,如果找不到,交换机就会向入端口以外的所有端口发送此数据帧【就是所谓的广播,也叫泛洪】。

mac表的结构

内部mac表一般8k左右,如果mac表满了,其他mac地址就加不进来。

交换机的mac学习过程

        一开始没有主机连接,交换机内的mac表是空白的,此时就要进行学习。

        当PC1往PC2发送数据经过交换机时,交换机会把数据帧中的源mac地址和进入的端口号记录到mac表中;由于一开始mac表中没有PC2的mac地址和端口绑定,所以交换机会将这个数据帧进行广播【泛洪】。

        本网段中的每台主机会比对数据帧的目的mac地址是否和自身一样,如果一样就应答,如果不一样,就丢弃。

        当PC2接收到数据帧会应答。

        应答数据帧经过交换机时,交换机会将应答数据帧的源mac地址和端口号学习到mac表中,也就是PC2的mac地址和端口号绑定。

        交换机根据应答数据帧的目的mac地址,开始查询mac表,发现PC1的记录存在,就根据这绑定的端口号,直接将应答数据帧发给了PC1。

交换机的mac老化机制

  1.         若交换机与某台主机长时间(一般为300秒)未通信,交换机就会把该主机的mac地址从mac地址表里删除掉,等下次通信时重新学习地址。

泛洪攻击的可能性

        正常的通信是除非一开始mac表中没有目标主机的mac和端口,这样才进行数据广播,只要mac表中有相应的绑定关系,之后两台主机间的通信,都是由交换机直接根据mac和端口绑定进行转发,其他的主机是获取不到这两台主机之间的数据的。

        泛洪攻击的目标就是想获取主机之间的通信数据。要想达到这个目的,就需要强迫交换机进行数据广播,那就要实现mac表中没有目标主机 的mac和端口绑定。泛洪攻击的实现方法就是通过伪造大量的未知mac地址进行通信,交换机进行不断的学习,很快mac表就会被充满,这样正常的主机的mac地址在经过老化之后,就无法再添加到mac地址表中,导致之后的数据都变成了广播。

2.2 MAC泛洪攻击实验

2.2.1 实验拓朴图

2.2.2 实验步骤

准备工作:在kali中安装Dsniff套件

Dsniff是一个基于unix系统网络嗅探工具;Dsniff是一个工具集,主要分为四类:

  1. 被动网络活动监视工具,包括:dsniff、filesnarf、mailsnarf 、msgsnarf、urlsnarf、webspy;
  2. 针对SSH和SSL的MITM(Man-In-The-Middle)"攻击"工具,包括sshmitm和webmitm;
  3. 发起主动欺骗的工具,包括:arpspoof、dnsspoof、macof;
  4. 其它工具,包括tcpkill、tcpnice。

# sudo apt-get install dsniff     //安装dsniff工具

# macof -h                  //查看是否安装成功

# arpspoof -h                //查看是否安装成功

在kali中打开终端执行命令:macof

在kali中再打开一个终端执行命令:wireshark

在Windows XP系统中登录FTP服务器:

在kali上查看并分析抓到的数据包:

2.3 MAC泛洪攻击防范措施

        通过Port-Security(端口安全性)技术可以有效防范MAC泛洪攻击。

        Port-Security可以限制交换机端口上所允许的有效MAC地址的数量,这样交换机就不会无限制的从端口获取MAC条目。

        Port-Security还可以绑定MAC地址,如果该端口连接的MAC地址与绑定的MAC地址不一致就认为发生安全违规。

当发生安全违规,交换机将自动采取相应的动作

        关闭(shutdown):当发生安全违规时端口将关闭。

        保护(protect):当发生安全违规时,带有未知源地址的数据帧将被丢弃。

        限制(restrict):当发后安全违规时,除了将数据帧丢弃之外,还会发出SNMP消息,并记录日志等。

三、ARP欺骗攻击与防护

3.1 ARP协议原理

ARP:地址解析协议,用来实现IP地址到物理地址的映射。

每一台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表。

查询目的主机MAC地址的步骤:

1.ARP进程在本局域网上广播发送一个ARP请求分组

2.在本局域网上的所有主机运行的ARP进程都收到该ARP请求分组

3.主机B的IP地址与ARP请求分组中要查询的IP地址一致,就收下ARP请求分组,并单播向主机A发送ARP响应分组。

4.主机A收到主机B的ARP相应分组以后,就在其ARP高速缓存中写入主机B的IP地址到硬件地址的映射。

5.在Windows系统中可以通过arp -a查看arp缓存表信息。


3.2 ARP攻击原理

3.2.1 ARP断网攻击原理

ARP攻击就是通过伪造IP地址和MAC地址的对应关系,使得网络无法正常通信。

3.2.2 ARP欺骗原理

伪装成网关

欺骗源把自己(或其他非网关主机)伪装成网关,向局域网内的目标主机发送ARP应答报文,使得局域网内的主机误以为欺骗源的MAC地址是网关MAC的地址,并将原本应该流向网关的数据都发送到欺骗源。

伪装成主机

欺骗源2把自己伪装成局域网内的另一台主机3将主机3的IP地址对应的MAC地址替换为欺骗源C的IP地址对应的MAC地址,使得局域网内的主机1发往主机3的报文都流向主机2,如下图所示:

3.3 ARP攻击实验

3.3.1实验拓朴

3.3.2 实验步骤

场景一:(让宿舍室友断网)ARP网关欺骗:

在客户机上测试是否能上网,并查看Arp缓存表

在Kali上进行ARP攻击:

$ nbtscan 192.168.149.0/24    //扫描存活主机

$ route -n     //查看网关地址

#arpspoof -i eth0 -t 192.168.149.151 192.168.149.2    //伪装网关实现断网攻击

说明:arpspoof -i 网卡 -t 目标IP 网关

在客户机测试是否能上网,并查看ARP缓存表:

场景二(监控室友网络)

为使受害者主机的数据包能够顺利收发,我们需在Kali Linux中开启IP转发功能

# echo 1 > /proc/sys/net/ipv4/ip_forward

并在kali中打开wireshark工具对数据流量进行监控

# wireshark

在客户机中打开网页上网

在kali机中对流量进行分析

场景三:伪装成服务器,窃取用户的用户名和密码

# arpspoof -i eth0 -t 192.168.149.151 192.168.149.155

在客户端登录FTP服务器

在Kali机查看用户登录FTP服务器的用户名和密码

3.4 ARP攻击的防范措施

使用静态ARP表

将MAC地址和IP地址绑定在一起,避免动态ARP请求引发的攻击,如:网关/关键服务器。

命令格式:arp -s IP地址 MAC地址 类型

如:>arp -s 192.168.149.2  00-50-56-e9-07-70

-s—将相应的IP地址与物理地址的捆绑。

-d—删除所给出的IP地址与物理地址的捆绑。

-a—通过查询Arp协议表来显示lP地址和对应物理地址情况。

启用ARP欺检测

一些网络设备可以检测到ARP欺诈攻击,及时发现异常的ARP请求,并对网络流量进行限制,从而防止ARP攻击。

使用VPN

通过VPN建立虚拟专用网络,可以避免ARP攻击带来的风险。

加强网络安全管理

网络管理员可以对网络流量进行监控,及时发现异常的ARP请求,并及时采取措施,限制恶意流量的传输,从而保护网络安全。

使用网络安全设备

例如防火墙、入侵检测系统等设备可以帮助管理员检测和防范网络攻击,包括ARP攻击。

四、ICMP路由重定向攻击

4.1 ICMP介绍

ICMP(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议簇的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。

测试网络是否通信:ping

路由跟踪:tracert

4.2 ICMP重定向

ICMP重定向报文是ICMP控制报文中的一种。是用来提示主机改变自己的主机路由从而使路由路径最优化的一种ICMP报文。其概念理解的要义是原主机路由不是最佳路由,而其默认网关提醒主机优化自身的主机路由而发送的报文。

4.3 ICMP攻击原理

ICMP重定向信息是路由器向主机提供实时的路由信息,当一个主机收到ICMP重定向信息时,它就会根据这个信息来更新自己的路由表。由于缺乏必要的合法性检查,如果一个黑客想要被攻击的主机修改它的路由表,黑客就会发送 ICMP重定向信息给被攻击的主机,让该主机按照黑客的要求来修改路由表。

4.4 ICMP重定向攻击实例

4.4.1 实验拓朴:

4.4.2实验步骤:

在被攻击机上查看被攻击前的路由表:

C:\Documents and Settings\Administrator>route print

在kali机上开启路由转发

#echo 1 > /proc/sys/net/ipv4/ip_forward

在kali机中安装netwox工具

# apt-get install netwox

在kali机中使用netwox工具实现icmp重定向攻击

netwox 86 -f “host {被攻击主机ip地址}” -g “{新指定的网关ip地址}” -i “{当前网关ip地址}”

# netwox 86 -f "host 192.168.149.151" -g "192.168.149.156" -i "192.168.149.2"

在kali中另开一个终端并打开wireshark进行抓包可以看到被攻击的访问流量,如下图所示:

在被攻击机查看路由表,可以看到所有访问流量都是经过kali机进行访问的,如下图:

netwox工具使用参考:https://blog.51cto.com/u_13389043/6217697
ICMP协议介绍:https://zhuanlan.zhihu.com/p/369623317

4.5 ICMP重定向攻击防范措施

在网络边界合理配置防火墙安全策略以预防攻击,一般除了出站的ICMP Echo Request、出站的ICMP SourceQuench、进站的TTL Exceeded和进站的ICMP DestinationUnrcachablc 之外,其它ICMP 消息类型都应该被阻止。

通过端口镜像技术在内网部署sniffer,全面监控网络流量,当发生攻击时,及时分析数据包,定位攻击源。

及时升级系统软件,配置系统自带的默认防火墙以预防攻击,并通过对注册表的修改禁止 ICMP重定向报文、禁止响应ICMP路由通告报文。

五、DNS欺骗攻击

5.1 DNS工作原理

5.1.1 DNS概述

DNS就是域名系统,是因特网中的一项核心的服务,是用于实现域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用记住能够被机器直接读取的IP数串。通过主机名,得到该主机名对应的IP地址的过程就是域名解析(或者叫主机名解析)。

作用:将域名解析成IP地址  正向查询

      将IP地址解析成域名  反向查询

5.1.2 DNS域名结构

为了处理扩展性问题,DNS使用了大量的DNS服务器。大致来说,有3种类型的服务器:根DNS服务器、顶级域(Top-Level Domain.TLD)DNS服务器和权威DNS服务器

根DNS服务器

因特网上有13个根DNS服务器,这13个服务器实际上是一个冗余的计算机网络以提 供安全性和可靠性;它主要提供TLD服务器的IP地址

顶级域DNS服务器

负责顶级域名,如com,org,net,edu,gov以及各个国家的顶级域名,主要提供权 威DNS服务器的IP地址

权威DNS服务器

互联网上的每一个能够公共访问的主机都具有一个DNS记录,这些记录由某些组织机 构的权威服务器保存。例如常见的服务提供商以及学校和公司都会实现和维护自己的 权威服务器来保存一些主机DNS记录。

本地DNS服务器

该DNS服务器不属于上述的层次结构。但它发挥着极其重要的作用

各种DNS服务器交互的过程如图所示:

上述例子中利用了递归查询迭代查询

5.2 常见的DNS攻击及原理

5.2.1 域名劫持

通过采用黑客手段控制了域名管理密码和域名管理邮箱然后将该域名的DNS录指向到黑客可以控制的DNS服务器,然后通过在该DNS服务器上添加相应域名纪录,从而使网民访问该域名时,进入了黑客所指向的内容。

这显然是DNS服务提供商的责任,用户束手无策。

5.2.2 缓存投毒

利用控制DNS缓存服务器,把原本准备访问某网站的用户在不知不觉中带到黑客指向的其他网站上。其实现方式有多种,比如可以通过利用网民ISP端的DNS缓存服务器的漏洞进行攻击或控制,从而改变该ISP内的用户访问域名的响应结果;或黑客通过利用用户权威域名服务器上的漏洞,如当用户权威域名服务器同时可以被当作缓存服务器使用,黑客可以实现缓存投毒,将错误的域名录存入缓存中,从而使所有使用该缓存服务器的用户得到错误的DNS解析结果。

5.2.3 ddos攻击

一种攻击针对DNS服务器软件本身,通常利用BIND软件程序中的漏洞,导致DNS服务器崩溃或拒绝服务;另一种攻击的目标不是DNS服务器,而是利用DNS服务器作为中间的“攻击放大器”,去攻击其它互联网上的主机,导致被攻击主机拒绝服务。

5.2.4 DNS欺骗

DNS欺骗就是攻击者冒充域名服务器的一种欺骗行为。

如果可以冒充域名服务器,然后把查询的IP地址设为攻击者的IP地址,这样的话,用户上网就只能看到攻击者的主页,而不是用户想要取得的网站的主页了,这就是DNS欺骗的基本原理。DNS欺骗其实并不是真的“黑掉”了对方的网站,而是冒名顶替、招摇撞骗罢了。

5.3 DNS欺骗攻击实验

5.3.1实验拓朴

5.3.2实验步骤

准备工作

启动Apache服务,并测试是否访问成功

# systemctl start apache2

开启端口转发(在root权限下才能修改成功,将ip_forward 修改为 1

注:ip_forward为0时为断网攻击,目标主机会因此无法上网

#echo 1 >  /proc/sys/net/ipv4/ip_forward

修改etter.dns,将目标改为本机ip(同样需要root权限)

# vim /etc/ettercap/etter.dns

利用Ettercap进行DNS欺骗攻击

在客户端测试是否攻击成功

此时客户端无论访问什么网站,访问的目标网站都是kali服务器的网站。

5.4 DNS欺骗攻击防范措施

  1. 从社会工程学角度出发,不轻易相信他人,坚信天上不可能掉馅饼。
  2. 保护自己的网络设备,如果自己的网络设备很安全,那么就很难被木马所感染。
  3. 鉴于DNS欺骗攻击原理,即改变DNS服务器当中的IP地址来实现欺骗攻击,我们可以尝试绑定DNS服务器中的IP地址以及网卡的MAC地址,然后通过得到的DNS服务器应答数据来判断是否为真。

六、TCP协议攻击

6.1 TCP协议介绍

传输控制协议(TCP)是Internet一个重要的传输层协议。TCP提供面向连接、可靠、有序、字节流传输服务。应用程序在使用TCP之前,必须先建立TCP连接;TCP通过校验和、序列号、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输。

参考文档:https://baijiahao.baidu.com/s?id=1686533861418970902&wfr=spider&for=pc

6.1.1 TCP三次握手

6.1.2 TCP四次挥手

在系统中查看连接状态:netstat -an

6.2 TCP攻击及原理

TCP攻击是指利用TCP协议中的漏洞或者缺陷对网络进行攻击的行为。这种攻击方式可以导致网络中的设备不可用,从而影响正常的网络通信。TCP攻击包括SYN Flood攻击、TCP Reset攻击、TCP Session Hijacking攻击等等。这些攻击方式常常被黑客用来发起分布式拒绝服务(DDoS)攻击。

6.2.1 SYN Flood攻击

它利用TCP协议中三次握手的过程,向目标服务器发送大量的TCP连接请求。由于这些请求都是虚假的,服务器在回应这些请求时,需要耗费大量的CPU和内存资源,从而导致服务器无法响应正常的网络请求。

6.2.2 TCP Reset攻击

是利用TCP协议中的RST(reset)标志位,向服务器发送虚假的TCP连接请求。当服务器收到这些虚假的请求时,会断开与客户端的连接。这种攻击方式可以导致服务器中断正常的网络通信。

6.2.3 TCP Session Hijacking

是利用TCP协议中的漏洞,获取正在通信的两个主机之间的会话ID,然后通过伪造的TCP数据包向服务器发送虚假的请求。当服务器收到这些虚假的请求时,会认为它们来自于已经认证的主机,从而给予响应。这种攻击方式可以让攻击者获取敏感信息,例如登录凭证等等。

6.3 TCP攻击实验

6.3.1 实验拓朴

6.3.2 TCP RST攻击

首先在客户端计算机登录到FTP服务器

在kali机上输入以下命令:

# netwox 78 -i "192.168.149.151"

到客户端查看,FTP连接已经断开

6.3.3 TCP会话劫持

hunt实现TCP会话劫持

在kali中使用命令:#ettercap -G

在客户端使用telnet命令登录到Linux服务器

在kali服务器查看会话连接并劫持传话

6.3.4 TCP SYN攻击

在kali机中执行以下命令

# netwox 76 -i "192.168.149.155" -p "21"

此时到服务器上查看CPU使用率,发现CPU占用很高,且服务器已被卡死。

#top   在Linux系统中查看CPU,内存及进程的命令。

在客户端登录服务器的FTP服务,发现已经登录不上了

6.4 TCP攻击防范措施

加强网络安全措施

例如在网络边界处安装防火墙,限制网络流量,限制访问等等,以保护网络的安全;

安装防御系统

例如入侵检测系统(IDS)和入侵防御系统(IPS),可以对网络流量进行实时监测,并 对异常流量进行拦截和处理;

更新网络设备

网络管理员应该定期更新网络设备上的操作系统和应用程序,以确保它们能够及时地修 复已知的漏洞和缺陷;

应用过滤规则

可以通过过滤规则,限制来自特定IP地址和端口的TCP连接请求,从而减少网络中的 异常流量

七、UDP flood攻击

7.1 UDP协议介绍

用户数据报协议(UDP,User Datagram Protocol),无状态不可靠,仅仅是传输数据报。

7.2 UDP Flood

带宽耗尽型拒绝服务攻击;

分布式拒绝服务攻击(DDoS);

利用僵尸网络控制大量受控傀儡主机;

通常会结合IP源地址欺骗技术。

7.3 UDP Flood攻击原理

UDP Flood是日渐猖厥的流量型DoS攻击,原理也很简单。常见的情况是利用大量UDP小包冲击DNS服务器或Radius认证服务器、流媒体视频服务器。 100k pps的UDP Flood经常将线路上的骨干设备例如防火墙打瘫,造成整个网段的瘫痪。由于UDP协议是一种无连接的服务,在UDP FLOOD攻击中,攻击者可发送大量伪造源IP地址的小UDP包。但是,由于UDP协议是无连接性的,所以只要开了一个UDP的端口提供相关服务的话,那么就可针对相关的服务进行攻击。

正常应用情况下,UDP包双向流量会基本相等,而且大小和内容都是随机的,变化很大。出现UDP Flood的情况下,针对同一目标IP的UDP包在一侧大量出现,并且内容和大小都比较固定。

7.4 UDP Flood攻击实验

7.4.1实验环境

kali机:192.168.149.156

Windows Server 2003:192.168.149.172

Windows XP:192.168.149.151   DNS:192.168.149.172

7.4.2实验步骤

安装DNS服务器

在Windows Server 2003上安装DNS服务,并建立cdjc.com的正向区域和www.cdjc.com的主机记录。

在Windows XP客户端计算机上配置DNS地址指向192.168.149.172

在Windows XP客户端上测试DNS解析,如下图所示:

在kali机上输入以下命令进行UDP Flood攻击:

# hping3 --udp --rand-source -p 53 -d 100 --flood 192.168.149.172

在kali机上使用wireshark抓包,结果如下图所示:

在Windows Server2003服务器上查看CPU使用情况,如下图所示:

在Windows XP客户端上再次进行DNS解析发现已经不能解析域名了

7.4.3 UDP Flood攻击防范措施

禁用或过滤监控和响应服务

禁用或过滤其它的 UDP 服务

网络关键位置使用防火墙和代理机制来过滤掉一些非预期的网络流量

遭遇带宽耗尽型拒绝服务攻击

终端无能为力

补救措施:网络扩容、转移服务器位置

事件响应:汇报给安全应急响应部门、追溯和处置

流量清洗解决方案:ISP为关键客户/服务所提供

八、TCP/IP协议之网络协议攻击防范措施

8.1 监测、预防与安全加固

网络接口层 – 主要安全威胁是网络嗅探

局域网中的监听点检测

网络设计上尽量细分和优化网络结构

关键路径上的网关、路由器等设备的严格安全防护

各类网络采用上层的加密通信协议

互联层

多种检测和过滤技术来发现和阻断网络中欺骗攻击

增强防火墙、路由器和网关设备的安全策略(egress filtering)

关键服务器使用静态绑定IP-MAC映射表、使用IPsec协议加密通讯等预防机制

传输层

加密传输和安全控制机制(身份认证,访问控制)

应用层

加密,用户级身份认证,数字签名技术,授权和访问控制技术以及主机安全技术如审计、入侵检测。

8.2 网络安全协议

8.3 下一代因特网协议

下一代因特网协议

IPv6为代表

ICMPv6、DHCPv6……

没有了ARP

IPv6优势

IPv6具有更大的地址空间:主动扫描和主动传播受到抑制

IPv6使用更小的路由表

IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control) – 提升QoS

IPv6加入了对自动配置(Auto Configuration)的支持

IPv6具有更高的安全性:网络层的数据进行加密....

相关文章:

TCP/IP协议攻击与防范

一、TCP/IP协议攻击介绍 1.1 Internet的结构​ LAN:局域网 WAN:广域网 WLAN:无线局域网 私有IP地址与公有IP地址? 私有地址:A类:10.0.0.0~10.255.255.255 B类:172.16.0.0~172.31.255.255…...

Java基于 SpringBoot+Vue的口腔管理平台(附源码+lw+部署)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...

11.26深度学习_神经网络-数据处理

一、深度学习概述 1. 什么是深度学习 ​ 人工智能、机器学习和深度学习之间的关系: ​ 机器学习是实现人工智能的一种途径,深度学习是机器学习的子集,区别如下: ​ 传统机器学习算法依赖人工设计特征、提取特征,而深…...

【人工智能】Python常用库-TensorFlow常用方法教程

TensorFlow 是一个广泛应用的开源深度学习框架,支持多种机器学习任务,如深度学习、神经网络、强化学习等。以下是 TensorFlow 的详细教程,涵盖基础使用方法和示例代码。 1. 安装与导入 安装 TensorFlow: pip install tensorflow…...

微信小程序按字母顺序渲染城市 功能实现详细讲解

在微信小程序功能搭建中,按字母渲染城市会用到多个ES6的方法,如reduce,map,Object.entries(),Object.keys() ,需要组合熟练掌握,才能优雅的处理数据完成渲染。 目录 一、数据分析 二、数据处理 …...

23省赛区块链应用与维护(房屋租凭【下】)

23省赛区块链应用与维护(房屋租凭) 背景描述 随着异地务工人员的增多,房屋租赁成为一个广阔市场。目前,现有技术中的房屋租赁是由房主发布租赁信息,租赁信息发布在房屋中介或租赁软件,租客获取租赁信息后,现场看房,并签订纸质的房屋租赁合同,房屋租赁费用通过中介或…...

数据结构-图-领接表存储

一、了解图的领接表存储 1、定义与结构 定义:邻接表是图的一种链式存储结构,它通过链表将每个顶点与其相邻的顶点连接起来。 结构: 顶点表:通常使用一个数组来存储图的顶点信息,数组的每个元素对应一个顶点&#xff…...

快速入门web安全

一.确定初衷 1.我真的喜欢搞安全吗? 2.我只是想通过安全赚钱钱吗? 3.我不知道做什么就是随便。 4.一辈子做信息安全吗 这些不想清楚会对你以后的发展很不利,与其盲目的学习web安全,不如先做一个长远的计划。 否则在我看来都是浪费时间。如果你考虑好了…...

rabbitMq两种消费应答失败处理方式

在rabbitMq消费端,有三种应答模式: none:不处理。即消息投递给消费者后立刻 ack 消息会立刻从MQ删除。非常不安全,不建议使用 manual:手动模式。需要自己在业务代码中调用api,发送 ack 或 reject&#xff…...

Qt C++(一) 5.12安装+运行第一个项目

安装 1. Download Qt OSS: Get Qt Online Installer 在该链接中下载qt在线安装程序 2. 安装时候,注意关键一步,archive是存档的意思,可以找到旧的版本, 比如5.12 3. 注意组件没必要全选,否则需要安装50个g, 经过请教…...

【RISC-V CPU Debug 专栏 1 -- RISC-V debug 规范】

文章目录 RISC-V Debug调试用例支持的功能限制和不包括的内容RISC-V 调试架构的主要组件用户与调试主机调试翻译器调试传输硬件调试传输模块(DTM)调试模块(DM)调试功能触发模块版本介绍RISC-V Debug RISC-V 调试规范为 RISC-V 处理器提供了一套标准化的调试接口和功能,旨…...

使用Gradle编译前端的项目

使用Gradle编译前端的项目 前言项目结构根项目(parent-project)的 settings.gradle.kts后端项目(backend)的 build.gradle.kts前端项目(frontend)的 build.gradle.kts打包bootJar 前言 最近的项目都是使用…...

网络爬虫——常见问题与调试技巧

在开发网络爬虫的过程中,开发者常常会遇到各种问题,例如网页加载失败、数据提取错误、反爬机制限制等。以下内容将结合实际经验和技术方案,详细介绍解决常见错误的方法,以及如何高效调试和优化爬虫代码。 1. 爬虫过程中常见的错误…...

【AI绘画】Midjourney进阶:色调详解(下)

博客主页: [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AI绘画 | Midjourney 文章目录 💯前言💯Midjourney中的色彩控制为什么要控制色彩?为什么要在Midjourney中控制色彩? 💯色调纯色调灰色调暗色调 &#x1f4af…...

springboot+redis+lua实现分布式锁

1 分布式锁 Java锁能保证一个JVM进程里多个线程交替使用资源。而分布式锁保证多个JVM进程有序交替使用资源,保证数据的完整性和一致性。 分布式锁要求 互斥。一个资源在某个时刻只能被一个线程访问。避免死锁。避免某个线程异常情况不释放资源,造成死锁…...

【Petri网导论学习笔记】Petri网导论入门学习(十一) —— 3.3 变迁发生序列与Petri网语言

目录 3.3 变迁发生序列与Petri网语言定义 3.4定义 3.5定义 3.6定理 3.5例 3.9定义 3.7例 3.10定理 3.6定理 3.7 有界Petri网泵引理推论 3.5定义 3.9定理 3.8定义 3.10定义 3.11定义 3.12定理 3.93.3 变迁发生序列与Petri网语言 对于 Petri 网进行分析的另一种方法是考察网系统…...

docker-compose文件的简介及使用

Docker Compose是Docker官方的开源项目,主要用于定义和运行多容器Docker应用。以下是对Docker Compose的详细介绍: 一、主要功能: 容器编排:Docker Compose允许用户通过一个单独的docker-compose.yml模板文件(YAML格…...

[护网杯 2018]easy_tornado

这里有一个hint点进去看看,他说md5(cookie_secretmd5(filename)),所以我们需要获得cookie_secret的value 根据题目tornado,它可能是tornado的SSTI 这里吧filehash改为NULL. 是tornado的SSTI 输入{{handler.settings}} (settings 属性是一个字典&am…...

基于STM32的智能风扇控制系统

基于STM32的智能风扇控制系统 持续更新,欢迎关注!!! ** 基于STM32的智能风扇控制系统 ** 近几年,我国电风扇市场发展迅速,产品产出持续扩张,国家产业政策鼓励电风扇产业向高技术产品方向发展,国内企业新增投资项目投…...

决策树——基于乳腺癌数据集与cpu数据集实现

决策树——乳腺癌数据实现 4.1 训练决策树模型,并计算测试集的准确率 1. 读入数据 from sklearn import datasets from sklearn.tree import DecisionTreeClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import confusion_matrix …...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

云计算——弹性云计算器(ECS)

弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...

HTML 列表、表格、表单

1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...

镜像里切换为普通用户

如果你登录远程虚拟机默认就是 root 用户,但你不希望用 root 权限运行 ns-3(这是对的,ns3 工具会拒绝 root),你可以按以下方法创建一个 非 root 用户账号 并切换到它运行 ns-3。 一次性解决方案:创建非 roo…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个生活电费的缴纳和查询小程序

一、项目初始化与配置 1. 创建项目 ohpm init harmony/utility-payment-app 2. 配置权限 // module.json5 {"requestPermissions": [{"name": "ohos.permission.INTERNET"},{"name": "ohos.permission.GET_NETWORK_INFO"…...

大语言模型(LLM)中的KV缓存压缩与动态稀疏注意力机制设计

随着大语言模型(LLM)参数规模的增长,推理阶段的内存占用和计算复杂度成为核心挑战。传统注意力机制的计算复杂度随序列长度呈二次方增长,而KV缓存的内存消耗可能高达数十GB(例如Llama2-7B处理100K token时需50GB内存&a…...

10-Oracle 23 ai Vector Search 概述和参数

一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...

【JVM面试篇】高频八股汇总——类加载和类加载器

目录 1. 讲一下类加载过程? 2. Java创建对象的过程? 3. 对象的生命周期? 4. 类加载器有哪些? 5. 双亲委派模型的作用(好处)? 6. 讲一下类的加载和双亲委派原则? 7. 双亲委派模…...

Selenium常用函数介绍

目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...