Portfolio de compétences

Malo
Guillou

Étudiant en BUT Informatique à l'IUT de Vannes.
En recherche d'alternance en cybersécurité pour 2026-2027.

Formation BUT Informatique - 2e année
IUT Vannes - Univ. Bretagne Sud
Objectif Alternance 2026-2027

Qui suis-je ?

Je suis Malo Guillou, étudiant en deuxième année de BUT Informatique à l'IUT de Vannes. Ce portfolio présente mes compétences acquises et en cours d'acquisition, à travers ma SAÉ de 2ème année (Droopy), mon stage à l'Université Bretagne Sud, et mes projets de 1ère année.

Passionné par la cybersécurité, je prépare une troisième année en alternance dans ce domaine pour 2026-2027. La spécialisation est déjà engagée dans ma formation actuelle à travers les ressources dédiées aux réseaux, à la cryptographie et à la sécurité des systèmes, et approfondie lors de mon stage sur le projet ST-EPS.

Parcours : baccalauréat général avec mention → BUT Informatique 1ère année (IUT de Lannion) → BUT Informatique 2ème année à l'IUT de Vannes.

Les 6 compétences du référentiel

Cliquez sur une compétence pour voir le détail des acquisitions critiques et des preuves issues de la SAÉ Droopy et du stage ST-EPS.

C1 - AC21.xx
Réaliser
Développer des applications informatiques simples à complexes
C2 - AC22.xx
⚙️
Optimiser
Appréhender et construire des algorithmes efficaces
C3 - AC23.xx
🔗
Administrer
Installer, configurer et maintenir des systèmes complexes
C4 - AC24.xx
🗄️
Gérer
Concevoir et administrer des bases de données
C5 - AC25.xx
📋
Conduire
Satisfaire les besoins des utilisateurs au regard de la chaîne de valeur
C6 - AC26.xx
🤝
Collaborer
Acquérir, développer et exploiter les aptitudes nécessaires pour travailler efficacement dans une équipe informatique

Réaliser - Développement d'applications

Développer, c'est-à-dire concevoir, coder, tester et intégrer une solution informatique pour un client.

Apprentissages critiques (BUT2)
  • AC21.01Élaborer et implémenter les spécifications fonctionnelles et non fonctionnelles à partir des exigences
  • AC21.02Appliquer des principes d'accessibilité et d'ergonomie
  • AC21.03Adopter de bonnes pratiques de conception et de programmation
  • AC21.04Vérifier et valider la qualité de l'application par les tests
Ressources mobilisées

R3.01 Développement web · R3.02 Développement efficace · R3.04 Qualité de développement · R4.01 Architecture logicielle · R4.02 Qualité de développement

SAÉ Droopy - Démarche

Comment ai-je conduit mon développement sur ce projet ?

J'ai pris en charge trois fonctionnalités : l'état pending des modules (attente des dépendances), l'affichage du manifeste binaire d'un module, et le verrouillage d'un module en cours d'utilisation. Pour chacune, j'ai d'abord rédigé une description du comportement attendu, discutée avec le groupe, avant l'implémentation en C sur STM32.
Stage ST-EPS - Démarche

Comment ai-je appliqué ces compétences lors du stage ?

En reprenant le projet ST-EPS (Node.js / Express / Pug / MySQL), j'ai d'abord mené un état des lieux complet du code existant : console.log sensibles, hardcoding dans plusieurs fichiers, double res.send, session.destroy sans await. J'ai ensuite refactorisé la gestion des tests établissement (logique rigide if/else if remplacée par un tableau dynamique), ajouté la page ajouterTest.pug et ses routes, et corrigé les bugs de déconnexion. Chaque correction a été documentée sous forme d'issue GitLab avant d'être implémentée.
Preuves - Droopy

Quelles traces justifient la maîtrise de ces AC ?

Code C sur STM32 avec machine d'états des modules · documentation Doxygen · commits nominatifs Git · rapport technique SAÉ.
Preuves - Stage ST-EPS

Quelles traces justifient la maîtrise de ces AC ?

Issues GitLab rédigées avant chaque correction · commits nominatifs sur le dépôt ST-EPS · page ajouterTest.pug et routes associées · rapport de stage décrivant la démarche d'état des lieux.

