按键精灵包含字符 第68行,第1个字符:(错误码0)没有找到合法的符号 是怎么回事,有没有大佬帮我看看

一、三种破解MCU 技术

MCU的安全等级正茬逐步提升一些公司甚至推出了安全主控,这是很好的现象说明大家越来越重视嵌入式领域的信息安全和程序安全了。但对于很多特殊行业比如消费类电子产品,低成本的通讯模块、电源控制模块等等迫于成本压力以及更新换代速度问题,都无法使用更安全的主控MCU有很大一部分产品甚至还在使用51单片机。

大家可能都知道破解51单片机是很容易的但为什么容易,又是如何来破解的可能很多人就不夶清楚了,我在这里结合网上一些前辈整理的资料和自己的经验,对MCU破解技术做个简单分析

大家不要把解密想的很复杂,他不像研发┅款产品那样先确定客户需求或者新产品主要功能,然后立项确定技术指标分配软硬件开发任务,基于硬件调试程序然后验证功能,测试bug还要做环境试验。行业里解密的方法有很多每个人破解的思路也不一样。但是大致分为几种


利用软件破解目标单片机的方法,利用这种方法不会对目标MCU元器件造成物理损伤。主要是对WINBONGDSYNCMOS单片机和GAL门阵列,这种利用软件解密设备按照一定的步骤操作,执行片內的程序送到片外的指令然后用解密的设备进行截获,这样芯片内部的程序就被解密完成了(GAL采用逻辑猜测)就可以得到加密单片机Φ的程序。

使用高档编程器等设备测试芯片是否正常并把配置字保存。

采用手工或专用开盖设备进行开盖处理这里说的开盖并不是说單片机或者其他MCU真有一个盖。简单解释一下MCU其实是一个大规模集成电路,它是由N个电路组合而成的而晶圆就是搭载集成电路的载体。將晶圆进行封装后就形成了我们日常所用的IC芯片,封装形式可以有多种比如TSSOP28、QFN28等。

对不同芯片提供对应的图纸,让厂家做电路修改目的是让MCU的存储区变得可读。有些MCU默认不允许读出Flash或者E2PROM中的数据因为有硬件电路做保护,而一旦切断加密连线程序就暴露可读了。洳下图所示:

(切割掉加密熔丝这样就可以直接读出芯片内部程序)

取回修改过的MCU,直接用编程器读出程序可以是HEX文件,或者BIN文件

按照读出的程序和配置,烧写到目标MCU中这样就完成了MCU的破解。至此硬件破解法成功完成。

采用软件和硬件结合的方法需要对芯片的內部结构非常的熟悉。

另外还有其他一些破解技术例如电子探测攻击、过错产生技术等等,但是最终目的只有一个就是能够模仿出目標MCU的功能就可以了。

看到这里大家应该明白一个道理破解MCU并不能做到把MCU中的程序原封不动的还原出来。目前的技术也做不到至少国内應该做不到。针对以上情况加密芯片应运而生,初期确实能很好的保护MCU的安全但很快就被找到了漏洞。

我举个实际破解的例子分析一丅大家就能够明白了。

MCU和加密芯片各存储一条认证秘钥存储同样的加密算法;

MCU产生随机数发给加密芯片,后者用秘钥加密后将密文返囙此时MCU解密后,比对明文是否和生成的随机数相等如果相等,程序正常运行;如果不相等出错处理。

因为盗版商没有这条秘钥加密芯片与MCU交互的数据又是随机变化的,无法找到规律所以只能把加密芯片的程序破解了,再复制一片加密芯片才能让MCU的程序跑起来而加密芯片不同于通用MCU,它内部有很多安全机制破解难度非常大。

这种加密方案看似非常安全但其实还是有漏洞的。

1.首先按照第二种破解方法获取到MCU的HEX文件。此处省略N步不再复述。

2.使用软件进行HEX反编译反编译软件目前有很多。

3.在反编译的程序中找到对比点,比如下圖所示CJNE语句可能就是这个对比点。因此只要把箭头2那行语句删除然后重新把汇编语言下载到MCU中,破解工作就完成了此时即使没有加密芯片,MCU也能正常运行了 

其实原因很简单。MCU是要对加密芯片的返回值进行判断的那么不让他做判断,这样一来不管加密芯片返回值是什么程序都能正常运行。

因此这种加密方案很快就被破解了当然也不是这么绝对,因为有些MCU即使剖片也不能获得里面的HEX或者BIN文件所鉯这种破解方案也要看MCU的安全等级够不够高。但是足以说明一个问题这种通过对比加密结果来实现加密的方案,安全等级还是不够高還是有破解漏洞的。

二、怎样防住那些想破解MCU的人

要破解MCU学校里不会有人讲这个,大概很多老师们也不会为什么要破解,为了兴趣研究?挣钱还可能是太无聊了。不管怎样学习下MCU的防破解技术,就像了解你家的门锁一样有价值

微控制器的硬件安全措施与嵌入式系统同时开始发展。三十年前的系统是由分离的部件如CPUROM,RAMI/O缓冲器,串口和其他通信与控制接口组成的

在早期,除法律和经济外几乎没有保护措施来防止复制这些设备。例如ROM是用低成本的掩模技术制造的,可用EPROM轻易复制但后者通常要贵3-10倍或更多。或定制掩模ROM那僦需要很长的时间和很大的投资。另一种是在游戏机中广泛使用的简易ASIC这些ASIC主要用于I/O部分来取代数十个逻辑器件,在降低成本的同时防圵竞争者的复制使之不得不应用更大且更贵的解决方案。实际上ASIC不会更安全用示波器来简单分析信号或穷举所有可能的引脚组合就可鉯在数小时内得知它的具体功能。

从七十年代后期开始微控制器提供一种非常好的取代基于CPU的控制板的方法。它们不仅有内部存储器和通用I/O接口还有一些保护措施以防止未经授权访问内部存储器的内容。

不幸的是早期的MCU没有提供非易失存储能力,重要的数据不得不存茬MCU外部的分离芯片上因此很容易被读出数据。一些廉价USB狗也用此法来进行软件保护

下一步进展就是把EEPROM芯片放在与MCU同一封装的内部。破解这些芯片是不容易的一种专业的方法是打开样品的封装,用微探针来获得数据或将芯片重新焊在一个分开的封装内。这两种设备都鈈是低级破解者所能拥有的这些破解者会尝试用自制的微探针(旧芯片的焊线区域是相当大的)或利用软件上的缺陷来读出数据。


图2  PIC12CE518微控制器打开封装后的照片可见非易失数据存储器和MCU是分开封在同一封装内部的。 

一些MCU始终没有任何特殊的硬件安全保护它们仅仅是基於不公开编程算法来保护。这可能有伪装回读功能或用校验功能来代替。一般这些MCU不会提供非常好的保护能力实际上,在一些智能卡Φ适当使用校验功能能够起到很强的保护作用。

下一步增强安全保护的措施就是增加一个硬件安全熔丝(security fuse——安全熔丝就是寄存器)来禁止訪问数据这很容易做到,不需要完全重新设计MCU架构仅利用熔丝来控制编程接口的回读功能。缺点是熔丝位很容易被定位并进行入侵攻擊例如:熔丝的状态可以通过直接把熔丝位的输出连到电源或地线上来进行修改。有些例子中仅仅用激光或聚焦离子束来切断熔丝的感應电路就可以了用非侵入式攻击也一样可以成功。

因为一个分离的熔丝版图异于正常的存储阵列可以用组合外部信号来使熔丝位处不能被正确读出的状态,那样就可以访问存在内部芯片上的信息了用半侵入式攻击可以使破解者快速取得成功但需要打开芯片的封装来接菦晶粒。一个众所周知的方法就是用紫外线来擦掉安全熔丝


图4  PIC12C508微控制器的安全熔丝位于程序存储器阵列的外部。

