Jeffrey Cross
Jeffrey Cross

Обрнуто инжењерство

Цраиг Федеригхи, Апплеов старији потпредседник софтверског инжењерства на ВВДЦ.

Још у јуну прошле године - на ВВДЦ - Аппле је тихо објавио иБеацон. Није се чак ни споменуо у уводном делу, појављујући се само у једном слајду"... неке друге функције у СДК-у." Али за хардверске људе то је заправо била једна од најистакнутијих особина Апплеовог најновијег ОС издања, а мој Твиттер феед је експлодирао. Људи увек траже нове полуге како би им омогућили да раде нове ствари.

Нећу овде да говорим о томе - занимљивом и помало разумљивом - поделом између Гоогле-а, који се у почетку ослањао на НФЦ технологију и тек недавно је невољко додао Блуетоотх ЛЕ подршку Андроиду, и Аппле-у, који је избегао НФЦ и концентрисао се на проналажење алтернатива коришћењем Ви-Фи и Блуетоотх ЛЕ-а - на пример, постављањем АирДроп-а као алтернативом Гооглеовој услузи Бумп филе схаринг. Мада мислим да избор тих конкурентних технологија заправо говори много о двема компанијама - то је потпуно друга позиција.

У ономе што би лако могло бити робно тржиште - након што иБеацон није њихова технологија - Естимоте се сматра лидером на тржишту и промовише се прилично тешко као једна од шачица партнерских компанија на Нордијском штанду на ЦЕС-у следеће седмице.

Шта је иБеацон?

иБеацон је технологија која вам омогућава да додате реални контекст у апликације за паметне телефоне. Базиран на Блуетоотх ЛЕ, део новог Блуетоотх 4.0 стандарда, то је начин да се обезбеди основна унутрашња навигација, а иБеацон је интегрисан у иОС 7 и унутар Цоре Лоцатион и Пасскит оквира како би се омогућила микролокација и геофенцинг у затвореном простору.

Међутим, иБеацон се не односи на локацију, већ на близину. Ваш иПхоне - или сада чак и ваш Андроид телефон - сада може упозорити апликације када се приближавате или напуштате локацију са иБеацоном. Такође може да извештава о процени ваше близине иБеацону, али треба да будете свесни да што сте ближе светионику, точнија је процена близине. Два фактора су јачина сигнала и радио сметње. Док је јачина сигнала прилично поуздана, сметње нису — и могу се радикално мењати са временом — тако да генерално можете да зависите од светлосног сигнала да бисте упозорили своју апликацију да сте у његовој општој близини, био бих опрезан у ослањању на рангирање превише.

Изградите свој иБеацон

Сасвим је једноставно изградити свој иБеацон - или помоћу Распберри Пи-а или помоћу Блуетоотх ЛЕ плоче као што је Ред Беар Лабс БЛЕ Мини плоча - а постоје неки људи који то користе да би остварили брзу зараду.

На пример, Радиус Нетворкс продаје “ИБеацон Девелопмент Кит” који се састоји од Распберри Пи, Блуетоотх УСБ донгле и 8ГБ СД картице. Кошта око 45 УСД када се купи одвојено по пуној малопродајној цени, они га продају заједно за 100 УСД. То је прилично велика добит, поготово зато што неће куповати компоненте у малопродаји, са врло мало додане вриједности над куповином дијелова засебно и слиједећи прилично једноставне упуте за изградњу властитих.

Да будемо искрени, мислим да Радиус само продаје комплет као споредну страну како би промовисао своју понуду софтвера, и објавили су свој рад на обрнутом инжењерингу иБеацон Блуетоотх профила, и максимизирали иБеацон одзив међу осталим стварима.

Тхе Естимоте

Начин на који сам то чуо, Естимоте га је погодио. Тамо су били, играјући се са Блуетоотх „беацонима“ који би могли да користе паметни телефони за поправке у затвореним просторијама, без људи који су показивали толико интересовања, а онда је ту била Аппле - и иБеацон, и завршили су са неколико месеци старт на такмичењу. Наравно, ово би могло бити издање урбаних легенди - или барем ревизионистичка верзија - њихове историје компаније, испричане у баровима, конференцијским лобијима и другим местима на којима се девелопери окупљају. Али он има одређени круг аутентичности.

