美文网首页
硬件物料有问题导致无法烧写安全key,改为安全key(A50)

硬件物料有问题导致无法烧写安全key,改为安全key(A50)

作者: gale_小米 | 来源:发表于2021-09-01 09:28 被阅读0次

烧写模式决定烧号工具把 key 信息存储到设备端的物理位置:(可以串口连接方式来调试)

私有 key:存储在私有逻辑分区,该分区的数据无法通过重刷固件来重置,但可以在系统层进行挂载操作。

安全 key:存储在物理分区,该分区的数据无法通过重刷固件来重置,只能使用烧号工具进行操作。

混合 key:包含私有 key 和安全 key,配置子项为私有 key 或者安全 key。

Index: lichee/brandy/u-boot-2014.07/board/sunxi/common/board_common.c

===================================================================

--- lichee/brandy/u-boot-2014.07/board/sunxi/common/board_common.c (revision 9678)

+++ lichee/brandy/u-boot-2014.07/board/sunxi/common/board_common.c (revision 9704)

@@ -837,11 +837,14 @@

#endif

#ifdef CONFIG_SUNXI_MAC

+ pr_error("CONFIG_SUNXI_MAC\n");

extern int update_sunxi_mac(void);

update_sunxi_mac();

#endif

#ifdef CONFIG_SUNXI_SERIAL

+ pr_error("CONFIG_SUNXI_SERIAL\n");

+ extern int sunxi_set_serial_num(void);

sunxi_set_serial_num();

#endif

return 0;

Index: lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_serial.c

===================================================================

--- lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_serial.c (revision 9678)

+++ lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_serial.c (revision 9704)

@@ -28,7 +28,7 @@

char *bmp_argv[6] = { "fatload", "sunxi_flash", part_info,

addr_info, file_info, NULL };