再下一步就是将安全熔絲做成存储器阵列的一部分如果已设好熔丝,可禁止外部读写数据一般的熔丝与主存储器离得很近,或干脆与主存储器共享一些控制線因为晶圆厂使用与主存储器相同的工艺来制造,熔丝很难被定位和复位非侵入式攻击仍然可用,但需要时间去寻找同样,半侵入式攻击也可用当然破解者需要更多的时间去寻找安全熔丝或控制电路负责安全监视的部分,但这些可以自动完成的进行侵入式攻击将昰很困难的,需要手工操作那将花费更多的成本来破解。

更进一步的是用主存储器的一部分来控制外部对数据的访问这可以用上电时鎖定特定区域地址的信息,将它作为安全熔丝或用密码来控制对存储器的访问。例如德仪的MSP430F112只有输入正确的32字节密码后才能进行回读操作。如果没输入密码只有擦掉芯片后才能操作。尽管这个保护方法看上去比先前的更有效它有一些缺点可以用低成本的非侵入式攻擊如时序分析和功耗分析来破解。如果安全熔丝的状态是上电或复位后的存储器的一部分这就给破解者用电源噪声来破解的机会,强制電路进入存储器中的错误状态

别的一些使入侵攻击开销更多的措施包括使用顶层金属网格。所有的网格都用来监控短路和开路一旦触發,会导致存储器复位或清零普通的MCU不会使用这种保护方法,因为设计较难且在异常运行条件下也会触发,如:高强度电磁场噪声低温或高温,异常的时钟信号或供电不良故有些普通的MCU使用更廉价的伪顶层金属网格,但这也有非常高效的光学分析进行微探测攻击的方法在智能卡中,电源和地之间铺了一些这样的网格线在这些方法中发现一些设计缺陷使得可以进行微探测攻击。同样这些网格不能保护非侵入式攻击。因为导线之间有电容并且光线可以通过导线抵达电路的有效区域,半侵入式攻击仍然可能

可编程的智能卡制造商走得更远,干脆砍掉标准的编程接口取而代之的是启动模块,可以在代码载入后擦掉或屏蔽掉自己这些卡只能在初始化时被编程一佽,之后只能响应使用者的嵌入软件所支持的读写存在卡里的数据或程序

近期的一些智能卡使用存储器总线编码(Bus encryption)技术来防止微探测攻击。即使破解者获得数据总线的数据也不可能知道密码或别的敏感信息这种保护措施直指侵入式和半侵入式攻击。但非侵入式攻击仍然可鉯像正常的CPU一样访问控制非编码信息事实上,几年前就发现廉价地破解编码信息的方法


 图8  100倍显微镜下的SLE66系列的智能卡芯片上的硬件总線编码模块,保护存储器免受微探测攻击

另外一些需要提及的改进是将标准的模块结构如解码器,寄存器文件ALU和I/O电路用类似ASIC逻辑来设計。这些设计称为混合逻辑(Glue logic)广泛用于智能卡。混合逻辑使得实际上不可能通过手工寻找信号或节点来获得卡的信息进行物理攻击这种技术广泛用于盗版,并可提升常见CPU内核的性能和安全性例如,SX28微控制器的引脚和程序都兼容于微芯的PIC16C57但它使用了混合逻辑设计,闪存大容量RAM使它的性能获得大幅提升。在PIC微控制器中破解者很容易跟踪内存到CPU的数据总线,但在SX微控制器中几乎不可能知道总线的物理位置,反向工程和微探测攻击将是非常困难且耗费时间

图9  SX28微控制器引入混合逻辑设计,提升了性能和安全性

更常用的是芯片由不同模塊组成,但每个模块使用混合逻辑设计如CY7C63001A微控制器。在这种情况下破解者更容易跟踪模块之间的总线和控制线,并对芯片进行侵入式囷半侵入式攻击混合逻辑设计不能防止非侵入式攻击,但需要更快更昂贵的设备半侵入式攻击面临伪设计模块的问题。当然破解者可鉯自动操作来进行穷举搜索并尝试攻击所有可能区域结果很可能是花了很长时间并没有取得成功。另一方面破解者可以直接攻击存储器器或它的控制电路。


图10的CY7C63001A微控制器使用部分混合逻辑设计但内部总线很容易被访问。

技术的进步增加了入侵攻击的成本十年前很容噫使用激光切割器和简单的探针台就可以读写芯片表面的任何点,但对于现代的深亚微米半导体芯片就需要用到不一般的且昂贵的技术這难倒了很多潜在的破解者。如PIC16F877很容易在显微镜下观察并进行反向工程藏在顶层金属下的第二层金属和多晶硅层仍然可见。但在PIC16F887A微控制器中使用了平坦化工艺使得不会显示更深的层。唯一的方法是用物理或化学的方法除去顶层金属

图11 500倍显微镜下,通过PIC16F877的顶层看到第二層金属和多晶硅层


图12  500倍显微镜下,看不到PIC16F877A的顶层金属下有什么特别的

通过编程接口对片上存储器进行写,校验读和擦除操作,这可鉯用硬件(JTAG)或软件(bootloader)来实现在硬件接口方面,安全保护通常是使用安全熔丝来控制接口的操作如,阻止存储器中的数据发送到输絀缓冲器里至于软件接口,一般使用密码保护但通常软件会检测某个硬件安全熔丝的状态。一些微控制器使用了这两种方法软件启動载入模块控制系统的编程,另一个快速的硬件接口用来大批量生产的编程每一种都有它的优势和劣势。通过软件有更好的灵活性和哽好的编程控制能力,但会在时间延迟和功耗方面泄漏一些信息硬件的执行速度更快,对噪声攻击不敏感不会通过功耗泄漏信息。在矽芯片的资源上两者都占用类似大小的空间,对于现代的微控制器与其它较大的部分如程序存储器,处理器和模拟接口相比这部分幾乎可以忽略不计。制造商就可以在同一个芯片上放置两种或更多的编程接口如通过异步接口进行在线串行编程,标准的并行编程软件启动模块通过异步接口编程。

一些制造商故意不提供它们的微控制器的编程规格这对它本身并没有提供很好的保护,只是给破解稍稍增加成本而已这些信息可以通过在开发板上或通用编程器对芯片进行编程而获得。

很明显对于最高等级的安全,系统没有任何编程接ロ并且不能读写所存储的数据。这通常用于掩模ROM微控制器和智能卡对这种保护,实用破解方法是用微探针接触数据总线来恢复信息或使用功耗分析和噪声攻击来利用软件的缺陷当微控制器进行编程但不提供任何返回信息,只有校验和写检查这可以提供相对高的安全等级。当然这需要完全执行以避免破解者强制系统一次只校验一个字节。

大部分现代的微控制器有一个或多个安全熔丝来控制片上存储器的读写这些熔丝可以用软件或硬件来实现。软件的方法就是密码存储在存储器中或一个特定的存储器位置当作一个安全熔丝例如,茬MC68HC908系列使用了密码保护。

MC68HC705B系列的熔丝位于数据EEPROM存储器的第一个字节两种方法的安全性都较高,因为很难从物理上找到熔丝和密码的位置并复位它们同时,破解者会尝试使用噪声攻击来跳过安全检查或使用功耗分析来观察猜测的密码正确与否。

硬件执行方面安全熔絲物理上位于芯片上。这可以是主存储器阵列边上的分离的单个单元甚至更远。所有的PIC和AVR微控制器都这样这两者的安全性能并不高,熔丝很容易被找到并被屏蔽

安全熔丝在主存储器中可以提供提供更好的保护,这很难找到并屏蔽它们主存储器和熔丝可以通过位线(Bit line)接茬一起。如Z86E33微控制器或通过字线(Word line)接在一起,如意法的ST62T60有趣的是MC68HC705C9A使用了多种安全措施。熔丝单元放在主存储器单元之间合用位线。如果熔丝被紫外线擦除了主存储器也会被擦掉。对存储器进行反向工程发现很难分辨哪部分属于存储器,哪部分属于熔丝但同时,半侵入式攻击可以很好工作因为熔丝有分开的控制电路,这很容易被破解而不影响主存储器

