3213 |
rexy |
1 |
#!/bin/bash
|
|
|
2 |
|
|
|
3 |
#######################################
|
|
|
4 |
## Update script for Tor entry point ##
|
|
|
5 |
## By Sylvain Harand & Rexy ##
|
|
|
6 |
## ##
|
|
|
7 |
#######################################
|
|
|
8 |
|
|
|
9 |
# Note: The dan.me site only allow to fetch one every 15 minutes by IP adresses.
|
|
|
10 |
# Trying to fetch more may result in a definitive ban.
|
|
|
11 |
|
|
|
12 |
# File paths
|
|
|
13 |
input_file='TorNodesTmp.txt'
|
|
|
14 |
output_file_IPV4='TorNodesIPV4.txt'
|
|
|
15 |
output_file_IPV6='TorNodesIPV6.txt'
|
|
|
16 |
|
|
|
17 |
# Récupération de la liste des noeuds TOR et stockage dans le fichier temporaire depuis le site dan.me
|
|
|
18 |
curl https://www.dan.me.uk/tornodes > $input_file
|
|
|
19 |
|
|
|
20 |
# extraction des données situées entre les balises spécifiques
|
|
|
21 |
tor_nodes=$(sed -n '/<!-- __BEGIN_TOR_NODE_LIST__ \/\/-->/, /<!-- __END_TOR_NODE_LIST__ \/\/-->/p' "$input_file" | sed '1d;$d')
|
|
|
22 |
|
|
|
23 |
# RAZ des fichiers de sortie
|
|
|
24 |
> "$output_file_IPV4"
|
|
|
25 |
> "$output_file_IPV6"
|
|
|
26 |
|
|
|
27 |
# IPV4 Ptn
|
|
|
28 |
PTN='^\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\).\([01]\?[[:digit:]][[:digit:]]\?\|2[0-4][[:digit:]]\|25[0-5]\)$'
|
|
|
29 |
|
|
|
30 |
# Pour chaque ligne de la variable temporaire
|
|
|
31 |
echo "$tor_nodes" | while IFS= read -r line; do
|
|
|
32 |
# Suppression des balises HTML
|
|
|
33 |
clean_line=$(echo "$line" | sed -e 's/<br>//g')
|
|
|
34 |
# Extraction du 5e champ pour vérifier s'il contient "G" (Tag pour noeud de Garde (entrée)
|
|
|
35 |
fifth_field=$(echo "$clean_line" | cut -d '|' -f 5)
|
|
|
36 |
if [[ "$fifth_field" == *"G"* ]]; then
|
|
|
37 |
# Extraction de l'@IP (1er champ)
|
|
|
38 |
ip_address=$(echo "$clean_line" | cut -d '|' -f 1)
|
|
|
39 |
# Aihuillage en fonction du type @IP
|
|
|
40 |
if [[ $(expr "$ip_address" : "$PTN") -gt 0 ]]
|
|
|
41 |
then echo "$ip_address" >> "$output_file_IPV4"
|
|
|
42 |
else echo "$ip_address" >> "$output_file_IPV6"
|
|
|
43 |
fi
|
|
|
44 |
echo -n "#"
|
|
|
45 |
fi
|
|
|
46 |
done
|
|
|
47 |
echo
|
|
|
48 |
echo -n "Removing duplicate IPV4 entries - Please wait..."
|
|
|
49 |
uniq "$output_file_IPV4" > "$input_file"; cat "$input_file" > "$output_file_IPV4"
|
|
|
50 |
echo "Nb_IP_V4 = `wc -l $output_file_IPV4`"
|
|
|
51 |
echo -n "Removing duplicate IPV6 entries - Please wait..."
|
|
|
52 |
uniq "$output_file_IPV6" > "$input_file"; cat "$input_file" > "$output_file_IPV6"
|
|
|
53 |
echo "Nb_IP_V6 = `wc -l $output_file_IPV6`"
|
|
|
54 |
rm "$input_file"
|