Потрошение Videocrypt-а - стр. 6 - Обсуждение систем условного доступа(CA) - YARIK-SAT

закрыть X

### Опции скрытого текста

%field должно быть только числовым
%field необходимо
По меньшей мере, один параметр требуется

Следующие ошибки возникли при попытке отправки сообщения:

Скрыть по количеству сообщений
Требуется сообщений
Скрыть от гостей
Скрыть от всех групп, кроме выбранных
Группы
Глобальный модератор
Модератор раздела
Новичок
Начинаю писать
Постоялец
Знающий
Старожил
Модератор
ВИП
Ветеран
Неприкасаемый
Проходил мимо
Прохожий
Друзья
Новичок
Ветераны форума
Новичок
Скрыть по количеству Спасибо поставленных пользователю
Кол-во сказанных пользователю Спасибо
Скрыть пока не скажут Спасибо
« предыдущая тема следующая тема »
Страницы: « 1 ... 4 5 6 7 8 ... 12 » Вниз

# Потрошение Videocrypt-а

- 115 Ответов
- 9665 Просмотров

#### Ethereal

- ВИП
- Старожил
- 1.581
- 8.611 раз

##### Потрошение Videocrypt-а

« Ответ #50: Воскресенье 08 Мая 2022, 21:38:42 »
По поводу карты 5-й серии. Я пока обдумываю как к этому делу подойти.
Очень уж система команд 8048 убогая. Более убогой не бывает.
Там по видимому сначала надо найти ответ на вопрос - какие команды что-то пишут в EPROM ?
Из EPROM-а код может исполняться, а из RAM нет.
Может у этой карты в EPROM закинуть виря подав напряжение программирования,
а потом без этого напряжения попытаться на виря управление выбить.
Но я даже вирь пока написать не могу. Читаю PDF и вникаю.

Подумал(a) и добавил(a): Воскресенье 08 Мая 2022, 22:05:25

И вот это требует разъяснения
>TX Data : 10 0E 03 01 8E --- this block is found in Sky 06 card as well
>TX Data : C4 53 7C 00 00 FF 20 03 A1 09 0F 00
>RX Data : AE 04 FE 54 FD FE 54 FC A0 EB A5 E8 AD 1C AA E6
> 6D 80 3A F0 43 07 FB 04 BB FE 54 FC A8 AD 76 84
> 99 C6 02 D3 FF F9 24 7A 24 FD 04 EB 04 6D 23 90
> ...
Где найдено ? Я этого в дампе MySky-06-3227995.bin.zip не вижу
Сказали Спасибо: balton, DIverSA.T, lift-man, Robin-Hood, Shurik406
« Последнее редактирование: Воскресенье 08 Мая 2022, 23:25:42 от Ethereal »
Жалоба 212.109.29.221

#### Shurik406

- Начинаю писать
- 232
- 488 раз
- 58W |-----| 55E
  Много чего
  UK

##### Потрошение Videocrypt-а

« Ответ #51: Воскресенье 08 Мая 2022, 23:20:07 »
Цитата(Ethereal от Воскресенье 08 Мая 2022, 21:38:42)

> И вот это требует разъяснения
> >TX Data : 10 0E 03 01 8E --- this block is found in Sky 06 card as well
> >TX Data : C4 53 7C 00 00 FF 20 03 A1 09 0F 00
> >RX Data : AE 04 FE 54 FD FE 54 FC A0 EB A5 E8 AD 1C AA E6
> > 6D 80 3A F0 43 07 FB 04 BB FE 54 FC A8 AD 76 84
> > 99 C6 02 D3 FF F9 24 7A 24 FD 04 EB 04 6D 23 90
> > ...
> Где найдено ? Я этого в дампе MySky-06-3227995.bin.zip не вижу

Там видимо две версии карты 6й серии. Одна которую я тыкал на ST1834 (от туда и блок выше), а другая на SC21. Только сегодня узнал - там даже надписи чуть разные.
Там на старый версиях был очень распространенный хек. Хакеры сбивали напряжение от 21в до ~15в на пятак Vpp прям в декодере вставляя стабилитрон. Это значило что карты было невозможно отключить провайдером. Вот они и выпустили SC21 для 7й серии где Vpp не нужен. НО видимо там еще и промежуточная версия 6 серии была у которой был этот чип. Вот его я и выжал. А там алго и от 5й серии и 7й. Только там таблица ключей для 7й серии укорочена - всего 32 байта. А в 7й серии 56 байт.
Код: [Выделить]

EEPROM:0E0A KEY_TABLE_7: fcb $65,$E7,$71,$1A,$B4,$88,$D7,$76,$28,$D0,$4C,$6E,$86,$8C,$C8,$43
EEPROM:0E0A fcb $A9,$EC,$60,$42, 5,$F2,$3D,$1C,$6C,$BC,$AF,$C3,$2B,$B5,$DC,$90

Вот это CW/DCW от 5й серии (лог снят с 6й).
Код: [Выделить]