图13  200倍显微镜下,Z86E33微控制器的熔丝沿位线紧挨著主存储器


图14   200倍显微镜下ST62T60微控制器的熔丝沿字线紧挨着主存储器

硬件安全保护方面的新进展是将熔丝区域嵌入到主存储器阵列中,共享控制或数据线这样的安全性能更好,熔丝已经成为存储器的一部分很难进行定位。 将某一部分存储器作为安全熔丝可以达到更高的安铨性能这种情况下,不扰乱其它部分存储器的内容找到位置并复位是异常困难的。这并不意味着别的破解方法不能凑效但可以减少荿功的机会。

安全熔丝可以通过多种方法来监控最简单的方法就是在上电时;复位时;进入编程模式时检查熔丝的状态。使用电源噪声戓激光脉冲可以用很短的时间就改变熔丝的状态。熔丝状态保存在触发器或寄存器中并不好因为触发器的状态可以通过缺陷注入攻击來改变。

三、MCU制造商必需掌握的7种攻防技术

▍ 什么是非侵入式攻击 

非侵入式攻击不需要对元器件进行初始化。攻击时可以把元器件放在測试电路中分析也可单独连接元器件。一旦成功这种攻击很容易普及,并且重新进行攻击不需要很大的开销另外,使用这种攻击不會留下痕迹因此,这被认为是对任意元器件的硬件安全最大的威胁同时,通常需要很多时间和精力来寻找对特定元器件的非侵入式攻擊方法这通常需要对元器件进行反向工程,包括反汇编软件和理解硬件版图

非侵入式攻击可以是被动的或主动的。被动攻击也叫侧媔攻击,不会对被攻击元器件发生作用但通常是观察它的信号和电磁辐射,功耗分析和时钟攻击主动攻击,如穷举攻击和噪声攻击特点是将信号加到元器件上,包括电源线

一个简单的非侵入式攻击可以是复制一个上电配置的基于SRAM的FPGA。接上配置芯片用的JATG接口用示波器或逻辑分析仪,捕捉所有信号然后可以通过分析波形并回复独有的命令。

只使用到一半的FPGA资源时可以轻微改变数据流来伪装盗版嘚事实。配置时留下一点空间而不影响元器件的运行JTAG接口在发送信号时序时也有一些自由,故盗版的波形可以设置成看上去与原始信号鈈一样的另外,破解者可以在上传时交换行地址给人的印象是完全不同的设计。

▍ 什么是含糊与安全 

半导体制造商给大客户提供了增强产品防破解能力的措施:包装上的客户印字代替了标准的芯片型号。这给人的印象是产品是由定制的集成电路设计的众所周知,ASIC提供了很好地保护措施来防止多种攻击只有极少数经验丰富且装备精良的破解者才有可能成功破解。这会使很多潜在的破解者望而却步泹一个信心坚定的破解者会尝试用简单的方法确定芯片是不是真的ASIC。最简单的方法是观察连接到电源地,时钟复位,串口或别的接口嘚引脚与数据库中被怀疑的微控制器相比较,这种结果非常可靠因每种微控制器都有自己的引脚特点。一旦发现相似的就把它放在通用烧写器上尝试读出结果。

另一个简单的方法是限制访问程序存储器通常用在智能卡中,但一些微控制器中也用到这不是很可靠且實用的方法。当然在智能卡中用得很好所有的客户与芯片制造商迫被签署不扩散协议。但微控制器极少这样能被通用烧写器烧写的微控制器世界上很多公司都能提供。即使文件中没有烧写的规格用低成本的示波器几个小时就可以套出需要的波形。如果微控制器不被特殊通用烧写器所支持仍然可以通过从制造商购买开发板来获得直接完整的协议。

一些与安全相关的操作使用输入的值和密钥,由半导體芯片执行不同的时间来比较小心的时序测量和分析就能恢复出密钥。这个方法最早在1996年的文献上提到稍后这种攻击成功破解了实际嘚RSA签名的智能卡。

为了攻击成功需要收集装置的信息,与处理时间整合比较如问答延迟(question-answerdelay)。很多密码算法容易受到时序攻击主要原因昰软件来执行算法。包括执行适时跳过需要的分支和操作条件 ; 使用缓存 ; 不固定时间处理指令如倍频和分频 ; 还有大量的其他原因结果就是執行能力典型地取决于密钥和输入的数据。

为防止此类攻击可以使用盲签名(Blinding signatures)技术这个方法是利用选定的随机数与输入数据混合来防止破解者知道输入数据的数学运算法则。

时序攻击可用于安全保护是基于密码的微控制器或使用确定数字的卡或密码来进行访问控制的系统,如达拉斯的iButton产品这些系统中共有的风险是输入的连续数字在数据库进行再次校验。系统需经常检查输入到数据库的密钥的每个字节┅旦发现不正确的字节就会立即停止,然后切换到下一个直到最后一个所以破解者很容易测量出输入最后一个密钥倒请求另一个的时间,并得出发现的密钥相似度尝试相对小的数字,有可能找到匹配的密钥

为防止这些攻击,设计者需要小心计算处理器的周期当密码進行比较时确保正确和错误的时间是一样的,例如:飞思卡尔的68HC08微控制器的内部存储器载入模块在输入正确的八字节密码后可以访问内部閃存为达到正确和错误的密码都处理相同的时间,程序中增加了额外的空操作指令这对时序攻击提供了很好的保护。一些微控制器有內部阻容振荡器那样处理器的工作频率与电压和芯片的温度相关。这使得时序分析很困难攻击时需要稳定元器件的温度并减少电源线仩的噪声和电压波动。一些智能卡有内部随机时钟信号使得攻击时测量时间延迟无效

暴力对于半导体硬件和密码来说是另一种意思。对於密码暴力攻击是对系统尝试数量众多的密钥。通常是使用高速计算机来寻找匹配的密钥

一个例子是微控制器中的密码保护设置。以TI嘚MSP430为例密码本身长度为32字节(256位),抵挡暴力攻击已经足够了但密码分配在与处理器中断矢量相同的存储器地址。那么首先减少存储器內矢量一直指向的区域。然后当软件被更新时只有小部分的密码被修改,因为大部分中断子程序指向的矢量是相同的地址结果是,如果破解者知道早前密码中的一个就很容易做系统的搜索,在合理的时间内找到正确的密码

暴力攻击也可用在ASIC或CPLD的硬件设计来实现。这種情况下破解者使用所有可能的逻辑组合到元器件可能的输入端并观察所有输出。这种方法也称为黑箱分析(Black-box analysis)因为破解者不知道被测试え器件的情况。通过所有可能的信号组合尝试获得元器件的功能。这种方法对相对小的逻辑器件很有效另一个问题是破解者使用的ASIC或CPLD囿触发器,故输出将可能是当前状态或输入的状态但如果预先检查并分析信号,搜索的范围可以显著减少例如,时钟输入数据总线囷一些控制信号是很容易认出的。

另一种可能的暴力攻击对很多半导体芯片有效,是将外部高压信号(通常是两倍于电源电压)加到芯片引腳上来试图进入工厂测试或编程模式。事实上这些引脚用数字万用表很容易发现,因为它们没有保护二极管到电源脚一旦发现对高壓敏感的引脚,破解者就可以尝试可能的逻辑信号组合来加到别的引脚上找出用于进入工厂测试或编程模式的部分。

破解者也可用元器件的通信协议来找出设计者嵌入在软件中的测试和更新用得隐藏功能

芯片制造商经常提供给后期测试用得嵌入硬件测试接口。如果这些接口的安全保护没有适当设计破解者很容易利用它来读写片上存储器。在智能卡中这些测试接口通常位于芯片电路之外,并在测试后從物理上除去

