Ковыряясь с GPS-трекером ReachFar V32

Введение

Собственно производитель этой какашки: Reachfar (даже сайт у них ламерский, насквозь ублюдочный, нередко тупо глючит). Вкратце, это GPS-трекер, который, по идее, должен отправлять информацию о своём положении по GSM-каналу (для работы требуется micro-SIM-карта). На самом деле, эти китайские жопорукие мудаки сотворили очередную лажу:

Подмеченное, возможно, полезное

Кое-что не (пр)описанное в приложенной инструкции:
Включение
В приложенной к этому уродцу убогой инструкции написано, что включается он средней кнопкой — нажатием и удержанием в течение 5s. На самом деле, чтобы эту дурынду включить, надо эту самую среднюю кнпочку: нажать, чуть подержать, отпустить; потом ещё раз нажать и удерживать в течение примерно 8–10 секунд.

Сигналы светодиодов

Сигналы светодиодов и их значения аналогичны, лишь относятся они к разным функциональным блокам:

Красный
Показывает состояние GSM.
Синий
Показывает состояние GPS.
Значения сигналов:
Выключен
Сон/выкл.
Частое мигание
Поиск сигнала (сотовой сети, спутников).
Редкое мигание
Связь установлена / спутники найдены, координаты определены.

Железо

Потроха

Это уродище через пару лет ох уху ело — сдох аккумулятор, поэтому решено было разобрать это чудо-jewдо и заглянуть ему в потроха. Оказалось, что:

Софт (прошивка)

Если прицепить трекер к компьютеру по USB, то его видно как USB-storage. На примонтированном куске лежит парочка файлов с расширением bin. Один лежит в корне (mtkepo.bin), а в директории Updata/jt_ads.bin, по-видимому, являющийся „прошивкой“ или какой-то её частью (обновляемой?), т.к. очень похож на скомпилированный из C (или даже, если учитывать их ламерство, C++) код.

Версии

В файле „прошивки“ трекера RF-V32 (/Updata/jt_ads.bin) среди прочих текстовых строк видны G36S_RFHZ_V1.0 и EG36S_V1.0_2017.05.13_18.34.27, при этом на команду verno# трекер отвечает