RX ATR : 3F FA 11 25 05 00 01 B0 02 00 00 4D 59 00 81 80
TX Data : 53 74 00 00 20
RX Data : 74
TX Data : C8 1B 9C 00 B7 5C 00 95 D3 86 35 C0 C0 C0 C0 C0
C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 35 82 45 80 CF
RX Data : 90 00
TX Data : 53 78 00 00 08
RX Data : 78 EF 4A 46 FE 89 1C 8A 9F 90 00

А вот от 7й (лог тоже из 6й карты).
Код: [Выделить]

RX ATR : 3F FA 11 25 05 00 01 B0 02 00 00 4D 59 00 81 80
TX Data : 53 74 00 00 20
RX Data : 74
TX Data : E8 20 3E ED F0 1C 00 6F E9 06 D6 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 6A AD 22 7E D6
RX Data : 90 00
TX Data : 53 78 00 00 08
RX Data : 78 3D 92 CD 3B 4F BC 5A 3D 90 00

Цитата

> По поводу карты 5-й серии. Я пока обдумываю как к этому делу подойти.
> Очень уж система команд 8048 убогая. Более убогой не бывает.
> Там по видимому сначала надо найти ответ на вопрос - какие команды что-то пишут в EPROM ?
> Из EPROM-а код может исполняться, а из RAM нет.

Команда 74 пишет в EPROM если послать данные для этой карты (например активировать подписку). Эта команда практически делает все - Видеокрипт очень простая система по сравнению с Еврокриптом.
На 5й карте Vpp нужен даже для вычисления DCW.
Код: [Выделить]

RX ATR : 3F 6B 15 05 02 A0 08 80 00 4D 59 00 0C 90 00
TX Data : 53 74 00 00 20
RX Data : 75
TX Data : C8 1B 9C 00 B7 5C 00 95 D3 86 35 C0 C0 C0 C0 C0
C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 35 82 45 80 CF
RX Data : 90 00
TX Data : 53 78 00 00 08
RX Data : 78 02 00 00 00 00 00 00 00 90 00

Выдает нулевой DCW в Фениксе, а в декодере работает. Поэтому и сбивали напряжение Vpp до 15в, а не полностью отрубали контакт. Если из ОЗУ на этой карте ничего не получится, то надо будет провести 21в на Vpp...
Сказали Спасибо: balton, Ethereal, DIverSA.T, lift-man, Robin-Hood
Жалоба Записан

#### Ethereal

- ВИП
- Старожил
- 1.581
- 8.611 раз

##### Потрошение Videocrypt-а

« Ответ #52: Воскресенье 08 Мая 2022, 23:57:04 »
Короче, по старой ссылке в архиве теперь обое-два эмулятора Ская - и 6-й и 7-й
Один обозвал Sky6_... , второй Sky7...
Sky7... это ровно тот который был раньше Sky_...

Подумал(a) и добавил(a): Понедельник 09 Мая 2022, 00:02:58

Цитата(Shurik406 от Воскресенье 08 Мая 2022, 23:20:07)

> Хакеры сбивали напряжение от 21в до ~15в на пятак Vpp прям в декодере вставляя стабилитрон. Это значило что карты было невозможно отключить провайдером.

Я программировал карту на SC21 складывая вместе 12 вольт и 5 вольт от двух блоков питания (от родного внутри компьютера, привязанного к земле, к которому последовательно давал добавку от еще одного компьютерного внешнего). Получалось 17 вольт. И запись проходила. Видимо 15-и вольт маловато.
И еще я почему-то думал, что именно 15 вольт для программирования и надо. Исходя из этого собрал на коленке 17 и решил, что зашибись. А оказывается надо 21.

Подумал(a) и добавил(a): Понедельник 09 Мая 2022, 01:15:55

Цитата(Shurik406 от Воскресенье 08 Мая 2022, 23:20:07)

> Вот это CW/DCW от 5й серии (лог снят с 6й).
> Код: [Выделить]
> RX ATR : 3F FA 11 25 05 00 01 B0 02 00 00 4D 59 00 81 80
> TX Data : 53 74 00 00 20
> RX Data : 74
> TX Data : C8 1B 9C 00 B7 5C 00 95 D3 86 35 C0 C0 C0 C0 C0
> C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 C0 35 82 45 80 CF
> RX Data : 90 00
> TX Data : 53 78 00 00 08
> RX Data : 78 EF 4A 46 FE 89 1C 8A 9F 90 00
> А вот от 7й (лог тоже из 6й карты).
> Код: [Выделить]
> RX ATR : 3F FA 11 25 05 00 01 B0 02 00 00 4D 59 00 81 80
> TX Data : 53 74 00 00 20
> RX Data : 74
> TX Data : E8 20 3E ED F0 1C 00 6F E9 06 D6 00 00 00 00 00
> 00 00 00 00 00 00 00 00 00 00 00 6A AD 22 7E D6
> RX Data : 90 00
> TX Data : 53 78 00 00 08
> RX Data : 78 3D 92 CD 3B 4F BC 5A 3D 90 00

