从路由器真机提取固件包(一)

前言

IOT也有一段时间了,但是一直都是从官网获取固件包,没有尝试过从真机里提取固件。在看了一些师傅的文章后决定尝试一下从真机中提取固件。正好手里也有几个路由器,于是用刚到手的奖学金去买了提取固件所需要的工具用来学习一下如何通过串口调试获取固件。

所用到的工具及设备

  • FT232
  • 电烙铁
  • 杜邦线
  • 万用表
  • xxx 路由器
  • SecureCRT

前置知识

串口介绍

串口是一个泛称,UART、COM、TTL、RS232、RS485都遵循类似的通信时序协议,因此都被通称为串口。
而在嵌入式开发中所听到的串口一般指的是UARTUART使用的是异步串行通信,以字符为传输单位,一位一位的顺序输送;通信中两个字符间的时间间隔是不固定的 ,然而同一个字符内两个相邻位之间的时间间隔是固定的。数据的传送速率用波特率来表示,即每秒钟传送的二进制位数。一般选波特率都会有9600,19200,115200等,最常用的是115200。
UART有四个pin,分别是VCC,GND,RX,TX,用的是TTL电平,低电平为0V,高电平为3.3V-5V

UART 引脚介绍
  • VCC:供电pin,一般是3.3v,在我们的板子上没有过电保护,这个pin一般不接更安全(在路由器通电的时候可以不连VCC)。
  • GND:接地pin,有的时候RX接受数据有问题,就要接上这个pin,一般也可不接。
  • RX:接收数据pin。
  • TX:发送数据pin。

UART 通信

UART最好的一点是它只使用两根线就可以在设备之间传输数据。在UART通信中,两个UART直接相互通信。发送UART将来自CPU等控制设备的并行数据转换为串行形式,并将其串行发送到接收UART,接收UART然后将串行数据转换回接收设备的并行数据。在两个UART之间传输数据只需要两根线。数据从发送UARTTX引脚流向接收UARTRX引脚,也就是接受和发送数据的UARTRX和TX要反过来连接。

寻找 UART 串口,并定位 pin

下图是笔者拆开xxx 路由器得到的板子,可以看到红色方框里有四个孔,这就是UART串口,并且这个板子很人性化已经给我们标好了引脚的名称。

如果没给我们标注好串口的名称,我们也可以通过万用表去定位每一个引脚。

1、定位 GND

将万用表调到蜂鸣档,然后将黑表笔接到背面电源焊锡点,红表笔分别触碰UART四个引脚的焊接点。发出声响的就是GND引脚。

2、定位 VCC

将万用表调到直流20V,然后将黑表笔放到刚刚判断的GND引脚上,再用红表笔触碰其他三个焊接点进行测试。电压稳定在3.3V或5V左右的那个引脚即为VCC引脚。

3、定位 TXD

开机会出现数据传输,如果该引脚出现了电压变化,则该引脚是TXD。黑表笔放到刚刚判断的GND引脚上,重启路由器,用红表笔触碰其他两个引脚,电压发生变化的即为TDX

4、定位 RXD

确定了其他三个引脚之后,剩下的一个即为RDX

实操

焊接并连接 UART 串口

下图可以看到四个孔处已经被读者用电烙铁焊上了几根针,可以便于我们用杜邦线将板子与FT232相连接。

之后,我们用杜邦线把板子和FT232GND相连,把两者的RXDTXD反着连。(也就是板子的RXDFT23的TXD相连,板子的TXDFT23的RXD相连)注意:在板子通电后最好不要将两者的VCC相连,否则可能损坏设备。

提取固件

在连接好FT232与板子上的串口之后,我选择使用SecureCRT连接进shell。在这里我们可以看出想要进入shell,那么我们必须有登录名和密码。所以通过shell提取固件有一定的局限性。要么该设备不需要账号密码就能登陆,要么知道该设备登陆的账号和密码。

登陆上之后用tftf或者nc等方法即可将固件传出来。

本文来自博客园,作者:{狒猩橙},转载请注明原文链接:http://www.cnblogs.com/pwnfeifei/p/16926238.html

