標(biāo)題: 關(guān)于SD卡讀寫加密的研究 [打印本頁]
作者: xiaoyao166ny 時間: 2024-7-6 08:29
標(biāo)題: 關(guān)于SD卡讀寫加密的研究
空閑之余研究 手頭有兩張SD卡插上電腦能識別到 提示格式化 但格式化失敗
用DiskGenius 打開顯示扇區(qū)錯誤 經(jīng)研究應(yīng)該是 某些設(shè)備上的加密卡
根據(jù)下面資料 編寫的代碼 不能清除 請有經(jīng)驗(yàn)的前輩 給與指導(dǎo) 萬分感謝
資料1
卡擦除
使用CMD16設(shè)置Block長度為1;
發(fā)送CMD42命令:0x6A,0x00,0x00,0x00,0x00,0x95;
發(fā)送命令數(shù)據(jù):0x08,0xFF,0xFF;
使用CMD16恢復(fù)原Block長度。
資料2
加密并上鎖
給SD卡加密并上鎖后,SD卡在沒有解鎖的情況下將不能被讀寫4:根據(jù)圖2要上鎖的命令為Bit2=1,設(shè)置密碼的命令為Bit0-1,其它的位設(shè)置為O,即命令碼為Ox05。在SD卡接受CMD42命令字前需要降低SPI的通信速度,這樣才能更好的接受加密指令,SD卡在讀寫數(shù)據(jù)時塊長度(block)為512Byte,但在寫入密碼前應(yīng)通過CMD16命令字設(shè)置block長度為密碼長度(PWD LEN)加上兩個Byte即PWD LEN+2,在加密操作完成后恢復(fù)數(shù)據(jù)塊長度512Byte。以設(shè)置密碼為“123456”為例,加密并加鎖的關(guān)鍵代碼如下:
SPI_SetSpeed (Low)://設(shè)置SPI為低速通信模式
SD_SendCmd(CMD16, Ox08, Oxff);//設(shè)置blcok為8
SD_SendCmd (CMD42, Oxffffff, Ox95):11寫入命令
SD;SPI_WriteByte (Oxfe)://數(shù)據(jù)命令盾牌
SD SPI_ WriteByte(Ox05)://設(shè)置密碼,并給卡加鎖
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)://寫兩字節(jié)的CRC校驗(yàn)
SD SPI WriteByte(Oxff)
SD SendCmd (CMD16, Ox200, Oxff)://恢復(fù)block
SPI_SetSpeed (High);//恢復(fù)SPI為高速通信模式
這里是根據(jù)參考資料編寫的代碼
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); //延時便于觀察循環(huán)次數(shù)
LED_4 = ~LED_4;//
if(time==200) //循環(huán)200次
{
LED_R = 0; //錯誤點(diǎn)亮紅led 和第四個led
LED_4 = 0;
return 1; //結(jié)束程序并返回1 寫入失敗
}
}while(temp!=0x00);//響應(yīng)r1 這里不確定是不是0x00 知道的請告知下
LED_4 = 0;//正常點(diǎn)亮第四個led
SD_CS=1;
SD_spi_write(0xff); //按照SD卡的操作時序在這里補(bǔ)8個時鐘
return 0;//返回0,
}
作者: hclin 時間: 2024-7-7 02:46
一般都是針對檔案來加密,對於sd的底層操作來做加密,恐怕是專屬某些廠商的非國際標(biāo)準(zhǔn)操作,除了花錢請那些廠商來處理,否則恐怕無人可解。
作者: xiaoyao166ny 時間: 2024-7-7 21:47
感謝回復(fù) 這個是SD卡自帶的一項(xiàng)功能簡單來說就是 打開sd卡時要輸入密碼 用cdm42 增加密碼 或是清除密碼
作者: glinfei 時間: 2024-7-8 10:08
如果研究這個加密原理,意義不大啊,這個加密沒有數(shù)學(xué)加持,難度不大;如果為了格式化可以用行命令處理或干脆使用三方軟件,它改寫了目錄扇區(qū),沒法高級格式化了。
作者: xiaoyao166ny 時間: 2024-7-8 13:08
感謝回復(fù) 確實(shí)是只想格式化成正常的sd卡
命令行試過不行
有什么軟件推薦下可以嗎
作者: zhuls 時間: 2024-7-8 15:03
直接用DiskGenius 重建分區(qū)一下就OK了。
那怕加密18層都可以,除非是SD卡掛了。。
作者: xiaoyao166ny 時間: 2024-7-9 08:52
試過了 提示扇區(qū)錯誤
歡迎光臨 (http://www.torrancerestoration.com/bbs/) |
Powered by Discuz! X3.1 |