Quale software posso usare per invertire gli intervalli IP dell'elenco txt? (non una ricerca DNS inversa)


0

Questa è una block list, ma voglio avere solo IP nella lista per essere ammessi.

invece di:

1.2.3.5-1.2.10.20
2.2.3.5-3.2.100.20,

Ho bisogno:

0.0.0.0-1.2.3.4
1.2.10.21-2.2.3.4
3.2.100.21-255.255.255.255.

Quale programma o script posso usare per farlo?

Risposte:


0

Non hai specificato a quale sistema operativo e strumenti stai utilizzando o a cui hai accesso. Presumo che tu sia su un sistema * nix e che tu possa usare uno script di shell. L'esempio che hai fornito potrebbe essere facile da gestire con una semplice manipolazione delle stringhe, ma rendersi conto che l'indirizzo successivo dopo 42.17.255.255 è 42.18.0.0 è un po 'complicato. Penso che il modo più semplice per farlo sia convertire gli indirizzi in numeri interi a 32 bit, eseguire semplici aritmetiche su di essi e riconvertirli. Quindi ecco uno script di shell per farlo:

#!/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"

Usa il trucco per dividere il testo dei delimitatori in parole e assegnare l'elenco di parole risultante a un array. Fa quello che ho descritto sopra: converte gli indirizzi IP in numeri decimali a 32 bit, esegue una banale ( / ) aritmetica su di essi e li converte indietro.array_name=( $(echo "something" | tr "some_character" " ") )-1+1

Se lo utilizzerai davvero, dovresti aggiungere un controllo degli errori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.