2018-2019-1 实验二 固件程序设计

实验二  固件程序设计

小组成员

LJF、GJT

任务一 MDK

实验要求

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

实验步骤

  • 将"mdk474.exe"文件安装在自己创建的名为“Keil 4”的文件夹中
  • 在同一文件夹下安装ULINK 
  • 右键点击桌面上创建的快捷方式“Keil uVision4”,选择“以管理员身份运行”
  • 点击File->License Management…,在弹出的窗口中复制CID
  • 再运行 keil-MDK 注册机,粘贴 CID 并选择 ARM,然后点击 generate 生成 LIC

  • 将注册机生成的 LIC 复制到 keil4中的 LIC 输入框中,点击 Add LIC,破解完成

任务二

实验要求

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

实验步骤

  • 在"Keil 4"文件夹下安装 MDK-ARM_AddOn_SC000_Support.exe 文件
  • 以管理员身份运行“Keil uVision4”后,选择 Project——>New uVision Project新建工程
  • 在芯片库选择框选择Generic SC000 Device Database ,点击Ok

  • 点开 ARM 结构目录,选择 SC000,点击 OK,安装完成

  • 打开“Z32 开发指南\实验 1-LED 闪烁”目录的工程文件,编译主函数产生后缀名为.bin 的可执行代码
  • 用USB线连接电脑和试验箱,打开NZDloadTool.exe
  • 按住Reboot按钮的同时两次开关试验箱左上角部分的电源开关,Z32被识别,Download tool界面左侧显示已连接设备,然后浏览之前编译生成的.bin文件,点击下载

  • 对实验箱重新给电,即可观察到L2灯开始闪烁

代码分析

int main(void)
{
    SystemInit (); //系统中断向量设置,使能所有中断
    
    if(0 == GPIO_GetVal(0))
    {
        BtApiBack(0x55555555, 0xAAAAAAAA);
    }
    //判断按键,返回 boot 条件,确认是否进行程序下载;
    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    
    }
    //进入循环程序, LED 灯间隔 100ms 闪烁。
}

任务三

实验要求

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

实验步骤

  • 打开“UART发送与中断接收”目录下的Z32HUA.uvproj工程文件并编译,将生成的.bin文件下载到实验箱

  • 除了用USB公线连接电脑和实验箱外,还需要用9针串口线将 Z32 模块的串口与电脑USB接口连接
  • 在电脑上打开串口助手,选择对应的串口号,设置波特率为115200, 偶校验(Even),选中“发送新行”,然后打开串口
  • 对Z32重新给电,程序自动运行,可以在串口调试助手中看到PC机 串口接收到 Z32 串口发送来的信息

任务四

实验要求

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

国密即国家密码局认定的国产密码算法。

主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。

SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。

SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。

SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。

SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。

与密码学相对应的算法

国密算法对应密码学算法
SM1 AES算法(高级加密标准)
SM2 ECC (椭圆加密算法)
SM3 MD5 (信息摘要算法)
SM4 DES(数据加密标准)

image

任务五

实验要求

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

实验步骤

  • 打开“exp2\SM1”目录下的Z32HUA.uvproj工程文件并编译,将生成的.bin文件下载到实验箱
  • 用9针串口线将电脑与Z32部分连接
  • 打开sscom42.exe串口助手,完成相关设定后关闭再打开实验箱Z32部分的电源开关
  • 按照电子屏的提示插入IC卡。
  • 插入正确的卡后显示相应信息,然后按A校验密码
  • 按照步骤进行进一步的加解

遇到的问题与解决方案

1、无法接受串口信息

解决方案:发现没有接usb的数据线,接上后再重新操作开关两次后成功自动显示串口信息

2、无法接受字符串

解决方案:多次重新操作后成功

实验感悟

虽然实验内容比较复杂,但通过参考实验指导的PDF,按照步骤一步步细心地做,使得实验总体还是较为成功的。

此外,提前做好实验预习,看清实验要求,可以为我们节约很多时间,并提升实验的效率。

posted @ 2018-10-31 17:39  Iconic_V  阅读(182)  评论(0编辑  收藏  举报