Optimiser - Algorithmes & performance

Proposer des applications informatiques optimisées en fonction de critères de temps d'exécution ou de consommation de ressources.

Apprentissages critiques (BUT2)
  • AC22.01Choisir des structures de données complexes adaptées au problème
  • AC22.02Utiliser des techniques algorithmiques adaptées pour des problèmes complexes
  • AC22.03Comprendre les enjeux et moyens de sécurisation des données et du code
  • AC22.04Évaluer l'impact environnemental et sociétal des solutions proposées
Ressources mobilisées

R3.02 Développement efficace · R3.03 Analyse · R4.04 Méthodes d'optimisation · R4.10 Cryptographie

SAÉ Droopy - Optimisation embarquée

Quels choix d'optimisation ai-je faits ?

Le contexte MCU STM32 imposait une représentation compacte de l'état pending par champ de bits, compatible avec les contraintes mémoire flash. L'allocateur best-fit de Droopy était un paramètre à respecter pour éviter la fragmentation lors du chargement de modules en attente.
Stage ST-EPS - Sécurisation du code (AC22.03)

Comment ai-je abordé la sécurisation des données et du code ?

Le chantier sécurité de ST-EPS était central : migration de SHA-256 vers bcrypt pour le hachage des mots de passe dans 13 fichiers de routes, suppression des recherches par mot de passe hashé en base, ajout de Helmet pour les en-têtes HTTP, implémentation de la protection CSRF via csrf-sync (tokens dans tous les formulaires Pug et les requêtes fetch JS), régénération de session après login pour contrer la fixation de session, et remplacement de MD5 par crypto.randomUUID() pour les identifiants.
Preuves - Droopy

Code C commenté avec structures de données choisies · section du rapport sur les contraintes mémoire STM32 · documentation Doxygen du Module Manager.
Preuves - Stage ST-EPS

Commits de migration bcrypt sur 13 fichiers · ajout helmet dans app.js · implémentation csrf-sync avec champs _csrf dans tous les formulaires · issue GitLab « Urgences sécurité » documentant chaque décision.

Administrer - Systèmes & réseaux

Installer, configurer, mettre à disposition, maintenir en conditions opérationnelles des infrastructures, des services et des réseaux.

Apprentissages critiques (BUT2)
  • AC23.01Concevoir et développer des applications communicantes
  • AC23.02Utiliser des serveurs et des services réseaux virtualisés
  • AC23.03Sécuriser les services et données d'un système
Ressources mobilisées

R3.05 Programmation système · R3.06 Architecture des réseaux · R4.08 Virtualisation · R4.10 Cryptographie · R4.11 Réseau avancé · R4.12 Sécurité système et réseaux

SAÉ Droopy - Communication LoRaWAN

Quelle dimension système/réseau ai-je abordée ?

Droopy repose sur LoRaWAN et The Things Network pour la communication entre le STM32 et le serveur de mise à jour. La sécurisation des modules par checksum SHA1 et signature RSA est au cœur du projet (AC23.03).
Stage ST-EPS - Déploiement et sécurisation (AC23.02 / AC23.03)

Comment ai-je abordé l'administration système lors du stage ?

Le déploiement de ST-EPS sur le serveur Eskemm Numérique est en cours : mise en place de Nginx en reverse proxy, obtention d'un certificat Let's Encrypt via Certbot sur le domaine st-eps.org (OVH), redirection HTTP → HTTPS, configuration du flag secure sur les cookies. Le flag HTTPS est une obligation RGPD (article 32). En parallèle, la centralisation de la configuration dans un fichier config.js unique et la création d'un middleware d'authentification centralisé améliorent la maintenabilité du service.
Preuves - Droopy

Schéma d'architecture Droopy (LoRaWAN → TTN → Update Provider → MCU) · code du composant Update Manager (vérification intégrité et authenticité).
Preuves - Stage ST-EPS

Configuration Nginx rédigée · certificat Let's Encrypt sur st-eps.org · rapport de stage décrivant la procédure de déploiement · issues GitLab « Phase 4 - POC & déploiement ».

Gérer - Données & bases de données

Concevoir, gérer, administrer et exploiter les données de l'entreprise et mettre à disposition toutes les informations pour un bon pilotage.

Apprentissages critiques (BUT2)
  • AC24.01Optimiser les modèles de données de l'entreprise
  • AC24.02Assurer la confidentialité des données (intégrité et sécurité)
  • AC24.03Organiser la restitution de données à travers la programmation et la visualisation
  • AC24.04Manipuler des données hétérogènes
Ressources mobilisées

R3.07 SQL · R3.08 Probabilités · R3.09 Cryptographie et sécurité · R3.10 Management des systèmes · R4.03 Qualité au-delà du relationnel

SAÉ Droopy - Manifeste binaire

Quelle gestion des données dans ce projet ?

Parsing du manifeste binaire de 100 octets de chaque module (type, ID, version, checksum SHA1, signature RSA, dépendances) stocké en flash LittleFS. Manipulation de données hétérogènes (entiers, tableaux de bytes, flags) directement en mémoire.
Stage ST-EPS - Sécurité et intégrité des données (AC24.02)

Comment ai-je assuré la confidentialité des données dans ST-EPS ?

ST-EPS stocke des données de performance sportive d'élèves mineurs - potentiellement qualifiées de données de santé au sens du RGPD. J'ai migré le stockage des mots de passe de SHA-256 vers bcrypt, supprimé le stockage du mot de passe en clair dans la session (req.session.pass utilisé comme credential MySQL), et identifié la nécessité de créer deux comptes MySQL de service (svc_etablissement, svc_enseignant) avec des permissions strictes. La réflexion sur la politique de conservation des données (durées, base légale) a été formalisée dans les issues RGPD du projet.
Preuves - Droopy

Code C de parsing du manifeste · captures d'affichage sur terminal · SAÉ 1.04 et 2.04 comme preuves complémentaires de BUT1.
Preuves - Stage ST-EPS

Commits de migration bcrypt · suppression de req.session.pass · issues GitLab « Phase 6 - RGPD & conformité » · rapport de stage sur la politique de conservation des données.

Conduire - Gestion de projet

Satisfaire les besoins des utilisateurs au regard de la chaîne de valeur du client, organiser et piloter un projet informatique.

Apprentissages critiques (BUT2)
  • AC25.01Identifier les processus présents dans une organisation en vue d'améliorer les systèmes d'information
  • AC25.02Formaliser les besoins du client et de l'utilisateur
  • AC25.03Identifier les critères de faisabilité d'un projet informatique
  • AC25.04Définir et mettre en œuvre une démarche de suivi de projet
Ressources mobilisées

R3.11 Droit des contrats du numérique · R3.12 Anglais · R4.07 Projet personnel et professionnel · R4.09 Management avancé des SI · R4.02 Qualité de développement

SAÉ Droopy - Organisation

Comment le projet a-t-il été organisé et suivi ?

Reprise d'une plateforme existante documentée dans un article IEEE (DCOSS-IoT 2025), avec répartition des tâches entre les 6 membres. J'ai pris en charge les fonctionnalités liées à l'état pending et à l'affichage des modules de façon autonome, en assurant la cohérence avec l'architecture globale.
Stage ST-EPS - Pilotage autonome (AC25.02 / AC25.04)

Comment ai-je organisé et piloté le stage seul ?

Sans mission prédéfinie, j'ai construit moi-même la feuille de route du stage : état des lieux du code, identification des priorités (qualité, sécurité, déploiement, tests utilisateurs, documentation, RGPD), découpage en 7 phases et rédaction d'issues GitLab pour chaque tâche. J'ai formalisé les besoins des enseignants EPS (scénarios de tests utilisateurs prévus avec des professeurs du collège Jean-Loup Chrétien de Questembert) et identifié les critères de faisabilité du déploiement (disponibilité du serveur Eskemm, accès DNS OVH, domaine st-eps.org).
Preuves - Droopy

Répartition des tâches dans le wiki du projet · historique Git · rapport technique SAÉ.
Preuves - Stage ST-EPS

Issues GitLab organisées en 7 phases · feuille de route rédigée · rapport de stage · scénarios de tests utilisateurs préparés.

