закрыть X

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

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

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

Скрыть по количеству сообщений
Требуется сообщений
Скрыть от гостей
Скрыть от всех групп, кроме выбранных
Группы
Глобальный модератор
Модератор раздела
Новичок
Начинаю писать
Постоялец
Знающий
Старожил
Модератор
ВИП
Ветеран
Неприкасаемый
Проходил мимо
Прохожий
Друзья
Новичок
Ветераны форума
Новичок
Скрыть по количеству Спасибо поставленных пользователю
Кол-во сказанных пользователю Спасибо
Скрыть пока не скажут Спасибо
« предыдущая тема следующая тема »
Страницы: « 1 ... 30 31 32 33 34 ... 44 » Вниз

# Иформация о Eurocrypt (помните такое?)

- 436 Ответов
- 32865 Просмотров

#### Ethereal

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #310: Понедельник 15 Ноября 2021, 07:55:16 »
@Shurik406
Вот смотри, моя технология эмулирования смарт-карт для изучения их кода
на примере твоей карты NRK SLE44. Запускаешь
NRK_SLE44.exe
и ... вуаля, перед тобой как DEBUG отладчик из MS-DOS.
Те-же команды
r - покажи регистры
r регистр - задай значение регистра
d [addr [len]] - дай дамп IRAM и SFR
и ее вариации
di [addr [len]] - дай дамп всей IRAM (косвенно)
dc [addr [len]] - дай дамп MOVC-пространства
dx [addr [len]] - дай дамп MOVX-пространства
u [addr [len]] - дизассемблируй
t - трассируй одну машинную команду
p - тоже самое, но подпрограмму lcall/acall и цикл djnz назад целиком
g - исполняй
g addr - исполняй до адреса
b addr - поставь точку останова (сделал только одну на исполнение)
b - покажи точку останова
b -1 - убери точку останова
e addr byte - запиши байт в IRAM и SFR
ei addr byte - запиши байт в IRAM косвенно
ec addr byte - запиши байт в MOVC-память
ex addr byte - запиши байт в MOVX-память
q - отладчику пока
Ctrl-C - прервать и завершить.
Короче, там ридмик приложен с более подробным описанием на псевдоанглиЦком.
Короче, запускаешь и начинаешь трассировать, смотреть, что как, смысл
происходящего в динамике гораздо быстрее понимается, чем по выхлопу IDA.
Можешь просто запустить
g
и тогда эмуль попросит вводить байты команд, вводи
87
04
00
00
06
или там
CA
A4
00
00
00
и он ее отработает и ответит.
Но самое великое я придумал - это шапки. Если на стандартный ввод команд
скормить карте текстовый файл с командами отладчика, она его выполнит, а
когда он кончится перейдет к вводу с клавиатуры. Иначе говоря, можно
отладку шапкой предварять, чтобы не набивать длинные команды, такие как
CA88 каждый раз при отладке вручную. В пакетнике debug.bat пример
запуска с шапкой, а файле nrk_sle44.txt эта самая шапка. Эмулятор
сначала исполнит шапку и (если конечно в шапке не было команды q ,
тогда он конечно завершится) перейдет к ожиданию команд от тебя
с клавиатуры. Очень удобно до нужного места в коде добегать
предварительно исполнив карточные команды для нужного контекста,
а потом трассировать в этом контексте какое-нибудь непонятное место.
А шапка nrk_sle44.txt - это именно твоя образцовая команда CA 88,
посмотри как эмуль ее исполнит. А вот эти команды в шапке
g 85c8
это команда эмулю - беги до этого адреса, а это как раз адрес
X85c8: lcall X9250 ; Receive CLA INS P1 P2 Le to IRAM 0d1h...
Т.е. это типа точка MainLoop карточных команд, исполни команду и
остановись, я дам тебе новую. Короче, скрестил код карты с интерфейсом
DOS-овского DEBUG-а и вот такая вышла замечательная вещь.
Версия эмулятора-отладчика пока указана как Beta, я только нашел таки от
чего у меня неверно считал DES - криво сэмулировал машинный опкод rl a
Потому больше ничего не проверено, но DES считает верно, так-что
правильного должно быть почти все, ах да ... забежать в SamOS в нем
очень просто - последовательность команд
g 800
t
t
r a
20
g
и выдается ATR СамОс-ы и эта СамОс-а точно также рыгает 00 81 00 81 или
00 82 00 82 на посылаемые ей байты, как и было в глитчере. Что этой
Самосе не нравится я еще не разбирался. А на ATR 33 посмотреть
g 12
e 90 0
t
e 90 1
g
где 90 это адрес порта P1 и я на время команды ветвления якобы просаживаю
линию данных в ноль (по адресу 90 пихаю 0), потом ветвлюсь исполнив команду
t и линию данных восстанавливаю, а потом g - поехали исполнять без конца.
ATR33 вываливается и еще за ним что-то непонятное следом, что еще не смотрел.
Эмуляция ввода и вывода у меня тут тупая до невозможности - остлеживаю
исполнени call-ов на адреса подпрограмм SEND и ret-ов из подпрограмм RECV,
ну и в первом случае вывожу что выводится на экран, а во втором ввожу байт
с клавиатуры и в результат исполнения подпрограммы RECV подсовываю.
А так, запусти NRK_SLE44.exe и набери команду
g
это команда - исполняйся без конца и увидишь. А еще эмулем можно полный
дизассембляж кода карты получить. Создаешь текстовый файл bla с текстом
u 0 10000
q
и запускаешь вот так
NRK_SLE44.exe < bla > sle44.asm
Перенаправление и ввода и вывода и результат в файле sle44.asm ...
Сказали Спасибо: balton, Sergio, DIverSA.T, Andro, skad163, lift-man, Shurik406
Жалоба 178.19.253.189

