Линия SDA

Линия SDA — двунаправлена, обеспечивает и передачу, и прием. Линия SCL используется для управления направлением передачи данных: к устройству на положительном такте и от устройства — на отрицательном. Внутренняя организация памяти 24C01A — это 16 страниц по 8 байт, что также соответствует 128 байтам (такой же объем памяти, как и в 93LC46).

Функционально оба устройства (24xx и 93xx) ведут себя одинаково, однако технически — это разные устройства с разными эксплуатационными характеристиками. По этой причине не получится сохранить работоспособность CueCat, заменив в нем SOT23-память на SOIC. Зашитое в CueCat программное обеспечение требует применения одного конкретного типа последовательной ЭСППЗУ (93xx или 24xx).

В обоих случаях линия SDA в 24C01A и линия DO в 93LC46 подсоединяются к четвертому выводу образа SOIC на печатной плате, тем самым, вне зависимости от того, какой вариант корпуса установлен, перерезание дорожки, ведущей к четвертому контакту, приведет к тому, что ЭСППЗУ не сможет передавать уникальный серийный номер.

В PS/2-версии CueCat с двумя винтами соединение, ведущее от четвертого вывода, проходит, непосредственно под корпусом ЭСППЗУ. Тем самым, перерезать его можно только целиком, удалив микросхему (что само по себе привело бы к желаемому результату). Вместо этого для достижения той же самой цели у ЭСППЗУ перерезается вывод 1. Вывод 1 соответствует линии (CS), которая, в зависимости от подаваемого на вывод высокого или низкого уровня, включает или отключает ЭСППЗУ. Поскольку линия CS перерезана и у микропроцессора нет к ней доступа, микросхема ЭСППЗУ не может быть включена и, значит, не будет передавать или принимать информацию.

После сравнения содержимого последовательных ЭСППЗУ из нескольких CueCat было легко определить, где и каким способом осуществляется хранение уникального серийного номера.

Способ, примененный в версии PS/2 с четырьмя винтами, несколько отличается от способов, примененных в версии PS/2 с двумя винтами и в версии USB. В первом случае каждый хранящийся в ЭСППЗУ байт повторяется дважды, чтобы заполнить 16-битное слово. Этот факт вполне согласуется с тем, что в ЭСППЗУ четырехвинтового PS/2 CueCat на линию ORG подается высокий уровень, дающий команду к организации внутренней памяти в виде 64 страниц по 16 бит. Из-за наличия в ЗУ лишней памяти байты, возможно, повторялись для обнаружения ошибок или для каких-то иных целей. Каждый байт соответствует двум цифрам в серийном номере CueCat. Например, если байт содержит 16-ричное число 14, он означает две цифры — 1 и 4 — серийного номера.

Вот карта памяти для версии PS/2 с четырьмя винтами с серийным номером 000000000114555002:

00000000: 0000 0000 0000 0000 0101 1414 5555 5050  UUPP

00000010: 0202 FFFF AAFF AAFF AAFF AAFF AAFF AAFF 

00000020: AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 

00000030: AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 

00000040: AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 

00000050: AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 

00000060: AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 

00000070: AAAA AAAA AAAA AAAA AAAA AAAA AAAA AAAA 

И в двухвинтовой PS/2, и в USB-версиях на линию ORG последовательных ЭСППЗУ подается низкий уровень, включающий внутреннюю организацию памяти в виде 128 страниц по 8 бит (по 1 байту). Это упрощает задачу выявления серийного номера на карте памяти. Более того, серийный номер хранится прямо в ASCII-формате с порядком следования байтов начиная со старшего (англ. «big endian format», то есть в каждом слове сначала читается байт с меньшим адресом). Чтобы правильно прочесть настоящий серийный номер, нужно в каждом слове поменять первый и второй байты местами.

Ниже приведена карта памяти двухвинтового PS/2 CueCat с серийным номером 000000004767401401:

00000000 FFFF 3030 3030 3030 3030 3734 3736 3034 ..00000000747604

00000010 3431 3130 FFFF FFFF FFFF FFFF FFFF FFFF 4110

00000020 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000030 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000040 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000050 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000060 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000070 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

Далее приведена карта 000000005390946601: памяти USB-версии с серийным номером

00000000 FFFF 3030 3030 3030 3030 3335 3039 3439 ..00000000350949

00000010 3636 3130 FFFF FFFF FFFF FFFF FFFF FFFF 6610

00000020 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000030 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000040 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000050 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000060 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

00000070 FFFF FFFF FFFF FFFF FFFF FFFF FFFF FFFF 

Обсуждение закрыто.