É possível detectar dispositivos Android e iOS com base em solicitações DHCP?

5

Eu quero configurar o servidor DHCP de forma que coloque smartphones e tablets "regulares" em uma sub-rede separada. É possível detectar se a solicitação DHCP vem de um dispositivo Android ou iOS com base na própria solicitação DHCP?

Por exemplo: um telefone Android da Sony que estava por perto definiu as seguintes opções DHCP, que são potencialmente úteis para identificação

bootp.option.vendor_class_id == "dhcpcd-5.2.10:Linux-2.6.32.9-perf:armv7l:mogami"
bootp.option.hostname == "android-c7d342d011ea6419"

Existem padrões comuns conhecidos em solicitações do SmartPhone DHCP melhores que o prefixo MAC?

    
por abbot 22.10.2012 / 10:31

3 respostas

1

Um smartphone Android enviou um código de fornecedor semelhante:

Option: (t=60,l=52) Vendor class identifier = "dhcpcd-5.2.10:Linux-3.0.16-ge733189:armv7l:shooter_u"

No entanto, um dispositivo iPhone não enviou nada além de seu endereço MAC e nome de host. O mesmo aconteceu com um dispositivo Nokia Symbian (E71). Minha amostra de três dispositivos sugere que apenas dispositivos Android enviam algo útil. Você pode ter algum sucesso encontrando quais informações cada cliente solicita (servidor SIP, pesquisa de domínio) e, de fato, não solicita, e usando isso como uma 'impressão digital'.

Na minha opinião, no entanto, a verdadeira resposta é colocar clientes "desconhecidos" em uma rede padrão e dispositivos explicitamente conhecidos em um diferente.

    
por 22.10.2012 / 17:04
1

Usando o nome do host para corresponder. Os usuários podem alterá-lo no Android, Configurações > Opções do desenvolvedor > Nome do host do dispositivo. Mas tenho certeza de que 90% dos usuários deixam essa configuração em paz. iPhone e iPad

class "Android" {
  match if substring(option host-name,0,7) = "Android";
}
class "iPhone" {
  match if substring(option host-name,0,6) = "iPhone";
}
class "iPad" {
  match if substring(option host-name,0,4) = "iPad";
}
class "Windows-Phone" {
  match if substring(option host-name,0,13) = "Windows-Phone";
}
class "BLACKBERRY" {
  match if substring(option host-name,0,10) = "BLACKBERRY";
}
    
por 29.04.2015 / 01:45
0

Você pode limitar o acesso à rede em seu servidor DHCP. Por exemplo, no ISC DHCP, você pode definir uma classe ou várias subclasses usando a string que o android envia:

class "Android" {
  match if substring(option vendor-class-identifier,0,5) = "dhcpd";
}

Você pode registrar essas informações para depuração em seus arquivos de registros, adicionando ao seu arquivo cfg:

log (debug, substring (option vendor-class-identifier, 0, 5));
    
por 28.01.2013 / 11:27