Table des matières. Introduction

Dimension: px
Commencer à balayer dès la page:

Download "Table des matières. Introduction"

Transcription

1 Table des matières 1 Formalisation des virus informatiques Les machines de Turing Formalisation de Fred Cohen Définition d un virus informatique Les Quines Etudes de propriétés de l ensemble viral Quelques propriétés élémentaires Problème d arrêt d une machine de Turing Théorèmes de la non décidabilité de la détection viral Réflexion sur la possibilité de détection virale Illustrations et ouvertures L évolution virale Exemple d ensemble V de cardinal infini Virus montrant une des difficultés de la détection par émulation Les problèmes liés aux signatures Analyse spectrale Analyse critique d un virus élémentaire Remarque sur le comportement humain La Désinfection Les virus «utiles» Ouverture sur la notion de virus Introduction Le terme de virus informatique est aujourd hui très présent dans le grand public et les medias. Il est souvent improprement employé pour désigner un programme informatique malicieux conçu pour nuire. Cette définition correspond plutôt à ce que l on nomme communément les logiciels malveillants (ou malware). La notion de virus désigne de façon assez générale un fragment de programme capable de se répliquer (en mutant ou non). Le terme de virus a été introduit par Fred Cohen en 1985, dans sa thèse [1] sur laquelle nous nous sommes basés pour la partie théorique de cette étude. Nous allons ainsi formaliser la notion de virus grâce aux machines de Turing, puis nous énoncerons quelques résultats sur l ensemble viral, et en particulier un théorème de non décidabilité de la détection virale. Enfin nous présenterons des illustrations des résultats théoriques, des stratégies mises en place par les virus ou par les antivirus pour la détection et quelques réflexions générales sur la virologie. 1

2 1 Formalisation des virus informatiques 1.1 Les machines de Turing Le but de ce travail n étant pas l étude des machines de Turing, nous ne développerons que très peu cet aspect et nous admettrons de façon générale, qu elles nous fournissent une description universelle et abstraite des ordinateurs grâce aux machines de Turing universelles (le lecteur intéressé par cette question pourra se référer au livre de Eric Filiol [3] pour de plus amples informations ou à un cours plus complet sur les machines de Turing). Nous en donnons cependant une description succincte, et intuitive, en annexe. 1.2 Formalisation de Fred Cohen Le but de cette partie est de poser des notations relative aux machines de Turing et de présenter une définition formelle de la notion d ensemble viral et donc de virus. Définition Une machine de Turing M est définie par la donnée d un ensemble de n + 1 états S M = {s 0, s 1,..., s n }, d un ensemble de m + 1 symboles I M = {i 0, i 1,..., i m }, d un ensemble d = { 1, 0, 1} décrivant les mouvements possibles pour la tête de lecture et d écriture, d une fonction de sortie O M : S M I M I M, d une fonction de transition N M : S M I M S M d une fonction de déplacement D M : S M I M d La machine est alors désignée par le quintuplet (S M, I M, O M, N M, D M ), et l ensemble des machines de Turing sera noté M. L on peut alors définir les trois fonctions «temporelles» de suivi de la machine : la fonction temporelle d état $ M : N S M qui pour chaque indice de pas, donne l état correspondant à l issue ; la fonction temporelle de bande M : N N I M qui fournit le contenu d une cellule en fonction de son numéro et de son indice de pas ; la fonction temporelle de cellule P M : N N donnant le numéro de la cellule après le déplacement de la tête de lecture en fonction de l indice de pas. et l historique à l instant t donné est défini par H M = ($ M (t), M (t, i), P M (t)) pour un i fixé. Définissons alors la notion d arrêt d une machine de Turing : Définition On dit que le calcul de la machine M s arrête à l instant t si t > t on a $ M (t) = $ M (t ) et i N on a M (t, i) = M (t, i) et P M (t) = P M (t ). Et l on dit que le calcul de la machine M s arrête s il existe un instant t pour lequel M s arrête. Définition L on note T S M un sous ensemble non vide de I M 2

3 1.2.1 Définition d un virus informatique On peut alors donner la définition formelle de l ensemble viral V, notons qu un élément de cet ensemble est un couple constitué d une machine de Turing et d un ensemble de mots, ainsi cet ensemble est viral relativement à la machine de Turing : Définition On dit que (M, V ) V si [ M M et V T S M et si pour tout v V, on a [ quelque soit H M, t et j, tels que P M (t) = j et $ M (t) = $ M (0) et ( M (t, j),..., M (t, j + v 1)) = v ] [ v V et pour un instant t > t il existe un j tel que (j + v ) j ou (j+ v ) j et ( M (t, j ),..., M (t, j + v 1)) = v et les cellules d indices compris entre j et (j + v 1) sont effectivement remplis par M entre les instants t et t ] ] On comprend, alors, qu un virus est un «mot» qui est capable de se reproduire, ou éventuellement de se reproduire en ayant évolué, il génère en tous cas un autre programme qui a la même propriété que lui. On dira alors qu un virus v est une forme évoluée de v relativement à M si en faisant exécuter M sur v l on obtient (de façon éventuellement indirecte, c est-àdire en faisant s exécuter M sur le virus issu directement de v et ainsi de suite) le virus v On remarque alors que la notion de virus est bien différente de la notion de programme malveillant, et on remarque même que la présence d une charge finale est absente de la définition, et donc les virus ne sont même pas un sous ensemble des logiciels malveillants. 1.3 Les Quines Ainsi, des exemples très simples de virus sont des programmes qui recopient leur propre code.les programmes de ce type s appelle les quines. Une quine en français pourrait être : Recopier puis recopier entre guillemets, sans oublier le point final, la phrase «Recopier puis recopier entre guillemets, sans oublier le point final, la phrase». Ce qui pourrait s écrire en Caml : print string s ; print char (char of int 34) ; print string s ; print char (char of int 34) ; print char ; ; print char ; ; where s="print string s ; print char (char of int 34) ; print string s ; print char (char of int 34) ; print char ; ; print char ; ; where s=" ; ; 1. Il est interdit pour une quine de faire appel à une source extérieure ; par exemple, cela ne correspondrait pas à une quine de faire # let fausse quine= print string "fausse quine () ; ;" ; ; puis # fausse quine () ; ;. 2 Etudes de propriétés de l ensemble viral Maintenant que la notion de virus est précisée nous allons présenter quelques résultats sur ces ensemble, et en particulier la non décidabilité de la détection 1 Nous avons utilisé le code ASCII, car ici les séquences d échappement ne peuvent convenir, en effet, il faut que la phrase entre guillemets soit identique à celle d avant, ce qui ne serait pas le cas avec les séquences d échappement. 3

