Как создать шпионскую программу

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

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

В фирме где я работаю нет строгих требований к ведению логов или других ежедневных отчётов, что возможно делает мою проблему отсутствия ежедневных данных единичной, или по крайней мере не такой популярной (или же нет, быть может я не один такой аутсорсер?). Месяц пролетает незаметно и с полным погружением в работу, вместо погружения в бюрократию, поскольку всё строится на доверии. И до недавнего времени я с задачей составления ежемесячных отчётов справлялся, поскольку почти каждый день я как минимум здоровался с коллегами по skype, болтал о том о сём, включая рабочий процесс, обновлял тикеты, получал письма. Но вот же беда, не всегда имеются в наличии сохранившиеся данные на нужный день, в который хоть убейся не можешь вспомнить что делал. И в один такой момент, составляя такой отчёт, меня вдруг осенило, как я, программист, могу сам себе впредь эту проблему решить.

Как сделать шпионскую флешку стилер



Программисты они ведь как и любые другие специалисты, обладают багажом знаний в своей области и должны им пользоваться не только для работы. Как например врачи имеют дома целую кучу таблеток, шприцов и прочих устройств. У механика всегда целая куча запчастей и инструментов, открутить, прибить, просверлить… Но я видимо попал под классическую фразу «сапожник без сапог». У меня PC собран на столе по кускам из плат и проводов, операционная система не переставлялась уже мильон лет, ну да ладно. Я-то может быть и сапожник без сапог, но проблема по прежнему нуждается в решении, и я решил сапоги-то подлатать свои.

Сформировав в голове идею по решению проблемы я сначала решил обсудить её с друзьями, что они думают о ней. Как оказалось, мне даже кинули пару ссылок на уже готовые решения. Я сначала расстроился, что мою идею уже реализовали, с другой стороны я даже не стал пробовать предложенные мне решения, ибо был убеждён в лёгкости реализации и безопасности именно своего решения. Собственно в чём же сама идея?

Моё решение проблемы ведения логов заключалось в написании программы-шпиона, которая будет делать всю эту работу за меня и висеть постоянно в трее. За пару минут придумал несколько функций для такой программы. Вот некоторые из придуманных функций:

  • Снимок экрана
  • Съёмка коротких видео роликов экрана
  • Сохранение буфера обмена
  • Начало шпионажа по расписанию (только в настраиваемые часы и только в рабочие дни)

Итак это минимальный набор задач по шпионажу, пришедший мне в голову. Если же обернуть всё в красивый интерфейс, то возможно процесс чтения логов станет даже приятным. Под рукой у меня оказался C#, в котором не так давно я делал какую-то небольшую задачу по работе. Соответственно выбор пал на C#.

Проверяем ШПИОНСКИЕ ЛАЙФХАКИ Челлендж !

Пользуясь свободным временем вечером, я принялся реализовывать первую функцию, поскольку она самая лёгкая, и если откровенно, единственная потенциально полезная в моей задаче. Если кто-то еще не до конца понял суть, то вот она: по снимкам экрана можно понять что ты делал в течении дня. Съёмка видео скорей всего рудиментарная идея, и будет удалена, поскольку не несёт особой пользы. А вот с буфером обмена пока думаю. На данный момент функция не реализована, но предполагается регулярное сохранение буфера обмена (текстового) в базу данных на жёстком диске. Это ни что иное как запись вида

id | datetime | buffer

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

Читайте также:
Honeywell 1470g программа настройки

Первую реализацию я разумеется решил сделать на сколько можно проще и быстрей. Чтобы в заголовке программы было не Form1 я ввёл первое, что пришло в голову Work Spy, так и стало называться моё детище. Вот кстати его первозданный вид, содержащий всего один ящик с богатым текстом (RichTextBox), который в свою очередь являлся ничем иным как просто окном лога куда, когда и что он сохранил:

Написание заняло минут 10. Пару запросов в google и вот нам уже примеры кода того «как сделать снимок экрана на c#». Мой шпион создаёт папку, называя её сегодняшней датой, и соответственно в течение работы программы, используя класс Timer, внутрь кладёт снимки двух моих мониторов (изображение размером 3840х1080), имя которых состоит так же из даты и времени (я решил, что буду использовать такой шаблон 12_03_2012__12_30_36.gif). Формат изображений — gif, с целью экономии места. Несмотря на зернистость изображения, на нём всё разборчиво видно.

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

Это остаётся загадкой для меня, как он определил потенциальный вред в этих ~100 строках кода, но с другой стороны приятно, что даже простейшего самописного шпиона сумел заподозрить в неладном. Не найдя достаточных доказательств вреда, avast! извинился

Я вежливо попросил многоуважаемого avast! открыть мою программу как обычно, а не в песочнице, ибо доверяю ей на все 100%.

На данный момент всё работает по-прежнему в ручном тестовом режиме. Ежедневный запуск/закрытие и просмотр сохранённых снимков. Программа отработала пока что неделю. Результат меня уже впечатляет. Если открыть снимки с певого дня запуска, я чётко вижу свой браузер, текстовый редактор, в котором я вижу вкладки и код того проекта, над которым работаю.