- ret = script_parser_fetch("serial_feature", "sn_filename",

+ ret = script_parser_fetch("serial_feature", "snum_filename",

(int *)file_info, sizeof(file_info)/4);

if ((ret < 0) || (strlen(file_info) == 0)) {

pr_notice("sunxi_serial: sn_filename is not set\n");

@@ -144,19 +144,20 @@

int sunxi_set_serial_num(void)

{

+ printf("sunxi_set_serial_num\n");

char serial[128] = {0};

char* p = NULL;

-

- p = getenv("snum");

- if (p != NULL)

- return 0;

-

+

if (get_serial_num_from_file(serial))

get_serial_num_from_chipid(serial);

- pr_msg("serial num is: %s\n", serial);

- if (setenv("snum", serial))

+ pr_error("serial num is: %s\n", serial);

+ if (setenv("snum", serial)){

pr_error("error:set env snum fail\n");

-

+ //优先读取私有key,没有再读取安全key

+ p = getenv("snum");

+ if (p != NULL)

+ return 0;

+ }

return 0;

}

Index: lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_serial.h

===================================================================

--- lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_serial.h (revision 9678)

+++ lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_serial.h (revision 9704)

@@ -2,7 +2,7 @@

#ifndef SUNXI_SERIAL_H_H_

#define SUNXI_SERIAL_H_H_

-int sunxi_set_serial_num(void);

+extern int sunxi_set_serial_num(void);

#endif

Index: lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_mac.c

===================================================================

--- lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_mac.c (revision 9678)

+++ lichee/brandy/u-boot-2014.07/board/sunxi/common/sunxi_mac.c (revision 9704)

@@ -7,6 +7,7 @@

  */

#include <common.h>

#include <smc.h>

+#include "sunxi_string.h"

#include <u-boot/md5.h>

#include <sunxi_board.h>

#include <sys_partition.h>

@@ -99,11 +100,22 @@

/* get data from file */

sprintf(part_info, "%x:0", partno);

sprintf(addr_info, "%lx", (ulong)mac);

- if (do_fat_fsload(0, 0, 6, bmp_argv)) {

- pr_error("load file(%s) error.\n", bmp_argv[4]);

- return -1;

+

+ pr_error("filename : %s\n", filename);

+ if( strcmp(filename,"imei")==0 || strcmp(filename,"snum")==0){

+ if (do_fat_fsload(0, 0, 5, bmp_argv)) {

+ printf("load file(%s) error\n", bmp_argv[4]);

+ return -1;

+ }

+ //mac[16] = 0;

+ }else{

+ if (do_fat_fsload(0, 0, 6, bmp_argv)) {

+ pr_error("load file(%s) error.\n", bmp_argv[4]);

+ return -1;

+ }

+ mac[18] = 0;

}

- mac[18] = 0;

+ pr_error("strcmp : %s=%s\n", filename, mac);

return 0;

}

@@ -110,31 +122,44 @@

int update_sunxi_mac(void)

{

- char addr_str[128] = {0};

+

+ pr_error("update_sunxi_mac\n");

+

char *p = NULL;

int i = 0;

char *envtab[] = {

+ "snum",

+ "imei",

"mac",

"wifi_mac",

- "bt_mac",

- "imei"};

+ "bt_mac"};

- int checktab[] = {1, 1, 0, 1};

+ int checktab[] = {1,1,1, 1, 0};

for (i = 0; i < sizeof(envtab) / sizeof(envtab[0]); i++) {

+

+ char addr_str[128] = {0};

+

+ if( strcmp(envtab[i],"imei")==0 || strcmp(envtab[i],"snum")==0){

+ if (get_macaddr_from_file(envtab[i], addr_str) == 0) {

+ setenv(envtab[i], addr_str);

+ pr_error("Private key: %s=%s\n", envtab[i], addr_str);

+ continue;

+ }

+ }else if ((get_macaddr_from_file(envtab[i], addr_str) == 0) &&

+ (addr_parse(addr_str, checktab[i]) == 0)) {

+ setenv(envtab[i], addr_str);

+ pr_error("Private key: %s=%s\n", envtab[i], addr_str);

+ continue;

+ }

+

+ //修改默认读取私有key

p = getenv(envtab[i]);

if ((p != NULL) && (addr_parse(p, checktab[i]) == 0)) {

pr_error("Secure key: %s=%s\n", envtab[i], p);

continue;

}

-

- if ((get_macaddr_from_file(envtab[i], addr_str) == 0) &&

- (addr_parse(addr_str, checktab[i]) == 0)) {

- setenv(envtab[i], addr_str);

- pr_error("Private key: %s=%s\n", envtab[i], addr_str);

- continue;

- }

pr_error("Ignore key:%s=%s\n", envtab[i], p);

}

相关文章

  • 硬件物料有问题导致无法烧写安全key,改为安全key(A50)

    烧写模式决定烧号工具把 key 信息存储到设备端的物理位置:(可以串口连接方式来调试) 私有 key:存储在私有逻...

  • AWS KMS介绍及其用法

    什么是KMS KMS是AWS提供的中心化的key托管服务,它使用硬件安全模块 (HSM)保护密钥安全。它可以被集成...

  • HashMap学习

    概述 线程非安全,并且允许key与value都为null值,HashTable与之相反,为线程安全,key与val...

  • Aleo介绍

    Aleo允许构建高效,安全和匿名的应用。 基本概念 账户 账户包括 private key, view key ...

  • 从零学stm32_按键检测

    按键检测的硬件电路连接如下: KEY0,KEY1,KEY2 ,KEY_UP 都要设置成输入模式。 KEY0,KEY...

  • GitHub 的设置

    2. 为 GitHub 账号设置 SSH Key 为-GitHub-账号设置-SSH-Key) 出于安全考虑,Gi...

  • MD5加密方案

    方案一:直接 MD5 (不够安全)pwd = pwd.md5String; 方案二: MD5 + key(key...

  • 【020】你发过短性息吗|How to practice saf

    Speaker:Amy Adele Hasinoff Key words:性 安全 数字隐私 Abstract:演...

  • S/Kademlia2007 翻译

    S/Kademlia:实现安全Key路由的可行方法 摘要 安全性是完全分散式P2P系统中的常见问题。 尽管关于如何...

  • linux 禁用root用户密码认证登陆

    目的:为了服务器安全,禁止root密码认证登陆(不是禁用root用户),使用ssh key认证 注 :远程无法使...

网友评论

      本文标题:硬件物料有问题导致无法烧写安全key,改为安全key(A50)

      本文链接:https://www.haomeiwen.com/subject/fihxwltx.html