Во всех случаях нам понадобится компьютер, с постоянным доступом в интернет, на котором мы будем поднимать сервер и прокидывать порты (я использовал nginx+node.js).
Способ первый (без доступа к серверу мониторинга)
Суть терминала спутникового мониторинга заключается в том, чтобы принимать, записывать и с заданной переодичностью слать свои координаты на сервер мониторинга. Мы попробуем вклиниться между сервером и терминалом. Для этого придется прошить прибор. Как это делается — можно посмотреть на сайте производителя.
Указываем в качестве сервера адрес нашего компьютера. Теперь все данные с прибора приходят не на сервер, а на наш компьютер. В моем случае на порт 7113. Нам нужно прослушивать этот порт, при необходимости модифицировать данные и отправлять их уже на сервер мониторинга. Для этого я написал простенький скрипт на node.js. Скрипт просто вклинивается между клиентом и сервером и выводит пересылаемые данные в консоль.
var net = require('net');
var server = net.createServer(function(socket) {
var client = new net.Socket();
client.connect(АдресСервера, '7113', function() {
console.log('Connected');
});
socket.on('data', function(data) {
console.log('> ' + data);
client.write(data);
});
client.on('data', function(data) {
console.log('< ' + data);
socket.write(data);
});
});
server.listen(ВашАдрес, '7113');
Чтобы увеличить пробег, придется модифицировать данные. Я, например, после каждого десятого сообщения с терминала отправляю на сервер еще одно, немного модифицированное предыдущее сообщение. Для сервера это выглядит, как если бы автомобиль мгновенно остановился отъехал назад, затем также мгновенно поехал вперед. Это самый простой алгоритм увеличивает пробег на 20%. При этом координаты считаются корректными, скорость не увеличивается, а на маршруте этих махинаций не видно, т.к. один маршрут на 100% перекрывает другой.
Способ второй (с доступом к серверу)
Если доступ к мониторингу осуществляется через веб-интерфейс и у вас есть доступ к коду сервера и этот код не зашифрован — тут даже выдумывать ничего не надо. Модифицируем код так, чтобы он выдавал нам то, что мы хотим.
Способ третий (пропуск конечного трафика через себя)
Если у вас нет прямого доступа к серверу мониторинга, можно пропустить трафик клиентов через себя. И модифицировать передаваемые данные. Для этого я также воспользовался node.js. При помощи модуля http поднимаем сервер:
var server = http.createServer(function(request, response) {...}).listen(80)
Где делаем запрос к серверу:
var proxyRequest = http.request(options)
В качестве параметров указываем адрес, порт и пр. (пример можно посмотреть на гитхабе). И обрабатываем (при необходимости модифицируем ответ сервера):
proxyRequest.on('response', function(proxyResponse) {....}
Вот некоторые способы изменить пробег в программе мониторинга. Если кому интересно, могу написать подробнее.
Данная статья призвана привлечь внимание к безопасности систем мониторинга транспорта
Комментарии (13)
lizarge
08.06.2016 15:39+3Использование таких хаков возможно только в глубоко неправильной архитектуре сервера, как минимум нужно закрывать такие вещи https.
А по факту ваша статья не относиться ни к GPS, ни к Node.js, к тематике хабра ее тоже притянуть весьма сложно, как воровать бенз, может лучше на форум водителей?
DmitriyDef
09.06.2016 00:58+1Проще взять у производителя трекера протокол передачи данных, написать эмулятор и рубиться на конкретный порт конкретного сервера.
Проблема существует — факт. Но, это, скорее, про пофигизм в головах.Seroja_Moroz
09.06.2016 04:51Самые популярные в РФ трекеры распространяются со своими серверами. Алгоритмы так просто вам никто не даст. Потому и пришлось пропускать трафик через себя для анализа. А эмулировать сигнал, таким образом, чтобы он не шел по рекам, озерам и лесам, притормаживал на перекрестках и не выезжал на встречку очень непросто
DmitriyDef
09.06.2016 05:12Есть такой момент, да, и оно даже интересней:) Единственный, кто не поддался на уговоры — это ЗАО «Сантэл-Навигация». У Гранитов пришлось разбирать протоколы (ndtp V3 и V6) в ручную. В остальном, производители сдают инфу по запросу, без задней мысли.
По эмуляции… Маршруты прописать — не проблема. На худой конец можно старый трек скормить. У нас, например, с этим GeoDjango справляется… плюс небольшой скрипт на Торнадо. Когда срываешь графики, а отчётность идёт по навигации — очень помогает:)Seroja_Moroz
09.06.2016 06:09Случайно нет протокола этих ребят ritm.ru?
DmitriyDef
09.06.2016 06:22Voyager 2N есть в коллекции, но пока руки не доходили. Платоном заняты.
Seroja_Moroz
09.06.2016 10:32Если не секрет, как успехи?
DmitriyDef
09.06.2016 10:38Там оно не так просто. Тестируем.
И не понятно как обстоят дела с камерами и с физическим контролем. Пока сходимся на мысли, что никак. Надо проверять.
novichek
Никогда не задумывался о мониторинге транспорта в таком ключе. Предположительное использование — получение материальной выгоды водителем.
Навскидку приходит в голову несколько слабых мест.
1. В некоторых случаях прибор выдается в аренду, соответственно при возврате — он попадет в руки специалиста, дальше зависит от его квалификации, внимательности, настроения.
2. Анализ логов заказчиком от нескольких трекеров, которые катаются по одному маршруту.
3. Подключенное дополнительное оборудование показания которого не будут сходиться с треком например — дут.
Как итог — работать будет до определенного момента, потом придется придумывать новую схему
Seroja_Moroz
Выявить всё это можно. Но статья написана из-за того, что 99% людей, устанавливающих мониторинг на транспорте даже не подозревают, что можно делать какие-то махинации в системе мониторинга.
А по поводу слабых мест могу сказать следующее: как правило, за мониторинг никому не доплачивают. Это идет как доп обязаность. На человека обычно вешается 100-200 объектов. И без явных признаков (увеличение пробега в разы, некорректные данные...) никто не смотрит объекты настолько детально, чтобы можно было это заметить.
По слабым местам:
1. Перед возвратом прибора его нужно прошить в исходное состояние. Благо почти все прошивальщики позволяют сохранить прошивку. Также почти все современные приборы поддерживают удаленную прошивку, ток что пломбы не спасут
2. 10%-20% — это очень маленькое расхождение. Вполне допустимое
3. ДУТ и прочие датчики цепляются к GPS. И их показания не модифицируются.
Итог: если не жадничать и не накручивать 200% — работать будет довольно долго.