4 viral. 2.1 Quelques propriétés élémentaires Proposition 2.1. Il existe des machines de Turing pour lesquelles il n existe pas d ensemble qui soit viral relativement à cette machine de Turing Cette propriété est relativement trivialement démontrée, en prenant la machine de Turing qui s arrête immédiatement par exemple. Mais elle nous rappelle qu il est possible de faire des systèmes plus ou moins sécurisés face aux virus. Mais les systèmes proposés actuellement et qui garantissent une totale sécurité, sont tellement contraignant qu ils annulent presque les avantages de l informatique. Proposition 2.2. Il existe une machine de Turing M et V T S M tels que (M, V ) V et V = N On peut démontrer cette propriété en créant une telle machine et un tel ensemble. Il est a noter que pour presque tous les langages de programmation moderne l on peut créer un tel ensemble, nous en verrons un exemple dans Cela nous montre donc que la détection de virus par simple scanning (comparaison avec de codes déjà répertorié) a ses limites. 2.2 Problème d arrêt d une machine de Turing Avec la définition que l on a donné des machines de Turing, il est légitime de se demander si elles s arrêtent ou non, l on peut en effet créer des machines de Turing qui ne s arrêtent jamais. Nous allons montrer que le problème d arrêt est indécidable, en d autres termes, que l on ne peut pas avoir de machine Turing qui réponde à la question «es ce qu un machine Turing va s arrêter ou non?» Définition notons alors ϕ p (x) si le résultat du calcul de p sur x n est pas défini et ϕ p (x) si il est défini. Enonçons alors le théorème de non décidabilité du problème d arrêt : Théorème 2.3. Il n existe pas de programme (de machine de Turing) qui s arrête toujours et qui donne le résultat «vrai» si ϕ p (x) et «faux» si ϕ p (x) Démonstration. Raisonnons par l absurde : si un tel programme P existe. Nous allons alors le modifier pour obtenir un programme Π qui est tel que sa représentation fonctionnelle ψ vérifiée : { si ϕp (< p, x >) ψ(p, x) = sinon Mais, par construction ψ(.) représente le programme Π. Mais alors, comment se comporte ce programme quand un codage de lui-même lui est présenté? autrement dit que vaut ψ(π, Π)? Par définition on a : 4

5 { si ϕp (< Π, Π >) ψ(π, Π) = sinon donc si ψ(π, Π) alors par définition, nous avons ψ(π, Π) et si ψ(π, Π) on a alors ψ(π, Π). D où la contradiction. Ce théorème vas nous servir à démontrer les théorème de non décidabilité de la détection viral. 2.3 Théorèmes de la non décidabilité de la détection viral Maintenant que la notion de virus est précisée, nous allons pouvoir démontrer que le problème de la détection virale est un problème indécidable. Théorème 2.4. Il n existe pas de programme (de machine de Turing), qui pour toute machine de Turing et tout ensemble V, s arrête toujours et qui donne le résultat «vrai» si (M, V ) V, et «faux» sinon Démonstration. L idée de la preuve est de se ramener au problème d arrêt d une machine de Turing. Pour une machine M et une donnée v arbitraires, on va alors créer une machine M et un mot v tels que (M, {v}) V si et seulement si ϕ p (x). Ainsi, déterminer si (M, {v}) V sera équivalent à déterminer si la machine de Turing M avec la donnée d entré v s arrête ou non, or comme M et v sont arbitraires alors si on pouvait déterminer si (M, {v}) V l on résoudrait le problème d arrêt des machines de Turing, qui est indécidable, donc une telle machine n existe pas. Montrons alors comment on peut créer un tel couple (M, {v}), pour ce faire, nous allons décrire simplement en substance ce que fait cette machine (la mise en place des notations serait lourde et peu utile). Tout d abord nous admettrons que l on dispose des machines de Turing élémentaires que l on pourra intégrée à des machines de Turing plus complexes : G(z) qui fait parcourir la bande de calcul vers la gauche à la tête jusqu à rencontrer la lettre z D(z) qui fait parcourir la bande de calcul vers la droite à la tête jusqu à rencontrer la lettre z CP I(x, y, z) qui pour les trois lettres x, y et z (classées dans cette ordre sur la bande de calcul) copie les caractères se trouvant entre x et y après le premier caractère z rencontré en allant vers la droite après y. Ensuite il nous faut remarquer que l on peut supposer que pour la machine M on a : G, D, g, d I M (quitte à changer de caractère) et l on peut aussi supposer que la bande de calcul n est utilisé que vers la droite (quitte à ajouter des états à la machine et utiliser les cases vides paires comme les case de gauche et les cases vides impaires comme les case de droite, cela est possible puisque la donnée v de départ sera délimité par g et d, donc on peu aller et venir facilement d un bout à l autre du mot, et le caractère d peu servir de marqueur à d entré de la zone où les cellules sont alternés). 5

6 Ensuite l on considère la machine M qui s arrête immédiatement si le premier caractère n est pas un G, puis applique CP I( g, d, D ) puis se place au début de cette copie puis simule l action de M sur cette copie (ce qui est possible en ajoutant les états de cette machine à ceux de M), ce qui ne pause aucun problème puisque l on a supposé que la bande n est utilisée que vers la droite. Enfin, si le calcul de M ne se termine pas, la machine tourne indéfiniment, sinon une foi le clacul de M terminé l on fait recopier à M la séquence originale (grâce à CP I( G, D, D )). Comme G I M alors la simulation de M ne peut pas produire un virus pour M, car tout programme qui ne s arrête pas immédiatement dans M doit commencer par G. Ainsi pour v = Ggv dd on a bien que (M, {v}) V si et seulement si ϕ p (x). Et avec le raisonnement vu ci-dessus et le théorème de non décidabilité de l arrêt d une machine de Turing l on a le résultat. Ainsi l on montre qu une détection virale parfaite (qui détecte touts les virus et qui ne produit jamais de fausse alerte) est impossible et nous invite à une vigilance constante en matière de sécurité informatique Réflexion sur la possibilité de détection virale Par un raisonnement similaire l on peut également démontrer que déterminer si un virus v est une évolution d un autre virus v est un problème indécidable. Ainsi cela nous montre que la détection qui serait basée sur une analyse de l évolution a aussi ses limites. A un tout autre niveau que celui des machines de Turing, l on pourrait faire un raisonnement par l absurde pour montrer le théorème 2.4. S il existait un programme D qui permettait de déterminer si un programme est viral ou non, alors on pourrait écrire le programme, avec un langage de haut niveau : CV()= {... {si non D(CV()) alors infection() ;} fin si aller au programme suivant} Ainsi si D(CV())= vrai alors l infection n aura pas lieu et donc le programme ne sera pas viral, et si D(CV())=faux alors l infection aura lieu et donc le programme D n aura pas détecté un programme viral. Ainsi un tel programme D ne peut pas exister, et donc là encore, cela prouve que la détection virale parfaite est impossible dés qu il est possible d écrire un code de ce type. Face à ce constat d impossibilité d obtenir une détection parfaite, il s agit de développer les outils les plus performants possibles. Ce qui sera l objet de la partie suivante. 6

7 3 Illustrations et ouvertures Dans cette partie nous présenterons quelques illustrations de propriétés montrées dans les travaux théoriques de Fred Cohen, mais aussi des illustrations des méthodes utilisées par les concepteurs de virus ou d antivirus 2. Ces illustrations seront présentées en langage Caml. Dans la mesure ou Caml-light ne se prête pas excessivement bien à l écriture de virus qui nécessite de faire des recherches de fichiers, mais aussi des fonction performantes d accès en écriture aux fichiers, afin de les infecter, nous ne présenterons donc qu une quine 3, ou une partie seulement du code. Mais ces exemples ont pour but de compléter de façon personnelle l exposé théorique et la formalisation présentée précédemment. Nous nous limiterons donc aux virus en code source, qui ne représentent qu une infime partie des virus informatiques, mais nous suffisent pour les exemples que nous avons choisi de présenter. Nous finirons enfin avec des réflexions plus générales sur les virus et notre cohabitation avec eux. 3.1 L évolution virale Exemple d ensemble V de cardinal infini. Comme nous l avons vu précédemment, on peut démontrer qu il existe une machine de Turing M, et un ensemble V tels que (M, V ) V et V = N. Nous allons illustrer cette propriété en proposant une quine en Caml qui recopie son propre code, mais ajoute un caractère aléatoire de commentaire à chaque exécution. Ainsi on comprend bien comment on peut créer un tel ensemble 4 (nous supposerons que le module random est déjà ouvert ; bien qu il soit possible de le faire ouvrir par le programme) : print string s ; print string r ; print char (char of int 34) ; print string s ; print char ( ; print char * ;print char (char of int (random int 42)) ;print char * ; print char ) ; print char (char of int 34) ;print char a ;print char n ;print char d ;print char ;print char r ;print char = ;print char (char of int 34) ; print string r ; print char (char of int 34) ; print char ; ; print char ; ; where s="print string s ; print string r ; print char (char of int 34) ; print string s ; print char ( ; print char * ;print char (char of int (random int 128)) ;print char * ; print char ) ; print char (char of int 34) ;print char a ;print char n ;print char d ;print char ;print char r ;print char = ;print char (char of int 34) ; print string r ; print char (char of int 34) ; print char ; ; print char ; "and r=" ; where s=" ; ; 2 Bien qu une détection viral soit parfaite les antivirus atteignes aujourd hui des taux de détection de prés de 99% sur les virus connus et de 80% sur des virus inconnues. 3 Il suffirait alors simplement d ajouter un module de recherche de fichiers et de copier le virus vers ce canal, plutôt que vers l écran, pour rendre le programme viral. 4 Si l on trouve que l ajout d un caractère en note ne change pas réellement le programme, l on pourrait pas exemple ajouter la commande d impression d un espace. 7

8 Cette quine se recopie et intègre un commentaire dans un des deux les texte entre guillemets qu il lui permet de se recopier, ainsi à l étape suivante ce commentaire s ajoutera au code, et ainsi de suite. Ce type de virus permet de montrer la limite de la détection par recherche de code (le scanning). En effet, ici, une simple recherche de code ne permet pas de garantir ou non la présence du virus. L on pourrait alors développer des moyens plus subtils que la simple recherche de code ; mais alors, il serait possible de développer des moyens plus habiles de parade contre ces méthodes. Par exemple, il pourrait être possible de rajouter aléatoirement des espaces Virus montrant une des difficultés de la détection par émulation Afin d illustrer la propriété de non décidabilité de la détection virale, l on pourrait créer un virus résident produisant un descendant dont le temps de «reproduction» serait doublée à chaque génération, ainsi l on aurait un exemple de virus qui montrerait bien le lien entre la non décidabilité de la détection virale et le problème de l arrêt du calcul d une machine de Turing. En effet, la difficulté du problème d arrêt repose sur le fait que l on ne connait pas à priori le temps de calculs (s il se finit), et ce virus lui aussi aurait un temps avant infection qui pourrait devenir aussi long que l on veut. Ainsi ce virus illustrerait la difficulté de la détection viral. Ce virus ne représenterait pas un danger majeur car son activité deviendrait vite insignifiante Les problèmes liés aux signatures Afin d éviter la sur-infection les virus marquent (en entête par exemple) les programmes infectés, cela permet de limiter au maximum les opérations (et l espace mémoire occupé), qui pourraient alerter l utilisateur si elles sont en trop grand nombre. Mais cette signature est bien souvent utilisée par des antivirus pour détecter leur présence. Des virus plus aboutis ont un système de signature mouvante qui lui permet de repérer sa présence mais rend beaucoup plus difficile la détection. 3.2 Analyse spectrale Comme cela est pratiqué en cryptanalyse (qui est d ailleurs utile pour certains virus cryptés) on peut procéder par analyse spectrale pour rechercher des programmes potentiellement infectés. Pour nous, il s agit de rechercher des commandes «exotiques» qui sont couramment utilisées en programmation virale, mais beaucoup plus rarement en programmation traditionnelle. Ainsi par exemple la commande char of int 34 est relativement rare en programmation traditionnelle, mais est très utile pour les exemples présentés précédemment. Nous supposerons définie la fonction recherche occurrence qui pour recherche occurrence fichier n recherche le nombre d occurrences de la chaîne n dans le fichier. On peut ainsi mesurer la probabilité moyenne d apparition dans des programmes Caml 8

9 de tel ou tel chaîne, et si la valeur mesurée sur le fichier est supérieure et significativement supérieure à la moyenne 5. Ainsi un tel algorithme pourrait être : analyse spectrale canal n seuil moy pr n= let a =recherche occurrence canal n and b=in channel length canal in if (float of in a /. float of int b)/.moy pr n > seuil then print string "risque" ; ; De tels algorithmes peuvent servir dans des antivirus (avec un seuil relativement haut) et peuvent aussi être utilisés par les laboratoires cherchant à localiser des virus encore inconnus pour les ananlyser, et fournir une description utilisable par les antivirus, pour permettre la détection et la désinfection. 3.3 Analyse critique d un virus élémentaire Afin de présenter concrètement les caractéristiques essentielles que doivent présenter les virus modernes, nous allons réaliser une critique d un virus rudimentaire écrit en bash : for i in.sh ; do # pour tout fichier avec l extension sh if test "./$i"!="$0" ; then # si cible du fichier infectant tail -n 5 $ 0 cat >>$i ; # ajouter le code du virus fi done Ce programme recherche tous les autres fichiers comportant l extension.sh et ajoute son propre code à la fin de ces fichiers. Nous allons présenter en deux parties les arguments en faveur et en défaveur de ce virus élémentaire : Ce programme ne fait que 91 octets ce qui le rend très discret. D autre part, il vient s ajouter à la fin d un script, ce qui réduit le nombre d opérations à réaliser pour l infection. Le fait que le virus soit situé à la fin du programme fait qu il est exécuté en toute fin et don,c qu il n est pas systématiquement exécuté lorsque le programme qu il parasite l est. Le code comme présenté ici est très lisible, ce qui le rend facilement détectable par un lecteur. Ce virus a une action limitée au répertoire courant. De plus les fichier d extension.sh sont relativement peu courants, ce qui limite l action de ce virus. D autre part le virus ne vérifie pas si le fichier qu il va infecter est déjà infecté, ce qui peut produire une surinfection qui sera rapidement démasquée par l utilisateur qui remarquera la présence de ces lignes de code en nombre à la fin de son fichier, ou alors, l augmentation de la taille alertera l utilisateur. De plus la petite taille de ce code peut constituer une signature qui sera recherchée par un antivirus (car ce virus n est pas polymorphe). Enfin, bien que cela ne soit en aucun cas une caractéristique d un virus, ce virus ne comporte pas de charge finale, cela produit donc un virus qui est relativement peu «utile», 5 Là encore il n est bien sûr pas question de détecter tous les codes viraux et seulement ceux là, et donc, le seuil peut être fixé en fonction du niveau de sécurité que l on souhaite obtenir, au risque de déclencher de fausses alertes. 9

10 ce virus peut constituer une charge finale en lui-même en alourdissant les fichiers si l utilisateur ne l élimine pas. Ainsi ce virus est un relativement mauvais virus. Mais certains points évoqués précédemment pourraient bien sûr être améliorés. 3.4 Remarque sur le comportement humain Comme nous l avons déjà évoqué, créer un système empêchant les virus de se propager, reviendrait à se priver de bien des utilités de l informatique. C est alors à l utilisateur de comprendre cela et d adopter une position de prudence en la matière. Car dans les infections informatiques le facteur humain est souvent très important. On se rappelle par exemple 6 du ver I love you qui a causé de très importants dégâts, et qui utilisait l argument d une lettre d amour pour inciter l utilisateur à ouvrir le message. Le paroxysme de ce phénomène est atteint avec les chaînes envoyées par , et qui demandent à être recopiées intégralement et envoyées à de nouveaux correspondants, ainsi on est face à un «virus» qui n a comme moyen de propagation que la persuasion du lecteur. Ainsi l on prend la mesure de l importance de l ingénierie sociale dans la conception d un virus. 3.5 La Désinfection Le problème de la désinfection est conditionné par la détection mais aussi par la connaissance du virus. Ainsi il faut pouvoir le supprimer dans les fichiers sans endommager le fichier. Mais là encore, les virus ont des moyens de défenses, certains procèdent par remplacement de code, cela a donc pour effet de détruire le programme original, et donc ce type de virus est presque impossible à désinfecter sans supprimer les fichiers. D autres virus, à l image des rétrovirus, s attaquent spécifiquement aux systèmes antivirus, cela peut alerter l utilisateur mais empêche la désinfection. Enfin pour certains virus à infection très rapide, l antivirus peut se révéler plus lent que le virus, ce qui fait que le bilan est négatif et le virus gagne immanquablement du terrain, et n est donc pas supprimé. Ce problème de vitesse a été résolu dans certain cas 7 par une désinfection par un autre virus informatique lancé sur les ordinateurs, ce virus devait désinfecter les fichiers infecter et se désinfecter lui même à partir d une date donnée. Ce dernier exemple nous montre que bien que nous soyons condamnés à vivre avec les virus il peuvent aussi nous apporter. 3.6 Les virus «utiles» Bien que cette notion ne soit pas très bien vue par les éditeurs d antivirus, il est possible de créer des virus utiles, qui permettent, par exemple, d assurer des taches d administration sur un réseau (sans avoir de programme résident). Il a déjà été envisagé par exemple de créer un virus qui gérerait la compression de fichiers 6 Les exemple de ce genre son plethore. 7 Comme par exemple dans la cas du ver Creeper qui devait éliminer un autre ver qui avais infecté un système de contrôle aérien. 10

11 peu utilisés, en les cherchant, puis en les compressant et enfin en s y copiant. Enfin des vers (qui sont des virus adaptés aux réseaux) peuvent permettre de maintenir à jour, ou faire du calcul distribué. 3.7 Ouverture sur la notion de virus Nous avons montré au 3.1 comment produire un ensemble potentiellement infini de ces pseudos virus. On pourrait même imaginer de faire un virus qui, à certaines duplications change de façon aléatoire des parties de son code. Dans bien des cas cette évolution rendrait non exécutable le programme, mais parfois elle pourrait produire des améliorations du programme. Ainsi l on peut fantasmer une évolution darwinienne dans un ordinateur où les meilleurs programmes prendraient le pas sur les virus ne pouvant pas faire face à la pression exercée par les autres virus pour occuper l espace mémoire. On retrouve cette idée dans le jeu corwar 8 où deux programmes s affrontent sur un espace mémoire très limité et doivent éliminer leur adversaire, mais dans ce jeu il n est pas question d évolution, il illustre simplement comment peut se faire une «sélection naturelle». Il est à noter que le nom de virus est particulièrement bien choisi car le parallèle avec la biologie peut être poussé assez loin, en effet les mécanismes sont assez proches, et les programmateurs se sont inspiré des mécanismes naturels pour programmer de virus. Conclusion La notion de virus est encore mal connue aujourd hui. Elle est mystifiée par des professionnels de la sécurité informatique qui souhaitent souvent conserver un monopole intellectuel sur ce sujet. Il est ainsi courant de rencontrer un refus catégorique lorsque sont proposés des tests grandeur nature d évaluation de sécurité des systèmes informatiques, car il est fréquent que des décideurs pensent qu un problème non diagnostiqué n existe pas. Ainsi il est important de reprendre la définition et de rappeler les possibles et les impossibles en la matière 9. Mais il est important aussi que la virologie informatique se développe car le potentiel stratégique des virus informatiques est énorme. En effet, d importants dégâts ont été causés par des virus développés par des individus seuls. On peut donc imaginer les conséquences que pourraient avoir une attaque massive menée par un état. 8 C est d ailleurs pour ce jeu qu ont été crées les premiers virus informatiques 9 Le théorème de non décidabilité de la détection virale contre bien des slogans outranciers de sociétés commercialisant des antivirus. 11

12 Références [1] Fred Cohen (1985) Computer Viruses [2] Fred Cohen (1994) A Short Course on Computer viruses [3] Eric Filiol (2004) Les virus informatiques : théorie, pratique et applications [4] Article Wikipedia sur les Machines de Turing 12

13 Annexe Description succincte, et intuitive des machines de Turing Une machine de Turing M est composée de trois parties Une unité de stockage (ou bande de calcul), qui est de longueur infinie et est divisée en cellules qui contiennent chacune un caractère d un alphabet (fini) donné, dont le vide est un caractère. Le nombre de cellules non vides sera fini. Cette bande permet en début de calcul d apporter les données du calcul à la machine, en cours de calcul de servir d unité de stockage, puis en fin de calcul de donner les données de sortie. Une tête de lecture et d écriture qui se déplace le long de la bande de calcul, en traitant une cellule à la fois, puis se déplace vers la droite ou la gauche. Cette tête permet ainsi de désigner la cellule courante et permet de lire, puis d écrire un nouveau caractère sur la bande, avant de se déplacer. Une fonction de contrôle qui pilote la tête. Cette fonction contient l état de la machine qui est une forme de mémoire de cette machine. Ainsi si S désigne l ensemble fini des états de la machine et I l alphabet, on a que F : S I S I {G, 0, D}. Ainsi la fonction est dans un état donné et la tête lui transmet le caractère lu sur la bande de calcul. La fonction va passer dans un nouvel état, va faire remplacer le caractère contenu dans la cellule de la bande de calcul, et va indiquer à la tête si elle doit rester dans la même position, ou aller sur la cellule de gauche ou de droite. Si bien que la machine M est caractérisée par sa fonction F. Ainsi, si le calcul de la machine de Turing s arrête, Lorsque l on est en situation ou la tête ne bouge plus,et l état non plus tout comme le caractère contenu par la cellule courante. Cette notion de machine de Turing ne semble pas suffisante pour décrire le fonctionnement des ordinateurs actuels, car une machine correspond à une seule fonction à priori. Ainsi nous allons définir la notion de machine de Turing universelle. Définition Une machine de Turing universelle U est une machine de Turing qui, sur des données d entrée décrivant d une part une machine de Turing M donnée, et d autre part une donnée d entrée x pour cette machine, simule l action de M sur x, autrement dit calcule M(x). On note U(M; x) = M(x). Une telle machine peut émuler l action de toute autre machine sur une donnée. Nous ne développerons pas les techniques de représentation d une telle machine M sur la bande de calcul, mais nous supposerons que cela est possible. 13

Machine de Turing. Informatique II Algorithmique 1

Machine de Turing. Informatique II Algorithmique 1 Machine de Turing Nous avons vu qu un programme peut être considéré comme la décomposition de la tâche à réaliser en une séquence d instructions élémentaires (manipulant des données élémentaires) compréhensibles

Plus en détail

Fondements de l informatique: Examen Durée: 3h

Fondements de l informatique: Examen Durée: 3h École polytechnique X2013 INF412 Fondements de l informatique Fondements de l informatique: Examen Durée: 3h Sujet proposé par Olivier Bournez Version 3 (corrigé) L énoncé comporte 4 parties (sections),

Plus en détail

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée.

Concours 2015 Épreuve d Informatique Filière : MP Durée de l épreuve : 3 heures. L utilisation d une calculatrice est autorisée. A 2015 INFO. MP École des Ponts ParisTech, SUPAERO (ISAE), ENSTA ParisTech, Télécom ParisTech, Mines ParisTech, Mines de Saint-étienne, Mines Nancy, Télécom Bretagne, ENSAE ParisTech (filière MP), École

Plus en détail

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2

Manuel d utilisation 26 juin 2011. 1 Tâche à effectuer : écrire un algorithme 2 éducalgo Manuel d utilisation 26 juin 2011 Table des matières 1 Tâche à effectuer : écrire un algorithme 2 2 Comment écrire un algorithme? 3 2.1 Avec quoi écrit-on? Avec les boutons d écriture........

Plus en détail

Premier programme VBA : syntaxe, édition, compilation

Premier programme VBA : syntaxe, édition, compilation 1 Premier programme VBA : syntaxe, édition, compilation Le langage VBA (Visual Basic for Applications) permet de concevoir des programmes selon une syntaxe qui lui est propre, puis d éditer et d exécuter

Plus en détail

LES DECIMALES DE π BERNARD EGGER

LES DECIMALES DE π BERNARD EGGER LES DECIMALES DE π BERNARD EGGER La génération de suites de nombres pseudo aléatoires est un enjeu essentiel pour la simulation. Si comme le dit B Ycard dans le cours écrit pour le logiciel SEL, «Paradoxalement,

Plus en détail

L enseignement de l algorithmique au Lycée

L enseignement de l algorithmique au Lycée L enseignement de l algorithmique au Lycée Sisteron 12 novembre 2009 Fernand Didier didier@irem.univ-mrs.fr Approche naïve C est une méthode, une façon systématique de procéder, pour faire quelque chose

Plus en détail

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

IN 102 - Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C IN 102 - Cours 1 Qu on le veuille ou non, les systèmes informatisés sont désormais omniprésents. Même si ne vous destinez pas à l informatique, vous avez de très grandes chances d y être confrontés en

Plus en détail

ASSEMBLAGE ET ÉDITION DES LIENS

ASSEMBLAGE ET ÉDITION DES LIENS ASSEMBLAGE ET ÉDITION DES LIENS Mewtow 11 novembre 2015 Table des matières 1 Introduction 5 2 La chaine d assemblage 7 2.1 Résolution des symboles.............................. 7 2.2 Relocation.....................................

Plus en détail

Support du cours de Probabilités IUT d Orléans, Département d informatique

Support du cours de Probabilités IUT d Orléans, Département d informatique Support du cours de Probabilités IUT d Orléans, Département d informatique Pierre Andreoletti IUT d Orléans Laboratoire MAPMO (Bât. de Mathématiques UFR Sciences) - Bureau 126 email: pierre.andreoletti@univ-orleans.fr

Plus en détail

Algorithmique et Analyse d Algorithmes

Algorithmique et Analyse d Algorithmes Algorithmique et Analyse d Algorithmes L3 Info Cours 11 : Arbre couvrant Prétraitement Benjamin Wack 2015-2016 1 / 32 La dernière fois Rappels sur les graphes Problèmes classiques Algorithmes d optimisation

Plus en détail

Calculabilité Cours 2 : Machines de Turing

Calculabilité Cours 2 : Machines de Turing Calculabilité Cours 2 : Machines de Turing Introduction Un autre type de modèle de calcul Les fonctions récursives et les fonctions λ représentables définissent des modèles de calculs dans k N Nk N Nous

Plus en détail

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3

I Arbres binaires. Lycée Faidherbe 2014-2015. 1 Rappels 2 1.1 Définition... 2 1.2 Dénombrements... 2 1.3 Parcours... 3 I Arbres binaires 2014-2015 Table des matières 1 Rappels 2 1.1 Définition................................................ 2 1.2 Dénombrements............................................ 2 1.3 Parcours.................................................

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers

Programmation en Python - Cours 2 : Premiers programmes. MPSI - Lycée Thiers Programmation en Python - Cours 2 : Premiers programmes Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Utilisation en mode interactif Ecriture d un programme

Plus en détail

Utilisez Toucan portable pour vos sauvegardes

Utilisez Toucan portable pour vos sauvegardes Utilisez Toucan portable pour vos sauvegardes Préambule Toucan est un logiciel libre et gratuit, permettant de réaliser des sauvegardes ou synchronisation de vos données. Il est possible d automatiser

Plus en détail

Calcul Scientifique L2 Maths Notes de Cours

Calcul Scientifique L2 Maths Notes de Cours Calcul Scientifique L2 Maths Notes de Cours Le but de ce cours est d aborder le Calcul Scientifique, discipline arrivant en bout d une d une chaîne regroupant divers concepts tels que la modélisation et

Plus en détail

Machines virtuelles Cours 1 : Introduction

Machines virtuelles Cours 1 : Introduction Machines virtuelles Cours 1 : Introduction Pierre Letouzey 1 pierre.letouzey@inria.fr PPS - Université Denis Diderot Paris 7 janvier 2012 1. Merci à Y. Régis-Gianas pour les transparents Qu est-ce qu une

Plus en détail

Langages et concepts de programmation

Langages et concepts de programmation Langages et concepts de programmation Séances 3 et 4 Tri d un fichier de voitures Une correction possible 1 Le sujet On dispose d un fichier contenant des informations sur des voitures d occasion : le

Plus en détail

Série 2 Premiers programmes

Série 2 Premiers programmes Licence pro. GTSBD 2013-2014 Structures de données, langage Python Série 2 Premiers programmes Programmes avec des affectations, des lectures et des écritures Exo 2.1 Le problème de la machine qui rend

Plus en détail

Expressions rationnelles, automates, analyse lexicale

Expressions rationnelles, automates, analyse lexicale Chapitre 2 Expressions rationnelles, automates, analyse lexicale L analyse lexicale est la première phase d un compilateur ou d un interprète : elle consiste à identifier et à catégoriser les différents

Plus en détail

À propos des matrices échelonnées

À propos des matrices échelonnées À propos des matrices échelonnées Antoine Ducros appendice au cours de Géométrie affine et euclidienne dispensé à l Université Paris 6 Année universitaire 2011-2012 Introduction Soit k un corps, soit E

Plus en détail

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation

Langage C. Chapitre 2. 2.1 Le langage C, un langage non interprété. 2.1.1 L écriture du programme. 2.1.2 La compilation Chapitre 2 Langage C 2.1 Le langage C, un langage non interprété Le C est un langage de programmation comme il en existe beaucoup d autres (C++, Fortran, Python, Matlab, IDL, ADA...). Il existe deux grandes

Plus en détail

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux. UEO11 COURS/TD 1 Contenu du semestre Cours et TDs sont intégrés L objectif de ce cours équivalent a 6h de cours, 10h de TD et 8h de TP est le suivant : - initiation à l algorithmique - notions de bases

Plus en détail

Désinfection de Downadup

Désinfection de Downadup Désinfection de Downadup Historique des versions de documentations N de version Eléments modifiés Date Rédacteur 1.0 Version Initial 15/03/2010 BOURGINE Christopher 1 BitDefender propose un outil de désinfection

Plus en détail

Analyse et programmation 1

Analyse et programmation 1 Analyse et programmation Aperçu du fonctionnement de l ordinateur Fonctionnement de l ordinateur Codage de l information Bus d échange d information CPU Exécution d un programme par la CPU Gestion des

Plus en détail

Sujet à finir pour le jeudi 8 janvier 2015 23h59 À rendre par mail à aurelie.lagoutte@ens-lyon.fr

Sujet à finir pour le jeudi 8 janvier 2015 23h59 À rendre par mail à aurelie.lagoutte@ens-lyon.fr ENS Lyon L3 Info PROJ1 2014 2015 Projet Caml : Jeux de cartes 1 Consignes Sujet à finir pour le jeudi 8 janvier 2015 23h59 À rendre par mail à aurelie.lagoutte@ens-lyon.fr Forme Vous devez rendre le fichier.ml

Plus en détail

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2)

Objectifs du cours d aujourd hui. Informatique II : Cours d introduction à l informatique et à la programmation objet. Complexité d un problème (2) Objectifs du cours d aujourd hui Informatique II : Cours d introduction à l informatique et à la programmation objet Complexité des problèmes Introduire la notion de complexité d un problème Présenter

Plus en détail

Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN

Parcours d un arbre Arbres de recherche CHAPITRE 6. Arbres binaires. Karelle JULLIAN. MPSI, Option Info 2014/2015. Karelle JULLIAN CHAPITRE 6 Arbres binaires Lycée Kléber MPSI, Option Info 2014/2015 1 Définitions 2 Parcours en largeur Parcours en profondeur Parcours préfixe, infixe, postfixe Reconstitution 3 Recherche Complexité Insertion

Plus en détail

Convertisseur de monnaies

Convertisseur de monnaies Convertisseur de monnaies La logique algorithmique en première STG Propriétés Intitulé long Formation concernée Matière Notions Présentation Pré-requis Outils Mots-clés Auteur(es) Version 1.0 Description

Plus en détail

Programmation en Python - Cours 2 : Premiers programmes

Programmation en Python - Cours 2 : Premiers programmes Programmation en Python - Cours 2 : Premiers programmes 2013/2014 Diverses utilisations de python Utilisation en mode interactif Ecriture d un programme python Saisie de données par l utilisateur : input(),

Plus en détail

Architecture des calculateurs

Architecture des calculateurs Chapitre 1 Architecture des calculateurs 1.1 Introduction Ce paragraphe n a pas la prétention de présenter un cours d informatique. D une manière générale, seuls les caractéristiques architecturales qui

Plus en détail

EPREUVE OPTIONNELLE d INFORMATIQUE

EPREUVE OPTIONNELLE d INFORMATIQUE EPREUVE OPTIONNELLE d INFORMATIQUE A) QCM Les réponses au QCM doivent être portées directement sur la feuille de sujet de QCM. Ne pas omettre de faire figurer votre numéro de candidat sur cette feuille

