为adb与su添加登录流程

本文介绍如何在Android 5.1(rk3128平台)上为adb shell和su命令添加密码验证流程,以提高设备的安全性。通过实现MD5加密算法,确保密码的两重加密,并分别在adb服务端和服务端的su命令中实现了验证流程。错误和正确输入密码的执行结果进行了展示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为android设备 adb shell 与 su 命令 添加密码验证流程可以提高安全性。
本文实现平台为 rk3128,Android5.1。



设计思路

在这里插入图片描述



实现代码

  • 密码加密采用md5算法
    由于android5.1 openssl并没有实现md5算法,所以需要自己实现。
    有两种方式解决:
    一是移植完整的openssl代码;
    另一种就是直接实现md5算法。
    本文采用第二种方法,算法参见链接 android,openssl,MD5算法实现

  • 实现基础函数
#include <termio.h>
//#include <openssl/md5.h>
#include "md5.h"
#define PW_LEN    50
#define MD5_BUZ   33
int adb_pass = 0;
static char enter_pwd [PW_LEN] = {
   0};

/**
*  LINUX C实现密码输入不回显
*/
static int getch(void)
{
   
     struct termios tm, tm_old;
     int fd = 0, ch;
 
     if (tcgetattr(fd, &tm) < 0) {
   //保存现在的终端设置
          return -1;
     }
 
     tm_old = tm;
     cfmakeraw(&tm);//更改终端设置为原始模式,该模式下所有的输入数据以字节为单位被处理
     if (tcsetattr(fd, TCSANOW, &tm) < 0) {
   //设置上更改之后的设置
          return -1;
     }
 
     ch = getchar();
     if (tcsetattr(fd, TCSANOW, &tm_old) < 0) {
   //更改设置为最初的样子
          return -1;
     }
         
     return ch;
}

static void encrypt_md5(char * src, char * dest)
{
   	
    MD5_CTX md5_ctx;
    unsigned char md5[16];
    char md5_tmp[MD5_BUZ]={
   0};	

    //MD51
    MD5_Init(&md5_ctx); 	
    MD5_Update(&md5_ctx
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值