Запись логов в файл что это ВК

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

Лог (log) — это специальный журнал, в котором хранится информация о состоянии работы приложения (программы).

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

Работа с файлами с++. Запись в файл. c++ ofstream. Изучение С++ для начинающих. Урок #115

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

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

Сколько записей оказалось в результирующей выборке, куда эти записи отправились дальше. Проверка нужных значений в каждой записи. Debug – это информация для отладки. Логирование крупных операций, менее детально, чем в Trace. Здесь мы не так подробно описываем весь процесс операции, но, тем не менее, заносим в журнал основные операции. Например: Совершено обращение к БД.

Из базы выбрано N записей. Записи успешно обработаны и отправлены клиенту. Info – это более общие информационные сообщения о текущей работе приложения, что происходит с системой в процессе ее использования. Например: Была выгрузка студентов в Excel-файл. На сайте зарегистрирован новый студент.

Студент добавил новый отчет. Студент перемещен в другую группу. Warn – сообщения о странной или подозрительной работе приложения. Это еще не серьезная ошибка, но следует обратить внимание на такое поведение системы. Например: Добавлен студент с возрастом 2 года. Студент получил отрицательный балл. Преподаватель завершил курс, в котором училось 0 студентов.

КАК НОВИЧКУ ЗАПИСАТЬ ЛОГИ С WEB??? — ПОКАЗУЮ ПРОСТОЙ СПОСОБ НЕ БЫТЬ ДЖУНОМ))

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

Ошибка при входе в личный кабинет студента. Fatal – сообщения об очень серьезных ошибках в системе. Чаще всего это связано с работоспособностью всего приложения или его окружения на сервере. На такие сообщения следует реагировать МАКСИМАЛЬНО оперативно. Например: Приложение постоянно перезагружается из-за нехватки памяти или места на жестком диске.

Приложение завершило работу по неизвестной причине. Нет доступа к базе данных. Нет доступа к сети. Заблокирован какой-то порт. То есть, прежде чем отправить какое-то сообщение в лог, нам нужно отнести его к той или иной группе. Например, мы написали новый функционал и хотим его протестировать, как правильно и быстро он работает.

Для этого мы будем использовать тип сообщений Trace, то есть все наши сообщения в логе будут помечены как Trace. Подобным образом мы можем описать, как работает наше приложение в целом, сообщения будут с пометкой Info. Если же в опасных участках кода мы генерируем исключение, то теперь мы также добавим запись в лог с пометкой Error.

К какой группе отнести то или иное сообщение решает сам разработчик. К данному вопросу следует подойти с максимальной серьезностью. Очевидно, что ошибки не следует помечать как Info, не следует игнорировать ошибки и просто не записывать их в лог.

Еще по теме:  Как пригласить чужих людей в группу в ВК

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

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

Если вы создаете простейший трехстраничный сайт-визитку или консольное приложение для собственных нужд у себя на локальном компьютере, то написание сложной системы логирования может быть дольше, чем создание самого проекта. В таком случае в логи можно записывать только сообщения об ошибках или почему упал сайт. Но если вы работаете над сложным проектом в команде с другими разработчиками, то грамотное ведение логов просто обязательно. Для того, чтобы начать логирование, мы подключим в наш проект платформу NLog. Это можно легко сделать посредством менеджера NuGet (прямо из Visual Studio).

Добавление NLog Platform в проект

Добавление NLog Platform в проект

Обратите внимание на конфигурационный файл NLog.config. В этом файле находятся настройки логгера (куда будут выводиться логи, формат записи логов и т.д.). Давайте настроим файл следующим образом:

NLog.config

/logs/$.log» layout=»$ | $ | $> | $ $» /> /logs/errors/$.log» layout=»$ | $ | $> | $ $» />

  • $ — корневой каталог нашего приложения
  • $ — текущая дата в формате yyyy-MM-dd
  • $ — текущая дата в формате yyyy-MM-dd HH:mm:ss.ffff
  • $ — место вызова лога (название класса, название метода)
  • $ — уровень логирования
  • $ — непосредственно сообщение, которое будет записано в лог
  • $ — символ новой строки

Далее уже в коде объявим новый логгер (здесь код проекта приводится в сокращенном виде, исходный код всего проекта можно скачать в конце статьи):