Plus en détail

Texte Agrégation limitée par diffusion interne

Texte Agrégation limitée par diffusion interne Page n 1. Texte Agrégation limitée par diffusion interne 1 Le phénomène observé Un fût de déchets radioactifs est enterré secrètement dans le Cantal. Au bout de quelques années, il devient poreux et laisse

Plus en détail

Commandes et scripts Bash. 1 Commandes de gestion des fichiers et répertoires

Commandes et scripts Bash. 1 Commandes de gestion des fichiers et répertoires Commandes et scripts Bash Seules certaines options sont indiquées. Pour plus de détails voir les pages de manuel (cf commande man). Si une commande est indiquée comme étant interne, cela signifie qu elle

Plus en détail

Préparation aux épreuves écrites du CAPES Conseils de rédaction

Préparation aux épreuves écrites du CAPES Conseils de rédaction Préparation aux épreuves écrites du CAPES Conseils de rédaction Claire Debord Le texte qui suit est une libre compilation de plusieurs textes sur le même thème, notamment ceux de Christophe Champetier

Plus en détail

Complexité des algorithmes

Complexité des algorithmes Complexité des algorithmes par Robert Rolland R. Rolland, Aix Marseille Université, Institut de Mathématiques de Marseille I2M Luminy Case 930, F13288 Marseille CEDEX 9 e-mail : robert.rolland@acrypta.fr

