Техника защиты компакт-дисков от копирования

         

Соломона на основе пользовательских


    printf("+OK\n");

   

    // генерация кодов Рида- Соломона на основе пользовательских данных

    //-----------------------------------------------------------------------

    printf("RS-code generate...................");

    a = GenECCAndEDC_Mode1(user_data, stub_head, &raw_sector_for_damage);

    if (a == ElBy_SECTOR_ERROR) { printf("-ERROR!\x7\n"); return -1;}

    memcpy(&raw_sector_for_compre, &raw_sector_for_damage, RAW_SECTOR_SIZE);

    printf("+OK\n");

   

    // умышленное искажение пользовательских данных

    //------------------------------------------------------------------------

    printf("user-data %04d bytes damage........", N_BYTES_DAMAGE);

    for (a=0;a<N_BYTES_DAMAGE;a++) raw_sector_for_damage.USER_DATA[a]^=0xFF;

    if(!memcmp(&raw_sector_for_damage,&raw_sector_for_compre,RAW_SECTOR_SIZE))

         printf("-ERR: NOT DAMAGE YET\n"); else printf("+OK\n");

   

    // проверка целостности пользовательских данных

    //------------------------------------------------------------------------

    printf("user-data check....................");

    a = CheckSector((struct RAW_SECTOR*)&raw_sector_for_damage,ElBy_TEST_ONLY);

    if (a==ElBy_SECTOR_OK){

         printf("-ERR:data not damage\x7\n");return -1;}printf(".data damge\n");

   

    // восстановление пользовательских данных

    //------------------------------------------------------------------------

    printf("user-data recorver.................");

    a = CheckSector((struct RAW_SECTOR*)&raw_sector_for_damage, ElBy_REPAIR);

    if (a == ElBy_SECTOR_ERROR) {

         printf("-ERR: NOT RECORVER YET\x7\n"); return -1; } printf("+OK\n");

   

    // проверка успешности восстановления

    //------------------------------------------------------------------------

    printf("user-data recorver check...........");

    if(memcmp(&raw_sector_for_damage,&raw_sector_for_compre,RAW_SECTOR_SIZE))

         printf("-ERR: NOT RECORVER YET\x7\n"); else printf("+OK\n");

   

    printf("+OK\n");

    return 1;

}


Содержание  Назад  Вперед







Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий