Détection des commandes (d'après motscles.yaml) pour mise en forme en texttt

This commit is contained in:
Cléo Baras 2021-04-15 19:16:48 +02:00
parent d529a09bd1
commit d975db9e40
6 changed files with 52 additions and 10 deletions

View File

@ -74,7 +74,7 @@ précédemment.\\[3pt]}
\item \item
Consulter et modifier les variables d'environnement Consulter et modifier les variables d'environnement
\item \item
Commandes réseau (wget, curl, ping, traceroute, netstat, nmap) Commandes réseau (wget, curl, \texttt{ping}, \texttt{traceroute}, netstat, \texttt{nmap})
\item \item
Initiation aux scripts pour l'automatisation de séquences de Initiation aux scripts pour l'automatisation de séquences de
commandes, aux structures de contrôle commandes, aux structures de contrôle

View File

@ -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, 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}. 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 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, poste client.On peut s'appuyer sur les commandes de base~: \texttt{ipconfig},
ifconfig, ip, ping, arp, traceroute, arp-scan (ArpCacheWatch sous \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.\\ 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} On peut faire découvrir les outils pour connaître son adresse \textabbrv{IP}
Publique par ex: \url{http://www.monip.org/} , 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~: les points d'accès à proximité ou les fréquences utilisées~:
\url{https://github.com/VREMSoftwareDevelopment/WiFiAnalyzer}.\\ \url{https://github.com/VREMSoftwareDevelopment/WiFiAnalyzer}.\\
Enfin, on pourra initier les étudiants les plus avancés à l'usage de la 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 (\url{https://nmap.org/}) pour découvrir (en interne) les ports ouverts
sur les équipements du réseau local domestique. Bien expliquer que 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 l'usage de cet outil de test de pénétration doit être réalisé en

View File

@ -20,7 +20,7 @@ réseau autonome réel ou simulé qui comportera quelques éléments actifs,
serveurs et clients opérationnels.\\ serveurs et clients opérationnels.\\
Cette étude permettra de se familiariser avec l'utilisation des Cette étude permettra de se familiariser avec l'utilisation des
principaux outils utilisés tout autant par les hackers que par les 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 metasploit, \ldots) afin d'exploiter les vulnérabilités volontairement
introduites dans la configuration.\\ introduites dans la configuration.\\
La maquette devra illustrer les techniques d'exploitations d'un nombre La maquette devra illustrer les techniques d'exploitations d'un nombre

View File

@ -134,7 +134,6 @@ else:
# Export latex des sae # Export latex des sae
for sem in saes: for sem in saes:
for s in saes[sem]: for s in saes[sem]:
fichierlatex = REPERTOIRE_LATEX_SAES + "/" + "{}.tex".format(s.sae["code"].replace("É", "E")) fichierlatex = REPERTOIRE_LATEX_SAES + "/" + "{}.tex".format(s.sae["code"].replace("É", "E"))
contenu = s.to_latex() contenu = s.to_latex()
with open(fichierlatex, "w", encoding="utf8") as fid: with open(fichierlatex, "w", encoding="utf8") as fid:

View File

@ -17,9 +17,12 @@ with open(Config.ROOT+"/python/pn/saes.yml", 'r', encoding="utf8") as fid:
## Les compétences ## Les compétences
with open(Config.ROOT+"/yaml/competences/RT123.yml", 'r', encoding="utf8") as fid: with open(Config.ROOT+"/yaml/competences/RT123.yml", 'r', encoding="utf8") as fid:
DATA_COMPETENCES = yaml.load(fid.read(), Loader=yaml.Loader) 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: with open(Config.ROOT+"/yaml/abbreviations.yml", "r", encoding="utf8") as fid:
DATA_ABBREVIATIONS = yaml.load(fid.read(), Loader=yaml.Loader) 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" AUCUN_PREREQUIS = "Aucun"

View File

@ -17,7 +17,7 @@ __LOGGER = logging.getLogger(__name__)
def nettoie_latex(chaine): def nettoie_latex(chaine):
"""Purge certains éléments de la chaine latex générée par pypandoc""" """Purge certains éléments de la chaine latex générée par pypandoc"""
chaine = chaine.replace("\\tightlist\n", "") 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 # detecte les espaces insécables
chaine = chaine.replace(" :", "~:") chaine = chaine.replace(" :", "~:")
@ -171,6 +171,9 @@ class Ressource:
def contient_abbr(chaine): 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 = [] mots = []
for lettre in DATA_ABBREVIATIONS: for lettre in DATA_ABBREVIATIONS:
for mot in DATA_ABBREVIATIONS[lettre]: for mot in DATA_ABBREVIATIONS[lettre]:
@ -183,7 +186,10 @@ def contient_abbr(chaine):
def ajoute_abbr_latex(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(" ") mots = chaine.split(" ")
for (i, mot) in enumerate(mots): for (i, mot) in enumerate(mots):
abbrs = contient_abbr(mot) abbrs = contient_abbr(mot)
@ -194,6 +200,34 @@ def ajoute_abbr_latex(chaine):
chaine = chaine.replace("/IP", "/\\textabbrv{IP}") chaine = chaine.replace("/IP", "/\\textabbrv{IP}")
return chaine 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: class SAE:
"""Modélise une saé (chapeau) lorsqu'elle est extraite d'un yaml""" """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]") contenu = contenu.replace("\\\\" * 2, "\\\\[25pt]")
if not contenu.endswith("\\end{itemize}"): if not contenu.endswith("\\end{itemize}"):
contenu += "\\\\[3pt]" contenu += "\\\\[3pt]"
contenu = ajoute_cmd_latex(contenu) # détecte les commandes
return contenu 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 for (i, r) in enumerate(ressem): # pour chaque SAE
chaine += "\\textcolor{ressourceC}{" + r.ressource["code"] + "} & " + "\n" chaine += "\\textcolor{ressourceC}{" + r.ressource["code"] + "} & " + "\n"
chaine += "\\begin{tabular}{p{5.7cm}}" 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][0]) + " & "
chaine += str_volume(matrice_vols[i + nbre_saes][1]) + " & " chaine += str_volume(matrice_vols[i + nbre_saes][1]) + " & "
chaine += " & " chaine += " & "