fbpx
4.9 C
София

Най-интелигентната защита на флопи дискове – втора част

Най-четени

Даниел Десподовhttps://www.kaldata.com/
Ежедневен автор на новини. Увличам се от съвременни технологии, оръжие, информационна безопасност, спорт, наука и концепцията Internet of Things.

В първата част разгледахме различните защити срещу презапис на дискети, а сега нека се спрем на един интересен подход, който осигурява много добра защита на тези вече доста остарели, но още използвани носители на информация.

…Като погледнем процеса на зареждане с помощта на beebjit можем да видим какви са пресметнатите и очакваните дължини на пътечките (0x4A == 3122 байта).

Ето как изглежда прихващането от моя диск:

3F71: 4A 4D 4B 4A 4B 4D 4D 4A

Очаквано:

3D9B: 4A 4C 4B 4A 4B 4D 4C 4A

Както виждате, моето четене на диска почти изцяло съвпада с очакваното, с изключение на втората пътечка, където бяха прочетени 3125 байта вместо очакваните 3124. Но тази разлика е в предела на грешката ±1 и всичките 8 пътечки преминаха проверката.

Нека се спрем малко по-подробно: защитеният boot loader очаква, че дължината на пътечките от 1 до 8 (в байтове кодирана честотна модулация) би трябвало да бъде 3122, 3124, 3123, 3122, 3123, 3124, 3123, 3122. Това е едно невероятно ниво на точност и прецизност на записа за технологиите от 1985 година. Всеки байт на въртящия се диск е с продължителност около 64 микросекунди, но за флопидисковите устройства от тази година се указваше RPM отклонението (обороти в минута) „по-малко от  ±1,5%“. При 300 оборота в минута, ±1,5% са ±3 милисекунди на оборот! Как са се справяли с това технологиите от 1985 година?

Да обърнем специално внимание на контролерите WD1770 и Intel 8271. Ние се фокусирахме върху анализа на защитата с помощта на контролера WD1770. Дискетата без проблем се чете при използването на контролера Intel 8271, в който се използват съвършено други алгоритми със съвсем друг код, като дължината на пътечките се изчислява по косвен начин. Това е направено чрез използването на други допълнителни байтове, които се записват до края на пътечката – при този контролер се записват байтове със значение 0x00, а не стандартното значение 0xFF. Използва се четене с излизане извън границата на последния сектор на пътечката, като дължината на пътечката се определя при смяната на прочетените значения от 0x00 към 0xFF.

Гениалният ход

Ето за каква гениална идея става дума. Нека се запитаме, дали пътечките в дискетата изобщо не са се записвали с много голяма точност, понеже по това време подобни технологии все още не е имало? Дали не са записвали отделната пътечка по какъвто и да билодостъпен по това време начин, а след това са изучавали получения резултат? При използването на подобен метод няма значение дали пътечката е допълнена с 0x00 или с 0xFF. Уверен съм, че в тази защита се използва следното:

  • Форматиране на дискетата (това е всичко – достатъчно е най-обикновено форматиране на дискетата, за да се получи изключително сложна защита)
  • Прочитат се дължините на пътечките от първа до осма, които току-що за записани при форматирането
  • За всеки един от новоформатираните дискове се генерира и записва в деветата пътечка на дискетата криптираната информация за пътечките, откъдето boot loader-а чете тези данни за съответните очаквани дължини на пътечките

Наистина е хитро. Тези дискети са ужасно трудни за копиране, дори и ако се използва специализираното оборудване от тази ера. Всъщност този трик е толкова интелигентен и хитър, че заради него е необходимо да се върнем към самите основи за защита на дискетите. Ето какво казахме в първата част:

  • Дискът трябва лесно да се чете, но трудно да се презаписва

Но защитата на Western Security Ltd. лесно може да бъде копирана. Ето защо това правило трябва да се промени по следния начин:

  • Дискът трябва да може лесно да се чете и лесно да се презаписва, но копието няма нищо общо с оригинала и клонирането на подобна дискета е невъзможно

Точно топва прави защитата на Western Security Ltd. – дискетата лесно се чете, лесно се презаписва, но записаното не върши никаква работа. Въпреки това, аз намерих голям брой дискове, които имаха маркери на дубликатори на дискети, които обикновен се поставят от скъпите машини за копиране и дублиране на дискове. Но те със сигурност не са успели да създадат правилни копия на оригинала – не са могли да ги клонират.

По какъв начин можем да потвърдим тази теория? Например, да намерим втората дискета със същата игра The Wizard’s Revenge и да погледнем дали се различават. Намерих дискетата и да, те се различават. Моят първи диск, за който стана дума по-горе, изглежда по следния начин:

Track 0 sectors 10 length 3124 fixups 1 CRC32 2E6B86E9
Track 1 sectors 10 length 3122 fixups 0 CRC32 37E30EC8
Track 2 sectors 10 length 3125 fixups 1 CRC32 F7BDE89B
Track 3 sectors 10 length 3123 fixups 0 CRC32 BB1E32C3
Track 4 sectors 10 length 3122 fixups 1 CRC32 2EC84AF1
Track 5 sectors 10 length 3123 fixups 0 CRC32 58FD732B
Track 6 sectors 10 length 3125 fixups 0 CRC32 43416F5A
Track 7 sectors 10 length 3125 fixups 1 CRC32 B3D8AB10
Track 8 sectors 10 length 3122 fixups 1 CRC32 8D02AC32
Track 9 sectors 10 length 3125 fixups 1 CRC32 75B1F57B
Track 10 sectors 10 length 3123 fixups 1 CRC32 D2B0A1EF
[...]

Втората дискета:

Track 0 sectors 10 length 3126 fixups 1 CRC32 2E6B86E9
Track 1 sectors 10 length 3129 fixups 1 CRC32 37E30EC8
Track 2 sectors 10 length 3127 fixups 1 CRC32 F7BDE89B
Track 3 sectors 10 length 3127 fixups 1 CRC32 BB1E32C3
Track 4 sectors 10 length 3127 fixups 1 CRC32 2EC84AF1
Track 5 sectors 10 length 3129 fixups 1 CRC32 58FD732B
Track 6 sectors 10 length 3129 fixups 1 CRC32 43416F5A
Track 7 sectors 10 length 3128 fixups 1 CRC32 B3D8AB10
Track 8 sectors 10 length 3128 fixups 1 CRC32 8D02AC32
Track 9 sectors 10 length 3127 fixups 1 CRC32 1F5ABD44
Track 10 sectors 10 length 3128 fixups 0 CRC32 D2B0A1EF
[...]

Виждаме, че данните за секторите, показани в CRC32 на дискети те са еднакви, с изключение на деветата пътечка, на която е записана таблицата за очакваните дължини на пътечките. А дължините на самите пътечки са различни. И в двата случая има разлики в дължините на пътечките, като във втората дискета пътечките са малко по-дълги. Това означава, че флопидисковото устройство, на което са били форматирани тези дискети е работило с малко по-бавни обороти на въртене, което е дало възможност за записване на повече байтове за един оборот.

Не можах да разбера по какъв начин един скъп комерсиален дубликатор на дискети успява да се справи с тази защита. Намерих малко информация за скрипта Freeform, който се използва заедно с дубликаторите Trace. Не успях да намеря инструкции за този скриптов програмен език, но след декриптирането в паметта на зареждащата програма остават някакви странни фрагменти, които може би са свързани с тази защита:

3F80: 54 70 00 41 44 44 20 20 20 20 20 72 00 4D 4F 56 Tp.ADD r.MOV
3F90: 45 54 4F 20 20 74 00 55 4E 49 54 20 20 20 20 75 ETO t.UNIT u
3FA0: 00 54 52 41 43 4B 20 20 20 76 00 53 45 43 54 4F .TRACK v.SECTO
3FB0: 52 20 20 77 00 54 4F 50 54 52 41 43 4B 78 00 55 R w.TOPTRACKx.U

Клонирането на защитените от Western Security дискове

Намерих сред моите неща две много различни флопидискови устройства и реших да пробвам. Форматирах дискети с всяко едно от тях, а след това погледнах какви са дължините на пътечките в байтове, отчетени от контролера WD1772 в реалния компютър BBC Micro model B.

Първият претендент е моето флопидисково устройство Chinon F-051MD. То е много старо – само с 40 пътечки и може да записва само от едната страна. Добре се вижда големия DIP чип. Това е NEC D8048, който е копие на Intel 8048!

Вторият претендент, който не е мой. Това е Mitsuibish MF504C – много по-ново флопидисково устройство с 80 пътечки и двустранен запис. Чиповете са много по-съвременни, опроводяването е много по-добро, а стъпковият двигател е по-малък.

Дължината на пътечките от флопидисковото устройство Chinon F-051MD:

[...]
Track 1 sectors 10 length 3137 fixups 1 CRC32 67F0950E
Track 2 sectors 10 length 3138 fixups 1 CRC32 67F0950E
Track 3 sectors 10 length 3138 fixups 1 CRC32 67F0950E
Track 4 sectors 10 length 3139 fixups 1 CRC32 67F0950E
Track 5 sectors 10 length 3138 fixups 1 CRC32 67F0950E
Track 6 sectors 10 length 3140 fixups 1 CRC32 67F0950E
Track 7 sectors 10 length 3140 fixups 1 CRC32 67F0950E
Track 8 sectors 10 length 3139 fixups 1 CRC32 67F0950E
Track 9 sectors 10 length 3140 fixups 1 CRC32 67F0950E
Track 10 sectors 10 length 3140 fixups 1 CRC32 67F0950E
[...]

Дължината на пътечките от флопидисковото устройство Mitsubishi MF504C:

