diff --git a/latex/ressources/R108.tex b/latex/ressources/R108.tex index fdef2c9..6779da2 100644 --- a/latex/ressources/R108.tex +++ b/latex/ressources/R108.tex @@ -74,7 +74,7 @@ précédemment.\\[3pt]} \item Consulter et modifier les variables d'environnement \item - Commandes réseau (wget, curl, ping, traceroute, netstat, nmap) + Commandes réseau (wget, curl, \texttt{ping}, \texttt{traceroute}, netstat, \texttt{nmap}) \item Initiation aux scripts pour l'automatisation de séquences de commandes, aux structures de contrôle diff --git a/latex/saes/SAE12_exemple1.tex b/latex/saes/SAE12_exemple1.tex index 0084a1e..d257ba9 100644 --- a/latex/saes/SAE12_exemple1.tex +++ b/latex/saes/SAE12_exemple1.tex @@ -23,8 +23,8 @@ de sortie accédant à Internet via les ressources informatiques du département.On peut caractériser simplement l'adressage \textabbrv{IP}v4 dynamique, le masque de sous-réseaux, la passerelle par défaut, les serveurs \textabbrv{DNS}. On peut également faire paramétrer un adressage \textabbrv{IP}v4 statique sur un -poste client.On peut s'appuyer sur les commandes de base~: ipconfig, -ifconfig, ip, ping, arp, traceroute, arp-scan (ArpCacheWatch sous +poste client.On peut s'appuyer sur les commandes de base~: \texttt{ipconfig}, +\texttt{ifconfig}, \texttt{ip}, \texttt{ping}, \texttt{arp}, \texttt{traceroute}, arp-scan (ArpCacheWatch sous Windows) pour lister les adresses \textabbrv{MAC} présentes dans le réseau local.\\ On peut faire découvrir les outils pour connaître son adresse \textabbrv{IP} Publique par ex: \url{http://www.monip.org/} , @@ -35,7 +35,7 @@ On peut faire découvrir l'application Android WiFi Analyser pour lister les points d'accès à proximité ou les fréquences utilisées~: \url{https://github.com/VREMSoftwareDevelopment/WiFiAnalyzer}.\\ Enfin, on pourra initier les étudiants les plus avancés à l'usage de la -distribution Linux Kali en \textabbrv{VM} avec l'outil nmap +distribution Linux Kali en \textabbrv{VM} avec l'outil \texttt{nmap} (\url{https://nmap.org/}) pour découvrir (en interne) les ports ouverts sur les équipements du réseau local domestique. Bien expliquer que l'usage de cet outil de test de pénétration doit être réalisé en diff --git a/latex/saes/SAE24_exemple3.tex b/latex/saes/SAE24_exemple3.tex index 601a908..9d39216 100644 --- a/latex/saes/SAE24_exemple3.tex +++ b/latex/saes/SAE24_exemple3.tex @@ -20,7 +20,7 @@ réseau autonome réel ou simulé qui comportera quelques éléments actifs, serveurs et clients opérationnels.\\ Cette étude permettra de se familiariser avec l'utilisation des principaux outils utilisés tout autant par les hackers que par les -administrateurs des systèmes (nmap, john the ripper, burp suite, scapy, +administrateurs des systèmes (\texttt{nmap}, john the ripper, burp suite, scapy, metasploit, \ldots) afin d'exploiter les vulnérabilités volontairement introduites dans la configuration.\\ La maquette devra illustrer les techniques d'exploitations d'un nombre diff --git a/python/export_yaml_to_latex.py b/python/export_yaml_to_latex.py index 29674ea..e9674f9 100644 --- a/python/export_yaml_to_latex.py +++ b/python/export_yaml_to_latex.py @@ -134,7 +134,6 @@ else: # Export latex des sae for sem in saes: for s in saes[sem]: - fichierlatex = REPERTOIRE_LATEX_SAES + "/" + "{}.tex".format(s.sae["code"].replace("É", "E")) contenu = s.to_latex() with open(fichierlatex, "w", encoding="utf8") as fid: diff --git a/python/officiel.py b/python/officiel.py index e5645fb..ca782dd 100644 --- a/python/officiel.py +++ b/python/officiel.py @@ -17,9 +17,12 @@ with open(Config.ROOT+"/python/pn/saes.yml", 'r', encoding="utf8") as fid: ## Les compétences with open(Config.ROOT+"/yaml/competences/RT123.yml", 'r', encoding="utf8") as fid: DATA_COMPETENCES = yaml.load(fid.read(), Loader=yaml.Loader) -## Les abbréviations +## Les abréviations with open(Config.ROOT+"/yaml/abbreviations.yml", "r", encoding="utf8") as fid: DATA_ABBREVIATIONS = yaml.load(fid.read(), Loader=yaml.Loader) +## Les mostcles (commandes, logiciels, etc...) +with open(Config.ROOT+"/yaml/motscles.yml", "r", encoding="utf8") as fid: + DATA_MOTSCLES = yaml.load(fid.read(), Loader=yaml.Loader) AUCUN_PREREQUIS = "Aucun" diff --git a/python/ressource.py b/python/ressource.py index 89f7cc4..f79d152 100644 --- a/python/ressource.py +++ b/python/ressource.py @@ -17,7 +17,7 @@ __LOGGER = logging.getLogger(__name__) def nettoie_latex(chaine): """Purge certains éléments de la chaine latex générée par pypandoc""" chaine = chaine.replace("\\tightlist\n", "") - chaine = ajoute_abbr_latex(chaine) + chaine = ajoute_abbr_latex(chaine) # détecte les abréviations # detecte les espaces insécables chaine = chaine.replace(" :", "~:") @@ -171,6 +171,9 @@ class Ressource: def contient_abbr(chaine): + """Détecte les abréviations présentes dans la chaine + (dont la liste est fournie par DATA_ABBREVIATIONS lues depuis le .yml) et + les renvoie sous forme d'une liste par abréviations de nombre de caractères décroissants""" mots = [] for lettre in DATA_ABBREVIATIONS: for mot in DATA_ABBREVIATIONS[lettre]: @@ -183,7 +186,10 @@ def contient_abbr(chaine): def ajoute_abbr_latex(chaine): - """Parse la chaine latex pour ajouter les abbréviations""" + """ + Parse la chaine latex pour ajouter les abbréviations et les remplacer par + \\textabbrv{abreviation} + """ mots = chaine.split(" ") for (i, mot) in enumerate(mots): abbrs = contient_abbr(mot) @@ -194,6 +200,34 @@ def ajoute_abbr_latex(chaine): chaine = chaine.replace("/IP", "/\\textabbrv{IP}") return chaine +def contient_commandes(chaine): + """Détecte si la chaine est une commande (éventuellement avec un caractère + de ponctuation final)""" + chaine_texte = "" + for car in chaine: + if car in string.ascii_lowercase: + chaine_texte += car + if "ipc" in chaine: + print("ici") + if chaine_texte in DATA_MOTSCLES["commandes"]: + return chaine_texte + return None + +def ajoute_cmd_latex(chaine): + """ + Parse la chaine latex pour ajouter les abbréviations et les remplacer par + \\textabbrv{abreviation} + """ + mots = chaine.split(" ") + for (i, mot) in enumerate(mots): + champs = mot.split("\n") + for (j, champ) in enumerate(champs): + cmd = contient_commandes(champ) + if cmd: + champs[j] = champs[j].replace(cmd, "\\texttt{" + cmd + "}") + mots[i] = "\n".join(champs) + chaine = " ".join(mots) + return chaine class SAE: """Modélise une saé (chapeau) lorsqu'elle est extraite d'un yaml""" @@ -385,6 +419,9 @@ def md_to_latex(contenu): contenu = contenu.replace("\\\\" * 2, "\\\\[25pt]") if not contenu.endswith("\\end{itemize}"): contenu += "\\\\[3pt]" + + contenu = ajoute_cmd_latex(contenu) # détecte les commandes + return contenu @@ -759,7 +796,10 @@ def to_latex_matrice_coeffs(matrice_vols, matrice_coeffs, saes, ressources, sem) for (i, r) in enumerate(ressem): # pour chaque SAE chaine += "\\textcolor{ressourceC}{" + r.ressource["code"] + "} & " + "\n" chaine += "\\begin{tabular}{p{5.7cm}}" - chaine += "\\tiny{" + r.ressource["nom"] + "} \\end{tabular} & \n" + # chaine += "\hyperlink{res:" + r.ressource["code"] + "}{" + chaine += "\\tiny{" + r.ressource["nom"] + "}" + # chaine += "}" + chaine += " \\end{tabular} & \n" chaine += str_volume(matrice_vols[i + nbre_saes][0]) + " & " chaine += str_volume(matrice_vols[i + nbre_saes][1]) + " & " chaine += " & "