任何安全系统,不管软件和硬件在设计上都可能有缺陷,对于破解者来说都是机会暴力攻击有可能找到它。小心设计咹全保护系统进行适当的评估,可以避免很多问题并使得这些攻击事实上不可行。

一个运算设备的功耗取决于它当前的状态依照CMOS晶體管的原理,各部分动态时的功耗比静态的要大当输入电压加到反向器上,会引起一个晶体管短路这个晶体管电流的增加比静态消耗嘚寄生漏电要大得多。在电源线上加个10-20欧的电阻就可以测量电流的波动。为达到更好的效果需要使用至少12位精度和50MHz采样速度的模数转換器。这些获得的参数可以用来区别处理器的不同指令并估计总线上同时翻转的位数

通过平均多次重复同样操作的电流,即使是没有通過总线的很小信号也能区别开有些信号如移位状态特别有用,因为很多密码的密钥产生算法使用移位操作来逐一移出单个密钥倒进位标誌即使状态位的变化不能直接测量,它们通常会改变指令次序或微码的执行这会导致功耗的明显变化。

不同指令导致不同级别的指令解码和运算单元的活动可被清晰地区别开,故运算部分能被推测出处理器的不同单元在时钟沿相关的不同时间里有独有的开关状态,能被高频仪器分离出来

有多种不同的功耗分析技术用在破解密码算法上。整个分析过程是相对简单的只需要标准的现有的廉价仪器设備。

Analysis)SPA是在密码或别的安全相关操作时直接观察功耗,可以得知设备运行时的信息如密钥资料如果破解者知道密码算法,很容易通过观察处理器指令次序特别是移位条件转移,找到一些位的信息如果算法或逻辑运算的结果很容易被看出,如进位状态零或负标志,就鈳以获得更多的信息DPA是种更有效的技术,因为破解者不需要知道密码算法是如何执行的它使用静态分析和已知密码运算的大量功耗迹線来获取隐藏信息。用统计方法鉴别功耗的微小区别可用来恢复密钥中的单个的位信息。

功耗特性当然包括噪声部分额外的噪声可以通过减少获取信号的探针长度并小心使用测量仪器来降低它。测量接在地线上的电阻的功耗有一些优势首先,减少了噪声电平其次,鈳以用示波器的探头直接测量信号因为大部分探针站有公共的地线与外部电源地相连。为了增加信噪比可以通过提高平均采样数来获嘚。

有源探头能降低输入电容增加对输入信号的带宽。一种方法是用高速低噪声的运放来构建相对简单的探头另一种是用很短的同轴電缆直连到示波器的输入端。在这些情况下探头的输入电容显著减少。

我们对现有的功耗分析步骤进行了改进这是一种新的方法,尚未有类似的我们用铁芯变压器来取代连到电源或地的电阻,那样波形就有点不一样因为信号的直流成分丢失了,同时又有些有利条件常用的方法对直流电流几乎没有什么限制。但对于10欧电阻来讲100mA的电流意味着有1V的电压降那可能中断微控制器的正常操作。减少这个电阻可以解决这个问题但会使得难以识别功耗的微小变动。使用变压器后不需要使用昂贵的有源探头,标准的无源探头就可以给出几乎楿同的结果如果信号太小,调节二次侧的线圈就可以增加振幅变压器也担当无源滤波器的角色,如波形同样的处理器指令对电阻和變压器所测量到的波形有不同的影响。那可以通过对获得的信号进行处理为了攻击获得成功,需要采集数千的样本然后快速分析处理所展现的秘密。

最近芯片设计上已考虑这种攻击,并将使得这种攻击方法更难获得成功

噪声攻击是快速改变输入到微控制器的信号,鉯影响它的正常运行通常噪声是叠加在电源上或时钟信号上,但噪声也可以是外加的短暂电场或电磁脉冲在离芯片表面数百微米处放置两根金属针,然后加上少于1微秒的数百伏电压的窄脉冲晶圆衬底会感应出一个电场,使得邻近晶体管的阈值电压发生变化最近出现┅种改进的方法:使用几百圈金属线绕在微探针的针尖构成一个小型电感。当电流进入线圈会产生磁场针尖将集中磁力线。

每个晶体管囷与它相连的线路构成有时延特性的RC电路处理器的最大可用时钟频率取决于该电路的最大延迟。同样的每个触发器在接收输入电压和甴此引致的输出电压之间有个特征时间窗口。这个窗口由给定的电压和温度来确定如果用时钟噪声(比正常的时钟脉冲要短得多)或电源噪聲(电源电压的快速波动)将会影响芯片里的某些晶体管,导致一个或多个触发器进入错误状态通过改变参数,处理器会被导致执行许多完铨不同的错误指令有时甚至是不被微码支持的。尽管我们不会预先知道何种噪声会导致何种芯片的何种错误但它能相当简单地进行系統的搜索。

时钟信号的噪声攻击在目前是最简单的且相当实用。实际应用中的噪声通常用来取代跳转条件并试验先前的测试指令可以茬安全密码问询处理时创建一个攻击窗口,简单预防执行这些指令指令噪声也能用来扩大循环的时间。如串口子程序在输出缓冲后再讀更多的内容;或在密钥操作时减少循环次数来传一个弱的密码。

为获得噪声时钟需要临时增加一个或大于半个周期,有些触发器在到达噺状态之前就获得输入时钟噪声通常针对处理器的指令流。对硬件执行安全保护的微控制器没有什么效果实际中,仅使用时钟噪声来攻击微控制器或智能卡的软件程序接口

这类保护的破解是相对容易的。如处理器在循环里只执行一个指令攻击时可用不同的时钟噪声導致处理器误操作。不需要小心地与时钟信号同步只需要随机制造噪声就可在数次攻击内成功。插入噪声是相对容易的,无需使用外部发苼器瞬间短路晶振即可。当谐振器在不同的泛音上产生震荡会发出很多噪声大部分情况下需要在确定的时钟周期内获得所需结果,在這种情况下用信号发生器更好

使用时钟噪声来攻击某些微控制器也许是很困难的。例如德仪的MPS430微控制器在内部RC震荡器工作的启动模块佷难与内部时钟同步,攻击时很难估计精确的时间一些智能卡在处理器指令流里会随机插入延迟,使得攻击更为困难使用功耗分析会囿帮助,但要求非常昂贵的设备来实时获得参考信号

电源供应电压的波动会导致晶体管阈值电平的漂移。结果就是一些触发器在不同的時间里采样它们的输入或读出错误的安全熔丝的状态。通常用瞬间增加电源电压或电压跌落来制造噪声一般在10个时钟周期内。电源噪聲通常用在微控制器的程序接口上能影响处理器运行或硬件安全电路。一般地弱点比时钟噪声更难找到并利用,因为对于时域参数振幅,上升/下降时间都是变量

一个例子是上例提到的攻击MC68C05B6.如果在执行AND $0100指令时电源电压减少50-70%,处理器从EEPROM中取出的值是FFh而不是实际的值这會对应熔丝未加密状态。窍门是小心计算执行时间来减少电源电压否则处理器会停止运行或进入复位状态。这种任务并不难复位后目標指令在第一个一百周期内被执行。破解者可以使用矢量发生器或构建一个自己的噪声源

另一个是微芯的老旧的PIC16F84。芯片的擦除操作会解除安全保护但同时会清除芯片上程序和数据存储器中的内容。安全保护电路在硬件设计上是在安全熔丝复位之前擦掉存储器但我们发現在芯片擦除操作时电源电压几微秒内增加到大约10V,会中断存储器擦除操作但安全熔丝正常完成复位,这使得有可能读出存储器里的内嫆如此高压需要谨慎使用,如果时间过长会损伤芯片新版本的PIC16F84A增加了防欠压和过压攻击的能力。如果电源电压低于3V或6V通过编程接口嘚任意修改存储器的操作会被立即中断。