public class StudentsRepository < private static Logger logger = LogManager.GetCurrentClassLogger(); //. >

Чаще всего следует объявлять один статичный логгер в пределах всего класса. Здесь мы посредством класса-менеджера LogManager объявили новый логгер, с которым будем работать.

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

public Student GetStudentById(int id) < //здесь моделируется ситуация реальной выборки студента из базы данных. logger.Trace(«Запрашиваемый id студента: » + id); logger.Trace(«Попытка подключения к источнику данных»); logger.Trace(«Подключение к источнику данных прошло успешно. Затраченное время(мс): » + new TimeSpan(0, 0, 0, 0, 20).Milliseconds); var student = _studentsList.FirstOrDefault(x =>x.Id == id); logger.Trace(«Выборка прошла успешно.

Выбран студент с + student.Id); return student; >

Обратите внимание, что мы на объекте logger вызываем метод Trace(). Он имеет соответствующее значение — запись в лог сообщения типа Trace. Если обратиться к определению класса Logger, то можно обнаружить, там также присутствуют и другие методы для всех уровней лога, которые мы будем использовать далее.

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

public List GetStudents() < //здесь моделируется ситуация реальной выборки студентов из базы данных. logger.Debug(«Произведено подключение к базе данных»); logger.Debug(«Произведена выборка всех студентов»); return _studentsList; >

Идем далее. На уровне Info мы описываем регулярные операции в нашем приложении, то есть поднимаемся еще на уровень выше. Предположим, что мы работаем над ASP.NET MVC приложением, и у нас есть действие в контроллере, которое обращается к ранее описанному методу GetStudentById():

public ActionResult GetStudent(int id)

Теперь добавим в логи сообщения уровня Warn. Как мы помним, на этом уровне логирования мы описываем все потенциально опасные ситуации, странное и нелогичное поведение компонентов. Будем заносить в лог запись, если студенту меньше 15 лет:

//. Student student = repository.GetStudentById(id); logger.Trace(«Выборка прошла успешно. Выбран студент с + student.Id); if (student.Age < 15) logger.Warn(«Выбран студент моложе 15 лет»); //.

Далее обработаем ошибку в нашем коде и запишем в лог сообщение уровня Error:

var student = _studentsList.FirstOrDefault(x => x.Id == id); if (student == null) logger.Error(«Ошибка. Не найден студент с » + id); logger.Trace(«Выборка прошла успешно. Выбран студент с + student.Id); if (student.Age < 15) logger.Warn(«Выбран студент моложе 15 лет»);

Теперь определим, что же нам записать на уровне Fatal. В нашем простейшем примере просто смоделируем подобную ситуацию:

//. logger.Fatal(«Достигнут максимально допустимый в приложении предел использования оперативной памяти 90%»); //.

О том, как ВКонтакте собирает информацию о нас

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

Disclaimer

Сразу хочу отметить, что я снимаю с себя любую ответственность за возможный ущерб, который Вы можете причинить себе/своим устройствам или другим/чужим устройствам, выполняя действия, которые здесь описаны. Также я не призываю заниматься подобной деятельностью на своих сетях. Информация предоставлена исключительно в ознакомительных целях и крайне не рекомендуется к воспроизведению/повтору на личных устройствах, сетях, а также строго не рекомендуются эксплуатации на пользователях, поскольку снифинг чужих данных — дело незаконное, а свое устройство я промониторить в праве. И да, для любителей найти рекламу там, где её нет: этот пост/статья — не является рекламой. Упомянутые ниже приложения приводятся в качестве примеров, не более.

Еще по теме:  Как перекинуть музыку с ВК в телеграмм с телефона

Update 6

А еще давайте сразу, вот что ответил (где-то) Андрей Рогозов про данную информацию.

Предисловие

Года два назад я тоже снифил трафик с помощью Shark for Root, отправляемый ВКонтакте с телефона. Ничего странного я тогда не видел. Сейчас же, когда нас окружают «умные» (именно в кавычках, ибо они идиотские) ленты, машинное обучение и прочее, техника стала, мягко говоря, следить. С одной стороны, это хорошо (мы даем пищу для машин, чтобы они обучались), с другой — плохо (данные о нас сохраняются на серверах).

Результаты