Упркос томе - и без обзира на истиниту причу - када се расправља о иБеацону, најчешће ћете чути ту фразу "... као Естимоте." То је мало непоштено у њиховој конкуренцији, а ту су и конкуренти Рокимити, ТвоЦаноес, Сониц Нотифи, Радиус Нетворкс, и неколико других, али претпостављам да су то паузе.

Заправо је и даље прилично тешко доћи до Естимоте пакета за преглед програмера - пошто се он још увек испоручује у ограниченом броју - али успео сам да добијем један од раних развојних комплета још у новембру прошле године и, предвидљиво, узео сам један од сигнала одвојено.

Прва ствар коју приметите је да нема дугмета за укључивање / искључивање, уређај емитује све време, чак и пре него што изађе из паковања. Испоручује се уживо, што може бити занимљиво.

Кућиште је направљено од меког силикона са гумираним осећајем и потпуно је затворено тако да је водоотпорно. Више-мање морао сам да уништим кућиште да из њега извадим ПЦБ, што такође значи да промена батерија - барем на моделима у комплету за преглед - неће бити могућа. Међутим, то значи да га можете инсталирати на отвореном, што је велики плус за неке случајеве употребе.

Естимоте Беацон је изграђен око Нордиц Семицондуцтор нРФ51822. Са десне стране слике можете видети и уграђену антену за Блуетоотх ЛЕ радио.

Естимоте је изграђен око Нордиц Семицондуцтор нРФ51822, што објашњава њихово присуство на Нордијском штанду на ЦЕС-у. То је леп чип, у основи 32-битни АРМ Цортек М0 ЦПУ са 256КБ блица и 16КБ РАМ-а са уграђеним 2.4ГХз радиом који подржава и Блуетоотх ЛЕ и 2.4ГХз рад - где је 2.4ГХз режим компатибилан са зраком са нРФ24Л серијом производа из Нордиц-а.

Беацони се стављају на тржиште као и сензор температуре и акцелерометар - иако као што ћемо видети касније, ни један од њих се не оглашава као део ГАТТ-а и нису приступачни пакети података, барем у овом тренутку.

Претпостављам - за сада - да је температурни сензор о коме причају онај који је уграђен у саму Нордијску АРМ и да је акцелерометар мањи чип (на левој страни слике) означен“8237 Ц3Х ДЕА3Х” иако ћу морати да признам да нисам пронашао листу података за овај чип тако да не знам са сигурношћу.

Процењује се да рекламирају опсег од око 230 метара за своје сигнале. Међутим, тестирање знатно смањује опсег, негде око 130 стопа (око 40 метара) из кутије, са веома променљивом прецизношћу. Колико могу да кажем, такође се не треба ослањати на мерења близине, јер, барем из сопствених тестирања, ова мерења близине брзо варирају — вероватно због радио сметњи.

Такође предвиђају да ће батерија трајати до 2 године. Међутим, наш светионик је напунио 55%, а сада је на 33% након само месец дана, тако да се чини донекле оптимистичним предвиђањем - и чини тај запечаћени прилог више обавезе него имовине.

Интересантно је да су сви сигнали са ознакама Естимоте у свим њиховим комплетима за преглед програмера испоручени са идентичним УУИД-овима - УУИД за сваки сигнал је фиксиран - и не планирају да додају могућност да промене УУИД у скорије време. То значи да их не можете користити у продукцијском окружењу на начин који је Аппле намијенио, или барем не без неких измјена.

Такође, ефективно сте закључани у коришћење њиховог затвореног извора иОС СДК ако користите њихов хардвер, пошто други иБеацон хардвер неће радити са њиховим СДК-ом, а ако користите најмањи заједнички именитељ — Аппле-ова властита Цоре локација и Пасскит оквири— да бисте разговарали са хетерогеном колекцијом иБеацон хардвера, заглавили сте у режиму само за читање са самим сигналима. То би могао бити прави проблем у будућности, како за крајње кориснике, тако и за саме Естимоте.