#### Shurik406

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #311: Понедельник 15 Ноября 2021, 12:21:03 »
Вы целый эмулятор написали за 2 дня??
Афигеть просто. Крутеж полный. Так как карта не моя, это будет очень полезно для тестирования, не трогая и не имея карту!
Сказали Спасибо: Ethereal
Жалоба Записан

#### Shurik406

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #312: Понедельник 15 Ноября 2021, 18:35:00 »
Вот сдампнул наконец-то свою карту CTV. Практически идентична вашей.
filmnet.plus/...5761.txt
Сказали Спасибо: balton, Ethereal, Andro, lift-man
Жалоба Записан

#### Ethereal

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #313: Понедельник 15 Ноября 2021, 19:53:18 »
Цитата(Shurik406 от Понедельник 15 Ноября 2021, 12:21:03)

> Афигеть просто. Крутеж полный. Так как карта не моя, это будет очень полезно для тестирования, не трогая и не имея карту!

Нет, не за два дня. У меня был уже написан эмулятор другой карты, у которой система команд это 8051 с целым ворохом дополнительных опкодов, которыми расширили систему команд 8051, и на которые есс-но нет никакой документации. О смысле дополнительных опкодов приходилось догадываться исходя из смысла того, что в коде делается. И для восстановления алгоритмов карты с такими догадками хорошо бы получающееся эмулировать.
А у чипа SLE44 оказалась чистая система команд 8051 с единственным одним дополнительным опкодом A5. Я взял старый эмулятор, дамп твоей карты туда вставил, дополнительные опкода все выкинул (сейчас там чистый набор 8051) и попробовал эмулировать. И оказалось, что неверно считает DES. Пришлось искать в чем дело. Ошибка оказалась заложенной еще в старом эмуляторе, я неверно одну из команд процика 8051 эмулировал. А как засчитало верно - результат тебе показал.
Насчет использования этой прожки в качестве эмулятора для обкатки команд. Тогда уже эмуляцию записи в EEPROM надо сделать, она еще не сделана. Если ты нарисуешь гипотетическую команду CA 18 и какие CA 88 после нее должны быть, сгенериреуешь их своим софтом, я эмуляцию записи в EEPROM в эмулятор добавлю. Вот тогда прожку можно использовать как ты думаешь. А то пока я ей только код разглядывал, мне SamOS была интересна (я о ней впервые из твоей карты узнал), что она, как работает, почему отвергает что я посылаю с 00 81 00 81 и какие возможности дает если с ней работать правильно.

Подумал(a) и добавил(a): Понедельник 15 Ноября 2021, 19:55:36

Цитата(Shurik406 от Понедельник 15 Ноября 2021, 18:35:00)