Эмулятором 6-го Ская отлично эмулируется и то и это
Код: [Выделить]

MC68HC05SC24 Sky UK Series 6 Videocrypt card emulator V00.00 (C)Ethereal
a=FF x=FF sp=FF cc=E8=hInzc
1400: 9B sei
-g 143D
[3F][FA][11][25][05][00][01][B0][02][00][00][4D][59][00][81][80]
a=01 x=09 sp=FF cc=E8=hInzc
143D: 9C rsp
-g 143D
>53
>74
>00
>00
>20
[74]
>C8
>1B
>9C
>00
>B7
>5C
>00
>95
>D3
>86
>35
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>C0
>35
>82
>45
>80
>CF
[90][00]
a=00 x=00 sp=FF cc=EB=hInZC
143D: 9C rsp
-g 143D
>53
>78
>00
>00
>08
[78][EF][4A][46][FE][89][1C][8A][9F][90][00]
a=00 x=00 sp=FF cc=EB=hInZC
143D: 9C rsp
-g 143D
>53
>74
>00
>00
>20
[74]
>
>E8
>20
>3E
>ED
>F0
>1C
>00
>6F
>E9
>06
>D6
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>6A
>AD
>22
>7E
>D6
[90][00]
a=00 x=00 sp=FF cc=EB=hInZC
143D: 9C rsp
-g 143D
>53
>78
>00
>00
>08
[78][3D][92][CD][3B][4F][BC][5A][3D][90][00]
a=00 x=00 sp=FF cc=EB=hInZC
143D: 9C rsp
-q

Так-что алго выдираемо.

Подумал(a) и добавил(a): Понедельник 09 Мая 2022, 01:28:17

Цитата(Shurik406 от Воскресенье 08 Мая 2022, 18:18:28)

> Вчера сдампнул ещё одну карту The Adult Channel.
> ...
> А ещё дампнул 3 других карт Sky.

Шурик разбушевался
Сказали Спасибо: balton, DIverSA.T, Andro, lift-man, Robin-Hood, Shurik406
« Последнее редактирование: Понедельник 09 Мая 2022, 01:28:17 от Ethereal »
Жалоба 212.109.29.221

#### Shurik406

- Начинаю писать
- 232
- 488 раз
- 58W |-----| 55E
  Много чего
  UK

##### Потрошение Videocrypt-а

« Ответ #53: Понедельник 09 Мая 2022, 09:16:25 »
Извиняюсь. В картах Скай сериях 06 и 07 стоит SC24, а не SC21. SC21 была использована в 9й серии карт, но там Vpp не нужен был - по крайней мере не 21в. Хотя в картах Еврокрипта нужен Vpp...
(Это все предположения, кто знает какие там действительно чипы).
А сбивали напряжение у карт на ST1834. SC2x ввели что бы этот хек больше нельзя было использовать.
Сказали Спасибо: balton, Ethereal, DIverSA.T, lift-man, Robin-Hood
Жалоба Записан

#### Ethereal

- ВИП
- Старожил
- 1.581
- 8.611 раз

##### Потрошение Videocrypt-а

« Ответ #54: Вторник 10 Мая 2022, 02:40:55 »
Цитата(Shurik406 от Воскресенье 08 Мая 2022, 18:18:28)

> А вот именно как было бы ОЧЕНЬ интересно узнать!

Второе приближение к понимаю как был снят дамп TAC
Предположим, что мы умеем считать 4-х байтный хеш к 74-й команде.
Предположим, что мы умеем подглядывать в ОЗУ.
Это не тот путь которым дамп читали, но уже наметка его.
Будем для примера читать адрес $1C7C и там должно прочитаться $55
Сооружаем такую команду :
Код: [Выделить]

53 74 00 00 20
E8 49 09 00 1C 7C 00 00 00 00 00 00 00 00 00 00
HI LO <- адрес где будем читать
^^^^^^^^ <- нужная нам подкоманда 09
00 00 00 00 00 00 00 00 00 00 00 A1 4F BA 9C 00
^^^^^^^^^^^ - правильный хеш
а на контрольную сумму насрать - ^^

Исполняем и подглядываем ОЗУ. Нас будет интересовать ячейка
где по идее должен храниться LEN = P3 от заголовка карточной
команды. Вот там и увидим прочитанное :
Код: [Выделить]

