закрыть X

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

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

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

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

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

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

#### Ethereal

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

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

« Ответ #220: Среда 20 Октября 2021, 14:09:54 »
Вот так оно работает :
/* First glitch here */
reg_22 = ee[ee_offset + 0x0E];
send_byte(0x3F); // Посылка 3F
send_bytes(13); // Посылка 6C 00 00 24 A0 30 A7 58 00 00 01 01 reg_22
/* infinite loop */
while(1)
{
send_bytes(2); // Посылка 90 00 или другого ответа SW1 SW2
/* Second glitch here */
reg_22 |= ee[ee_offset + 0x0E];
reg_2B_CLA = rec_bytes(1); // receive CLA byte
reg_2C_INS = rec_bytes(1); // receive INS byte
reg_2D_P1 = rec_bytes(1); // receive P1 byte
reg_2E_P2 = rec_bytes(1); // receive P2 byte
reg_2F_P3 = rec_bytes(1); // receive P3 byte (byte is called Le in ISO7816)
if(reg_2B_CLA == 0xDB) checkINSinROM();
else checkINSinEEPROM();
}

Подумал(a) и добавил(a): Среда 20 Октября 2021, 14:18:20

А вот так видимо надо пробовать
14 0E 03 01 20 16 B8 09 8F 20 xx xx 09 C4 DB B0 00 00 04 BF 00

Подумал(a) и добавил(a): Среда 20 Октября 2021, 14:25:16

Цитата

> Изначально думаю что вот здесь после глитча в ATR.
> 0C 20 xx xx 09 C4 DB B0 00 00 01 85 00

Ты почему-то это дело в отдельную глитчерную команду стремишься выделить. Дескать прием ATR одной командой, а посылка READ BINARY другой. Но тогда
Цитата

> 0C 20 xx xx
> ^^^^^^^^ пауза

пауза глупой становится. Какая пауза ? После чего пауза ? После посылки от компа глитчеру новой (второй) глитчерной команды на скорости 115200 бод ? Эта посылка времени столько займет, что поезд уже давно уйдет. В одну команду тут надо все далать.

Подумал(a) и добавил(a): Среда 20 Октября 2021, 14:30:48

З.Ы.
Уточнил Си-шную схему.
Сказали Спасибо: egorka1, balton, Sergio, Shurik406
« Последнее редактирование: Среда 20 Октября 2021, 14:30:48 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #221: Среда 20 Октября 2021, 14:34:42 »
Да, хотел разделить, так как глитч на ATR не с первого раза срабатывает. Только когда глитч выдает байт 0x84, 0x80 или 0x00, тогда переходить на второй удар. Но, да, вы правы. Надо делать в одной строке.
А если вот так?
TX Data: 14 0E 03 01 20 16 B8 09 8F
RX Data : ... и проверить байт
Если хорош, то...
TX Data: 20 xx xx 09 C4 DB B0 00 00 04 BF 00
RX Data: ...
..а если нет, то все сначала.
т.е. все в одной команде глитчера выходит.
Или получать байты можно только после полного завершения команды?
ЗЫ...нет, так не получится. Надо все сразу.
- Спасибо
Жалоба Записан

#### Ethereal

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

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

« Ответ #222: Среда 20 Октября 2021, 14:37:33 »
Цитата

> Я не вижу где именно прописывается бит 3 в рег. $22 или в $E00E - значит или в аппликации (еще не смотрел) или софтом используя комманду D0 в ROMе. Это наверное самый последний этап персонализации, так как после этого в ROM не проникнуть (без глитча).

Именно так. Последний эта персонализации. Карте через команду ОС DBD0 прописывается EEPROM, потом той-же командой выставляется бит 3 в OTP ячейке $E00E и этим доступ к операционке отрубается. Дальше действует только аппликация. И в таком виде карта уезжает к пользователю.

Подумал(a) и добавил(a): Среда 20 Октября 2021, 14:45:40

Цитата(Shurik406 от Среда 20 Октября 2021, 14:34:42)

> А если вот так?

