/// <summary> /// change control block of sector /// </summary> public bool ChangeControlBlock(int sector, M1KeyMode keyMode, byte [] key, byte[] keyA, byte[] keyB) { if (!IsValidSector(sector)) { return(false); } int startBlockNo = ComputeStartBlockNo(sector); if (!Authen(keyMode, startBlockNo, key)) { logger.Debug("Can't authen with KeyMode=" + keyMode.ToString()); return(false); } return(dc_changeb3(this.hReader, (byte)(sector & 0xff), keyA, 0x04, 0x04, 0x04, 0x03, 0x00, keyB) == SUCC); }
public bool ChangeControlBlock2(int sector, M1KeyMode keyMode, byte[] key, byte[] keyA, byte[] keyB) { if (!IsValidSector(sector)) { return(false); } int startBlockNo = ComputeStartBlockNo(sector); int blockNum = ComputeBlockNum(sector); if (!Authen(keyMode, startBlockNo, key)) { logger.Debug("Can't authen with KeyMode=" + keyMode.ToString()); return(false); } byte[] cb = ByteUtil.Malloc(M1_BLOCK_LEN); Array.Copy(keyA, 0, cb, 0, 6); Array.Copy(controlBlock, 0, cb, 6, 4); Array.Copy(keyB, 0, cb, 10, 6); return(WriteBlock(startBlockNo + blockNum - 1, cb)); }