Превратите свой мобильный телефон в ридер (считыватель) магнитных полос (он же скиммер)

Hacker

Professional
Messages
1,046
Reputation
9
Reaction score
743
Points
113
Предисловие
Изучая свой новый мобильный телефон Siemens MC 60, я обнаружил интересную особенность. Он имеет возможность записывать небольшие фрагменты звука с помощью встроенного микрофона и сохранять их в виде файлов WAV, чтобы вы могли использовать их позже как персонализированные мелодии звонка и т. д. Это говорит о том, что MC60 имеет встроенный АЦП, такой же, как и компьютерные звуковые карты. имеют. Фактически, каждый мобильный телефон должен иметь АЦП для передачи голоса, потому что передача является цифровой, в отличие от традиционных аналоговых кабельных телефонов, а просто АЦП недоступен для пользователей, он прозрачно используется во время связи.

Функция записи заставила меня подумать, что я мог бы использовать мобильный телефон в качестве считывателя магнитных полос, как я делал это с компьютерами со звуковой картой. После некоторых тестов у меня были успешные результаты, так что вот процесс, если вы заинтересованы в том же. Я сделал это только с Siemens MC60, но есть большая вероятность, что это может повториться с другими мобильными телефонами с аналогичными функциями.

Реквизиты
Чтобы использовать ваш мобильный телефон в качестве считывателя магнитных полос, он должен соответствовать определенным требованиям, но даже их может быть недостаточно, вам покажет только опыт. Во-первых, мобильное устройство должно иметь возможность записывать звук в качестве опции через меню и сохранять его в файле в файловой системе мобильного устройства. Во-вторых, он должен иметь возможность передавать эти файлы на компьютер, и, в-третьих, он должен иметь вход для комплекта громкой связи, то есть вход для внешнего микрофона. Более поздние реквизиты не нужны строго, потому что вы можете открыть телефон, чтобы получить доступ к микрофону и создать свой собственный микрофонный вход. Я знаю, что вы, должно быть, осмелились это сделать :), но, разумеется, в этом нет необходимости, потому что все мобильные телефоны, которые я видел, имеют вход для громкой связи. Второе требование также не понадобится, если мобильный телефон способен запускать программное обеспечение для декодирования треков в самом мобильном телефоне.

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

Аппаратное обеспечение
Никакого особого оборудования не требуется, кроме самого мобильного телефона, компьютера для декодирования треков и кабеля для подключения обоих (кроме случаев, когда вы можете установить связь через IrDA или Bluetooth). Вам просто нужна магнитная головка и разъем для мобильного телефона, чтобы магнитная головка соединялась с микрофонным входом мобильного телефона. Также будет полезна некоторая механика пролистывания карточек. См. Страницу моего устройства для чтения звуковых карт, чтобы узнать о характеристиках магнитной головки и некоторых идеях по механике устройства чтения.

Вам понадобится мобильный разъем и контактный вывод, чтобы знать, как подключить магнитную головку. На странице моего мобильного интерфейса вы найдете распиновку обычных мобильных телефонов и идеи о том, как получить разъем. Там вы можете увидеть, как создать интерфейс для подключения мобильного телефона к компьютеру, если у вас его еще нет.

Когда у вас есть мобильный разъем и магнитная головка, вы должны подключить их следующим образом (точная распиновка действительна только для Siemens MC60 и других мобильных телефонов Siemens с такой же распиновкой). Оба вывода магнитной головки должны быть подключены к контактам 11 и 12 MC60 соответственно. Если один из выводов магнитной головки подключен к металлическому корпусу, подключите этот вывод к выводу 11 MC60 (MIC_GND), а другой вывод головки - к выводу 12 (MIC) MC60. Вы также должны замкнуть короткое замыкание контакта 2 (GND) MC60 с контактом 5 (Z_DATA), а контакты 3 (TX) и 4 (RX) с контактом 6 (RTS). Эти два коротких замыкания необходимы для автоматической активации профиля громкой связи мобильного телефона при вставке разъема. В противном случае вы не будете записывать данные с магнитной полосы, а будете записывать окружающий звук с помощью обычного мобильного микрофона.

Сбор данных
Если вы хотите прочитать карту с магнитной полосой, вам просто нужно перейти в меню мобильного телефона и выбрать параметр записи. Например, в Siemens MC60 это достигается путем выбора опции «Новая мелодия звонка» в меню «Дополнительно» главного меню. Во время записи проведите по карте выбранным вами способом, затем остановите запись и сохраните данные в файл. Постарайтесь минимизировать время между началом записи и началом смахивания, а также время между остановкой записи и концом смахивания, чтобы время записи было минимальным. Это гарантирует, что звуковые файлы будут как можно меньше, и вы сможете хранить больше данных в мобильной файловой системе. Например, немного попрактиковавшись, вы сможете записать смахивание примерно за три секунды и даже меньше. Это означает файл размером менее 12 КБ в формате WAV MC60. Этот мобильный телефон имеет емкость файловой системы более 1,8 МБ, и почти всю ее можно использовать для хранения записей путем удаления всех неиспользуемых изображений, мелодий, игр и приложений, это означает, что вы можете достичь автономности более 150 смахиваний; но с учетом того, что вы можете передавать данные через SMS или напрямую на ноутбук с помощью кабеля для передачи данных, автономность практически безгранична.

