закрыть X

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

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

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

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

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

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

#### Ethereal

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

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

« Ответ #320: Среда 17 Ноября 2021, 04:00:37 »
Короче, я игрался с эмулятором одним и тем-же заданием, изменяя
только один байт - байт "что делать" и сравнивал содержимое
EEPROM до и после. Задание эмулю :
Код: [Выделить]

ec 8114 e5 <- лечение коца в EEPROM
dx 9520 3b0 <- дамп EEPROM до
g 85c8
g 85c8
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
g 8c99
CA
18
01
00
19
01
02
03
04
05
06
07
08
09
0A
0B
0C
0D
0E
0F
F0
08
66
77
88
00
00
00
00
00
g 8cf7
r a
0 <- обход проверки хеша
g 85c8
dx 9520 3b0 <- дамп EEPROM после
q

Результат :
Код: [Выделить]

Иметь ввиду, что расшифровка посылаемого октета 11 22 33 44 55 66 77 88 суть
8E CF 4C F8 BB C0 2C 57
"Что делать" = 00
Прописало 7 байт :
****** DO
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 54 56 32 20 ? § TV2
95E0: 20 20 20 20 20 20 20 29 05 9C 1F 80 C0 00 00 00 ) ? ?А
^^^^^^^^^^^^^^^^^^^^
95F0: 00 00 00 00 00 47 52 00 81 06 80 00 00 00 00 01 GR ? ?
****** POSLE
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 54 56 32 20 ? § TV2
95E0: 20 20 20 20 20 20 20 8E CF 4C F8 9B C0 2C 00 00 ?ПLш>А,
^^^^^^^^^^^^^^^^^^^^
95F0: 00 00 00 00 00 47 52 00 81 06 80 00 00 00 00 01 GR ? ?
******
"Что делать" = 01
"Что делать" = 02
Прописало 7 байт :
****** DO
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 54 56 32 20 ? § TV2
95E0: 20 20 20 20 20 20 20 29 05 9C 1F 80 C0 00 00 00 ) ? ?А
^^^^^
95F0: 00 00 00 00 00 47 52 00 81 06 80 00 00 00 00 01 GR ? ?
^^^^^^^^^^^^^^
9600: 81 08 E4 BD 9F 65 75 95 BF 82 81 06 80 00 00 00 ? д??euї'? ?
****** POSLE
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 54 56 32 20 ? § TV2
95E0: 20 20 20 20 20 20 20 29 05 9C 1F 80 C0 00 8E CF ) ? ?А ?П
^^^^^
95F0: 4C F8 9B C0 2C 47 52 00 81 06 80 00 00 00 00 01 Lш>А,GR ? ?
^^^^^^^^^^^^^^
9600: 81 08 E4 BD 9F 65 75 95 BF 82 81 06 80 00 00 00 ? д??euї'? ?
******
"Что делать" = 10
Прописало 8 байт в имя :
****** DO
95C0: 00 00 00 00 00 00 00 00 81 06 80 00 00 00 00 01 ? ?
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 54 56 32 20 ? § TV2
^^^^^^^^^^^
95E0: 20 20 20 20 20 20 20 29 05 9C 1F 80 C0 00 00 00 ) ? ?А
^^^^^^^^^^^
95F0: 00 00 00 00 00 47 52 00 81 06 80 00 00 00 00 01 GR ? ?
****** POSLE
95C0: 00 00 00 00 00 00 00 00 81 06 80 00 00 00 00 01 ? ?
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 8E CF 4C F8 ? § ?ПLш
^^^^^^^^^^^
95E0: BB C0 2C 57 20 20 20 29 05 9C 1F 80 C0 00 00 00 >А,W ) ? ?А
^^^^^^^^^^^
95F0: 00 00 00 00 00 47 52 00 81 06 80 00 00 00 00 01 GR ? ?
******
"Что делать" = 11
Прописало три оставшихся байта в имя
****** DO
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 54 56 32 20 ? § TV2
95E0: 20 20 20 20 20 20 20 29 05 9C 1F 80 C0 00 00 00 ) ? ?А
^^^^^^^^
95F0: 00 00 00 00 00 47 52 00 81 06 80 00 00 00 00 01 GR ? ?
****** POSLE
95D0: 81 08 00 00 00 00 00 00 00 00 A7 0B 54 56 32 20 ? § TV2
95E0: 20 20 20 20 8E CF 4C 29 05 9C 1F 80 C0 00 00 00 ?ПL) ? ?А
^^^^^^^^
95F0: 00 00 00 00 00 47 52 00 81 06 80 00 00 00 00 01 GR ? ?
******
"Что делать" = 30
Прописало 8 байт в ключ иссуера, а я вообще-то исполнял
команду стоя на иссуере. Так-что непонятно иссуеру тут
писало или текущему провайдеру :
****** DO
9540: 80 00 00 00 00 01 81 08 CB 85 7C F6 EF BD 7B 54 ? ? Л:|цп?{T
9550: 81 06 80 00 00 00 00 01 81 08 61 B0 59 9F 03 AD ? ? ? a°Y? -
^^^^^^^^^^^^^^^^^
9560: F6 E4 81 06 80 00 00 00 00 01 81 08 9F CC 03 66 цд? ? ? ?М f
^^^^^
9570: 25 49 12 AE A7 0B 54 56 32 20 20 20 20 20 20 20 %I R§ TV2
****** POSLE
9540: 80 00 00 00 00 01 81 08 CB 85 7C F6 EF BD 7B 54 ? ? Л:|цп?{T
9550: 81 06 80 00 00 00 00 01 81 08 8E CF 4C F8 BB C0 ? ? ? ?ПLш>А
^^^^^^^^^^^^^^^^^
9560: 2C 57 81 06 80 00 00 00 00 01 81 08 9F CC 03 66 ,W? ? ? ?М f
^^^^^
9570: 25 49 12 AE A7 0B 54 56 32 20 20 20 20 20 20 20 %I R§ TV2
******
"Что делать" = 31
Аналогично прописало 8 байт во второй ключ 3DES-парочки у иссуера, а
может у текущего провайдера
****** DO
9550: 81 06 80 00 00 00 00 01 81 08 61 B0 59 9F 03 AD ? ? ? a°Y? -
9560: F6 E4 81 06 80 00 00 00 00 01 81 08 9F CC 03 66 цд? ? ? ?М f
^^^^^^^^^^^
9570: 25 49 12 AE A7 0B 54 56 32 20 20 20 20 20 20 20 %I R§ TV2
^^^^^^^^^^^
9580: 20 00 00 00 00 00 00 00 00 00 00 00 00 08 00 47 G
****** POSLE
9550: 81 06 80 00 00 00 00 01 81 08 61 B0 59 9F 03 AD ? ? ? a°Y? -
9560: F6 E4 81 06 80 00 00 00 00 01 81 08 8E CF 4C F8 цд? ? ? ?ПLш
^^^^^^^^^^^
9570: BB C0 2C 57 A7 0B 54 56 32 20 20 20 20 20 20 20 >А,W§ TV2
^^^^^^^^^^^
9580: 20 00 00 00 00 00 00 00 00 00 00 00 00 08 00 47 G
******
"Что делать" = 40
Прописало байт сюда. В 10 02 CA 20 испохабив 20
****** DO
98B0: 20 00 00 01 06 80 00 00 00 00 00 00 00 00 00 10 ?
98C0: 02 CA 20 12 0C 1F 1C 1F 1E 1F 1E 1F 1F 1E 1F 1E К
^^
****** POSLE
98B0: 20 00 00 01 06 80 00 00 00 00 00 00 00 00 00 10 ?
98C0: 02 CA 8E 12 0C 1F 1C 1F 1E 1F 1E 1F 1F 1E 1F 1E К?
^^
******
"Что делать" = 50
Переписало три байта ID провайдера :
****** DO
9570: 25 49 12 AE A7 0B 54 56 32 20 20 20 20 20 20 20 %I R§ TV2
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? ? ?
****** POSLE
9570: 25 49 12 AE A7 0B 54 56 32 20 20 20 20 20 20 20 %I R§ TV2
9580: 20 00 00 00 00 00 00 00 00 00 00 00 00 08 00 8E ?
^^
9590: CF 4C 81 06 80 00 00 00 00 01 81 08 46 7D 71 6E ПL? ? ? F}qn
^^^^^
95A0: D6 E4 B5 4D 81 06 80 00 00 00 00 01 81 08 00 00 ЦдчM? ? ?
******
Во всех случаях наблюдалось чихание на тело CA 18 01 кроме нано F0 08

З.Ы.
Вставил в начало задания эмулю
CA A4 04 00 03
47 52 00
и "что делать" 30 опять прописало туда-же куда писало когда я стоял
на иссуере. Так-что это по ходу апдейт ключей иссуера.
З.З.Ы.
Изменил байт номера провайдра в теле CA F0 с 01 на 02. И опять прописало
туда-же. Так-что 30/31 - это иссуера апдейт.

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

Цитата(Shurik406 от Вторник 16 Ноября 2021, 14:02:45)

> Еще я что не знаю, это как вычисляется хэшь в unique ЕММ.

Я подал на эмуль команды
Код: [Выделить]

CA A4 04 00 03
47 52 00
CA 18 02 00 21
01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10
11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20
21

В эмуляторе сформировались три октета для вычисления хеша
Код: [Выделить]

47 52 00 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 1C
^^^^^^^^ <- ID прова на котором стоим
10 11 12 13 14 15 1A 1B
остальные байты вытащены из тела CA1802 и вот так вот расставлены

Далее использовалось правило P2 | CRYPTO_MODE и соответственно
считать 3DES-ом. Использовалась для хеша вот эта парочка ключей для
крипт первым - декрипт вторым - крипт первым (3DES)
Код: [Выделить]

9520 : 22 E4 FF 7D 08 12 92 40 22 47 50 00 81 06 80 00
9530 : 00 00 00 01 81 08 D4 7B 5F B8 AC E5 29 65 81 06
^^^^^^^^^^^^^^^^^^^^^^^
9540 : 80 00 00 00 00 01 81 08 CB 85 7C F6 EF BD 7B 54
^^^^^^^^^^^^^^^^^^^^^^^
9550 : 81 06 80 00 00 00 00 01 81 08 61 B0 59 9F 03 AD

Получился хеш
78 EA 66 0A DF 0A 1C F5
и из них только пять байт проверялись на соответствие, а именно вот так :
Код: [Выделить]

78 EA 66 0A DF 0A 1C F5
1D 1E 1F 20 21
^^ ^^ ^^ ^^ ^^

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

Цитата(Shurik406 от Вторник 16 Ноября 2021, 17:35:16)

> А вот на карте CTV тоже используется 3DES для обновления? И ключи какого провайдера?

А я знаю. Просто добавь воды делай как я.
Сказали Спасибо: balton, Sergio, DIverSA.T, lift-man, Shurik406
« Последнее редактирование: Среда 17 Ноября 2021, 06:42:21 от Ethereal »
Жалоба 178.19.253.189

#### Ethereal

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

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

« Ответ #321: Среда 17 Ноября 2021, 10:44:45 »
Можно между кодом карты NRK SLE44 и картой CTV проводить параллели,
поскольку у нас уже была догадка из-за полного совпадения ATR, что в
карте NRK SLE44 та-же прошивка, что и в CTV , только переписанная
на Сцях для другого чипа. Ну и ... ищем где у CTV отбработчик CA 18 :
Код: [Выделить]

loc_0_E0E4: cmp #$18
bne loc_0_E0EB
jmp INS_CA18_E16E
loc_0_E0EB:

Ага, вон где. Идем туда
Код: [Выделить]

INS_CA18_E16E: jsr sub_0_E6BD ;Receive body to $40..
bset 3, P2_2E
bset 2, P2_2E

Первым делом после приема тела команды у P2 выставляются биты 2 и 3.
Ничего не напоминает ? Правило P2 | CRYPTO_MODE, где CRYPTO_MODE = 0xC ?
Ну и ищем тогда где используется P2, лежащее по адресу $2E так, чтобы
оно битами 2 и 3 включало или не включало что-то, напоминающее
тяни-толкаи : крипт-декрипт-крипт и декрипт-крипт-декрипт.
И сразу-же находим. И даже без разбора кода ставим комментарии :
Код: [Выделить]

sub_0_E635: bsr sub_0_E665
jsr $53C8 ;DES ENCRYPT
brset2 P2_2E, loc_0_E63E
rts
loc_0_E63E: inc $96
bsr sub_0_E665
jsr $53CC ;DES DECRYPT
dec $96
bsr sub_0_E665
jsr $53C8 ;DES ENCRYPT
rts
sub_0_E64D: bsr sub_0_E665
jsr $53CC ;DES DECRYPT
brset3 P2_2E, loc_0_E656
rts
loc_0_E656: inc $96
bsr sub_0_E665
jsr $53C8 ;DES ENCRYPT
dec $96
bsr sub_0_E665
jsr $53CC ;DES DECRYPT
rts

Вот что крест животворящий метод проведения параллелей делает.
Я дольше этот текст набираю, чем установил эту истину.
Сказали Спасибо: balton, Sergio, DIverSA.T, Andro, lift-man, Shurik406
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #322: Среда 17 Ноября 2021, 12:58:46 »
Цитата

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

Именно так работает карта Canal Digital. Там аналогично работает команда CA 88 для контрольных слов. Если P2 = 0x0C - 0x0F (т.е. биты 2 и 3 выставлены), то контрольные слова вычисляются через 3DES ключами [0,1],[1,2],[2,3] и [3,0]. У меня в HackTV вот такой столбик.
/* Triple DES key map table */
static const uint8_t _tdesmap[4][2] = {
{ 0x00, 0x01 }, /* Index C */
{ 0x01, 0x02 }, /* Index D */
{ 0x02, 0x03 }, /* Index E */
{ 0x03, 0x00 } /* Index F */
};
Хотя на этой карте EMM вычисляются через 3DES даже если P2 = 0 - 3.
Цитата

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

Тут есть не большая разница между картами CTV и TV2. Дело в том что провайдеры у CTV провисываются в формате 00 2B x0, а на TV2 в формате 47 5x 00, где х = номер провайдера из пакета CA F0. А значит логично предположить что аппликация там не 100% одинакова.
Цитата

> А они для карты NRK SLE44 не шифрованными должны быть ? Ты бы показал как ты пытался прописать даты и темы. Отэмулировать надоть.

Интересно, я нигде не встречал что бы даты были шифрованные в этом пакете. Там обычно стоит хэшь для проверки пакеты - что бы просто так туда прописки не подсунуть, а шивровка... ну посмотрю.
Цитата

> 47 52 00 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 1C
> ^^^^^^^^ <- ID прова на котором стоим
> 10 11 12 13 14 15 1A 1B
> остальные байты вытащены из тела CA1802 и вот так вот расставлены

Круть. Т.е. практически так-же как и хеши ECM.
Цитата

> Использовалась для хеша вот эта парочка ключей для
> крипт первым - декрипт вторым - крипт первым (3DES)

т.е. совершенно другая парочка для unique EMM. Эти ключи всегда используются для шифвровки/дешифровки unique EMM или их можно выбрать CA 18 02 0x LEN, где х индекс ключа?
Цитата

> Первым делом после приема тела команды у P2 выставляются биты 2 и 3.

Интересно - т.е. там всегда используется 3DES... А как там провайдер + индекс ключей выбирается?
Я когда читаю ваши отчеты, сразу складывается вот такая картина в голове.

Подумал(a) и добавил(a): Среда 17 Ноября 2021, 13:52:25

Есть еще не большая разница между вашей картой CTV и моей.
Ваша:
E990 : E6 4D E7 DF E6 B8 E7 E7 5A 26 F5 CC E1 0A 20 00
E9A0 : 8F 1F 00 1B 00 00 15 00 04 00 00 00 00 00 00 00
E9B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2B -- 00 2B 00 - issuer ID
E9C0 : 00 7B 85 05 EB FA 23 2C D1 AD 44 10 47 34 B4 CA -- key 0, 1 - 7B 85 05 EB FA 23 2C D1, AD 44 10 47 34 B4 CA 31
E9D0 : 31 3C EE A2 14 00 3A A2 A9 9F A5 B9 2E AF 78 D9 -- key 2, 3 - 3C EE A2 14 00 3A A2 A9, 9F A5 B9 2E AF 78 D9 40
E9E0 : 40 A7 0B 43 54 56 20 20 20 20 20 20 20 20 A4 05 -- A7 08 - "CTV", A4 05 - Unique address 00 36 3D 7F B1
E9F0 : 00 36 3D 7F B1 A5 04 45 6D 70 31 00 00 2B 10 19 -- A5 04 - Shared address 46 6D 70 31
Моя:
E990 : E6 4D E7 DF E6 B8 E7 E7 5A 26 F5 CC E1 0A 20 00
E9A0 : 8F 1F 00 1B 00 00 15 00 04 00 00 00 00 00 00 00
E9B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -- 00 00 00 - issuer ID - почему не 00 2B 00? - может быть покацалось тут?
E9C0 : 00 00 00 E1 00 7C E4 A3 25 A0 EF 77 71 15 AB 25 -- key 0, 1 - 00 00 E1 00 7C E4 A3 25, A0 EF 77 71 15 AB 25 EB - странный какой-то ключ...
E9D0 : EB 40 18 4E 77 FF 3C 51 4C 11 86 35 56 AF 54 AC -- key 2, 3 - 40 18 4E 77 FF 3C 51 4C, 11 86 35 56 AF 54 AC 50
E9E0 : 50 A7 0B 43 54 56 20 20 20 20 20 20 20 20 A4 05 -- A7 08 - "CTV", A4 05 - Unique address 00 2F AF 6C A1
E9F0 : 00 2F AF 6C A1 A5 04 3D 09 80 A1 00 00 2B 10 A2 -- A5 04 - Shared address 3D 09 80 A1
Насчет покоцания не уверен так как там в теории покацалось бы сразу 32 байта из за того что проц стирает и прописывает в блоках из 32 байт. Хотя точки запуска виря здесь найдено, значит можно будет починить.
Сказали Спасибо: balton, Sergio, Ethereal, DIverSA.T, lift-man
« Последнее редактирование: Среда 17 Ноября 2021, 14:25:16 от Shurik406 »
Жалоба Записан

#### Ethereal

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

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

« Ответ #323: Среда 17 Ноября 2021, 16:47:14 »
Цитата

> Тут есть не большая разница между картами CTV и TV2. Дело в том что провайдеры у CTV провисываются в формате 00 2B x0, а на TV2 в формате 47 5x 00, где х = номер провайдера из пакета CA F0. А значит логично предположить что аппликация там не 100% одинакова.

АБСОЛЮТНО НЕЛОГИЧНО ТАК ПРЕДПОЛОЖИТЬ !!!
В карте NRK SLE44 данные провайдеров организованы как массив записей и
от этого повсеместно (36 раз) повторяется мантра
Код: [Выделить]

lcall X91f8 ; r6:r7 = 9529h + 66h*r7 + r5

Где
9529h - начало области данных аппликации
66h - размер записи
r7 - номер провайдера
r5 - смещение нужного поля в записи
При этом никто в коде карты не смотрит какие там ID-ы у провайдеров.
В теле CA F0 передается номер провайдера по порядку, на него и смотрят.
То, что они по номерам располагаются так
0: 47 50 00
1: 47 51 00
2: 47 52 00
3: 47 53 00
4: 47 54 00
5: 47 55 00
6: 47 56 00
7: 47 57 00
8: 47 58 00
- каприз оператора. Могли бы прописать какие угодно.
Ну а в коде CTV аналогичная мантра
Код: [Выделить]

[$F2:$F3] = [$25:$26] = $E9BE + $3E*x + a
sub_0_E828: sta $26
lda #$3E
mul
add $26
bcc loc_0_E832
incx
loc_0_E832: add #$BE
sta $26
sta $F3
txa
adc #$E9
sta $25
sta $F2
rts

т.е. точно такой-же массив записей, только размер у записей меньше (3Eh).
И лишь в результате каприза оператора по номерам провайдеров разложены ID-ы :
0: 2B 00 xx
1: 2B 10 xx
2: 2B 20 xx
3: 2B 30 xx
4: 2B 40 xx
5: 2B 50 xx
6: 2B 60 xx
7: 2B B0 xx
8: 2B C0 xx
ВЫВОД - В ЭТОМ ОТНОШЕНИИ ОБЕ АППЛИКАЦИИ 100% ОДИНАКОВЫ
ИССУЕР С НОМЕРОМ 0 И ПРОВАЙДЕРЫ С НОМЕРАМИ 1..8
Соственно из того, что "что делать" 50 пишет ID провайдера уже следует,
что другого и не следует ожидать. А ну как запишут ID совпадающий
вторым и третьим байтом с уже на карте существующим и что тогда ?
Алгоритм в самом себе заблудится ?
Сказали Спасибо: balton, Sergio, DIverSA.T, lift-man, Shurik406
Жалоба 178.19.253.189

#### Ethereal

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

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

« Ответ #324: Четверг 18 Ноября 2021, 09:06:00 »
Цитата

> А как там провайдер + индекс ключей выбирается?

Дык
Код: [Выделить]

ec 8114 e5
g 85c8
g 85c8
CA
A4
04
00
03
47
52
00
g 8c99
CA
18
02
00
21
A7
0B
45
74
68
65
72
65
61
6C
20
20
20
EF
06
11
22
33
44
55
66
DF
00
F0
08
77
88
20
97
42
42
84
61

и трассировать. И тама прям сразу.
Кстати
Код: [Выделить]

CA A4 04 00 03
47 52 00
CA 18 02 00 21
A7 0B
45 74 68 65 72 65 61 6C 20 20 20 <- пишется по любому
EF <- не уверен, но это нано не проверяется, и вообще никакое
06
11 22 33 44 55 66 <- апдейтящаяся информация
DF 00
F0 08
77 88 <- апдейтящаяся информация
20 <- а это такой-же параметр "что делать", что и у CA1801
97 42 42 84 61 <- 5 байт из сигнатуры

Это вот запись ключа провайдеру.
Интересно, что если стоять на иссуере, то CA 18 02 не сработает, это проверяется.
Апдейтить можно только стоя на провайдере, т.е. провайдера.
И самое интересное, что имя из нано A7 0B прописывается провайдеру в любом случае (при любом "что делать") если хеш сошелся. Т.е. алгоритмы в Eurocrypt-S2 весьма ущербны, видимо из-за нехватки EEPROM-а под аппликацию.
Сказали Спасибо: balton, aleks07091953, DIverSA.T, lift-man, Shurik406
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #325: Четверг 18 Ноября 2021, 12:12:16 »
Спасибо! Здесь много чем занятся есть...
Цитата

> алгоритмы в Eurocrypt-S2 весьма ущербны, видимо из-за нехватки EEPROM-а под аппликацию.

Франкенштейн это, а не алгоритм. Целое мучение...
- Спасибо
Жалоба Записан

#### Ethereal

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

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

« Ответ #326: Четверг 18 Ноября 2021, 21:43:52 »
Там по видимому дело обстоит так :
ID-ы провайдера внутри карты для красоты и алгоритм карты с ними никак не работает. Он выдает их ресиверу в виде консультаций, ресивер строит таблицу соответствия ID-ов номерам (индексам) провайдеров и дальше в карточных командах задает номера проваейдров, которые имеются ввиду. Алгоритмы карты работают с номерами, которые для них лишь индекс в массиве записей данных провайдеров.

Подумал(a) и добавил(a): Четверг 18 Ноября 2021, 22:22:11

Не, ну кроме CA A4 04, конечно. Эта команда есс-но делает поиск по ID-ам, но заканчивается это тем, что она выставлянт в ячейке ОЗУ E0 индекс текущего провайдера. Т.е. все опять сводится к индексам

Подумал(a) и добавил(a): Четверг 18 Ноября 2021, 23:21:55

Вот в начале CA 18 02 в записи данных провайдера ищется поле, которое
в свою очередь запись - запись с ключом
Код: [Выделить]

X8d38: clr a
mov r7,a
mov r5,#3
lcall X91f8 ; r6:r7 = 9529h + 66h*r7 + r5
mov 2dh,r6 ; r6:r7 = 952ch
mov 2eh,r7

Провайдер фиксированно берется нулевым (т.е иссуер), а поле -
самое первое после трехбайтного поля с ID. Т.е. ключ самый первый.
Потом именно данный адрес передается как параметр подпрограмме,
которая считает хеш (в данном случае от 3 октетов)
Код: [Выделить]

mov r7,2eh ; r6:r7 = 952ch
mov r6,2dh
mov r5,#3 ; 3 octets
lcall X8ffe ; Forms octets at 4B.. and hashes them

Если хеш совпал, то надо расшифровать то, что апдейтится.
И повторяется тоже самое :
Код: [Выделить]

clr a
mov r7,a
mov r5,#3
lcall X91f8 ; r6:r7 = 9529h + 66h*r7 + r5
mov 2dh,r6 ; r6:r7 = 952ch
mov 2eh,r7

Опять провайдер жестко задан как нулевой (иссуер) и опять самый
первый ключ у него. А вот расшифровка апдейтящихся данных :
Код: [Выделить]

X8dfd: mov r7,2eh ; r6:r7 = 952ch
mov r6,2dh
mov r5,#0d8h
lcall X9080

Параметром передается именно этот ключ.
А вот куда расшифрованное пишется. Если апдейтится ключ (параметр
"что делать" = 20/21/22/23) то
Код: [Выделить]

X8f96: mov r0,#0d6h
mov a,@r0 ; параметр "что делать" 20/21/22/23
anl a,#0fh ; превращается & 0fh в number of key to update 0/1/2/3
mov r5,a
inc r0
mov a,@r0 ; number of prov 1..8 to update a key
mov r7,a
mov a,r5
mov b,#12h ; 12h * number_of_key
mul ab
add a,#0dh ; 12h * number_of_key + 0dh
mov r5,a
lcall X91f8 ; r6:r7 = 9529h + 66h*r7 + r5

А откуда берется
number of prov 1..8 to update a key
Он тут читается из ячейки ОЗУ 0d7h. Ну так надо посмотреть а как
какое-то значение в эту ячейку попало. А вот так попало :
Код: [Выделить]

mov r0,#0e0h ; here lies current PROV
mov a,@r0
mov r0,#0d7h
mov @r0,a

Ну так и получается, что текущему провайдеру, номер ключа 0/1/2/3
для "что делать" 20/21/22/23 соответственно.
Текущий провайдер выбирается CA A4 04
Что тут можно было не понять ?
Для того и эмуль, чтобы быстро стало все понятно.
Трассируешь и что стало понятно тут-же в другом окне пишешь комментариями в листинг.
Потом осматриваешь полученное в листинге и по новой трассируешь комментрируя
в листинге места, которые прошлый раз не понял, а теперь на основании нового
знания они уже понятны.

Подумал(a) и добавил(a): Четверг 18 Ноября 2021, 23:42:42

Комментировать надо так :
Код: [Выделить]

mov r6,#0
mov r7,#64h
mov r5,#0d8h
mov r3,#8
lcall X8151 ; memcpy(@r5++, @r6:r7++, r3)

Самую суть подпрограммы в комментариях.
Причем сразу у всех вызовов X8151 в листинге, функцией "замены" редактора
Тогда листинг читабелен. Вот тут видно, что копируется
строчка из 8 байт с адреса ОЗУ 0x64 по адресу ОЗУ 0xd4.
Добегаешь до
lcall X8151
и смотришь в дампе а что именно копируется. Какой у этих данных смысл.
Ну и потом выполняешь lcall X8151 целиком дебажной командой p
И все, поехали дальше. Потом оказывается, что обработка почти любой
команды состоит из таких мантр как эта memcpy и надо только разбирать
немного "клея" между ними и какие именно данные идут куда.
Патаму-чта писалось на Сцях. Отсюда мантрность кода.
Сказали Спасибо: balton, Sergio, DIverSA.T, skad163, lift-man, Shurik406
« Последнее редактирование: Четверг 18 Ноября 2021, 23:47:00 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #327: Пятница 19 Ноября 2021, 00:47:51 »
Цитата

> Он выдает их ресиверу в виде консультаций, ресивер строит таблицу соответствия ID-ов номерам (индексам) провайдеров и дальше в карточных командах задает номера проваейдров, которые имеются ввиду. Алгоритмы карты работают с номерами, которые для них лишь индекс в массиве записей данных провайдеров.

Да, вы правы - когда карта впервые вставляется, то все провайдеры выдаются ресиверу. Если провайдер который посылается в пакете не совпадает с теми что в списке - то ресивер совсем не будет ничего карте посылать. Тоже самое происходит с EMM - там должны совпадать unique и shared address. Global ЕММ конечно посылается на прямую.
Список так-же обновляется когда карта принимает EMM - вдруг там новый провайдер прописали.
Извините - еще не пробовал unique пакеты отослать карте. Слишком занят на работе. Надеюсь на следующей неделе или в выходные.
Сказали Спасибо: balton, Sergio, Ethereal
Жалоба Записан

#### Ethereal

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

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

« Ответ #328: Пятница 19 Ноября 2021, 02:02:50 »
Цитата

> E9B0 : 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 -- 00 00 00 - issuer ID - почему не 00 2B 00? - может быть покацалось тут?
> E9C0 : 00 00 00 E1 00 7C E4 A3 25 A0 EF 77 71 15 AB 25 -- key 0, 1 - 00 00 E1 00 7C E4

Да действительно от кинутого не туда глитча серануло 8 байт с начала области данных аппликации, а это адрес $E9BE. Ключ-то бог с ним какой он, именно этот все равно индивидуальным был для каждой карты, как я понимаю, следующий - групповой и он видимо не затронут. А вот один байтик ID иссуера можно полечить.
Но увы этого нельзя сделать командой CA 18. Ибо
1.) CA 18 00 игнорируются
2.) CA 18 02 пишут для текущего провайдера и когда ты стоишь на иссуере игнорируются
3.) CA 18 01 можно исполнять стоя хоть на иссуере, хоть на провайдере, но тут в теле CAF0 указывается какому провайдеру писать и этот байтик проверяется на диапазон 1..8
Так-что командой CA 18 с "что делать" = 50 всем провайдерам ID-ы можно прописать, а вот иссуеру хер.