MC68HC05SC24 The Adult Channel Videocrypt card emulator V00.00 (C)Ethereal
a=FF x=FF sp=FF cc=E8=hInzc
1620: 9B sei
-g 1643
[3F][7E][11][25][05][24][B0][05][00][00][4D][59][00][01][80][48][56][03][10]
a=84 x=FF sp=FF cc=FC=HINzc
1643: 9C rsp
-g 1643
>53
>74
>00
>00
>20
[74]
>E8
>49
>09
>00
>1C
>7C
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>A1
>4F
>BA
>9C
>00
[90][00]
a=00 x=00 sp=FF cc=EA=hInZc
1643: 9C rsp
-d 80 40
0080: 00 00 01 00 00 53 74 00 00 55 D7 0C 00 81 BA 01 St UЧ ?є
^^ - вот они прочитанные 55 !!!
CLAINSP1 P2 P3затерто
0090: A7 B1 12 FC 82 F4 00 00 00 AC 00 00 00 00 00 EB §+ ь'ф ¬ л
00A0: 00 00 00 00 00 00 00 00 00 00 16 30 64 CC 00 07 0dМ
00B0: 04 28 40 E8 49 09 00 1C 7C 00 1C 7C 00 00 00 00 (@иI | |
^^^^^^^^ <- подкоманда 09
HI LO HI LO
-q

Прочитали один байт с желаемого адреса и в ОЗУ по адресу $89
прочитанный байт виден !!!
Теперь в чем содержательная часть этого дела.
Вот эта таблица - это адреса подпрограмм, которые последовательно
вызываются при исполнении карточной команды 00 74
Код: [Выделить]

1089: 1C FC 0E 8C 0E 94 8E BB 8E D2 9D 12 9D 1B 8E DA ь ? "?>?Т? ? ?Ъ
hi lo hi lo hi lo ...
1099: 8F 01 8F 10 8F 13 8F 16 0F 19 0F 33 0F 37 0F 37 ? ? ? ? 3 7 7
10A9: 0F 37 0F 51 0F 5F 0F 6B 55 06 0A DC E7 8C CD 29 7 Q _ kU Ьз?Н)
^^^^^ <- последний адрес
10B9: 65 00 00 00 00 00 00 00 00 00 CC 0E 03 CC 1E B8 e М М ё

Интерпретируются, так сказать. При этом старший бит адреса
используется как флажок, а не часть адреса. Т.е. 74-я команда расписана
как последовательность подпрограмм для интерпретации.
Нас интересует выделенный выше адрес $F6B который в последовательности
интерпретации будет последним. Вот что там исполняется
Код: [Выделить]

0F6B: CD1434 jsr $1434 ; RECV
0F6E: 0E9F14 brset 7,$9F, $F85 ; флаг выставлен, если верный хеш
; и если хеш верный, то прыгнет

Прыгнет вот сюда :
Код: [Выделить]

0F85: CE10B1 ldx $10B1 ; тут лежит $55, но не та что читаем
0F88: 2721 beq $FAB ; поэтому этот прыг не сработает
0F8A: 01B51E brclr 0,$B5, $FAB ; ИСПОЛНЯЕТСЯ
0F8D: 07B50C brclr 3,$B5, $F9C ; ПОДКОМАНДА 09
0F90: CD1915 jsr $1915 ; lda #$D6 sta $8A
0F93: B6B7 lda $B7 ; отсюда берется HI читаемого адреса
0F95: BEB8 ldx $B8 ; отсюда берется LO читаемого адреса
0F97: CD1939 jsr $1939 ; sta $8B stx $8C clrx
0F9A: BD8A jsr $8A ; lda $HILO,x <- чтение с произвольного адреса !!!
0F9C: 09B50C brclr 4,$B5, $FAB ; сработает

Вот тут произойдет чтение с указанного нами адреса 1C 7C
Дальше по коду что-то непонятное криптуется, но прочитанный байт сохраняется
в ячейке $89 и далее нигде не портится. Вот его-то мы и подсмотрели в ОЗУ !!!
Проделанное выше можно повторить для любого адреса, только хеш к команде
придется каждый раз считать. Но это уже метод чтения которым по байту
можно снять весь дамп. Понятно что делалось не совсем так, но это,
повторюсь, второе приближение к постижению метода. Мы постепенно
все больше и больше просекаем тему.
--------------------------------------------------------------------
Далее.
Я так подозреваю, что вот этот прочитанный по указанному адресу
байт как-то влияет на крипт. Я дальше код еще не разобрал.
А крипт мы можем увидеть карточной командой 53 78 00 00 08
И из значения этого крипта перебором вариантов 00..FF вычислить какой-же
байт был прочитан. 256 вариантов прочитанного байта небось дают 256
разных вариантов крипта. Правда, я еще на это дело не смотрел. Но уже
мерещится, что это наметка третьего приближения.
Тут я криптом обзываю то, что похоже на какой-то хеш 8 байтный, чтобы
не путать с хешем тела 74-й команды 4-х байтным.
Сказали Спасибо: balton, DIverSA.T, Andro, lift-man, Robin-Hood, Shurik406
Жалоба 212.109.29.221

#### Ethereal

- ВИП
- Старожил
- 1.581
- 8.611 раз

##### Потрошение Videocrypt-а

« Ответ #55: Вторник 10 Мая 2022, 18:48:15 »
В снятом кем-то дампе The Adult Channel
Код: [Выделить]

