Как стать богом в чатах дневника МЭШ

Как многие из вас знают, на сайте dnevnik.mos.ru можно создавать групповые чаты или общаться с любым пользователем сайта наедине, но мало кто знает о том, что почти любое свойство этих сообщений можно изменить.

Свойства сообщений

А что же такое “свойства сообщений”? Это те данные, которые дают нам знать от кого пришло сообщение, что в нем написано, было ли оно изменено раннее и тд.

все свойства сообщения, возвращаемые сервером

Итак, опишу их всех сверху вниз:

  1. id - уникальный идентификационный номер сообщения
  2. created_at - время создания
  3. updated_at - время редактирования
  4. deleted_at - время удаления сообщения
  5. chat_id - уникальный идентификационный номер чата
  6. from_profile_id - уникальный идентификационный номер создателя сообщения
  7. from_profile - носит в себе данные о пользователе, отправившем сообщение (генерируется динамически в зависимости от from_profile_id)
    1. id - то же, что и from_profile_id
    2. name - имя создателя сообщения
    3. status - онлайн/оффлайн статус пользователя (возможно не работает)
    4. type - вид аккаунта (ученический, учительский и тд.)
    5. roles - список ролей пользователя
    6. is_system_user - является ли аккаунт системным (ботом) (?)
    7. text - содержание сообщения
  8. is_reported - была ли жалоба на сообщение
  9. attachment_ids - список уникальных идентификационных номеров прикрепленных файлов
  10. is_read - прочитано ли сообщение другими
  11. is_read_by_me - прочитано ли сообщение пользователем
  12. is_system - является ли сообщение системным (в таком случае оно принимает другой вид)

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

Как работает редактирование сообщений

Когда вы редактируете сообщение, на сайт отправляется PUT запрос по адресу

1
https://dnevnik.mos.ru/core/api/messages/{id сообщения}

с данным содержанием:

тело запроса

То, на что вы хотели поменять содержание своего сообщения, отправляется как ключ text, все остальное заполняется автоматически. Однако сервер почти не проверяет верность введенных данных и позволяет нам самим выбрать значения ключей (ключи created_at, updated_at, deleted_at, from_profile, is_read, is_read_by_me, is_system, text_fmt, html_text, html_text_fmt, time, docAttachments и imageAttachments не имеют никакого эффекта).

Для того, чтобы отправить свой запрос понадобится какая-нибудь программа. Один из самых легких методов - отредактировать уже отправленный запрос через вкладку Network в Firefox. Я пользуюсь программой Charles Proxy.

id укажет серверу какое сообщение отредактировать, chat_id поместит сообщение в чат с определенным номером (можно выбирать и чаты в которых не состоите!), from_profile_id заменит автора на человека с требуемым id, text перезапишет содержание сообщения, is_reported изменит статус доступности кнопки жалобы на сообщение, attachment_ids позволит прикрепить файл с определенным id (опять же можно не только свой файл).

просто поверьте это не фотошоп и не код элемента это чтото большее

Важно знать

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

А еще сообщения поддерживают большинство визуальных HTML тегов(даже img, которому можно задать любой размер в аттрибуте стиля), попробуйте их применить!