12 ноября 2019

История одного хака или не злите программиста

Терминология ITDIY или Сделай самЛайфхаки для гиков
image Я наверное не стал бы писать эту статью, не попадись мне другая статья на тему хакеров. Что меня зацепило: это очень однобокое и явно некорректное использование слова хакер, что характерно в целом для современных высказываний в СМИ, блогах и статьях.

Исторически слова хакер и хак имели гораздо более широкое толкование. С одной стороны это хитроумные решения в коде программ, с другой это «взлом» систем в более широком понимании: не только информационных систем, но и других систем окружающей нас действительности (иными словами реального мира — RL).

Но даже если говорить о «взламывателях информационных систем», то нельзя не упомянуть такие понятия как black hat и white hat.

Ну, а теперь, попытавшись восстановить терминологическую несправедливость в отношении хакеров я хочу рассказать об одном чисто hardware хаке одной из систем RL.

Предыстория


Так уж сложилось что в последние годы я практически перестал пользоваться наличными деньгами. Живя в современном городе у меня все меньше оставалось мест где нельзя было бы расплатиться картой. Где-то полтора года назад у меня появилась карта с NFC. Но таскать ее в кармане все-таки стремно (я по работе знаю немного о том как все происходит с этими оплатами по NFC).

При очередной смене телефона (точнее смартфона) я выбрал модель с NFC и быстренько завел там «БлаБла» Pay или проще *Pay (назовем его так для того что бы избежать ненужной рекламы). Очень скоро я убедился, что и терминалов не умеющих NFC по *Pay в моем повседневном окружении практически не осталось. Опять же, зная по работе как это все работает (*Pay это гораздо более безопасная система нежели карта с NFC в кармане), я довольно быстро стал и банковскую карту дома оставлять.

И вот оно, светлое современное технологичное будущее, когда для повседневной жизни в кармане нужен только телефон!… ну и ключи от квартиры.

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

Я то такой весь современный, в светлом современном мире живущий, когда в телефоне у меня и скидочная карта и *Pay, и я прям по этой скидочной карте беру в зале сканер, и сам свои продукты сканирую, и без кассира потом телефоном расплачиваюсь, но вот тележку взять — возьми и найди где-то эту чертову монету!!!

Сразу скажу: я был в откровенном ступоре. Первая моя реакция была — начать очень громко ругаться матом. Потом я попробовал «стрельнуть пятачок» у других посетителей магазина: ага, как же, у нас монету 5 рублей — денежный знак, на который ничего толком не купишь, никто тебе просто так не даст. Потом я подумал — может кто-то кинул тележку на парковке — но таки нет — свои кровные 5/10 рублей наши сограждане хотят получить назад даже если им далеко тащить тяжелые сумки до своей машины. Потом я понял, что взять сетку (такую, что в руках таскать) я все еще могу без наличных денег в кармане. Но мне то нужно примерно 3 сетки, а рук то всего две… Собственно в тот первый раз я просто сократил свой шоппинг-лист до «только супер-необходимого» и обошелся таки сеткой.

И да, рядом то они повесили такого типа аппарат:

image

Отдельный вопрос у меня вызывает предложение разменять 10 рублей монетой на 10 рублей монетой..., но, главное, все же я не очень понимаю: куда в этот аппарат мне засунуть свой смартфон с *Pay-ем?

Гусары, молчать!
Слово на букву Ж в ответ на «куда засунуть» предлагать не надо — таким образом 10 рублей из автомата все равно не получишь.

Ну что — они меня разозлили.


А этого не стоит делать…

Вечер прошёл в размышлениях. Путь их был примерно такой:

  1. Таскать для магазина 5/10 рублей в кармане — когда я окажусь в магазине, эти монеты будут как назло в кармане другой одежды. Не вариант.
  2. Просверлить в монете дырку и прицепить как брелок на ключи (ну это собственно второй постоянный артефакт в моих карманах) — но по магазину я тогда буду ходить с ключами висящими на тележке. Бред! Можно конечно на карабинчике подвесить, но все-равно — неудобно каждый раз отстегивать, пристегивать.
  3. Сделать жетончик (по типу тех что есть у финов) — заменитель монеты — возвращаемся к вариантам 1 и 2.
  4. Нужно сделать так что бы я смог разблокировать и потом ничего в блокираторе не оставить. Т.е. нужна «отмычка» для монета-приемника блокиратора. Вот ее брелком на ключи можно повесить и снимать каждый раз ненужно.

