Как обмануть GPS Глонасс без вандализма

в 11:49, , рубрики: gps, node.js, глонасс

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

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

Вот некоторые способы изменить пробег в программе мониторинга. Если кому интересно, могу написать подробнее.

Данная статья призвана привлечь внимание к безопасности систем мониторинга транспорта

Автор: Seroja_Moroz

Источник

Поделиться новостью

* - обязательные к заполнению поля