2016-01-25 02:09:22 +00:00
<!DOCTYPE html>
< html ng-app = "FICApp" >
< head >
< meta charset = "utf-8" >
2016-10-13 17:11:34 +00:00
< title > Challenge Forensic< / title >
2017-12-14 03:08:43 +00:00
< meta name = "viewport" content = "width=device-width, initial-scale=1, shrink-to-fit=no" >
2016-01-25 02:09:22 +00:00
< meta http-equiv = "X-UA-Compatible" content = "IE=edge" >
< link rel = "shortcut icon" type = "image/x-icon" href = "/favicon.ico" >
< meta name = "author" content = "EPITA Laboratoire SRS" >
< meta name = "robots" content = "all" >
< base href = "/" >
2017-12-14 03:08:43 +00:00
< link href = "/css/bootstrap.min.css" type = "text/css" rel = "stylesheet" media = "screen" >
2017-12-17 16:12:51 +00:00
< link href = "/css/glyphicon.css" type = "text/css" rel = "stylesheet" media = "screen" >
2017-12-14 03:08:43 +00:00
< link href = "/css/fic.css" type = "text/css" rel = "stylesheet" media = "screen" >
2016-01-25 02:09:22 +00:00
< script src = "/js/angular.min.js" > < / script >
< / head >
2017-12-17 19:44:23 +00:00
< body class = "bg-light bg-public" style = "overflow: hidden;" class = "container-fluid" ng-controller = "DataController" >
2017-12-14 03:08:43 +00:00
< div class = "row" style = "margin:10px 0" >
< div class = "col-8" >
2017-03-31 17:47:48 +00:00
< noscript >
< div class = "alert alert-danger" >
< strong > Veuillez activer le JavaScript.< / strong > Ce site requiert un navigateur interprêtant le JavaScript pour fonctionner. Veuillez l'activer ou en télécharger un supportant cette technologie.
2017-01-15 22:56:28 +00:00
< / div >
2017-03-31 17:47:48 +00:00
< / noscript >
2016-01-25 02:09:22 +00:00
2017-12-17 15:07:04 +00:00
< div ng-repeat = "(k,s) in scene" class = "repeatedd-item" style = "margin-bottom: 15px;" >
2016-01-25 02:09:22 +00:00
2017-12-17 19:44:23 +00:00
< div class = "card" ng-if = "s.type == 'welcome' && !s.params.hide && s.params.kind == 'teams'" >
2017-12-14 03:08:43 +00:00
< div class = "card-body" >
2017-12-17 19:44:23 +00:00
< h1 ng-if = "!s.params.notitle" > Bienvenue au challenge forensic !< / h1 >
2017-12-14 03:08:43 +00:00
< p class = "lead text-justify" >
Avant de vous installer, venez récupérer votre clef USB auprès
de notre équipe. Elle contient le certificat qui vous permettra
de vous authentifier auprès de notre serveur.
< / p >
< p class = "lead text-justify" >
Une fois connecté au réseau, contactez notre serveur sur :
< span style = "display: block; font-size: 200%" class = "text-center" >
< a style = "font-family: mono" href = "https://fic.srs.epita.fr/" > < span class = "text-info" > https://fic.srs.epita.fr/< / span > < / a >
< / span >
< / p >
< / div >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
2017-12-17 19:44:23 +00:00
< div class = "card border-{{s.params.color}}" ng-if = "s.type == 'countdown' && !s.params.hide" >
< div class="card-header bg-{{s.params.color}} text-white" ng-if="s.params.title">
< h3 style = "margin:0" > < strong ng-bind = "s.params.title" > < / strong > < / h3 >
< / div >
< div ng-controller = "CountdownController" ng-init = "s.params.end?init(s.params.end):initT(startAt)" >
< div class = "card-body text-center" style = "font-size: 450%;" ng-if = "duration > 0" > {{ duration / 60 | time }} < span class = "point" > :< / span > {{ duration % 60 | time }}< / div >
< div class = "card-body text-center" style = "font-size: 450%;" ng-if = "!duration || duration <= 0" > {{ s.params.lead }}< / div >
2016-01-25 02:09:22 +00:00
< / div >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
2017-12-14 03:08:43 +00:00
< div class = "card" ng-if = "s.type == 'welcome' && !s.params.hide && s.params.kind == 'public'" >
< div class = "card-body" >
2017-12-17 19:44:23 +00:00
< h1 ng-if = "!s.params.notitle" > Bienvenue au challenge forensic !< / h1 >
2017-12-14 03:08:43 +00:00
< p class = "lead text-justify" >
Durant ce challenge, les équipes doivent < strong > remonter des scénarii
d'attaques< / strong > auxquels nos systèmes d'information < strong > font faces
chaque jour< / strong > : fuite de données, compromission d'un poste de
travail, exploitation de vulnérabilités d'un site web, ...
< / p >
< p class = "lead text-justify" >
Pour valider un challenge, chaque participant va télécharger :
soit des < strong > journaux d'évènements< / strong > , des extraits de trafic réseau
ou même des < strong > copies< / strong > figées < strong > de la mémoire vive< / strong > de machines
malveillantes, pour < strong > essayer de comprendre< / strong > comment l'attaquant a
< strong > contourné la sécurité< / strong > de la machine et quelles actions hostiles
ont été effectuées.
< / p >
< / div >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
2017-12-14 03:08:43 +00:00
< div class = "card" ng-if = "s.type == 'message' && !s.params.hide" >
< div class = "card-body" >
2017-12-17 19:44:23 +00:00
< h1 ng-if = "s.params.title" > < strong ng-bind = "s.params.title" > < / strong > < / h1 >
< p ng-if = "s.params.lead" class = "lead text-justify" ng-bind = "s.params.lead" > < / p >
2017-12-14 03:08:43 +00:00
< p ng-bind-html = "s.params.html" ng-if = "s.params.html" > < / p >
2017-12-17 19:44:23 +00:00
< p ng-if = "s.params.text" ng-bind = "s.params.text" > < / p >
2017-12-14 03:08:43 +00:00
< / div >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
2017-12-17 19:44:23 +00:00
< div class = "card border-{{ s.params.color }}" ng-if = "s.type == 'panel' && !s.params.hide" >
< div class = "card-header bg-{{ s.params.color }} text-white" ng-if = "s.params.title" >
< h3 style = "margin:0" ng-bind = "s.params.title" > < / h3 >
< / div >
< div class = "card-body" ng-if = "s.params.text || s.params.lead" >
< h4 ng-if = "s.params.lead" class = "card-title text-justify" ng-bind = "s.params.lead" > < / h4 >
< p class = "card-text" ng-bind = "s.params.text" > < / p >
2016-01-25 02:09:22 +00:00
< / div >
2017-12-14 03:08:43 +00:00
< div class = "card-body" ng-if = "s.params.html" ng-bind-html = "s.params.html" > < / div >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
2017-12-14 03:08:43 +00:00
< div class = "card" ng-if = "s.type == 'exercice' && !s.params.hide" >
< div class = "card-body" >
< p class = "lead" >
< strong > Challenge < em > {{ themes[my.exercices[s.params.exercice].theme_id].exercices[s.params.exercice].title }}< / em > du thème {{ themes[my.exercices[s.params.exercice].theme_id].name }}< / strong >
< small class = "authors" ng-if = "themes[my.exercices[s.params.exercice].theme_id].authors" > par {{ themes[my.exercices[s.params.exercice].theme_id].authors }}< / small >
< / p >
< p ng-bind-html = "my.exercices[s.params.exercice].statement" > < / p >
< ul class = "list-inline" >
< li > Rapporte < ng-pluralize count = "themes[my.exercices[s.params.exercice].theme_id].exercices[s.params.exercice].gain" when = "{'0': 'aucun point', 'one': '{} point', 'other': '{} points'}" > < / ng-pluralize > < / li >
< li > < ng-pluralize count = "my.exercices[s.params.exercice].files.length" when = "{'0': 'Aucun fichier disponible', 'one': '{} fichier disponible', 'other': '{} fichiers disponibles'}" > < / ng-pluralize > < / li >
< li ng-if = "my.exercices[s.params.exercice].hints.length" > < ng-pluralize count = "my.exercices[s.params.exercice].hints.length" when = "{'0': 'Aucun indice disponible', 'one': '{} indice disponible', 'other': '{} indices disponibles'}" > < / ng-pluralize > < / li >
< li > Tenté par < ng-pluralize count = "themes[my.exercices[s.params.exercice].theme_id].exercices[s.params.exercice].tried" when = "{'0': 'aucune équipe', 'one': '{} équipe', 'other': '{} équipes'}" > < / ng-pluralize > < / li >
< li > < ng-pluralize count = "my.exercices[s.params.exercice].solved_number" when = "{'0': 'aucun tentative', 'one': '{} tentative', 'other': '{} tentatives'}" > < / ng-pluralize > < / li >
< li > Résolu par < ng-pluralize count = "themes[my.exercices[s.params.exercice].theme_id].exercices[s.params.exercice].solved" when = "{'0': 'aucune équipe', 'one': '{} équipe', 'other': '{} équipes'}" > < / ng-pluralize > < / li >
< / ul >
< / div >
2017-03-31 17:47:48 +00:00
< / div >
2017-12-17 19:44:23 +00:00
< div ng-if = "s.type == 'table' && !s.params.hide" >
< table class = "table table-striped table-sm" >
2016-01-25 02:09:22 +00:00
< thead >
2017-12-17 19:44:23 +00:00
< tr class = "text-light" >
2017-03-31 17:47:48 +00:00
< th class = "frotated" > < / th >
2017-12-17 19:44:23 +00:00
< th class = "rotated" ng-repeat = "(tid,th) in themes" ng-if = "s.params.themes.indexOf(tid-0) !== -1" > < div class = "bg-dark" > < span > {{ th.name }}< / span > < / div > < / th >
2016-01-25 02:09:22 +00:00
< / tr >
< / thead >
2017-12-17 19:44:23 +00:00
< tbody class = "table-bordered bg-secondary text-dark" ng-if = "s.params.kind == 'levels'" >
< tr ng-repeat = "lvl in [1,2,3,4,5,6,7,8,9,10]" >
2017-03-31 17:47:48 +00:00
< th class = "text-center" > < nobr > Niveau {{ lvl }}< / nobr > < / th >
< td ng-repeat = "(tid,th) in themes" class = "text-center" ng-if = "s.params.themes.indexOf(tid-0) !== -1" >
< span ng-repeat = "exercice in th.exercices" ng-if = "$index == lvl-1 && (exercice.tried || lvl == 1)" ng-class = "{'text-primary': exercice.solved == 0, 'text-success': exercice.solved >= 1, 'text-bold': exercice.solved >= 1, 'text-warning': exercice.solved == 0 && exercice.tried}" >
< span ng-if = "exercice.solved" > {{ exercice.solved }}< / span >
< span ng-if = "!exercice.solved" > {{ exercice.tried }}< / span >
< / span >
< / td >
2016-01-25 02:09:22 +00:00
< / tr >
< / tbody >
2017-12-17 19:44:23 +00:00
< tbody class = "table-bordered bg-secondary text-dark" ng-if = "s.params.kind == 'teams'" >
2017-03-31 17:47:48 +00:00
< tr ng-repeat = "team in rank | orderBy: 'rank' | limitTo: s.params.limit: s.params.begin" ng-if = "s.params.teams.indexOf(team.id-0) !== -1" ng-controller = "TeamController" >
< th class = "text-center" > {{ team.rank }}< sup ng-if = "team.rank == 1" > er< / sup > < sup ng-if = "team.rank > 1" > e< / sup > < br > < span style = "text-overflow: ellipsis; display: inline-block; width: 82px;overflow: hidden;" > {{ team.name }}< / span > < / th >
< td ng-repeat = "(tid,th) in themes" class = "text-center" ng-if = "mystats && s.params.themes.indexOf(tid-0) !== -1" >
< span ng-class = "{'text-success': mystats.themes[tid].solved}" > {{ mystats.themes[tid].solved }}/{{ mystats.themes[tid].total }}< / span >
< span ng-class = "{'text-warning': mystats.themes[tid].solved < mystats.themes[tid].tried}" > ({{ mystats.themes[tid].tries }})< / span >
< / td >
< / tr >
< / tbody >
< tfoot ng-if = "s.params.total" ng-init = "team={id:0}" >
< tr ng-controller = "TeamController" >
2017-12-17 19:44:23 +00:00
< td class = "text-right text-dark" >
2017-03-31 17:47:48 +00:00
< span ng-if = "s.params.kind == 'levels'" > Résolus< / span >
< span ng-if = "s.params.kind == 'teams'" > Total résolus< / span > < br >
Tentatives
< / td >
2017-12-17 19:44:23 +00:00
< td class = "table-bordered bg-dark" ng-repeat = "(tid,th) in themes" class = "text-center" ng-if = "mystats && s.params.themes.indexOf(tid-0) !== -1" >
2017-03-31 17:47:48 +00:00
< strong > {{ mystats.themes[tid].solved }}< / strong > < br >
{{ mystats.themes[tid].tries }}
< / td >
< / tr >
< / tfoot >
2016-01-25 02:09:22 +00:00
< / table >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
2017-12-14 03:08:43 +00:00
< div class = "card" ng-if = "s.type == 'rank' && !s.params.hide" >
2017-12-17 15:07:04 +00:00
< table class = "table table-bordered table-striped table-sm" >
2017-12-17 19:44:23 +00:00
< thead class = "thead-dark" >
2016-01-25 02:09:22 +00:00
< tr >
< th class = "text-right" > Place< / th >
< th > Équipe< / th >
< th > Score< / th >
< / tr >
< / thead >
2017-03-31 17:47:48 +00:00
< tbody ng-if = "s.params.which == 'general'" >
< tr ng-repeat = "r in rank | orderBy: 'rank' | limitTo: s.params.limit: s.params.begin" >
< th class = "text-right" > {{ r.rank }}< sup ng-if = "r.rank == 1" > er< / sup > < sup ng-if = "r.rank > 1" > e< / sup > < / th >
2016-01-25 02:09:22 +00:00
< td > {{ r.name }}< / td >
< td > {{ r.score }}< / td >
< / tr >
< / tbody >
< / table >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
< / div >
2017-03-31 17:47:48 +00:00
< / div >
2016-01-25 02:09:22 +00:00
2017-12-14 03:08:43 +00:00
< div class = "col-4" >
2016-01-25 02:09:22 +00:00
2017-03-31 17:47:48 +00:00
< div ng-controller = "EventsController" >
< div ng-repeat = "e in events | limitTo: 7" class = "repeated-item" >
2016-01-25 02:09:22 +00:00
< div class = "alert" ng-class = "e.kind" >
< div class = "heading" > {{ e.since | since }}< / div >
< span ng-bind-html = "e.txt" > < / span >
< / div >
< / div >
2017-12-17 15:07:04 +00:00
< div style = "box-shadow: 0px -5px 5px 5px #e9ecef; position: fixed; bottom: calc(14vh - 1px); right: 0; width: 33vw;" class = "navbar bg-light" ng-controller = "TimeController" >
2017-11-10 19:23:08 +00:00
< div class = "text-center" ng-if = "time.hours === 0 || time.hours" style = "margin-top: -5px;" >
2017-03-31 17:47:48 +00:00
< div id = "clock" ng-class = "{expired: time.expired, end: time.end}" style = "font-size: 50px" ng-cloak >
< span id = "hours" > {{ time.hours | time }}< / span >
< span class = "point" > :< / span >
< span id = "min" > {{ time.minutes | time }}< / span >
< span class = "point" > :< / span >
< span id = "sec" > {{ time.seconds | time }}< / span >
< / div >
< div style = "font-size: 18px; margin-top: -15px; text-shadow: 0 0 6px #446688;" >
< span ng-if = "!time.end && time.duration != time.remaining" > Temps restant du challenge forensic< / span >
< span ng-if = "!time.end && time.duration == time.remaining" > Le challenge forensic va bientôt commencer !< / span >
< span ng-if = "time.end" > Le challenge forensic est terminé !< / span >
< / div >
< / div >
< div id = "clock" class = "col-sm-6" ng-if = "!(time.hours === 0 || time.hours)" >
{{ time.start | date:"shortDate" }}
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div style = "position: fixed; bottom: 0; right: 0; width: 33vw; height: 14vh" class = "bg-primary" >
< div class = "carousel slide" id = "carousel-logos" data-ride = "carousel" data-interval = "10500" >
2017-03-31 17:47:48 +00:00
< div class = "carousel-inner" >
2017-12-17 19:44:23 +00:00
< div class = "carousel-item" >
2017-03-31 17:47:48 +00:00
< div class = "carousel-caption" >
2017-12-14 03:08:43 +00:00
< a href = "http://www.epita.fr/" > < img src = "/img/epita.png" alt = "Epita" style = "max-height:14vh" > < / a >
< img src = "/img/rcc.png" alt = "Réserve Citoyenne Cyberdéfense" style = "height:14vh" >
2017-03-31 17:47:48 +00:00
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "carousel-item" >
< div class = "carousel-caption" >
2017-12-17 19:44:23 +00:00
< h2 style = "margin: 17px" > Bienvenue au challenge forensic !< / h2 >
2017-03-31 17:47:48 +00:00
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "carousel-item" >
2017-03-31 17:47:48 +00:00
< div class = "carousel-caption" >
2017-12-14 03:08:43 +00:00
< p class = "text-justify text-bold" style = "padding: 5px 16px; font-size: 111%" >
2017-03-31 17:47:48 +00:00
Ce challenge met en scène des scénarii d'attaques auxquels
nos systèmes d'information font faces chaque jour.
< / p >
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "carousel-item" >
2017-03-31 17:47:48 +00:00
< div class = "carousel-caption" >
< p class = "text-justify text-bold" style = "padding: 20px 16px; font-size: 111%" >
Les 42 équipes doivent, en 4 heures, retracer les attaques à la
recherche des données exfiltrées.
< / p >
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "carousel-item" >
< div class = "carousel-caption row" style = "padding: 10px" >
< div class = "col-4" >
< a href = "https://srs.epita.fr/" > < img src = "/img/srs.png" alt = "Laboratoire SRS" style = "height:12vh" > < / a >
2017-03-31 17:47:48 +00:00
< / div >
2017-12-14 03:08:43 +00:00
< p class = "col-8 text-bold" style = "font-size: 111%" >
2017-03-31 17:47:48 +00:00
Les challenges ont été réalisés par les étudiants de la
2017-12-14 03:08:43 +00:00
spécialisation SRS de l'Épita.
2017-03-31 17:47:48 +00:00
< / p >
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "carousel-item" >
2017-03-31 17:47:48 +00:00
< div class = "carousel-caption row" style = "padding: 12px" >
2017-12-14 03:08:43 +00:00
< div class = "col-4" >
2017-03-31 17:47:48 +00:00
< img src = "/img/rcc.png" alt = "Réserve Citoyenne Cyberdéfense" style = "max-width:100%; max-height: 11vh" >
< / div >
2017-12-14 03:08:43 +00:00
< p class = "col-8 text-bold" style = "padding: 10px 10px 10px 0; font-size: 111%" >
2017-03-31 17:47:48 +00:00
Avec le parrainage du réseau de la Réserve Citoyenne Cyberdéfense
< / p >
< / div >
< / div >
2017-12-17 19:44:23 +00:00
< div class = "carousel-item active" >
< div class = "carousel-caption" >
< table class = "table table-sm table-striped" >
2017-03-31 17:47:48 +00:00
< tbody >
< tr >
< td > 11 h< / td >
< td > Accueil des équipes< / td >
< / tr >
< tr >
< td > 11 h 30< / td >
< td > Début du challenge< / td >
< / tr >
< tr >
< td > 15 h 30< / td >
< td > Fin du challenge< / td >
< / tr >
< tr >
< td > 16 h 00< / td >
< td > Remise des prix< / td >
< / tr >
< / tbody >
< / table >
< / div >
< / div >
2017-12-14 03:08:43 +00:00
< div class = "carousel-item" >
2017-03-31 17:47:48 +00:00
< div class = "carousel-caption row" style = "padding: 12px" >
2017-12-14 03:08:43 +00:00
< p class = "text-bold" style = "padding: 5px;" >
Retrouvez les solutions des challenges dès demain sur :
2017-03-31 17:47:48 +00:00
< span style = "display: block; font-size: 150%" class = "text-center" >
< a style = "font-family: mono" href = "https://fic.srs.epita.fr/" > < span class = "text-info" > https://fic.srs.epita.fr/< / span > < / a >
< / span >
< / p >
< / div >
< / div >
< / div >
< / div >
< / div >
2016-01-25 02:09:22 +00:00
< / div >
< / div >
< / div >
< script src = "/js/jquery.min.js" > < / script >
2017-12-14 03:08:43 +00:00
< script src = "/js/popper.min.js" > < / script >
2016-01-25 02:09:22 +00:00
< script src = "/js/bootstrap.min.js" > < / script >
< script src = "/js/angular-animate.min.js" > < / script >
< script src = "/js/angular-route.min.js" > < / script >
< script src = "/js/angular-sanitize.min.js" > < / script >
2016-10-13 17:34:53 +00:00
< script src = "/js/i18n/angular-locale_fr-fr.js" > < / script >
2016-01-25 02:09:22 +00:00
< script src = "/js/public.js" > < / script >
2017-01-14 13:57:39 +00:00
< script src = "/js/common.js" > < / script >
2016-01-25 02:09:22 +00:00
< / body >
< / html >