Не, так никак. Время улетает неотвратимо. Пока ты там от глитчера компом что-то принимаешь на скорости 115200 исполнение кода на карте освежение ячейки $22 заведомо осуществит и что-либо делать будет уже поздно. В скрипте сделай так - результат длинной глитчерной команды проверяй и смотри выбился ли байт в ATR и если нет, то точку глитча не продвигай - повтори в этой-же еще раз. А если выбился смотри на общий результат, лучше на коцанной карте и по длине как я советовал. Если результата нет - продвигай точку глитча. И так ищи.
Только внутрь подпрограммы SEND не залезай. На живой карте из глитчерной команды выше убери глитчи и крути цикл перебирая xx xx. Как только ответ от карты будет начинаться не 6D 00 , а байт 6D будет искажаться так это ты поставил задержку такой большой, что карта уже и отвечать начала а ты еще задержку держишь. И потом глитчер за старт-бит принимает бит данных. Так вот без глитчей определи максимальную задержку больше которой ставить не надо. И когда будешь на коцанной карте с глитчами больше и не ставь. Предел цикла FOR определи разумно. А то ты так и карту попалил - полез куда-то в недра SEND бессмысленно, похоже на то. Глитч внутри SEND или передаваемый байт исказит (и какой он был на самом деле ты уже не догадаешься), т.е. пользы будет ноль, а если и будет, то от того, что карту заглючило непредсказуемо. Такое иногда бывает - она вдруг выдаст логике не поддающееся, но надеяться на это очень неосторожная практика - попалить данные в EEPROM легко.

Подумал(a) и добавил(a): Среда 20 Октября 2021, 15:38:27

Но лучше еще с помощью AbortIfDxLo измерить задержку
Код: [Выделить]

lda $E020 <- отсюда, эту точку мы знаем
sta $23
lda $E016
cmp #$20
bne loc_4064
jmp $E016
loc_4064: lda #$3B
brset 7, $23, loc_406B
lda #$3F
loc_406B: jsr SEND_4FC6 <- до старт-бита внутри SEND

Потом при выдаче строки ATR из 13-и байт померить задержки от байта до байта тут
Код: [Выделить]

SENDstr_5064: sta $9C
loc_5066: lda ,x
jsr SEND_4FD4
incx
dec $9C
bne loc_5066
rts

И наконец рассчитать при какой задержке после приема байта SW2 мы попадем
Код: [Выделить]

ldx #SW1_20
lda #2
jsr SENDstr_5064 <- посылает байты SW1 и SW2
lda SW1_20
ora SW2_21
cmp #$90
beq loc_411B
clr INS_2C
lda #$90
loc_411B: sta SW1_20
clr SW2_21
lda INS_2C
sta $A3
lda $E00E <- сюда
and #$8F
ora $22
sta $22

Не обязательно точно, хотя бы приблизительно плюс-минус. Головоломка на рассчет.
Смысл такой, что задержку для глитча можно прикинуть, а не только методом тыка выдалбливать.
----------------------------------
Растактовки процессора из семейства st16, а ну вот тут я в архиве нашел процедуру RECV которую для этого чипа рисовал. Выглядит так, что тут прием для двух скоростей - 9600 и 115200 бод на 3.579545 МГц (бит Flags.7 скорость переключает).
Код: [Выделить]

IOPORT EQU $0
Flags EQU $28
TMP_X EQU $83
RxTx_Cnt EQU $84
PARITY EQU $85
RECV: STX TMP_X ;3t
BRSET 0, IOPORT, * ;5t
LDA #3 ;2t
BRSET 7, Flags, *+5 ;5t
LDA #105 ;2t
BSR Delay_A ;5t + 5t + A*5t
LDA #9 ;2t
STA RxTx_Cnt ;3t
_recv_loop: ROLX ;2t
BRSET 0, IOPORT, *+3 ;5t
TST Flags ;3t
BMI *+6 ;3t
LDA #66 ;2t
BSR Delay_A ;5t + 5t + A*5t
BSR RETURN ;5t + 5t
DEC RxTx_Cnt ;5t
BNE _recv_loop ;3t
TXA ;2t
COMA ;2t
LDX TMP_X ;3t
RETURN: RTS ;5t
Delay_A: DECA ;2t
BNE Delay_A ;3t
RTS ;5t