Подумал(a) и добавил(a): Пятница 19 Ноября 2021, 02:12:09

Цитата(Shurik406 от Пятница 19 Ноября 2021, 00:47:51)

> Global ЕММ конечно посылается на прямую.

Это CA 18 00 ? Как я вижу в коде карты SLE44 NRK такие не исполняются. Просто ответ 90 00 и больше ничего.

Подумал(a) и добавил(a): Пятница 19 Ноября 2021, 02:52:45

Про лечение карты CTV :
Если ты запускал виря командой CA 24 и если в твоей карте тот-же UserROM,
что и в моей (а это почти наверняка так), то можно сделать следующее :
Подай команду
CA 24 09 A0 xx
скорми ей xx байт в которых вирь
A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
и запусти его
если карта выдаст
B0
8F 1F 00 1B 00 00 15 00 04 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
90 00
Если вот именно это, то замени в вирусе B0 на D0
и при повторении когда карта выдаст квитанцию
D0
скорми ей
8F 1F 00 1B 00 00 15 00 04 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 2B
и получи
90 00
Потом считай заново дамп EEPROM.
Т.е. я тут выкидываю управление в ОС, симулируя что якобы поданы команды
DB B0 P1 P2 20 и DB D0 P1 P2 20. Адрес EEPROM по которым читать/писать
возьмется из параметров P1 и P2 у заголовка CA 24
Сказали Спасибо: balton, Sergio, DIverSA.T, lift-man, Shurik406
« Последнее редактирование: Пятница 19 Ноября 2021, 03:15:48 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #329: Пятница 19 Ноября 2021, 13:25:04 »
Цитата