Естимоте сада имају и доставу затвореног кода за Андроид СДК. Међутим, чини ми се да нема много предности у закључавању у свој СДК на Андроид-у као што је - за разлику од њиховог иОС СДК-а, беацони не могу да се конфигуришу користећи га, тако да сте заглављени у режиму само за читање у У сваком случају. Можете користити и једну од генеричких библиотека направљених за иБеацонс на Андроиду и моћи ћете да разговарате са свим хардверима, а не само са програмом Естимоте.

Сами сигнали тада морају бити конфигурисани од стране затвореног извора иОС СДК, и барем у тренутку када Блуетоотх ЛЕ ГАТТ услуге и карактеристике сигнала остају - барем званично - недокументоване.

Да будемо фер према Естимоте-у, Аппле није - барем званично - јавно документовао иБеацон спецификацију, али иако је почела да се појављује незванична документација заснована на Апплеовом примјеру кода. Поред хардвера, требало би да боље погледамо софтвер за приказивање програма за преглед програмера и видимо да ли можемо да схватимо како они функционишу.

Шта оглашава Беимон Естимоте?

Користећи Сандеепов племенити пакет за ноде.јс можемо погледати шта је рекламирано од стране једног од сигнала, користећи скрипту за откривање огласа која је укључена у пакет.

Бежични сигнал који је насумице изабран из нашег комплета за преглед девелопера - са Блуетоотх адресом Е7: 44: 89: 31: ЕД: 4Е рекламира локално име "Естимоте", заједно са неким подацима о услугама и произвођачима. Међутим, чини се да се не оглашава ниједан УУИД услуга.

Ако погледамо детаљније податке о производњи, подаци које је рекламирао био је,

4Ц00 02 15 Б9407Ф30Ф5Ф8466ЕАФФ925556Б57ФЕ6Д ЕД4Е 8931 Б6

Прекидање,

  • Прва два бајта су Аппле Цомпани Идентифиер (Литтле Ендиан) 0к0042.
  • Трећи бајт - бар највјероватније - одређује тип података, који је 2.
  • Четврти бајт специфицира преосталу дужину података, 21 бајт.
  • Беамони имају фиксни иБеацон УУИД од Б9407Ф30-Ф5Ф8-466Е-АФФ9-25556Б57ФЕ6Д.
  • Следећа два бајта после иБеацон УУИД-а су иБеацон Мајор (Биг Ендиан), тј. 0кЕД4Е, 60750.
  • Следећа два бајта после иБеацон Мајор су иБеацон Минор (Биг Ендиан), тј. 0к8931, 35121.
  • Завршни бајт је измерени РССИ на 1 метар удаљености, тј. 0кБ6, -74.

Ефективно, процена не ради ништа посебно овде, ово су само стандардни иБеацон подаци. Три својства стварају идентитет светионика. Су:

  • УУИД - Ово је својство које је јединствено за сваку компанију, у већини случајева коришћења исти УУИД би био дат за све сигнале које је компанија (или група) распоредила. Процена је необична у томе што су фиксирали УУИД за све“Њихов” сигнали бити исти.
  • Мајор - Својство које користите за спецификацију сродног скупа сигнала, нпр. сви сигнали у једној радњи би имали исту вриједност.
  • Минор - Својство којим се одређује одређена ознака на локацији.

Морамо да погледамо податке о услугама које оглашава светионик,

0А18 4ЕЕД318944Е7 Б6 4ЕЕД 3189

да бисте видели било шта одређено за Естимоте,

  • Прва два бајта специфицирају ове сервисне податке за услугу са УУИД 0к180А.
  • Следећих 6 бајтова су Блуетоотх адреса, али обрнутим редоследом, Е7: 44: 89: 31: ЕД: 4Е.
  • Следећи бајт, 0кБ6 одговара измереном РССИ-ју на 1 м удаљености.
  • Следећих 2 бајта, одговарају иБеацон Мајор-у, али овај пут је Литтле Ендиан.
  • Коначни 2 бајта, поново одговарају иБеацон Минору у Литтле Ендиан формату.

