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

Вид: 14835|Ответ: 3

Проанализировать протокол QQ Quick Login и реализовать «CSRF»

[Скопировать ссылку]
Опубликовано 21.03.2017 15:45:47 | | | |
Как всем известно, Tencent использовала Activex для реализации быстрого входа QQ, используя его в незнакомом браузере, и первым делом было установка управления QuickLogin.
Как только я не знаю когда, быстрый вход внезапно перестаёт нуждаться в контролях.
В то время я был очень озадачен, какой странный метод использовал Tencent для взаимодействия с локальными приложениями?

Без плагинов веб-страницы не должны иметь возможность напрямую взаимодействовать с локальными приложениями (если только протокол не определен, но может быть вызван только по результатам, предоставляемым программой).

Случайно (ну, просто скучно смотреть в диспетчер задач, обнаруживая нативный httpd и обнаружив запущенный Apache), я вдруг понял, что возможно: если QQ откроет локальный порт, создаёт веб-сервер, то есть TCP-сервер, соответствующий протоколу HTTP, а затем ajax веб-страницы делает запрос к этому QQ (на данный момент как веб-сервер), можно ли получить результат?

И вот в чём получилось.


Web JS инициирует GET-запрос на http://localhost.ptlogin2.qq.com (порты с 4300 по 4308, один за другим для успеха).
Пинг показывает, что это 127.0.0.1, а при проверке порта действительно используется QQ.

Первый запрос: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk от печенья, что бы это ни было; r — случайное число

В результате получается массив JSON:
var var_sso_uin_list=[{"аккаунт":"Входил в аккаунт QQ","face_index":-1,"gender":0,"никнейм":"Ваш никнейм QQ","uin":"Всё ещё ваш аккаунт QQ","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Затем используйте http://ptlogin2.qq.com/getface для получения аватаров QQ, о чём здесь не будем говорить

Таким образом, ваша информация о QQ может отображаться на веб-странице.

Когда вы нажимаете аватар (когда выбираете этот логин)

Генерируются следующие запросы:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
Аналогично, r — это случайное число, pt_local_tk из куки, local_token
Что делает этот запрос?


Ну, Сет-Куки.

Затем продолжайте запрос
http://ptlogin2.qq.com/jump?clientuin=你的QQ号&keyindex=19&pt_aid=549000912&daid=5&u1=http%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html%3Fpara%3Dizone&pt_local_tk=1881902769&pt_3rd_aid=0&ptopt=1&style=40
Единственный U1 здесь — это адрес назначения

Этот запрос вернёт все необходимые вам файлы cookie, и вы войдёте в систему.

После изучения протокола была обнаружена серьёзная проблема: что произойдёт, если (чёрнодушная) программа делает это от имени пользователя?

Начинайте сейчас!

У меня был только Mac, поэтому я написал его в Obj-C.

[self GET:@"http://localhost.ptlogin2.qq.com:4300/pt_get_uins?callback=ptui_getuins_CB&r=0.47178753013324637&pt_local_tk=-1211438011" header:nil];
//这里的GET是我自己封装的一个方法,GET网页上的数据

Примечание: Из-за моего предыдущего опыта работы с ботами QQ (на основе протокола WebQQ): заголовок Refer очень важен (это должно быть доменное имя .qq.com), если он ошибается, он точно сработает. Так что здесь нет кольцевых развязок

Кстати, я тогда был новичком в Obj-C, и некоторые части кода могут показаться немного глупыми — прошу прощения.
//cookiedata是个NSDictionary




Таким образом, вход завершён, и вы можете найти интерфейс QQ пространства (не опубликован здесь), и пост проходит успешно.

Что это значит? Это значит, что пока программа работает локально, есть шанс завершить вход в QQ вместо вас и выполнить некоторые скрытые операции на платформах, таких как QQ Space, которые не требуют вторичной аутентификации




Предыдущий:Популяризируйте знания: Глубоко разберите разницу между единицами px и em и rem в CSS
Следующий:Мониторинг скорости интернета в реальном времени XDU Meter [исходный код]
Опубликовано 21.03.2017 16:36:43 |
Я буду этим безсердечным программистом
 Хозяин| Опубликовано 21.03.2017 16:44:46 |
Xiaozhhe Опубликовано 21.03.2017 16:36
Я буду этим безсердечным программистом

Давай, давай, напиши программу и дай мне понаблюдать
Опубликовано 27.09.2017 15:47:58 |
Оригинальный адрес: https://www.52pojie.cn/thread-591949-1-1.html
Пожалуйста, не перепечатывайте без согласия и не указывайте источник при перепечатке.
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com