Иногда попадаются смешные снимки, где я фильм смотрю (видимо перерывчик, ай яй яй, в течении рабочего дня), или пишу сообщение в социальной сети. Именно самописность программы снимает любые волнения и опасения за то, что запечатлено на экране, а ведь запечатлено может быть самое неожиданное и непредсказуемое 🙂 шутка.

Пожалуй и всё, что я хотел повествовать. Эксперимент продолжается, и я уверен, что буду доволен к концу месяца. Осталось договориться с силой воли и доделать-таки ручки да ножки к туловищу, чтобы всё работало вах как удобно. Мораль истории в том, что 10 минут и знания способны решать большие проблемы.

Дабы наделить статью пользой, оставлю ссылки на те решения, которые мне были посоветованы для решения проблем, подобных моей. За адекватность программ не отвечаю, ибо даже не качал их чтобы посмотреть.

Источник: habr.com

Как создать шпионское приложение на Android?

Однажды, случайно просматривая веб-страницы, я наткнулся на рекламу приложения, предназначенного для использования родителями для отслеживания использования телефона подростком. Копнув немного глубже, я обнаружил в магазине Android целый ряд приложений, которые предлагают платные услуги мониторинга (слежки !!). Мне стало любопытно, как работают эти приложения, и я начал читать об этом. Я выяснил, насколько легко его построить и насколько это ужасно с точки зрения конфиденциальности.

Шпионское приложение состоит из двух основных частей: одна отслеживает, что входит (например, звонки / сообщения / предупреждения), а две фиксирует все, что выходит (например, все, что вы вводите). Есть также другие аспекты, такие как запись аудио / видео, создание снимков экрана и т. Д., О которых я, вероятно, расскажу в следующей статье. Чтобы начать работу с первой частью, мы начнем с реализации службы NotificationListener в нашем приложении. Это то, что описывается в документации Android по этому сервису.

Служба, которая принимает вызовы из системы при публикации или удалении новых уведомлений или изменении их рейтинга.

Для этого мы добавляем определение службы в наш файл AndroidManifest.xml следующим образом

Читайте также:
Cmd как закрыть программу

Затем создайте класс NotificationListener, который расширяет NotificationListenerService.

Приведенный выше пример кода помимо выполнения базовой обработки также сохраняет уведомления в локальной базе данных. Каждый раз, когда на телефон поступает новое уведомление, система запускает обратный вызов функции onNotificationPosted. Здесь вы можете выполнить базовую обработку, чтобы избежать дублирования.

Теперь осталось только предоставить нашему приложению разрешение на доступ к этой службе. Это ручной процесс, который требует, чтобы вы физически активировали разрешение для вашего приложения. На целевом телефоне вам нужно открыть Настройки ›Приложения и уведомления› Дополнительно ›Доступ к специальным приложениям› Доступ к уведомлениям. Вы увидите свое приложение в списке на этом экране. Вам просто нужно щелкнуть по нему и разрешить доступ вашему приложению для получения уведомлений. В качестве альтернативы вы можете запустить открытие этой страницы разрешений программно таким образом

Intent intent = new Intent(Settings.ACTION_NOTIFICATION_LISTENER_SETTINGS); startActivity(intent);

Вот и все. Теперь вы можете записывать все уведомления, полученные на телефон.

Следующая часть — захватить все, что набирается на телефоне, например, сообщения чата, URL-адреса, пароли! и т.д. Для этого нам необходимо реализовать AccessibilityService. Опять же, чтобы сделать это, сначала мы добавляем определение службы в наш файл манифеста.

Нам также необходимо добавить XML-файл, который содержит метаданные, относящиеся к службе доступности, которая сообщает системе тип события, к которому мы хотим получить доступ, в данном случае typeViewTextChanged.

Затем создайте класс с именем KeyListener, который расширяет AccessibilityService.

Каждый раз, когда пользователь вводит что-либо на своем устройстве Android, система отправляет нам уведомление с тем, что было набрано в этом конкретном текстовом окне. В уведомлении также есть сведения о приложении, в котором это было набрано.

И последнее, что нужно сделать, — это предоставить нашему приложению разрешение на доступ к этой службе. Вы можете сделать это вручную, выбрав «Настройки»> «Специальные возможности», выбрав свое приложение и предоставив ему разрешение. Кроме того, вы можете открыть этот экран программно, как показано ниже.

Intent intent = new Intent(Settings.ACTION_ACCESSIBILITY_SETTINGS); startActivity(intent);

Вот и все, теперь вы можете захватывать все, что набирается на вашем телефоне.

Как видно выше, реализовать такую ​​вещь чрезвычайно просто. Для выполнения этого все, что необходимо, — это серверный компонент, на который это приложение будет отправлять всю информацию. Android предлагает определенный уровень защиты, при котором он заставляет пользователя вручную предоставлять разрешение на доступ к этим службам, но кто-то, имеющий доступ к телефону, даже временно, может установить шпионское приложение и включить его.