Collaborer - Travail en équipe

Acquérir, développer et exploiter les aptitudes nécessaires pour travailler efficacement dans une équipe informatique.

Apprentissages critiques (BUT2)
  • AC26.01Identifier ses aptitudes pour travailler dans une équipe
  • AC26.02Développer une communication efficace et collaborative
  • AC26.03Rendre compte de son activité professionnelle
  • AC26.04Comprendre la diversité, la créativité et l'hétérogénéité des équipes
Ressources mobilisées

R3.12 Anglais · R3.13 Communication professionnelle · R3.14 Projet personnel et professionnel · R4.05 Anglais · R4.06 Communication interne

SAÉ Droopy - Équipe de 6

Comment ai-je collaboré dans cette équipe ?

Documentation Doxygen, contribution au README et wiki partagé, participation à la rédaction du rapport technique. Communication entièrement liée à un projet en anglais dès le départ.
Stage ST-EPS - Rendre compte en autonomie (AC26.03)

Comment ai-je rendu compte de mon activité en stage ?

Seul sur le projet, j'ai structuré ma communication avec le tuteur de stage via des points réguliers, des issues GitLab détaillées (état, blocages, décisions), et un rapport de stage en cours de rédaction. J'ai également interagi avec des interlocuteurs externes : Médéric Lezement d'Eskemm Numérique pour les accès serveur, David Matelot pour les accès DNS et la coordination avec les enseignants EPS. La documentation technique (README, guide utilisateur, guide de configuration) constitue une autre forme de rendu compte destinée aux futurs développeurs et aux utilisateurs.
Preuves - Droopy

Historique Git nominatif · documentation Doxygen · pages wiki · rapport collectif SAÉ.
Preuves - Stage ST-EPS

Issues GitLab rédigées et tenues à jour · rapport de stage · README et documentation mis à jour · échanges avec tuteur et partenaires externes.
Projets & SAÉ

Situations d'apprentissage

Stage - Université Bretagne Sud Avr – Juin 2026 · 8 semaines

