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

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

Machines de Turing. Chapitre 14 14.1. DÉFINITION ET FONCTIONNEMENT

Machines de Turing. Chapitre 14 14.1. DÉFINITION ET FONCTIONNEMENT Chapitre 4 Machines de Turing Dans ce chapitre on présente un modèle de calcul introduit dans les années 3 par Turing, les machines de Turing. Ces machines formalisent la notion de calculabilité. La thèse

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

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

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

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

Procédures et fonctions

Procédures et fonctions Chapitre 5 Procédures et fonctions 5.1 Introduction Considérons le programme suivant, dont le but est d inverser les éléments d un tableau : public class InversionTableau1 { int t[]= {8, 2, 1, 23; Terminal.ecrireStringln("Tableau

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

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

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

Supplément théorique Inférence dans les réseaux bayésiens. Rappel théorique. Les processus aléatoires. Les réseaux bayésiens

Supplément théorique Inférence dans les réseaux bayésiens. Rappel théorique. Les processus aléatoires. Les réseaux bayésiens DÉPARTEMENT DE GÉNIE LOGICIEL ET DES TI LOG770 - SYSTÈMES INTELLIGENTS ÉTÉ 2011 Supplément théorique Inférence dans les réseaux bayésiens Rappel théorique Les processus aléatoires La plupart des processus

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

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

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

1. Lecture / Ecriture

1. Lecture / Ecriture IUT Arles Info 1 ère année - Module AP (Algorithmique) TD 2 Algo 1. Lecture / Ecriture Exercice I : Quels résultats produira ce programme : Variables val, double : numériques Val 231 Double val * 2 Ecrire

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

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

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

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

Introduction aux systèmes d exploitation

Introduction aux systèmes d exploitation Introduction aux systèmes d exploitation Le système d exploitation est un ensemble de logiciels qui pilotent la partie matérielle d un ordinateur. Les principales ressources gérées par un système d exploitation

Plus en détail

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme?

CCI Génie Logiciel UFR - IMA. Objectifs du cours d'aujourd'hui. Génie Logiciel Validation par le test. Qu est-ce que tester un programme? Validation par le test Objectifs du cours d'aujourd'hui Donner des réponses aux questions suivantes : Lydie du Bousquet 2 Qu est-ce que tester un programme? Exercice 1 : Inscrivez sur une feuille ce que

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

Langage C et aléa, séance 4

Langage C et aléa, séance 4 Langage C et aléa, séance 4 École des Mines de Nancy, séminaire d option Ingénierie Mathématique Frédéric Sur http://www.loria.fr/ sur/enseignement/courscalea/ 1 La bibliothèque GMP Nous allons utiliser

Plus en détail

Définitions. Numéro à préciser. (Durée : )

Définitions. Numéro à préciser. (Durée : ) Numéro à préciser (Durée : ) On étudie dans ce problème l ordre lexicographique pour les mots sur un alphabet fini et plusieurs constructions des cycles de De Bruijn. Les trois parties sont largement indépendantes.

Plus en détail

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu

SNAKE. Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp. Copie d écran du jeu SNAKE Programmation du jeu SNAKE sur la console Windows en C sous l IDE Devcpp Copie d écran du jeu Principe de fonctionnement du jeu : le serpent avance automatiquement, le joueur ne peut agir que sur

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

Installer Joomla. 2013 Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring

Installer Joomla. 2013 Pearson France Joomla! Le guide officiel Jennifer Marriott, Elin Waring 3 Installer Joomla Dans ce chapitre, nous procéderons au téléchargement et à l installation manuelle de Joomla, et nous expliquerons la configuration de base. Les captures d écran et les instructions font

Plus en détail

Points fixes de fonctions à domaine fini

Points fixes de fonctions à domaine fini ÉCOLE POLYTECHNIQUE ÉCOLE NORMALE SUPÉRIEURE DE CACHAN ÉCOLE SUPÉRIEURE DE PHYSIQUE ET DE CHIMIE INDUSTRIELLES CONCOURS D ADMISSION 2013 FILIÈRE MP HORS SPÉCIALITÉ INFO FILIÈRE PC COMPOSITION D INFORMATIQUE

Plus en détail

Programmation avancée

Programmation avancée Programmation avancée Chapitre 1 : Complexité et les ABR (arbres binaires de recherche) 1 1 IFSIC Université de Rennes-1 M2Crypto, octobre 2011 Plan du cours 1 2 3 4 5 6 7 8 9 10 Algorithmes Définition

Plus en détail

Introduction à l étude des Corps Finis

Introduction à l étude des Corps Finis Introduction à l étude des Corps Finis Robert Rolland (Résumé) 1 Introduction La structure de corps fini intervient dans divers domaines des mathématiques, en particulier dans la théorie de Galois sur

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

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

Cours d algorithmique pour la classe de 2nde

Cours d algorithmique pour la classe de 2nde Cours d algorithmique pour la classe de 2nde F.Gaudon 8 juillet 2009 Table des matières 1 Avant la programmation 2 1.1 Qu est ce qu un algorithme?................................. 2 1.2 Qu est ce qu un

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

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

TP : Gestion d une image au format PGM

TP : Gestion d une image au format PGM TP : Gestion d une image au format PGM Objectif : L objectif du sujet est de créer une classe de manipulation d images au format PGM (Portable GreyMap), et de programmer des opérations relativement simples

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

INF-130 Travail Pratique #2

INF-130 Travail Pratique #2 École de technologie supérieure INF-30 Travail Pratique #2 Travail individuel Tracé d un métro Francis Bourdeau, Frédérick Henri et Patrick Salois Remise à la 0 e semaine. Objectifs - Amener l étudiant

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

Primitives Cours maths Terminale S

Primitives Cours maths Terminale S Primitives Cours maths Terminale S Dans ce module est introduite la notion de primitive d une fonction sur un intervalle. On définit cette notion puis on montre qu une fonction admet une infinité de primitives

Plus en détail

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5

Claude Delannoy. Exercices C++ en langage. 3 e édition. Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Claude Delannoy Exercices en langage C++ 3 e édition Groupe Eyrolles, 1997, 1999, 2007, ISBN : 978-2-212-12201-5 Chapitre 3 Les fonctions Rappels Généralités Une fonction est un bloc d instructions éventuellement

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

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

Présentation des données pour une analyse statistique

Présentation des données pour une analyse statistique Présentation des données pour une analyse statistique Ce document décrit les points essentiels à vérifier avant d analyser des données par un logiciel statistique. Sommaire I. Règles à respecter lors de

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 informatique, à Python, et représentation des nombres en machine

Introduction à l informatique, à Python, et représentation des nombres en machine Introduction à l informatique, à Python, et représentation des nombres en machine Table des matières Qu est-ce-que l informatique? Qu est-ce-qu un ordinateur? 2 Principaux composants...............................................

Plus en détail

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels.

Licence de Sciences et Technologies. Fiche de cours 1 - Nombres réels. Licence de Sciences et Technologies EM21 - Analyse Fiche de cours 1 - Nombres réels. On connaît les ensembles suivants, tous munis d une addition, d une multiplication, et d une relation d ordre compatibles

Plus en détail

Introduction aux épreuves de logique des concours ACCÈS et SESAME

Introduction aux épreuves de logique des concours ACCÈS et SESAME Introduction aux épreuves de logique des concours ACCÈS et SESAME «La chance aide parfois, le travail toujours» Vous vous apprêtez à vous lancer dans cette course contre la montre qu est l admission en

Plus en détail

Processus d achat PCard

Processus d achat PCard SOMMAIRE Introduction... 3 Connexion à l espace client... 3 Accès au site internet... 3 Identification... 3 Choix du fournisseur... 5 Page d accueil... 5 Choix du point de livraison... 6 Mes informations...

Plus en détail

Guides des bonnes pratiques de sécurité informatique pour une STA ( Solution Technique d'accès )

Guides des bonnes pratiques de sécurité informatique pour une STA ( Solution Technique d'accès ) Guides des bonnes pratiques de sécurité informatique pour une STA ( Solution Technique d'accès ) Sommaire 1. Protection de son matériel et de ses données Création d'un utilisateur avec mot de passe compliqué

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

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011

ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 Pour me contacter : irene.rougier@ac-clermont.fr 1. Introduction ATELIER ALGORITHME PREMIERS PAS Journée d information sur les nouveaux programmes de Première S-ES 2010-2011 De nombreux documents et informations

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

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

Modèles et simulations informatiques des problèmes de coopération entre agents

Modèles et simulations informatiques des problèmes de coopération entre agents Modèles et simulations informatiques des problèmes de coopération entre agents Bruno Beaufils LIFL Axe CIM Équipe SMAC Laboratoire d'informatique Plan 1. Motivations 2. Dilemme itéré du prisonnier 3. Simulations

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

Licence Sciences et Technologies Examen janvier 2010

Licence Sciences et Technologies Examen janvier 2010 Université de Provence Introduction à l Informatique Licence Sciences et Technologies Examen janvier 2010 Année 2009-10 Aucun document n est autorisé Les exercices peuvent être traités dans le désordre.

Plus en détail

Exemple. Il ne faudra pas confondre (101) 2 et (101) 10 Si a 0,a 1, a 2,, a n sont n+1 chiffres de 0 à 1, le

Exemple. Il ne faudra pas confondre (101) 2 et (101) 10 Si a 0,a 1, a 2,, a n sont n+1 chiffres de 0 à 1, le Chapitre I - arithmé La base décimale Quand on représente un nombre entier, positif, on utilise généralement la base 10. Cela signifie que, de la droite vers la gauche, chaque nombre indiqué compte 10

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

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements

Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Exo7 Logique et raisonnements Vidéo partie 1. Logique Vidéo partie 2. Raisonnements Exercices Logique, ensembles, raisonnements Quelques motivations Il est important d avoir un langage rigoureux. La langue

Plus en détail

Initiation à la Programmation en Logique avec SISCtus Prolog

Initiation à la Programmation en Logique avec SISCtus Prolog Initiation à la Programmation en Logique avec SISCtus Prolog Identificateurs Ils sont représentés par une suite de caractères alphanumériques commençant par une lettre minuscule (les lettres accentuées

Plus en détail

Représentation des Nombres

Représentation des Nombres Chapitre 5 Représentation des Nombres 5. Representation des entiers 5.. Principe des représentations en base b Base L entier écrit 344 correspond a 3 mille + 4 cent + dix + 4. Plus généralement a n a n...

Plus en détail

Suites numériques 3. 1 Convergence et limite d une suite

Suites numériques 3. 1 Convergence et limite d une suite Suites numériques 3 1 Convergence et limite d une suite Nous savons que les termes de certaines suites s approchent de plus en plus d une certaine valeur quand n augmente : par exemple, les nombres u n

Plus en détail

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R

Architecture des ordinateurs. Optimisation : pipeline. Pipeline (I) Pipeline (II) Exemple simplifié : Instructions de type R Architecture des ordinateurs Licence Informatique - Université de Provence Jean-Marc Talbot Optimisation : pipeline jtalbot@cmi.univ-mrs.fr L3 Informatique - Université de Provence () Architecture des

Plus en détail

Quelques éléments de compilation en C et makefiles

Quelques éléments de compilation en C et makefiles Quelques éléments de compilation en C et makefiles Guillaume Feuillade 1 Compiler un programme C Le principe de la compilation consiste à passer d un ensemble de fichiers de code à un programme exécutable

Plus en détail

4 e ALGORITHMIQUE. Année scolaire 2010 / 2011

4 e ALGORITHMIQUE. Année scolaire 2010 / 2011 ALGORITHMIQUE PASCAL CHAUVIN 4 e Année scolaire 2010 / 2011 Paternité Pas d utilisation commerciale Partage des conditions initiales à l identique Licence Creative Commons 2.0 France PASCAL CHAUVIN Collège

Plus en détail

Algorithmes (2) Premiers programmes sur calculatrice. Programmation sur calculatrice TI. codage

Algorithmes (2) Premiers programmes sur calculatrice. Programmation sur calculatrice TI. codage Objectifs : lgorithmes () Premiers programmes sur calculatrice - passer de la notion d algorithme à la notion de programme - aborder la notion de langage de programmation - s initier à la programmation

Plus en détail

Analyse de la complexité algorithmique (1)

Analyse de la complexité algorithmique (1) Analyse de la complexité algorithmique (1) L analyse de la complexité telle que nous l avons vue jusqu à présent nous a essentiellement servi à déterminer si un problème est ou non facile (i.e. soluble

Plus en détail

LE BINAIRE ET LE CODAGE DES INFORMATIONS

LE BINAIRE ET LE CODAGE DES INFORMATIONS LE BINAIRE ET LE CODAGE DES INFORMATIONS Objectifs : Connaître le système binaire, le bit et l'octet. Comprendre le codage des informations en informatique I LE SYSTEME BINAIRE ) Le binaire L informatique

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

Démarrage rapide. Protection de logiciels sous MAC avec DinkeyDongle. Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika.

Démarrage rapide. Protection de logiciels sous MAC avec DinkeyDongle. Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika. Démarrage rapide Protection de logiciels sous MAC avec DinkeyDongle Contact commercial : Tél. : 02 47 35 70 35 Email : com@aplika.fr Contact Technique : Tél. : 02 47 35 53 36 Email : support@aplika.fr

Plus en détail

Computix. Dans la colonne du 10, B choisit le 7 inférieur A 10 B 7

Computix. Dans la colonne du 10, B choisit le 7 inférieur A 10 B 7 Computix Matériel : grilles carrées comportant un nombre impair de cases. Quelques-unes sont données en annexe ; mais on peut aussi les construire soi-même, ou les faire construire par les élèves. Elles

Plus en détail

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A

Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Informatique TP4 : Manipulations de fichiers Manipulations de chaînes et de tableaux CPP 1A Djamel Aouane, Frederic Devernay, Matthieu Moy Mars - avril 2015 1 Manipulations de fichiers Pour organiser des

Plus en détail

Congruences et théorème chinois des restes

Congruences et théorème chinois des restes Congruences et théorème chinois des restes Michel Van Caneghem Février 2003 Turing : des codes secrets aux machines universelles #2 c 2003 MVC Les congruences Développé au début du 19ème siècle par Carl

Plus en détail

MÉRÉ Aurélien FIIFO1. Pathfinder

MÉRÉ Aurélien FIIFO1. Pathfinder MÉRÉ Aurélien FIIFO1 AMC Pathfinder 1 Sommaire Préambule... 3 Modélisation de l espace... 4 Modélisation des cases δ, α... 4 Interface en mode texte... 5 Modélisation du robot... 8 1 ) Le type Robot...

Plus en détail

IPT : Cours 2. La représentation informatique des nombres

IPT : Cours 2. La représentation informatique des nombres IPT : Cours 2 La représentation informatique des nombres (3 ou 4 heures) MPSI-Schwarz : Prytanée National Militaire Pascal Delahaye 28 septembre 2015 1 Codage en base 2 Définition 1 : Tout nombre décimal

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

Représentation d un entier en base b

Représentation d un entier en base b Représentation d un entier en base b 13 octobre 2012 1 Prérequis Les bases de la programmation en langage sont supposées avoir été travaillées L écriture en base b d un entier est ainsi défini à partir

Plus en détail

Introduction à la programmation

Introduction à la programmation Chapitre 2 Introduction à la programmation Nous avons vu, dans le chapitre précédent, ce qu est un algorithme et un certain nombre de façons pour exécuter les algorithmes à la main. Nous allons voir, dans

Plus en détail

Compression Compression par dictionnaires

Compression Compression par dictionnaires Compression Compression par dictionnaires E. Jeandel Compression par dictionnaire Principe : Avoir une liste des mots fréquents ; Lorsqu on trouve un mot dans la liste, remplacer ce mot par sa position

Plus en détail

StatEnAction 2009/10/30 11:26 page 111 #127 CHAPITRE 10. Machines à sous

StatEnAction 2009/10/30 11:26 page 111 #127 CHAPITRE 10. Machines à sous StatEnAction 2009/0/30 :26 page #27 CHAPITRE 0 Machines à sous Résumé. On étudie un problème lié aux jeux de hasard. Il concerne les machines à sous et est appelé problème de prédiction de bandits à deux

Plus en détail

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications

Université Paris-Dauphine DUMI2E 1ère année, 2009-2010. Applications Université Paris-Dauphine DUMI2E 1ère année, 2009-2010 Applications 1 Introduction Une fonction f (plus précisément, une fonction réelle d une variable réelle) est une règle qui associe à tout réel x au

Plus en détail

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens

INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens INFO-F-101 Programmation Projet 4 Page Ranking(1/4): Création de la matrice du compte des liens Année académique 2009 2010 1 Introduction Ce projet est le premier d une série de quatre projets qui ont

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

Expressions, types et variables en Python

Expressions, types et variables en Python Expressions, types et variables en Python 2015-08-26 1 Expressions Les valeurs désignent les données manipulées par un algorithme ou une fonction. Une valeur peut ainsi être : un nombre, un caractère,

Plus en détail

L informatique en BCPST

L informatique en BCPST L informatique en BCPST Présentation générale Sylvain Pelletier Septembre 2014 Sylvain Pelletier L informatique en BCPST Septembre 2014 1 / 20 Informatique, algorithmique, programmation Utiliser la rapidité

Plus en détail

Introduction aux exercices en Java

Introduction aux exercices en Java Introduction aux exercices en Java Avant de commencer les séries proprement dites, nous allons voir quelques informations utiles concernant le langage de programmation principal de ce cours d'informatique

Plus en détail

Infolettre #6: SkyDrive

Infolettre #6: SkyDrive Infolettre #6: SkyDrive Table des matières AVANTAGES DE SKYDRIVE 2 DÉSAVANTAGES DE SKYDRIVE 2 INSCRIPTION AU SERVICE 2 MODIFIER VOTRE PROFIL 4 AJOUTER UN DOSSIER 5 AJOUTER DES FICHIERS DANS LE DOSSIER

Plus en détail

Encryptions, compression et partitionnement des données

Encryptions, compression et partitionnement des données Encryptions, compression et partitionnement des données Version 1.0 Grégory CASANOVA 2 Compression, encryption et partitionnement des données Sommaire 1 Introduction... 3 2 Encryption transparente des

Plus en détail

Rédiger un rapport technique

Rédiger un rapport technique Rédiger un rapport technique Prof. N. Fatemi Plan Introduction Présentation écrite Programmation du travail Rédaction Conseils génériques Références 2 Introduction Objectifs du cours Savoir étudier un

Plus en détail

Informatique TP1 : Découverte de Python CPP 1A

Informatique TP1 : Découverte de Python CPP 1A Informatique TP1 : Découverte de Python CPP 1A Romain Casati, Wafa Johal, Frederic Devernay, Matthieu Moy Avril - juin 2014 1 Découverte de l IDE : IDLE IDLE est un environnement de développement (Integrated

Plus en détail

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview. Sciences et Technologies de l Industrie et du Développement Durable Formation des enseignants parcours : ET24 Modèle de

Plus en détail

les prévisions securité 2015

les prévisions securité 2015 les prévisions securité 2015 Panda Security Les prévisions sécurité 2015 du PandaLabs Selon les estimations du Pandalabs, les chiffres concernant la création de malware vont encore une fois battre des

Plus en détail

Sujet Projets 2 nd Semestre

Sujet Projets 2 nd Semestre Sujet Projets 2 nd Semestre Seuls les appels systèmes vus en cours sont autorisés. L usage d autres fonctions doit impérativement être validé par l enseignant. La date d ouverture pour l assignation de

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

Projet de Machines Virtuelles

Projet de Machines Virtuelles Projet de Machines Virtuelles Gabriel Kerneis Vendredi 11 mars 2011 1 Introduction Le but de ce sujet est d implémenter la MARS (Memory Array Redcode Simulator), une machine virtuelle utilisée dans le

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

Ordinateur, système d exploitation

Ordinateur, système d exploitation Ordinateur, système d exploitation 2014-09-02 1 Système d exploitation Machine de von Neumann : seul un programme s exécute. Besoins utilisateurs : plein de programmes. Système d exploitation (Operating

Plus en détail