Вот на идее 4 я и остановился. Первым делом нужно было разобраться как именно блокируется монета и можно ли ее тупо оттуда выдернуть… но нет, первым делом я заглянул в правила для покупателя парочки магазинов, где на тележках стоят такие блокираторы, и не нашел там никаких пунктов, которые бы запрещали вставлять в монета-приемник тележки что-либо другое, кроме монет достоинством 5 или 10 рублей. Может конечно я очень плохо искал…

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

Хочешь добиться результата — сформулируй цель


Итак, выбрав направление я решил сформулировать требования к «конечному продукту»:

  1. «продукт» должен быть исполнен в виде брелка к связке ключей и не требовать снимания его со связки
  2. «продукт» должен успешно разблокировать тележку
  3. «продукт» должен без каких-либо усилий выниматься из блокиратора после разблокировки тележки
  4. (дополнительное требование) тележка должна нормально пристегиваться к другим тележкам на «парковке» тележек (с извлеченным «продуктом» или со вставленным).

Видишь цель — двигайся!


Для начала (несколько забегая вперед) я перечислю те блокираторы, которые мне попались и на которых я тестировал свои решения:

1. Блокиратор условно названный мной «Пластмассовый» — он действительно весь такой пластмассовый и довольно хлипкий. На нем был поставлен самый первый опыт в этой истории.



2. Блокиратор под условным названием «Кондовый» — он довольно старый (я такие видел давно и много раз). Он сделан довольно добротно. Именно он стал объектом на котором я решил обязательно тестировать все свои решения.



3. Блокиратор «Жлобский» — был обнаружен случайно уже в ходе проведения тестирования решений, имя свое получил за то, что разблокируется он только 10 рублевой монетой.



Ну что, направление задано, первичные данные собраны, начинаем движение


Первым делом я взял какую-то старую пластиковую карту и вырезал из нее «монетку с ручкой». За образчик была взята монета 5 рублей. Для придания толщины использовалась склейка двух одинаковых деталей вырезанных ножницами из карты (+ небольшая доводка надфилем). Так появилась «Отмычка v1.0» (к сожалению фото нет, но ниже есть фото «Отмычки v.2.1» которая в сложенном виде повторяет «Отмычку v1.0»).

Первый опыт на блокираторе «Пластмассовый» показал, что «Отмычка v1.0» извлекается из блокиратора с некоторым усилием. Однако «Кондовый» показал свой характер — вырвать мое «изделие» из него стоило мне изрядных усилий, сломанной отмычки (расслоилась и на краю появилась зазубрина), и продранного случайно ключами пальца.

Только слабаки сдаются после первой неудачи


Важно. В обоих опытах с «Отмычкой v1.0» я успешно смог разблокировать тележку, а также пристыковать тележку к остальным на «парковке» не вставляя «отмычку» в блокиратор. А значит, по крайней мере цели №№ 1, 2 и 4 достигнуты — и это уже некоторое достижение.

Ну а неудача с целью № 3 — это просто повод к переосмыслению. Именно так, вечером того же дня, когда я потерпел фиаско с «Отмычкой v1.0», я сел и вырезал из старых пластиковых карт еще два варианта: «Отмычка v.2.0» и «Отмычка v.2.1»

Первая представляла собой вновь склеенную из двух половинок «Отмычку v1.0» в которой сбоку (там где был задир) был сделан вырез. Таким образом диск, симулирующий монету, получил выемку.

Как показал мой неуспешный опыт, монета в блокираторе фиксируется с двух сторон, так что упоры на монете расположены на угле примерно равном 200 градусов.

Идея выреза в том, чтобы вырез можно было расположить напротив фиксатора монеты с одной стороны, и тогда с другой стороны диск симулирующий монету сможет пройти мимо фиксатора.
Фото первичной «Отмычки v.2.0» не сохранилось, но чуть позже будет фото чуть доработанной «Отмычка v.2.0.1».