Contexte Titre Technologies Compétences Lien
Stage BUT2 ST-EPS - Plateforme web de suivi des tests EPS pour enseignants de collège et lycée
Reprise et amélioration du projet : audit qualité du code · migration SHA-256 → bcrypt · protection CSRF · headers Helmet · régénération de session · déploiement Nginx + HTTPS (Let's Encrypt) · documentation · tests utilisateurs enseignants EPS
Node.js Express JavaScript Pug MySQL Nginx Linux GitLab Réaliser Optimiser Administrer Gérer Conduire Collaborer GitHub

BUT 2ème année - IUT de Vannes 2025-2026

SAÉ Titre Technologies Compétences Lien
SAÉ BUT2 Droopy - Plateforme embarquée de mise à jour modulaire de firmware
Contributions : état pending des modules · affichage des infos d'un module · verrouillage d'un module en cours d'utilisation · documentation (Doxygen, README, wiki, rapport)
C STM32 LoRaWAN VSCode Doxygen Réaliser Optimiser Administrer Gérer Conduire Collaborer GitHub

BUT 1ère année - IUT de Lannion 2024-2025

SAÉ Titre Technologies Compétences Lien
SAÉ 1.01 Implémentation d'un besoin client - Snake en C C Réaliser GitHub
SAÉ 1.02 Comparaison d'approches algorithmiques - Snake automatisé C Optimiser GitHub
SAÉ 1.03 Installation d'un poste de développement Docker / Linux LinuxDocker Administrer GitHub
SAÉ 1.04 Création d'une base de données - Ligue 1 football PostgreSQL Gérer GitHub
SAÉ 1.05 Site web pour les JO Paris 2024 HTMLCSSJS Réaliser GitHub
SAÉ 1.06 Environnement économique - Analyse d'entreprise - Conduire -
SAÉ 2.01 Application d'horaires - EllaDanse Java RéaliserConduire GitHub
SAÉ 2.02 Exploration algorithmique Python Optimiser GitHub
SAÉ 2.03 Services réseau - Serveur Apache sur Linux ApacheLinux Administrer GitHub
SAÉ 2.04 Exploitation d'une base de données - Parcoursup MySQLSQL Gérer GitHub
SAÉ 2.05 Gestion de projet informatique complet GitGantt Conduire GitHub
SAÉ 2.06 Travail d'équipe - Journée teambuilding - Collaborer GitHub

Questions du portfolio

Les quatre questions sont traitées pour les deux expériences : la SAÉ Droopy (BUT 2ème année) et le stage ST-EPS à l'Université Bretagne Sud (27 avril – 19 juin 2026).

1. Démarches, prises de décisions et implication

SAÉ Droopy + Stage ST-EPS - BUT 2ème année
SAÉ Droopy

Le projet Droopy était une reprise et une amélioration d'une plateforme existante de mise à jour modulaire de firmware embarqué. Avant d'écrire la moindre ligne de code, j'ai passé un temps significatif à comprendre l'architecture : six composants (Bootstrapper, Module Manager, Dynamic Loader, Memory Allocator, Update Manager, Update Provider), chacun indépendant, avec un cycle de vie précis pour chaque module.

Une fois l'architecture assimilée, j'ai pris en charge trois fonctionnalités de façon autonome :

  • L'état pending des modules : un module qui dépend d'autres non encore chargés doit attendre. J'ai défini les conditions de transition et implémenté la logique dans le Module Manager.
  • L'affichage des informations d'un module : lecture et présentation du manifeste binaire de 100 octets (type, ID, version, checksum SHA1, signature, dépendances).
  • Le verrouillage d'un module en cours d'utilisation : empêcher qu'un module actif soit déchargé, avec vérification d'état avant toute opération.
Stage ST-EPS - Université Bretagne Sud

Le stage m'a placé en situation entièrement autonome : reprendre seul un projet Node.js / Express existant, sans mission prédéfinie, avec pour objectif de l'améliorer, le sécuriser et le déployer. La première décision a été de réaliser un audit complet du code avant de toucher quoi que ce soit : console.log de données sensibles en production, mots de passe hachés en SHA-256, logique de tests rigide codée en dur, session détruite sans await, double envoi de réponse HTTP dans deux routes.

À partir de cet état des lieux, j'ai construit moi-même une feuille de route en 7 phases (qualité, sécurité urgente, sécurité applicative, déploiement, documentation, RGPD, tests utilisateurs) et rédigé des issues GitLab pour chaque tâche, en distinguant ce qui était fait, en cours, bloqué ou à planifier. Les décisions techniques ont toutes été prises de façon autonome : choix de csrf-sync plutôt que csrf-csrf (incompatibilité avec express-session découverte en pratique), choix de crypto.randomUUID() pour remplacer MD5, architecture du middleware d'auth centralisé à construire sur le modèle déjà présent dans classes.js.

2. Ressources choisies et combinées

SAÉ Droopy + Stage ST-EPS - BUT 2ème année
SAÉ Droopy

Ce projet m'a demandé de combiner des ressources très différentes :

  • R4.01 Architecture logicielle pour la décomposition en modules indépendants.
  • R4.10 Cryptographie et R3.09 Cryptographie et sécurité pour la signature RSA et le checksum SHA1.
  • R3.05 Programmation système pour manipuler la mémoire flash et le code embarqué C bas niveau.
  • R4.05 Anglais indispensable : toute la documentation, l'article IEEE et les commentaires de code étaient en anglais.
Stage ST-EPS

Le stage a mobilisé un spectre de ressources encore plus large, car les domaines abordés étaient nouveaux :

  • R4.12 Sécurité système et réseaux et R3.09 Cryptographie et sécurité : fondement de toute la phase 2 (bcrypt, CSRF, session fixation, Helmet, HTTPS).
  • R4.08 Virtualisation et R4.11 Réseau avancé : nécessaires pour comprendre le déploiement Nginx en reverse proxy et la configuration Let's Encrypt.
  • R3.11 Droit des contrats du numérique : mobilisé pour la réflexion RGPD sur la conservation des données de performance d'élèves mineurs.

En dehors des ressources de cours, j'ai utilisé la documentation officielle d'Express, de Sequelize, de csrf-sync et de Helmet, les guides Certbot et Let's Encrypt pour Nginx, la documentation MySQL sur la gestion des privilèges, et les forums communautaires pour diagnostiquer l'incompatibilité de csrf-csrf avec express-session.

3. Justification de la maîtrise des apprentissages visés

SAÉ Droopy + Stage ST-EPS - preuves par AC
SAÉ Droopy
  • AC21.01 : description écrite de l'état pending et de ses transitions dans le wiki avant implémentation.
  • AC21.03 : code C annoté Doxygen, fonctions à responsabilité unique, commentaires sur les conditions de verrouillage.
  • AC22.01 : représentation compacte de l'état du module cohérente avec les contraintes mémoire STM32.
  • AC24.04 : parsing du manifeste binaire de 100 octets (entiers, SHA1, signature RSA, flags).
  • AC26.02 : documentation Doxygen, pages wiki, participation au rapport collectif en anglais et français.
Stage ST-EPS
  • AC21.03 (bonnes pratiques) : suppression des console.log de production, correction du double res.send, ajout du await manquant sur session.destroy - chaque correction documentée en issue GitLab.
  • AC22.03 (sécurisation des données) : migration bcrypt sur 13 fichiers, protection CSRF complète (formulaires Pug + fetch JS), régénération de session, Helmet, remplacement des identifiants MD5 par UUID - chantier le plus conséquent du stage.
  • AC23.03 (sécuriser un système) : déploiement HTTPS Nginx + Let's Encrypt sur st-eps.org, activation du flag secure sur les cookies.
  • AC24.02 (confidentialité des données) : identification des données de santé potentielles (performances sportives d'élèves), formalisation d'une politique de conservation, suppression de req.session.pass.
  • AC25.04 (suivi de projet) : feuille de route en 7 phases, issues GitLab avec statuts (fermée / en cours / bloquée / à faire), points réguliers avec le tuteur.
  • AC26.03 (rendre compte) : rapport de stage, documentation technique mise à jour, communication avec les interlocuteurs externes (Eskemm, OVH).

4. Ressources manquantes et ce que je changerais

SAÉ Droopy + Stage ST-EPS - retour critique
SAÉ Droopy

Trois lacunes principales ont ralenti mon travail : le C embarqué bas niveau, l'anglais technique (article IEEE, documentation d'architecture), et les notions d'architecture modulaire dynamique (chargement, résolution de symboles, allocation best-fit). Si c'était à refaire, je consacrerais une semaine entière à lire et annoter l'article de référence avant de toucher au code, et j'aurais proposé plus tôt une cartographie collective des interfaces entre composants.

Stage ST-EPS

Deux lacunes m'ont freiné :

  • L'écosystème Node.js / Express en profondeur : je connaissais JavaScript, mais pas les subtilités d'Express (middleware pipeline, gestion des sessions, ORM Sequelize). Il m'a fallu du temps pour comprendre pourquoi csrf-csrf était incompatible avec express-session et migrer vers csrf-sync - une demi-journée qui aurait pu être évitée avec une meilleure connaissance préalable de l'écosystème.
  • Le déploiement et l'administration Linux en conditions réelles : configurer Nginx, obtenir un certificat Let's Encrypt, gérer les accès serveur via VPN, configurer les droits MySQL - autant de tâches que je n'avais pratiquées qu'en local ou en TP. La dépendance à des tiers (accès Eskemm, DNS OVH) a aussi introduit des blocages que je n'avais pas anticipés dans ma feuille de route initiale.

Si c'était à refaire, j'aurais consacré les deux premiers jours à un déploiement en local complet (Nginx + HTTPS autosigné + PM2) avant d'aborder la production, pour ne pas découvrir les difficultés de déploiement en même temps que les difficultés d'accès au serveur cible. J'aurais aussi intégré dès le début les délais liés aux tiers dans ma feuille de route.

Discutons

Disponible pour une alternance en cybersécurité à partir de septembre 2026. N'hésitez pas à me contacter.

"La cybersécurité n'est pas un produit, c'est un processus."
- Bruce Schneier

Ce portfolio présente mon parcours en BUT Informatique et les compétences développées à travers la SAÉ Droopy, le stage ST-EPS à l'Université Bretagne Sud, et les projets de première année.

- Vannes, 2026