Найти тему

Собираем устройство для прослушки

Салют, бандиты!

Вы навер­няка слы­шали, что в шпи­онское устрой­ство мож­но прев­ратить прак­тичес­ки что угод­но, вклю­чая кабели для заряд­ки устрой­ств. В этой статье я покажу, как соб­рать на Arduino и зап­рограм­мировать GSM-жучок, на который мож­но поз­вонить с опре­делен­ного номера и слу­шать все про­исхо­дящее. Наше изоб­ретение мы замас­киру­ем под пор­татив­ный акку­муля­тор.

-2

Офи­циаль­но изго­тав­ливать аппа­рату­ру для скры­той прос­лушки, виде­онаб­людения, сня­тия информа­ции с компь­юте­ра могут толь­ко фир­мы, которые име­ют на это государс­твен­ные лицен­зии. По замыс­лу, эти фир­мы дол­жны выпол­нять толь­ко гос­заказы. Но шпи­онски­ми устрой­ства­ми поп­роще может обза­вес­тись любой. Их мож­но сде­лать самому, если уме­ешь обра­щать­ся с паяль­ником. Детали для таких устрой­ств лег­ко купить в любом магази­не, тор­гующем элек­тро­никой.

Есть нес­коль­ко видов устрой­ств для слеж­ки:

  • Ра­диожуч­ки;
  • Ми­ни‑дик­тофоны;
  • Скры­тые виде­ока­меры;

Ла­зер­ная прос­лушка.

Мы же будем собирать GSM-жучок — устрой­ство с боль­шим ради­усом дей­ствия и объ­емным акку­муля­тором. Такие харак­терис­тики поз­воля­ют ему работать в режиме ожи­дания до десяти дней, а в режиме прос­лушки до четырех часов. Отли­читель­ная чер­та такого устрой­ства — воз­можность слу­шать все про­исхо­дящее не в записи, а по ходу дела.

Выбор маскировки

Про­ще все­го спря­тать что‑то на самом вид­ном мес­те, в чем‑то, что не прив­лека­ет вни­мания. Вот инте­рес­ные спо­собы замас­кировать прос­лушива­ющее устрой­ство.

-3
-4

Эти вари­анты прос­лушки инте­рес­ны еще и тем, что пред­меты, в которые были внед­рены жуч­ки, поч­ти всег­да под­клю­чены к сети: так жучок никог­да не раз­рядит­ся, а зна­чит, доль­ше ста­нет выпол­нять свою фун­кцию — переда­вать информа­цию.

Ес­ли жучок будет работать толь­ко на сво­ей батарее, при­дет­ся задумать­ся о том, как его под­заряжать. В шпи­онских филь­мах это всег­да вызыва­ет дополнительные проб­лемы. Нам это не нуж­но.

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

Сборка

Для сбор­ки устрой­ства нам пот­ребу­ется:

  • GSM-модуль Sim 800;

Arduino Pro mini;

  • Кор­пус Power Bank на четыре акку­муля­тора Li-ion 18650;
  • Два или три акку­муля­тора форм‑фак­тора 18650 (я исполь­зовал два);
  • Мик­рофон;
  • Сим‑кар­та.
-5

Что­бы кор­рек­тно соб­рать устрой­ство, нуж­но знать наз­начения выводов на модуле GSM Sim 800 и Arduino Pro mini

-6
-7

Да­лее при­паиваем антенну к модулю GSM в гнез­до NET.

1. К выходам MIC+ и MIC- при­паиваем мик­рофон;

2. RXD и TXD на модуле GSM к шес­тому и седь­мому кон­такту на Arduino;

3. Под­паиваем Vcc и GND от модуля к Arduino и к кон­тактам на внеш­нем акку­муля­торе.

-8

Пос­ле запай­ки всех ком­понен­тов на свои мес­та нуж­но убе­дить­ся в пра­виль­нос­ти запай­ки — про­шить кон­трол­лер.

// Подключаем библиотеку программной реализации обмена по UART-протоколу

#include <SoftwareSerial.h>

SoftwareSerial SIM800(7, 6); // RX, TX

// Задаем переменную для хранения ответа модуля

String _response = "";

void setup() {

// Скорость обмена данными с компьютером

Serial.begin(19200);

// Скорость обмена данными с модемом

SIM800.begin(19200);

Serial.println("Start!");

// Отправляем AT для настройки скорости обмена данными

sendATCommand("AT", true);

// Команды настройки модема при каждом запуске

// Включаем АОН

_response = sendATCommand("AT+CLIP=1", true);

// Вариант с DTMF

//_response = sendATCommand("AT+DDET=1", true);

}

