На офіційному форумі raspberrypi.org "Дом" - модератор написав:
Я побив мою дошку, щоб мати ваш серійний номер
Як редагувати серійний номер Raspberry Pi?
/proc/cpuinfo
? Не впевнений, чи допоможе це краплями декодера ..
На офіційному форумі raspberrypi.org "Дом" - модератор написав:
Я побив мою дошку, щоб мати ваш серійний номер
Як редагувати серійний номер Raspberry Pi?
/proc/cpuinfo
? Не впевнений, чи допоможе це краплями декодера ..
Відповіді:
Я копіюю це з теми форуму .
Дом має доступ до всіх вихідних кодів, налагоджувального пристрою Videocore та безлічі закритих інструментів VC. І видача будь-якої інформації, яка дозволить вам змінити серійний номер, порушила б механізм ліцензування кодеків, тому це ніколи не відбудеться.
Додатково як розміщено в потоці. Єдиною причиною зміни серіалу було б скопіювати чужу ліцензію MP4 та використовувати її. Оскільки це безпека навколо ліцензування. Ваш унікальний серійний зв’язок пов’язаний з ліцензією MP4, тому навіть якщо хтось отримав ваш ліцензійний ключ, він не зможе нічого з цим зробити (якщо тільки вони не зможуть змінити серійний номер Raspberry Pi.
ОНОВЛЕННЯ: Щоб відповісти на актуальне запитання. Я б сказав, що в Dom є джерело фактичної прошивки низького рівня. Я б міг уявити, що він насправді просто змінює вихідний код, який читає серійний і змушує його повернути інше значення. Я чесно сумніваюся, що це насправді було змінено (на процесорі я маю на увазі), більше, як він змінив частину коду вбудованого програмного забезпечення, щоб повернути інший серійний. Також вибачте запитувача, ми просто дали вам "Чому? Це не приємно. Ваша крадіжка" замість того, щоб відповісти на питання. Моє ліжко.
Що стосується програм простору користувачів, їх досить просто обдурити і підробити вміст майже будь-якого файлу. Наприклад, припустимо, що програма C використовує /proc/cpuinfo
файл для перевірки серійного номера. Програма захищена від копіювання і прив’язана до серійного, і у мене немає вихідного коду. Однак я все одно можу бігти strace program 2>&1 | grep cpuinfo
, що виявить щось на кшталт:
open("/proc/cpuinfo", O_RDONLY) = 3
У цей момент я можу створити невелику бібліотеку cpuinfo.so
із наступною функцією:
int open(const char *file, int flags) {
static int (*real_open)(const char *file, int flags);
if(!real_open) real_open = dlsym(RTLD_NEXT, "open");
if(!strcmp(file, "/proc/cpuinfo")) file = "/tmp/cpuinfo";
return real_open(file, flags);
}
Як бачите, я перевіряю, чи намагається користувач бібліотеки відкритись /proc/cpuinfo
, і в цьому випадку я відкриваю /tmp/cpuinfo
замість цього.
Тоді я запускаю оригінальну захищену від копіювання програму як LD_PRELOAD=/path/to/cpuinfo.so program
, і вона із задоволенням прочитає мій підроблений файл, думаючи, що це /proc/cpuinfo
, працюючи правильно з іншими файлами.
Зауважте, що якщо програмне забезпечення, захищене від копіювання, включає об’єкти ядра, його дурити буде набагато складніше, оскільки він може отримати доступ до обладнання безпосередньо. Однак таке програмне забезпечення також працюватиме лише з ядром, для якого він був побудований, що робить його досить недоцільним для розповсюдження.