本文转载于网络 如有侵权请联系删除

相关文章

  • 网易元宇宙飞机杯火了!多人在线PK,还有AI小姐姐

    【新智元导读】网易元宇宙飞机杯一夜之间爆火,不仅能在线PK,还能和二次元女神互动,让网友大受震撼。网易「元系列」飞机杯最近火了一把.......随时随地VRSEX?最离谱的是,还能与人在线PK,网友直呼真会玩儿!打破次元壁,不愧又春风要说这款智能飞机杯价格也不算便宜,售价999元。而让人大受震撼的是,它还可以绑定APP「元力FUN」。这是为智能飞机杯打造的专属应用,不仅有专属技能、AI小姐姐,还能与他人在线PK时长...另外,它还可以设定沉浸式科幻背景。这简直就是「元宇宙」里的飞机杯啊!当你进入这个APP首页,就来到了公元2510年的赛博世界,每个人都变身成诺亚世代居民。那时的AI高度智慧化,并分裂成保护和对抗人类的两派。人类文明遭受毁灭性的打击,而人类需要做的是战胜敌对角色,为重建地球而努力。APP里的人物风格类似王者荣耀,其中有三个AI「元梦天使」:萝莉风的遥遥、狐妖妲小己、熟女风的钰环。为了让玩家有进一步的沉浸感,玩家在app里战斗时,对应的元梦天使也会做出对应的动作和表情。就是说,她们分别有着独特的天赋技能,未来据说还会开发更多角色和技能。性感尤物谁不爱?在《机械姬》中,男主根

  • 再来谈谈VBA的学习问题

    有朋友在问,从零开始学习VBA应如何着手?一般对于问这个问题的人,我的建议是:慎重考虑是否真有必要学VBA——除非您还是一个年轻且有大量精力和时间的在校学生。 现在,网络上有很多从入门到精通的书,其实大多数是从入门到放弃!很多通过几十天就能精通VBA的说法其实都有一个前提,就是你本身有一定的编程基础,比如你原来学过其他的编程语言,而只是切换到VBA,那实际上你只需要学点儿VBA的语法就能用起来了,因为你已经具备编程的思维和能力。学习编程最难的是对编程思维和能力的磨练——对的,是“磨”!这个过程是十分漫长的,没有快捷一说!比如为了一个小小错误可能要花几个小时甚至几天的时间来找到原因:而且,为什么大多数的程序员都会每天晚上搞到夜里不睡觉,因为程序有bug没调试完睡不着啊!呵呵。电影里的程序员都是这样的——高富帅屌炸天!实际生活中却可能是这样子的(在BAT的技术大牛除外):那么,对于Excel的普通用户,除了学好基本功能、函数等,想进一步提升相应的能力,怎么办呢?——我个人建议可以先考虑学Excel2016新的Power系列功能(如PowerQuery,PowerPivot等。2010或20

  • java操作sql server数据库

    请先确保已经设置好了sa,如果不是,可以参照下面链接修改http://jingyan.baidu.com/article/8cdccae9452b3c315513cd52.html    然后重启数据库,重启完毕后,接下来使用命令测试1433端口是否打开。接着开始菜单 → 运行cmd → 在命令提示符下输入:telnet 127.0.0.1 1433,(注意telnet与127之间有空格,1与1433之间有空格)若提示“不能打开到主机的连接,在端口 1433: 连接失败”,则说明1433端口没有打开,需要重新进行以上配置。如果是显示telnet不是内部命令,则按照图后步骤进行设置,若连接成功,显示如图8所示: 打开控制面板,进入程序,然后点击打开或者关闭windows,往下拉,可以看到telnet客户端,选择即可。然后重复上面第五的步骤。http://jingyan.baidu.com/article/6525d4b1377913ac7d2e94eb.html 配置环境变量classpath,将该sqljdbc4放置在jdk1.7(你们的版本)lib中,http://jingyan.b

  • Referrer Policy那些事

    今天还是像往常一样看自己的博客。突然发现我的网站统计显示某文章访问次数有1W+,心里不由得惊喜一番。结果发现每篇文章都是1W+。访问次数统计用的是不蒜子提供的免费服务(https://busuanzi.ibruce.info/)。难道出问题了?不由得打开f12看了下,发现请求的referrer为https://huai.pub/而不是某文章的具体页面。排查:由于最近切换了CDN,首先我怀疑是CDN问题。不过经过调试并没发现是有什么问题。请求头部中的一个参数引起了我的注意:ReferrerPolicy:strict-origin-when-cross-origin我记得以前没这么长啊。。后来以此为关键字查找到了相关资料。https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Referrer-Policyno-referrer 整个Referer首部会被移除。访问来源信息不随着请求一起发送。 no-referrer-when-downgrade(默认值) 在没有指定任何策略的情况下用户代理的默认行为。在同等安全级别的情况下,引用

  • mybatis-plus逻辑删除

    mybatis-plus:逻辑删除不做真正的删除,在查询时添加一个where条件例如在某宝上有一条不可描述的购买信息不想被看到,你要删除他,但是从平台的角度考虑是不能随便就彻底的删除掉数据的,那么有没有一个两个都可以满足的解决方式呢,答案是有的——逻辑删除,不做真正意义的删除,在数据库中用一个字段做专门的标记,原本查询的sql语句就变成了这样:select*fromtableNamewhere原先的查询条件and用来标记的字段=设定的用于标记删除的值而用户的删除行为也变成了update:updatetablenameset用来标记的字段=设定的用于标记删除的值where用于删除的条件配置在application.yml配置文件中配置mybatis-plus: global-config: db-config: logic-delete-field:flag#全局逻辑删除的实体字段名(since3.3.0,配置后可以忽略不配置步骤2) logic-delete-value:1#逻辑已删除值(默认为1) logic-not-delete-value:0#逻辑未删除值(默认为0)复制修改数据

  • 实现小型打包工具

    如果能挺过去,要更加珍惜活着的时间~hey,各位宝宝,最近的疫情很严重,大家尽量就不要到外面浪了,好好在家做个安静的宝宝吧。不得不出门时也一定要戴口罩哦!照顾好自己,望平安......为了解webpack的原理,我们来试着实现一个小型的打包工具。以下代码实现了两个功能:将ES6转为ES5 支持在js中通过import引用CSS文件 实现因为涉及ES6转ES5所以需要引用babel相关工具yarnaddbabylonbabel-traversebabel-corebabel-preset-env复制使用babel转换代码constfs=require('fs') constpath=require('path') constbabylon=require('babylon') consttraverse=require('babel-traverse').default const{transformFromAst}=require('babel-core') functionreadCo

  • 人工智能的数学基础 | AI基础

    人工智能的基础是数学,这一点已经是确定无疑的共识了。但“数学”二字所包含的内涵与外延太广,到底其中的哪些内容和当前的人工智能技术直接相关呢?今天我们就来看看入门人工智能所需要的数学知识。人工智能必备高等数学知识点清单AI技术岗所要求的高等数学知识,大致可以分为四个方面:微积分、概率统计、线性代数,和最优化理论。每个分领域都至少是一本书(也可以是一摞书)。我们在这里暂且抽取和机器学习、深度学习相关的最基础部分,给大家做一下聚焦:【微积分】基础概念(极限、可微与可导、全导数与偏导数):只要学微积分,就必须要明白的概念,否则后面什么都无法继续学习。函数求导:求导是梯度的基础,而梯度是AI算法的基础,因此求导非常重要!必须要搞清楚概念,并学会常见函数的导函数求法。链式法则:符合函数求导法则,反向传播算法的理论基础。泰勒公式和费马引理:这两者也是梯度下降法的基础组成,重要程度与求导相同。微分方程及其求解:很重要,是部分机器学习模型求解的必备知识。拉格朗日乘子法和对偶学习:理解SVM/SVR的理论基础。SVM/SVR作为机器学习模型的常用“中坚力量”,其重要程度不言而喻。【概率统计】简单统计量(个

  • 牛逼!这个Python库竟然可以偷懒,和import说再见!

    作者:xiaoyu,数据爱好者 Python数据科学出品 还记得入门Python数据分析时经常会import几个库,下面这几个可谓是入门学习时的四大护法,Python数据处理和可视化常会用的工具。不知道大家有没有遇到过这样一个问题,每次重新开启一个建模流程或者分析过程时,会重新敲一遍import或者将之前的import代码copy进去。虽然已经用的滚花烂熟了,但是确耗费不必要的时间。本篇给大家介绍一个可以偷懒的python库:pyforest 一个示例看到了吧,开头什么都没import,依然可以正常使用常用库。安装需要安装Python3.6以上的版本,然后终端运行:pipinstallpyforest复制链接:https://github.com/8080labs/pyforest使用方法非常简单!!!一行代码就可以解决。frompyforestimport*复制如果使用Jupyter或IPython,甚至可以跳过此行,因为pyforest会将其自身添加到自动启动中。而且,完成脚本后,可以通过以下方式导出所有导入语句:active_imports()复制通过这个指令,我们就可以看到脚本

  • 滤波器的分类

    滤波器的分类 滤波器是一种用来减少或者消除干扰的电气部件,其功能是对输入信号进行过滤处理得到所需的信号。滤波器分类:1)按照处理信号的形式可分为模拟滤波器和数字滤波器。图1二阶有源模拟带通滤波器模拟滤波器:由电阻、电容、电感、运放等电气元件组成。模拟滤波器(Analogfilter)分为无源滤波器(Passivefilter)和有源滤波器(Activefilter),其中无源滤波器由R、L、C组成,有源滤波器由集成运放和R、C组成,不需要使用电感。数字滤波器:通过软件或者数字信号处理器件对离散信号进行滤波处理。2)按照通频带分类可分为低通滤波器(LPF)、带通滤波器(BPF)、带阻滤波器(BSF)、高通滤波器(HPF)和全通滤波器(APF)。图2各个滤波器的幅频响应3)按照响应类型分类可分为巴特沃斯响应滤波器、贝塞尔响应滤波器、切贝雪夫响应滤波器...巴特沃斯响应滤波器:巴特沃斯响应能够最大化滤波器的通带平坦度。该响应非常平坦,接近DC信号,然后慢慢衰减至截止频率点为-3dB,最终逼近-20ndB/decade的衰减率,其中n为滤波器的阶数。巴特沃斯滤波器特别适用于低频应用,其对于维护

  • Scala入门与进阶(二)- Scala入门

    1.valvsvarval:值finalval值名称:类型=xxxvar:变量可变var值名称:类型=xxx2.Scala基本数据类型Byte/CharShort/Int/Long/Float/DoubleBoolean类型转换基本操作scala>vard=1.1 d:Double=1.1 scala>vare:Float=1.1 <console>:11:error:typemismatch; found:Double(1.1) required:Float vare:Float=1.1 ^ scala>vare:Float=1.1f e:Float=1.1 scala>valf=10 f:Int=10 scala>valg=10.asInstanceOf[Double] g:Double=10.0 scala>valh=10.isInstanceOf[Int] h:Boolean=true复制3.Lazy在Scala中的使用定义的时候不会执行,只有在第一次使用的时候才会执行耗费计算资源或者网络的时候使用比较多(如IO)scal

  • 第89天:HTML5中 访问历史、全屏和网页存储API

    一、访问历史API通过history对象实现前进、后退和刷新之类的操作history新增的两个方法history.replaceState()和history.pushState()方法属于HTML5浏览器新增的属性,所以IE9以下的是不支持的。1、history.replaceState() ;顾名思义就是替换的意思,所以它的作用就是替换当前地址栏的urlhistory.replaceState(data,"页面的title","需要改变的url") ;接收三个参数2、history.pushState() ;看到push大家首先应该想到的是数组,没错,这个方法就是往浏览器的history里压入一条url,就像数据结构里的栈一样,这个压入的url会在栈的最顶端,当你点击浏览器的前进或者倒退按钮时,便会拿出栈顶的url来定位,从而达到改变history的作用但是并不刷新!3、popstate事件当history实体被改变时,popstate事件将会发生。如果history实体是有pushState和replaceState方法产生的,popsta

  • 响铃:陆奇可能要配合完成一场秀

    文|曾响铃 来源|科技向令说(xiangling0815)6月30日,拼多多向美国证券交易委员会(SEC)正式提交了招股书,招股书中声称陆奇将担任拼多多的独立董事和薪酬委员会主席。这是陆奇从百度离职后公开的最新去向消息,因此,这两天舆论铺天盖地的以为陆奇即将加盟拼多多。响铃认为,这或许只是一场营销事件,而陆奇可能要配合完成这场秀。一拼多多和陆奇走到一起,这是要做什么拼多多要上市,其实筹码并不多,尤其是在全民消费升级的时代,拼多多主打的还是消费降级模式,属于逆势而动杀出的黑马。能折腾多久,前景并不明朗。而从业绩上看,自2015年出道以来,拼多多一直都在亏损,直到2018年第一季度净亏损仍高达2.01亿元。若论优势,拼多多最大的筹码是依托于腾讯的社交电商,需要进行智能社交分发,营销手段确实占有一定优势,也确实需要技术的配合。但是,在趋势和财务报表的双重劣势之下,吸引曾服务于世界级巨头公司雅虎、微软及百度的陆奇加盟,拼多多要HOLD住陆奇,其吸引力恐怕还是缺乏那么一点点。因此,陆奇此时与拼多多扯上关系,更多的是一场联合营销的故事。拼多多上市在即,而陆奇在美国,尤其是华人技术圈中仍拥有难以撼动

  • 有了它,下次吃饭时,每个人都会抢着买单

    小程序体验师:陈丹阳朋友出去聚餐,老是AA付款好无趣。土豪们聚在一起,也经常为了抢买单,你拉我扯,不好看。什么才是买单的正确姿势呢?今天,知晓程序(zxcx0101)为你推荐「这波谁买单」小程序,它的「花式」买单分配大法,能让你「玩着」就把单买了。关注「知晓程序」微信公众号,在后台回复「0109」,一张图教你玩转小程序。教你用小程序花样买单「这波谁买单」的使用方法很简单,它有3种不同的买单分配方式,你只需要选择一种买单方式,按要求输入结账金额、用餐人数等内容,就会自动分配每个人需付的金额。里面的「AA计算器」可以直接计算出每人平摊的金额;而「全员掏腰包」和「土豪来买单」都需要参与者,长按随机生成的账单卡片,选出「幸运」账单。下面,我们就来看看3种方式的玩法和适用场景。1.AA计算器根据用餐人数、总金额、性别算出平摊费用。玩法:除了一般AA制买单的算账买单方法,这里还有「女性优惠」买单法。当打开「考虑性别」选项,输入用餐金额及男女人数,就能轻松算出男女各需平摊的费用。这样,各位男士就可以在女士面前好好表现一下自己了。场景:普通团体聚餐2.全员掏腰包人人都掏钱,「掏多掏少」运气大比拼。玩法

  • 如何通过梯度上升实现可视化卷积核?

    作者:陈仲铭 海格通讯|高级算法工程师 量子位已获授权编辑发布 转载请联系原作者为什么我的CNN网络模型训练出来的东西总是过度拟合?已经改了很多次参数都不行,到底是样本有问题还是网络模型定义有问题?问题在哪来?CNN网络模型中的每一层学习的是些什么特征?为什么有的人说第一层卷积核提取的边缘信息特征?有的人却说第一层卷积核提取的是颜色特征?到底是两者都有还是什么回事?CNN网络可不可以减掉几层然后保持相同的精度和损失率呢?减掉几层可以减少网络参数,本来我的GPU显存不是很大,太大的网络塞不下,不想重新买GPU只能减层,有没有大神可以教教我怎么操作啊?很多时候我们会遇到上面的问题,然后道听途说地开始给别人瞎粑粑吹吹牛皮。在这之前,连我自己都不知道VGG16网络原来最后两层block5conv2,block5conv3训练到最后几乎没有太多的纹理特征。你知道吗?不知道的话可以跟我一起学习学习,我也是个初学者,在国内CNN还没有太流行起来之前就开始跳坑,到现在蹲坑已深。弃坑ing。。。。最近为自己所在的公司写了一个工具来分析训练出来的CNN网络模型,如下图所示:从第一张图我们可以看到这张图有一

  • 腾讯云域名注册腾讯云域名优势

    以下视频将为您介绍注册腾讯云域名优势:选择腾讯云域名注册服务,等于选择了专业和安心,域名是互联网的入口,腾讯云为您提供高性价比的域名产品。品牌靠谱腾讯云是境内首家在云计算领域获得ISO9001CNAS(中国合格评定国家认可委员会)和ANAB(美国注册机构认可委员会)双认可的企业,为您提供优质、稳定、安全的域名服务。n腾讯云有着深厚的基础架构,有着多年海量互联网服务的经验,不管是社交、游戏还是其他领域,都有多年的成熟产品来为您提供专业服务。种类丰富腾讯云为您提供丰富的域名注册种类,国内、国际域名等域名注册服务,不管是新注册还是转入腾讯云都能满足您。具体可查看腾讯云域名后缀。解析高速腾讯云用新一代高性能DNS服务端程序,为您提供稳定的解析服务,解析速度超出主流解析的上百倍,给您秒级生效的快感体验。此外,腾讯云解析还向全网域名提供免费的智能解析服务,拥有海量处理能力、灵活扩展性和安全能力,为您的站点提供稳定、安全、快速的解析体验。服务专业腾讯云推出“腾讯云百分服务”,为您提供“沟通100、快捷100、满意100”的服务,助您安心购,省心用。n腾讯云有专业的售后工程师团队,为您提供7*24小

  • tarjan求强连通分量+缩点+割点/割桥(点双/边双)以及一些证明

    “tarjan陪伴强联通分量 生成树完成后思路才闪光 欧拉跑过的七桥古塘 让你心驰神往”----《膜你抄》   自从听完这首歌,我就对tarjan开始心驰神往了,不过由于之前水平不足,一直没有时间学习。这两天好不容易学会了,写篇博客,也算记录一下。   一、tarjan求强连通分量 1、什么是强连通分量? 引用来自度娘的一句话: “有向图强连通分量:在有向图G中,如果两个顶点vi,vj间(vi>vj)有一条从vi到vj的有向路径,同时还有一条从vj到vi的有向路径,则称两个顶点强连通(stronglyconnected)。如果有向图G的每两个顶点都强连通,称G是一个强连通图。有向图的极大强连通子图,称为强连通分量(stronglyconnectedcomponents)。” 一脸懵逼......不过倒也不难理解。 反正就是在图中找到一个最大的图,使这个图中每个两点都能够互相到达。这个最大的图称为强连通分量,同时一个点也属于强连通分量。 如图中强连通分量有三个:1-2-3,4,5   2、强连通分量怎么找? 噫......当然,通过肉眼可以很直观地看

  • 单片机:

     STC单片机采取EEPROM的模式而不采用FLASH.裸机程序指令就在Flash(Flashmemory)中存放,而数据就放在了RAM中(flash的写入次数有限制,同时它的速度和RAM还是差很多)。更广泛说,在单片机上RAM存放data段、bss段、堆栈段;ROM(EPROM、EEPROM、Flash等非易失性存储设备)存放代码,只读数据段。本质上说,这和PC上程序都在RAM中存放是一样的,PC上是操作系统规定了可读与可写,而单片机上是依靠不同的存储设备区分了可读与可写。当然现在的Flash是可读写的,如果Flash没有写入次数限制,速度又可以和RAM相差不多,单片机上只有Flash了。对单片机编程后,程序的代码段、data段、bss段、rodata段等都存放在Flash中。当单片机上电后,初始化汇编代码将data段、bss段、复制到RAM中,并建立好堆栈,开始调用程序的main函数。以后,便有了程序存储器,和数据存储器之分,运行时从Flash(即指令存储器,代码存储器)中读取指令,从RAM中读取与写入数据。RAM存在的意义就在于速度更快。第一步:连接编程器,打开编程器电

  • Java IO 流总结篇

    1. 写在前面的话 I/O,I是Input(输入)的缩写,O是Output(输出)的缩写,众所周知,人与人之间想要沟通交流,就需要讲彼此都能听懂的语言,比如大家都统一说英语。 人类如果想和计算机交流,也需要共同的语言,而计算机只懂二进制0101代码,然而人类发现很难理解和学懂这门语言,于是乎有了一个“翻译机“——高级编程语言,比如C#,Java等,高级编程语言通过一种解释器的程序可以将人类容易学习的高级语言代码解释翻译成二进制代码,于是乎计算机便能听懂我们的命令,做我们想让它做的事情了。 同样,程序和程序之间也有交流方式,那就是I/O. I/O其实在某种意义上是一个应用程序与文件,网络连接,控制台通信交流的一套API. 在Java.io包中最重要的就是5个类和一个接口。5个类指的是File、OutputStream、InputStream、Writer、Reader;一个接口指的是Serializable。掌握了这些就掌握了JavaI/O的精髓了。 正如上面所提到,如果我们想对文件操作,可以使用File相关的类,来进行文件新建,复制,移动,遍历,删除等操作。 如果想对文件的

  • OpenCV检测人脸实例代码

    下面是使用OpenCV通过在硬盘中读入图像来对其进行Haar人脸检测的代码。 //包含头文件 #include<opencv2/core/core.hpp> #include"cv.h" #include"highgui.h" intmain() {    constchar*cascade_name="C:\\opencv249\\sources\\data\\haarcascades\\haarcascade_frontalface_alt2.xml";//分类器路径,按实际填写    staticCvMemStorage*storage=0;    staticCvHaarClassifierCascade*cascade=0;    cascade=(CvHaarClassifierCascade*)cvLoad(cascade_name,0,0,0

  • exam9.6&amp;&amp;7

    emmm 改题稍紧张,以后几篇并一起写   9.6   (前十并没有参加本次考试) 于是我就rank8了 一道题一道题来 先说T1:   显然是一个高精度GCD,于是打算用计算器算一下时间复杂度   众所周知gcd是log的   于是...      按这样算显然会T对吧   所以我放弃了   但考后发现   计算器运算优先级锅了   其实是:      完全可过   P.S.鉴于高精取模并不好打,我yy出了多一个log的只用高精加&&减的做法 代码:    #include<iostream> #include<cstdio> #include<string> #include<cstring> usingnamespacestd; #defineintlonglong charch[105]; structnum{ inta[1005]; intopt; friendnumoperator+(numa,numb) { numc;intk=0; c.clear(); c.a[

  • STM32学习笔记(2)——熟悉工作环境

      首先你要熟悉你的开发板由哪几个部分组成,如何使用你的开发板。我使用微雪的F429的开发板,这是一块由母板和最小系统板构成的开发板:(受疫情原因,手上几块正点原子的开发板无法展示出来,只能拿这块板子了,这块板子严格意义上来说不算一块好的开发板)     要使用开发板就得知道开发板的供电接口和下载接口,这块微雪的板子左上角DC5V就是供电接口,最小系统板上20Pin的JTAG口就是下载接口,通过这两个接口,开发板才能按照开发者的意愿运转起来。   接着讲如何新建一个STM32的软件工程,打开STM32CubeMX软件,选择NewProject,在弹出的搜索框里输入你的芯片型号,这里以F429IGT6为例:            在以下界面选择好下载方式:     接着配置好工程的一些细节:        注意:路径、名称不要有特殊符号或者中文等出现。   还有一些细节:        勾选这两个有助于减少工程体积以及模块化编程。   最后生成代码即可:   

相关推荐

推荐阅读