mirror of
https://github.com/C24Be/AS_Network_List.git
synced 2026-01-26 07:45:07 +03:00
Update scripts and lists
This commit is contained in:
23
README.md
23
README.md
@@ -2,10 +2,15 @@
|
|||||||
|
|
||||||
This repository contains two Python scripts that allow you to retrieve network lists based on either an Autonomous System (AS) name or a Network name.
|
This repository contains two Python scripts that allow you to retrieve network lists based on either an Autonomous System (AS) name or a Network name.
|
||||||
|
|
||||||
## Features
|
## Files and features
|
||||||
|
|
||||||
- `network_list_from_as.py`: Retrieves a list of networks associated with a given AS name.
|
- `network_list_from_as.py`: Retrieves a list of networks associated with a given AS name.
|
||||||
- `network_list_from_netname.py`: Retrieves a list of networks associated with a given Network name.
|
- `network_list_from_netname.py`: Retrieves a list of networks associated with a given Network name.
|
||||||
|
- `lists/ru-gov-netnames.txt`: A list of network names associated with the Russian government. **Contributors are welcome!**
|
||||||
|
- `lists/ru-gov-ass.txt`: A list of AS numbers associated with the Russian government. **Contributors are welcome!**
|
||||||
|
- `blacklist_updater.sh`: Static blacklist updater.
|
||||||
|
- `blacklist.txt`: Static blacklist generated from both lists! **Will be periodically updated!**
|
||||||
|
- `blacklist_comments.txt`: Static blacklist generated from both lists with comments! **Will be periodically updated!**
|
||||||
|
|
||||||
<img width="240" alt="image" src="https://github.com/C24Be/AS_Network_List/assets/153936414/2ec89fa9-b39a-416d-b1a1-20ddc89377ed">
|
<img width="240" alt="image" src="https://github.com/C24Be/AS_Network_List/assets/153936414/2ec89fa9-b39a-416d-b1a1-20ddc89377ed">
|
||||||
|
|
||||||
@@ -45,10 +50,16 @@ These scripts have been tested on MacOS, FreeBSD and Linux.
|
|||||||
./network_list_from_as.py AS61280
|
./network_list_from_as.py AS61280
|
||||||
```
|
```
|
||||||
|
|
||||||
2. To suppress all output except the prefixes, use the `--quiet` or `-q` switch:
|
2. Run the script with a URL to a file in a GitHub repository as an argument:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./network_list_from_as.py AS61280 -q
|
./network_list_from_as.py https://github.com/C24Be/AS_Network_List/blob/main/lists/ru-gov-ass.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Or better use the raw file link:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./network_list_from_as.py https://raw.githubusercontent.com/C24Be/AS_Network_List/main/lists/ru-gov-ass.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
3. To display a help message, use the `-h` or `--help` switch:
|
3. To display a help message, use the `-h` or `--help` switch:
|
||||||
@@ -62,19 +73,19 @@ These scripts have been tested on MacOS, FreeBSD and Linux.
|
|||||||
1. Run the script with a file containing a list of network names as an argument:
|
1. Run the script with a file containing a list of network names as an argument:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./network_list_from_netname.py lists/run-gov-netnames.txt
|
./network_list_from_netname.py lists/ru-gov-netnames.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
2. Run the script with a URL to a file in a GitHub repository as an argument:
|
2. Run the script with a URL to a file in a GitHub repository as an argument:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./network_list_from_netname.py https://github.com/AntiZapret/antizapret/blob/master/blacklist4.txt
|
./network_list_from_netname.py https://github.com/C24Be/AS_Network_List/blob/main/lists/ru-gov-netnames.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
Or better use the raw file link:
|
Or better use the raw file link:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./network_list_from_netname.py https://raw.githubusercontent.com/AntiZapret/antizapret/master/blacklist4.txt
|
./network_list_from_netname.py https://raw.githubusercontent.com/C24Be/AS_Network_List/main/lists/ru-gov-netnames.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
3. To display a help message, use the `-h` or `--help` switch:
|
3. To display a help message, use the `-h` or `--help` switch:
|
||||||
|
|||||||
13
blacklists_updater.sh
Executable file
13
blacklists_updater.sh
Executable file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
outfile_wo_comments="blacklist.txt"
|
||||||
|
outfile_w_comments="blacklist_comments.txt"
|
||||||
|
|
||||||
|
url_ass="https://raw.githubusercontent.com/C24Be/AS_Network_List/main/lists/ru-gov-ass.txt"
|
||||||
|
url_nets="https://raw.githubusercontent.com/C24Be/AS_Network_List/main/lists/ru-gov-netnames.txt"
|
||||||
|
|
||||||
|
./network_list_from_as.py ${url_ass} -q > ${outfile_wo_comments}
|
||||||
|
./network_list_from_netname.py ${url_nets} -q >> ${outfile_wo_comments}
|
||||||
|
|
||||||
|
./network_list_from_as.py ${url_ass} > ${outfile_w_comments}
|
||||||
|
./network_list_from_netname.py ${url_nets} >> ${outfile_w_comments}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
|
# ----------
|
||||||
#
|
#
|
||||||
# Just list of strings started with AS...
|
# Just list of strings started with AS...
|
||||||
#
|
#
|
||||||
# AS123
|
# AS31430
|
||||||
# AS1234
|
# AS61280
|
||||||
#
|
#
|
||||||
|
# ----------
|
||||||
|
|
||||||
# Номер автономки у ГРЧЦ и подконтрольному ему ДЦОА
|
# Номер автономки у ГРЧЦ и подконтрольному ему ДЦОА
|
||||||
AS61280
|
AS61280
|
||||||
# Test
|
|
||||||
AS31430
|
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
|
|
||||||
import requests
|
import requests
|
||||||
import argparse
|
import argparse
|
||||||
|
import re
|
||||||
from cymruwhois import Client
|
from cymruwhois import Client
|
||||||
|
|
||||||
def get_as_prefixes(asn):
|
def get_as_prefixes(asn):
|
||||||
@@ -14,27 +15,41 @@ def get_as_prefixes(asn):
|
|||||||
else:
|
else:
|
||||||
return []
|
return []
|
||||||
|
|
||||||
def get_as_whois(asn):
|
def convert_to_raw_github_url(url):
|
||||||
c = Client()
|
return url.replace("https://github.com/", "https://raw.githubusercontent.com/").replace("/blob", "")
|
||||||
r = c.lookup(asn)
|
|
||||||
return r.owner
|
|
||||||
|
|
||||||
def main():
|
|
||||||
parser = argparse.ArgumentParser(description='./as_network_list.py -q AS61280')
|
|
||||||
parser.add_argument('asn', help='The AS number to get prefixes for.')
|
|
||||||
parser.add_argument('-q', '--quiet', action='store_true', help='Disable all output except prefixes.')
|
|
||||||
args = parser.parse_args()
|
|
||||||
|
|
||||||
asn = args.asn
|
|
||||||
prefixes = get_as_prefixes(asn)
|
|
||||||
whois_info = get_as_whois(asn)
|
|
||||||
|
|
||||||
|
def print_prefixes(asn):
|
||||||
|
line = re.sub(r'[^AS0-9]', '', asn)
|
||||||
if not args.quiet:
|
if not args.quiet:
|
||||||
print(f"Prefixes announced by {asn}:")
|
print(f"# Networks announced by {line}")
|
||||||
print(f"Whois info for {asn}: {whois_info}")
|
prefixes = get_as_prefixes(line)
|
||||||
|
|
||||||
for prefix in prefixes:
|
for prefix in prefixes:
|
||||||
print(prefix)
|
print(prefix)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
def extract_asses(asn_filename_or_url):
|
||||||
main()
|
if asn_filename_or_url.startswith('AS'):
|
||||||
|
print_prefixes(asn_filename_or_url)
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
if asn_filename_or_url.startswith('http://') or asn_filename_or_url.startswith('https://'):
|
||||||
|
if 'github.com' in asn_filename_or_url:
|
||||||
|
asn_filename_or_url = convert_to_raw_github_url(asn_filename_or_url)
|
||||||
|
response = requests.get(asn_filename_or_url)
|
||||||
|
lines = response.text.split('\n')
|
||||||
|
else:
|
||||||
|
with open(asn_filename_or_url, 'r') as file:
|
||||||
|
lines = file.readlines()
|
||||||
|
|
||||||
|
for line in lines:
|
||||||
|
if re.match(r'^AS.*', line):
|
||||||
|
print_prefixes(line)
|
||||||
|
|
||||||
|
return None
|
||||||
|
|
||||||
|
parser = argparse.ArgumentParser(description='./as_network_list.py -q AS61280')
|
||||||
|
parser.add_argument('asn_filename_or_url', help='The AS number to get networks / The file or URL to extract AS numbers from.')
|
||||||
|
parser.add_argument('-q', '--quiet', action='store_true', help='Disable all output except prefixes.')
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
extract_asses(args.asn_filename_or_url)
|
||||||
|
|||||||
@@ -57,8 +57,11 @@ def extract_netname(filename_or_url):
|
|||||||
|
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if re.match(r'.*netname:', line):
|
if re.match(r'.*netname:', line):
|
||||||
response = whois_query(whois_server, line.split(':')[1].strip())
|
netname = line.split(':')[1].strip()
|
||||||
|
response = whois_query(whois_server, netname)
|
||||||
if response is not None:
|
if response is not None:
|
||||||
|
if not args.quiet:
|
||||||
|
print(f"# Network name: {netname}")
|
||||||
ip_range = response.split(':')[1].strip()
|
ip_range = response.split(':')[1].strip()
|
||||||
cidrs = convert_to_cidr(ip_range)
|
cidrs = convert_to_cidr(ip_range)
|
||||||
for cidr in cidrs:
|
for cidr in cidrs:
|
||||||
@@ -66,12 +69,9 @@ def extract_netname(filename_or_url):
|
|||||||
|
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def main():
|
parser = argparse.ArgumentParser(description='Extract netname from file.')
|
||||||
parser = argparse.ArgumentParser(description='Extract netname from file.')
|
parser.add_argument('filename_or_url', help='The file or URL to extract netnames from.')
|
||||||
parser.add_argument('filename_or_url', help='The file to extract netname from.')
|
parser.add_argument('-q', '--quiet', action='store_true', help='Disable all output except prefixes.')
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
extract_netname(args.filename_or_url)
|
extract_netname(args.filename_or_url)
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
||||||
|
|||||||
Reference in New Issue
Block a user