80 : 00 D9 01 00 01 53 74 00 00 CD D6 00 8C 81 B5 F9
^^^^^^^^^^^ - 74-я карточная команда
90 : C5 1C 6D 57 99 57 00 00 00 07 00 F8 FF 00 00 CB
A0 : 00 00 00 00 00 00 00 00 00 00 16 30 64 CC 00 07
B0 : 04 28 40 E8 49 09 92 00 B8 01 00 BB 01 74 CE DF
^^^^^^^^ - первых три байта тела 74-й команды
HI адреса B7 ; Читалось
LO адреса B8 ; по
HI адреса BA ; одному
LO адреса BB ; байту
C0 : EF 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00
D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 92 00 00
F0 : 00 40 00 00 00 00 14 A6 14 A6 14 75 0F 9C 1A A7
^^^^^ - адрес возврата

Адрес возврата
Код: [Выделить]

0F9A: BD8A jsr $8A ; lda $HILO,x <- вот от этого вызова !!!
0F9C: 09B50C brclr 4,$B5, $FAB

И этот вызов будет исполнен при 74-й команде с телом E8 49 09 ... (ключевое тут 09).
Вот почему я уверен, что сам механизм чтения с произвольного
адреса был именно таким - карточная команда
53 74 00 00 20 E8 49 09 xx HI LO ... (где HI и LO будут адресом чтения внутри jsr $8A)
и читался дамп по одному байту. Тут все сходится с тем что видим
в той части дампа где ОЗУ. Вообще все.
Не выяснил пока только как извлекалось прочитанное.
А может щупами на шине данных сидели ?
А 74-я карточная команда использовалась только для того
чтобы последовательно перебрать все возможные адреса
hilo в машинной команде lda hilo,x при x=0 ?
Ну той что в jsr $8A.
А результат ее исполнения (прочитанное) снимали щупами ?

Подумал(a) и добавил(a): Вторник 10 Мая 2022, 19:59:09

Опаньки !
Эмулируем карту The Adult Channel :
Код: [Выделить]

MC68HC05SC24 The Adult Channel Videocrypt card emulator V00.00 (C)Ethereal
a=FF x=FF sp=FF cc=E8=hInzc
1620: 9B sei
-g 1643
[3F][7E][11][25][05][24][B0][05][00][00][4D][59][00][01][80][48][56][03][10]
a=84 x=FF sp=FF cc=FC=HINzc
1643: 9C rsp
-g 1643
>53
>74
>00
>00
>20
[74]
>E8
>49
>09
>00
>1C
>7C
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>A1
>4F
>BA
>9C
>00
[90][00]
a=00 x=00 sp=FF cc=EA=hInZc
1643: 9C rsp
-g 1643
>53
>78
>00
>00
>08
[78][BA][01][A7][B1][12][FC][82][F4][90][00]
a=00 x=00 sp=FF cc=EA=hInZc
1643: 9C rsp
-g F9A
>53
>74
>00
>00
>20
[74]
>E8
>49
>09
>00
>1C
>7C
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>A1
>4F
>BA
>9C
>00
a=1C x=00 sp=FD cc=EB=hInZC
0F9A: BD8A jsr $8A
-p
a=55 x=00 sp=FD cc=E9=hInzC
0F9C: 09B50C brclr 4,$B5, $FAB
-g 1643
[90][00]
a=00 x=00 sp=FF cc=EA=hInZc
1643: 9C rsp
-g 1643
>53
>78
>00
>00
>08
[78][BA][01][A7][B1][12][FC][82][F4][90][00]
a=00 x=00 sp=FF cc=EA=hInZc
1643: 9C rsp
-g F9A
>53
>74
>00
>00
>20
[74]
>E8
>49
>09
>00
>1C
>7C
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>00
>A1
>4F
>BA
>9C
>00
a=1C x=00 sp=FD cc=EB=hInZC
0F9A: BD8A jsr $8A
-p
a=55 x=00 sp=FD cc=E9=hInzC
0F9C: 09B50C brclr 4,$B5, $FAB
-r a
a=55
:0
a=00 x=00 sp=FD cc=E9=hInzC
0F9C: 09B50C brclr 4,$B5, $FAB
-g 1643
[90][00]
a=00 x=00 sp=FF cc=EA=hInZc
1643: 9C rsp
-g 1643
>53
>78
>00
>00
>08
[78][4C][C3][64][F9][67][2B][8D][71][90][00]
a=00 x=00 sp=FF cc=EA=hInZc
1643: 9C rsp
-q

Что тут происходило ?
1.)
Исполнил карточные команды
Код: [Выделить]

53 74 00 00 20
E8 49 09 00 1C 7C 00 00 00 00 00 00 00 00 00 00
HI LO <- адрес где будем читать
00 00 00 00 00 00 00 00 00 00 00 A1 4F BA 9C 00
53 78 00 00 08

