
tl; dr: Estou explorando as possibilidades de combinar contas com números de telefone no segmento do Telegram Russo.
Existem muitas pessoas no mundo que desejam criar um usuário arbitrário. Podem ser capitalistas que não evitam spam, serviços especiais, golpistas e apenas perseguidores. Os serviços sociais estão tentando manobrar entre o desejo de atrair o maior público possível por meio da importação de contatos e os limites de acesso a essas informações. Eles manobram de maneiras diferentes, alguns se posicionam o mais socialmente possível, enquanto outros valorizam mais a privacidade. Estes últimos tornam-se alvos de ataques de defensores da privacidade máxima.
Por defeito, no Telegram, como nos mensageiros menos privados, pode obter uma conta de utilizador, sabendo o seu número. Ao mesmo tempo, o dono do número pode limitar essa oportunidade apenas para contatos mútuos, para isso existe uma opção especial. Por padrão, ele está desligado, o que significa que temos um Telegram completo de caras descuidados e deliberadamente públicos. O recurso parecia ser devido a um esgotamento na base de usuários. Decidi descobrir quanto custaria criar um banco de dados semelhante e se poderia criar um.
Limitei meus interesses apenas aos usuários russos. A base de intervalos de números, como se viu, é publicadaRossvyaz, que simplificou ainda mais minha tarefa, eliminando a necessidade de sucatear sites com essas informações. No total, no dia 7 de setembro, as operadoras receberam quase seiscentos milhões de números, ou seja, exatamente 598035003.
Peguei vários cartões SIM, `telethon` (módulo Python com uma implementação completa de MTProto) e tentei criar tal base em casa.
Compartilhando contatos e adicionando a um grupo
Lembra da história do reitor de Hong Kong? O bot adicionou usuários ao grupo por número de telefone, recebendo assim uma conta vinculada ao telefone. No mesmo artigo, um jornalista da ZDNet contatou um representante do Telegram. Este último disse que as importações em massa seriam problemáticas.
Suspeitamos que alguns invasores patrocinados pelo governo exploraram esse bug e o usaram para atingir os manifestantes de Hong Kong, em alguns casos postando perigos imediatos para a vida dos manifestantes
Então decidi primeiro vasculhar os contatos. A interface dos clientes oficiais do Telegram permite que você compartilhe apenas aqueles usuários cujo número você pode ver de uma forma ou de outra. No entanto, `telethon` permite que você compartilhe contatos com um número arbitrário. A julgar por sua API, a função de compartilhamento é enviar um arquivo de um determinado tipo . Para verificação preliminar, esbocei um script que enviou o contato especificado para minha conta principal sem mais perguntas.
Para verificar o script, abri uma conta "limpa" (doravante chamada de Bot) e enviei três números para outra conta (doravante chamada de Destinatário): Pasha, Dasha e a minha. Todo mundo tem Telegram. Pasha compartilhou seu telefone com todos. Dasha adicionou o destinatário aos seus contatos. Eu adicionei meu número duas vezes: primeiro adicionando o Bot aos meus contatos, depois apaguei o bot e me adicionei aos contatos do Bot.

O resultado pode ser interpretado pela imagem: os contatos normalmente são encontrados apenas se o telefone estiver disponível para o bot. Pior ainda com a adição ao chat . Não consigo nem adicionar contas com um telefone conhecido ao Bot se eles desligaram esse recurso nas configurações. Além disso, os bots podem ser rapidamente banidos se os usuários começarem a relatar spam. Então, não vou decretar ninguém, é hora de esquecer essa ideia.
Sincronização
Sincronizar contatos, como eu disse, potencialmente leva a restrições de conta. Mas como é? Escrevi outro script que pega números aleatórios do banco de dados e os adiciona aos contatos. Depois disso, o script analisa os contatos, adiciona os identificadores das contas encontradas na lista de volta ao banco de dados, marca o restante com zeros e remove os contatos da lista.
Então eu executei 5.000 números aleatórios, de acordo com rumores, esses são os limites que funcionam no Telegram. Não encontrei nenhum identificador na saída, exceto para o próprio Bot. Agora, para excluir possíveis erros no código e no truque do Telegram, adiciono manualmente o número de Dasha aos números aleatórios, desabilito a exclusão de contatos da lista, reduzo o tamanho da amostra para 3.000 números e executo novamente. Dasha não está na lista ou no banco de dados. Uma tentativa de adicionar manualmente dicas de Dasha que os limites do Telegram funcionaram.

Quase tudo parece estar bem. Para ter certeza, apaguei minha conta e a registrei novamente, reduzi o número de telefones para 3.000, incluindo Dasha, e executei o script novamente. O resultado é semelhante. Parece que os limites não afetam a conta, mas o número de telefone do qual os contatos são sincronizados. Tudo parece estar bem, e o Telegram fornece um nível razoável de proteção contra força bruta.
Ou não?
Pelo menos dois serviços são mencionados na Internet que supostamente escanearam uma ampla gama de números. Um deles eu verifiquei, ele funciona mal. Suponha que o segundo não esteja mentindo e eles realmente tiveram sucesso. Vamos até supor que eles não precisem processar todos os 600 milhões de números e que saibam de algum lugar 150 milhões de números realmente ativos (um pouco mais de um número per capita na Federação Russa). Quanto vai custar escanear todos em seis meses, observando todas as restrições do messenger? E em três meses? E em um mês? E em um dia?
Digamos que você possa verificar 5.000 contatos de um número no primeiro dia e mais 100 em cada dia subsequente . Em seis meses, de cada número, você pode enumerar 23.000 contatos
(180*100+5000)
; para pesquisar, você precisará de cerca de 6.500 números(150000000/23000)
... Não muito, certo? Se cada cartão SIM custar 150 rublos (o que é caro!), O custo de adquiri-los será inferior a um milhão de rublos. Montante de levantamento, mesmo para pequenas empresas! Para cartões SIM, você nem precisa manter muitos equipamentos, você faz o login e executa o script uma vez por dia.
Mas vamos contar até o máximo. Vamos pegar todo o conjunto de 600 milhões de números e reduzir o prazo para um mês. Acontece que você precisa de 75 mil cartões SIM, que custarão apenas cerca de dez vezes mais.
(600000000/(5000+30*100)*150=11250000)
... Você terá que tentar encontrar tantos cartões SIM, mas você pode reduzir o custo em tal lote. Potencialmente, você pode usar serviços que permitem registrar uma conta de 3,5 rublos cada, e os piores criminosos podem espalhar Trojans para roubar SMS. Então será muito mais barato. O desenvolvimento não parece muito complicado e os clientes de hospedagem também não devem ser um grande problema. Você pode ter que usar muitos proxies, mas isso não é certo.
Não consegui coletar o banco de dados devido aos limites do Telegram e isso é bom. Isso significa que há um certo limite de entrada para tais ações. Eu coloquei scripts inúteis em um git... Mas não há nada extremamente difícil de fazer com alguns recursos. Especialmente se você restringir os interesses a regiões específicas, por exemplo, na Região Autônoma Judaica há menos de um milhão de números no pool e em Bashkortostan há 12,5 milhões.
Eu sugeri que a equipe Telegram informar o usuário sobre a possibilidade de esconder o telefone. E lembro que o anonimato nos serviços sociais é condicional. Se você não quiser cair sob o reitor massivo, esconda seu número de telefone do Telegram para todos, exceto seus contatos.

