Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 14835|Resposta: 3

Analise o Protocolo de Login Rápido QQ e implemente o "CSRF"

[Copiar link]
Publicado em 21/03/2017 15:45:47 | | | |
Como todos sabemos, a Tencent usou o Activex para implementar o login rápido do QQ, usando em um navegador desconhecido, e a primeira coisa a fazer foi instalar o controle QuickLogin.
Quando eu não sei quando, o login rápido de repente não precisa mais dos controles.
Naquela época, fiquei muito intrigado, qual método estranho o Tencent usou para interagir com aplicações locais?

Sem plugins, páginas web não deveriam poder interagir diretamente com aplicações locais (a menos que um protocolo seja definido, mas que só possa ser chamado e não os resultados fornecidos pelo programa).

Por acaso (bem, só estou entediado olhando o gerenciador de tarefas e descobrindo o httpd nativo, e encontrando o Apache rodando), de repente percebi uma possibilidade: se o QQ abrir uma porta local, criar um servidor web, ou seja, um servidor TCP que cumpre o protocolo HTTP, e então a página web do ajax fizer uma requisição para esse QQ (neste momento como servidor web), você consegue obter o resultado?

E esse é realmente o resultado.


O Web JS inicia uma requisição GET para http://localhost.ptlogin2.qq.com (portando de 4300-4308, uma a uma para o sucesso).
Fazer ping vai encontrar que está 127.0.0.1, e quando você verificar a porta, ela está realmente em uso com QQ.

Primeira solicitação: /pt_get_uins?callback=ptui_getuins_CB&r=0.5919004196050326&pt_local_tk=399224727
pt_local_tk de biscoitos, seja lá o que for; r é um número aleatório

O resultado retornado é um array JSON:
var var_sso_uin_list=[{"conta":"Logado na conta QQ","face_index":-1,"gender":0,"apelido":"Seu apelido QQ","uin":"Ainda sua conta QQ","client_type":66818,"uin_flag":8388612}]; ptui_getuins_CB(var_sso_uin_list);

Depois, use http://ptlogin2.qq.com/getface para conseguir avatares QQ, o que não será discutido aqui

Dessa forma, suas informações do QQ podem ser exibidas na página da web.

Quando você aperta seu avatar (quando seleciona este login)

As seguintes solicitações são geradas:
http://localhost.ptlogin2.qq.com:4300/pt_get_st?clientuin=你的QQ号&callback=ptui_getst_CB&r=0.7293395590126179&pt_local_tk=399224727
De forma semelhante, r é um número aleatório, pt_local_tk é de um cookie, local_token
O que esse pedido faz?


Bem, Set-Cookie.

Depois, prossiga com o pedido
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
O único U1 aqui é o endereço de destino

Esse pedido devolverá todos os cookies que você precisa e você estará logado.

Então, após aprender o protocolo, um problema sério foi descoberto: o que acontece se um programa (de coração negro) fizer essas coisas em nome do usuário?

Comece agora!

Eu só tinha um Mac à mão, então escrevi em Obj-C.

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

Nota: Devido à minha experiência anterior em bots QQ (baseado no protocolo WebQQ): o cabeçalho Referer é muito importante (deve ser um nome de domínio .qq.com), se estiver errado, ele certamente falhará. Então não há rotatórias aqui

Aliás, eu era novo em Obj-C naquela época, e alguns códigos podem parecer meio bobos, por favor, me perdoem.
//cookiedata是个NSDictionary




Dessa forma, o login é concluído, e você pode encontrar uma interface de espaço QQ (não postada aqui), e o post é bem-sucedido.

O que isso significa? Isso significa que, enquanto for um programa rodando localmente, há uma chance de completar o login do QQ no seu lugar, e realizar algumas operações sorrateiras em plataformas como QQ Space que não exigem autenticação secundária




Anterior:Popularizar o conhecimento: Compreender completamente a diferença entre px unitário e em e rem em CSS
Próximo:Monitoramento de Velocidade da Internet em Tempo Real XDU Meter [Código-Fonte]
Publicado em 21/03/2017 16:36:43 |
Vou ser esse programador de coração negro
 Senhorio| Publicado em 21/03/2017 16:44:46 |
Xiaozhe Postado em 2017-3-21 16:36
Vou ser esse programador de coração negro

Vamos, vamos, escreva um software e deixe-me observar
Publicado em 27/09/2017 15:47:58 |
Endereço original: https://www.52pojie.cn/thread-591949-1-1.html
Por favor, não reimprima sem consentimento e não indique a fonte ao reimprimir.
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com