verno:G36S_RFHZ_V1.0.0_2017.05.13_18.34.27
(эту же версию видно среди прочего в ответе на команду ts#), но в точности такой строчки в файле нет — т.е., итоговая версия собирается из этих двух исходных строчек.

Аналогично для трекера rf-v30 (но купленного позже, чем RF-V32). В файле „прошивки“ (/Updata/jt_ads.bin) видны G36S_RFHZ_V30_V1.0 и G36S_V1.0_2020.01.11_18.12.37, а сам трекер (в ts#) отвечает, что у него

ver:G36S_RFHZ_V30_V1.0.0_2020.01.11_18.12.37;
— т.е., итоговая весрия также скомпонована из двух.

SMS-команды

Проверенные

Nota Bene

SMS-команды проверенные на v32:
pw,123456,center,+79876543210#
Установка номера основного телефона („master“). +79876543210, соответственно, „master“-номер.
pw,123456,slave,+79876543210#
Установка номера второстепенного телефона („slave“). +79876543210, соответственно, „slave“-номер.
center,d#
Удаление основного номера.
slave,d#
Удаление дополнительного (второстепенного) номера.
pw,567890#
Смена пароля. Только с основного запрограммированного телефона! (т.н. „master“, см. команду center). Здесь 567890новый шестизначный цифровой пароль.
factory#
Сброс всех настроек на заводские.
reboot#
Перезагрузка.
reset#
Перезагрузка.
poweroff#
Выключение.
NotaBene: иные устройства по нажатию кнопки ‹Power› вместо выключения записывают и отсылают (голосовое) сообщение на сервер при наличии связи с Internet.
smsonoff,0#
Отключить ответные SMS.
smsonoff,1#
Включить ответные SMS. Ответ:
sms:1.ok!
verno#
Запрос версии прошивки. В ответ приходит SMS с идентификатором версии. Например:
verno:G36S_RFHZ_V1.0.0_2017.05.13_18.34.27
ts#
Запрос всех параметров. В ответ приходит SMS со списком параметров и их текущих значений. Например:
ver:G36S_RFHZ_V1.0.0_2017.05.13_18.34.27;
ID:1234567890;
imei:123456789012345;
ZCM:123456789012345;
ip_url:www.gps123.org;
port:8888;
center:+79876543210;
slave:;
sos1:112;
sos2:911;
sos3;
upload:3600S;
bat level:66;
language:0;
zone:3.00;
GPS:NO(0);
GPRS:OK(100);
LED:1;
pw:123456;
imei,xx...x# (15 цифр)
Установка IMEI. На случай, если он каким-то образом сбросился. Можно сверить его значения на бирке на корпусе устройства и из ответа на команду ts.
lz,0,3#
Выбор языка и часового пояса. Тут 0 — английский язык (китайский — 1, русский — 9), 3 — часовой пояс GMT+3. SMS-ответ:
[lang,0,zone,3#] ok!
gprsgps,0#
Выключить определение координат по GPS, работает только GSM-связь в режиме ожидания (и определение местоположения по сотам сетей мобильной связи). Ответная SMS:
Turn off the platform tracking function.
gprsgps,1#
Включить определение координат по GPS (default-ный режим). Ответная SMS:
Turn on the platform tracking function.
led,0#
Выключить световой индикатор (светодиод). В ответ по SMS:
Turn off the indicator light.
led,1#
Включить световой индикатор (светодиод). В ответ подтверждение по SMS:
Turn on the indicator light.
lsn,0#
Выключить „умную“ систему светового маяка. В ответ по SMS:
LED light induction has been closed
lsn,1#
Включить „умную“ систему светового маяка: если согласно GPS сейчас тёмное время суток, все четыре „лампочки“ начинают устраивать иллюминацию для лучшей видимости объекта в темноте. В ответ по SMS:
LED light induction has been started
find#
Поиск устройства в помещении. RF-v32 ответил тупо:
find
— совершенно неясно, как это понимать: подтверждение или просто отлуп неизвестной команды.
bt,0#
Отключить Bluetooth (чтобы не сажал батарейку). RF-v32 ответил:
bt:0
хотя никакого BT у него, вроде бы, и нет.
sos1,+7xxx...#
Задать первый номер экстренного вызова. Аналогично другие: sos2,...#, sos3,...#.
sos1#
Удалить первый SOS-номер. Аналогично другие: sos2#, sos3#.
sos,+7xxx...,+7yyy...,+7zzz...#
Задать все три номера экстренного вызова одной командой. Можно прописывать не все номера, т.е., задать какой-нибудь пустым — пропустить его в соответствующем месте (соответственно там получатся две запятые подряд: „xxx,,zzz“)
sos#
Удалить все номера телефонов экстренных вызовов (SOS).
upload,3600#
Установка интервалов передачи данных на сервер. Тут 3600 — время в секундах (3600 = 1 час; 86400 = 1 сутки). Ответ:
[upload,3600#] ok!
cr#
Принудительное пробуждение GPS-модуля и отправка данных на сервер. В ответ в SMS лишь:
cr.
Но зато на сервер улетает сразу пачка посланий (штуки четыре-пять).
dw#
Запрос местоположения. Выдаёт не координаты, а гиперссылку на сайт с местоположением. Причём, эта зараза может выдавать разное: NotaBene: Эта команда не работает, если отключён доступ к Internet (GPRS) — просто тупо всякий раз присылает «Query fails!» в ответ на запрос.
url#
Запрос местоположения. Формат выдачи немного отличается от того, что у команды dw: Эта команда работает, даже если отключён доступ к Internet (GPRS) — в отличие от команд dw и where.
where#
Похоже, это некий ущербный синониим команды url, за исключением формата ответа — тут в ответе просто гиперссылка на точку на google maps:
http://maps.google.com/maps?q=N55.75368,E37.61991
т.е., как в команде dw, но, вроде бы, сообщений с координатами на сервер не отсылается.
NotaBene: Эта команда не работает, если отключён доступ к Internet (GPRS) — просто тупо всякий раз присылает «Query fails!» в ответ на запрос.
fence#
Отключить охранный периметр. Ответ с подтверждением:
Fence Off.
wififence#
Отключить привязку к wifi-сетке (с определённым названием). Ответное подтверждение:
wififence,ok.
monitor,+7xxx...#
Прослушивание. Трекер перезвонит на указанный номер и включит микрофон. Можно также просто позвонить на трекер с „master“ или „slave“-телефона — он примет вызов, и микрофон будет включён. Если звонить трекеру с других номеров, он просто не „снимет трубку“.
call,+79876543210#
Принудительный звонок по указанному номеру.
call:+79876543210.
sms,+7xxx...,message_text#
Отправка SMS с заданным текстом на указанный номер. Для отправки неанглийских текстов их нужно задавать в формате utf-16, воспользовавшись какой-нибудь утилиткой для преобразования. Ответ:
send sms.
apn,имя apn,логин,пароль#
Установка APN своего оператора сотовой связи (для работы GPRS). Например, для разных опсосов:
МудацкиеТС
apn,internet.mts.ru,mts,mts#
деБилайн
apn,internet.beeline.ru,beeline,beeline#
Мегавнофон
apn,internet,gdata,gdata#
Tele2
apn,internet.tele2.ru#
(у некоторых сотовых операторов нет логина и пароля, в этом случае указывается только адрес)
ip,srv1.livegpstracks.com,3359#
Установка сервера, куда будут поступать данные для системы отслеживания и отображения на сайте. Где livegpstracks.com — доменное имя сервера, 3359 — порт. Ответ:
[surl,livegpstracks.com,port,3359#] ok!

Возможно поддерживаемые

Из инструкций к устройствам той же платформы

Непроверенные, возможно, неподдерживаемые команды, имеющиеся в других аналогичных устройствах:
agps,1#
Команда установки agps. В ответ придёт смс с подтверждением изменения agps.
ans,0#
The device is in hands-free push-to-talk (PTT) mode currently
ans,1#
The device is in auto-answer (hands-free) monitoring mode currently
ans,2#
The device is in silent monitoring mode currently.
bt,x#
Вкл/выкл Bluetooth. Параметр х (как обычно):
0
Выключить Bluetooth.
1
Включить Bluetooth.
bt,0#
Выключить Bluetooth.
bt,1#
Включить Bluetooth.
dnd,0#
Has opened the anti harassment function
dnd,1#
Has closed the anti harassment function. Please be careful to use
fence
Без параметра (просто „fence#“) отключает охранный периметр. Ответ с подтверждением:
Fence Off.
Пробовал закинуть в команду дурной параметр:
fence,?#
ругается (т.е., сообщения об ошибках, в принципе, наличествуют):
[fence,?#] error!
Пробовал закинуть в команду набор параметров аналогичный координатам (широта, долгота центра зоны) с радиусом:
fence,55.753680,N,37.619910,E,1000#
ругается:
[fence,55.753680#] error!
Пробовал ставить N и E перед числами:
fence,N,55.753680,E,37.619910,1000#
тоже ругается:
[fence,N#] error!
Похоже, команда принимает только один числовой параметр. Возможно, 0/1 (вкл/выкл), но возможно, что и радиус круглой зоны с центром в текущей точке.
flower,число#
Устанавливает количество цветочков (или „сердечек“) высвечиваемых на дисплее.
fon,0#
Fall down alarm OFF
fon,1#
Fall down alarm ON. Please wear this device correctly in case of misalarm, which will affect standby time
gsmant,0#
Отключить автоматическое снятие трубки при входящем звонке.
gsmant,1#
Включить автоматическое снятие трубки при входящем звонке.
makefriend,0#
Отключить функцию „добавь друга“.
makefriend,1#
Включить функцию „добавь друга“.
mod,0#
The alert send to APP only
mod,1#
The alert send to APP,SMS and then call
mod,2#
The alert send to APP, and call
mod,3#
The alert send to APP,SMS
non,0#
Sound sensing alarm function is closed
non,1#
Sound sensing alarm function is opened
pedo,0#
Выключить шагомер.
pedo,1#
Включить шагомер.
phb,num1,name1,num2,name2,num3,name3,num4,name4,num5,name5#
Прописать первые пять позиций в телефонной книге. Пропускать позиции можно (попарно) — соответствующая запись в книге будет удалена. Например, чтобы прописать первую, четвёртую и пятую записи, удалив вторую и третью:
phb,num1,name1,,,,,num4,name4,num5,name5#
Неанглийский текст (в именах телефонной книги) следует задавать в формате utf-16 (используйте какой-нибудь конвертер для соответствующего преобразования).
phb2,num6,name6,num7,name7,num8,name8,num9,name9,num10,name10#
Вторые пять записей в телефонной книге.
phb#
Удалить первые пять номеров телефонной книги (все пять сразу). Аналогично для вторых пяти: phb2#.
phbonoff,0#
Выключить функцию показа телефонной книги по нажатию второй кнопки. При выключении этой функции доступны только экстренные вызовы (SOS) по двум номерам.
phbonoff,1#
Включить функцию показа телефонной книги по нажатию клавиши номер 2.
pic,1#
Taking the picture
pponoff,0#
ХЗ что. RF v32 на это ответил:
makefriend,0
profile,x#
Настроить звук и вибро. Число x задаёт конфигурацию:
1
Включить и звук, и виброзвонок.
2
Только звук.
3
Только вибро.
4
Отключить и виброзвонок, и звук.
removesms,0#
Отключить функцию SMS-извещения факта снятия датчика (браслета) с руки.
removesms,1#
Включить функцию отправки SMS по срабатыванию датчика снятия устройства.
sosp,0#
It will not take picture when SOS
sosp,1#
It will take picture when SOS
sossms,0#
Отключить функцию отправки SMS при нажатии кнопки SOS.
sossms,1#
Включить функцию отправки SMS по кнопке SOS: по нажатию этой клавиши сообщение с текущими координатами будет отсылаться на все номера из списка номеров экстренного вызова.
tel1,+7xxx...#
Задать номер телефона для первой кнопки (для вызова). Аналогично для второй кнопки: tel2,...#.
tel1#
Удалить номер с первой кнопки. Аналогично для второй кнопки: tel2#.
time,HH.MM.SS,date,YYYY.MM.DD#
Установка времени и даты. Например,
time,14.55.00,date,2016.07.19#
timecali#
Синхронизация даты и времени по протоколу NTP. Естественно, NTP-серверы предварительно должны быть заданы командой ntpservers (и/или ntpservers2), и должна работать связь с Internet.
tkonoff,0#
Выключить возможность записи и отправления голосовых сообщений на сервер SeTracker (при наличии связи с Internet) по (длительному) нажатию кнопки ‹Power› (включения/выключения питания).
tkonoff,1#
Включить функцию записи и отправления голосовых сообщений на сервер SeTracker по клавише ‹Power›.
whitelist1,num1,num2,num3,num4,num5#
Настройка первых пяти телефонных номеров „белого списка“. При этом если какой-нибудь номер пропустить, он будет удалён. Например,
whitelist1,num1,,num3,,num5#
Задаст первый, третий и пятый номера, удалив второй и четвёртый.
whitelist2,num6,num7,num8,num9,num10#
Настройка вторых пяти телефонных номеров „белого списка“.
whitelist1#
Удаление всех номеров из первой части „белого списка“. Для второй части списка аналогично: whitelist2#.
wifi,0#
Отключить Wi-Fi-модуль.
wifi,1#
Включить Wi-Fi.
von,0#
Vibration sensing alarm function is closed
von,1#
Level 1 vibration sensor alarm ON
von,2#
Level 2 vibration sensor alarm ON
von,3#
Level 3 vibration sensor alarm ON

Странноватые команды якобы для ReachFar

На сайте my-gps.org была найдена куцая инструкция по управлению трекерами Reachfar с помощью sms. В ней обнаружились довольно странные команды, а также уже известные нам команды со странными их толкованиями.

Вот они с описаниями:
sos1
Якобы устанавливает админстративный номер телефона („master”) — что, по идее, делает команда center. Причём, в примере этой команды пароль указывается без префикса pw:
123456,sos1,4911727788990#
Зато есть пояснение, что нужно использовать международный формат телефонного номера без начального „” — то бишь, в приведённом примере номер телефона в реальности: +4911727788990.
t
Установка пароля:
123456,t,456789#
где 123456 — текущий пароль, а 456789# — устанавливаемый новый. Надо думать, это такой аналог команды pw.
dsp
Запрос текущих настроек: dsp#. Вместо известной нам ts.
goff
Отключение режима GPRS: goff#. Отключает периодическую отсылку данных на сервер непрерывного отслеживания (live tracking) по каналу GPRS — для экономии трафика и заряда батареи. Вроде бы это является аналогом команды gprsgps,0#.
gon
Включение режима GPRS: goff#. Включает периодическую отсылку данных на сервер непрерывного отслеживания (live tracking) по каналу GPRS. По идее, это аналого команды gprsgps,1#.
loff
Выключает использование светодиодов (для индикации и исгнализации): loff#. Вероятно, это аналог команды led,0#.
lon
Включает использование светодиодов: lon#. Вероятно, это аналог команды led,1#.
lag
Установка языка. Причём для английского языка нужно выдать команду
lag,2#
(2, а не 0 в отличие от lz).
reset
В отличие от известной нам команды этот reset# якобы просто удаляет „master” (административный номер) вместе со всеми sos-номерами.

Нечто похожее на команды из недр прошивки v32

Как уже указывалось выше, если прицепить трекер к компьютеру по USB и примонтировать как USB-storage, то там можно увидеть некую часть его „бортового“ программного обеспечения („прошивки“), в которой содержится кучка строк, очень напоминающих уже известные и опробованные SMS-команды.

И среди этой кучки команд есть неизвестные:
123
aa
al
any
agpsclr
agpsservers
agpsservers2
al
any
bigtime
btname
calltest
charpoweron
Возможно, управляет автоматическим включением устройства при подключении заряжающего устройства и подаче питания на него.
coldrestart
date
dateformat
debug
debugclose
delfile
dgps
displaytime
echoloopoff
echoloopon
em30713clear
em30713init
em30713read
fixtype
getap
getapn
getlcdid
getstep
gpsant
gpsant2
gpssd
gpssleepin
gpssleepin2
gpssleepout
gpssleepout2
gpstest
gsensor
guanggan
hotrestart
iccid
imsi
kpe
longpresstime
lowbat
lt
message
mc3416_reload
mc3416_reset
moveval
msisdn
ntpservers
ntpservers2
poff
poup
pp
pponoff
ppr
rad
record
remind
remove
rg
sensor
setlcdid
setptype
shutdown
silencetime
sjtcconnect
sleeptime
smscenter
smstest
snid
spn
spof
sup1
sup2
threekey
tkq
tkq2
tt
twokey
update
upgrade
vibrator
walktime
wifiautosetip
wificheck
wififence
wifimodecheck
wifimodeset
wifipd
wifipu
wifirecoveryfactory
wifireset
wifitest
work
worktime

Как эта ерунда работает

С помощью программы netcat (nc -l 8888) и SMS-команды ip,...# удалось выяснить совершеннейшую тупизну этой системы. Итак, эта ерунда просто открывает TCP-коннекцию на указанный сервер:порт (никаких защит, шифрований, аутентификаций и в помине нет) и ляпает туда открытым текстом и после некоторого ожидания коннекцию закрывает. Например, примерно раз в минуту-полторы трекер отсылает строку вида:

[3G*1234567890*0009*LK,0,0,49]
где подчёркнутое десятизначное число (после 3G*) — это просто ID трекера (напечатанный на бирке на его корпусе). Последняя позиция в строчке (тут она имеет значение 49) очень похожа на уровень заряда батареи: более-менее постоянно убывает со временем и совпадает (или близка) со значением bat level из выдачи команды ts# в этот же момент времени. Подобные короткие сообщения шлются примерно раз в минуту даже в отсутствие входящих команд по SMS.

Сервер же при подключении к нему просто молчит и ждёт строчку от клиента. На полученную строчку (подобную приведённой выше) отвечает:

[3G*1234567890*0002*LK]
и ждёт дальше, связь сам не обрывает.

Иногда (условия определить не удалось) трекер шлёт (это всё одна длинная строка) нечто подобное:

[3G*1234567890*008F*UD2,171017,181626,A,55.753680,N,37.619910,E,0.00,352.5,0.0,7,68,29,0,0,00000000,3,255,250,2,5069,50666,133,5069,50660,132,5069,50333,122,1,eduroam,bc:ae:c5:66:66:66,-88,23.8]
Здесь можно предположить следующие трактовки (некоторых выделенных позиций):
1234567890
Уже знакомый идентификатор данной железки от производителя.
171017
Дата. Скорее всего, в UTC. В формате DDMMYY (т.е., тут 17 октября 17г.).
181626
Время (18:16:26). Скорее всего, в UTC.
55.753680,N,37.619910,E
GPS-координаты: широта, долгота (N — North, E — East).
0.00
Сравнение логов сервера и собственных выявило, что в своих логах сервер называет этот параметр „Spd“ — по-видимому, это „speed“, сиречь скорость движения.
352.5
Сравнение логов сервера и собственных выявило, что в своих логах сервер называет этот параметр „Course“ — по-видимому, это курс, i.e., направление движения (азимут).
29
Уровень заряда аккумулятора. По крайней мере, почти всегда совпадает (или очень близко) с аналогичным уже известным показателем в ежеминутных „тиках“, соседствующих (по времени) с данным сообщением.
3 (18-ая позиция (после 17-ой запятой в строке))
Количество троек чисел, описывающих „соты“ сетей мобильной связи. Далее (после данного поля) в строке следуют: неопознанный параметр (255), MCC (250), MNC (2) и некоторое количество групп чисел по три штуки в каждой группе. Так вот, это поле определяет количество этих троек и, таким образом, описываемых ими GSM-ячеек (их базовых станций). Здесь данное поле равно 3, значит, далее в строке будет 3 группы по три числа. Каждая такая тройка содержит LAC, Cell ID и ещё один какой-то параметр (есть весьма правдоподобное предположение, что это нечто связанное с уровнем GSM-сигнала). В данном поле наблюдались значения от 1 до 7.
250
MCC — Mobile Country Code для РФ.
2
MNC — Mobile Network Code для меГавнофона в России.
5069
LAC — Location Area Code (код района внутри сотовой сети).
50666
CID — Cell ID (ID „соты“ GSM).
133
Нечто связанное с уровнем сигнала сети мобильной связи. На просто dB непохоже.
1 (следующая позиция за блоком GSM-сот)
Количество троек параметров, описывающих „видимые“ WiFi-сети. В данном случае обнаружена только одна WiFi-сеть.
eduroam
Имя WiFi-сети.
bc:ae:c5:66:66:66
MAC-адрес точки доступа (Access Point) этой WiFi-сетки.
-88
Уровень сигнала (похоже на dB).

Итак, эта мутотень фактически занимается сканированием/мониторингом системы сотовой связи (районов, ячеек, базовых станций, и т.п.), так же как и WiFi-сеток, и пересылкой собранных данных на их сервер за счёт пользователя, который никак эту функцию отключить не может (кроме, конечно, выворачивания адреса/порта сервера командой ip или полного отключения GPRS в своём тарифном плане). Попыток отсылки этой информации через WiFi-сетки пока не обнаружено даже при наличии открытых/публичных WiFi и отправках команд wifi,1# и wifiautosetup,1# (ответных SMS, кстати, на них никаких не было).

Похоже, для любого сообщения серверу это чудо-иудо открывает не только отдельную TCP-коннекцию, но и отдельный сеанс связи GPRS (по крайней мере, IP-адрес источника TCP-соединения клиент→сервер каждый раз меняется — это видно в логах на сервере). Соответственно каждый такой сеанс тарфицируется опсосом отдельно, а т.к. у большинства из них объёмы квантуются посеансово и покилобайтно, то каждая такая строчечка отъедает минимум килобайт траффика в плане оплаты. Причём, этот засранец чуть ли не каждую минуту (в отсутствие поступающих SMS-команд) лупит подобные коротенькие строчки с разными значениями последних позиций — что это за деятельность, зачем — покрыто мраком. Однако, это означает, что эта ублюдина просто так жрёт, как минимум, 60KB в час — соответственно, это выливается в более одного мегабайта в сутки или около 45MB в месяц (в смысле учёта траффика и его оплаты) на „холостом ходу“.

На самом деле, зачастую ситуация оказывается даже хуже благодаря жлобству опсосов. Например, мегавнофон на тарифе без абонентской платы поставляет GPRS-трафик блоками по 100МБ, которые активируются автоматически при появлении GPRS-активности клиента и действуют в течение одних суток! Т.е., даже если эта херотень реально потребит 1–2МБ в сутки, платить вы будете как за 100МБ каждые сутки! И такие вот уроды претендуют на то, чтобы их считали людьми? Это же гниды, кровопийцы — паразиты, которых следует изводить под корень.

NB о кешировании собранных данных: Как уже отмечалось, если прицепить трекер к компьютеру по USB, то его видно как USB-storage. На примонтированном куске лежит парочка файлов с расширением bin. Один лежит в корне: mtkepo.bin. Время его последнего изменения не постоянно — оно примерно совпадает со временем последнего сеанса связи. Причём, эта метка времени меняется не просто так: содержимое файла действительно изменяется. В общем, судя по всему, там хранится информация о состоянии устройства (настройки и т.п.) и кешируются собранные данные (gps, gsm, wifi) до следующего сенаса связи. Формат файла расковырять пока не удалось.

NB по поводу privacy: В процессе гугления удалось случайно обнаружить логи этого олигофренического сервера gps123.org в открытом доступе. Логи разбиты на часовые куски и поименованы соответственно. Например, файл http://www.gps123.org/log2/20170813/GateWayLog06.txt — это лог c 06:00 до 06:59 (время по UTC+8 — какой-то китай) за 13 августа 2017г. В этих логах нашлись и сообщения от моей железяки, со всеми потрохами: координатами, GSM-сотами, WiFi-сетками и т.п. То бишь, кто угодно может заполучить доступ к этим данным и следить…

NB по поводу netcat: socat для данной цели подходит лучше:

socat -v -D -u TCP4-LISTEN:8888,reuseaddr,fork,so-timestamp OPEN:/tmp/in-tcp-8888.log,creat,append
Или, чтобы информация доходила до их уродского сервера слежения:
socat -v -D -lf '/tmp/in-tcp-8888.log' 'TCP4-LISTEN:8888,range=31.173.80.0/21,reuseaddr,fork,so-timestamp' 'TCP4:www.gps123.org:8888,so-timestamp'

Замеченные виды сообщений

За не очень большой период наблюдения в этом тупейшем протоколе были замечены следующие виды сообщений.

„Тик“-ание
Раз в минуту (или полторы? — не очень понятно) отсылается короткая строчка вида:
[3G*1234567890*0009*LK,0,0,33]
Удалось выяснить, что в последней позиции (тут 33) стоит уровень заряда батареи.
„Тик“
Если изменить настройки, в „тике“ меняются некоторые числа. Например, после выключения GPS (gprsgps,0#) изменяется числовое значение, стоящее (через „звёздочку“) после ID устройства:
[3G*1234567890*000A*LK,0,0,33]
Если вернуть GPS, то разок появляется строка с „0009“, а потом снова идут „000A“, но через некоторое (довольно большое) время оно возвращается к режиму „0009“. Как это понимать — ХЗ.
Battery low
При достижении зарядом батареи уровня 10 трекер посылает серверу парочку подобных строк:
[3G*1234567890*00AA*AL,171017,204740,A,55.753680,N,37.619910,E,0.00,80.9,0.0,10,57,8,0,0,00020001,5,255,250,2,5069,50666,130,5069,50665,126,5069,50333,118,5069,50662,113,5069,50332,113,0,28.7]
Аналогичная строчка (поймана в другой раз при разряде):
[3G*1234567890*00CA*AL,201017,031735,A,55.753680,N,37.619910,E,0.00,164.8,0.0,13,100,9,0,0,00020001,7,255,250,2,5069,50666,145,5069,50333,143,5069,50665,134,5069,57666,132,5069,66605,127,5069,50662,125,5069,50667,123,0,7.1]
Причём, при достижении зарядом уровня ниже порогового (10) в „тиках“ код „0009“ меняется на „0008“:
[3G*1234567890*0008*LK,0,0,9]
A также (разово) шлёт на основной телефон („master“) предупреждение по SMS:
ID:1234567890,low battery
В процессе включения
При включении начинает выдавать обычные „тики“ и вскорости (минута-две) присылает:
[3G*1234567890*00C7*UD,181017,165220,V,55.753680,N,37.619910,E,0.00,0.0,0.0,0,63,79,0,0,00000000,7,255,250,2,5069,50667,132,5069,50661,135,5069,50663,133,5069,50331,129,5069,50666,126,5069,50333,125,5069,50665,125,0,28.7]
При включении GPS (gprgps,1#)
[3G*1234567890*0072*UD,181017,191731,A,55.753680,N,37.619910,E,0.00,287.4,0.0,9,100,90,0,0,00000000,1,255,250,2,5069,50666,148,0,17.7]
SMS-команда dw
Выслал:
[3G*1234567890*00BA*UD,181017,234549,A,55.753680,N,37.619910,E,0.00,74.9,0.0,10,100,75,0,0,00000000,6,1,250,2,5069,50666,144,5069,50663,146,5069,50665,120,5069,50333,115,5069,55033,114,5069,50664,113,0,24.2]
SMS в ответ так и не прислал, хотя в другие разы отвечал. Совершенно непредсказуемая хренотень.
SMS-команда cr
Вызвала отправку сразу пары пачек строк (с менее чем минутным интервалом):
[3G*1234567890*00CD*UD2,191017,011255,A,55.753680,N,37.619910,E,0.00,306.1,0.0,10,100,96,0,0,00000000,7,255,250,2,5069,50666,151,5069,50665,136,5069,50663,126,5069,50662,122,5069,50664,119,5069,50667,118,5069,50333,115,0,11.0]
[3G*1234567890*00CB*UD,191017,011315,A,55.753680,N,37.619910,E,0.00,312.4,0.0,10,100,94,0,0,00000000,7,255,250,2,5069,50666,153,5069,50665,145,5069,50663,126,5069,50662,126,5069,55033,121,5069,50333,117,5069,50667,114,0,8.6]
[3G*1234567890*00CB*UD,191017,011336,A,55.753680,N,37.619910,E,0.00,160.1,0.0,11,100,94,0,0,00000000,7,255,250,2,5069,50666,143,5069,50665,147,5069,50663,125,5069,50662,124,5069,55033,119,5069,50667,117,5069,50333,116,0,5.9]
[3G*1234567890*00CB*UD,191017,011357,A,55.753680,N,37.619910,E,0.00,337.4,0.0,13,100,94,0,0,00000000,7,255,250,2,5069,50666,147,5069,50665,146,5069,50663,124,5069,50662,123,5069,55033,120,5069,50667,119,5069,50333,115,0,5.8]

[3G*1234567890*00CC*UD2,191017,011417,A,55.753680,N,37.619910,E,0.00,240.5,0.0,14,100,91,0,0,00000000,7,255,250,2,5069,50666,151,5069,50665,147,5069,50663,127,5069,50662,123,5069,50333,118,5069,55033,116,5069,50667,114,0,6.0]
[3G*1234567890*00C9*UD,191017,011438,A,55.753680,N,37.619910,E,0.00,240.5,0.0,14,100,91,0,0,00000000,7,1,250,2,5069,50666,148,5069,50665,144,5069,50663,124,5069,55033,119,5069,50662,119,5069,50333,114,5069,50667,113,0,5.5]
[3G*1234567890*00CB*UD,191017,011458,A,55.753680,N,37.619910,E,0.00,240.5,0.0,14,100,91,0,0,00000000,7,255,250,2,5069,50666,147,5069,50665,143,5069,50663,124,5069,50662,124,5069,50667,117,5069,50333,116,5069,55035,115,0,5.4]
[3G*1234567890*00CA*UD,191017,011519,A,55.753680,N,37.619910,E,0.00,57.7,0.0,14,100,90,0,0,00000000,7,255,250,2,5069,50666,142,5069,50665,147,5069,50663,126,5069,50662,123,5069,50667,121,5069,50333,118,5069,55035,117,0,7.0]
А по SMS в ответ только: „cr.“.
Иногда (условия не ясны) сервер среди ответов на какое-либо сообщение шлёт подобное:
[3G*1234567890*0002*CR]
Это происходит не обязательно в ответ на сообщения, вызванные sms-командой „cr“, а чаще всего в ответах на обычный „тик“ — по-видимому, это такой обратный командный канал связи от сервера к конечному устройству. При этом в логах самого сервера появляются сообщения вида:
         VTR:VTR-SelectOnline-1234567890
         2017/11/12 18:15:17,Str:VTR-SelectOnline-1234567890
         VTR:VTR-Send-1234567890-Code02-[SG*1234567890*0002*CR]
         2017/11/12 18:15:17,Str:VTR-Send-1234567890-Code02-[SG*1234567890*0002*CR]
       
Регулярные сообщения данных о местоположении (с периодом заданным командой upload)
Периодически шлёт что-то подобное:
[3G*1234567890*00BB*UD,191017,103259,A,55.753680,N,37.619910,E,2.31,37.6,0.0,11,100,76,0,0,00000000,6,1,250,2,5069,50666,145,5069,50665,142,5069,50662,128,5069,50663,118,5069,50664,117,5069,50667,116,0,43.3]
[3G*1234567890*00C8*UD,191017,103508,A,55.753680,N,37.619910,E,0.00,308.1,0.0,6,83,75,0,0,00000000,7,0,250,2,5069,50666,137,5069,50665,135,5069,50662,124,5069,50664,115,5069,50663,115,5069,50667,115,5069,50333,113,0,72.5]
[3G*1234567890*00CB*UD2,191017,103855,A,55.753680,N,37.619910,E,3.72,302.7,0.0,12,69,74,0,0,00000000,7,255,250,2,5069,50666,133,5069,50665,133,5069,50664,123,5069,50333,123,5069,50332,116,5069,66605,116,5069,50667,114,0,38.9]
[3G*1234567890*00C8*UD2,191017,104150,A,55.753680,N,37.619910,E,0.00,249.7,0.0,7,76,73,0,0,00000000,7,2,250,2,5069,50666,137,5069,50333,137,5069,50665,132,5069,66605,129,5069,57666,127,5069,50332,123,5069,50662,122,0,17.1]
Причём, похоже, это происходит только в движении. Т.е., если новые координаты не (сильно) отличаются от последних отосланных ранее, новых данных не отсылается.
Спонтанно (причина ХЗ.1)
Ни с того, ни с сего:
[3G*1234567890*0008*LK,0,0,2] [3G*1234567890*00C7*UD,201017,031532,A,55.753680,N,37.619910,E,0.00,22.9,0.0,8,100,2,0,0,00000001,7,1,250,2,5069,50666,145,5069,50333,142,5069,50665,133,5069,57666,130,5069,66605,129,5069,50662,126,5069,50665,125,0,19.2]
Возможно, это просто один из видов периодических (определяемого величиной, заданной командой upload) сообщений о местоположении, других параметрах состояния устройства и данных окружающей обстановки (сотовые сети, wi-fi).
Сообщения типов WAD и RAD
Происходит довольно редко, причины/обстоятельства неясны.
[3G*1234567890*00D1*WAD,EN,200418,151715,A,55.753680,N,37.619910,E,15.08,289.6,0.0,8,100,100,0,0,00000000,7,255,250,2,5069,50666,148,5069,50669,145,5069,50667,139,5069,50668,137,5069,50663,126,5069,50665,125,5069,50664,125,0,39.0] [SG*1234567890*003b*RAD,GPS,.......... ............, Zhukovsky District, Moscow Oblast, Russia]
SMS-команда fence
Судя по всему, SMS-команда fence принимает только один числовой параметр — возможно, это радиус (круглой) охранной зоны с центром в текущей точке. Для пробы закинул SMS:
fence,1234#
В ответ — тишина… Хотя сама железяка начала помаргивать активнее, словно искала GPS-спутники. И только через некоторое время полетело сообщение серверу (совсем не нового типа, а уже не раз виденного):
[3G*1234567890*00AC*UD,161117,023932,A,55.753680,N,37.619910,E,0.00,115.7,0.0,7,59,92,0,0,00000000,5,255,250,2,5069,50666,132,5069,50665,121,5069,50999,117,5069,50333,115,5069,50669,115,0,73.8]
И никаких намёков на заданный SMS-командой радиус. А ответного SMS так и не дождался.
Информация о WiFi
Если видит WiFi-сетки, сообщает о них — аналогично GSM-сотам:
[3G*1234567890*00D7*UD2,121117,054839,V,55.753680,N,37.619910,E,0.00,0.0,0.0,0,52,78,0,0,00000000,4,255,250,2,5069,50666,129,5069,50665,132,5069,50660,123,5069,50669,116,1,eduroam,bc:ae:c5:66:66:66,-88,24.4]

Документация (от производителя и не только)

Между делом как-то попался огрызок (потому как весь протокол явно обширнее) документации под названием «V60/V51 data protocol» — это, конечно, не про v30/v32, но, очевидно, всё-таки аналогичная дребедень, так что может быть полезной для понимания работы этих рукожопых поделок.

И далее: следующие модели в том же ряду

rf-v30

Конечно же, на самом деле, это предыдущая модель. Точнее, v32 — это та же v30 только с катушкой индуктивности для беспроводной зарядки — об этом уже говорилось выше.

Страничка железки на уродском сайте жопоруков.

rf-v40

Страничка железки на ублюдочном сайте ровшанов.

Корпус такой же, как у v30/v32. Похоже, потроха тоже такие же, т.к. все новые (по сравнению с v30/v32) функции вполне реализуемы программно: „умная” подсветка для поиска животного в темноте, автоматические вкл/выкл, трекинг по запросу (не только периодический), оповещение о смене SIM-ки и т.п. Более того, зачатки этих функций в виде распознаваемых, но ничего реально не делающих, команд были уже в версии прошивки для v32.

rf-v43

Страничка железки на ламерском сайте джамшутов.

Корпус уже другой — не в виде лапки, а в виде мыльницы с глазами, носиом (не рельеф, просто так светодиоды расположены) и ротиком (датчик освещённости). Судя по всему, начинка (плата, схема и компоненты) тоже другие.

Да, появилась функция SOS: сигнал тревоги включается (сообщения отправляются), если во включенном состоянии нажать и удерживать (5 сек) кнопку питания. Интересно, это уних жывтоне такие умные и ловкие, что способны на такое? Или это очередной вывих их дури?

rf-v47

Страничка железки на мудацком сайте рукожопов. Есть ещё одна — вроде бы про ту же самую дежицу. На хрена их две? Чтобы мозги людям канифолить? Типичные сиволапые недоумки.

Корпус такой же, как у v43 — „мыльница”, точнее обмылок (потому как маленький).

Итак, эта поделка на шине USB имеет:

  
    idVendor                0x1e04
    idProduct               0x9000
    bDescriptorType         1
    bcdDevice           34.10
    bcdUSB               1.10
    bDeviceClass            0
    bDeviceSubClass         0
    iManufacturer           1 Coolsand Technologies
    iProduct                2 Coolsand
    iSerial                 3 USB Controller 1.0
    bNumConfigurations      1
    bNumInterfaces          1
    iInterface              4 RDA Usb
    bInterfaceClass         255 Vendor Specific Class
    bInterfaceSubClass      102
    bInterfaceProtocol      102
  

— судя по всему, этот обмылок весьма себе на уме. Естественно, ни о каком „storage device” и речи нет Linux про рукожопов Coolsand ничего не знает, а при подключении говорит про него «mtp-probe: not an MTP device».

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

В общем, пока непонятно, как эту хрень прицепить, чтобы от неё был хоть какой-то толк.
Вывод:
УРОДЫ!!!
УБИВАТЬ ТАКИХ МАЛО!!!
ПОВЕСИТЬ ЗА ЯЙЦА ЭТИХ ПИДАРАСОВ!!!
ЗАСУНУТЬ УЁБКАМ ПАЯЛЬНИКИ В ЖОПЫ!!!
ШКУРЫ ЗАЖИВО СОДРАТЬ С ЭТИХ НЕЛЮДЕЙ!!!
ЗАЖАРИТЬ ЖИВЬЁМ ГНИД В КИПЯЩЕМ МАСЛЕ!!!

Чуть более близкое знакомство выявило полнейшую ублюдочность этой модели:

FUCKEN reachfar lamers MUST DIE!!!
FUCKEN reachfar jamshoots MUST BE CALCINED ALLIVE!!!
FUCKEN reachfar arseholes MUST BE EMPALED!!!
FUCKEN reachfar faggots MUST BE IMPALED!!!
FUCKEN reachfar assclowns MUST BE STAKED!!!
FUCKEN reachfar cocksuckers MUST BE BURNED ALIVE!!!
FUCKEN reachfar assholes MUST BE GRILLED ALIVE!!!
FUCKEN reachfar dickscukers MUST BE SCORCHED ALIVE!!!
FUCKEN reachfar yids MUST BE EXCORIATED ALIVE!!!
FUCKEN reachfar nits MUST BE DEEP FRIED ALIVE!!!
FUCKEN reachfar morons MUST BE BOILED ALIVE!!!
FUCKEN reachfar jews MUST BE BURNED DOWN ALIVE!!!
FUCKEN reachfar oven dodgers MUST BE SKINNED ALIVE!!!
FUCKEN reachfar wankers MUST BE FRIED ALIVE!!!
FUCKEN reachfar oligofrens MUST BE BROILED ALIVE!!!
FUCKEN reachfar lamers MUST BE FLAYED ALIVE!!!
FUCKEN reachfar chutzpah-fags MUST BE BURNED OUT ALIVE!!!
FUCKEN reachfar braindamaged motherfuckers MUST BE ROASTED ALIVE!!!
FUCKEN reachfar imbeciles MUST BE INCINERATED ALIVE!!!
FUCKEN reachfar dickheads MUST BE DISBARKED ALIVE!!!
FUCKEN reachfar fucktards MUST BE GALLED ALIVE!!!
FUCKEN reachfar hydrocephals MUST BE rinded ALIVE!!!

Кое-что ещё (как бы примычания)

О сайте производителя

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

HTTP 错误 500.19 - Internal Server Error
无法访问请求的页面,因为该页的相关配置数据无效。

— ровшаны и джамшуты в своём обыкновении.

У этих долбоёбов появились ещё сайты: iReachFar.com и igps123.com. Судя по названиям, состоящим из начальной „i” следующих за ней имён (названий фирмы, брендов и т.п.), эти уроды суть клоуны у яблочных пидарасов, да и сами они тоже пидарасы — клоуны-пидарасы. И почему этот их coming-out меня не удивляет?

О поддержке

В конце концов, было решено попытаться связаться с техподдержкой производителя. Прошерстив гугель на предмет контактных e-mail адресов, перебрав несколько нарытых в поиске (сплошь отлупы), удалось получить ответ с адреса <info@rf-gsm.com>. Ответила некая «Susan Chen, Sales Engineer»:

Susan Chen, Sales Engineer
Shenzhen ReachFar Technolgoy Co.,Ltd
Phone:+8613717148901
Skype:susanchencrs
www.igps123.com
www.ireachfar.com

Но вместо запрошенных контактов технического отдела или техподдержки эта тупая пизда посоветовала купить трекер новой модели, например,… v47, хотя в начальном письме мною было чётко прописано: у меня именно v47, и с ним куча проблем.

На повторное письмо (ещё раз, для дебилов, медленно) с чётким изложением ситуации просто не ответила совсем, ушла в глухую несознанку. И как их после этого называть?
ЁБАНЫЕ В РОТ БЕЗМОЗГЛЫЕ ЖИДОВСКИЕ ГОНДОНЫ!!!
ГНИДЫ!!! ПИДОРЫ ОНИ ВСЕ!!!

FUCKEN shenzhen reachfar lamers MUST DIE!!!
FUCKEN shenzhen reachfar jamshoots MUST BE CALCINED ALLIVE!!!
FUCKEN shenzhen reachfar arseholes MUST BE EMPALED!!!
FUCKEN shenzhen reachfar faggots MUST BE IMPALED!!!
FUCKEN shenzhen reachfar assclowns MUST BE STAKED!!!
FUCKEN shenzhen reachfar cocksuckers MUST BE BURNT ALIVE!!!
FUCKEN shenzhen reachfar assholes MUST BE GRILLED ALIVE!!!
FUCKEN shenzhen reachfar dickscukers MUST BE SCORCHED ALIVE!!!
FUCKEN shenzhen reachfar yids MUST BE EXCORIATED ALIVE!!!
FUCKEN shenzhen reachfar nits MUST BE DEEP FRIED ALIVE!!!
FUCKEN shenzhen reachfar morons MUST BE BOILED ALIVE!!!
FUCKEN shenzhen reachfar jews MUST BE BURNT DOWN ALIVE!!!
FUCKEN shenzhen reachfar sheepfuckers MUST BE QUARTERED!!!
FUCKEN shenzhen reachfar oven dodgers MUST BE SKINNED ALIVE!!!
FUCKEN shenzhen reachfar wankers MUST BE FRIED ALIVE!!!
FUCKEN shenzhen reachfar oligofrens MUST BE BROILED ALIVE!!!
FUCKEN shenzhen reachfar coprofags MUST BE FLAYED ALIVE!!!
FUCKEN shenzhen reachfar chutzpah-fags MUST BE BURNT OUT ALIVE!!!
FUCKEN shenzhen reachfar monkeyfuckers MUST BE HUNG BY THE BALLS!!!
FUCKEN shenzhen reachfar braindamaged motherfuckers MUST BE ROASTED ALIVE!!!
FUCKEN shenzhen reachfar imbeciles MUST BE INCINERATED ALIVE!!!
FUCKEN shenzhen reachfar dickheads MUST BE DISBARKED ALIVE!!!
FUCKEN shenzhen reachfar fucktards MUST BE GALLED ALIVE!!!
FUCKEN shenzhen reachfar hydrocephals MUST BE RINDED ALIVE!!!
FUCKEN shenzhen reachfar asslickers MUST BE DROWNED IN SHIT!!!
FUCKEN shenzhen MUST BE TOTALLY Cobalt-NUKED!!!

Иные

У этих сиволапых имбецилов помимо трекеров для петей (pet trackers) — для мелких жывтоне — есть также приблуды для скота (cattle trackers) — овец, коров, лошадей,… Эти железки намного массивнее, дубовее/прочнее и более долгоиграющи, некоторые аж с солнечными панелями для подзарядки на ходу.

Как вырубить Internet-доступ в ме-е-е-гавно-фоне

У мегавнофона вырубить Internet-доступ телефону (сим-карте, договору) через „личный кабинет” на их ламерзком сайте нельзя. Для этого у мега-гавно-фона приходится использовать USSD-команду *105*4*4*2*1# — выдаст (голосовое?) меню в духе „Для выключения нажмите "1", для получения информации нажмите…“. Полезно для экономии денег, ибо эти железки пытаются куда-то там вылезти по Сети даже несмотря на запрещающие настройки заданные им sms-командами. Восстановления доступа происходит по аналогичной схеме.


Tonop T

;;; Local Variables: ;;; mode: html ;;; coding: koi8-r ;;; buffer-file-coding-system: koi8-r ;;; coding-system-for-read: koi8-r ;;; coding-system-for-write: koi8-r ;;; End: ; Also see file .dir-locals.el in this same directory.