Емулятор таксофонної картки (частина 1)

Ох, хлопці, дивлюсь, зачепила вас тема таксофонних карт за живе місце. Та й не тільки вас, мене теж. Вийшло дві великі статті на цю тему, а відгуків вистачило б на “Війну і мир”. Подумав я тут, подумав і вирішив видати вам цикл статей, кінцевою метою якого буде створення спільними зусиллями емулятора таксофонної карти. Прошу всіх бажаючих приєднуватися до мене. Вся інформація, яка буде викладена в даному циклі, є як власною, так і творчою переробкою інших джерел. Так що не плюйтесь і не кричіть, що цим дерьмом заповнений весь І-нет. Заповнений то він заповнений, але от систематизувати цю інформацію ніхто не береться, і плюс до всього більшість інфи застаріла і до справи не відноситься. Тому в даному циклі статей буде розбиратися покрокове виготовлення емулятора таксофонної карти на основі тільки найсвіжішої і перевіреної інформації, що буде вельми корисним для початківців “умільців”. Але інформація буде подаватися малими порціями, щоб можна було перевіряти її актуальність. Так що статті будуть невеликі, але змістовні. Отже, приступимо.

Крок перший. Що представляє собою таксофонна карта і які вони бувають.

Перші смарт-карти (карти на основі чіпів) з'явилися в середині 80-х років і буквально моментом витіснили магнітні карти та карти на аналогових елементах в області телекомунікацій. Нове покоління карт забезпечувало і забезпечує (на жаль :( ) більш високий ступінь захисту та стійкості до різного роду зломів.

Основне застосування смарт-карти знайшли в області громадської телефонії, і спеціальні таксофони замінили звичні всім автомати з монетами. До нас цей процес докотився десь до середини 90-х років, ну а бум таксофонних карт припадає на нинішній момент. Ну а оскільки є бум, то є й монополія телефонних компаній, що нам, хакерам, ясна річ, вельми не до вподоби. Тому, й почали люди вигадувати способи обдурити цю плоску річ, вагою в кілька грамів, але що містить у собі стільки халяви, що й уявити важко. Чи мислиме це, мати девайс, за допомогою якого можна дзвонити кенту в Штати або в Бундес, спілкуватися з ним годинами і не платити за це ні копійки. Чи подобається така перспектива? Мені теж, тому давайте спробуємо спільними зусиллями створити такий девайс і витерти всім носа.

Таксофонна карта являє собою пластикову картку зі вбудованим чіпом (рис.1). Чіп являє собою комбіновану мікросхему пам'яті, яка містить як область для запису даних, так і область лише для читання. (зазвичай область read-only містить деякі дані про тип карти, її виробнику та дещо ще). Ця мікросхема не що інше, як EPROM - чіп (ПЗУ програмоване постійним напругою) на основі NMOS або CMOS технології і обсягом 256 або 128 біт. Інші технічні характеристики наведені нижче:

    • протокол обміну даними: синхронний;
    • споживана потужність: 85 мВт в режимі читання, 125 мВт в режимі запису (NMOS - технологія, панове!);
    • напруга програмування: 21 В;
    • час доступу: 500 нс;
    • робочий діапазон температур: -100...+170 0С.

Наскільки я знаю, всі сучасні смарт-карти засновані на стандарті ISO-7816, що описує мікросхеми синхронного обміну даними для таксофонних карт.

Рис.1

Але чому ж ми не можемо перезаписувати ці карти, якщо це ПЗУ, яке, як ми знаємо, стирається або ультрафіолетом, або постійним напругою, і перезаписується за допомогою спеціальних девайсів, що називаються програматорами? Ну стерти-то карту УФ-променями ми зможемо, попередньо акуратно вирізавши чіп з карти, але разом з інформацією про те, скільки у нас одиниць на карті, ми зітремо й службову інформацію. А ось ця службова інформація і знаходиться якраз у тій read only області, яка закривається шляхом пережигання спеціального запобіжника, вбудованого в чіп, і робиться це виробником карти. Ось це і є основна ступінь захисту. Тобто, якби ми змогли відновити цю проволочку всередині самого чіпа, ми могли б перепрограмувати карту, але ми не Лівші, тому навряд чи у когось вийде такий фокус.

Тому нам залишається лише один варіант - створити емулятор таксофонної карти. Щоб його створити, нам потрібно знати службову інформацію, записану в тій самій read only області, адресацію сегментів пам'яті всередині чіпа і “розводку” чіпа, тобто призначення його контактів.