String sendATCommand(String cmd, bool waiting) {

// Задаем переменную для хранения результата

String _resp = "";

// Дублируем команду в монитор порта

Serial.println(cmd);

// Отправляем команду модулю

SIM800.println(cmd);

// Если необходимо дождаться ответа, ждем, когда будет передан ответ

_resp = waitResponse();

// Если Echo Mode выключен (ATE0), то эти три строки можно закомментировать

if (_resp.startsWith(cmd)) {

_resp = _resp.substring(_resp.indexOf("\r", cmd.length()) + 2);

}

// Дублируем ответ в монитор порта

Serial.println(_resp);

}

// Возвращаем результат. Пусто, если проблема

return _resp;

}

// Функция ожидания ответа и возврата полученного результата

String waitResponse() {

// Переменная для хранения результата

String _resp = "";

// Переменная для отслеживания тайм-аута (10 секунд)

long _timeout = millis() + 10000;

// Ждем ответа 10 секунд и проверяем ответ или тайм-аут

while (!SIM800.available() && millis() < _timeout) {};

// Если есть что считывать, считываем и запоминаем

if (SIM800.available()) {

_resp = SIM800.readString();

}

// Если пришел тайм-аут, то оповещаем об этом и возвращаем результат

else {

Serial.println("Timeout...");

}

return _resp;

}

void loop() {

// Если модем что-то отправил, получаем ответ для анализа

if (SIM800.available()) {

_response = waitResponse();

// Убираем лишние пробелы в начале и конце и ответ выводим в монитор порта

Serial.println(_response);

// Белый список телефонов, их можно указать несколько через запятую

String whiteListPhones = "+380713337866";

// Если есть входящий вызов, проверяем, есть ли информация об определении номера. Если да, то phoneindex > -1

if (_response.startsWith("RING")) {

int phoneindex = _response.indexOf("+CLIP: \"");

// Переменная для хранения определенного номера

String innerPhone = "";

// Если информация была найдена, парсим строчку и получаем номер

if (phoneindex >= 0) {

phoneindex += 8;

innerPhone = _response.substring(phoneindex, _response.indexOf("\"", phoneindex));

// Выводим номер в монитор порта

Serial.println("Number: " + innerPhone);

// Проверяем, чтобы длина номера была больше шести цифр

// и номер был в списке. Если да, то отвечаем на вызов,

// если нет, то отклоняем

if (innerPhone.length() >= 7 && whiteListPhones.indexOf(innerPhone) >= 0) {

sendATCommand("ATA", true);

else {

sendATCommand("ATH", true);

}

}

}

// Ожидаем команды по Serial и отправляем полученную команду модему

if (Serial.available()) {

SIM800.write(Serial.read());

}

При пра­виль­ной запай­ке и про­шив­ке наш жучок при подаче питания будет отве­чать на вхо­дящие вызовы толь­ко с раз­решен­ных мобиль­ных номеров, которые про­писа­ны в про­шив­ке.

Те­перь пора убрать длин­ные соеди­нитель­ные про­вода, выпа­ять све­тоди­оды с пла­ты Arduino. Мик­рофон мы изо­лиру­ем тер­моусад­кой, свер­лим в кор­пусе внеш­него акку­муля­тора отвер­стие для него и кре­пим на тер­моклей его и две пла­ты, вмес­то одно­го акку­муля­тора 18650.

В сво­ей сбор­ке я исполь­зовал два акку­муля­тора, но вы можете исполь­зовать три — мес­та будет дос­таточ­но.

Финальная запайка
Финальная запайка
-10
-11
-12

Итак, мы соб­рали GSM-жучок в кор­пус внеш­него акку­муля­тора. Он, конеч­но, неидеален, но есть нес­коль­ко спо­собов его улуч­шить:

1. Взять кор­пус с боль­шей вмес­тимостью акку­муля­торов;

2. Для боль­шей авто­ном­ности вво­дить модуль GSM в режим сна, а при нажатии на кноп­ку вклю­чения акку­муля­тора акти­виро­вать прос­лушку;

3. От­сылать сооб­щение хозя­ину прос­лушки при нажатии кноп­ки на внеш­нем акку­муля­торе.

Выводы

Итак, мы спро­екти­рова­ли и соб­рали GSM-жучок, замас­кирован­ный под внеш­ний акку­муля­тор. Его сто­имость нам­ного ниже, чем у жуч­ков, которые мож­но купить в интерне­те и в спе­циали­зиро­ван­ных магази­нах. Вы можете пов­торить мое устрой­ство или дорабо­тать его. Глав­ное, пом­ните, что час­тная жизнь неп­рикос­новен­на, и не исполь­зуйте свои зна­ния в дур­ных целях!