Проснифив только авторизацию, аудиозаписи и вообще первые минуты после авторизации в приложении, уже можно поймать все эти странные запросы. Итак: Все это — официальное приложение.

На момент написания этой статьи (29 июля 2017 года) была версия 4.12.1. В Kate Mobile таких сливов замечено не было. Единственное, после ввода в эксплуатацию нового алгоритма выдачи аудиозаписей, и Kate, и официальному приложению нужно обращаться к Google Accounts для получения некого receipt-токена. И всё. О том, как работают приложения на iOS, Windows Phone мне только можно догадываться.

Их пакеты не перехватывал, и устройств не имею. Повторюсь, такие данные, как ближайшие точки доступа Wi-Fi, текущее местоположение пользователя, а также все его действия не отправляются сторонними приложениями, такими как Kate Mobile, VK Coffee (модификация официального, с вырезанными метриками и пр.), моим сайтом-клиентом APIdog и пр.

Update 2

Друг-разработчик Андрей добавил ещё скринов того, что сливается официальным приложением под Android. Плюсом от него же, вот что отправляет официальное приложение для Windows

Update 3

Эдуард Безменов, разработчик модификации официального приложения VK Coffee, прокомментировал этот пост так: «. сама настройка появилась далеееко не сразу, в сравнении от самого слива. Слив подобных данных лично для меня далеко не ново и в кофе давно отключено. . Самый ад то, что libverifyот мыла.ру собирает серийники sim-карт, а mytracker — lac и cid. Это вроде и показал Андрей. Серийники сим карт и т.п. Вот из-за этого и надо поднимать хайп.»

Update 4

Григорий Клюшников, бывший разработчик этого самого приложения, как оказывается, был сам против включения сервисов Vigo в приложение: «Vigo уже очень давно был, внедрял его я. Я был против с самого начала, но на моё мнение всем было известно как. И это вы там ещё до мейловского MyTracker не дошли, там самая мякотка.» А вот, что на самом деле представляет Vigo по описанию Григория: «По изначальному замыслу, точнее, как это мне все объясняли — «выбирать качество видео в зависимости от интернета». Естественно, я абсолютно не хотел сливать подобные данные ради этой никому не нужной мелочи. Хотели бы на самом деле сделать удобный просмотр видео с подстройкой качества под интернет — запилили бы DASH/HLS, как у настоящих видеохостингов. . » Отправка местоположения, как оказалось, производится только при просмотре отдельного поста. На аудиозаписи это не влияет, как некоторые стали считать, что в зависимости от региона некоторые треки «скрывается».

Update 5: Ответы от ВКонтакте

Мобильная техподдерка

Денис решил всё-таки добиться ответов на наши вопросы и задал их мобильной поддержке ВК (id333) В ответ на последний вопрос, поддержка решила отойти от темы.

О том, как это было получено

Подручные средства

У нас в распоряжении комп под Linux (Ubuntu 16.04 LTS), два телефона на Android 5.1 (Sony Xperia L) и 6.0.1 (Samsung *какой-то там*). У Sony выпилены Google Play Services. На обоих телефонах последняя версия приложения и стороннее приложение — Kate Mobile (версии 37 и 41 соответственно). Ну, и, естественно, единая локальная сеть, к которой подключен и комп, и два устройства.

Подготовка: создание сертификата SSL

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

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365

Этой командой создаем сертификат, где key.pem — файл ключа, cert.pem — сертификат. В phrase key вводим что-то типа пароля. Он нам еще понадобится. Затем его еще раз повторить. Остальные поля можно оставить пустыми/не вводить.

По окончанию в текущей директории будет создано два файла.

Подготовка: установка нашего сертификата на устройство

Передаем файл cert.pem на устройство и устанавливаем его в систему. Обращу внимание, что для установки сертификата необходимо, чтобы на телефоне был какая-нибудь защита на экране блокировки (графический ключ, пароль или PIN).

Сертификат установлен.

Еще по теме:  Почему нельзя написать сообщение в ВК если человек не в друзьях

Подготовка: переброс портов

Возвращаемся на Linux, вбиваем в терминал:

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -t nat -F
sudo iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-ports 8080
sudo iptables -t nat -A PREROUTING -p tcp —dport 443 -j REDIRECT —to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp —dport 587 -j REDIRECT —to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp —dport 465 -j REDIRECT —to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp —dport 993 -j REDIRECT —to-ports 8443
sudo iptables -t nat -A PREROUTING -p tcp —dport 5222 -j REDIRECT —to-ports 8080

