Вообще карта с магнитной полосой - динозавр, который должен был умереть уже давным давно. На дворе эпоха криптоактивов уже давно :)
Но, спасибо самому отсталому рынку, такие карты все еще существуют. Как вы думаете, кстати, какой рынок самый отсталый в смысле карточных технологий? Не поверите... США! Кроме шуток. А самый развитый?.. Не так сложно догадаться. Азиатский! А российский - где-то ближе все-таки к переднему краю. От азиатского немного отстаем, но в целом - весьма на уровне.
С США все просто. Поскольку родина карт - США, то там и больше всего оборудования по приему. А оно до сих пор работает, чего его просто так менять? К тому же, основные платежные системы - родом оттуда, а потому защищают интересы банков США и не принуждают (хотя подталкивают) к замене оборудования.
В общем, содержимое магнитной полосы представляет, скорее, академический интерес. Его и будем сегодня удовлетворять.
Хотя, кстати, в микропроцессорных картах используется блок информации, который устроен точно так же, как и информация на магнитной полосе. Ну да потом как-нибудь расскажу.
На магнитной полосе находится три дорожки, или три трека. Стандартизированы только первые два. Общих стандартов на третий трек нету (хотя отраслевые или частные стандарты существуют). Первые два трека предназначаются только для чтения (хотя технически переписать их можно). А третий предназначался и для чтения и для записи. Но в народ он не пошел. Как-нибудь расскажу о его нелегкой судьбе :)
Когда разрабатывались карты, решались две несвязанные, но похожие задачи. Одна задача - для автоматической регистрации пассажиров в авиакомпаниях, вторая задача - автоматизация оплаты. Поскольку разрабатывал оборудование для обеих задач IBM, то он и решил объединить решения. Треки 1 и 2 различаются плотностью записи (трек 1 вмещает больше). Содержимое у них очень похожее, хотя немного различается.
Служебные символы на самом деле могут быть разными, есть несколько вариантов. После стартовых символов идет номер карты - должен быть точно такой же, как и тот, который написан на самой карте. Номер этот называется PAN - Primary Account Number, номер основного счета. Но на практике он никогда не совпадает с номером счета в банке (в силу законодательных требований к номеру счета, например). Вообще-то он состоит из идентификатора банка (Bank Identification Number), номера счета и контрольного символа.
BIN банк получает у платежной системы, когда входит в нее. За каждой платежной системой закреплены свои начальные цифры, поэтому, глядя на номер карты, можно понять, к какой платежной системе она относится.
После PAN идет имя и фамилия держателя (кстати, именно этих данных нет на втором треке, это основная разница). Затем идет три важных блока данных.
Срок действия карты - четыре цифры. Первые две - год, вторые - месяц.
Дальше - т.н. код обслуживания (Service Code) из трех цифр. Первая цифра значит тип карты. Если это 1 или 5 - то карта с магнитной полосой. Если это 2 или 6 - то карта с чипом. Значения 5 и 6 значат, что карта для операций только внутри страны, а 1 и 2 - что можно пользоваться в других странах тоже.
Вторая цифра говорит о правилах проверки карты. Например, 0 - PIN можно не проверять, 2 - PIN проверяется всегда.
Последняя цифра - о правилах обслуживания карты. Можно, например, запретить снимать наличку (только оплата в терминалах) и т.д.
Следующий важный блок - Discretionary Data. Данные для проверки карты. Вообще здесь нет единого стандарта, каждый издатель карты может на свой лад использовать этот блок. Но типично здесь находятся такие значения, как CVV (Card Verification Value) и PVV (PIN Verification Value) вместе с необходимым для него PVKI.
Глубоко копаться не будем, объясню простыми словами, что это за данные и зачем они.
Нужны они для того, чтобы проверить правильность сообщенных данных. Значения CVV и PVV вычисляются с помощью секретных ключей, которые знает только банк-издатель. И то и другое значение устроено так, что получить из них исходные данные невозможно. Чтобы проверить правильность, банк повторяет те же самые действия над введенными данными и получает рассчетные значения PVV и CVV, и сравнивает их с теми, что хранятся у него в базе данных. Если совпадают - то исходным данным можно верить.
В конце трека находится символ LRC (Longitude Redundancy Check) - специальное значение, которое вычисляется по всем остальным символам трека. Задачу он решает чисто техническую - если трек считался с ошибкой, то LRC не совпадет. LRC - довольно простое значение, никакого шифрования, ничего. Просто контроль целостности. Подобные алгоритмы контроля целостности данных используются почти во всех каналах связи.
Ну и последнее, почему данные на треках различаются.
Если у вас поврежден трек 1, но трек 2 успешно читается - в поддавляющем большинстве случаев вы даже ничего не заметите, потому что для банковских карт второй трек главный. Единственное исключение - если карта кредитная, и вы выполняете операцию кредитования. Тогда без первого трека никуда не уедешь. А связано это с тем, что должен печататься кредитный договор (или специальный чек), в котором обязательно указывается имя и фамилия держателя. А взять их можно только с первого трека.