server/frontend/static/public.html

206 lines
8.0 KiB
HTML

<!DOCTYPE html>
<html ng-app="FICApp">
<head>
<meta charset="utf-8">
<title>Challenge FIC2016</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="/css/bootstrap.min.css" type="text/css" rel="stylesheet" media="screen">
<link href="/css/slate.min.css" type="text/css" rel="stylesheet" media="screen">
<link href="/css/fic.css" type="text/css" rel="stylesheet" media="screen">
<!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
<!--[if lt IE 9]>
<script src="/assets/js/html5shiv.js"></script>
<script src="/assets/js/respond.min.js"></script>
<![endif]-->
<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="/">
<script src="/js/angular.min.js"></script>
</head>
<body style="overflow: hidden" ng-controller="DataController">
<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.
</div>
</noscript>
<div class="navbar navbar-default" ng-controller="TimeController" style="position:relative;z-index:1;">
<div class="container">
<div class="row">
<div class="navbar-header col-sm-2">
<a href="/">
<img src="/img/fic.png" alt="Forum International de la Cybersécurité">
</a>
</div>
<div class="navbar-right col-sm-2">
<a href="http://www.epita.fr/">
<img src="/img/epita.png" alt="Epita" class="center-block">
</a>
</div>
<div id="clock" class="col-sm-7" ng-class="{expired: time.expired, end: time.end}" ng-show="time.hours === 0 || time.hours">
<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 id="clock" class="col-sm-7" ng-show="!(time.hours === 0 || time.hours)">
{{ time.start | date:"shortDate" }}
</div>
</div>
</div>
</div>
<!--div style="margin: 5px 0;">
Bandeau Twitter catchant #FIC2016
</div-->
<div class="text-justify" style="margin: 10px;">
<div class="row">
<div class="col-sm-8">
<div ng-repeat="(k,s) in scene" class="repeatedd-item">
<div class="well" ng-show="s.type == 'welcome' && !s.go">
<h1>Bienvenue au challenge forensic !</h1>
<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, vous pouvez accéder au serveur à :
<span style="display: block; font-size: 200%" class="text-center">
<a href="https://fic.srs.epita.fr/"><span class="text-info">https://fic.srs.epita.fr/</span></a>
</span>
</p>
</div>
<div class="panel panel-success" ng-show="s.type == 'welcome' && s.go == 1 && startIn">
<div class="panel-heading">
<h3 class="panel-title"><strong>Le challenge forensic 2016 est sur le point de démarrer !</strong></h3>
</div>
<div class="panel-body text-center point" style="font-size: 350%;">{{ startIn }}</div>
</div>
<div class="well" ng-show="s.type == 'welcome' && s.go == 2">
<h1>Bienvenue au challenge forensic !</h1>
<p class="lead text-justify">
Durant ce challenge, les équipes doivent remonter des scénarii
d'attaques auxquels nos systèmes d'information font faces
chaque jour : 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,
en fonction des exercices : soit des journaux d'évènements, des
extraits de trafic réseau ou même des copies figées de la
mémoire vive de machines malveillantes, pour essayer de
comprendre comment l'attaquant a contourné la sécurité de la
machine et quelles actions hostiles ont été effectuées.
</p>
</div>
<div class="well" ng-show="s.type == 'message'">
<h1 ng-show="s.title"><strong>{{ s.title }}</strong></h1>
<p ng-show="s.lead" class="lead text-justify">{{ s.lead }}</p>
<p ng-bind-html="s.html" ng-show="s.html"></p>
<p ng-show="s.text">{{ s.text }}</p>
</div>
<div class="panel {{ s.kind }}" ng-show="s.type == 'panel'">
<div class="panel-heading" ng-show="s.title">
<h3 class="panel-title">{{ s.title }}</h3>
</div>
<div class="panel-body" ng-show="s.text">{{ s.text }}</div>
<div class="panel-body" ng-show="s.html" ng-bind-html="s.html"></div>
</div>
<div class="well" ng-show="s.type == 'exercice'">
<p class="lead">
<strong>{{ themes[my.exercices[s.id].theme_id].exercices[s.id].title }} du challenge {{ themes[my.exercices[s.id].theme_id].name }}</strong>
<small class="authors" ng-show="themes[my.exercices[s.id].theme_id].authors">par {{ themes[my.exercices[s.id].theme_id].authors }}</small>
</p>
<p ng-bind-html="my.exercices[s.id].statement"></p>
<ul class="list-inline">
<li>{{ themes[my.exercices[s.id].theme_id].exercices[s.id].gain }} points</li>
<li>{{ my.exercices[s.id].files.length }} fichiers disponibles</li>
<li>Tenté par {{ themes[my.exercices[s.id].theme_id].exercices[s.id].tried }} équipes</li>
<li>{{ my.exercices[s.id].solved_number }} tentatives</li>
<li>Résolu par {{ themes[my.exercices[s.id].theme_id].exercices[s.id].solved }} équipes</li>
</ul>
</div>
<table class="table table-bordered table-striped" ng-show="s.type == 'table'">
<thead>
<tr>
<th></th>
<th class="text-center">Niveau 1</th>
<th class="text-center">Niveau 2</th>
<th class="text-center">Niveau 3</th>
<th class="text-center">Niveau 4</th>
<th class="text-center">Niveau 5</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="th in s.themes">
<th>{{ themes[th].name }}</th>
<td ng-repeat="ex in themes[th].exercices" class="text-center" ng-class="{'text-primary': ex.solved == 0, 'text-success': ex.solved >= 1, 'text-bold': ex.solved >= 1, 'text-warning': ex.solved == 0 && ex.tried}" ng-show="ex.solved || ex.tried || $first"><span ng-show="ex.solved">{{ ex.solved }}</span><span ng-show="!ex.solved">{{ ex.tried }}</span></td>
</tr>
</tbody>
</table>
<table class="table table-bordered table-striped" ng-show="s.type == 'rank'">
<thead>
<tr>
<th class="text-right">Place</th>
<th>Équipe</th>
<th>Score</th>
</tr>
</thead>
<tbody ng-show="s.which == 'general'">
<tr ng-repeat="r in rank | orderBy: 'rank' | limitTo: 7">
<th class="text-right">{{ r.rank }}<sup ng-show="r.rank == 1">er</sup><sup ng-show="r.rank > 1">e</sup></th>
<td>{{ r.name }}</td>
<td>{{ r.score }}</td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="col-sm-4">
<div ng-repeat="e in events" class="repeated6-item">
<div class="alert" ng-class="e.kind">
<div class="heading">{{ e.since | since }}</div>
<span ng-bind-html="e.txt"></span>
</div>
</div>
<a href="https://srs.epita.fr/">
<img src="/img/srs.png" class="center-block" alt="Epita">
</a>
</div>
</div>
</div>
<script src="/js/jquery.min.js"></script>
<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>
<script src="/js/i18n/angular-locale_fr-fr.js"></script>>
<script src="/js/public.js"></script>
</body>
</html>