コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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));
        }