> Вот сдампнул наконец-то свою карту CTV. Практически идентична вашей.

Ну ВААЩЕ ГРАЦ !!!
Вирушонка на ней запустил ? Или до ОС добрался ?
Сказали Спасибо: balton, DIverSA.T, lift-man
Жалоба 178.19.253.189

#### Shurik406

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #314: Понедельник 15 Ноября 2021, 20:41:55 »
А вот как. Ну все равно классно. Мне надо разобраться как карта EMM перебирает. Там используется другой provider ID для ЕММ, а не просто ключи 0-7.
Сдампил карту через вирь. Доделал глитчер как вы советовали и наткнулся на вирь практически сразу.
У меня еще одна карта осталась которую надо сдампить - белая TV2. Тот-же ATR что и у других, хотя кто знает что там стоит.
Сказали Спасибо: balton, Ethereal, lift-man
Жалоба Записан

#### Ethereal

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #315: Понедельник 15 Ноября 2021, 21:23:53 »
Цитата(Shurik406 от Понедельник 15 Ноября 2021, 20:41:55)

> Мне надо разобраться как карта EMM перебирает. Там используется другой provider ID для ЕММ, а не просто ключи 0-7.

Тогда покажи просто образец CA 18 от максимально похожей карты. Какое наполнение там у ее тела в Eurocrypt-S2. Я прослежу эмуляцию и все станет ясно. Увижу хеши, шмеши, что расшифровывается как. Добавлю запись в EEPROM тогда в эмуль.
Сказали Спасибо: balton, DIverSA.T, skad163, lift-man, Shurik406
Жалоба 178.19.253.189

#### Ethereal

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #316: Вторник 16 Ноября 2021, 05:06:25 »
Тэээкс ...
Во первых чтобы запустить CA 18 надо твою карту NRK SLE44 полечить еще.
Смотри. Адрес 0x9529 - особенный. До него в EEPROM лежит код аппликации,
а начиная с него данные аппликации. Поэтому софт Еврокрипта-S2 перед
записью в EEPROM чего угодно проверяет, что адрес записи лежит в
допустимом диапазоне [9529..98C4]. Вот в проверке нижней границы
диапазона видна покоцанность :
Код: [Выделить]

8103 8F82 X8103: mov dpl,r7
8105 8E83 mov dph,r6
8107 8D00 mov rb0r0,r5
8109 8B07 mov rb0r7,r3
810B E583 X810b: mov a,dph
810D C3 clr c
810E 9495 subb a,#95h <- сравнение HI и 0x95
8110 402C jc X813e <- если HI меньше на выход
8112 7007 jnz X811b <- если не равно сравнение закончено
8114 1582 dec dpl <- тут по смыслу должно быть mov a,dpl !!!
8116 C3 clr c
8117 9429 subb a,#29h <- сравнение LO и 0x29, если HI=0x95
8119 4023 jc X813e <- если LO меньше на выход
811B 7498 X811b: mov a,#98h
811D C3 clr c
811E 9583 subb a,dph <- сравнение HI и 0x98
8120 401C jc X813e <- если HI больше на выход
8122 7007 jnz X812b <- если не равно сравнение закончено
8124 74C4 mov a,#0c4h
8126 C3 clr c
8127 9582 subb a,dpl <- сравнение LO и 0xC4, если HI=0x98
8129 4013 jc X813e <- если LO больше на выход
812B E0 X812b: movx a,@dptr <- байт что есть в EEPROM
812C 66 xrl a,@r0 <- байт что будем писать
812D 6008 jz X8137 <- если равны писать не будем, посмотрим другой байт
812F 750201 mov rb0r2,#1
8132 1203F0 lcall X03f0 <- Писать r7 байт с адреса r0 по адресу dptr
8135 8003 sjmp X813a

Насрало байтом 15, в должно быть E5 .
Короче, надо в EEPROM по адресу 0x8114 записать байт 0xE5 и этим полечить
Только тогда можно CA 18 пользоваться.
Лечение и работу CA 18 мы можем сэмулировать эмулятором, который я
тебе показал. Оказывается он запись в EEPROM эмулирует нечаянно, просто
потому что в процессе записи исполняется movx @dptr,a , а в эмуляторе
любая память перезаписываема, что твое ОЗУ. Поэтому тестируем лечение
EEPROM и прогон парочки карточных команд CA F0 + CA 18 :
Код: [Выделить]