不是一直需要电源噪声超过电源电压范围的规格例如,PIC18F84A微控制器保护机制可以阻止在芯片擦除操作开始后使用大于50mV的噪声。那会导致中止程序存储器的擦除操作但不会擦掉熔丝

上述例子表明噪声攻击时无需特殊工具就有很好的效果。智能卡里有时钟监控电路但极少微控制器有

处理器一般会把密钥保存在静态RAM里,如果元器件被篡改就会掉电RAM内容丢失,从而保護密钥不被窃取众所周知的是在低于零下20度时,SRAM里的内容会“冰冻”很多元器件把温度低于这个阈值视为发生篡改事件。我们做了一些实验来确定现代SRAM数据保持能力与温度的关系我们的实验表明传统的思维不再有效。即使在高温下数据保持能力也是个问题。数据保歭能力不仅仅对SRAM有影响对DRAM, UV EPROM, EEPROM和闪存也有影响。结果是仍然可以从已擦除的存储器中获得一些信息。这会给安全设备带来很多问题

安全笁程师都很关注断电后SRAM器件能保持数据的时间。原因如下:很多产品使用密钥或类似的方法进行加密和别的安全相关的计算需要不能被讀出或改变。最普遍的解决方法是把安全密钥放在带篡改传感器的易失存储器中一旦检测到发生篡改,易失传感器会掉电或短路到地泹如果数据保留时间大于破解者打开元器件并对存储器上电的时间,那保护机制就被摧毁了

在二十世纪八十年代,发现低温能将SRAM的数据保存时间增加到几秒甚至几分钟对于那个时候的元器件,发现零下20度就可以增加数据保存时间并且会随着温度的降低而增加保持的时間。有些就增加了温度传感器温度低于零下20度就触发篡改事件,立即清零存储器本次试验是重复这个工作,查看2000年后的产品是否也有此特性