Результат (выданный 78-й карточной командой) :
BA 01 A7 B1 12 FC 82 F4
2.) Проделал тоже самое, но только когда исполнял 74-ю команду
сначала добежал до
0F9A: BD8A jsr $8A
исполнил jsr целиком, результат чтения с адреса $1C7C - байт $55
увидел в аккамуляторе
-p
a=55 x=00 sp=FD cc=E9=hInzC
и только потом побежал дальше
-g 1643
Результат тот-же самый :
BA 01 A7 B1 12 FC 82 F4
3.) Проделал тоже самое, что и в пункте 2, но только после исполнения
0F9A: BD8A jsr $8A
и получения прочитанного байта в аккамуляторе
-p
a=55 x=00 sp=FD cc=E9=hInzC
подменил его на ноль
-r a
a=55
:0
a=00 x=00 sp=FD cc=E9=hInzC
и побежал дальше
-g 1643
Результат другой !!!
4C C3 64 F9 67 2B 8D 71
Итого третье приближение понимания вырисовывается :
Выдаваемая 78-й командой восьмерка зависит от прочитанного байта !
А значит по этой восьмерке можно этот байт однозначно определять !
Сказали Спасибо: balton, DIverSA.T, Andro, lift-man, Robin-Hood
« Последнее редактирование: Вторник 10 Мая 2022, 20:07:15 от Ethereal »
Жалоба 212.109.29.221

#### Ethereal

- ВИП
- Старожил
- 1.581
- 8.611 раз

##### Потрошение Videocrypt-а

« Ответ #56: Среда 11 Мая 2022, 03:45:52 »
Цитата(Shurik406 от Воскресенье 08 Мая 2022, 18:18:28)

> А вот именно как было бы ОЧЕНЬ интересно узнать!

В общем разгадка такая :
Сначала каким-то неизвестным методом была вычитана смарт-карта и
из ее дампа были выдраны алгоритмы и ключи. А потом на основании
этого знания был нарисован скрипт, позволяющий читать любую другую
подобную карту. Вот откуда тот дамп карты The Adult Channel, который
ты имел. Он прочитан скриптом чтения любой подобной карты.
Подобный скрипт ты можешь нарисовать сам. Все алгоритмы вот :
Программулька ниже сначала считает правильный хеш (CH EC KS UM)
к карточной команде
53 74 00 00 20
E8 49 09 00 HI LO 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 CH EC KS UM 00
для чтения адреса HI LO. Надо подать карте эту команду, а потом
забрать результат (который не крипт, а все тот-же тупорылый хеш)
командой
53 78 00 00 08
А дальше программулька выдает таблицу какие результаты должны
быть для каждого варианта 00..FF считанного байта при данном
адресе HILO. Остается только найти прочитанный результат в
таблице. Ну и все это завернуть в цикл перебора HILO от 0 до 1FFF
Код: [Выделить]

#include <stdint.h>
#include <string.h>
#include <stdio.h>
#define ROL(x) ((x << 1) | ((x & 0x80) != 0))
#define ROR(x) ((x >> 1) | ((x & 1) << 7))
uint8_t HASH[8] ; // Изначально нулевой
uint8_t CMD_74[0x20] = {
0xE8, 0x49, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
} ;
uint8_t KEY[3][2][0x10] = {{{
// Key 0 [D00..D1F]
0xD9, 0x45, 0x08, 0xDB, 0x7C, 0xF9, 0x56, 0xF7,
0x58, 0x18, 0x22, 0x54, 0x38, 0xCD, 0x3D, 0x94
},{
0x09, 0xE6, 0x8E, 0x0D, 0x9A, 0x86, 0xFC, 0x1C,
0xA0, 0x19, 0x8F, 0xBC, 0xFD, 0x8D, 0xD1, 0x57
}},{{
// Key 1 [D20..D3F]
0x56, 0xF2, 0xB6, 0x4F, 0xC9, 0xBD, 0x2A, 0xB3,
0x9D, 0x81, 0x5D, 0xE0, 0x05, 0xB5, 0xB9, 0x26
},{
0x67, 0x3C, 0x65, 0xA0, 0xBA, 0x39, 0xC7, 0xAF,
0x33, 0x24, 0x47, 0xA6, 0x20, 0x1E, 0x14, 0x6F
}},{{
// Key 2 [D40..D5F]
0x48, 0x9B, 0x4D, 0xA6, 0xF9, 0xD9, 0xDF, 0x6E,
0xAC, 0x84, 0xFA, 0x8B, 0x2E, 0xB6, 0x76, 0x19,
},{
0xC1, 0xB0, 0xA3, 0xBB, 0x0C, 0xFD, 0x70, 0x72,
0xCA, 0x55, 0xEF, 0xA0, 0x7F, 0xBF, 0x59, 0xAD
}}} ;
const uint8_t HI = 0x1C ;
const uint8_t LO = 0x7C ;
uint8_t Index ; // Изначально нулевой
uint8_t Nkey = 2 ;
#define NEXT Index = ++Index & 7
void doHASH(uint8_t x)
{
HASH[Index] ^= x ;
x += ROL(~(KEY[Nkey][0][HASH[Index] >> 4 ] +
KEY[Nkey][1][HASH[Index] & 0xF])) ;
x = ROR(x) ; x = ROR(x) ; x = ROR(x) ;
NEXT ;
HASH[Index] ^= x ;
}
void main()
{
int i ;
uint8_t hash[8] ;
uint8_t x ;
if (CMD_74[1] < 0x49) Nkey = 1 ; // [100B]=49
if (CMD_74[1] < 0x37) Nkey = 0 ; // [100A]=37
CMD_74[4] = HI ; CMD_74[5] = LO ;
for (i = 0 ; i < 0x1B ; ++i) doHASH(CMD_74[i]) ;
x = 0 ;
for (i = 0x1B ; i < 0x1F ; ++i)
{
doHASH(x) ; doHASH(x) ;
CMD_74[i] = x = HASH[Index] ;
NEXT ;
}
puts("53 74 00 00 20") ;
for (i = 0 ; i < 0x20 ; i++)
{
printf("%02X ", CMD_74[i]) ;
if ((i & 0xF) == 0xF) putchar('\n') ;
}
memcpy(hash, HASH, 8) ;
x = 0 ;
do {
memcpy(HASH, hash, 8) ;
printf("\n%02X :", x) ;
for (i = 0 ; i < 0x40 ; ++i) doHASH(x) ;
for (i = 0 ; i < 8 ; ++i) printf(" %02X", HASH[i]) ;
} while (++x != 0) ;
}