Plus en détail

TP N o 5 - Shell scripts, Codage, compression, archivage

TP N o 5 - Shell scripts, Codage, compression, archivage IUT de Villetaneuse E. Viennet GTR 2ème année Introduction au Système UNIX 8/10/01 TP N o 5 - Shell scripts, Codage, compression, archivage EXERCICE 1 - On reprend les deux dernières questions du TP précédent,

Plus en détail

Transmission d informations sur le réseau électrique

Transmission d informations sur le réseau électrique Transmission d informations sur le réseau électrique Introduction Remarques Toutes les questions en italique devront être préparées par écrit avant la séance du TP. Les préparations seront ramassées en

Plus en détail

LA GESTION DE FICHIERS

LA GESTION DE FICHIERS CHAPITRE 6 : LA GESTION DE FICHIERS Objectifs spécifiques Connaître la notion de fichier, ses caractéristiques Connaître la notion de répertoires et partitions Connaître les différentes stratégies d allocation

Plus en détail

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list =

# let rec concat l1 l2 = match l1 with [] -> l2 x::l 1 -> x::(concat l 1 l2);; val concat : a list -> a list -> a list = <fun> 94 Programmation en OCaml 5.4.8. Concaténation de deux listes Définissons maintenant la fonction concat qui met bout à bout deux listes. Ainsi, si l1 et l2 sont deux listes quelconques, concat l1 l2 constitue

