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

Во всех случаях нам понадобится компьютер, с постоянным доступом в интернет, на котором мы будем поднимать сервер и прокидывать порты (я использовал 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)


  1. novichek
    08.06.2016 15:20
    +1

    Никогда не задумывался о мониторинге транспорта в таком ключе. Предположительное использование — получение материальной выгоды водителем.
    Навскидку приходит в голову несколько слабых мест.
    1. В некоторых случаях прибор выдается в аренду, соответственно при возврате — он попадет в руки специалиста, дальше зависит от его квалификации, внимательности, настроения.
    2. Анализ логов заказчиком от нескольких трекеров, которые катаются по одному маршруту.
    3. Подключенное дополнительное оборудование показания которого не будут сходиться с треком например — дут.
    Как итог — работать будет до определенного момента, потом придется придумывать новую схему


    1. Seroja_Moroz
      08.06.2016 15:36
      +1

      Выявить всё это можно. Но статья написана из-за того, что 99% людей, устанавливающих мониторинг на транспорте даже не подозревают, что можно делать какие-то махинации в системе мониторинга.
      А по поводу слабых мест могу сказать следующее: как правило, за мониторинг никому не доплачивают. Это идет как доп обязаность. На человека обычно вешается 100-200 объектов. И без явных признаков (увеличение пробега в разы, некорректные данные...) никто не смотрит объекты настолько детально, чтобы можно было это заметить.
      По слабым местам:
      1. Перед возвратом прибора его нужно прошить в исходное состояние. Благо почти все прошивальщики позволяют сохранить прошивку. Также почти все современные приборы поддерживают удаленную прошивку, ток что пломбы не спасут
      2. 10%-20% — это очень маленькое расхождение. Вполне допустимое
      3. ДУТ и прочие датчики цепляются к GPS. И их показания не модифицируются.
      Итог: если не жадничать и не накручивать 200% — работать будет довольно долго.


  1. lizarge
    08.06.2016 15:39
    +3

    Использование таких хаков возможно только в глубоко неправильной архитектуре сервера, как минимум нужно закрывать такие вещи https.
    А по факту ваша статья не относиться ни к GPS, ни к Node.js, к тематике хабра ее тоже притянуть весьма сложно, как воровать бенз, может лучше на форум водителей?


  1. ruguevara
    08.06.2016 18:40
    +1

    Да, это вам не мелочь по карманам тырить!


  1. begemot_sun
    08.06.2016 18:45

    А каковы юридические последствия подмены телеметрии?


  1. DmitriyDef
    09.06.2016 00:58
    +1

    Проще взять у производителя трекера протокол передачи данных, написать эмулятор и рубиться на конкретный порт конкретного сервера.
    Проблема существует — факт. Но, это, скорее, про пофигизм в головах.


    1. Seroja_Moroz
      09.06.2016 04:51

      Самые популярные в РФ трекеры распространяются со своими серверами. Алгоритмы так просто вам никто не даст. Потому и пришлось пропускать трафик через себя для анализа. А эмулировать сигнал, таким образом, чтобы он не шел по рекам, озерам и лесам, притормаживал на перекрестках и не выезжал на встречку очень непросто


      1. DmitriyDef
        09.06.2016 05:12

        Есть такой момент, да, и оно даже интересней:) Единственный, кто не поддался на уговоры — это ЗАО «Сантэл-Навигация». У Гранитов пришлось разбирать протоколы (ndtp V3 и V6) в ручную. В остальном, производители сдают инфу по запросу, без задней мысли.
        По эмуляции… Маршруты прописать — не проблема. На худой конец можно старый трек скормить. У нас, например, с этим GeoDjango справляется… плюс небольшой скрипт на Торнадо. Когда срываешь графики, а отчётность идёт по навигации — очень помогает:)


        1. Seroja_Moroz
          09.06.2016 06:09

          Случайно нет протокола этих ребят ritm.ru?


          1. DmitriyDef
            09.06.2016 06:22

            Voyager 2N есть в коллекции, но пока руки не доходили. Платоном заняты.


            1. Seroja_Moroz
              09.06.2016 10:32

              Если не секрет, как успехи?


              1. DmitriyDef
                09.06.2016 10:38

                Там оно не так просто. Тестируем.
                И не понятно как обстоят дела с камерами и с физическим контролем. Пока сходимся на мысли, что никак. Надо проверять.


                1. Seroja_Moroz
                  09.06.2016 10:45

                  По Voyager 2N могу выслать логи сервера.