В программульке алгоритмы проще некуда, легко втыкаемые в скрипт.
Прогон прогаммульки выглядит так :
Код: [Выделить]

53 74 00 00 20
E8 49 09 00 1C 7C 00 00 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 A1 4F BA 9C 00 <- правильный хеш
для адреса HILO (в данном случае $1C7C)
Таблица результатов хеша выдаваемого карточной командой 53 78 для
различных вариантов прочитанного с адреса HILO байта :
00 : 4C C3 64 F9 67 2B 8D 71 <- этот мы уже видели
01 : 7D 26 C6 1F C6 FC 36 F6
02 : 86 D4 EC 1C CF BF EE 98
...
52 : 3E 9E 29 F1 33 70 E5 E1
53 : 67 C2 4E 80 EA 77 8C 37
54 : 5B 20 23 1A 98 92 8B 1F
55 : BA 01 A7 B1 12 FC 82 F4 <- и этот видели
56 : 2F C5 29 FC E4 A8 DF E0
57 : 0F 03 0F 82 FE 06 FA 3E
58 : AE DB 03 E2 D2 43 02 99
...
FD : F4 BC BA 20 B7 2E C2 D9
FE : AD 26 7A FC E7 F8 43 37
FF : EA 86 13 81 A1 0E 0E 72

Вот и вся разгадка.
Сказали Спасибо: balton, DIverSA.T, Andro, lift-man, Robin-Hood, Shurik406
Жалоба 212.109.29.221

#### Shurik406

- Начинаю писать
- 232
- 488 раз
- 58W |-----| 55E
  Много чего
  UK

##### Потрошение Videocrypt-а

« Ответ #57: Среда 11 Мая 2022, 11:18:55 »
Очень интересно! Спасибо! Сейчас нарисую скрипт и попробую.
Сказали Спасибо: Ethereal, DIverSA.T
Жалоба Записан

#### Shurik406

- Начинаю писать
- 232
- 488 раз
- 58W |-----| 55E
  Много чего
  UK

##### Потрошение Videocrypt-а

« Ответ #58: Пятница 13 Мая 2022, 17:44:59 »
Короче вот нарисовал скрипт.
filmnet.plus/....xjs.txt
Работает на 2х картах TAC с разными ATR.
Код: [Выделить]

Executing Script: C:\Documents and Settings\Administrator\Desktop\WinExplorer\dump_vc07.xjs
Trying to reset card...
Reset Successful
RX ATR : 3F 7E 11 25 05 24 B0 05 00 00 4D 59 00 01 80 48 56 03 10
0000 : 1B 1F 1A 1A 1A 11 1A 1A 42 97 1A 1A 1A 1A 1A 1A
0010 : 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
0020 : 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
0030 : 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
0040 : 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
0050 : 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
0060 : 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
0070 : 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A
0080 : 00 4D 01 00 01 53 74 00 00 B3 D6 00 8C 81 80 40
0090 : 1D F9 7B B8 6E CE 00 00 00 07 00 F8 FF 00 00 CB
00A0 : 00 00 00 00 00 00 00 00 00 00 16 30 64 CC 00 07
00B0 : 04 28 40 E8 49 09 00 00 B8 00 00 BB 00 00 00 00
00C0 : 00 00 8F 00 00 00 00 00 00 00 00 00 00 00 00 00
00D0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
00E0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 B6 00 03
00F0 : 00 71 00 41 09 01 14 A6 14 A6 14 75 0F 9C 1A A7
0100 : 00 00 00 00 00 00 00 00 00 00 00 00...