Plus en détail

Notion de complexité

Notion de complexité 1 de 27 Algorithmique Notion de complexité Florent Hivert Mél : Florent.Hivert@lri.fr Adresse universelle : http://www-igm.univ-mlv.fr/ hivert Outils mathématiques 2 de 27 Outils mathématiques : analyse

Plus en détail

Concepts et avenir de la virologie informatique

Concepts et avenir de la virologie informatique Eric Filiol efiliol@esat.terre.defense.gouv.fr ESAT Laboratoire de virologie et de cryptologie Rennes 7 février 2007 Plan Introduction 1 Introduction 2 La classification d Adleman Aspects fonctionnels

Plus en détail

Sortie : OUI si n est premier, NON sinon. On peut voir Premier aussi comme une fonction, en remplaçant OUI par 1 et NON par 0.

Sortie : OUI si n est premier, NON sinon. On peut voir Premier aussi comme une fonction, en remplaçant OUI par 1 et NON par 0. Université Bordeaux 1. Master Sciences & Technologies, Informatique. Examen UE IN7W11, Modèles de calcul. Responsable A. Muscholl Session 1, 2011 2012. 12 décembre 2011, 14h-17h. Documents autorisés :

Plus en détail

Notions de sécurités en informatique

Notions de sécurités en informatique Notions de sécurités en informatique Bonjour à tous, voici un article, vous proposant les bases de la sécurité informatique. La sécurité informatique : Vaste sujet, car en matière de sécurité informatique