Откуда растактовки брал, а ниоткуда. Вычислял логикой глядя на код карты CTV и измерял, только подробностей не помню.
А так можно и примерно прикинуть - легкая инструкция 2 такта карты, тяжелая аж 5. И найти примерно диапазон задержек +- 100 тактов на исследовании которого сосредоточиться.
Сказали Спасибо: balton, Sergio, Shurik406
« Последнее редактирование: Среда 20 Октября 2021, 15:41:49 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #223: Среда 20 Октября 2021, 16:04:16 »
Интересный метод - надо поиграть с Ins06_AbortIfDxLo. Сейчас времени нет. И так работы на работе полно.
А на сломанной карте можно использовать CLA - DD? Там все-таки еще отвечает 6E 00.
А пока вот лог из первого полета filmnet.plus/...tch1.txt
Есть места с квитанцией B0, но это кажется из ОЗУ вылетает, а не прямой ответ.
- Спасибо
« Последнее редактирование: Среда 20 Октября 2021, 16:31:47 от Shurik406 »
Жалоба Записан

#### Ethereal

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

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

« Ответ #224: Среда 20 Октября 2021, 18:40:04 »
Цитата(Shurik406 от Среда 20 Октября 2021, 16:04:16)

> А на сломанной карте можно использовать CLA - DD? Там все-таки еще отвечает 6E 00.

А что это даст гипотетически ?
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #225: Среда 20 Октября 2021, 19:30:38 »
Короче вот..
Pause 200924
12 12 F8 6C 00 00 24 A0 30 A7 58 00 00 01 01 8C 90 00 6E 00
Pause 200925
11 11 F8 6C 00 00 24 A0 30 A7 58 00 00 01 01 8C 90 00 BA
С паузой промазал старт бит и принял первый бит данных за него. Еще видимо приняол стоп бит как часть данных...
6E - 1* 1101110 1**
BA - 1* 1011101** 0
* старт бит
** стоп бит
т.е не стоит глитчать дальше 20 09 00
Сказали Спасибо: Sergio, Ethereal
Жалоба Записан

#### Ethereal

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

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

« Ответ #226: Среда 20 Октября 2021, 20:13:37 »
Цитата(Shurik406 от Среда 20 Октября 2021, 16:04:16)

> А пока вот лог из первого полета filmnet.plus/...tch1.txt

Херь какая-то это, а не лог.
Ты пробуешь одну и ту-же точку 10 раз и
1.) В подавляющем большинстве случаев реакция карты на команду DB B0 молчание
2.) А если карта и рыгает изредка что-то, то рыг в одной точке неповторяемый, но в целом из одного и того-же репертуара.
Как такое может быть ? Ты до этого видел, чтобы реакция карты на твой настроенный глитч в широком диапазоне последовательных точек была почти одним молчанием ? Да нет, в большинстве случаев карта глитч игнорила и отвечала как надо. Или чтобы в одной точке рыгало неповторимо ? Да нет, наблюдалась типично пара возможных реакций - глитч сработал или не сработал.
У тебя во всех точках выходит один и тот-же результат - почти всегда молчание и изредка случайно выбранный рыг из определенного репертуара. Все точки ведут себя одинаково.
Кстати, замеченная тобой "квитанция" B0 всегда в одном и том-же виде B0 00 00 24 A0 30 A7 58 00 00 01 01 8C 90 00 причем в совершенно разных точках. Опять выходит все точки ведут себя одинаково.
Подумай как могла случиться подобная херь. Хотя конечно надо посмотреть что у тебя там дальше по точкам будет выходить, но если и там та-же самая хрень явно скрипт надо слегка переделать.
Сказали Спасибо: balton, Sergio, lift-man, Shurik406
« Последнее редактирование: Среда 20 Октября 2021, 20:51:33 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #227: Четверг 21 Октября 2021, 09:04:00 »
Уряяя! Нашел глитч!
RX Data: (00) 13 33 3F 6C 00 00 24 A0 30 A7 58 00 00 01 01 00 90 00 B0 00 40 3A 26 01 6B A2 5C A7 58 00 00 00 00 8C 00 FF FF E0 68 20 DF 00 00 00 00 00 00 00 00 00 00 90 00
Вот EEPROM. Видимо там всего где-то 2032 байта.
filmnet.plus/...5822.txt
Тоже видно что покалечены E081 -> E0FF ...еще не разобрался как, но каким-то логическим оператором. Наверное OR 23.
Сказали Спасибо: balton, Sergio, Ethereal, Andro, lift-man
« Последнее редактирование: Четверг 21 Октября 2021, 18:49:01 от Shurik406 »
Жалоба Записан