Према Блуетоотх спецификацији језгре спецификације услуге морају имати префикс са 16-битним УУИД-ом сервиса за који су подаци - а за Естимоте - сервисни подаци за услугу са УУИД-ом од 0к180а, што је интересантно јер Видјет ћемо касније када погледамо ГАТТ, та услуга не постоји на уређају.

Услуге и карактеристике ГАТТ-а

У супротности са “Класични” Блуетоотх - где постоји читав низ протокола - уз Блуетоотх ЛЕ постоји само један протокол на врху и то је ГАТТ (Генерички атрибут). Стварна функционалност Блуетоотх ЛЕ уређаја имплементирана је помоћу атрибута који се могу читати, писати или омогућавати за обавјештавање / индикацију, овисно о врсти атрибута.

Можемо користити Линук гатттоол програм за командну линију - део БлуеЗ пакета - да манипулише овим атрибутима. Повезивање са сигналом гатттоол добијамо листу услуга и карактеристика.

Ставља излаз из гатттоол у табеларном облику - где су читљиве карактеристике прочитане коришћењем Цхар-реад-хнд гатттоол команду - можемо да упоредимо вредности које смо добили од гатттоол на приказану апликацију Естимоте иОС,

Наш сигнал у апликацији Естимоте иОС.

и још много даље. Занимљиво је да, у овом тренутку, покушате да користите гатттоолС “Цхар-врите-рек Наредба за писање било које од карактеристика процене - УУИД, Минор, Мајор, Повер Левел и Интервал оглашавања - запис се враћа као успешан. Међутим, касније се иБеацонови емитовани подаци не ажурирају у складу с тим.

Упркос томе, Естимоте СДК вам омогућава да ажурирате иБеацон Минор и Мајор - мада не као што је раније поменуто УУИД сигнала - нешто се овде дешава да морамо да разумемо потпуније. СДК очигледно ради нешто непоштено испод хаубегатттоол није.

Коришћење СДК-а

Иоанн Гини је направио једноставан алат користећи Естимоте СДК омогућујући вам да читате и уређујете Минор и Мајор бројеве за сигнал, назван ЕстимотеЕдитор.

Раздвојили смо пројекат - и направили неке измене о којима ћемо касније причати - па ако клонирате репо,

гит цлоне хттпс://гитхуб.цом/сандеепмистри/ЕстимотеЕдитор.гит цд ЕстимотеЕдитор гит субмодуле инит гит субмодуле упдате

и иницијализовати и ажурирати подмодуле, а затим отворити пројекат у Ксцоде-у, можете изградити и имплементирати на Блуетоотх ЛЕ омогућен иПхоне - нажалост то неће радити у иОС Симулатору, потребно га је покренути на уређају.

Наша процена иБеацон приказана у апликацији ЕстимотеЕдитор.

Након што изаберете откривени сигнал, ниво напајања, већи, мањи и интервал оглашавања могу се конфигурисати - а уређиване вредности остају, за разлику од промена које смо направили од гатттоол. Дакле, шта СДК ради другачије?

Метод Свиззлинг ЦореБлуетоотх

Пошто је Објецтиве-Ц језик извршавања, могуће је прегледати методе, својства и варијабле класа и објеката у току извршавања, чак и ако су приватни и скривени од стране СДК-а, чак и ако немате изворни код и имате само приступ бинарном блобу.

Да бисмо то урадили, користимо нешто што се зове метода свиззлинг - омогућава вам да замените постојећу имплементацију методе сопственом приликом извођења. Предвидљиво ако се правилно користи, може бити моћно средство. Међутим, коришћена погрешно, може изазвати разарање на библијској скали.

Сандееп је користио ову технику да види како ЦореБлуетоотх ради под поклопцем на ОС Кс, а затим је користио резултате да комуницира са блуедом - Блуетоотх демоном на ОС Кс - без коришћења ЦореБлуетоотха у племенитој, његовој ноде.јс БЛЕ библиотеци. Можда се више плашљиво Аласдаир користи у производном коду за пресретање различитих мрежних позива и увођење аналитике за прикупљање података о перформансама мреже"у дивљини" на иПхонеу.