Это также имеет огромное значение для конфиденциальности: люди, использующие эти приложения для наблюдения за своими близкими, не осознают, что приложения, которые предлагают эти функции, имеют доступ к чрезвычайно личным данным. Это также может включать одноразовые пароли, полученные по SMS или электронной почте. Кроме того, этим поставщикам приложений легко доступны номера / реквизиты кредитных карт, набранные на телефоне. Действительно ли стоит рисковать и устанавливать такие приложения и подвергать себя финансовому мошенничеству и мошенничеству с использованием личных данных?

Источник: qwertybox.ru

Пишем сервлет для слежки за пользователями соцсетей

С момента появления языка программирования Java прошло уже почти двадцать лет. За это время Java пророчили смерть и забвение, программисты на сях смеялись над ее тормознутостью и жадностью к ресурсам. Но были и те, кто поверил в Java, они разрабатывали всевозможные библиотеки, развивали сообщество, упорно доказывали, что для Java нет пределов: realtime, embedded, ИИ — возможно все. Мы решили не оставаться в стороне и сделать в этой рубрике небольшой цикл статей по Java. Поехали!

Ваш чайник выбирает Java

По заверениям самой Oracle, на сегодняшний день виртуальная машина Java установлена на более чем трех миллиардах устройств. И это не только компьютеры и смартфоны, но и фотоаппараты, телевизоры, Blue-ray-проигрыватели, принтеры, сим-карты, банковские автоматы и даже автомобили. Этот список будет неуклонно расти, а вместе с ним и предложения от работодателей для Java-программистов. Даже сейчас количество вакансий для программистов Java превышает остальные. И компании готовы платить все больше и больше, переманивая сотрудников и организуя более выгодные условия труда.

Читайте также:
Физическая подготовка футболистов программа

А чем же она хороша?

Программистов Java привлекает минимализмом синтаксиса. Никаких лишних модификаторов и служебных слов. Даже отсутствие множественного наследования, которое поначалу несколько смущало программистов на С++, в итоге оказывается разумным и оправданным.

Простая логика, автоматическая работа с памятью, подробная документация, форумы с ответами на всевозможные вопросы, открытый код — все это позволяет быстро вникнуть в процесс разработки и значительно уменьшает количество потенциальных ошибок. Даже индийские крестьяне осваивают Java за пару месяцев, по крайней мере так говорится в их дипломах :). Кроме того, Java — интерпретируемый язык. Исходный код компилятор переводит в так называемый байт-код, который несложно преобразовать обратно, что делает Java особенно привлекательным для реверс-инжиниринга.

Ну-с, приступим

Java — объектно-ориентированный язык, это значит, что все переменные, методы, константы объявляются в рамках какого-либо класса. Кроме классов, есть еще интерфейсы — особая абстрактная конструкция, которая позволяет описать поведение объекта, не указывая конкретную реализацию. И если множественного наследования классов в Java нет, то интерфейсов класс может реализовывать любое количество, что позволяет одному объекту обладать множеством функций, но предоставлять только часть из них.

Типы данных можно разделить на две группы: простые (int, long, char и так далее) и объектные: классы, интерфейсы, массивы. Простые типы всегда и везде фиксированной размерности. К примеру, на любой архитектуре и любом устройстве int занимает четыре байта памяти. Это довольно удобно при вычислениях.

Массив данных содержит специальный атрибут length, который хранит размер массива, за что отдельное спасибо разработчикам. Данные разных типов по-разному передаются в методы. Простые типы всегда передаются по значению. Объектные — всегда по ссылке для экономии памяти.

Это значит, что если мы передаем int a = 10 и изменяем его значение на 5 в вызываемом методе, то в исходном методе a по-прежнему будет равно 10. Но если мы изменим свойство объекта, то оно изменится и в исходном методе.

Помни о памяти

Хотя программист Java и освобожден от необходимости выделять и освобождать память, незнание некоторых особенностей работы виртуальной машины и сборщика мусора может запросто превратить твою программу в ненасытного монстра, пожирающего процессорное время и всю доступную память.

Создавая новый массив, всегда помни, что гораздо проще создать много маленьких кусочков памяти, чем один огромный. Иначе рискуешь нарваться на ошибку Out of memory, что примерно означает, что память у тебя была, да вся вышла.

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

Если какие-то данные тебе больше не нужны, не стоит хранить их на всякий случай, как ворох старых открыток, — присвой указателю на данные null, помоги уборщику прибраться :). Также хорошим тоном будет сделать clear для списка, если он тебе уже не понадобится. Помни, объект будет храниться в памяти, пока в коде на него есть ссылки.

Даже если твоя программа работает на 16 гигах памяти и вылететь с Out of memory ей не грозит, от переизбытка используемой памяти она будет становиться все более неповоротливой и тормознутой. 99% жалоб пользователей на медленную работу Java-программ связано с неэффективно написанным исходным кодом. Если тебе требуется постоянно создавать объекты, которые используются быстро и больше не нужны, например много мелких сообщений, задумайся о создании пула, в котором будет храниться некоторое количество экземпляров для многократного использования. Помни, создание и удаление объекта — операция дорогостоящая.

За дело, господа

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

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru