A história de como você não precisa obter autorização, especialmente em áreas importantes para a vida e a propriedade, como, por exemplo, gerenciar um sistema de alarme de segurança por meio do aplicativo do telefone.

Breve introdução
Tudo começou com o fato de eu ter construído uma casa, e uma casa sem alarme pode certamente existir em nossas realidades, mas nada mais ou menos valioso pode ser deixado lá (casos tristes de vizinhos confirmam isso). Ao terminar por dentro e por fora, definir e desarmar a chave não causou nenhum inconveniente.
A casa tem uma garagem, os portões se abrem do controle remoto e, consequentemente, o carro é colocado lá. Se a casa estiver sob guarda, a abertura do controle remoto dispara um "alarme" no portão e após 2-3 minutos a chegada de caras sérios. Para evitar isso, você deve primeiro remover a proteção (abrir o vestíbulo, prender a chave, fechar o vestíbulo, entrar no carro novamente) e depois abrir o portão. E de alguma forma esse procedimento é um pouco chato, especialmente no inverno, e em geral toda a "mágica" está de alguma forma perdida.
Obviamente, você pode garantir que a abertura do portão remova o alarme, mas ainda não cheguei a esse ponto.
Mas eu descobri que nossa agência de segurança tem um aplicativo milagroso "Phoenix Mobile Keyboard". O aplicativo não é apenas eles, mas eles trabalham com ele. Com ele, você pode controlar o alarme do telefone, o que mais ou menos retorna a alegria de usar tudo isso.
E agora a própria história
Para conectar o gerenciamento de segurança a partir do aplicativo, você precisa ir ao escritório da agência de segurança, encontrar o engenheiro de que precisa, pagar 400 rublos pela “configuração” no caixa e você receberá uma conta que direciona as configurações do telefone e pronto, você pode orientar a segurança como quiser, receber notificações push e não sei luto.
Tudo ficaria bem, mas quando você se registra, você recebe um login na forma de três letras, por exemplo, abb (iniciais), e a senha é feita com os últimos quatro dígitos do número de telefone (como o engenheiro disse, para que eles não esqueçam), ou seja, 0808. Um pouco surpreso com o que você ouviu, perguntou se a senha pode ser definida diferente, eles disseram que é possível, mas apenas números. Bem, eu defini a senha certa e saí para testar como tudo funciona.

Enquanto isso, uma idéia amadureceu na minha cabeça - mas devo tentar ...
Pegamos um iPhone, conectamos à papoula, corremos: rvictl -s iPhone_UDID
, nos apegamos à nova interface via Wireshark e vemos como funciona e o que nosso aplicativo envia. Você pode levar outros dispositivos / ferramentas, mas eu tenho um.

Acontece que funciona através do protocolo wamp - este é essencialmente o mesmo soquete da web. Naturalmente, nada é criptografado e você pode ver exatamente como as solicitações são enviadas e realmente repeti-las.
Agora tentamos reproduzir os pedidos recebidos. Tudo isso para a velocidade dos testes, você pode colocar a extensão para o tipo chrome "Web Socket Client" e tentar lá.

Depois de garantir que tudo funcione exatamente como o esperado, escrevemos rapidamente o cliente, por exemplo, no nó.
Observamos que a API responde com mensagens diferentes quando o usuário não é encontrado e a senha está incorreta. Isso irá acelerar o processo.
Nosso cliente será bastante burro, mas ainda assim eficaz. O cliente enumera todos os logins que consistem em 3 letras. Se o nome de usuário existir, ele começará a enumerar a senha, caso contrário, prosseguiremos para a próxima. A senha é classificada no intervalo de 0000 a 9999.
Começamos tudo isso e esperamos. Os logins superaram rapidamente (10 minutos), resultando em cerca de 150 peças (não muito usando o serviço). A senha para cada login é de aproximadamente 8 minutos. Não há restrições à verificação no IPA. E você pode ocar multithread.
As senhas foram selecionadas em 100% dos casos. Após a seleção bem-sucedida da senha, a API divulga informações como: nome do proprietário, endereço (pode haver muitos objetos), alguns tokens (aparentemente para envio de push), identificação da sessão e assim por diante.
Após o login, você pode desarmar o objeto inteiro. Os próprios objetos pareciam bastante distantes da cidade. Se essas informações caíssem nas mãos dos "bandidos", a autópsia de um objeto protegido passaria sem problemas, e seria possível armar com segurança e ninguém teria notado.
Percebendo que eu próprio sou cliente deste escritório - me senti um pouco desconfortável.
Uma coisa é boa, aparentemente a empresa ainda possui algum tipo de monitoramento, ou pode ter sido acidentalmente notada, mas depois de um tempo o aplicativo parou de aceitar senhas e se ofereceu para entrar em contato com o escritório.
Como resultado, todos mudaram seus nomes de usuário e criaram senhas normais. O protocolo, no entanto, como não foi criptografado, permaneceu o mesmo, mas pelo menos alguma coisa.
Por que isso é tudo? Talvez alguém depois disso deseje tornar seu sistema um pouco mais seguro, e alguém que use um serviço semelhante com senhas semelhantes olhe para ele do outro lado e peça ação. Com essas ações simples, o nível de segurança aumentará ligeiramente.
Eu especificamente não dou nomes aqui e, tanto quanto possível, despersonalizou todos os dados, para que quem se reconhece tire conclusões :)
PS Este artigo é apenas para fins informativos, os problemas descritos aqui no momento da publicação não são mais relevantes - a empresa tomou uma ação.