На сьогоднішній день використовуються два види чіпів: AFNOR та ISO. Вони відрізняються лише розташуванням контактів. На рисунку 2 показані типи чіпів, що використовуються в сучасних смарт-картах, (там же – розводка контактів), так що, звіряючись з малюнком і своєю картою, ти можеш визначити тип своєї карти. Зараз мною створюється БД чіпів за зовнішнім виглядом, оскільки вона явно неповна, так що якщо у когось є можливість, прохання скинути на пошту зображення чіпа.. Спрощена схематика чіпа показана на рисунку 3.

Рисунок 2.Рисунок 3.

Призначення контактів для старих карт (за стандартом ISO 7816):

1 - Vcc (напруга живлення, 5 В)
2 - R/W (керуючий контакт читання-запису)
3 - Clock (контакт синхронізації)
4 - Reset (скидання стану)
5 - Ground (загальний вивід)
6 - Vpp (напруга програмування, 21 В)
7 - I/O (контакт читання/запису даних)
8 - Fuse (той самий пережжений запобіжник)

Призначення контактів для нових карт (за стандартом ISO 7816-1):

1 - Vcc (напруга живлення, 5 В)
2 – Reset (скидання стану)
3 - Clock (контакт синхронізації)
4 - R/W (керуючий контакт читання-запису)
5 - Ground (загальний вивід)
6 - Vpp (напруга програмування, 21 В)
7 - I/O (контакт читання/запису даних)
8 - Fuse (той самий пережжений запобіжник)

Призначення контактів для модифікованих нових карт (за стандартом ISO 7816-2):

1 - Vcc (напруга живлення, 5 В)
2 – Reset (скидання стану)
3 - Clock (контакт синхронізації)
4 – not connected
5 - Ground (загальний вивід)
6 - not connected
7 - I/O (контакт читання/запису даних)
8 - not connected

** Для цих карт використовується одне напруження 5В як для живлення самого чіпа, так і в якості напруги програмування.

На сьогодні все, в наступний раз ми поговоримо про стандарт ISO 7816 і його специфікації та тим самим визначимо методику створення емулятора.

Ця стаття по суті своїй туфта, адже треба було б зробити описи та схеми всіх видів чіпів і, звичайно ж, софт для цього потрібен. Ось, наприклад, я зібрав картку, і вона у мене "вічна", тобто одиниці не закінчуються і працює вона безвідмовно і взагалі без всякого програмування на одній мікросхемі к561ИЕ10 - це звичайний двійковий чотирирозрядний лічильник. Ось так, якщо комусь цікаво, то пишіть. Я взагалі живу в Омську, і як дана схема буде працювати в іншому місті...

З одного боку, треба все ж таки бути вдячним по відношенню до Стефана Бауссона, шматок чийого ФАКа тут перетворений, і хоча б згадати його ім'я. З іншого боку, всі ті ляпи, які в його ФАКу містилися, тут абсолютно бездумно продубльовані. Ну не знав він, як називається чіп SLE4406, протокол якого розібрав. І тому назвав його ISO7816-2. Ну навіщо це нелепе найменування повторювати ще й ще раз. І взагалі, Бауссон під абревіатурами ISO7816-1 і ISO7816-2 розумів щось своє, до стандарту ISO7816 маючи мало відношення. Що за міфічні чіпи ISO і AFNOR? Чому об'єм чіпів тільки 128 і 256 біт? А найбільш поширені в Росії чіпи SLE4436 та вітчизняний Т192 (192-бітний) навіть не згадані! Для того, щоб писати про щось, недостатньо вивчити весь той хлам, що про цю тему валяється в Інтернеті. Інтернет - це смітник інформації, а не її джерело. Треба спочатку досконало вивчити предмет, потрогати його руками, тестером і осцилографом, а не займатися переказом десь прочитаного.

Дякую тим, хто відгукнувся на питання про промисловий аналог. Чіп Siemens SLE 4432 дійсно існує. На сайті Сіменса можна скачати прекрасне опис будь-якого чіпа з цього сімейства. Тільки аналог уже дуже промисловий :-), у вільному продажу його немає, напевно, можна купити партію 1000 шт., але нафіг стільки :-). Un4GiveN, якщо знаєш серію нормального чіпа (типу мікросхема), то виявився готовою телефонною картою :-), то, будь ласка, скажи, буду вдячний. І jlmax, кинь плз посилання (якщо вона є) на опис чіпа від Томсона, а то на їхньому сайті ні черта не знайти :-(.

Пропоную оригінальний метод: кладеш карту між двома магнітами, повернутими дугами один до одного, однаковими полюсами, і так, щоб чіп був зажатий між центрами магнітів, і водиш одним із магнітів над чіпом, так, щоб відстань від поверхні карти було ~1мм, протягом 5-6 хвилин. Якщо руки не ззаду ростуть, то карта перезарядиться.

Top