> Подай команду
> CA 24 09 A0 xx
> скорми ей xx байт в которых вирь
> A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
> и запусти его

Если дисассеvблировать, то выходит вот это...
LDA #B0
STA $2C ; INS location
LDA #20
STA $2F ; LEN for INS B0
RSP ; Reset stack pointer
CC $4198 ; location of OS INS check
т.е. выходит вот это как CLA INS P1 P2 LEN - CA B0 09 A0 20. А значит выбросит 32 байта от адреса $Е9А0.
Но что то не срабатывает. Выдает 67...
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 67 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 67 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 67 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 98 FF 1F 01 24 < 98 - пропустил стоп-бит?
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 67 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 1F 01 24
TX Data : 05 0E 03 01 8F 00
RX Data : 05 10 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 8C
90 00
TX Data : 20 0E 03 C4 CA 24 09 A0 10 80 CF
TX Data : 9D 9D 9D 9D A6 B0 B7 2C A6 20 B7 2F 9C CC 41 98
TX Data : 20 00 01 09 0F 00
RX Data : 1F 01 24
Кстати квитанция 67 не ответ карты 67 00, а что-то еще. Если перепрыгну например на 419А, то ответ 66, а если на 41А1, то ответ 5Е.
- Спасибо
Жалоба Записан

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

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

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

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

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

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

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

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

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