SLE44 NRK Eurocrypt-S2 card emulator Beta (C)Ethereal
r0=00 r1=00 r2=00 r3=00 r4=00 r5=00 r6=00 r7=00
a=00 b=00 dptr=0000 sp=07 psw=00=caf00o0p
0000: 75D880 mov EECTRL,#80h
-ec 8114 e5 <- эмулируем лечение
-dx 9580 40
9580: 20 00 00 00 00 00 00 00 00 00 00 00 00 08 00 47 G
9590: 51 00 81 06 80 00 00 00 00 01 81 08 46 7D 71 6E Q ? ? ? F}qn
^^^^^^^^^^^ <- ключ что был
95A0: D6 E4 B5 4D 81 06 80 00 00 00 00 01 81 08 00 00 ЦдчM? ? ?
^^^^^^^^^^^ <- ключ что был
95B0: 00 00 00 00 00 00 81 06 80 00 00 00 00 01 81 08 ? ? ?
-g 85c8
[3F][6C][00][00][25][A0][30][A7][58][00][00][01][01][8C][90][00]
r0=00 r1=E1 r2=00 r3=00 r4=00 r5=8B r6=00 r7=00
a=00 b=81 dptr=98E1 sp=E0 psw=00=caf00o0p
85C8: 129250 lcall 9250h
-g 85c8
>CA
>A4
>04
>00
>03
[A4]
>47
>52
>00
[90][00]
r0=00 r1=F8 r2=95 r3=00 r4=00 r5=00 r6=00 r7=00
a=FF b=00 dptr=98F8 sp=E0 psw=80=Caf00o0p
85C8: 129250 lcall 9250h
-g 85c8
>CA
>F0
>00
>00
>22
[F0]
>9E
>20
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>FF
>20
>01
>11
>22
>33
>44
>55
[90][00]
r0=00 r1=74 r2=39 r3=00 r4=00 r5=00 r6=00 r7=00
a=FF b=00 dptr=0074 sp=E0 psw=80=Caf00o0p
85C8: 129250 lcall 9250h
-g 85c8
>CA
>18
>01
>00
>19
[18]
>DF
>05
>00
>00
>00
>00
>00
>A8
>06
>30
>00
>FF
>FF
>FF
>03
>F0
>08
>66
>77
>88
>59
>54
>F4
>A5
>3C
[90][00]
r0=00 r1=00 r2=00 r3=00 r4=00 r5=00 r6=00 r7=00
a=FF b=00 dptr=95A4 sp=E0 psw=80=Caf00o0p
85C8: 129250 lcall 9250h
-dx 9580 40
9580: 20 00 00 00 00 00 00 00 00 00 00 00 00 08 00 47 G
9590: 51 00 81 06 80 00 00 00 00 01 81 08 8E CF 4C F8 Q ? ? ? ?ПLш
^^^^^^^^^^^ <- ключ что стал
95A0: BB C0 2C 57 81 06 80 00 00 00 00 01 81 08 00 00 >А,W? ? ?
^^^^^^^^^^^ <- ключ что стал
95B0: 00 00 00 00 00 00 81 06 80 00 00 00 00 01 81 08 ? ? ?
-q