Хајде да користимо сличну технику на иОС-у за пресретање комуникације између Естимоте СДК и ЦореБлуетоотх-а. Након што погледате иОС рунтиме заглавља за ЦореБлуетоотх, истиче се ЦБКСпцЦоннецтион класа. Овде КСПБ веза користи ЦореБлуетоотх за комуникацију са Блуетоотх демоном.

Пређимо на следеће методе:

- (воид) хандлеМсг: (инт) арг1 аргс: (ид) арг2; - (воид) сендМсг: (инт) арг1 аргс: (ид) арг2;

што ће нам омогућити да видимо како Естимоте СДК користи ЦореБлуетоотх - с неким тумачењем, видимо да се овдје ништа посебно не дешава,

  1. покрените скенирање уређаја
  2. откривених уређаја
  3. стоп сцаннинг
  4. повезивање са уређајем
  5. откријте услуге и карактеристике уређаја
  6. читање / писање неких карактеристика уређаја

Ствари изгледају слично ономе што смо радили са гатттоол-ом, изузев за читање / писање карактеристика на рукохватима 45 и 47. Вероватно би требало да се вратимо на Ксцоде и поставимо тачке прекида за време карактеристичних записа и видимо шта се стацкови приказују,

Стацк позива у Ксцоде ИДЕ током карактеристике пише.

Ово нам даје још два метода за квашење, овај пут унутар ЕСТБеацон класе,

- (воид) паирСенсорФирстПарт; - (воид) паирСенсорСецондПарт;

Гледајући на излаз, дефинитивно изгледа да постоји посебан процес упаривања, тако да постављање прекидних тачака у новим свиззлед методама - пуштајући нас да поставимо у оригиналне методе - не помаже свему томе. Шта је следеће?

Покретање думп-а класа на градњи даје неке занимљиве резултате. Разред ЕТБлуетоотхМатх изгледа посебно занимљив.

@интерфаце ЕТБлуетоотхМатх: НСОбјецт {} + (ид) стрингФромХекСтринг: (ид) арг1; + (ид) хекСтрингТоБитес: (ид) арг1; + (инт) гивеСигнТоУнсигнед: (унсигнед инт) арг1; + (унсигнед лонг) Сецунит_МодЕкпВитхБасе: (унсигнед лонг) арг1 Екп: (унсигнед лонг) арг2 андМод: (унсигнед лонг) арг3; + (унсигнед лонг) рандомУИнт32; + (унсигнед схорт) рандомУИнт16; + (ид) рандомДатаВитхБитес: (унсигнед инт) арг1; + (цонст цхар *) ЦБУУИДТоСтринг: (ид) арг1; + (инт) цомпареЦБУУИД: (ид) арг1 УУИД2: (ид) арг2; + (ид) ИнтТоЦБУУИД: (унсигнед схорт) арг1; + (унсигнед схорт) ЦБУУИДТоИнт: (ид) арг1; + (унсигнед схорт) свап: (унсигнед схорт) арг1; + (цонст цхар *) УУИДТоСтринг: (струцт __ЦФУУИД *) арг1; @крај

Ископајмо Сецунит_МодЕкпВитхБасе: Екп: андМод: методу и додамо нешто логовања на улазима и повратним вредностима. То ће нам рећи како се користи карактеристична ручка 45,

  1. Генеришите случајни 32-битни непотписани цео број.
  2. Напишите карактеристику ат хандле 45: 5 ^ (рандом 32) мод 0кфффффффб (мало ендиан)
  3. Карактеристика очитавања код ручке 45 (мали крај): (карактеристична вредност 45) ^ (случајно 32) мод 0кфффффффб

Хајде да ставимо тачку прекида у свиззлед паирСенсорСецондПарт методу у ЕСТБеацон, и корак у оригинал. Након прекорачења неколико инструкција видимо нешто занимљиво.

Кретање кроз код и уочавање позива аес_енцрипт у ТИ_аес.ц.