#### Ethereal

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

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

« Ответ #228: Пятница 22 Октября 2021, 08:10:48 »
ГРАЦ !!!
А я на измене сидел, что что-то не то. А новый метод работает. Главное он будет применим ко всем картам Eurocrypt-S2, у них наверно у всех похожая операционка.
Покажи на какой точке глитч сработал.

Подумал(a) и добавил(a): Пятница 22 Октября 2021, 08:17:25

Цитата(Shurik406 от Четверг 21 Октября 2021, 09:04:00)

> но каким-то логическим оператором. Наверное OR 23.

Дозапись без стирания именно так и работает. Стирание единицы превращает в нули, а запись нули в единицы. Значит голая запись без стирания наложит новые данные на старые логической операцией OR

Подумал(a) и добавил(a): Пятница 22 Октября 2021, 08:48:36

Вот этот кусок начала аппликации у тебя не запоганен.
Код: [Выделить]

E070: B6 2B lda $2B ;Истинная точка старта аппликации
E072: A1 DD cmp #$DD ;CLA = DD ?
E074: 26 07 bne loc_E07D
E076: A6 6E lda #$6E
E078: B7 20 sta $20 ;SW1 ответа
E07A: CC 40 FE jmp loc_40FE ;Обратно в ROM
E07D: B6 2C lda $2C ;INS карточной команды
E07F: A1 первый байт инструкции проца cmp #$xx

Вот поэтому она на класс DD отвечала 6E 00
А значит этот вывод в слепую
Цитата(Ethereal от Воскресенье 17 Октября 2021, 06:44:36)

> Во всяком случае самое начало аппликации не тронуто. Она начинается с проверки - а не класс-ли DD и ответ 6E 00 если да.

был верным. А вот дальше крепко ты ее сверху мусором "поперчил". Но только четыре блока EEPROM по $20 байт каждый.

Подумал(a) и добавил(a): Пятница 22 Октября 2021, 09:23:10

Начиная с $E100 уже абсолютно осмысленное
Код: [Выделить]

E100: 68 хвостик пока непонятно какой инструкции
E101: A1 82 cmp #$82
E103: 26 02 bne loc_E107
E105: 20 19 bra loc_E120
E107: A1 84 cmp #$84
E109: 27 24 beq loc_E12F
E10B: A1 86 cmp #$86
E10D: 26 0A bne loc_E119
E10F: C6 E0 0E lda $E00E ; состояние карты
E112: A1 04 cmp #4
E114: 26 03 bne loc_E119
E116: CC E1 B3 jmp loc_E1B3
E119: A6 6D lda #$6D
E11B: B7 20 sta $20
E11D: CC 40 FE jmp loc_40FE ; обратно в ROM

Сравни с аппликацией карты CTV :
Код: [Выделить]

loc_0_E0F8: cmp #$86 ; 'Ж'
bne loc_0_E106
lda byte_0_E00E
cmp #4
bne loc_0_E106
jmp loc_0_EA3D
loc_0_E106: lda #$6D
sta SW1_20
loc_0_E10A: clr $97
jmp Exit_40FE