А вот еще на другой. Эту карту я еще не глюкал, а вычитал именно вашим способом обычным Фениксом! Там даже ROM другой...
Код: [Выделить]

Executing Script: C:\Documents and Settings\Administrator\Desktop\WinExplorer\dump_vc07.xjs
Trying to reset card...
Reset Successful
RX ATR : 3F FA 11 25 10 00 01 B0 02 49 49 4D 59 00 81 80
0000 : 1B 1F 1B 1B 1A 11 1B 1B 43 97 1B 1B 1B 1B 1B 1B
0010 : 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
0020 : 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
0030 : 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
0040 : 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
0050 : 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
0060 : 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
0070 : 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B 1B
0080 : 00 4D 81 00 74 00 09 14 D6 00 8A 81 A7 74 4F 16
0090 : D0 7A 02 80 00 4F 00 FB 49 37 4C 00 01 00 01 16
00A0 : 30 64 CC 01 42 07 00 00 00 00 00 00 00 00 00 04
00B0 : E8 00 B2 24 04 40 49 00 00 00 00 00 00 84 40 00
00C0 : 00 40 00 53 00 00 06 00 00 00 11 00 00 21 80 00
00D0 : 20 20 00 00 00 00 60 04 00 20 00 00 00 02 40 00
00E0 : 02 08 06 01 00 04 80 00 00 84 10 02 08 00 28 00
00F0 : 04 00 11 00 17 01 18 BC 18 BC 18 8C 0F A8 1B 1F
0100 : 00 00 00 00 00 00 00 00 00 00 00 00...

К сожалению этот метод не работает на других картах (Sky, JSTV, Multichoice) с правильными ключами и хешом. DCW зависит именно от последнего байта 74й команды, который в нашем случае всегда 0. Если поставить 0х04, то скрипт выдает 04 (так как 4й DCW совпадает), если 0xAA, то выдаст AA...
Может быть там тоже подобный трюк можно сделать, но я не разбирал.
Сказали Спасибо: Ethereal, DIverSA.T, lift-man
Жалоба Записан

#### Ethereal

- ВИП
- Старожил
- 1.581
- 8.611 раз

##### Потрошение Videocrypt-а

« Ответ #59: Суббота 14 Мая 2022, 01:35:41 »
Цитата(Shurik406 от Пятница 13 Мая 2022, 17:44:59)

> Если поставить 0х04, то скрипт выдает 04 (так как 4й DCW совпадает), если 0xAA, то выдаст AA...

Дело не только в этом. Я смотрел код карт Sky и обнаружил, что там не только хеш для выдачи карточной командой 53 78 00 00 08 считается таким вот образом (не таким как у карт The Adult Channel), но у карт Sky вообще не видно кода для особой обработки подкоманды 09 (ну когда тело 74-й команды начинается с xx xx 09 xx HI LO). Нет этой подкоманды чтения байта с абсолютного адреса HI LO. Поэтому с этими картами метод в принципе не заработает.
Видимо в карту TAC подкоманда 09 была добавлена для самотестирования на предмет прочесть все адреса, все ли там верно. Потому-что у карты TAC у 74-й карточной команды имеется еще одна подобная подкоманда которая исполняет ОЗУ-шную подпрограмму
xx nop nop rts (в байтах xx 9D 9D 81)
где байт xx задается в теле 74-й команды. Это проверка исполнения проциком однобайтных команд, изменяющих аккамулятор, так что-ли ? Так вот если этой команде в скрипте для Феникса подсунуть соответствующий xx , то можно исполнить
jmp $9D,x при x=0
и выпрыгнуть в адрес $9D, только подставить по этому адресу код виря средств что-то не видно.
В общем в 74-ю команду у карты TAC добавлен функционал самотестирования и этим функционалом кто-то додумался эти карты дампить. А у других карт Видеокрипта подобного функционала нет.

Подумал(a) и добавил(a): Суббота 14 Мая 2022, 01:41:01

Цитата(Shurik406 от Пятница 13 Мая 2022, 17:44:59)

> Там даже ROM другой...

Дык этот дамп подари. Будет два эмуля карт The Adult Channel
Сказали Спасибо: DIverSA.T, lift-man, Shurik406
Жалоба 212.109.29.221

Страницы: « 1 ... 4 5 6 7 8 ... 12 » Вверх
« предыдущая тема следующая тема »
Перейти в:

### Кто онлайн

Просматривают тему:
Ethereal и 1 Гость

### Быстрый ответ

В быстром ответе можно использовать BB-теги и смайлы.

Предупреждение: в данной теме не было сообщений более 120 дней.
Если не уверены, что хотите ответить, то лучше создайте новую тему.

- Базовые
- Дополнительные

[дополнительные смайлы]
Ошибка во время нажатия Спасибо
Спасибо...

Загружается...