Оглавление:

HackerBox 0058: Кодирование: 7 шагов
HackerBox 0058: Кодирование: 7 шагов

Видео: HackerBox 0058: Кодирование: 7 шагов

Видео: HackerBox 0058: Кодирование: 7 шагов
Видео: #105 HackerBox 0058 ENCode 2024, Июль
Anonim
HackerBox 0058: Кодировать
HackerBox 0058: Кодировать

Приветствуем хакеров HackerBox со всего мира! С HackerBox 0058 мы исследуем кодирование информации, штрих-коды, QR-коды, программирование Arduino Pro Micro, встроенные ЖК-дисплеи, интеграцию генерации штрих-кодов в проекты Arduino, эксплойты устройств ввода человеком и многое другое.

HackerBoxes - это ежемесячная абонентская абонентская служба для энтузиастов электроники и компьютерных технологий - Hardware Hackers - The Dreamers of Dreams.

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

Запасы

Это руководство содержит информацию для начала работы с HackerBox 0058. Полное содержимое коробки указано на странице продукта для HackerBox 0058, где коробка также доступна для покупки, пока расходные материалы есть в наличии. Если вы хотите автоматически получать такой HackerBox прямо в свой почтовый ящик каждый месяц со скидкой 15 долларов, вы можете подписаться на HackerBoxes.com и присоединиться к революции!

Для работы с ежемесячным HackerBox обычно требуются паяльник, припой и основные паяльные инструменты. Также требуется компьютер для запуска программных средств. Взгляните на HackerBox Deluxe Starter Workshop, где вы найдете набор основных инструментов и широкий спектр вводных действий и экспериментов.

Самое главное, вам понадобится чувство приключений, хакерский дух, терпение и любопытство. Создание электроники и эксперименты с ней, хотя и приносят большие плоды, могут быть сложными, сложными и временами даже разочаровывающими. Цель - прогресс, а не совершенство. Когда вы упорствуете и наслаждаетесь приключениями, это хобби может принести большое удовлетворение. Делайте каждый шаг медленно, помните о деталях и не бойтесь просить о помощи

Шаг 1. Кодирование

Кодирование
Кодирование

Для передачи, записи или обработки информации требуется кодирование. Поскольку обработка, хранение и передача информации являются сущностью современной электроники, нам приходится беспокоиться о большом количестве кодировок.