Ну и делаем рассчет
uint8_t KEYL[8] = {0x61,0xB0,0x59,0x9F,0x03,0xAD,0xF6,0xE4} ;
uint8_t KEYR[8] = {0x9F,0xCC,0x03,0x66,0x25,0x49,0x12,0xAE} ;
uint8_t NEW_KEY[8] = {
0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88
} ;
void main()
{
int i ;
KEY_PREPARE(KEYL) ;
DES(NEW_KEY, DECRYPT) ;
KEY_PREPARE(KEYR) ;
DES(NEW_KEY, ENCRYPT) ;
KEY_PREPARE(KEYL) ;
DES(NEW_KEY, DECRYPT) ;
printf("New Key :") ;
for (i = 0 ; i < 8 ; ) printf(" %02X", NEW_KEY[i++]) ;
Получаем :
New Key : 8E CF 4C F8 BB C0 2C 57
Ровно этот ключ и проапдейтился.
Апдейтящийся ключ рас-3DES-ивался вот этой сладкой парочкой ключей :
Код: [Выделить]

9550 : 81 06 80 00 00 00 00 01 81 08 61 B0 59 9F 03 AD
^^^^^^^^^^^^^^^^^
9560 : F6 E4 81 06 80 00 00 00 00 01 81 08 9F CC 03 66
^^^^^ ^^^^^^^^^^^
9570 : 25 49 12 AE A7 0B 54 56 32 20 20 20 20 20 20 20
^^^^^^^^^^^

А вот если лечение командой
-ec 8114 e5 <- эмулируем лечение
в эмуляторе, а равно и на живой карте не делать, то запись не пройдет
- проверка сработает криво и не даст прописать ключ.
Поскольку вот в этой коцанной связке
Код: [Выделить]

810E 9495 subb a,#95h
8110 402C jc X813e
8112 7007 jnz X811b <- если это не сработало, то a = 0
8114 1582 dec dpl <- коц
8116 C3 clr c
8117 9429 subb a,#29h <- а тогда тут перенос выставит всегда
8119 4023 jc X813e <- и переход на выход всегда сработает

Подумал(a) и добавил(a): Вторник 16 Ноября 2021, 05:16:40

И да, в процессе изысканий я вдруг обнаружил, что софт Eurocrypt-S2 синтаксический разбор тела команды CA 18 01 не делает и исходит из того, что эта команда всегда одинакова в длину , а именно CA 18 01 xx 19.
Поэтому я в тело команды нано DF 05 00 00 00 00 00 сунул, поскольку не знаю какое нано длиной 5 на самом деле имелось ввиду. Явно ведь что-то имелось ввиду, а что только из экземпляра живой команды стало бы ясно.
И ишшо если CA 18 01 на этой карте отвергается, она отвергается молча - с 90 00 в ответе. Вредина.
Сказали Спасибо: balton, skad163, sankr, lift-man, Shurik406
« Последнее редактирование: Вторник 16 Ноября 2021, 06:51:18 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #317: Вторник 16 Ноября 2021, 14:02:45 »
Цитата

> Короче, надо в EEPROM по адресу 0x8114 записать байт 0xE5 и этим полечить

Полечил.
8100 : FE 00 22 8F 82 8E 83 8D 00 8B 07 E5 83 C3 94 95
8110 : 40 2C 70 07 E5 82 C3 94 29 40 23 74 98 C3 95 83
8120 : 40 1C 70 07 74 C4 C3 95 82 40 13 E0 66 60 08 75
Цитата

> Апдейтящийся ключ рас-3DES-ивался вот этой сладкой парочкой ключей

Блин, там 3DES в EMM... не подумал бы! Сейчас попробую.
У меня живых EMM от S2 мало... вот это от карты Canal Digital.
CA A4 04 00 03 A4 00 2B C0 90 00
^^^^^^^^ оператор для обновления
CA F0 00 00 22 F0 9E 20 4C 0C 06 40 20 00 44 00 C1 AA 54 10 00 20 02 89 00 00 00 02 08 00 00 10 00 02 04 94 84 12 EB 0E 90 00
^ updating 00 2B 40
CA 18 01 00 19 18 A7 0B 33 35 30 20 20 20 20 20 20 20 20 DF 00 F0 08 73 CB AF 55 CD 0D A1 B0 90 00
^^ shared ^^ LABEL update
EMM
Вот еще - это unique. Тут вроде-бы длина 21, а не 19... конечно это может зависит от карты.
CA A4 04 00 03 A4 00 2B 60 90 00
^^^^^^^^ оператор для обновления
CA 18 02 00 21 18 A7 0B 41 6E 64 72 65 20 20 20 20 20 20 A8 06 20 72 06 59 08 CA DF 00 F0 08 6B A6 02 AD 24 51 DA 23 90 00
^^ ^^ LABEL update ("Andre"???) ^^ даты
Еще я что не знаю, это как вычисляется хэшь в unique ЕММ. UA карты вроде-бы закладывается в буфер хэша в байты 4-8, производится DES, а потом дальше закидываешь байты пакета CA 18 по 8 байт через XOR и крутишся через DES/XOR пока все байты не заложены. Это так или там еще какие-то досадности?

Подумал(a) и добавил(a): Вторник 16 Ноября 2021, 15:36:17

Ураааа! Заработало!
И вот сам дамп из карты.
9580 : 20 00 00 00 00 00 00 00 00 00 00 00 00 08 00 47
9590 : 51 00 81 06 80 00 00 00 00 01 81 08 8E CF 4C F8
95A0 : BB C0 2C 57 81 06 80 00 00 00 00 01 81 08 00 00
95B0 : 00 00 00 00 00 00 81 06 80 00 00 00 00 01 81 08
Конечно проапдейтировал провайдер 47 51 00, а не 52, потому-что...
ca f0 00 00 22 ; 9e 20 ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff 20 01 11 22 33 44 55
1... а значит 47 51 00.
Сейчас надо акуратненько сделать и попробую хэшь на лету вычислить.
Сказали Спасибо: balton, Ethereal, DIverSA.T, sankr, lift-man
« Последнее редактирование: Вторник 16 Ноября 2021, 15:36:55 от Shurik406 »
Жалоба Записан

#### Shurik406

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #318: Вторник 16 Ноября 2021, 17:35:16 »
Теперь HackTV может обновить любой ключ на этой карте!
Единственное что интересно это то что совсем не прописываются даты и темы. Там есть отдельная рутинка для этого?
А вот на карте CTV тоже используется 3DES для обновления? И ключи какого провайдера? Там вроде 2 провайдера для этого - 00 2B B0 и C0.
Сказали Спасибо: Ethereal
Жалоба Записан

#### Ethereal

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

##### Иформация о Eurocrypt (помните такое?)

« Ответ #319: Вторник 16 Ноября 2021, 23:57:42 »
Цитата(Shurik406 от Вторник 16 Ноября 2021, 14:02:45)

> Блин, там 3DES в EMM... не подумал бы! Сейчас попробую.

Значит будем последовательно искать и давать ответы на вопросы.
Для заметки :
Во время исполнения CA 18 01 делается проверка, что :
Код: [Выделить]

ca f0 00 00 22
9e 20
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff 20 01 11 22 33 44 55
^^ <- должен быть в диапазоне 1..8

Для заметки :
Вот этот параметр
Код: [Выделить]

ca f0 00 00 22
9e 20
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff 20 01 11 22 33 44 55
^^

переключает что делать. 20 - это расшифровать и прописать ключ.
А все возможные значения
00 01 02 10 11 20 21 22 23 30 31 40 50
Я его дальше буду называть параметром "что делать"
Эмулятором легко отследить что каждый из них меняет в EERPOM тупо сравнивая его дамп до и после, а для быстрого прогона разных вариантов команд, без перерассчета каждый раз хеша, проверку хеша можно обходить. Например для CA 18 01
8CF3 12816C 11727 lcall X816c <- возвращает r7=0 если сигнатура верна
8CF6 EF 11728 mov a,r7 <- результат проверки сигнатуры (ноль если все пучком)
8CF7 703E 11729 jnz X8d37 <- прыг если хеш не сошелся
тупо подсовываешь в нужном месте в r7 ноль
Код: [Выделить]

-g 8cf3 <- добегаем до вызова подпрограммы проверки хеша
r0=80 r1=53 r2=39 r3=05 r4=00 r5=68 r6=00 r7=4E
a=00 b=00 dptr=9550 sp=E4 psw=00=caf00o0p
8CF3: 12816C lcall 816Ch
-p <- исполняем подпрограмму проверки целиком
r0=6C r1=52 r2=39 r3=01 r4=00 r5=68 r6=00 r7=7F <- результат в r7 - хеш не сошелся
a=FF b=00 dptr=0052 sp=E4 psw=C0=CAf00o0p
8CF6: EF mov a,r7
-r r7 <- изменим r7
r7=7F
:0 <- сделаем вид, что сошелся
r0=6C r1=52 r2=39 r3=01 r4=00 r5=68 r6=00 r7=00
a=FF b=00 dptr=0052 sp=E4 psw=C0=CAf00o0p
8CF6: EF mov a,r7
-t <- протрассируем одну команду
r0=6C r1=52 r2=39 r3=01 r4=00 r5=68 r6=00 r7=00
a=00 b=00 dptr=0052 sp=E4 psw=C0=CAf00o0p
8CF7: 703E jnz 8D37h
-t <- протрассируем одну команду
r0=6C r1=52 r2=39 r3=01 r4=00 r5=68 r6=00 r7=00
a=00 b=00 dptr=0052 sp=E4 psw=C0=CAf00o0p
8CF9: 7E00 mov r6,#0
-

проскочили проверку и пошли дальше. Этот проскок можно автоматизировать, вставив его в шапку.
А вот и найденный ответ :
В EEPROM карты NRK SLE44 область данных аппликации, которая
может перезаписываться в процессе ее работы это [9529..98C4]
Последний байт в этой области
Код: [Выделить]

98C0 : 02 CA 20 12 0C 1F 1C 1F 1E 1F 1E 1F 1F 1E 1F 1E
^^

это режим криптографии. Сразу за ним уже пошла таблица дней по месяцам,
ясно что она переписываться не должна.
А этот байтик судя по проверкам как-то может.
Назову этот байтик CRYPTO_MODE
Так вот при исполнении CA 18 01 проделывается
P2 | CRYPTO_MODE
Если у результата выставлен бит 2, то хеш считается 3DES, если нет, то DES
Если у результата выставлен бит 3, то ключ расшифровывается 3DES, если нет, то DES
Иными словами прописанное в SLE44 NRK карте CRYPTO_MODE = 0C выставляет режим 3DES для всех операций у CA 18 01 принудительно. А без этого принуждения он зависит от номера параметра P2 в заголовке карточной команды CA 18 01 и как - это видно. Видимо режим криптографии был оставлен на выбор провайдера.

Подумал(a) и добавил(a): Среда 17 Ноября 2021, 00:34:31

Ага, все четыре команды 20 21 22 23 "что делать" это делать одно и то же -
прописать ключ. Только разный. Зависимость такая :
Код: [Выделить]

ca f0 00 00 22
9e 20
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff ff ff ff ff ff ff ff
ff 20 01 11 22 33 44 55
^ <- номер провайдера которому прописать ключ 1..8
^ <- номер ключа, который прописать 0..3

Подумал(a) и добавил(a): Среда 17 Ноября 2021, 01:06:09

Интересное место в обработке CA 18 01 :
mov dptr,#X98c4 ; адрес CRYPTO_MODE
clr a
movc a,@A+dptr ; чтение CRYPTO_MODE = 0C
xrl a,#0ch ; а оно точно 0C ?
jz X8d2b ; переход если да
mov r0,#0d6h ; если нет, то читаем параметр "что делать"
mov a,@r0
setb c
subb a,#11h ; если он <= 0x11
jc X8d34 ; то переход
X8d2b: mov r7,2dh
mov r6,2ch
mov r5,#0d8h ; расшифровка октета 5 байт которого в CAF0, а три в CA1801
lcall X9080
X8d34: lcall X8e0a ; исполнение "что делать"
Итого получается, что для "что делать" 00 01 02 10 11 данные в октете могут передаваться в открытом виде (а это видимо подписки или что-то вроде того, но я еще не знаю точно что это), но если прописано CRYPTO_MODE = 0C (как это есть у карты SLE44 NRK) то эти данные октета должны передаваться шифрованно. Расшифровка их точно такая-же как и ключа, собственно код с расшифровкой для всех случаев общий.
Т.е. какая мысль.
Цитата(Shurik406 от Вторник 16 Ноября 2021, 17:35:16)

> Единственное что интересно это то что совсем не прописываются даты и темы. Там есть отдельная рутинка для этого?

А они для карты NRK SLE44 не шифрованными должны быть ? Ты бы показал как ты пытался прописать даты и темы. Отэмулировать надоть.
Сказали Спасибо: DIverSA.T, lift-man, Shurik406
« Последнее редактирование: Среда 17 Ноября 2021, 02:16:20 от Ethereal »
Жалоба 178.19.253.189

Страницы: « 1 ... 30 31 32 33 34 ... 44 » Вверх
« предыдущая тема следующая тема »
Перейти в:

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

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

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

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

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

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

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

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