另一个需要关注的是即使部分内容已被破坏,安全信息也能被复原假设破解者获得了n=128位密钥中的m=115位,也就是90%的信息他可以通過搜索n!/(m!(n-m)!=128!/(115!13!)=2.12*个可能的密钥。通过1万台电脑每台每秒进行10亿次搜索密钥的操作,破解者只需6个小时就能搜遍所有密钥如果只有80%的信息,也就昰知道128位密钥中的103位那就有2.51*种可能。几乎增大了一百倍破解者要花百万年来搜索密钥,故认为均匀的128位密钥不能被恢复

芯片制造商們只有掌握了各种MCU的破解技术,才能够针对性的提升防护技能

(文章原出处来自【21ic电子网】,如有侵权请联系删除,谢谢!)

有大佬知道这个第一题怎么做吗 [問题点数:50分]

红花 2019年7月 C/C++大版内专家分月排行榜第一
黄花 2019年9月 C/C++大版内专家分月排行榜第二

第一题设计很不合理原则上无解

第二题基础的结構体对齐问题

签到新秀 累计签到获取,不积跬步无以至千里,继续坚持!

第二题应该跟编译器也有关

签到新秀 累计签到获取,不积跬步无以至千里,继续坚持!

匿名用户不能发表回复!
起因 又到深夜了我按照以往在csdn和公众号写着数据结构!这占用了我大量的时间!峩的超越妹妹严重缺乏陪伴而 怨气满满! 而女朋友时常埋怨,认为数据结构这么抽象难懂的东西没啥作用常会问道:天天写这玩意,有啥作用而我答道:能干事情多了,比如写个迷宫小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析 如果用数据结构与算法造出東西来呢 ...
1)什么是链接? 链接是指两个设备之间的连接它包括用于一个设备能够与另一个设备通信的电缆类型和协议。 2)OSI 参考模型的層次是什么 有 7 个 OSI 层:物理层,数据链路层网络层,传输层会话层,表示层和应用层 3)什么是骨干网? 骨干网络是集中的基础设施旨在将不同的路由和数据分发到各种网络。它还处理带宽管理和各种通道 4)什么是 LAN? LAN
作者 mezod译者 josephchang10如今,通过自己的代码去赚钱变得越來越简单不过对很多人来说依然还是很难,因为他们不<em>知道</em>有哪些门路今天给大家分享一个精彩...
我本科学校是渣渣二本,研究生学校昰985现在毕业五年,校招笔试、面试社招面试参加了两年了,就我个人的经历来说下这个问<em>题</em> 这篇文章很长,但绝对是精华相信我,读完以后你会<em>知道</em>学历不好的解决方案,记得帮我点赞哦 先说结论,无论赞不赞同它本质就是这样:对于技术类工作而言,学历伍年以内非常重要但有办法弥补。五年以后不重要。 目录: 张雪峰讲述的事实 我看到的事实 为什么会这样 ...
文章目录前言下载免费高清夶图下载带水印的精选图代码与总结 前言 在上一篇写文章没高质量配图python爬虫绕过限制一键搜索下载图虫创意图片!中,我们在未登录的凊况下实现了图虫创意无水印高清小图的批量下载虽然小图能够在一些移动端可能展示的还行,但是放到pc端展示图片太小效果真的是很┅般!建议阅读本文查看上一篇文章在具体实现不做太多介绍,只讲个分析思路 当然,本文可能技术要求不是特别高但可以...
三次握掱和四次挥手是各个公司常见的考点,也具有一定的水平区分度也被一些面试官作为热身<em>题</em>。很多小伙伴说这个问<em>题</em>刚开始回答的挺好但是后面越回答越冒冷汗,最后就歇菜了 见过比较典型的面试场景是这样的: 面试官:请介绍下三次握手 求职者:第一次握手就是客户端给服务器端发送一个报文,第二次就是服务器收到报文之后会应答一个报文给客户端,第三次握手就是客户端收到报文后再给服务器發送一个报文三次握手就...
作者:阿波、纯洁的微笑漫画:宁州枪手程序员如今已经发展成社会的主流职业,以至于街头的王大妈李大爷嘟能说出一二来据说他们认为的程序员是这样子的:程序员都是秃头,秃的越狠越...
全文长度: 2200字 阅读时间: 8分钟 TL;DR(too long don'tread) 1、业务中台就是流程模板+扩展点 2、没法很好抽象就别做中台没那么多需求和业务线就别做中台。 很多同学都会问啥叫中台,做到怎么样的程度才算中台我们可鉯用一小批一小批精英海空陆战队来说明这个例子。
这几天在重温微信小游戏的飞机大战玩着玩着就在思考人生了,这飞机大战怎么就鈳以做的那么好操作简单,简单上手 帮助蹲厕族、YP族、饭圈女孩在无聊之余可以有一样东西让他们振作起来!让他们的左手 / 右手有节奏有韵律的朝着同一个方向来回移动起来! 这是史诗级的发明,是浓墨重彩的一笔是……
提问: 西游记取经团为了节约成本,唐太宗需偠在这个团队里裁掉一名队员该裁掉哪一位呢,为什么? 为了完成西天取经任务组成取经团队,成员有唐僧、孙悟空、猪八戒、沙和尚、白龙马 高层领导: 观音 项目经理: 唐僧 技术核心: 孙悟空 普通团员: 猪八戒、沙和尚 司机: 白龙马 这是个很有意思的项目团队 项目经悝:唐僧 得道高僧。 唐僧作为项目经理有很坚韧的品性和极高的原则性,不达目的不罢...
“一个程序员写了个爬虫程序整个公司200多人被端了。” “不可能吧!” 刚从朋友听到这个消息的时候我有点不太相信,做为一名程序员来讲谁还没有写过几段爬虫呢?只因写爬虫程序就被端有点夸张了吧 朋友说,消息很确认并且已经进入审判阶段了
大家好,我渣渣烟我曾经写过一篇《面试官:谈谈你对表设计嘚认识?》于是呢,决定再来一个mysql的数据库专<em>题</em>这篇我们就来谈谈关于索引方面的mysql面试<em>题</em>。还是老规矩讲的是在Innodb存储引擎下的情形,毕竟我还真没用过Mysiam之类的存储引擎ps:其实很早就想写了,一直偷懒!
前言郑重声明:本文不是 Podman 的入门篇入门请阅读这篇文章:再见 Docker,是时候擁抱下一代容器工具了Podman 原来是 CRI-O 项目的一部分后来被分...
我之前里的文章,写的大部分都是与计算机基础知识相关的这些基础知识,就像峩们的内功如果在未来想要走的更远,这些内功是必须要修炼的框架千变万化,而这些通用的底层知识却是几乎不变的,了解了这些知识可以帮助我们更快着学习一门知识,更加懂得计算机的运行机制当然,在面试中也经常会被问到特别是对于应届生,对于春秋招也可以看看我前阵子写过的文章历经两个月,我的秋招之路结束了!也有读者经常问的计算...
Docker虚拟化容器技术 第一章 Docker简介诞生背景Docker 介绍虚拟机技术容器虚拟化技术官方网址第二章 Docker安装前提条件安装DockerDocker底层原理Docker结构图工作原理Docker为什么比VM快第三章 Docker常用命令帮助命令镜像命令嫆器命令 第一章 Docker简介 诞生背景 一款产品从开发到上线,从操作系统到运行环境,再到应用配置
欢迎关注“技术领导力”博客,每天早仩8:30推送 “你交代一下总共抓了多少数据,在哪些网站抓的数据干什么用了?看看够在里面呆几年。”警察语气凝重地对张强说。 程序员张强(化名)回忆起这两天来的经历,仍心有余悸 张强,在一家大数据风控公司担任爬虫工程师每当看到网上的段子,爬虫學得好监狱进得早,他总是莞尔一笑心想:关我毛事啊,我只是个程序员要坐牢也是老板去...
loonggg读完需要4分钟速读仅需2分钟感觉我好久恏久没有给大家分享高质量的软件和插件了。今天周末难得在家休息一下,痛下决心分享一些我认为的高效率工具软件给大家。废...
数據库查询相信很多人都不陌生所有经常有人调侃程序员就是CRUD专员,这所谓的CRUD指的就是数据库的增删改查 在数据库的增删改查操作中,使用最频繁的就是查询操作而在所有查询操作中,统计数量操作更是经常被用到 关于数据库中行数统计,无论是MySQL还是Oracle都有一个函数鈳以使用,那就是COUNT 但是,就是这个常用的COUNT函数却暗藏着很多玄机,尤其是在面试的时候一不小心就会...
由于我之前一直强调数据结构鉯及算法学习的重要性,所以就有一些读者经常问我数据结构与算法应该要学习到哪个程度呢?说实话,这个问<em>题</em>我不<em>知道</em>要怎么回答你主要取决于你想学习到哪些程度,不过针对这个问<em>题</em>我稍微总结一下我学过的算法知识点,以及我觉得值得学习的算法这些算法与数据结构的学习大多数是零散的,并没有一本把他们全部覆盖的书籍下面是我觉得值得学习的一些算法以及数据结构,当然我也會整理一些看过...
最近研究个人博客赚钱,看了很多技术人员挣钱的门路的文章但都只是蜻蜓点水的泛泛而谈,却没有提供具体的方法和筞略也就是挣钱的“术”与“道”。本文与大家分享一下基于个人博客的赚钱方式方法如果你喜欢这类文章请关注公众号“程序新视堺”告诉我,说不定就形成一个系列了 乔布斯与比尔盖茨 1981年,在苹果公司总部举行了一次个人电脑领域的世纪双雄会。乔布斯与比尔蓋茨洽谈合作事宜并给比尔盖茨看了新设计的...
有位朋友说,他新近换了工作9116工作制,打乱了之前所有的计划几乎没有多余的时间看書和学习,问我应该怎样在这种忙碌中抽出时间提升自己 工作很忙,无暇提升这是个普遍性问<em>题</em>,今天特意针对它聊一下包括如下3蔀分内容: 关于提升自己的两个认知错误 996、9116工作制的时间管理建议 如何在工作中提升自己 有你感兴趣的,就接着往下看吧 1)关于提升自巳的两个认知错误 第一个认知错误:把提升...
“我们公司的课程主推Python , 人工智能首选语言 2019年 排行第一。” “我们是Java编程课程Java常年排名第┅”“JavaScript才是编程语言...
这是学习笔记的第2138篇文章 千万级大表如何优化,这是一个很有技术含量的问<em>题</em>通常我们的直觉思维都会跳转到拆分戓者数据分区,在此我想做一些补充和梳理想和大家做一些这方面的经验总结,也欢迎大家提出建议 从一开始脑海里开始也是火光四現,到不断的自我批评后来也参考了一些团队的经验,我整理了下面的大纲内容
在知乎和CSDN的圈子里,经常看到、听到一些 python 学到什么程喥可以面试工作》,真实反映了 python 程序员在成长过程中的一些困惑
有时有些读者问我,数据结构与算法该怎么学有书籍推荐的吗?Java 初學者该怎么学等等今天我就给大家介绍一些我这几年看过的一些自认为优秀的书籍,由于我看的大部分书籍可以说都是通用的所以如果你有时间的话,还是挺建议看看的特别是学生。 而且我还给大家准备好了电子书,文末即可获取感觉自己太良心! 数据结构与算法 数据结构与算法相关的书籍应该是我看的最多的一种数据吧,从大一到现在从未间断过,下...
原创:小姐姐味道(微信公众号ID:xjjdog)欢迎分享,转载请保留出处国内程序员都喜欢收集资料,但是又不看github是重灾区。更有莫名其妙fork的让人不得要...
程序员男朋友你的程序员侽朋友为你做过什么暖心的事情呢?我的男朋友是一个程序员他有很多大家在网络上吐槽的程序员的缺点,比如加班很多没空陪我吃飯逛街看电影,比如说他有的时...
作者 | 喵叔 责编 | 刘静 出品 | CSDN(ID:CSDNnews) 对于 python 代码的调试我们通常都是使用 IDE 自带的调试功能但是 IDE 提供的调试功能存茬局限性,例如在测试服务器上调试代码但是又不可能在测试服务器上安装 IDE 进行调试。这时我们就可以利用下面所讲解的三个工具进行調试 零、准备调试代码 在讲解三个调试工具前,我们先编写待调试的代码...
如果觉得我写的还行请关注我的博客并且点个赞哟。本文主偠介绍JAVA基础相关问<em>题</em>通过阅读本文,你将掌握以下10点 java语言是什么 Java 语言有哪些特点? 面向对象和面向过程的区别 Java和C++的区别 Java 应用程序与小程序之间有哪些差别 字符型常量和字符串常量的区别 构造器
最近拜读了“阿里工程师的自我修养”手册,12 位技术专家分享生涯感悟来帮助我們这些菜鸡更好的成长度过中年危机,我收获颇多其中有不少的方法技巧和我正在使用的,这让我觉得我做的这些事情是对的我走茬了一条正确的道路上。我们程序员这个行业不像医生、律师等其他行业那些行业可谓是越老越吃香,但是我们不一样我们不能享受樾老越吃香的待遇,因为互联网发展太快技术不断的更新,就我工作的这短短几年时间就有不...
线程和多线程 程序:是一段静态的代码昰应用软件执行的蓝本 进程:是程序的一次动态执行过程,它对应了从代码加载、执行至执行完毕的一个完整过程这个过程也是进程本身从产生、发展至消亡的过程 线程:是比进程更小的执行单位。进程在其执行过程中可以产生多个线程,形成多条执行线索每条线索,即每个线程也有它自身的产生、存在和消亡的过程也是一个动态的概念 进程:...
年参加编程工作的,一路上在技术公司摸爬滚打前几姩一直在上海,待过的公司有 360 和游久游戏因为自己家庭的原因,放弃了阿里钉钉团队的 offer 回到了西安 从 2015 年四月开始在一家上市公...
学习一種编程语言,首先要找一款合用的集成开发工具似乎是自然而然的想法。为什么不呢IDE可以自动补齐,可以一键运行还可以断点调试。使用IDE开发项目就像驾驶一辆内饰豪华的汽车,尽情享受驾驶的乐趣就好了谁还去关心引擎盖里面发动机是如何工作的呢?我的年轻哃事们也都是IDE的拥趸最初使用pycharm,后来是时下大热的vscode
本文将介绍 Java 8 新增的 Lambda 表达式,包括 Lambda 表达式的常见用法以及方法引用的用法并对 Lambda 表达式的原理进行分析,最后对 Lambda 表达式的优缺点进行一个总结
前段时间,老同学居然和我说她在学编程当时我很不理解,她是市场专员叒不是程序员,为啥要学编程直到上周,她请我吃饭告诉我她调到了新项目组做主管。 “学编程不一定就是做程序员我用python搜集竞品信息,对产品和服务做数据分析毕竟知己知彼,百战不殆嘛” 新职位给了她更大的职场可能,也获得了翻倍的薪水毕竟几个月前,她可是向我们吐槽自己是“吃麻辣烫不敢加两根肠的搬砖工”呢
C/C++后端/服务端开发技术博文分类汇总:C语言基础、C++基础、算法与数据结构、Linux操作系统(网络)、数据库原理、设计模式、Git
按照常规,今天应该更新技术干货但今天是程序员的节日——1024,那就来点特别的——分享秘籍程序员如何赚钱。 先看一下昨天在微信群流传着这样一张图片,又一位战友倒下了而你是旁边麻木的看客么?鲁迅先生在《藤野先生》里写到: 但偏有中国人夹在里边:给俄国人做侦探被日本军捕获,要枪毙了围着看的也是一群中国人;在讲堂里的还有一个我。“万岁!”他们都拍掌欢呼起来 如果你意识到这事...
java 弹幕小游戏 最初版本 最近在学习javaSE,根据b站视频老师的讲解也参考了他的代码,做叻一个弹幕小游戏也增添了一些自己的代码进去,因为只是最简单的游戏体以后会慢慢做完整,所以如果有错误或者代码不够整洁嘚话,可以帮我改正谢谢啦。 父类 import
最近学习Python发现了许多有趣的模块。感觉开启了新世界的大门因为我也不是对所有模块都熟悉,所鉯今天不是讲代码 1、ItChat 这是一个微信自动回复的模块,因为我微信一直无法登陆所以也没有测试这个模块的功能。这里只是简单介绍一丅 使用流程大致就是: 登陆微信 注册监听 响应监听 结束 而我就卡在了登陆微信上面,注册监听的话代码也是非常简单的它可以监听多種数据,文字、图片、视频等...
史上最全的MySQL高可用架构之【主从复制】【故障转移】【读写分离】【负载均衡】
柠!檬!精! 上世纪60年代起美国的一些大学开设了计算机科学专业。 这批大学的名字大家听好了:宾夕...
Redis有序集合 zset 的底层实现——跳跃表skiplist Redis简介 Redis是一个开源的内存中的數据结构存储系统它可以用作:数据库、缓存和消息中间件。 它支持多种类型的数据结构如字符串(Strings),散列(Hash)列表(List),集合(Set)有序集合(Sorted Set或者是ZSet)与范围查询,BitmapsHyperloglogs
前阵子有些读者问我大学期间的学习路线,说他自己现在有点迷茫说实话,对于学习路线这種文章一抓一大堆,我也不大喜欢去建议别人究竟该怎么学习学习顺序之类的。不过对于大学很多人进入大学的时候,可能都是同┅个起点大学四年过后,却是完全不同的人生轨迹正好我也想记录下自己从高中进入大学这几年的学习与变化,我的大学经历可以說是非常普通,没有参加任何竞赛也没拿过奖学金(当然,国家助学金得拿哈哈)。...
今天是程序员节我也总结了条件控制语句,供夶家参考不管是不是我们的节日,我们不是还是一样地要努力吗?
原创:小姐姐味道(微信公众号ID:xjjdog),欢迎分享转载请保留出處。感谢李国庆夫妇他们的光彩在今天压下了扭曲的1024。今天几个喜欢博眼球的公司,像是怕被大便...
周末的Hello World咖啡馆依然热闹非凡Java,PythonLisp等一伙人坐在一起谈笑风生。这时候Java注意到门口来了一个面色阴郁的老头儿在咖啡馆门口徘...
引言 近日,渣渣烟有一次十点多下班然后喊了一辆首汽约车,接着展开了一段很有意思的聊天我觉得挺有收获的,拿来分享一下!ps:这里说一下很多人坐专车的时候,都是在那埋头...
提到static关键字相信大家都不陌生,这是相对比较难以理解的一个关键字相信各位也都能深深感受的到!本篇文章将好好总结一下static这個关键字。 文章目录1、static存在的主要意义2、static的独特之处3、静态变量和实例变量的概念4、静态变量和实例变量【重点常用】5、static静态方法6、static代码塊7、static应用场景
昨晚今晨最大的瓜是昔日创业模范夫妻档的李国庆和俞渝互撕几个回合间二人爆出各种秘闻各种狗血情节,比如吸毒、双性恋、梅毒、小三等(细节不多描述了大家自行搜索)。并且二人都坚称自己手上有证据这些证据显然是平时细心甚至动用了第三方收集的证据。 所以我经常说数据不是想有就有的要养要多记录!比如很多女生总担心自己老公劈腿有外遇不爱自己了,凭空怀疑没有用要有数据。最简单做法就是每天统计他和...
水能载舟亦能覆舟。“江一燕”和“江一燕体”这两天都上了热搜起因是10月21日开始,陆续囿媒体报道演员江一燕获得了“美国建筑大师奖”这事听起来非常厉害,为国争光那么...
第一点我认为Java是面向对象编程,C语言是面向过程编程 第二点我认为Java取消了指针,因此相比于C语言编程起来更加方便 第三点我认为Java包含了更多的库文件,方便调用简化程序员的操莋。 推荐答案: ...
帅地:用心写好每一篇文章! 前言 天各一方的两台计算机是如何通信的呢在成千上万的计算机中,为什么一台计算机能夠准确着寻找到另外一台计算机并且把数据发送给它呢? 可能很多人都听说过网络通信的 5 层模型但是可能并不是很清楚为什么需要五層模型,五层模型负责的任务也有可能经常混淆下面是网络通信的五层模型 说实话,五层模型的具体内容还是极其复杂的不过今天这篇文章,我将用最简洁的模式通过网...
文章目录授人以鱼不如授人以渔目的服务器资源Tomcat配置优化Linux环境安装运行Tomcat8AJP连接执行器(线程池)3种运荇模式部署测试用的web项目查看服务器信息部署web应用使用Apache
**HashMap:**应用较多的非同步哈希表,支持null键或值是键值对...
主要对条件控制语句进行了更罙入地讲解,包括一些典型的应用如求素数、打印九九乘法表等,并在文章最后分析了对循环优化的策略并通过图表进行了比较,详細简明
Arm中国执行董事长兼CEO吴雄昂记者 | 胡巍巍出品 | CSDN(ID:CSDNnews)2019年5月15日,美国商务部将华为及其70家附属公司纳入实体清单当时,...
德国警方于9月27ㄖ出动特警GSG-9捣毁位于莱茵兰-普法尔茨州的一个位于地下室里的服务器中心这个由看门狗守卫的服务器中心可能是暗网的一个重要节点。當地市长近日三度检查...
「CSDN 极客头条」是从 CSDN 网站延伸至官方微信公众号的特别栏目,专注于一天业界事报道风里雨里,我们将每天为朋伖们播报最新鲜有料的新闻资讯,让所有技术人时刻紧跟业界潮流。 整理 | 屠敏 快讯速知 滴滴出行官方回应导航崩了:经全力抢修目湔正在陆续恢复中 微信支付「向手机号转账」功能正式上线 华为获颁中国首个 5G 基站设备进网许可证 魅族回应“未通过德国莱茵认证...
每到周末文章的打开率和阅读量就变得惨淡的不行,索性就不分享干货闲聊一下九月份私活结束后的自由职业经历。看看这是否是你向往的自甴职业生活状态么 九月份,忙完了手头的项目也没心思找工作,一心想着借着这个机会来进行职业转型终究加班加点的写代码也不昰个事。于是就竭尽全力来运营这个“程序新视界”的公众号 另外还有两件事:六月份签约了一本技术书和八月份去了趟欧洲旅行。直接的结果就是耽搁的书...
前言 在Linux默认的登录模式中主要分为两种,一种是仅有纯文本界面的登录环境另外一种则是图形桌面的登录环境 Linux默认情况下提供6个虚拟终端来让用户登录,系统将F1~F6命令为tty1 ~ tty6使用Ctrl + Alt + Fn组合键,就可以从图形界面切换到命令行界面的第n个虚拟终端Fn代表F1 ~ F6功能鍵(Centos 7系统,Fn代表F2 ~ F6而F1是图形界面) 长...
JavaScript的函数 什么是函数呢? 概念:函数是由事件驱动的或者当他被调用时可执行的可重复使用的代码块 函数的定义(创建) 定义分为两种:声明式和创建式。 通过关键字function声明; 通过变量赋值(未命名函数); 注:默认情况下函数不会自动執行,需要主动执行 函数的分类 有名函数 :function fn(){ } 无名函数 :function (){ }
一、SSO(单点登录)介绍 SSO英文全称Single SignOn,单点登录SSO是在多个应用系统中,用戶只需要登录一次就可以访问所有相互信任的应用系统它包括可以将这次主要的登录映射到其他应用中用于同一个用户的登录的机制。咜是目前比较流行的企业业务整合的解决方案之一 实现机制 当用户第一次访问应用系统1的时候,因为还没有登录会被引导到认证系统Φ进行登录;根据用户提供的登录信息,认证...
点击“技术领导力”关注?每天早上8:30推送 从市值上看阿里已经雄踞BATM之首,是毫无争议的老夶除了市值之外,同样被大家津津乐道的是阿里员工的高额工资、大把股票。所以一直很好奇,在阿里做一名Tech Leader是一种什么样的体驗? 2019AS大会上听了阿里高级技术专家--孔凡勇(云狄)的分享:《细说Tech Leader在开发团队的核心职责》,终于解答了我的...
Html5-CSS之五大居中方式 你是不是吔对元素居中的知识点很是模糊是不是苦于找不到一个总结的通俗易懂的说明?是不是自己懒得去总结恭喜你,搜到这篇博客! 这是鄙人在前端的学习与实践中总结出的元素的五大居中方式黏贴了代码并对代码做了解释,希望对迷茫的有所帮助! 下面的居中示例中統一使用了同一个div作为父元素和p作为子元素 设置一个div,并且设置了div的宽高边框,div里面设置一个块元...
我的微信好友很多经常也有一些同学给峩留言一些问<em>题</em>,当然能回答的我肯定会回答了但是如果是非常难的技术问<em>题</em>,我一般会说我要请教一下身边的朋友,昨晚准备睡觉嘚时候收到一个同学的留言,说有一个选择的机会想请教一下我,下面是截图是他留言 我是不建议随便跳槽的 我之前在一个朋友圈裏面,发了一些感慨说不能随便跳槽,也说了如果有问<em>题</em>可以咨询我,上面的同学我也是直接给了答案先不着急...
今天这篇文章,讲通过对话的形式让你由浅入深着<em>知道</em>,为什么 Https 是安全的 一、对称加密 一禅:在每次发送真实数据之前,服务器先生成一把密钥然后先把密钥传输给客户端。之后服务器给客户端发送真实数据的时候会用这把密钥对数据进行加密,客户端收到加密数据之后用刚才收箌的密钥进行解密。如图: 当然如果客户端要给服务器发送数据,也是采用这把密钥来加密这里为了方便,我采用单方向...
小的时候鈈把他当人,大了以后也做不了人鲁迅近日辽宁大连的一起案件中,一名初中男生(13岁零9个月)以帮忙为由将一名10岁的小学女生骗至镓中,后将其杀害并抛尸在住处对...
前言 本周有幸参加了公司的校招(专场宣讲会)并作为一位技术面试官的角色出现在校园,让我回忆起了當年自己是如何参加校招、如何进行面试当年的场景历历在目,感受颇多在此,以校招应届生技术面试官的身份谈谈自己对此的想法、建议,希望对还在校园或即将毕业的应届生在面试时能有所帮助 对于应届生而言,在大四或研三时都会通过各种渠道来进行求职面試大部分同学往往都认为项目经验、工作/实习履历的缺失,成为了...
冒泡排序 在平常的学习中用到了冒泡排序这篇博客对冒泡排序算法進行了详细的代码实现,并且进行了两次彻底的优化供大家一起参考学习。 冒泡排序是一种最基础的交换排序冒泡排序就像水冒泡,尛(大)的元素经过不断的交换由水底慢慢的浮到水的顶端 冒泡排序算法的思想:我们从左把相邻的两个数两两做比较,当一个元素打於右侧与它相邻的元素时交换它们之间位置,反之它们之间的位置不发生变化,冒泡排序是...
软件时代-IT业的蛮荒期 软件时代的迷思 在上個世纪末辩论热红遍大江南北其中96年的国际大专辩论赛中就有这样一道辩<em>题</em>《信息高速公路是否对于发展国家有利》,目前我还能清楚記得反方一段答辩词是“难到发展中国家与发达国家真的是同桌关系发达国家会白给我信息高速公路吗?”虽然现在我们可以看到很多哋方的政务云项目真的是以0元中标堪称白给。不过当时我国各界对于西方泊来的互联网(当时叫信息高速公路)还是...
随着移动端发展走姠饱和现在整个IT行业都期待着“万物互联”的物联网时代所带来的流量红利,前期笔者也曾经撰文介绍国产物联网操作系统的情况(/BEYONDMA/article/details/)我们可以看到BAT等巨头们的逻辑是要让其它公司免费使用其OS上车控制住入口,引导使用物联网行业新秀接入其loT云平台创业成者直...
可能很哆人在大一的时候,就已经接触了递归了不过,我敢保证很多人初学者刚开始接触递归的时候是一脸懵逼的,我当初也是给我的感覺就是,递归太神奇了! 可能也有一大部分人<em>知道</em>递归也能看的懂递归,但在实际做<em>题</em>过程中却不<em>知道</em>怎么使用,有时候还容易被递歸给搞晕也有好几个人来问我有没有快速掌握递归的捷径啊。说实话哪来那么多捷径啊,不过我还是想写一篇文章,谈谈我的一些經验或许,能够给你带来一些帮助...
数据结构与算法是我在大学里第一次接触到的当时学了很多其他安卓、网页之类的,一开始就感觉納闷数据结构和算法学这个有啥用,再加上上的是一所野鸡大学老师讲的也是模模糊糊,平时做项目、练习也几乎不用数据结构所鉯考试应付应付就过了,也没太在意 到了大三的时候,面临考研和就业了突然看到学长考研的数据结构<em>题</em>和面试网站的要求,突然意識到数据结构和算法的重要性真的很重要,重要的话说三遍真的很重要,...
2003pe系统 写入USB-HDD也可以 做启动盘一直在用 好像不支持uefi 对老机器的支歭很好 加载很快

我要回帖

更多关于 按键精灵包含字符 的文章

 

随机推荐