目录
第一部分 功能描述 1
第二部分 设计方案 1
一、 mylock 程序 1
二、 lock_guard 监控程序 3
第三部分 安全设计描述 4
一、 抗干扰设计 4
2、睡眠避干扰 4
据此,编写出用来 patch 的 python 脚本(嵌入式-Patch_nop+call.py): 6
4、看门狗及运行监视程序 7
5、冷热启动及初始化 8
对于逆向工程的防御: 17
对于爆破密码的防御: 18
1、 密钥文件再加密 18
2、 敏感变量及时清理 18
第四部分 软件设计 19
第五部分 设计总结 22
第一部分 功能描述
本次实验选题为基于密码访问的门锁系统,类似于现代智能家居中的智能门
锁。在本次实验中,我实现了通过键盘输入密码,若正确开启门锁(电机),若错误给出提示;并通过 LED 显示提示语以及密码输入的结果;还可以通过连续敲击特殊键,输入正确密码和新密码实现密码的更改。 本文转载自http://www.biyezuopin.vip/onews.asp?id=15598
第二部分 设计方案
为了达到实验目标,在本次实验中我编写了两个程序:主程序 mylock 以及监控程序 lock_guard,接下来分开介绍两个程序的设计方案。
一、 mylock 程序
使用了双线程,其中主线程负责接受输入以及进行 hash 校验等,led 线程负责控制 led 输出相应的提示语及结果。
主线程的主要架构如下(mylock/main.c):

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<sys/time.h>
#include<fcntl.h>
#include"lock_guard.h"//获取当前时间,精确到毫秒
long long getCurrentTime(void)
{struct timeval tv;gettimeofday(&tv, NULL);return tv.tv_sec * 1000 + tv.tv_usec / 1000;
}char last_wcd_buf[WCD_BUF_SIZE] = {};
int wcd_wait_time = 0;
int restart_time_sum = 0;
char keyfile_buf[MAX_FILE_SIZE];//检查看门狗缓冲区
// 0 正常 其他 静止
int check_wcd_buf(){char buf[WCD_BUF_SIZE];int fd, readfileflag;memset(buf, 0, sizeof(buf));fd = open(wcd_buf_fname, O_RDONLY);if(fd < 0){return -1;}//读取文件,并检测是否出错 readfileflag = read(fd, buf, WCD_BUF_SIZE);if(readfileflag <= 0){return -1;}close(fd);  if(strcmp(last_wcd_buf, buf) == 0){printf("[INFO]\tDetect wcd_buf unchange!\n");return 1;}memset(last_wcd_buf, 0, sizeof(last_wcd_buf));stpcpy(last_wcd_buf, buf);return 0;
}//检查keyfilecounter
int check_keyfile_counter(){unsigned char buf[KEYFILE_BUFF_SIZE];char tmp1[FILE_PATH_SIZE], tmp2[FILE_PATH_SIZE];int fd, readfileflag, i;memset(buf, 0, sizeof(buf));fd = open(KEYFILE_COUNTER_PATH, O_RDONLY);if(fd < 0){return -1;}//读取文件,并检测是否出错 readfileflag = read(fd, buf, KEYFILE_BUFF_SIZE);if(readfileflag <= 0){return -1;}close(fd); i=0;while(buf[i] == 0){if(buf[i] != MAX_CHANGE_KEYFILE[i])return 0;i++;}//达到更换的标准for(i=0; i<KEYFILE_NUM; i++){memset(keyfile_buf, 0, sizeof(keyfile_buf));file_cmp_read(KEY_FILE_PATH[i], keyfile_buf);//sprintf(tmp1, "touch ../mylock/keyfile/keyfile%d.new", i);sprintf(tmp1, "touch %s.new", KEY_FILE_PATH[i]);system(tmp1);//sprintf(tmp2, "rm ../mylock/keyfile/keyfile%d", i);sprintf(tmp2, "rm %s", KEY_FILE_PATH[i]);system(tmp2);//sprintf(tmp1, "mv ../mylock/keyfile/keyfile%d.new ../mylock/keyfile/keyfile%d", i, i);sprintf(tmp1, "mv %s.new %s", KEY_FILE_PATH[i], KEY_FILE_PATH[i]);system(tmp1);file_cmp_write(KEY_FILE_PATH[i], keyfile_buf);}return 0;
}int restart_process(){printf("[WARING]\tRestarting process\n");system("killall mylock");file_cmp(MYLOCK_AND_BAK_PATH, MYLOCK_FILE_CHECK_NUM);check_keyfile_counter();system("mylock/mylock");return 0;
}int reboot_machine(){printf("[ERROR]\tReboot Machine!\n");system("reboot");return 0;
}int main(){int count_wcd = 0;printf("[INFO] Lock_Guard Start!\n");while(1){if(getCurrentTime() % LOCK_GUARD_TIME_SLICE == 0){//检查缓冲区if(check_wcd_buf() == 0){wcd_wait_time = 0;restart_time_sum = 0;continue;}//buf无变化wcd_wait_time ++;if(wcd_wait_time > WCD_RESTART_TIME){//需要重启程序restart_process();wcd_wait_time = 0;restart_time_sum ++;//重启机器if(restart_time_sum > MAX_TIME_RESTART_FAIL){reboot_machine();}}}}return 0;
}


































基于嵌入式的密码访问的门锁系统相关推荐

  1. 车载DMI linux系统,基于嵌入式的CTCS3级车载DMI系统的设计与实现

    基于嵌入式的CTCS3级车载DMI系统的设计与实现 本文根据CTCS3级列控系统仿真实验室的实际情况,设计了一款基于嵌入式Linux操作系统的模拟CTCS3级车载DMI系统.它通过无线通信实现了车载与 ...

  2. 一种基于嵌入式的多重识别门禁系统设计方案

    一种基于嵌入式的多重识别门禁系统设计方案 1. 前言 门禁系统已广泛的应用在各行各业,随着社会经济的发展,人们对门禁系统的要求越来越高,设计更加安全.更加方便的门禁系统势在必行.由于不同企业对于门禁系 ...

  3. 嵌入式linux程序加密,基于嵌入式操作系统uClinux实现网络安全加密系统的设计

    金融安全支付系统是专门针对金融领域应用需求,实现小型化.便捷.安全的自助交易的软硬件平台,能够为多种应用提供高速安全服务,解决目前交易信息在传输过程中存在的各种安全问题,实现金融信息的安全交易.基于该 ...

  4. 基于嵌入式技术的网络视频监控系统

    随着计算机技术及网络技术的迅猛发展,世界掀起一股强大的数字化.网络化浪潮,对于公安.安防行业的发展,必须经历模拟数字混合的阶段,但是最终的趋势必然是全面数字化,即视频在前端进行数字化.网络化,采用嵌入 ...

  5. 二、Prometheus TLS加密认证和基于 basic_auth 用户名密码访问

    文章目录 Prometheus 基于用户名密码访问 1. `Node Export`端配置密码 2. 在被监控端这里生成密码 3. 在node_exporter中新增配置文件 4. node_expo ...

  6. 嵌入式linux界面开发,基于嵌入式Linux平台实现GUI系统的设计方案

    描述 嵌入式图形用户界面( GUI, Graphic UserInterface)系统作为嵌入式系统中的一大关键技术,为用户提供设备的控制接口,其性能的好坏,界面的美观程度,影响着用户对产品的购买意愿 ...

  7. 闸机安装linux系统,基于嵌入式Linux的闸机监控系统设计

    摘要: 闸机监控系统,因其具备安全防范和人员管理功能,而被广泛应用于工厂自动化.安全保卫.物流管理等行业.同时,随着射频身份识别(RFID)技术和嵌入式技术的广泛应用,将三者结合使用,必会极大地提高闸 ...

  8. 嵌入式linux作为hid设备,基于嵌入式系统的USB(HID)设备

    基于嵌入式系统的USB(HID)设备 目前嵌入式系统在数字化电子产品领域应用越来越广泛.随着其成本的降低,大有取代单片机的趋势. USB设备以其小巧.便携.即插即用.成本低廉等优势在当前的桌面应用中有 ...

  9. 开源毕业设计:基于嵌入式ARM-Linux的应用OpenCV和QT实现的人脸识别系统(源码+论文)

    毕业一载有余,把毕业设计作品分享一下,希望能帮助到有需要的同学们. 资料获取: 帮助/答疑/辅导...等请联系博主,请点如下链接: linux_face.txt · zengzr/share_cont ...

最新文章

  1. 论文排版之公式居中、编号右对齐
  2. JAVA--虚函数,抽象函数,抽象类,接口
  3. [转载] Java——toArray,集合转换为数组
  4. dos盘启动计算机,最新万能 DOS 启动盘制作全攻略(软盘+光盘+U盘+硬盘+NTFS+应急实用工具)...
  5. c++ 全局变量_专业解码 | 带你了解Python全局变量与局部变量!
  6. pyecharts显示所有x轴_基于Pyecharts可视化大屏案例一(1)
  7. 华为设备离线什么意思_华为手机中的P、Mate、nova分别是什么意思?看完你全懂了...
  8. 如何不装软件查看 Mac 温度?
  9. mysql命令常用参数实例讲解
  10. DreamWeaver CS3中的SPRY的自定义验证
  11. MCU固件升级的几种Flash划分方式
  12. HIBOX/OPENBOX接收JBS、蜻蜓的遥控器设置
  13. 数学速算法_孩子数学计算老出错?复习阶段,家长赶紧和孩子一起找准原因!...
  14. 干货 :送你一份使用k近邻算法实现回归的实用指南(附代码、链接)
  15. Web3:我们创造更好互联网的机会
  16. 神器啊,理工男的春天来了!
  17. 计算机正确的坐姿教案,小学信息技术第二册 正确坐姿和指法—基本键打字练习教案...
  18. Cordova 打包签名 Android release app
  19. 戴森Lightcycle Morph照明灯黑金版上市,中国大陆限量2000台
  20. 激动地心颤抖的手!终于迎接到数据仓库的开发快来参观

热门文章

  1. ceph(存储之块设备、文件系统、对象存储)
  2. 以下为一个有理数类,一个有理数由分子和分母组成,目前定义了一个输出函数 十七、编写一个加法函数,可以接收另一个有理数,与自身的值相加 十八、编写一个乘法函数,同理接收另一个有理数,与自身的值相乘
  3. 离散傅里叶(DFT) 与 快速傅里叶(FFT)
  4. 【PaddlePaddle论文复现】LARGE SCALE GAN TRAINING FOR HIGH FIDELITY NATURAL IMAGE SYNTHESIS阅读心得
  5. 使用MVC模式实现一个超简单的网上书店系统
  6. UE5 官方案例Lyra 全特性详解 12.背包系统Inventory System 1添加物品到背包
  7. FZU 1076 穿越沙漠(逆推建模)(数学)
  8. rust太阳能板发电教程_自制太阳能发电机详细教程(图文)
  9. 图片资源中总会出现thumb.db文件
  10. 华为时间管理之仁者见仁