Вторая «Отмычка v.2.1» появилась из предположения, что фиксаторы монеты могут как-то некорректно отработать при разблокировке тележки, если не будут упираться в край монеты. Эта «отмычка» состоит из двух частей, каждая из которых повторяет идею «Отмычка v.2.0», но прорезы сделаны глубже, а будучи сложенными вместе эти две половинки формируют очертание «Отмычки v1.0» — «монетку с ручкой» которая уж точно могла разблокировать тележку (было бы глупо не пользоваться даже частично успешными результатами первых испытаний).

Вот как выглядела «Отмычка v.2.1» в сложенном и разложенном виде:



Испытания «Отмычки v.2.0» и «Отмычки v.2.1» начались с блокиратора «Пластмассовый». Результаты:

«Отмычка v.2.0»: успешно разблокировала тележку, однако вынуть оказалось трудно т.к. после размещения прореза напротив одного из фиксаторов монеты ручка отмычки уперлась в корпус блокиратора. Вытащить «Отмычку v.2.0» все же удалось, однако учитывая факт, что и «Отмычка v.1.0» извлекалась из этого блокиратора, но застревала в «Кондовом», результат испытания нужно было признать неудовлетворительным.

«Отмычка v.2.1» тоже успешно разблокировала тележку, извлечение частей не требовало усилий и было настолько простым, что одна часть просто сама выпала из блокиратора тележки пока я ее откатывал с «парковки» тележек в торговый зал.

Немного об условиях тестирования
Я почти не сомневался, что от любых претензий работников охраны магазина я смогу отвязаться сославшись на правила, однако связываться с ними не хотелось. А в некоторых магазинах, один из охранников постоянно контролирует зону «парковки» тележек. Чтобы не привлекать к себе внимания я подходил с «отмычкой» и реальной монетой (на случай провала первой фазы испытания отмычки — разблокирование тележки) брал тележку и как все покупатели шел в торговый зал. И уже в торговом зале происходила вторая фаза тестирования — извлечение «отмычки» из блокиратора.

Только в случае с блокиратором «Жлобский» тележки никто не контролировал (ни охранники ни камер я не увидел) и там я экспериментировал не забирая тележку с «парковки», что заметно ускорило доводку последней версии «продукта».

Таким образом, тестирование «Отмычки v.2.1» можно признать только частично успешным. Кроме того «Отмычка v.2.1» состоит из двух независимых частей и их трудно будет разместить в качестве брелка на ключах без необходимости снимать с кольца ключей одну или две половинки, что не соответствует требованию №1 проекта.

Уже виден свет в конце тоннеля, и это, возможно, даже не электричка…


Обидный недочет вполне приемлемого варианта «Отмычки v.2.0» меня не остановил, в кармане нашелся перочинный нож «аля-швейцарский» с маленькими ножницами, ими и была подрезана ручка и вырез «Отмычки v.2.0» что превратило ее в «Отмычку v.2.0.1».

Еще один заход (подрезал я прямо в магазине, сразу после первой серии испытаний «отмычек v.2.x») и вуаля: «Отмычка v.2.0.1» успешно извлекается из блокиратора «Пластмассовый» без каких-либо усилий. Перед последующим тестированием на блокираторе «Кондовый» «Отмычка v.2.0.1» была чутка допилена до своего окончательного вида надфилем. Результат повторных испытаний — полный успех!

«Готовый продукт» — «Отмычка v.2.0.1»:



Цель достигнута, но стоит ли останавливаться?


Первое что я решил дополнительно проверить — а играет ли роль толщина «продукта» можно ли разблокировать не клея бутерброд из деталек и не выискивая более толстого материала для изготовления «продукта».

И тут тесты дали очень неоднозначный результат. То есть буквально неоднозначный — один тот же тип блокиратора один раз разблокировался, а другой раз нет (от ненужного копания на «паркинге» тележек спасла резервная монета).

Вот тебе и раз. Как это понимать? С одной стороны — ну если бутерброд работает, то и ладно, но вопрос то есть — а ответа нет.

