Listar todos os endereços IP em arquivos no meu computador?

1

Após alguns anos pensando em configurar um laptop antigo como um servidor em uma rede doméstica e no mundo como um todo, eu gostaria de saber mais sobre endereços IP.

Como posso encontrar quais endereços IP estão armazenados no meu computador agora? Dessa forma, posso ver arquivos interessantes agora. Eu posso usá-los mais tarde para configurar endereços IP para configurar programas.

Embora linha de comando e processamento de texto as tags aparecem sob esta questão, uma solução GUI é perfeitamente bem-vinda lugar das da linha de comandos . grep não precisa ser usado para cumprir processamento de texto e se arquivos binários podem ser interpretados, isso é muito bom também.

    
por WinEunuuchs2Unix 09.04.2018 / 02:12

1 resposta

2

Use grep

Você pode usar grep para localizar todos os arquivos que contenham algo parecido com um endereço IP IPv4. Esteja ciente de que haverá falsos positivos. Por exemplo, o arquivo:

/usr/src/linux-headers-4.14.30-041430/include/linux/oid_registry.h

na linha 48 conterá:

OID_smimeAuthenticatedAttrs,    /* 1.2.840.113549.1.9.16.2.11 */

Parece um endereço IP nos comentários, mas não é.

Comece inicialmente com uma contagem de todas as linhas que contêm um endereço IP no seu sistema:

$ sudo time grep -rnwI --exclude-dir={boot,dev,media,mnt,lib,proc,root,run,sys,/tmp,tmpfs,var} -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" / | wc
27.76user 13.17system 1:31.06elapsed 44%CPU (0avgtext+0avgdata 10416maxresident)k
12451744inputs+0outputs (2major+2098minor)pagefaults 0swaps
  17164  122083 3138285

Vamos detalhar os comandos

  • sudo evita erros de "Permissão negada"
  • time nos informa quanto tempo demora para executar, ou seja. 1 minuto 31 segundos
  • grep é o comando que procura por strings em arquivos
  • -rnwI são os argumentos (também conhecidos como parâmetros) passados para grep . Os subdiretórios de significância recursiva r são processados. O argumento n imprime o número da linha que a cadeia de pesquisa ocorre no arquivo. O argumento I diz para ignorar arquivos binários. Se os arquivos binários fossem incluídos, o número de arquivos aumentaria de 17.164 para 22.253 no meu sistema. Você não pode abrir arquivos binários e fazer algum sentido deles embora.
  • -exclude-dir= são os diretórios a serem excluídos da pesquisa. Sem essa lista, grep pode levar 53 horas para concluir: 'grep'ing todos os arquivos para uma string leva muito tempo
  • -E é o argumento para grep que indica que a sequência de pesquisa está prestes a ser seguida.
  • "([0-9]{1,3}[\.]){3}[0-9]{1,3}" é a string de pesquisa para olhar para frente. Explicado com mais detalhes abaixo.
  • / informa grep para iniciar no diretório raiz. No entanto, os diretórios excluídos serão ignorados.
  • | é o comando pipe enviando todas as saídas para o comando wc em vez da tela.
  • wc é o comando "contagem de palavras". Conta as linhas numéricas, o número de palavras e o número de caracteres passados. No nosso caso, são 17164 lines, 122,083 words e 3,138,285 characters. Vírgulas adicionadas para maior clareza.

Quebrando "([0-9]{1,3}[\.]){3}[0-9]{1,3}"

Como mostrado anteriormente, a string de pesquisa passada para grep é "([0-9]{1,3}[\.]){3}[0-9]{1,3}" . Veja como funciona:

"([0-9]{1,3}[\.]){3}[0-9]{1,3}"
    ^    ^   ^    ^   ^    ^
    |    |   |    |   |    +---- count of digits must be 1 to 3 
    |    |   |    |   +--------- look for digits 0 through 9
    |    |   |    +------------- patterns 1 to 3 digits of 0-9 followed by . occurs 3 times
    |    |   +------------------ count of 1 to 3 digits must be followed by .
    |    +---------------------- count of digits is 1 to 3
    +--------------------------- look for digits 0 to 9

Ver a saída em vez da contagem de palavras

Para ver a saída real em vez de apenas a contagem de palavras, remova | wc do final da linha de comando:

$ sudo time grep -rnwI --exclude-dir={boot,dev,media,mnt,lib,proc,root,run,sys,/tmp,tmpfs,var} -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /

    (... SNIP ...)
/usr/bin/printer-profile:176:   OUT="nc 192.168.1.12 9100 < xxx.prn"
/opt/google/chrome/default_apps/external_extensions.json:23:    "external_version": "0.0.0.6"
/opt/google/chrome/product_logo_32.xpm:330:"    [.}.}.|.1.2.3.4.5.6.7.8.9.0.a.b.8.c.d.e.f.g.h.h.i.j.k.l.    ",
28.52user 12.54system 1:31.78elapsed 44%CPU (0avgtext+0avgdata 9516maxresident)k
12793352inputs+0outputs (3major+1884minor)pagefaults 0swaps

A listagem é longa demais para caber nessa resposta. Observe que o último arquivo encontrado é um falso positivo:

/opt/google/chrome/product_logo_32.xpm

porque não contém um endereço IP real:

[.}.}.|.1.2.3.4.5.6.7.8.9.0.a.b.8.c.d.e.f.g.h.h.i.j.k.l.

Restrinja sua pesquisa ao diretório /etc no início

Para restringir a pesquisa a um uso de lista curta mais significativo:

$ sudo time grep -rnI -E "([0-9]{1,3}[\.]){3}[0-9]{1,3}" /etc/etc/hosts:1:127.0.0.1 localhost
/etc/hosts:2:127.0.1.1  alien
/etc/cron.daily/google-earth:47:Version: GnuPG v1.4.2.2 (GNU/Linux)
    (... SNIP ...)
/etc/cups/cups-browsed.conf:77:# BrowseDeny 192.168.1.13
/etc/cups/cups-browsed.conf:78:# BrowseDeny 192.168.3.0/24
/etc/cups/cups-browsed.conf:79:# BrowseDeny 192.168.3.0/255.255.255.0
0.04user 0.03system 0:00.19elapsed 40%CPU (0avgtext+0avgdata 2800maxresident)k
22384inputs+0outputs (1major+181minor)pagefaults 0swaps
    
por WinEunuuchs2Unix 09.04.2018 / 02:12