[...]
Track 1 sectors 10 length 3119 fixups 1 CRC32 67F0950E
Track 2 sectors 10 length 3119 fixups 1 CRC32 67F0950E
Track 3 sectors 10 length 3118 fixups 0 CRC32 67F0950E
Track 4 sectors 10 length 3119 fixups 1 CRC32 67F0950E
Track 5 sectors 10 length 3119 fixups 1 CRC32 67F0950E
Track 6 sectors 10 length 3119 fixups 1 CRC32 67F0950E
Track 7 sectors 10 length 3119 fixups 1 CRC32 67F0950E
Track 8 sectors 10 length 3119 fixups 1 CRC32 67F0950E
Track 9 sectors 10 length 3118 fixups 1 CRC32 67F0950E
Track 10 sectors 10 length 3119 fixups 1 CRC32 67F0950E
[...]

Тези две флопидискови устройства определено имат уникални „пръстови отпечатъци“! По-старото устройство има по-големи колебания в дължината на отделните пътечки. И още, изглежда че в последните сектори то може да запише повече байтове на една пътечка – повечето последни пътечки имат дължина от 3142 байта. Освен това, старото устройство може да събере 20 и дори малко повече допълнителни байтове на една пътечка. Това означава, че то се върти малко по-бавно.

По-новото флопидисково устройство работи като часовник с минимални флуктуации на пътечките. Но заради това то не е толкова подходящо за генериране на уникални за всяка дискета „пръстови отпечатъци“, но въпреки това клонирането на подобен диск на домашен компютър е невъзможно.

И последно, да погледнем дължините на пътечките от дискетата с играта Phantom Combat на компанията Doctor Soft. В тази дискета също се използва защитата на Western Security Ltd.:

Защитата на дисковете е показана във вид на лепенка с предупреждение за съвместимост.

[...]
Track 1 sectors 10 length 3152 fixups 0 CRC32 67F0950E
Track 2 sectors 10 length 3152 fixups 1 CRC32 67F0950E
Track 3 sectors 10 length 3152 fixups 0 CRC32 67F0950E
Track 4 sectors 10 length 3152 fixups 1 CRC32 67F0950E
Track 5 sectors 10 length 3151 fixups 0 CRC32 67F0950E
Track 6 sectors 10 length 3152 fixups 0 CRC32 67F0950E
Track 7 sectors 10 length 3150 fixups 0 CRC32 67F0950E
Track 8 sectors 10 length 3151 fixups 0 CRC32 67F0950E
[...]

Тази защита е скрита направо под носа ни. Това са осем защитени пътечки, които всъщност са пътечки със съвършено стандартно форматиране  (CRC32 67F0950E). Те имат стандартен брой сектори и няма премахнати сектори. Програмата discbeast ще ги покажа като зелени квадратчета и няма да забележи нищо необикновено.

Но дължината на пътечките леко се различава Освен това пътечките са необичайно дълги (в идеалния случай 3125 байта). Няма как да се разбере нарочно ли са записвани по-дълги пътечки, но това определено помага за по-добра защита на тези дискети. Едва ли има флопидисково устройство, което да се върти със същата скорост, която е с 0,8% по-ниска от стандартната, като при другите дискети може да се използва друга вариация на тази скорост. Наистина гениална защита срещу клониране на дискети.

Заключение

Дотук разгледахме една от най-мощните защити на дискети, създадена с BBC Micro model B. Дискетите се четат без проблем, могат да бъдат презаписвани, но копието въобще не съответства на оригинала и тяхното клониране е невъзможно с персонален компютър, а само със специализирана техника. Имам чувството, че дори и най-съвременното оборудване, като например това на Greaseweazle, ще има проблем с отгатването на необходимата скорост на въртене на шпиндела, с декриптирането на деветата пътечка и с възстановяването на оригиналните данни, за да може да се извърши клониране на защитен по този начин диск.

Абонирай се
Извести ме за
guest
3 Коментара
стари
нови
Отзиви
Всички коментари
Иван
Иван
10 месеца

99% от коментиращите тук шльоковци не са виждали дискета, да не говорим за флопи диск.

Бай Гадьо
Бай Гадьо
Отговор на  Иван
10 месеца

На времето когато започнаха да се появяват компакт флаш картите и бяха с размер 2 – 4 МБ се чудех кой ще си купи такова нещо при условие, че флопитата бяха по левче и по-добре да си купя четири флопита и да си запиша на тях каквото имам да пренасям от колкото да купувам нещо 10 пъти по скъпо. Малко лирично отклонение! 🙂

Надблюдател
Надблюдател
Отговор на  Бай Гадьо
8 месеца

то първата мп3ка плеър беше поне на мен една флашка с едно гнездо за батерия ААА и зареждаш в огромните 128Мегабайта мп3ки и слахаш алкална или кактото ААА имаш и флашката става на мини уокмен и слушаш музика към 10-15 часа но това значи да превърташ доста от песните – тогава стюардесите се чудеха какво имам 🙂 аз им казвам мп3 плеър а те гледат кат теле в железница – после и айпода умря. Инак – записа на специялна с друг формат пътечка на дискетата – примерно с един сектор в повече и той да пази данни (ако ги нема… Виж още »

Нови ревюта

Подобни новини