[PYTHON] Obtenez l'ID de contrôle d'application FortiGate

introduction

L'ID de contrôle d'application de FortiGate est publié sur fortiguard.com, mais il n'est pas affiché dans la liste. .. .. Il devrait y avoir un certain nombre de personnes qui veulent une liste avec csv, comme lors du chargement d'informations dans le collecteur de flux.

Obtenez du corps

Vous pouvez obtenir la liste à partir de la CLI à l'aide de la commande suivante.

config application list
edit default
config entries
edit 1

# set application ?

Si vous entrez ?, Il sera affiché, mais comme l'application prise en charge est différente en fonction de l'appareil, j'aimerais obtenir toutes les données de fortiguard.com si possible.

J'ai fait mon propre outil.

J'ai créé mon propre outil avec python.

pip install beautifulsoup4 lxml requests
import requests
import csv
import re
import time
from bs4 import BeautifulSoup

s = requests.Session()

url = 'https://fortiguard.com/appcontrol'
get_url_info = s.get(url)
bs4Obj = BeautifulSoup(get_url_info.text, 'lxml')
result = bs4Obj.find('div', class_='sidebar-content')
appids = int(re.findall('[0-9]+', result.find('a').get_text().replace(',', ''))[0])
perPage = int(len(bs4Obj.find_all('div', class_='title')))
if appids % perPage == 0:
    pages = int(appids // perPage)
else:
    pages = int(appids // perPage) + 1

i = 1
datas = []
url_base = 'https://fortiguard.com/appcontrol?deepapp=&page='

while pages + 1 > i:
    print('page:', i, '/', pages)
    url = url_base + str(i)
    try:
        get_url_info = s.get(url)
        bs4Obj = BeautifulSoup(get_url_info.text, 'lxml')
        app_list = bs4Obj.find_all('div', class_='title')
        if len(app_list) == 0:
            continue
    except Exception as e:
        print(e)
        time.sleep(1)
        continue
    j = 0
    while True:
        try:
            app_name = str(app_list[j].find('a').get_text())
            app_num = int(re.findall('[0-9]+', app_list[j].find('a').get('href'))[0])
            data = [app_num, app_name]
            datas.append(data)
            j += 1
        except:
            break
    i += 1

print('result:', len(datas), '/', appids)

with open('appid.csv', 'w') as file:
    writer = csv.writer(file, lineterminator='\n')
    writer.writerows(sorted(datas))

J'ai téléchargé le même code sur Github. https://github.com/Connie-Wild/FortiOS_AppControlID Eh bien!

Recommended Posts

Obtenez l'ID de contrôle d'application FortiGate
Obtenir l'ID de thread avec python
[Développement à distance] Application de contrôle (pratique 2)
Obtenez l'ID de compte AWS avec boto3