Подготовка: Ettercap

Устанавливаем Ettercap:

sudo apt-get -y install ettercap

После установки его запускаем.

Снифинг данных

Клацаем «Sniff» -> «Unifed sniffing. «. В окне выбора интерфейса обычно выбирается уже нужный (может быть wlan0, wlp1s0, enp5s0), если не тот — выбрать свой. «ОК». Далее: «Hosts» -> «Scan for hosts». Ожидаем сканирование хостов. Далее «Hosts» -> «Hosts list».

В списке выбираем IP нашего роутера (у меня 192.168.1.1) и жмем «Add to target 1», затем выбираем IP устройства (у меня 192.168.1.222), затем «Add to target 2». Далее «Mitm» (Man in the Middle) -> «ARP Poisoning» -> ставим флаг «Sniff remote connections» -> «OK». Далее «Start» -> «Start sniffing».

Конец подготовки: SSLSplit

Далее в терминале ставим sslsplit:

sudo apt-get -y install sslplit

Когда установка завершена, создаем директории:

mkdir logs

И в текущей директории (где лежат файлы cert.pem и key.pem)

cp /dev/null logfile.log

Выходим из аккаунта в приложении на телефоне. В текущей директории выполняем:

sudo sslsplit -k key.pem -c cert.pem -l logfile.log -j logs -S . https 0.0.0.0 8443 http 0.0.0.0 8080

Вводим phrase key, который указывали при создании сертификата. В logfile.log будут записываться неполные логи (именно домен, адрес, порт), в директорию logs будут записываться подробные запросы, заголовки и ответы. Далее авторизуемся в приложении и видим, как в терминале, в logfile.log и в директории logs появляются данные. Для остановки снифинга жмем в терминале Ctrl+C.

Логи в директории logs будут записываться под владельцем и группой root без доступа к чтению и записи от текущего пользователя. Поэтому нужно изменить владельца. В директории с сертификатами вводим

sudo chown -R vlad805:vlad805 logs

Где вместо «vlad805» — имя Вашего пользователя. Далее можно просматривать файлы с помощью обычного текстового редактора.

Update

Как позже подсказал Антон, снифинг можно выполнить двумя кликами с помощью приложений для Android, и тогда вот эта длиннющая инструкция не понадобится. Но. кому как удобнее.

Благодарности

Также выражается благодарность Константину за наводку и подробную инструкцию по снифингу.

Обсуждение

Здесь в комменариях: https://vk.com/wall23048942_5017

Как обезопасить свой смартфон от СЛЕДЯЩИХ ПРИЛОЖЕНИЙ ? Присоединяйтесь к нашему ТГ каналу и ваш смартфон станет вашим оружием.

Источник: www.securitylab.ru

jsonic1337/vk_log_ubot

This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.

Switch branches/tags
Branches Tags
Could not load branches
Nothing to show
Could not load tags

Nothing to show

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Cancel Create

  • Local
  • Codespaces

HTTPS GitHub CLI
Use Git or checkout with SVN using the web URL.
Work fast with our official CLI. Learn more about the CLI.

Sign In Required

Please sign in to use Codespaces.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching GitHub Desktop

If nothing happens, download GitHub Desktop and try again.

Launching Xcode

If nothing happens, download Xcode and try again.

Launching Visual Studio Code

Your codespace will open once ready.

There was a problem preparing your codespace, please try again.

Latest commit

Git stats

Files

Failed to load latest commit information.

Latest commit message
Commit time

README.md

Бот для просмотра удаленных и отредактированных сообщений в чатах в виде картинки.

Пример вывода

Для работы скрипта вам нужно установить Python3 и все необходимые библиотеки. После установки открываем файл main.py и вставляем наш токен от аккаунта вк.

После первого запуска скрипт создаст лог-файл и завершит свою работу, потребуется перезапуск.

  • !лог — включение логирования в данном чате
  • !анлог — выключение логирования в данном чате
  • !л — отправка удаленных и отредактированных сообщений, которые были написаны после включения логирования

About

Бот для просмотра удаленных и отредактированных сообщений в чатах ВКонтакте в виде картинки.

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

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