Que software posso usar para inverter os intervalos de IP da lista de txt? (não uma pesquisa reversa de DNS)

0

Esta é uma lista de bloqueio, mas eu quero que apenas o IP na lista seja permitido.

em vez de:

1.2.3.5-1.2.10.20
2.2.3.5-3.2.100.20,

Eu preciso:

0.0.0.0-1.2.3.4
1.2.10.21-2.2.3.4
3.2.100.21-255.255.255.255.

Qual programa ou script posso usar para fazer isso?

    
por dgdgtuytutu 09.05.2015 / 05:41

1 resposta

0

Você não especificou o sistema operacional e as ferramentas que está usando ou ter acesso a. Suponho que você esteja em um sistema * nix e possa usar um script de shell. O exemplo que você deu pode ser fácil de manipular por simples manipulação de strings, mas percebendo que o próximo endereço após 42.17.255.255 é 42.18.0.0 é um pouco complicado. Eu acho que a maneira mais fácil de fazer isso é converter os endereços para inteiros de 32 bits, faça aritmética simples neles e converta-os de volta. Então, aqui está um script de shell para fazer isso:

#!/bin/sh
ip_to_dec()
{
        octets=( $(echo "$1" | tr "." " ") )
        echo $(( (((${octets[0]}*256)+${octets[1]})*256+${octets[2]})*256+${octets[3]} ))
}

dec_to_ip()
{
        n=$1
        d=$((n%256))
        n=$((n/256))
        c=$((n%256))
        n=$((n/256))
        b=$((n%256))
        a=$((n/256))
        echo "$a.$b.$c.$d"
}

my_args=( $(echo "$1 $2" | tr "-" " ") )
for ((i=0; i<4 ; i++))
do
        my_arg_dec[i]=$(ip_to_dec "${my_args[i]}")
done
my_arg_dec[0]=$(( my_arg_dec[0]-1 ))
my_arg_dec[1]=$(( my_arg_dec[1]+1 ))
my_arg_dec[2]=$(( my_arg_dec[2]-1 ))
my_arg_dec[3]=$(( my_arg_dec[3]+1 ))

echo "0.0.0.0-$(dec_to_ip ${my_arg_dec[0]})" \
     "$(dec_to_ip ${my_arg_dec[1]})-$(dec_to_ip ${my_arg_dec[2]})" \
     "$(dec_to_ip ${my_arg_dec[3]})-255.255.255.255"

Ele usa o truque array_name=( $(echo "something" | tr "some_character" " ") ) dividir o texto em delimitadores em palavras, e atribua a lista de palavras resultante a um array. Faz o que descrevi acima: converte os endereços IP em números decimais de 32 bits, não trivial ( -1 / +1 ) aritmética sobre eles, e converte-los de volta.

Se você for usar isso de verdade, adicione a verificação de erros.

    
por 09.05.2015 / 07:54

Tags