Plus en détail

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte

Projet d informatique M1BI : Compression et décompression de texte. 1 Généralités sur la compression/décompression de texte Projet d informatique M1BI : Compression et décompression de texte Le but de ce projet est de coder un programme réalisant de la compression et décompression de texte. On se proposera de coder deux algorithmes

Plus en détail

Eléments de syntaxe du langage Java

Eléments de syntaxe du langage Java c jan. 2014, v3.0 Java Eléments de syntaxe du langage Java Sébastien Jean Le but de ce document est de présenter es éléments de syntaxe du langage Java : les types primitifs, les opérateurs arithmétiques

Plus en détail

Chapitre 1. L algorithme génétique

Chapitre 1. L algorithme génétique Chapitre 1 L algorithme génétique L algorithme génétique (AG) est un algorithme de recherche basé sur les mécanismes de la sélection naturelle et de la génétique. Il combine une stratégie de survie des

Plus en détail

TP Compilation Analyse lexicale

TP Compilation Analyse lexicale TP Compilation Analyse lexicale Eric Ramat ramat@lisic.univ-littoral.fr 9 mai 2014 Durée : 6 heures 1 Introduction Le but de cet TP est de vous donner les bases nécessaires afin de pouvoir écrire votre

Plus en détail

Master Informatique Fondamentale - M1 Compilation

Master Informatique Fondamentale - M1 Compilation Master Informatique Fondamentale - M1 Compilation Systèmes de types Paul Feautrier ENS de Lyon Paul.Feautrier@ens-lyon.fr perso.ens-lyon.fr/paul.feautrier 8 février 2007 1 / 20 Système de types Un type

Plus en détail

Théorie des Langages

Théorie des Langages Théorie des Langages Automates Claude Moulin Université de Technologie de Compiègne Printemps 2013 Sommaire 1 Automate fini 2 Automate et langages réguliers 3 Automate à pile Automate fini déterministe

Plus en détail

Chapitre 2. Eléments pour comprendre un énoncé

Chapitre 2. Eléments pour comprendre un énoncé Chapitre 2 Eléments pour comprendre un énoncé Ce chapitre est consacré à la compréhension d un énoncé. Pour démontrer un énoncé donné, il faut se reporter au chapitre suivant. Les tables de vérité données

Plus en détail

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application Université de Provence Licence Math-Info Première Année V. Phan Luong Algorithmique et Programmation en Python Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application 1 Ordinateur Un

Plus en détail

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/