Программного обеспечения
После того, как вы записали данные магнитной полосы в звуковой файл, вам необходимо их декодировать. Для этого перенесите файл на ПК, там вы можете использовать написанную мной программу для декодирования магнитных полос с помощью звуковой карты ПК. См. Страницу для чтения, чтобы загрузить его и инструкции по его использованию. К сожалению, файлы WAV, записанные MC60, имеют неправильный формат, это файлы IMA ADPCM WAV, но заголовок написан неправильно. Осталось несколько полей, оставшихся пустыми (значения установлены на ноль), но они необходимы для возможности декодирования звука с помощью утилиты sox, которая требуется моей программе. Я сделал быстрый и грязный сценарий C-shell, чтобы исправить файлы WAV MC60 (установить бит выполнения после загрузки). Это не самый чистый метод, и он работает только для небольших файлов (менее 65 КБ, около 15 секунд звука, что намного больше, чем требуется для считывания карты), но он выполняет свою работу. Если у вас нет и вы не хотите устанавливать Linux (вы не знаете, что вам не хватает ;-), у вас все еще есть выбор запустить Linux на компакт-диске и использовать мои программы, см. Мою страницу, где Linux работает без его установки. На самом деле у меня есть подготовленный ISO-образ Knoppix размером 700 МБ, в котором есть исходные коды и скомпилированные двоичные файлы. См. Инструкции на указанной странице.

Резюме
Вот шаги, чтобы прочитать магнитную полосу с помощью мобильного телефона:
  • Убедитесь, что мобильный телефон может записывать звук, передавать файлы на ПК и имеет ли вход для внешнего микрофона.
  • Подключите магнитную головку к микрофонному входу мобильного телефона.
  • Выберите в меню опцию записи и проведите по карте.
  • Перенесите звуковой файл на ПК, обязательно потребуется Windows.
  • Загрузите компьютер в Linux и при необходимости исправьте файл WAV с помощью моего скрипта.
  • Скомпилируйте мою программу для чтения и используйте ее для декодирования звуковой дорожки.
Вот звуковая дорожка, которую я записал с помощью своего MC60, чтобы вы могли использовать ее для тестирования программ и убедиться, что у вас все хорошо. Сначала вам нужно исправить это с помощью моего скрипта:
Подсказка Linux> ./ fixmc60wav.csh soundtrack.wav

а затем расшифровать его, используя мою программу с такой командной строкой (вывод также включен):

Подсказка Linux> sox fixed_soundtrack.wav -t dat - | grep -v каналы | ./soundtrack -t 1 -c 55 -mz

Плохой параметр длительности пика или его нет, используется по умолчанию: 1
Параметр длительности плохого или нет, используется значение по умолчанию: 500
Чтение дорожки 1
Параметр порогового уровня плохой или отсутствует, с использованием данных ...
Макс. / Средн. / Среднеквадратичное значение шума амплитуда: 0,002 / -0,000 /0,000
Порог: 0,003
Ошибка распознавания бита 697, остановка.

Время пролистывания: 0,553 с
Максимальная / средняя / среднеквадратичная амплитуда данных: 0,111 / -0,000 / 0,022
Биты: 696, индивидуальная длительность: 0,795 мс
Обнаружен
начальный индикатор% RUEDA, J?
Конечный дозорный обнаружил, что
LRC в порядке.

Улучшения
Я знаю, что описанный выше процесс несколько сложен и утомителен, но чего вы ожидали от бесплатного? :) Очень неприятно записывать полосы с помощью мобильного телефона, а затем передавать их на ПК с Windows, а затем перезагружаться в Linux (или переносить на второй ПК с Linux) для декодирования данных. Тогда вы поймете, что некоторые треки были записаны некорректно и вам нужно провести их снова, но у вас может больше не быть такой возможности; поэтому я советую записывать более одного свайпа на трек.

Чтобы преодолеть эти предостережения, я рассмотрел возможность написания программы для записи и декодирования треков, все в одном, в самом мобильном телефоне, используя преимущества Java-функции MC60. Вы можете бесплатно загрузить Siemens Mobility Toolkit (требуется бесплатная регистрация) и Java Software Development Kit для Windows, необходимый для набора Siemens. Когда я посмотрел, то понял, что Siemens Java API довольно примитивен и ограничен. API для захвата звука с микрофона отсутствует, поэтому вы все равно должны использовать параметр захвата «Новая мелодия звонка». Затем следует запустить приложение, загружающее и декодирующее звуковой файл. Но даже это сложно, потому что MC60 использует API MIDP 1.0, в котором отсутствует тип float!

Даже с учетом этих ограничений, возможно, в ближайшем будущем я попытаюсь разработать программу для декодирования треков в мобильном телефоне, чтобы вы могли избежать передачи на ПК и видеть в реальном времени, успешно ли был прочитан трек (у этого есть дополнительное преимущество в том, что нужно хранить меньше данных, так что автономия значительно увеличивается), но вам придется подождать, поэтому проверяйте эту страницу время от времени (не слишком часто, я очень занятой человек! ;-) .

Но есть и другая возможность, хотя и более сложная. Вы можете подключить стандартный считыватель магнитных полос с последовательным портом (или нестандартный считыватель) к мобильному последовательному порту (потребуется интерфейсный адаптер) и считывать данные с помощью специального приложения. Однако я считаю этот вариант менее полезным из-за соображений мощности. Если вы хотите избежать внешнего источника питания (что, безусловно, желательно, потому что вы ищете что-то портативное), доступно не так много устройств, которые могли бы питаться от собственной (или самой мобильной) батареи, тем не менее, устройство с очень низким энергопотреблением может быть разработано для эта цель. Тебе решать!
 
Top