• 2019-2020-1 20175203 20175206 实验二 固件程序设计


    实验二 固件程序设计-1-MDK

    0. 注意不经老师允许不准烧写自己修改的代码
    1. 三人一组
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.1-1.5安装MDK,JLink驱动,注意,要用系统管理员身分运行uVision4,破解MDK(破解程序中target一定选ARM)
    3. 提交破解程序中产生LIC的截图
    4. 提交破解成功的截图

    • 破解方式与诸多软件破解方式类似,将网卡信息拉入注册机进行分析,即所谓的CID码,将CID码输入注册机,得到LIC码反输入软件即可破解:
    • MDK成功破解截图如下:

    实验二 固件程序设计-2-LED

    0. 注意不经老师允许不准烧写自己修改的代码
    1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.9”完成LED实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
    3. 实验报告中分析代码

    • 按照信息安全系统实验箱指导书安装芯片库即可,需要注意以管理员的身份运行软件即可完成:
    • LED灯闪烁效果:
    • Z32下载成功界面:
    • Main.c代码如下:
    #include "Main.h"
    #include "BootApi.h"
    #include "Gpio.h"
    int main(void)
    {
    /*********************此段代码勿动***********************/
    //系统中断向量设置,使能所有中断
      SystemInit ();
    // 返回 boot 条件
      if(0 == GPIO_GetVal(0))
      {
          BtApiBack(0x55555555, 0xAAAAAAAA);
      }
    /*********************此段代码勿动***********************/
      GPIO_PuPdSel(0,0); //设置 GPIO0 为上拉
      GPIO_InOutSet(0,0); //设置 GPIO0 为输出
      while(1)
      {
          delay(100);
          GPIO_SetVal(0,0); //输出低电平,点亮 LED
          delay(100);
          GPIO_SetVal(0,1); //输出高电平,熄灭 LED 
      }
    }
      //延时函数,当系统时钟为内部 OSC 时钟时,延时 1ms
    void delay(int ms)
    {
      int i;
      while(ms--)
      {
          for(i=0;i<950;i++) ;
      }
    }
    
    • 分析代码:
      代码中delay(100)意思为LED 灯间隔 100ms 闪烁
    • SystemInit ();意思为判断按键,返回 boot 条件,确认是否进行程序下载

    实验二 固件程序设计-3-UART

    0. 注意不经老师允许不准烧写自己修改的代码
    1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.0”完成UART发送与中断接收实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
    3. 实验报告中分析代码

    • 芯片库安装:
    • Z32下载成功截图:
    • 运行截图:(UART发送与中断接收)
    • 代码分析:
      默认波特率为115200
    void UART_BrpSet(UINT16 set)
    {
    	UINT16 brp=0;
        UINT8 fd=0; 
        if(0 == set)
        {
        	//uartband@115200bps
         	fd = SCU->UARTCLKCR & 0x80; 
         	switch(fd)
            {
            	case 0x80:		  /*ÍⲿʱÖÓ12M¾§Õñ*/
                	brp = 0x0068;
                	break;
                case 0x00:		  /*ÄÚ²¿Ê±ÖÓ*/
    				brp = 0x00AD;  
                    break;		  
                default:
                   	brp = 0x00AD;
                    break;
            }
    	 	fd = SCU->UARTCLKCR & 0x7f ; 
    	   	brp =	brp/(fd+1);
        }
        else
        {
        	brp = set;
        }
    	UARTBRPH = (UINT8)((brp >> 8) & 0xFF);
        UARTBRPL = (UINT8)((brp) & 0xFF);
    }
    

    实验二 固件程序设计-4-国密算法

    0. 网上搜集国密算法标准SM1,SM2,SM3,SM4
    1. 网上找一下相应的代码和标准测试代码,在Ubuntu中分别用gcc和gcc-arm编译
    2. 四个算法的用途?
    3. 《密码学》课程中分别有哪些对应的算法?
    4. 提交2,3两个问题的答案
    5. 提交在Ubuntu中运行国密算法测试程序的截图

    • 四个算法的用途与密码学中对应算法:
      SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。用途:芯片、智能IC卡、智能密码钥匙、加密卡、加密机等安全产品,广泛应用于电子政务、电子商务及国民经济的各个应用领域(包括国家政务通、警务通等重要领域)。《密码学》课程对应算法:DES,AES
      SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。用途:密钥管理,数字签名,电子商务,PKI,信息及身份认证等信息安全应用领域《密码学》课程对应算法:ECC椭圆曲线算法
      SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。用途:商用密码应用中的数字签名和验证,消息认证码的生成与验证以及随机数的生成。《密码学》对应算法:SHA系列算法,MD系列算法、MAC
      SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。用途:无线局域网产品, 用于实现数据的加密/解密运算,以保证数据和信息的机密性。
      《密码学》对应算法:DES,AES
    • 国密在Ubuntu测试程序截图:

    实验二 固件程序设计-5-SM1

    0. 注意不经老师允许不准烧写自己修改的代码
    1. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.4” KEIL-MDK 中添加 Z32 SC-000 芯片库,提交安装截图
    2. 参考云班课资源中“信息安全系统实验箱指导书.pdf “第一章,1.16”完成SM1加密实验,注意“打开Z32的电源开关前,按住Reboot按键不放,两次打开电源开关,Z32即可被电脑识别,进行下载调试。提交运行结果截图
    3. 实验报告中分析代码

    • 芯片库安装:
    • IC卡插入后的反应:
    • SM1加密Z32截图与使用串口调试的截图:

    实验二 固件程序设计-6-清理

    0. 只有用实验室机器的小组做
    1. 提交你们小组使用的计算机的编号照片
    2. 提交插好网线的照片
    3. 提交盖好后盖的照片

    实验后清理截图:

    • 实验结束,进行反思,给出实验报告,完成本次实验所有内容
  • 相关阅读:
    mysql数据库分区功能及实例详解
    Mysql线程池优化笔记
    mariadb multi-source replication(mariadb多主复制)
    mysql---二进制日志
    MySQL binlog_format (Mixed,Statement,Row)[转]
    如何生成唯一的server Id,server_id为何不能重复?
    mysql复制过程中的server-id的理解
    MySQL参数:innodb_flush_log_at_trx_commit 和 sync_binlog
    Mysql 用户和权限管理
    B+树索引和哈希索引的区别[转]
  • 原文地址:https://www.cnblogs.com/ldc175206/p/11862881.html
Copyright © 2020-2023  润新知