И тут, мне случайно (не искал его специально) попадается блокиратор «Жлобский» и условия для тестов — идеальные («парковку» тележек никто не контролируют). Однако в кармане только «Отмычка v.2.0.1» и две части «Отмычка v.2.1», все это сделано под 5 рублей, ну и ножик с ножницами есть… «Отмычка v.2.1», «легким движением руки превращается, превращается» в «Отмычку v.3.0» — десятирублевую! Но червонец шире пятака, так что по толщине, сложенные в двое половинки «Отмычки v.3.0» не дотягивают до нужной ширины.

Спокойно тестирую (условия то тестирования — идеальные) «Отмычку v.3.0» на «Жлобском» — не однозначно — разблокирует через раз. Иногда проваливается явно глубже.

Применение метода научного тыка (в данном случае буквально) дает примерно такое понимание: сама та пластина, которую продавливает монета при разблокировке тележки, явно имеет толщину меньшую чем монета. И если точно в нее узкой «отмычкой» не попасть, то и разблокировки не происходит.

Собственно это и есть ответ на вопрос почему более узкая «отмычка» через раз разблокировывает тележку. Вывод: толщину «отмычки» все-таки стоит подбирать по толщине монеты. Это будет гарантировать надежное разблокировывание тележки с первой попытки.

Чем все закончилось


Ну собственно ответ на вопрос: какой будет окончательная версия моего «продукта»? решился именно после обнаружения блокиратора «Жлобский». Если есть блокираторы которые разблокируются и 5-ю и 10-ю рублями и такие, которые разблокируются только 10-ю рублями, то в кармане должна быть десятирублевая «отмычка».

Итак, вот он окончательный дизайн: «Отмычка v3.1» — это плавные формы в сочетании с удлиненной изящной ручкой. Изготовлена из тройного сандвича из пластиковых карт, доработано напильником надфилем.



Испытания на всех трех типах блокираторов прошли на 100% успешно. Ручка получилась немного узковата, зато красивая.

PS «А почему исходники не на GitHub-e?»

Я не стану приводить точных чертежей (у меня их и нет — делал все «на глаз»): сделать такую «отмычку» вы сможете сами без труда: обвели монету и пририсовали вырез и ручку, вырезали (с небольшим запасом), подровняли и готово. Если склеиваете из нескольких слоев, то советую одну заготовку обточить до нужных размеров (обтачивать можно приложив монету), а две другие заготовки приклеить по разным сторонам первой и обточить (после высыхания клея) уже все вместе, используя средний слой как цель доводки.

Успехов вам в хакерстве и пусть оно будет в рамках законов.

PPS про честь совесть и все такое
Если кто-то хочет призвать меня к чести совести или прочим не совсем мне понятным терминам, то я отдельно для вас уточняю:

  1. Цели обездолить несчастных сборщиков тележек на парковке передо мной не стояло — я вообще и без монетных блокираторов обычно стараюсь тележку отвезти хоть и не на «парковку» тележек, но хотя бы в то место, откуда ее ближе и удобнее собрать. Перейдя же на «отмычку» я тележку привожу на общую «парковку» тележек.
  2. Полученный «продукт» не может быть использован для незаконного обогащения путем воровства монет из блокираторов чужих тележек. Он работает только на разблокировку тележки.
  3. Я уже несколько раз замечал в магазинах людей в той же степени растерянности что и я, в первый раз наткнувшись на эти дурацкие блокираторы там где их раньше не было. Так что проблема не меня одного касается. В ходе своих тестов, парочке таких людей я уже вручил тележки без монет в блокираторе.
  4. Я не думаю, что к опубликованному здесь решению не придет кто-то другой. Более того, я уверен, что я «изобрел велосипед»: если хорошенько погуглить, то наверняка найдется не одно подобное решение.
  5. Если в правилах каких-то магазинов четко прописано, что в блокираторы тележек ничего кроме 5-и и 10-рублевых монет пихать нельзя — то можете озвучить такие магазины — я туда со своей отмычкой не пойду.

… и вообще: не учите меня жить, и я не скажу вам в какой тип путешествия вам необходимо отправится а лучше помогите материально (шутка).
Теги:diy или сделай самхактерминология
Хабы: Терминология IT DIY или Сделай сам Лайфхаки для гиков
+151
73,6k 164
Комментарии 367
Лучшие публикации за сутки