Это место повторяется смыслом один в один. Не адресами, но смыслом. Хотя вот адрес возврата в ROM 40FE таки совпал, но это пока ни о чем не говорит.
А вот карточных команд INS=82 и INS=84 в аппликации карты CTV не было, а в аппликации коцанной карт есть. И я даже не знаю что это за команды такие.

Подумал(a) и добавил(a): Пятница 22 Октября 2021, 09:45:01

Короче, ты покоцал участок EEPROM E080..E0FF
Попробую конечно восстановить коцанный кусок по оставшимся нулевыми битам в нем, сопоставляя с аппликацией карты CTV. Чтобы карту полечить. Но шансов мало, поскольку видны существенные различия. Не было в аппликации CTV карточных команд с INS $82 $84. Но попробую. Если однозначно не получится попробую не совсем точную лечилку сделать, лишь бы вылечила. А так чтобы восстановить аппликацию точно нужно еще одну такую карту и воспроизвести метод один в один ничего в нем не меняя.
Я карту CTV тоже со второго экземпляра сдампил полностью. На первом отработал метод, но пока нужные адреса выбивал и выяснял что в ней к чему и почему EEPROM покоцал. А вот на втором экземпляре уже отработанным методом снял EEPROM чисто.

Подумал(a) и добавил(a): Пятница 22 Октября 2021, 10:26:06

Цитата(Shurik406 от Четверг 21 Октября 2021, 09:04:00)

> Вот EEPROM. Видимо там всего где-то 2032 байта.

Тогда не ST16600. EEPROM много. Но вот я нашел ST16601
html.alldatasheetru.com/...
Тут тоже ОЗУ 128 байт, зато EEPROM 1088 байт, опять не то, но уже ближе
Сказали Спасибо: Sergio, lift-man, Shurik406
« Последнее редактирование: Пятница 22 Октября 2021, 10:26:06 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #229: Пятница 22 Октября 2021, 12:29:46 »
Я уже начал сравнивать ОС с картой CTV. Покалеченый блок отвечает за проверку байта INS и перепрыгивает туда куда надо. Идея была такой что бы найти где идет обработка каждой INS и переправить туда.
Код: [Выделить]

cmp #$88 ; check INS
bne check_next_INS ; no? jump to next check
jmp INS_88 ; jump to INS 88 subroutine

типа того. Оригинальный код наверное не востановить и других карт с этим ATR у меня нет.
Еще была идея прописать туда дополнительный код (если место останется) на INS DD, что бы перекинуться назад в ROM, но для этого мне нужен дамп ROMа что бы знать куда именно и что бы проверку на бит 22.3 промазать.
Точки для карты с ATR 24 вот...
Код: [Выделить]

TX Data : 13 0E 03 01 20 11 3D 09 8F 20 01 51
TX Data : 09 C4 DB B0 07 E0 20 BF 00
RX Data : 13 33 3F 6C 00 00 24 A0 30 A7 58 00 00 01 01 00
90 00 B0 10 02 CA 20 00 00 00 00 00 00 00 00 00
00 00 00 FF 80 08 00 01 6B 00 6B 00 00 00 00 00
00 00 00 90 00

Причем бить надо раз 10 что бы проникнуть в ROM. С первого раза никогда не идет. Может быть там у другие, более надежные, точки есть, но не проверял...
Но карты с ATR 25 довольно упрямы. Во первых там практически никогда не выявляется байт 00 в ATR. В 99% случаев выходит 84 или иногда 80. Думаю это не важно, но все-таки показывает разницу между этих карт. А во вторых, даже ни разу не проник в ROM. Надо наверное что нибудь поднастроить...
Код: [Выделить]

TX Data : 13 0E 03 01 20 16 B8 09 8F 20 xx xx
TX Data : 09 C4 DB B0 00 20 20 BF 00
RX Data : 13 12 3F 6C 00 00 25 A0 30 A7 58 00 00 01 01 84
90 00 6D 00

Сказали Спасибо: Ethereal, lift-man
Жалоба Записан

Страницы: « 1 ... 21 22 23 24 25 ... 44 » Вверх
« предыдущая тема следующая тема »
Перейти в:

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

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

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

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

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

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

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

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