找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 854|回复: 6
打印 上一主题 下一主题
收起左侧

关于SD卡读写加密的研究

[复制链接]
跳转到指定楼层
楼主
ID:79094 发表于 2024-7-6 08:29 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
50黑币
空闲之余研究 手头有两张SD卡插上电脑能识别到 提示格式化  但格式化失败
用DiskGenius 打开显示扇区错误  经研究应该是 某些设备上的加密卡
根据下面资料 编写的代码   不能清除  请有经验的前辈 给与指导 万分感谢

资料1
卡擦除
使用CMD16设置Block长度为1;
发送CMD42命令:0x6A,0x00,0x00,0x00,0x00,0x95;
发送命令数据:0x08,0xFF,0xFF;
使用CMD16恢复原Block长度。

资料2
加密并上锁
给SD卡加密并上锁后,SD卡在没有解锁的情况下将不能被读写4:根据图2要上锁的命令为Bit2=1,设置密码的命令为Bit0-1,其它的位设置为O,即命令码为Ox05。在SD卡接受CMD42命令字前需要降低SPI的通信速度,这样才能更好的接受加密指令,SD卡在读写数据时块长度(block)为512Byte,但在写入密码前应通过CMD16命令字设置block长度为密码长度(PWD LEN)加上两个Byte即PWD LEN+2,在加密操作完成后恢复数据块长度512Byte。以设置密码为“123456”为例,加密并加锁的关键代码如下:
SPI_SetSpeed (Low)://设置SPI为低速通信模式
SD_SendCmd(CMD16, Ox08, Oxff);//设置blcok为8
SD_SendCmd (CMD42, Oxffffff, Ox95):11写入命令
SD;SPI_WriteByte (Oxfe)://数据命令盾牌
SD SPI_ WriteByte(Ox05)://设置密码,并给卡加锁
SD_SPI_WriteByte (Ox06);//密码长度
SD_SPI_WriteByte (Ox31);//写入密码123456
SD_SPI_ Wri'teByte (Ox32);
SD_SPI:WriteByte (Ox33);
SD_SPI-WriteByte( Ox34);
SD SPI_ WriteByte(Ox35);
SD SPI- WriteByte(Ox36);
SD SPI_WriteByte(Oxff)://写两字节的CRC校验
SD SPI WriteByte(Oxff)
SD SendCmd (CMD16, Ox200, Oxff)://恢复block
SPI_SetSpeed (High);//恢复SPI为高速通信模式



这里是根据参考资料编写的代码
unsigned char SD_cmd42()
{  
unsigned char time,temp;
unsigned char cmd16[] = {0x50,0x00,0x00,0x00,0x01,0x01};
unsigned char cmd42[] = {0x6a,0x00,0x00,0x00,0x00,0x95};
SD_CS=0;
time=0;

do
{
   
  temp=SD_Write_Cmd(cmd16);//写入CMD16
  temp=SD_Write_Cmd(cmd42);//写入CMD42
  SD_spi_write(0xfe); //起始令牌
  SD_spi_write(0x08); //解除锁命令码
  SD_spi_write(0xff); //crc
  SD_spi_write(0xff); //crc
  time++;
  delay(5000); //延时便于观察循环次数
  LED_4 = ~LED_4;//
  if(time==200) //循环200次
  {
    LED_R = 0;  //错误点亮红led 和第四个led
    LED_4 = 0;
      return 1;  //结束程序并返回1 写入失败
  }
}while(temp!=0x00);//响应r1  这里不确定是不是0x00  知道的请告知下
LED_4 = 0;//正常点亮第四个led


SD_CS=1;
SD_spi_write(0xff); //按照SD卡的操作时序在这里补8个时钟
return 0;//返回0,
}


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:43600 发表于 2024-7-7 02:46 | 只看该作者
一般都是針對檔案來加密,對於sd的底層操作來做加密,恐怕是專屬某些廠商的非國際標準操作,除了花錢請那些廠商來處理,否則恐怕無人可解。
回复

使用道具 举报

板凳
ID:79094 发表于 2024-7-7 21:47 | 只看该作者
hclin 发表于 2024-7-7 02:46
一般都是針對檔案來加密,對於sd的底層操作來做加密,恐怕是專屬某些廠商的非國際標準操作,除了花錢請那些 ...

感谢回复  这个是SD卡自带的一项功能简单来说就是 打开sd卡时要输入密码    用cdm42 增加密码 或是清除密码   
回复

使用道具 举报

地板
ID:844772 发表于 2024-7-8 10:08 | 只看该作者
如果研究这个加密原理,意义不大啊,这个加密没有数学加持,难度不大;如果为了格式化可以用行命令处理或干脆使用三方软件,它改写了目录扇区,没法高级格式化了。
回复

使用道具 举报

5#
ID:79094 发表于 2024-7-8 13:08 | 只看该作者
glinfei 发表于 2024-7-8 10:08
如果研究这个加密原理,意义不大啊,这个加密没有数学加持,难度不大;如果为了格式化可以用行命令处理或干 ...

感谢回复  确实是只想格式化成正常的sd卡
命令行试过不行
有什么软件推荐下可以吗
回复

使用道具 举报

6#
ID:69038 发表于 2024-7-8 15:03 | 只看该作者
直接用DiskGenius 重建分区一下就OK了。
那怕加密18层都可以,除非是SD卡挂了。。
回复

使用道具 举报

7#
ID:79094 发表于 2024-7-9 08:52 | 只看该作者
zhuls 发表于 2024-7-8 15:03
直接用DiskGenius 重建分区一下就OK了。
那怕加密18层都可以,除非是SD卡挂了。。

试过了 提示扇区错误
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表