Machines composées de (depuis 1940 env.) : http://cui.unige.ch/isi/cours/std/ données pr ogramme 11111101 11001101 01000101 b us disque ma gnétique processeur écran Structures de données et algorithmes Ordinateurs Gilles Falquet, printemps-été 2002 Machines composées de (depuis

Plus en détail

Algorithmique. Mode d application

Algorithmique. Mode d application I - Généralités Algorithmique T ale S Définition: Un algorithme est une suite finie d instructions permettant la résolution systématique d un problème donné. Un algorithme peut-être utilisé pour décrire

Plus en détail

Partie I : Automates et langages

Partie I : Automates et langages 2 Les calculatrices sont interdites. N.B. : Le candidat attachera la plus grande importance à la clarté, à la précision et à la concision de la rédaction. Si un candidat est amené à repérer ce qui peut

Plus en détail

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

INTRODUCTION A JAVA. Fichier en langage machine Exécutable INTRODUCTION A JAVA JAVA est un langage orienté-objet pur. Il ressemble beaucoup à C++ au niveau de la syntaxe. En revanche, ces deux langages sont très différents dans leur structure (organisation du

Plus en détail

Epidémiologie, l urne de Pólya, partie II

Epidémiologie, l urne de Pólya, partie II Epidémiologie, l urne de Pólya, partie II Se mettre par groupe de deux. Traiter la fiche dans l ordre. Un compte de rendu de TP devra être rendu avec les réponses écrites aux questions, les recherches

Plus en détail

Enveloppes convexes dans le plan

Enveloppes convexes dans le plan ÉCOLE POLYTECHNIQUE ÉCOLES NORMALES SUPÉRIEURES ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE B (XECLR)

Plus en détail

Logique informatique 2013-2014. Examen

Logique informatique 2013-2014. Examen Logique informatique 2013-2014. Examen 30 mai 2013. Durée 3h. Tous les documents sont autorisés. Seuls les résultats du cours peuvent être utilisés sans démonstration. Le barême et la longueur des solutions

Plus en détail

Algorithmique - Programmation 1. Cours 10

Algorithmique - Programmation 1. Cours 10 Algorithmique - Programmation 1 Cours 10 Université Henri Poincaré CESS Epinal Automne 2008 1/ 25 Plan Caml fonctionnel vs impératif Caml fonctionnel vs impératif Le type unit Données mutables Les structures

Plus en détail

Algorithmique et programmation. Cours d'algorithmique illustré par des exemples pour le picbasic

Algorithmique et programmation. Cours d'algorithmique illustré par des exemples pour le picbasic Algorithmique et programmation Cours d'algorithmique illustré par des exemples pour le picbasic Même s'il est possible d'écrire un programme petit à petit par touches successives, le résultat est souvent

Plus en détail

- Mobiliser les résultats sur le second degré dans le cadre de la résolution d un problème.

- Mobiliser les résultats sur le second degré dans le cadre de la résolution d un problème. Mathématiques - classe de 1ère des séries STI2D et STL. 1. Analyse On dote les élèves d outils mathématiques permettant de traiter des problèmes relevant de la modélisation de phénomènes continus ou discrets.

Plus en détail

Les limites théoriques de l informatique Les problèmes indécidables

Les limites théoriques de l informatique Les problèmes indécidables Les limites théoriques de l informatique Les problèmes indécidables Samuel Fiorini - Gilles Geeraerts - Jean-François Raskin Université Libre de Bruxelles Académie Royale des Sciences Bruxelles 3/3/2010

Plus en détail

Projet Programmation 2012-2013

Projet Programmation 2012-2013 Projet Programmation 2012-2013 Cours d informatique de Deuxième Année Licence L1.2 Gestion du trafic aérien d un aéroport Le projet est à réaliser par binôme (2). Une soutenance aura lieu lors de la dernière

Plus en détail

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5

Introduction à l algorithmique et à la programmation 2013-2014. Cyril Nicaud Cyril.Nicaud@univ-mlv.fr. Cours 1 / 5 Introduction à l algorithmique et à la programmation IUT 1ère année 2013-2014 Cyril Nicaud Cyril.Nicaud@univ-mlv.fr Cours 1 / 5 Déroulement du cours Organisation : 5 séances de 2h de cours 10 séances de

Plus en détail

Tableaux et pointeurs (corrigé)

Tableaux et pointeurs (corrigé) Tableaux et pointeurs (corrigé) Tous les exercices sont à faire. 1 Tableaux Exercice 1. Moyenne (*) Écrivez une fonction qui calcule la moyenne de n nombres stockés dans un tableau de double. Prototype

Plus en détail

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris

Objectifs du cours d aujourd hui. Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Objectifs du cours d aujourd hui Informatique I : Cours d introduction à l informatique et à la programmation Structures de Données Abstraites & Tris Continuer l approfondissement de la programmation de

Plus en détail

Épreuve d informatique 2011

Épreuve d informatique 2011 A 2011 INFO. MP ÉCOLE NATIONALE DES PONTS ET CHAUSSÉES, ÉCOLES NATIONALES SUPÉRIEURES DE L AÉRONAUTIQUE ET DE L ESPACE, DE TECHNIQUES AVANCÉES, DES TÉLÉCOMMUNICATIONS, DES MINES DE PARIS, DES MINES DE

Plus en détail

NOTES DE COURS (SUPPLÉMENTAIRES) POUR LE COURS MATHÉMATIQUES DISCRÈTES MAT1500. References

NOTES DE COURS (SUPPLÉMENTAIRES) POUR LE COURS MATHÉMATIQUES DISCRÈTES MAT1500. References NOTES DE COURS (SUPPLÉMENTAIRES) POUR LE COURS MATHÉMATIQUES DISCRÈTES MAT1500 ABRAHAM BROER References [R] Kenneth H. Rosen, Mathématiques discrètes, Édition révisée Chenelière McGraw-Hill, 2002. 1. But

Plus en détail

Introduction à la Programmation 1

Introduction à la Programmation 1 Introduction à la Programmation 1 Séance de cours/td Université Paris-Diderot Objectifs: Découverte du type String. Comprendre qu il y a des types différents. Maîtriser les expressions booléennes dans

Plus en détail

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions

Cours d introduction à l informatique. Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Cours d introduction à l informatique Partie 2 : Comment écrire un algorithme? Qu est-ce qu une variable? Expressions et instructions Qu est-ce qu un Une recette de cuisine algorithme? Protocole expérimental

Plus en détail

RÈGLE N 1 : SAUVEGARDEZ VOS DONNÉES

RÈGLE N 1 : SAUVEGARDEZ VOS DONNÉES LE GUIDE RÈGLE N 1 : SAUVEGARDEZ VOS DONNÉES On ne le répétera jamais assez : sans protection, les virus, vers et autres chevaux de Troie peuvent s inviter en moins d une seconde sur votre PC. Même si

Plus en détail

Représentation des nombres entiers et réels. en binaire en mémoire

Représentation des nombres entiers et réels. en binaire en mémoire L3 Mag1 Phys. fond., cours C 15-16 Rep. des nbs. en binaire 25-09-05 23 :06 :02 page 1 1 Nombres entiers 1.1 Représentation binaire Représentation des nombres entiers et réels Tout entier positif n peut

Plus en détail

Quelles sont les menaces contre le poste de travail informatisé et comment s en prémunir?

Quelles sont les menaces contre le poste de travail informatisé et comment s en prémunir? Quelles sont les menaces contre le poste de travail informatisé et comment s en prémunir? Michel Futtersack, Faculté de Droit, Université Paris Descartes, Sorbonne Paris Cité Tout système informatique

Plus en détail

Logiciel Statistique : SPSS

Logiciel Statistique : SPSS Faculté des Sciences Économiques et de Gestion de Tunis Logiciel Statistique : SPSS Notes du cours pour les étudiants du Master Recherche en Marketing, Management & Finance Dr. Jalila ATTAFI 2011-2012

Plus en détail

Architecture des ordinateurs TP 3

Architecture des ordinateurs TP 3 Architecture des ordinateurs ESIPE - IR1 TP 3 Objectif de cette séance L objectif de cette séance est d apprendre à utiliser la pile et à écrire des fonctions en assembleur En particulier, nous verrons

Plus en détail

Notion de portée locale (1)

Notion de portée locale (1) Notion de portée locale (1) Les notions de portée locale v.s. globale définies pour les blocs sont également valides dans le cadre des fonctions 1. Comme dans le cas des blocs, la portée permet de résoudre

Plus en détail

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB

IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB IMAGES NUMÉRIQUES MATRICIELLES EN SCILAB Ce document, écrit par des animateurs de l IREM de Besançon, a pour objectif de présenter quelques unes des fonctions du logiciel Scilab, celles qui sont spécifiques

Plus en détail

Autour des nombres pseudo-aléatoires

Autour des nombres pseudo-aléatoires Lycée Chaptal PCSI-PC* Informatique générale pour l ingénieur Autour des nombres pseudo-aléatoires Introduction Produire des suites de nombres aléatoires est une nécessité dans de nombreux domaines de

Plus en détail

Cours 01 - Les structures de données

Cours 01 - Les structures de données Cours 01 - Les structures de données MPSI - Prytanée National Militaire Pascal Delahaye 1 er mars 2015 Les programmes informatiques, traitent des données, créent des données et renvoient des données. Pour

Plus en détail

Des macros Excel pour exporter et importer des modules de code VBA

Des macros Excel pour exporter et importer des modules de code VBA Cah. Techn. Inra, 2008, 65, 13-22 Des macros Excel pour exporter et importer des modules de code VBA Jean-Baptiste Duclos 1 Résumé : Cet article présente deux macros VBA Excel pour sauvegarder facilement

Plus en détail

INFO-F-302 Informatique Fondamentale Projet : Logique du Premier Ordre et Utilisation de l Outil Z3

INFO-F-302 Informatique Fondamentale Projet : Logique du Premier Ordre et Utilisation de l Outil Z3 UNIVERSITÉ LIBRE DE BRUXELLES (corrected version 20120416) INFO-F-302 Informatique Fondamentale Projet : Logique du Premier Ordre et Utilisation de l Outil Z3 L objectif de ce projet est de modéliser des

Plus en détail

Acquisition : Les exemples d applications :

Acquisition : Les exemples d applications : Acquisition : Les exemples d applications : Exemple 1 : Assistant Programmation à l aide de l assistant Nous allons générer une tension V1 qui varie de 0 à 5V. Cette tension augmentera d un pas: p = 5

Plus en détail

Propagation virale sur le Web Le ver BackTrack

Propagation virale sur le Web Le ver BackTrack Propagation virale sur le Web Le ver BackTrack Althes (http://www.althes.fr) Revision 1 - December 2002 Vincent Royer 1. Introduction Au cours de ces dernières années, un certain nombre

Plus en détail

Correction TD de cryptographie n o 1

Correction TD de cryptographie n o 1 Sécurité / Cryptologie Correction TD de cryptographie n o 1 Ce TD survole les différents concepts vus en cours 1 Se familiariser avec les ordres de grandeur Exercice 1. La force brute Le facteur de travail

Plus en détail

Introduction générale au codage de canal

Introduction générale au codage de canal Codage de canal et turbo-codes 15/9/2 1/7 Introduction générale au codage de canal Table des matières Table des matières... 1 Table des figures... 1 1. Introduction... 2 2. Notion de message numérique...

Plus en détail

ULYSSE EST DANS LA PLACE!

ULYSSE EST DANS LA PLACE! LE GUIDE ULYSSE EST DANS LA PLACE! Cheval de Troie. Programme discret, généralement inclus dans un logiciel anodin (jeu, utilitaire), contenant une portion de code malveillant qui contourne certains dispositifs

Plus en détail

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet

Conception et Développement Orientés Objets Cours 1 : Introduction. 2 Les paradigmes de programmation. 3 Les concepts de la programmation objet CNAM UV 19357 Année 2003-2004 David Delahaye David.Delahaye@cnam.fr Conception et Développement Orientés Objets Cours 1 : Introduction 1 Présentation de la valeur Ce cours s adresse à toute personne ayant

Plus en détail

Utilisation des tableaux numériques

Utilisation des tableaux numériques 8 Utilisation des tableaux numériques Les tableaux représentent un type de stockage de données souvent utilisé en langage C. Le Chapitre 6 vous en a donné un bref aperçu. Aujourd hui, vous allez étudier

Plus en détail

La machine de Monsieur Turing

La machine de Monsieur Turing S il faut désigner une seule personne comme le père de l informatique, c est sans nul doute Alan Mathison Turing, qui, à la fois, a défini l objet d étude de l informatique le calcul, a contribué de manière

Plus en détail

Programmation C. Apprendre à développer des programmes simples dans le langage C

Programmation C. Apprendre à développer des programmes simples dans le langage C Programmation C Apprendre à développer des programmes simples dans le langage C Notes de cours sont disponibles sur http://astro.u-strasbg.fr/scyon/stusm (attention les majuscules sont importantes) Modalités

Plus en détail

Problèmes de Mathématiques Filtres et ultrafiltres

Problèmes de Mathématiques Filtres et ultrafiltres Énoncé Soit E un ensemble non vide. On dit qu un sous-ensemble F de P(E) est un filtre sur E si (P 0 ) F. (P 1 ) (X, Y ) F 2, X Y F. (P 2 ) X F, Y P(E) : X Y Y F. (P 3 ) / F. Première Partie 1. Que dire

Plus en détail

Conception des systèmes répartis

Conception des systèmes répartis Conception des systèmes répartis Principes et concepts Gérard Padiou Département Informatique et Mathématiques appliquées ENSEEIHT Octobre 2012 Gérard Padiou Conception des systèmes répartis 1 / 37 plan

Plus en détail

Licence ST Université Claude Bernard Lyon I LIF1 : Algorithmique et Programmation C Bases du langage C 1 Conclusion de la dernière fois Introduction de l algorithmique générale pour permettre de traiter

Plus en détail

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation

Travaux pratiques. Compression en codage de Huffman. 1.3. Organisation d un projet de programmation Université de Savoie Module ETRS711 Travaux pratiques Compression en codage de Huffman 1. Organisation du projet 1.1. Objectifs Le but de ce projet est d'écrire un programme permettant de compresser des

Plus en détail

Tableaux (introduction) et types de base

Tableaux (introduction) et types de base Tableaux (introduction) et types de base A. Motivation..................................................... 4 B. Les tableaux.................................................... 5 C. Construction des tableaux.......................................

Plus en détail

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT Ces exercices portent sur les items 2, 3 et 5 du programme d informatique des classes préparatoires,

Plus en détail

PG208, Projet n 1 : Gestion d une bibliothèque

PG208, Projet n 1 : Gestion d une bibliothèque PG208, Projet n 1 : Gestion d une bibliothèque Bertrand LE GAL, Serge BOUTER et Clément VUCHENER Filière électronique 2 eme année - Année universitaire 2011-2012 1 Introduction 1.1 Objectif du projet L

Plus en détail

TP 1. Prise en main du langage Python

TP 1. Prise en main du langage Python TP. Prise en main du langage Python Cette année nous travaillerons avec le langage Python version 3. ; nous utiliserons l environnement de développement IDLE. Étape 0. Dans votre espace personnel, créer

Plus en détail

Démonstrations. Chapitre 4. 4.1 Introduction

Démonstrations. Chapitre 4. 4.1 Introduction Chapitre 4 Démonstrations L objectif de ce chapitre est de commencer à aborder la question fondamentale suivante : qu est-ce qu une démonstration? Pour cela, plus précisément, on va se focaliser dans ce

Plus en détail