Да ли је то ТИ - као у Текас Инструментс? Идемо на Гоогле не само да је то, него изворни код за ТИ_аес.ц је доступан онлине. Можемо га узети и додати у наш пројекат. То ће нам омогућити да додамо тачке прекида у аес_енцрипт и аес_децрипт у ТИ_аес.ц. Изненађујуће, ове тачке прекида заправо су погођене, што значи да можемо прегледати податке који су прошли у методама енкрипције и дешифровања.

АЕС-128 кључ за шифровање је увек 0кфф8аф261013625ц2д810097ф20д3050ф. Док је стање шифровања засновано на Блуетоотх адреси (Е7: 44: 89: 31: ЕД: 4Е) и је 0к4еед318944е731ед4ее74489443189ед.

АЕС-128 кључ за дешифровање је базиран на последњој израчунатој сецунит (0к8е450д08) и је 0к080д458е8е450д08088е0д458е08450д. Док је стање дешифровања резултат шифровања, 0к419а05а457дццеебеед5129е88а81ц4е.

Резултат дешифровања се записује у карактеристику на дршци 47, завршавајући процес спаривања.

Стављају ствари заједно

Сада смо схватили секвенцу упаривања и грубу спецификацију карактеристика. Можемо да направимо ноде.јс скрипту која користи племенито откривање и повезивање са Естимоте Беацон. Тада можемо покушати - опет - након упаривања писати на Мајор и Минор карактеристике. Овај пут са успехом.

Занимљиво. СДК нам не дозвољава да ажурирамо УУИД, можемо ли то да урадимо користећи овај метод? Испоставило се да можемо. Записивање исте вриједности у обе карактеристике УУИД-а ради, а иБеацон УУИД се ажурира. Можемо поставити иБеацон УУИД на нешто што Естимоте не излаже.

Закључак

Естимоте иОС СДК је затворени извор, али помоћу методе свиззлинг и услужног програма цласс-думп на њему и ЦореБлуетоотх-у смо били у могућности да откријемо како он комуницира са сигналом.

Информације садржане у СДК-у су вероватно више откривања него што су аутори очекивали да ће бити, и нажалост за њих, постоји врло мало што могу учинити у вези с тим.

Док је комплет прегледа и СДК програма Естимоте још увек у раним фазама ако се Естимоте држи њиховог тренутног сигурносног модела - иако постоје знаци да то можда неће учинити - свако ко креира апликацију помоћу свог СДК-а моћи ће да поново конфигурише било који Беацон у дивљини.

Импликације тога су прилично далекосежне. Ако неко злонамерно промени иБеацон Мајор или Минор карактеристику светионика, било која корисничка апликација конфигурисана да користи ту посебну ознаку престат ће да ради - сигнали морају бити конфигурисани са унапред дефинисаним идентитетом да би покренули исправно понашање унутар сопствене апликације потрошача паметни телефон долази у близину сигнала.

Осим тога, можете конфигурирати а"лажан" светионик који ће деловати као варалица другог сигнала који припада неком малопродајном ланцу, потенцијално добијајући приступ промоцијама, поклон картицама и другим производима који су зависни од локације везани за сигнал који ви опонашате.

Други произвођачи користе различите — и можда сигурније — методе за постављање УУИД, Минор и Мајор вриједности. Лично бих желео да озбиљно размотрим те алтернативе пре него што ову технологију применимо у производним окружењима. Поготово ако је у питању прави новац.

Иако није тривијално обрнути инжењеринг софтвера и хардвера који се користи у уређајима као што је Естимоте, то је у потпуности изводљиво и - након што смо схватили како раде светлосни сигнали - могли смо лако да модификујемо конфигурацију сигнала.

Упдате: Разговарали смо о могућностима конфигурирања"лажан" сигнали, као и могућност да онемогућите сигнале на терену, али нисмо мислили да ћемо ускоро видети нешто слично. Овогодишња изложба Цонсумер Елецтроницс Схов (ЦЕС) представљала је промотивни лов на ловце на бази Апплеове иБеацон технологије - а испоставило се да можете добити лов, а да никада не морате ићи у ЦЕС.

00

Удео

Оставите Коментар