В качестве очень простого примера кодирования можно представить, сколько у них глаз или ушей, подняв два пальца, или используя цифры «2» или «] [» или используя слова «два» или «дос» или « Эр »или« цвай ». На самом деле не все так просто, правда? Кодирование, используемое на человеческом языке, особенно в отношении таких тем, как эмоции или абстракция, может стать очень сложным.

ФИЗИКА

Да, всегда все начинается с физики. В электронных системах мы начинаем с представления простейших значений электрическими сигналами, обычно уровнями напряжения. Например, НУЛЬ может быть представлен как земля (приблизительно 0 В), а ЕДИНИЦА как приблизительно 5 В (или 3,3 В и т. Д.), Чтобы составить двоичную систему нулей и единиц. Даже имея только НОЛЬ и ЕДИНИЦУ, часто возникает неясность, которую необходимо разрешить. Когда кнопка нажата, это НОЛЬ или ОДИН? ВЫСОКИЙ или НИЗКИЙ? Сигнал выбора микросхемы "активный высокий" или "активный низкий"? В какое время можно прочитать сигнал и как долго он будет действителен? В системах связи это называется «линейным кодированием».

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

Физический уровень (PHY) или уровень 1 - это первый и самый низкий уровень в семиуровневой модели OSI компьютерных сетей. Физический уровень определяет средства передачи необработанных битов по физическому каналу передачи данных, соединяющему узлы сети. Физический уровень обеспечивает электрический, механический и процедурный интерфейс для среды передачи. Формы и свойства электрических разъемов, частоты для вещания, линейный код для использования и аналогичные параметры низкого уровня определяются физическим уровнем.

ЧИСЛА

Мы не можем многого добиться с помощью всего ОДНОГО и НОЛЯ, иначе мы эволюционировали бы, чтобы «говорить», моргая друг другу глазами. Однако двоичные значения - отличное начало. В вычислительных и коммуникационных системах мы объединяем двоичные цифры (биты) в байты и «слова», содержащие, например, 8, 16, 32 или 64 бита.

Как эти двоичные слова соответствуют числам или значениям? В простом 8-битном байте 00000000 обычно равен нулю, а 11111111 - обычно 255, чтобы предоставить 2-к-8 или 256 различных значений. Конечно, это еще не все, потому что чисел намного больше 256, и не все числа являются положительными целыми числами. Еще до появления вычислительных систем мы представляли числовые значения, используя разные системы счисления, языки, основы и применяя такие методы, как отрицательные числа, мнимые числа, научные обозначения, корни, отношения и логарифмические шкалы с различными основаниями. Для числовых значений в компьютерных системах нам приходится иметь дело с такими проблемами, как машинный эпсилон, порядок байтов, представления с фиксированной и плавающей запятой.

ТЕКСТ (CETERA)

Помимо представления чисел или значений, двоичные байты и слова могут представлять буквы и другие текстовые символы. Наиболее распространенной формой кодирования текста является Американский стандартный код обмена информацией (ASCII). Конечно, в виде текста можно кодировать различные типы информации: книгу, эту веб-страницу, XML-документ.

В некоторых случаях, таких как электронная почта или сообщения Usenet, мы можем захотеть закодировать более широкие типы информации (например, общие двоичные файлы) в виде текста. Процесс uuencoding - это распространенная форма двоичного кодирования текста. Вы даже можете «кодировать» изображения как текст: ASCII Art или еще лучше ANSI Art.

ТЕОРИЯ КОДИРОВКИ

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

СЖАТИЕ ДАННЫХ (удаление избыточности)

Сжатие данных, исходное кодирование или снижение скорости передачи данных - это процесс кодирования информации с использованием меньшего количества битов, чем исходное представление. Любое конкретное сжатие либо с потерями, либо без потерь. Сжатие без потерь уменьшает количество битов за счет выявления и устранения статистической избыточности. Никакая информация не теряется при сжатии без потерь. Сжатие с потерями уменьшает количество битов, удаляя ненужную или менее важную информацию.

Методы сжатия Лемпеля – Зива (LZ) являются одними из самых популярных алгоритмов хранения без потерь. В середине 1980-х, после работы Терри Велча, алгоритм Лемпеля – Зива – Велча (LZW) быстро стал методом выбора для большинства систем сжатия общего назначения. LZW используется в изображениях GIF, таких программах, как PKZIP, и аппаратных устройствах, таких как модемы.

Мы постоянно используем сжатые данные для DVD, потокового видео в формате MPEG, аудио в формате MP3, графики в формате JPEG, файлов ZIP, сжатых файлов tar и т. Д.

ОБНАРУЖЕНИЕ И ИСПРАВЛЕНИЕ ОШИБОК (добавление полезной избыточности)

Обнаружение и исправление ошибок или контроль ошибок - это методы, которые обеспечивают надежную доставку цифровых данных по ненадежным каналам связи. Многие каналы связи подвержены канальному шуму, поэтому при передаче от источника к приемнику могут возникать ошибки. Обнаружение ошибок - это обнаружение ошибок, вызванных шумом или другими помехами во время передачи от передатчика к приемнику. Исправление ошибок - это обнаружение ошибок и восстановление исходных безошибочных данных.

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

Коды исправления ошибок (ECC) используются для управления ошибками в данных по ненадежным или зашумленным каналам связи. Основная идея заключается в том, что отправитель кодирует сообщение с избыточной информацией в форме ECC. Избыточность позволяет получателю обнаруживать ограниченное количество ошибок, которые могут возникнуть в любом месте сообщения, и часто исправлять эти ошибки без повторной передачи. Упрощенный пример ECC - это передача каждого бита данных 3 раза, что известно как код повторения (3, 1). Даже если передаются только 0, 0, 0 или 1, 1, 1, ошибки в зашумленном канале могут представлять приемнику любое из восьми возможных значений (три бита). Это позволяет исправить ошибку в любой из трех выборок «большинством голосов» или «демократическим голосованием». Таким образом, корректирующая способность этого ECC исправляет 1 бит ошибки в каждом переданном триплете. Хотя эта тройная модульная избыточность проста в реализации и широко используется, она является относительно неэффективной ECC. Более совершенные коды ECC обычно проверяют несколько последних десятков или даже несколько последних сотен ранее принятых битов, чтобы определить, как декодировать текущую небольшую горстку битов.

Почти все двумерные штрих-коды, такие как QR-коды, PDF-417, MaxiCode, Datamatrix и Aztec Code, используют код Reed – Solomon ECC, чтобы обеспечить правильное считывание, даже если часть штрих-кода повреждена.

КРИПТОГРАФИЯ

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

Традиционное шифрование шифрования основано на транспозиционном шифре, который изменяет порядок букв в сообщении (например, 'hello world' становится 'ehlol owrdl' в тривиально простой схеме перестановки) и шифрах замещения, которые систематически заменяют буквы или группы буквы с другими буквами или группами букв (например, «летать сразу» становится «gmz bu podf», заменяя каждую букву следующей за ней в латинском алфавите). Простые версии того и другого никогда не предполагали особой конфиденциальности со стороны предприимчивых оппонентов. Первым шифром подстановки был шифр Цезаря, в котором каждая буква в открытом тексте заменялась буквой на фиксированное количество позиций ниже по алфавиту. ROT13 - это простой шифр с заменой букв, который заменяет букву 13-й буквой после нее в алфавите. Это частный случай шифра Цезаря. Попробуйте здесь!

Шаг 2: QR-коды

QR-коды
QR-коды

QR-коды (википедия) или «коды быстрого ответа» представляют собой тип матричного или двумерного штрих-кода, впервые разработанного в 1994 году для автомобильной промышленности в Японии. Штрих-код - это машиночитаемая оптическая этикетка, содержащая информацию об элементе, к которому он прикреплен. На практике QR-коды часто содержат данные для локатора, идентификатора или трекера, который указывает на веб-сайт или приложение. QR-код использует четыре стандартных режима кодирования (числовой, буквенно-цифровой, байт / двоичный и кандзи) для эффективного хранения данных.

Система Quick Response стала популярной за пределами автомобильной промышленности благодаря своей быстрой читаемости и большей емкости хранения по сравнению со стандартными штрих-кодами UPC. Приложения включают отслеживание продуктов, идентификацию товаров, учет рабочего времени, управление документами и общий маркетинг. QR-код состоит из черных квадратов, расположенных в квадратной сетке на белом фоне, которые могут быть прочитаны устройством формирования изображения, например камерой, и обработаны с помощью коррекции ошибок Рида – Соломона до тех пор, пока изображение не будет должным образом интерпретировано. Затем необходимые данные извлекаются из шаблонов, которые присутствуют как в горизонтальных, так и в вертикальных компонентах изображения.

Современные смартфоны обычно автоматически считывают QR-коды (и другие штрих-коды). Просто откройте приложение камеры, направьте камеру на штрих-код и подождите секунду или две, пока приложение камеры не укажет, что оно зафиксировано на штрих-коде. Приложение иногда отображает содержимое штрих-кода мгновенно, но обычно приложение требует выбора уведомления о штрих-коде, чтобы отобразить любую информацию, извлеченную из штрих-кода. В течение июня 2011 года 14 миллионов американских мобильных пользователей отсканировали QR-код или штрих-код.

Вы использовали свой смартфон для чтения сообщений, закодированных вне HackerBox 0058?

Интересное видео: Сможете ли вы уместить всю игру в QR-код?

Старожилы могут вспомнить Cauzin Softstrip из компьютерных журналов 80-х. (видео-демонстрация)

Шаг 3: Arduino Pro Micro 3,3 В 8 МГц

Arduino Pro Micro 3,3 В 8 МГц
Arduino Pro Micro 3,3 В 8 МГц

Arduino Pro Micro основан на микроконтроллере ATmega32U4, который имеет встроенный интерфейс USB. Это означает, что нет FTDI, PL2303, CH340 или любого другого чипа, выступающего в качестве посредника между вашим компьютером и микроконтроллером Arduino.

Мы предлагаем сначала протестировать Pro Micro, не припаивая контакты на место. Вы можете выполнить базовую настройку и тестирование без использования выводов заголовка. Кроме того, отсрочка пайки модуля дает на одну переменную меньше для отладки, если вы столкнетесь с какими-либо осложнениями.

Если на вашем компьютере не установлена IDE Arduino, начните с загрузки формы IDE arduino.cc. ВНИМАНИЕ: Перед программированием Pro Micro убедитесь, что выбрали версию 3.3V в меню tools> processor. Этот набор для 5 В будет работать один раз, а затем будет казаться, что устройство никогда не подключится к вашему ПК, пока вы не выполните инструкции «Сброс в загрузчик» в руководстве, описанном ниже, что может быть немного сложно.

У Sparkfun есть отличное руководство по подключению Pro Micro. Руководство по подключению содержит подробный обзор платы Pro Micro, а затем раздел «Установка: Windows» и раздел «Установка: Mac и Linux». Следуйте инструкциям в соответствующей версии этих инструкций по установке, чтобы настроить вашу Arduino IDE для поддержки Pro Micro. Обычно мы начинаем работу с платой Arduino с загрузки и / или изменения стандартного скетча Blink. Однако в Pro Micro нет обычного светодиода на контакте 13. К счастью, мы можем управлять светодиодами RX / TX. Sparkfun предоставил аккуратный небольшой набросок, чтобы продемонстрировать, как это сделать. Это находится в разделе Руководства по подключению, озаглавленном «Пример 1: Blinkies!» Убедитесь, что вы можете скомпилировать и запрограммировать этот Blinkies! пример на Pro Micro, прежде чем двигаться дальше.

Когда кажется, что все работает для программирования Pro Micro, пора аккуратно припаять штыри разъема к модулю. После пайки снова внимательно проверьте плату.

К вашему сведению: благодаря встроенному USB-трансиверу Pro Micro можно легко использовать для эмуляции устройства интерфейса пользователя (HID), такого как клавиатура или мышь, и экспериментировать с инъекцией нажатия клавиш.

Шаг 4: QR-коды на полноцветном ЖК-дисплее

QR-коды на полноцветном ЖК-дисплее
QR-коды на полноцветном ЖК-дисплее

ЖК-дисплей имеет полноцветное разрешение 128 x 160 пикселей и имеет диагональ 1,8 дюйма. К микросхеме драйвера ST7735S (техническое описание) можно подключить практически любой микроконтроллер, используя шину последовательного периферийного интерфейса (SPI). Интерфейс предназначен для сигнализации и питания 3,3 В.

ЖК-модуль можно подключить напрямую к 3.3V Pro Micro с помощью 7 перемычек FF:

ЖК-дисплей ---- Pro Micro

GND ---- GND VCC ---- VCC SCL ---- 15 SDA ---- 16 RES ---- 9 DC ----- 8 CS ----- 10 BL ----- Нет подключения

Это конкретное назначение контактов позволяет примерам из библиотеки работать по умолчанию.

Библиотеку под названием «Adafruit ST7735 и ST7789» можно найти в среде Arduino IDE, используя меню «Инструменты»> «Управление библиотеками». Во время установки менеджер библиотек предложит несколько зависимых библиотек, которые идут с этой библиотекой. Разрешите ему установить и их.

После установки этой библиотеки откройте Файлы> Примеры> Библиотека Adafruit ST7735 и ST7789> graphicstest.

Скомпилируйте и загрузите graphicstest. Он будет генерировать графическую демонстрацию на ЖК-дисплее, но с некоторыми строками и столбцами «зашумленных пикселей» по краям дисплея.

Эти «зашумленные пиксели» можно исправить, изменив функцию инициализации TFT, используемую в верхней части функции настройки (void).

Закомментируйте строку кода:

tft.initR (INITR_BLACKTAB);

И раскомментируйте строку на пару строк ниже:

tft.initR (INITR_GREENTAB);

Перепрограммируйте демоверсию, и все должно выглядеть хорошо.

Теперь мы можем использовать ЖК-дисплей для отображения QR-кодов

Вернитесь в меню «Инструменты»> «Управление библиотеками» в среде Arduino.

Найдите и установите библиотеку QRCode.

Загрузите прикрепленный здесь скетч QR_TFT.ino.

Скомпилируйте и запрограммируйте QR_TFT в ProMicro и посмотрите, сможете ли вы использовать приложение камеры вашего телефона, чтобы прочитать сгенерированный QR-код на ЖК-дисплее.

Некоторые проекты, использующие генерацию QR-кода для вдохновения

Контроль доступа

QR-часы

Шаг 5: гибкий плоский кабель

Гибкий плоский кабель
Гибкий плоский кабель

Гибкий плоский кабель (FFC) - это любой вид электрических кабелей, которые могут быть как плоскими, так и гибкими, с плоскими сплошными проводниками. FFC - это кабель, сформированный из гибкой печатной схемы (FPC) или аналогичный ей. Термины FPC и FFC иногда используются как синонимы. Эти термины обычно относятся к очень тонкому плоскому кабелю, который часто используется в электронных устройствах высокой плотности, таких как ноутбуки и сотовые телефоны. Они представляют собой миниатюрный ленточный кабель, который обычно состоит из плоской и гибкой основы из пластиковой пленки с несколькими плоскими металлическими проводниками, прикрепленными к одной поверхности.

FFC выпускаются с различными шагами штифтов: 1,0 мм и 0,5 мм являются двумя распространенными вариантами. На прилагаемой коммутационной плате FPC есть дорожки для обоих этих шагов, по одной с каждой стороны печатной платы. В зависимости от желаемого шага используется только одна сторона печатной платы, в данном случае 0,5 мм. Обязательно используйте нумерацию выводов заголовка, напечатанную на той же стороне 0,5 мм печатной платы. Нумерация выводов на стороне 1,0 мм не совпадает и используется для другого применения.

Разъемы FFC как на отломе, так и на сканере штрих-кода являются разъемами ZIF (нулевое усилие вставки). Это означает, что разъемы ZIF имеют механический ползунок, который откидывается на шарнире перед вставкой FFC, а затем закрывается на петлях для затягивания разъема на FFC без приложения усилия к самому кабелю. Об этих разъемах ZIF следует отметить две важные вещи:

1. Они оба являются «нижним контактом», что означает, что металлические контакты на FFC должны быть обращены вниз (к печатной плате) при установке.

2. Откидной ползунок на разъеме находится на передней части разъема. Это означает, что FFC пройдет под шарнирным слайдером. Напротив, шарнирный ползунок на сканере штрих-кода находится на задней стороне разъема. Это означает, что FFC войдет в разъем ZIF с противоположной стороны, а не через шарнирный ползунок.

Имейте в виду, что другие типы разъемов FFC / FPC ZIF имеют боковые ползунки, в отличие от шарнирных ползунков, которые у нас есть. Вместо того, чтобы поворачиваться вверх и вниз, боковые ползунки скользят внутрь и наружу внутри плоскости разъема. Всегда внимательно смотрите перед первым использованием нового типа разъема ZIF. Они довольно малы и могут быть легко повреждены, если выйти за пределы их предполагаемого диапазона или плоскости движения.

Шаг 6: сканер штрих-кода

Сканер штрих-кода
Сканер штрих-кода

После того, как сканер штрих-кода и коммутационная панель FPC соединены гибким плоским кабелем (FFC), можно использовать пять перемычек с внутренней резьбой для подключения коммутационной платы к Arduino Pro Micro:

FPC ---- Pro Micro

3 ------ GND 2 ------ VCC 12 ----- 7 4 ------ 8 5 ------ 9

После подключения запрограммируйте скетч barscandemo.ino в Pro Micro, откройте Serial Monitor и просканируйте все! Может быть удивительно, сколько предметов вокруг наших домов и офисов имеют штрих-коды. Возможно, вы даже знаете кого-нибудь с татуировкой со штрих-кодом.

В прилагаемом руководстве к сканеру штрих-кода есть коды, которые можно сканировать для настройки процессора, встроенного в сканер.

Шаг 7: взломайте планету

Взломать планету
Взломать планету

Мы надеемся, что в этом месяце вы наслаждаетесь приключениями HackerBox в области электроники и компьютерных технологий. Расскажите о своем успехе в комментариях ниже или в других социальных сетях. Также помните, что вы можете в любое время написать на [email protected], если у вас возникнут вопросы или вам понадобится помощь.

Что дальше? Присоединяйся к революции. Живите HackLife. Получайте классную коробку со взломанным оборудованием, которое доставляется прямо в ваш почтовый ящик каждый месяц. Зайдите на HackerBoxes.com и оформите ежемесячную подписку на HackerBox.

Рекомендуемые: