📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

Ethical Hacking in 15 Hours - 2023 Edition - Learn to Hack! (Part 1)

The Cyber Mentors7:14:30

Transcription

Bonjour et bienvenue dans cette édition de 15 heures du cours de piratage éthique pratique. Je m'appelle Heath Adams et je serai votre instructeur pour l'intégralité de ce cours.

Ok, rapide modification. Vous regardez peut-être la vidéo YouTube et voyez qu'elle ne dure que 7 heures et plus. C'est parce que YouTube a récemment mis en place une règle selon laquelle nous ne pouvons plus avoir de vidéos de plus de 12 heures. J'ai donc dû diviser cela en deux parties. J'ai dû ajouter cette modification et revenir en arrière pour tout réencoder. C'est donc officiellement la partie un, et nous allons passer en revue la partie un, puis j'aurai un lien dans la description ci-dessous pour la partie deux. Alors, sans plus tarder, plongeons directement.

Qui suis-je à nouveau ? Je m'appelle Heath Adams et je suis le PDG de TCM Security. Nous sommes une société de conseil en cybersécurité et un établissement d'enseignement. Au quotidien, nous nous concentrons principalement sur ce qu'on appelle le piratage éthique. C'est là que les entreprises nous engagent pour essayer de pirater leurs systèmes afin de trouver des vulnérabilités et de les informer de tout problème de sécurité qu'elles pourraient avoir avant que les méchants ne les trouvent eux-mêmes. Cela peut consister à pirater un réseau, une application web, un réseau sans fil, des applications mobiles, des applications client lourd, etc. Je peux même pirater un bâtiment, ce qui s'appelle un test d'intrusion physique. Il existe de nombreux types de piratage. Nous allons en couvrir une bonne partie dans ce cours.

Le piratage est un domaine tellement intéressant car vous n'avez pas nécessairement besoin d'avoir une formation en informatique. Je suis en fait un ancien comptable et je suis tombé amoureux du piratage, et je connais des gens de tous horizons. Nous avons quelqu'un qui travaille pour nous et qui était maire. J'ai vu des médecins, des pharmaciens, toutes sortes de parcours inhabituels dans le piratage éthique. Donc, si vous regardez ceci et que vous n'avez vraiment pas de formation formelle en informatique, ce n'est pas grave, tant que vous avez des connaissances informatiques de base, des connaissances réseau de base, c'est tout ce dont vous avez vraiment besoin pour réussir dans ce cours. Nous allons vous tenir la main tout au long du parcours et nous assurer que vous comprenez tout ce qui vous est présenté.

En ce qui concerne les qualifications, j'ai listé mes certifications de hacker. Ce ne sont pas toutes les certifications, mais ce sont celles qui sont pertinentes, qui font peut-être de moi un expert, quoi qu'il en soit. J'ai également listé mes réseaux sociaux. Si vous souhaitez me suivre sur LinkedIn ou suivre l'entreprise sur Twitter, suivez-moi sur YouTube. J'adorerais que vous vous abonniez dès maintenant, avant même de commencer, ou si vous préférez attendre la fin, c'est parfaitement bien aussi. Nous nous dirigeons vers un million d'abonnés et vous pourriez en faire partie, et j'adorerais absolument cela si vous le faisiez.

Nous avons également quelques sites. Nous avons notre site de conseil, qui est simplement tcm-tech.com. Nous avons l'académie, que je vais vous montrer dans une seconde. Nous avons également un site de certifications.

Maintenant, avant de plonger dans les choses, vous pourriez vous dire que ce cours semble familier, et c'est peut-être le cas. L'année dernière, nous avons sorti un cours de piratage éthique de 12 heures. Cette année, il est de 15 heures. L'année dernière, ce cours a obtenu 3 millions de vues en 11 mois, ce qui est excellent. Il n'a même pas encore un an et nous avons enseigné pas mal de leçons ici. Vous pouvez voir toutes les différentes leçons que nous avons enseignées ici.

Alors vous pourriez dire : "Hé, quelle est la différence entre ce cours de 12 heures et ce cours de 15 heures ?" Eh bien, il y a pas mal de différences, trois heures pour être exact. Mais même avec ces trois heures de différence, nous avons abordé beaucoup de choses. Par exemple, dans la section Kali Linux, elle a été complètement refaite. La section Python a été complètement refaite. Donc, beaucoup de ces vidéos, outils et idées ont été intégrés dans les méthodologies de 2023. Il y a donc non seulement trois heures de plus, mais beaucoup de vidéos et de contenu ont été recréés spécifiquement pour 2023 afin de s'assurer que ce cours est à jour et frais. Vous obtenez donc un tout nouveau cours, c'est le dernier cri.

Ce cours est en fait une extension de 25 heures, maintenant près de 27 heures de matériel, qui se trouve sur notre site web TCM Security Academy. Et c'est la seule fois où je vais essayer de vous vendre quelque chose pendant toute la durée de ces 15 heures. Je vous demande donc juste une minute de votre temps. Ce cours prend la première moitié, les 15 heures prennent la première moitié de ce qui se trouve ici. Si nous faisons défiler vers le bas jusqu'au programme, nous avons en fait toute la première moitié ici. Vous verrez cela si vous venez sur le site web, c'est exactement la même chose que ce que vous obtenez dans ce cours. Cela va jusqu'au projet de synthèse et aux dépassements de tampon ici, et c'est un excellent point d'arrêt. Nous irons au projet de synthèse, nous le parcourrons, c'est un excellent point médian pour tester vos compétences. Si vous arrivez au point médian et que vous dites : "J'aime vraiment ça, je veux le reste du cours", nous avons encore plus de choses ici. Nous avons Active Directory, qui est l'une de mes choses préférées à tester, et je dirais que c'est la meilleure partie de tout le cours. Nous enseignons cela, nous couvrons une bonne partie de cela, tout cela concerne Active Directory ici. Nous couvrons plus d'exploitation post-exploitation, nous couvrons les tests d'intrusion d'applications web, les tests d'intrusion d'applications, nous abordons un peu les tests sans fil et les documents juridiques et tout ce genre de choses amusantes.

Donc, les 15 heures qui sont ici sont une excellente, excellente ressource. Elles vous permettent de démarrer. Si vous aimez ça, si vous aimez notre enseignement, si vous en voulez plus, ce cours coûte 29,99 $. Tous nos cours, en fait, sur l'académie, si nous allons ici, sont tous à 29,99 $. Donc, si vous êtes intéressé, nous avons un pass tout accès qui vous donne accès à tout. Nous avons des cours sur Linux, Python, nous avons des cours sur l'escalade de privilèges, l'OSINT, les tests d'intrusion externes, toutes sortes de choses ici. Si cela vous intéresse, je vous encourage simplement à consulter le site web. Vous n'avez rien à acheter. C'est complètement gratuit à 100 %. Si vous voulez juste vous en tenir aux 15 heures.

Enfin, ce cours mène à une certification. Nous avons une certification appelée la PMTP, c'est la certification de test d'intrusion réseau pratique. Je mettrai le lien dans la description ci-dessous. C'est une certification unique en son genre. Vous passez par là, vous essayez de pirater une organisation, vous rédigez un rapport, vous présentez un débriefing, et le bon côté, c'est que cela vous prépare à l'emploi dans le domaine. Donc, si vous pouvez obtenir cette certification, cherchez réellement la PMTP sur LinkedIn ou Indeed, vous la trouverez dans les offres d'emploi.

Donc, ce cours, 15 heures de celui-ci, fait partie d'un programme de 50 heures que nous avons. Et donc, si vous pensez que vous êtes vraiment intéressé par ce domaine et que vous souhaitez peut-être une certification, envisagez également de regarder la PMTP. Et c'est tout. Nous allons terminer ici. La vente est terminée. S'il vous plaît, profitez de ces 15 heures. Si c'est le cas, aimez, commentez, abonnez-vous, tout ce genre de choses amusantes sur YouTube. Allons-y et plongeons dans ce cours. Je suis tellement impatient de vous enseigner dans cette édition 2023.

Très bien, je déteste les PowerPoint, mais j'adore ce modèle. Je ne sais pas ce qu'il a de si cool. Ce sont toutes les couleurs, je pense. Bienvenue dans une journée dans la vie d'un hacker éthique, édition 2022. Parlons du quotidien d'un testeur d'intrusion, et je vais le survoler à très haut niveau. Ce que nous faisons, c'est que nous sortons du lit, nous espérons que nous nous réveillons le matin et nous commençons notre journée. Et maintenant, notre journée peut consister à effectuer une évaluation, et nous allons parler des différents types d'évaluations qui existent. Il peut s'agir de rédiger un rapport, de donner un débriefing ou d'une combinaison des trois.

Lorsque nous effectuons une évaluation, nous parlons de différents types de tests d'intrusion ou de piratage éthique, et nous allons couvrir les types les plus courants. Nous parlerons également de quelques autres types. Une fois que nous avons effectué notre évaluation, nous devons rédiger un rapport. Nous livrons un rapport à notre client. Ce rapport est ensuite digéré et, finalement, nous leur donnons un débriefing s'ils le souhaitent, et nous discutons de nos conclusions. Nous allons donc couvrir tout ce processus du début à la fin.

Parlons des différents types d'évaluations que nous pouvons effectuer en tant que hacker éthique. Le premier type d'évaluation dont je veux parler est ce qu'on appelle un test d'intrusion de réseau externe. Et l'une des questions que nous posons aux gens lors des entretiens téléphoniques et des évaluations de base est la suivante : "Pouvez-vous nous dire ce qu'est un test d'intrusion externe par rapport à un test d'intrusion interne ?" Et honnêtement, je dirais qu'au moins la moitié des gens donnent la mauvaise réponse. Alors assurez-vous de faire attention et de prendre des notes, car cela pourrait apparaître lors d'un entretien.

Un test d'intrusion externe est probablement le type de test d'intrusion le plus courant que nous effectuons. Si vous venez d'être embauché comme testeur d'intrusion et que vous êtes nouveau dans le secteur, il est probable qu'on vous confie des tests d'intrusion de réseau externe. Ces tests d'intrusion sont les plus simples et quelque chose qu'un junior peut entreprendre et travailler pour acquérir de l'expérience et/ou de la confiance au fur et à mesure de son processus.

Un test d'intrusion externe consiste donc à examiner la sécurité d'une organisation de l'extérieur. Il peut s'agir de nous essayant de pirater depuis le sous-sol de notre mère, ou depuis un autre pays, ou quoi que ce soit d'autre. Quel que soit le scénario qui se déroule dans votre tête, c'est ce que cela pourrait être. Vous essayez de pirater de l'extérieur. La méthodologie pour les tests d'intrusion externes se concentre fortement sur ce qu'on appelle la collecte de renseignements open source, ou OSINT. Nous essayons de collecter autant d'informations et de données que possible sur une organisation : qui sont leurs employés, quel est leur format d'e-mail, ont-ils déjà été impliqués dans une violation, pouvons-nous découvrir quels mots de passe étaient dans ces violations, pouvons-nous collecter des données et les utiliser contre cette organisation pour atteindre un panneau de connexion ou pirater le VPN ou accéder à une zone où nous ne serions pas autorisés autrement.

Pourquoi nous concentrons-nous autant sur le renseignement open source ? Eh bien, parce qu'il s'agit d'une évaluation externe, vous devez penser à Internet dans son ensemble. Il y a des robots qui scannent Internet 24h/24 et 7j/7. Si vous ne me croyez pas, essayez de mettre en place un serveur SSH ou quelque chose de similaire et laissez-le fonctionner pendant 24 heures et voyez combien de tentatives de connexion vous recevez sur ce serveur. C'est beaucoup. Les robots scannent tout le temps. Qu'est-ce que cela signifie pour nous ? Eh bien, cela signifie que si nous effectuons une analyse de vulnérabilités et que nous trouvons quelque chose d'incroyablement dangereux, eh bien, quelqu'un l'a probablement déjà trouvé aussi. Donc, les chances que nous trouvions quelque chose comme l'exécution de code à distance où nous pouvons atterrir sur une machine de l'extérieur sans faire beaucoup de travail sont assez faibles. Généralement, les organisations ont leurs réseaux externes bien sécurisés du point de vue des correctifs. Nous examinons donc vraiment les informations que nous pouvons collecter : où se trouvent les panneaux de connexion, qui sont les utilisateurs et comment pouvons-nous les utiliser contre l'organisation.

C'est le type de test d'intrusion le plus courant que les organisations effectuent, à mon avis, pour deux raisons. La raison principale est que de nombreuses organisations de conformité exigent qu'un test d'intrusion de réseau externe soit effectué annuellement. Ce n'est pas vrai pour le reste des tests d'intrusion, bien que certaines organisations de conformité puissent dicter d'autres tests d'intrusion. L'externe est de loin le plus courant. L'autre aspect est que les tests d'intrusion externes ont tendance à être un peu moins chers que le reste des évaluations, en fonction de la taille et de la portée de l'engagement. Et de nombreuses organisations aiment tremper leurs orteils dans l'eau avant de faire plus d'évaluations avec une société de sécurité. Elles pourraient donc vous tester et dire : "Hé, faisons un test d'intrusion externe, nous verrons comment ça se passe. Nous vous aimons, nous vous embaucherons pour plus de choses." Donc, entre ces deux raisons, nous voyons beaucoup de tests d'intrusion de réseau externe, plus que tout le reste, à mon avis.

Ces tests d'intrusion durent généralement entre 32 et 40 heures en moyenne, bien que si vous avez un très grand engagement, cela peut durer beaucoup plus longtemps, ou si vous avez une très petite entreprise et que vous examinez une adresse IP ou cinq adresses IP et 10 employés, cela ne vous prendra probablement pas 32 heures pour faire ce test d'intrusion, peut-être entre 8 et 16 heures. Nous avons ensuite tendance à ajouter 8 à 16 heures supplémentaires pour la rédaction du rapport, et nous aborderons la rédaction du rapport vers la fin de cette vidéo.

Passons maintenant à ce qu'on appelle un test d'intrusion de réseau interne. Il s'agit d'évaluer la sécurité d'une organisation de l'intérieur du réseau. Cela signifie que nous avons franchi le périmètre, peut-être que nous avons envoyé un e-mail de phishing et que quelqu'un a ouvert notre e-mail, cliqué sur notre lien, et maintenant nous sommes à l'intérieur du réseau, ou peut-être que nous avons piraté le bâtiment et laissé une boîte de dépôt. Quel que soit le scénario que vous voulez imaginer, vous pouvez le faire. Ce que nous faisons de notre côté, c'est que nous envoyons généralement un ordinateur portable au client. Le client branche cet ordinateur portable, et nous pouvons nous connecter à distance à cet ordinateur portable et effectuer une évaluation du réseau comme si nous étions assis à l'intérieur du bureau. C'est pourquoi beaucoup de travail de nos jours est à distance, car nous n'avons plus besoin d'être sur place pour effectuer des tests d'intrusion internes.

La méthodologie pour un test d'intrusion interne se concentre fortement sur Active Directory. Maintenant, si vous ne savez pas ce que sont les attaques Active Directory, vous devez absolument les apprendre pour être un testeur d'intrusion interne performant. Et c'est l'une de ces choses que la majorité des organisations utilisent. Je crois que l'affirmation que j'ai lue une fois était que 95 % ou 99 % des entreprises du Fortune 500 utilisent Active Directory dans leurs environnements, et je pense honnêtement que ce chiffre est beaucoup plus proche de 99 % que de tout le reste. Chaque test d'intrusion interne que j'ai jamais effectué, à l'exception d'un client, un très petit client, a toujours été sur Active Directory. Vous devez donc comprendre la méthodologie Active Directory pour effectuer un test d'intrusion de réseau interne.

Ceux-ci durent généralement 32 à 40 heures, bien qu'ils puissent durer beaucoup plus longtemps, encore une fois, en fonction de la taille et de la portée. Ils ne durent généralement pas moins longtemps, bien que je les ai vus durer 16 à 24 heures si le réseau est très petit. Mais il y a une liste de contrôle que nous devons parcourir, qui se situe généralement dans la fourchette de 32 à 40 heures. Et tout comme les tests d'intrusion externes, nous ajoutons 8 à 16 heures supplémentaires pour la rédaction du rapport.

Le troisième type d'évaluation dont je voulais parler est un test d'intrusion d'application web. C'est probablement le deuxième plus courant. Je voulais regrouper les tests d'intrusion externes et internes, mais vous devez penser aux réseaux actuels par rapport aux applications web. Il y a des sites web partout. Il y a plus de sites web que de réseaux. Si nous comptons uniquement les sites web par rapport aux réseaux d'entreprise, il y a probablement plus de sites web que de réseaux domestiques également, bien que je ne sois pas entièrement sûr de cela. Je soutiendrais que la réponse est probablement beaucoup plus de sites web que de réseaux domestiques.

Avec cela, il y a beaucoup de surface d'attaque qui existe. Donc, les organisations viennent nous voir et nous disent : "Hé, nous avons besoin d'un test d'intrusion d'application web." Cela peut être dicté à nouveau par la conformité, peut-être que les parties prenantes veulent le voir, ou peut-être que le client est très intéressé par la sécurité de l'application et veut s'assurer qu'elle est très sécurisée avant de lancer son application.

La méthodologie se concentre fortement sur les attaques basées sur le web, évidemment, et sur les directives de test de l'OWASP. OWASP signifie Open Web Application Security Project. Si vous n'en avez jamais entendu parler, recherchez-le sur Google. C'est une excellente ressource. Ils ont des directives de test non seulement pour les applications web, mais aussi pour les applications mobiles. Ils expliquent comment tester, comment défendre, comment prévenir, toutes sortes de choses formidables, et nous suivons leurs directives de test de manière assez exclusive. Si vous comptez être un testeur d'intrusion et que vous voulez tester des applications web, vous devez absolument savoir quelles sont les 10 principales attaques de l'OWASP, car on vous les demandera lors d'un entretien.

Ces engagements durent généralement 32 à 40 heures, et c'est à peu près le minimum. Nous avons une liste de contrôle très approfondie que nous devons parcourir lorsque nous effectuons un test d'intrusion d'application web, et je dirais que cela se rapproche davantage de 40 heures que de tout le reste, à moins qu'il ne s'agisse d'une application web très, très petite et spécifique. Ils sont presque toujours dans la fourchette de 32 à 40 heures, avec 8 à 16 heures supplémentaires pour la rédaction du rapport.

Une autre évaluation courante que l'on nous demande d'effectuer en tant que testeurs d'intrusion est ce qu'on appelle un test d'intrusion sans fil ou un test d'intrusion de réseau sans fil, et nous évaluons la sécurité du réseau sans fil d'une organisation. La méthodologie variera en fonction du type de réseau sans fil utilisé. Par exemple, s'ils utilisent un réseau invité, nous pourrions nous connecter au réseau invité et tester la segmentation : un invité peut-il accéder aux ressources internes ou le réseau est-il correctement segmenté ? S'ils utilisent une clé pré-partagée, ce qui est courant dans la plupart des foyers, nous pourrions tester cette clé pré-partagée pour la force du mot de passe et voir à quel point la clé pré-partagée est forte et à quel point le mot de passe est fort. S'ils utilisent un réseau d'entreprise, alors nous nous ouvrons à une variété de nouvelles attaques également. Notre méthodologie change donc vraiment en fonction de ce qui est utilisé.

Les tests d'intrusion sans fil sont assez simples. Vous pouvez rechercher la méthodologie en ligne, trouver des articles de blog à ce sujet. Il vous suffit d'un adaptateur réseau sans fil que vous pouvez honnêtement acheter pour 30 à 50 dollars au maximum, et je laisserai un lien dans la description ci-dessous vers mon adaptateur réseau sans fil préféré. Mais vous pouvez simplement en choisir un qui est compatible avec votre machine et qui fonctionnera et effectuera l'injection de paquets. C'est honnêtement là que beaucoup de hackers commencent. C'est là que j'ai commencé, avant même d'apprendre le vrai piratage ou quoi que ce soit d'autre. J'ai acheté un adaptateur sans fil bon marché et j'ai commencé à pirater mon propre réseau et certains appareils que j'avais à la maison, et j'ai appris à pirater le sans fil assez rapidement. C'est donc l'une de ces choses qui vous enthousiasme, vous fait entrer dans l'état d'esprit du piratage et vous enseigne certaines des évaluations sans fil qui existent, et je pense que c'est aussi assez amusant.

Ces tests durent généralement environ quatre à huit heures par SSID. Donc, si nous testons deux SSID, nous envisageons probablement 8 à 16 heures, puis généralement deux à quatre heures supplémentaires pour la rédaction du rapport.

Très bien, la dernière chose que je veux aborder en termes d'évaluations que nous effectuons assez souvent sont les tests d'intrusion physiques et les évaluations d'ingénierie sociale. Donc, lorsque nous effectuons un test d'intrusion physique, nous évaluons la sécurité physique d'une organisation et notre méthodologie dépendra des tâches et des objectifs qui sont à portée de main et qui nous sont confiés par le client. Donc, si nous effectuons un test d'intrusion physique, nous allons sur place et nous essayons de pirater le bâtiment. Cela peut être par le clonage de badges, cela peut être par l'ingénierie sociale, cela peut être par le crochetage de serrures. Il existe de nombreux scénarios possibles. La méthodologie dépend à nouveau de ce à quoi nous sommes confrontés, et elle dépend également de l'objectif du client. Le client pourrait dire : "Hé, nous voulons voir si vous pouvez simplement entrer dans le bâtiment", ou il pourrait dire : "Hé, je veux que vous entriez dans le bâtiment et que vous trouviez notre placard de serveurs et que vous preniez une photo de vous dans notre placard de serveurs. Nous voulons voir si vous pouvez y arriver." Il y a donc généralement un objectif derrière la raison pour laquelle vous piratez un bâtiment, mais c'est une effraction légale et c'est assez amusant et assez excitant si c'est votre truc, et il y a beaucoup d'ingénierie sociale impliquée. C'est donc un engagement très, très amusant à faire.

L'autre aspect est l'ingénierie sociale pure, et ce que je veux dire par là, c'est faire quelque chose comme une campagne de phishing contre une organisation. Et nous pourrions en fait faire une campagne de phishing en combinaison avec un test d'intrusion externe. Nous pourrions donc combiner ces deux éléments, bien qu'ils soient souvent séparés. Nous pourrions faire quelque chose comme une campagne de phishing où nous appelons les gens et nous disons : "Hé, je suis du service informatique, pouvez-vous me donner votre mot de passe ?" ou "Je viens de vous envoyer un code sur votre compte, pouvez-vous me donner le code que je viens de vous envoyer ?" Nous pourrions faire une campagne de smishing où nous envoyons des SMS et voyons si quelqu'un nous répond. Il existe de nombreuses formes d'ingénierie sociale, et nous avons différentes campagnes que nous pouvons mener et différents engagements, en fonction, encore une fois, des besoins du client.

Ce qui est formidable avec cela, c'est que l'ingénierie sociale et les tests d'intrusion physiques offrent de nombreuses opportunités d'apprentissage et de formation. Par exemple, lorsque nous effectuons des tests d'intrusion physiques, nous portons des caméras sur nos hanches et nous enregistrons tout ce que nous faisons, non seulement pour notre responsabilité, mais aussi pour enseigner aux utilisateurs finaux. À la fin de la journée, nous couperons la vidéo, nous aurons des leçons apprises : voici les bonnes choses qu'ils ont faites, voici les mauvaises choses qu'ils ont faites, et ils pourront repartir avec un moyen de s'améliorer à l'avenir.

L'élément le plus faible de toute organisation sera l'humain. Vous pouvez avoir un excellent environnement, une excellente politique de sécurité, tout est en place, et il suffit d'une personne vraiment gentille pour vous tenir la porte, et cela peut entraîner des événements catastrophiques. L'ingénierie sociale est donc à nouveau une partie très importante de la sécurité et c'est l'une de mes choses préférées à évaluer lorsque je fais ce type de travail.

Encore une fois, cela peut durer de 16 à 40 heures, voire plus, en fonction de l'engagement sur lequel vous êtes, plus quatre à huit heures supplémentaires pour la rédaction du rapport, encore une fois, peut-être plus en fonction de la portée de l'engagement sur lequel vous travaillez.

Ce ne sont pas les seules évaluations. Il existe d'autres évaluations que nous pourrions effectuer en tant que testeurs d'intrusion. Celles-ci ont tendance à être un peu plus spécialisées, et vous pourriez avoir besoin de suivre une formation supplémentaire pour apprendre ce type de choses, mais ce sont des choses que nous effectuons au travail et que vous pourriez finir par effectuer également.

Nous avons donc les tests d'intrusion mobiles. C'est très similaire aux tests d'intrusion d'applications web dans le sens où vous testez une application, sauf qu'elle est sur un appareil mobile, iOS ou Android, et il existe une méthodologie et des techniques spécifiques liées à ces systèmes d'exploitation. Vous pourriez avoir des tests d'intrusion IoT ou Internet des Objets, et quelqu'un pourrait nous envoyer quelque chose comme une cocotte-minute sans fil, et ils voulaient qu'elle soit testée. Nous nous sommes donc bien amusés à faire cela.

Il y a des engagements d'équipe rouge, qui sont un peu comme des tests d'intrusion, mais pas vraiment. Quand je dis tests d'intrusion, je pense à frapper à la porte d'entrée, alors que l'équipe rouge essaie de s'introduire de manière créative. Donc, un engagement d'équipe rouge pourrait dire : "Hé, nous voulons que vous piratiez notre entreprise. Vous avez un mois, six mois ou un an, et nous ne voulons pas vous entendre, nous ne voulons pas vous voir, nous ne voulons pas savoir. Dites-nous simplement si vous pouvez nous pirater." Dans ces types d'engagements, la méthodologie peut être n'importe quoi, en fonction de ce qui est autorisé dans le périmètre. Généralement, le périmètre est assez ouvert. J'ai entendu parler d'équipes rouges envoyant des gens sur le site du client, et ils pourraient même y vivre un peu. Ils pourraient se lier d'amitié avec certains employés, essayer de devenir copains, apprendre des secrets internes, peut-être obtenir un mot de passe, leur donner une clé USB. Ils pourraient faire toutes sortes d'engagements d'ingénierie sociale. C'est très, très personnalisé et unique au client, et cela dépend encore du périmètre, qui est généralement assez large, et de ce qu'ils peuvent et ne peuvent pas faire. Les engagements d'équipe rouge sont donc assez géniaux, mais ils sont aussi incroyablement discrets, alors que les tests d'intrusion sont très limités dans le temps, dans le sens où nous pourrions n'avoir qu'un engagement d'une semaine. Nous connaîtrons les adresses IP, nous connaîtrons notre périmètre, et nous aurons une limitation définie devant nous, alors que l'équipe rouge n'a pas autant cela.

Un engagement d'équipe violette est quelque chose que vous pourriez faire lors d'exercices sur table et autres, où vous, en tant que membre de l'équipe rouge, êtes offensif et travaillez avec une équipe bleue, qui est défensive. Vous travaillez ensemble, et cela fait le violet. Et dans ce sens, vous pourriez faire une simulation et dire : "Hé, je viens de lancer cette attaque, me voyez-vous sur votre réseau ? Je viens de lancer cette autre attaque, me voyez-vous ?" Et vous essayez d'établir une base de référence, et vous pouvez voir : "Où est la détection ? Où la détection est-elle faible ? Et comment pouvons-nous améliorer les mécanismes de détection au sein du réseau ?" C'est généralement un processus un peu plus mature. Une organisation qui n'a jamais effectué de test d'intrusion auparavant ne va probablement pas se lancer directement dans un engagement d'équipe violette, mais c'est quelque chose que les organisations plus matures font afin d'améliorer leurs bases de référence et d'améliorer leurs mécanismes de détection en interne.

J'ai couvert juste une poignée des différents types d'engagements de tests d'intrusion sur lesquels vous pouvez travailler. Il y a le piratage automobile, le piratage d'avions, le piratage SCADA, toutes sortes de choses vraiment cool que vous pouvez faire. J'ai découvert les éléments les plus courants, mais vous pouvez absolument vous spécialiser si c'est quelque chose qui vous intéresse.

Avec tout le plaisir d'effectuer des travaux d'évaluation, il y a l'inconvénient de la rédaction de rapports et du débriefing. J'apprécie en fait les deux, et pour être un consultant performant, vous devez vraiment être une personne à trois têtes, en quelque sorte. Vous devez être très bon en compétences techniques, vous devez être très bon en rédaction de rapports et en communication efficace, non seulement avec un public technique, mais aussi avec un public non technique, et vous devez également être doué pour les compétences de présentation, dans le sens où vous devez présenter vos conclusions à un public technique et non technique.

Donc, en ce qui concerne la rédaction de rapports, nous livrons généralement un rapport dans la semaine suivant l'engagement. Ce rapport doit être de haut niveau et technique. Nous avons donc ce qu'on appelle un résumé exécutif pour les personnes non techniques. Pensez à un PDG qui n'est peut-être pas une personne technique. S'il doit lire le rapport, il doit toujours être parfaitement clair quels étaient les problèmes et comment ils devraient être résolus, et c'est ce qu'est le résumé exécutif.

Nous avons une section sur les conclusions techniques, et c'est pour les personnes qui font le travail, peut-être l'ingénieur de sécurité, l'ingénieur réseau ou le développeur d'applications web, en fonction de la personne avec qui vous travaillez. Ils peuvent digérer les conclusions, ils peuvent dire : "Hé, voici ce qu'ils ont trouvé, voici les outils qu'ils ont utilisés, voici comment ils ont pu le faire, et voici les recommandations de remédiation." Les recommandations doivent être incroyablement claires. Vous devriez avoir des recommandations de haut niveau comme : "Hé, patcher ceci", et vous devriez également avoir des recommandations techniques qui disent : "Hé, allez sur ce site web, voici comment vous installeriez ce patch, etc., etc." Donc, en fonction de votre public, vous voulez vous assurer que vous communiquez efficacement avec les deux. Et pour beaucoup de nouveaux testeurs d'intrusion, cela peut être une lutte incroyable. C'est l'une de ces choses où vous rédigez un rapport, vous vous faites critiquer lors du processus d'assurance qualité, et vous vous améliorez simplement avec le temps, et c'est quelque chose qui est transmis et que vous apprenez au fur et à mesure. Alors ne vous inquiétez pas si vous n'êtes pas doué pour la rédaction de rapports, assurez-vous simplement de comprendre que si vous voulez faire ce travail, vous devrez écrire des rapports et vous devrez vous améliorer au fur et à mesure.

Enfin, le processus de débriefing. Un débriefing guide vos clients à travers les conclusions de votre rapport, et encore une fois, cela devrait être non technique et technique également. Vous pourriez être assis dans une pièce avec un PDG et un ingénieur réseau, vous pourriez être assis devant toutes des personnes techniques, vous pourriez être assis devant toutes des personnes de niveau C, non techniques. Vous devez donc vous assurer que lorsque vous présentez vos conclusions, vous pouvez les expliquer à un niveau élevé et à un niveau technique.

J'ai vu beaucoup de gens avoir du mal avec ça. J'ai été dans une situation, je me souviens que j'étais à un débriefing avec un collègue, il y a des années, et il avait beaucoup de mal à communiquer. Il donnait des détails très techniques et approfondis sur ce qu'il trouvait, et le PDG l'arrêtait constamment en disant : "Je ne comprends pas ce que vous dites." Nous avons donc dû faire un peu de traduction parce qu'il n'était pas vraiment doué pour le processus de débriefing à l'époque, il était encore assez nouveau. Et c'est l'une de ces choses que si vous voulez être un consultant efficace, vous devez être capable de faire les deux.

Le débriefing est important car il donne également à votre client l'occasion de poser des questions sur les conclusions que vous avez et de répondre à toute préoccupation. Il se peut donc qu'il y ait une conclusion qu'ils souhaitent contester ou sur laquelle ils souhaitent plus d'informations. Cela leur donne l'occasion de le faire, car lorsque nous leur donnons le rapport initial, le rapport est un brouillon. Après le débriefing, ou s'ils choisissent de ne pas avoir de débriefing, nous finalisons ce rapport. Le débriefing est donc la dernière occasion que le client a de comprendre ce que vous lui présentez et de poser des questions ou de soulever des préoccupations. C'est donc un processus très, très important.

J'espère que cela vous a été instructif. Si vous cherchez à devenir un testeur d'intrusion, vous devriez connaître à haut niveau ces différents types d'évaluations, et vous devriez savoir dans quoi vous vous embarquez, car beaucoup de gens pensent : "Oh, c'est du plaisir et des jeux, je peux juste pirater des choses", et oui, c'est une grande partie du travail, mais une grande partie du travail consiste également à rédiger des rapports et à faire des débriefings devant nos clients. Donc, si vous n'êtes pas fort en rédaction de rapports ou si vous n'êtes pas fort en compétences de présentation, vous pourriez avoir du mal avant de devenir décent. Assurez-vous donc de savoir en abordant cela que ce sont des choses que vous devrez faire et que vous êtes à l'aise pour les faire.

Alors, avant de commencer ce cours et de vraiment plonger, il est important de couvrir l'un des sujets sur lesquels j'insisterai le plus, qui est la prise de notes efficace. Si vous voulez réussir dans votre carrière et réussir dans ce cours, vous devez vraiment prendre de bonnes notes. Dans cette première vidéo, je vais vous montrer à quoi ressemble mon carnet, non seulement mon carnet personnel, mais aussi un carnet pour une évaluation, et comment je pourrais prendre des notes pour une évaluation. Ensuite, je vous montrerai également quelques applications de prise de notes que je préfère ou que j'ai entendu dire que les étudiants préfèrent. Dans la deuxième vidéo, nous aborderons comment installer l'une des applications et une autre application cool utilisée pour prendre des captures d'écran.

Alors, regardons d'abord mon carnet. Voici mon carnet, et en fait, cliquons ici. Voici mon carnet, et vous pouvez voir qu'il est vraiment long, qu'il contient toutes sortes de choses, et c'est quelque chose sur lequel je m'appuie. Celui-ci en particulier est en fait uniquement axé sur Active Directory. J'ai donc plusieurs carnets. Celui-ci est Active Directory, et il s'agit en fait de plusieurs cours que j'ai suivis par le passé que j'ai un peu rassemblés, et puis juste pour le travail d'évaluation, etc., j'ai juste une petite feuille de triche ici. Je voulais vous montrer celui-ci en particulier car ceux-ci ont été construits à partir de cours, et vous allez suivre un cours, donc pour avoir une idée de la façon de le structurer.

Ici, vous pouvez voir que je l'ai structuré et que j'ai différents modules ici où, par exemple, le module un pourrait avoir eu ces fondamentaux de macro-e-mail, le module deux ici a tous ces différents composants, n'est-ce pas ? Et nous avons nos notes, puis nous avons des notes enfants et même des sous-enfants à ces notes enfants, et je vais vous montrer comment créer cela ici dans une seconde. Mais disons, par exemple, l'énumération, qui est l'une des choses les plus importantes que vous allez couvrir en piratage, et nous examinons l'énumération. Vous n'avez pas besoin de comprendre ce que tout cela signifie ici, mais vous pouvez voir que si je veux regarder un domaine et que je veux obtenir le domaine actuel sur lequel je suis, voici la commande que j'exécute, et voici une image de ce à quoi cela ressemble, et voici ce qui revient lorsque vous exécutez cette commande. C'est excellent, c'est ce que je veux voir, et j'ai une liste complète de commandes pour tout cela ici, n'est-ce pas ? Donc, si je suis confus lors d'une évaluation et que je veux trouver une commande dont je ne suis pas sûr, je peux aller à ma petite feuille de triche ici. Encore une fois, c'est vraiment long, donc vous devez créer vos notes de la manière qui vous aide vraiment. Pour un cours, je pense qu'il est bon de tout écrire étape par étape comme ceci, puis de revenir en arrière et de créer une feuille de triche. Je n'ai plus besoin de ces images, je fais ça depuis un moment. Alors peut-être que je dis juste : "Hé, obtenir le domaine actuel est get net domain", puis je dis : "Ok, obtenir l'objet d'un autre domaine, voici un exemple." Je n'ai pas besoin des images parce que cela le rend vraiment long, mais comme exemple, et au fil du temps, j'apprends aussi avec les images, du moins moi.

Alors, construisons à partir de là. Voici un exemple d'une évaluation réelle que j'ai effectuée pour un client, et vous pouvez voir comment je l'ai fait. J'ai effectué une évaluation externe, interne et d'application web pour ce client, et voici les conclusions. Je ne vais montrer que ce qui est déjà fortement obfusqué ou qui ne révèle pas d'informations client. Mais comme vous pouvez le voir ici, un exemple est sur l'interne, ils avaient quelque chose appelé la signature SMB désactivée. Vous n'avez pas besoin de vous en soucier, mais ici dans mon image, j'ai une belle image. L'image l'a mis en évidence et dit : "Hé, signature SMB désactivée", cela signifie que la signature SMB est désactivée, et elle a l'adresse IP. Nous avons donc identifié la machine et nous fournissons une preuve de concept que cette signature SMB est désactivée. Voici un autre exemple, MS17-010. Ce sont tous deux des exploits internes que vous rencontrerez dans ce cours. Voici un que j'ai vérifié sur cette machine, il dit : "Hé, cette cible n'est pas patchée." C'est quelque chose que je n'ai pas exploité, mais cela montre qu'elle est en fait vulnérable à cette attaque. Ce sont donc quelques captures d'écran que je vais mettre.

Vos notes pourraient être différentes des miennes. La façon dont j'organise, c'est que je prends une capture d'écran, je la mets ici, puis je m'assure d'avoir au moins l'adresse IP et la capture d'écran pour référence, car je m'en souviendrai. Mais si vous avez besoin d'aller ici et de prendre des notes détaillées, c'est tout à fait possible aussi. Vous voulez toujours de bonnes notes pour vos évaluations, car vous ne savez jamais si un client va revenir dans six mois, voire un an, et dire : "Hé, quelle était cette chose que vous avez faite ici ?" Et si vous retournez à vos notes, vous dites : "Oh, vous savez, j'ai fait ça." Et certaines personnes vont vraiment dans les détails, elles ont des dates, des heures, tout pour étape par étape ce qu'elles font lors d'une évaluation, et c'est entièrement à vous et à la qualité de vos notes. C'est un peu comme ça que je le présente, puis vous voyez les coches vertes à côté. Je les ajoute lorsque je fais mon rapport. Donc, pendant que je construis mon rapport et que je couvre quelque chose dans le rapport, je clique simplement dessus avec le bouton droit de la souris et je change l'icône de la note en une coche, ce qui signifie que j'ai écrit cette partie du rapport pour cette conclusion. Et nous passons simplement en revue au fil du temps.

Cela étant dit, je veux vous montrer quelques applications décentes. Celle que j'utilise ici et que vous voyez s'appelle Keep Note. Je fonctionne sous Windows comme base, donc keepnote.org, c'est comme ça que vous obtenez Keep Note. C'est pour Linux, c'est pour Mac OS X, mais c'est totalement une question de préférence. Moi, je préfère, je l'utilise depuis longtemps. Certaines personnes ne l'aiment pas. Ok, je vais donc proposer quelques alternatives. CherryTree est intégré à Kali Linux, comme vous allez le voir dans un petit moment. Ça vaut la peine d'y jeter un œil, d'essayer de voir si vous l'aimez. OneNote est un autre exemple si vous utilisez Microsoft. Et si vous êtes un utilisateur Mac, beaucoup d'étudiants m'ont dit que Joplin est vraiment bien. Je ne l'ai jamais utilisé, mais j'entends de grandes choses à son sujet.

Alors, ce que je vais faire, c'est que je vais mettre tout cela dans les ressources du cours, et vous pourrez les consulter, les télécharger, décider par vous-même. Vous n'êtes pas limité à ces quatre applications de prise de notes, loin de là. N'hésitez pas à utiliser ce que vous voulez pour prendre des notes. Si vous voulez un stylo et du papier, c'est aussi très bien. Assurez-vous donc de prendre de bonnes notes, et nous allons insister là-dessus tout au long du cours, encore et encore et encore. Alors assurez-vous de prendre de bonnes notes.

À partir de là, ce que nous allons faire, c'est installer Keep Note dans la prochaine vidéo, et nous allons installer un outil génial appelé Greenshot. Je vais vous montrer ce que fait Greenshot et pourquoi il est si cool, et je ne peux pas vivre sans lui lors d'une évaluation. Alors, retrouvons-nous dans la prochaine vidéo lorsque nous travaillerons à l'installation de ces outils.

Très bien, donc dans cet exemple, dans la dernière vidéo, nous avons parlé de l'utilisation de Keep Note. Donc, si vous allez sur Google et que vous tapez Keep Note, tout ce que vous avez à faire est de venir ici. Et Keep Note fonctionne sous Windows, Linux et Mac OS X, donc un excellent outil. Le seul problème avec cet outil est qu'il n'a pas été mis à jour depuis longtemps. Certaines personnes trouvent cela problématique. Si vous êtes l'une de ces personnes, je ne le suis pas. Vous pouvez utiliser d'autres outils. OneNote est une option. CherryTree est également une option. Vous pouvez également trouver d'autres options pour vous. Si vous avez déjà un outil de prise de notes préféré, c'est tout à fait bien aussi. Assurez-vous simplement de prendre de bonnes notes, surtout pendant ce cours, et d'en tirer le meilleur parti. Apprenez tout ce que vous pouvez et intégrez-le.

Je vais donc vous montrer rapidement comment installer Keep Note ici. Et une autre chose à noter, c'est que pendant que nous faisons cela, CherryTree est disponible sur Kali Linux. Nous allons installer Kali Linux très bientôt. Donc, une fois que nous aurons installé Kali Linux et que nous aurons abordé l'introduction à Linux et que nous l'aurons exploré, je vous montrerai un peu plus CherryTree et à quoi il ressemble, et nous parlerons des avantages et des inconvénients de CherryTree lorsque nous y arriverons.

Alors, allons-y. Si vous êtes sous Windows, vous pouvez suivre ou télécharger votre version appropriée ici, en fonction de si vous êtes sous Linux ou si vous avez besoin de Mac également. Je vais donc procéder à l'installation de l'exe et je vais simplement l'exécuter. Nous allons dire oui, et je vais dire suivant, suivant, installer, et c'est tout. Je veux dire, c'est aussi rapide. Et ensuite, nous lançons simplement Keep Note, et voilà, nous avons Keep Note.

L'autre outil, le très cool outil que j'adore, celui-ci s'appelle Greenshot. C'est donc un outil de capture d'écran. Allons dans les téléchargements ici sur Greenshot. Si vous utilisez autre chose que Windows, vous allez avoir besoin d'un outil différent. L'outil recommandé que j'ai entendu parler est appelé FlameShot, F-L-A-M-E. Bien que je n'en ai aucune expérience, j'ai entendu dire qu'il est identique à Greenshot.

Alors, ici, je vais télécharger la dernière version stable. Je vais sélectionner exécuter, oui, ok, accepter l'accord, donner notre premier-né, suivant, suivant, suivant, le placer où vous voulez. Je vais juste faire suivant pour tout, et je vais démarrer Greenshot avec Windows, démarrer. C'est ma préférence. J'adore cet outil, encore une fois. C'est donc terminé.

Très bien, regardons-le. Il devrait donc être en cours d'exécution. Lançons Greenshot maintenant. Ok, maintenant vous le voyez en cours d'exécution ici en bas. Ok, allons-y, ouvrons une page web. Disons que nous voulons prendre une capture d'écran de quelque chose. Vous appuyez simplement sur la touche Impr. écran, et ce joli curseur apparaît ici. Et disons que nous voulions prendre cette partie des téléchargements ici. Nous allons simplement capturer cela, et maintenant nous avons des choix. Nous pouvons simplement enregistrer l'image que nous venons de prendre, ou ma préférence est que nous pouvons en fait ouvrir un éditeur d'images, n'est-ce pas ? Ouvrons cela dans leur éditeur d'images. Regardez ça. Ok, voici l'image que nous venons de prendre. Juste au-dessus de cela, de très bons outils. Laissez-moi vous montrer deux que j'utilise toujours.

Alors, je viens dans les effets, je mets une bordure dessus. Disons que vous avez comme un Kali Linux, et Kali Linux, si vous ne l'avez jamais utilisé, a un terminal noir, c'est vraiment moche. Alors imaginons ici que c'est noir, c'est moche quand il s'agit de rapports. Alors imaginons que nous sommes dans cette situation et que nous écrivons un rapport et que nous avons cet arrière-plan noir, similaire à celui-ci. Eh bien, vous pouvez voir ce que je viens de faire, je viens de l'inverser, et je fais cela pour tous mes rapports. J'inverse l'arrière-plan de Kali, de sorte qu'il soit blanc, et qu'il ait l'air bien sur un rapport. Et quand nous aborderons la rédaction de rapports, vous verrez un peu à quoi cela ressemble. Mais j'aime un bel arrière-plan propre. Cela économise aussi de l'encre s'ils devaient l'imprimer, et c'est juste agréable et net lorsque vous le donnez à un client. Donc, j'inverse toujours mes images si j'en ai besoin. Vous avez la bordure noire ici.

Une autre chose est, disons que vous voulez signaler quelque chose. Vous avez vu dans mon carnet Keep Note que j'avais une surbrillance. Vous pouvez simplement cliquer sur ce bouton ici et simplement surligner quelque chose comme ici. Super. Un autre outil qui est ici est ce "officegate". Alors disons qu'il y a comme un mot de passe ou quelque chose de vraiment sensible ici que vous ne voulez pas que le client voie, ou que vous ne voulez pas révéler dans un rapport final, vous pouvez le faire. Et ensuite, vous pouvez simplement augmenter la taille des pixels sur cela et le rendre vraiment flou, vous savez. C'est donc un outil vraiment, vraiment génial. Et ensuite, lorsque vous avez terminé, vous pouvez le copier dans votre presse-papiers, vous pouvez enregistrer le fichier. J'aime juste copier cela, et si je veux le coller, vous savez, faire un nouveau carnet ou quoi que ce soit, je le colle dans mon Keep Note et je continue à partir de là.

Donc, encore une fois, outil fantastique, génial à utiliser. Si j'avais deux recommandations pour votre prise de notes, c'est Keep Note et Greenshot. Si je devais faire une recommandation des deux, c'est absolument Greenshot. Vous pouvez être flexible sur votre outil de prise de notes.

Encore une fois, j'espère que cela vous aide. Encore une fois, s'il vous plaît, prenez de bonnes notes de ce cours. Vous vous retrouverez à vouloir savoir : "Hé, quelle était cette commande que j'ai exécutée à nouveau ?" Et parce que nous allons parcourir tellement de choses d'ici la fin, vous voudrez vous en souvenir. Alors s'il vous plaît, prenez de bonnes notes.

À partir de là, passons à notre rafraîchissement réseau, et nous vous retrouverons dans la prochaine vidéo.

Bonjour à tous et bienvenue dans cette section sur les réseaux. Cette section est intitulée "Rafraîchissement réseau", ce qui signifie que certains d'entre vous pourraient avoir une formation en réseaux, et si vous regardez cette liste qui est à l'écran et que vous la parcourez en disant : "Oui, je connais tout ça", vous pouvez vous sentir libre de sauter cette section. Si vous avez suivi certains de ces cours par le passé et que vous souhaitez juste un petit rafraîchissement, alors cette section est pour vous. Nous allons couvrir ces sujets, pas totalement en profondeur, mais nous allons l'utiliser comme un moyen de nous rafraîchir, puis nous aborderons à nouveau les réseaux lorsque nous aborderons l'introduction à Linux.

Donc, si vous ne connaissez pas des choses comme TCP, UDP et le handshake à trois voies, ou si votre sous-réseautage est un peu bancal, ou si vous ne savez pas ce qu'est le modèle OSI, il y a de fortes chances que vous devriez probablement rester et simplement parcourir cette série, la regarder et construire cette base. Rappelez-vous.

Nous avons parlé de l'une des bases fondamentales des tests d'intrusion : une solide connaissance du réseau. C'est une bonne façon de la développer. Rappelez-vous ce que vous auriez pu oublier et partez de là. Alors, allons-y et plongeons directement dans la première vidéo qui portera sur les adresses IP. Quoi de neuf tout le monde ? Je vais rapidement introduire cette vidéo en disant qu'il pleut très fort ici. Donc, si les sons apaisants de la pluie vous endorment pendant cette vidéo et que vous pouvez l'entendre, je suis très, très désolé, mais le spectacle doit continuer. Donc, ce que nous allons faire aujourd'hui, c'est parler des adresses IP. Maintenant, si vous avez déjà utilisé un ordinateur auparavant et que vous êtes un tant soit peu familier avec, vous savez probablement ce qu'est une adresse IP. Mais je veux approfondir un peu la théorie sur pourquoi nous utilisons les adresses IP, quels types d'adresses IP existent, et parler davantage des protocoles et de la façon dont les adresses IP sont réellement conçues et fabriquées. Alors, je suis ici dans un terminal Kali et je vais simplement taper une commande simple, et cette commande est ifconfig. Maintenant, si vous avez déjà utilisé Linux, cela pourrait vous être familier. Si vous avez utilisé Windows, c'est similaire à ipconfig. Tout ce que j'essaie de faire, c'est d'afficher mon adresse IP. Donc, ce que nous pouvons voir ici, c'est que nous avons une adresse IP qui est notre inet. C'est mon adresse IP ici. J'ai aussi une autre adresse IP, cet inet6. C'est ce qu'on appelle une adresse IPv6. Donc, nous avons cet inet qui est considéré comme un ipv4 et cet inet6 qui est considéré comme un IPv6. Maintenant, vous pouvez remarquer tout de suite qu'il existe deux types de notations différents pour ceux-ci. Cet inet ici est en notation décimale et l'IPv6 est en notation hexadécimale. Nous reviendrons sur l'importance de cela dans une seconde. Donc, en ce qui concerne les adresses IP, cela nous semble probablement assez familier. Ceci est une adresse IP. C'est ainsi que nous communiquons. Nous communiquons sur la couche 3, et vous m'entendrez parler des couches à plusieurs reprises tout au long du cours, ou du moins tout au long de cette partie du cours, afin que nous puissions nous familiariser avec la façon dont nous faisons réellement cela. Donc, je veux que vous vous familiarisiez avec le dépannage de ces couches, et ces couches font toutes référence à quelque chose appelé le modèle OSI. Donc, quand nous parlons de couches, nous pensons au modèle OSI, et j'introduirai le modèle OSI ici dans quelques vidéos, et tout deviendra clair une fois que j'aurai introduit le modèle OSI. Donc, si j'avais introduit le modèle OSI dès le début, cela aurait pu être ennuyeux, cela n'aurait peut-être pas eu de sens. Je vais donc introduire le modèle OSI vers la fin, et vous direz : "Hé, oui, tout cela a du sens." Donc, ce que nous avons ici, c'est cette adresse ipv4, et c'est le format le plus couramment utilisé que nous utilisons aujourd'hui, n'est-ce pas ? Nous utilisons ipv4 pour presque tout. Et encore une fois, c'est dans cette notation décimale. Donc, quand nous voyons cette notation décimale, c'est juste, réalistement, un tas de uns et de zéros qui sont assemblés afin que nous ayons ce format lisible par l'homme. Réaliste, tout ce que nous voyons ici avec 192, cette première, cette première section ici, ce premier octet, est en fait juste un tas de uns et de zéros. C'est 8 bits. Donc, nous avons une plage de huit uns et zéros ici, nous en avons huit autres ici, huit ici et huit ici. Donc, quand tout est dit et fait, cet inet ou cet ipv4 est composé de 32 bits : huit plus huit plus huit plus huit ici, ce qui équivaut à quatre octets. Donc, une autre façon de penser à cela est de penser à cela comme, disons, quelque chose comme ceci : un deux trois quatre cinq six sept huit point point. D'accord, c'est une section là. Donc, nous avons huit uns qui peuvent constituer cela, puis nous en aurions huit autres, etc. Je ne vais pas m'attarder là-dessus, mais je veux vous donner un autre exemple. Donc, si nous allons dans nos applications et que nous allons dans un éditeur de texte très rapidement. Donc, la façon dont cela ressemble est quelque chose comme ceci. Nous commençons avec un nombre comme 128. Je vais essayer de l'espacer autant que possible, et tout ce que j'aime faire, c'est de penser à 128 comme ma base, et cela aura beaucoup plus de sens lorsque nous aborderons la segmentation. Donc, s'il vous plaît, si vous êtes confus par cela, ne vous inquiétez pas, c'est toute la théorie pour l'instant. Quand nous aborderons la segmentation et que nous serons pratiques, cela aura beaucoup plus de sens, je vous le promets. Alors, disons que nous avons des uns et des zéros ici. Si nous avons un pour chacune de ces sections, et je vais l'espacer à nouveau autant que possible, ce n'est pas joli, mais si nous avons un pour tous ceux-ci, cela équivaut à 255. Pourquoi cela équivaut-il à 255 ? Eh bien, vous prenez ceci et tous ces nombres s'additionnent : un plus deux plus quatre plus huit, tout cela s'additionne à 255. Alors, disons que si nous n'avions pas tous les uns et les zéros, nous n'avions que quelques-uns activés, comme ces trois derniers ici. Eh bien, cela équivaudrait à sept, car nous avons quatre plus deux plus un égale sept. Donc, notre premier nombre, ou quel que soit le nombre auquel cela s'applique dans l'octet, serait sept. Donc, si nous avions 7.7.7.7, ce serait juste ces nombres qui se répètent encore et encore. Ces nombres qui se répètent encore et encore, n'est-ce pas ? Donc, euh, ce zéro zéro zéro zéro un un un point zéro zéro zéro zéro un un un et ainsi de suite. Donc, c'est un peu à quoi cela ressemble en coulisses, car encore une fois, un ordinateur n'est que des uns et des zéros. Nous sommes tous binaires. Donc, ce que nous allons faire, c'est que nous allons fermer ceci. Nous allons parler d'un peu plus de théorie à ce sujet et pourquoi inet ou IPv6 et pourquoi ipv4. Alors, fermons ceci et parlons d'ipv4. Donc, je vais ouvrir une calculatrice, et avec ipv4, nous avons ces 32 bits. Donc, ce que nous pouvons faire, c'est prendre deux à la puissance 32. Et c'est la quantité possible d'adresses IP que nous pourrions avoir. Donc, nous avons quelque chose dans la gamme de quatre milliards d'adresses IP. Eh bien, spoiler alert, nous n'avons pas seulement quatre milliards de personnes sur Terre, n'est-ce pas ? Nous sommes à plus de sept milliards à ce stade, et tous ces espaces d'adresses IP sont épuisés. Donc, ipv4 existe depuis 1981. Personne ne pensait que nous utiliserions jamais toutes ces adresses. Les ordinateurs n'étaient pas vraiment une chose. Qui savait que nous voudrions toutes ces adresses ? Et vous savez, ces entreprises ont commencé à les acheter, et elles ont commencé à les acheter en gros morceaux, puis elles les ont vendues aux FAI, puis les FAI vous les vendent. Et donc, ces adresses IP ont disparu depuis très, très longtemps. Et il y a de fortes chances que lorsque vous avez une adresse IP et que vous obtenez cette ipv4, vous n'en obtiendrez qu'une. Si vous êtes une entreprise, vous pourriez en acheter plus, mais nous avons épuisé l'espace d'adresses IP. Il n'y en a tout simplement pas assez pour tout le monde. Donc, la théorie est : d'accord, trouvons quelque chose de différent. Trouvons IPv6. Maintenant, ce moule hexadécimal est en fait sur 128 bits, ce qui rend les choses un peu plus longues et ajoute pas mal. Alors, prenons ce deux à la puissance 128, et nous obtenons un nombre que je ne peux pas vous dire comment prononcer, je n'essaierai même pas. Mais je peux vous garantir que de notre vivant, nous n'utiliserons jamais cet espace d'adresses. Donc, nous avons trouvé une solution, IPv6, mais personne ne l'utilise vraiment. IPv6 est juste une chose qui est là. Mais quand nous recevons des adresses IPv6 attribuées, eh bien, encore aujourd'hui, tout le monde utilise ipv4. Eh bien, comment est-ce possible si nous utilisons ipv4 mais que nous n'avons plus d'espace d'adresses ? Eh bien, pensez à ceci : nous utilisons quelque chose appelé NAT, qui est la traduction d'adresses réseau. Maintenant, pensons à votre réseau. Vous pourriez avoir un téléphone portable ou un ordinateur, ou plusieurs appareils. Mon réseau a au moins 20 appareils. J'ai des caméras, j'ai plusieurs téléphones portables, des téléviseurs intelligents, tout ce qui se connecte à mon internet obtient une adresse IP, et cela fait 20 adresses IP là-bas, n'est-ce pas ? Alors, disons que j'ai 20 appareils, cela fait 20 adresses IP. Est-ce que je prends 20 adresses IP sur ces quatre milliards ? Non. Nous utilisons en fait quelque chose appelé traduction d'adresses réseau, ou NAT pour faire court, et nous en parlerons à nouveau lorsque nous mettrons en place notre laboratoire réel. Mais avec NAT, ce que nous faisons, c'est que nous attribuons ces espaces d'adresses IP privées. Donc, nous avons ce 192.168.57.139. Maintenant, si vous avez déjà vu une adresse IP auparavant et que vous avez été sur un réseau, il y a de fortes chances qu'elle ait probablement commencé par 192, ou peut-être qu'elle a commencé par un 10. ou quelque chose dans ce genre, et c'est parce que ce sont des adresses IP privées. Donc, tout ce qui commence par 192.168 n'est pas une adresse IP qui sera sur le web. Ce sera une adresse IP qui n'est connue que de vous. Ce sont des adresses IP privées. Donc, parce que nous utilisons ces adresses IP privées, nous pouvons les distribuer via ce qu'on appelle une adresse IP publique. Pour en faire une meilleure utilisation, allons sur Firefox, et j'ai déjà un onglet ouvert. Donc, je suis allé sur Google et j'ai juste tapé "adresses IP privées", et j'ai cliqué sur la deuxième image ici, car je pense que c'est une excellente image. Donc, si nous regardons ceci, il y a des classes d'adresses IP, des adresses IP privées. Maintenant, il y a une classe D et E. Nous ne nous en soucierons pas. Les trois grands sont les classes A, B et C. Si vous les connaissez, vous êtes prêt. Donc, si nous regardons la classe C, c'est ce que la plupart des foyers et des petites entreprises utilisent. Donc, nous voyons qu'elle commence par 192.168.0.0. Donc, le 192 168 sont constants. Si vous voyez une adresse 192.168, vous pouvez être sûr que c'est un espace d'adresses IP privées. Et puis nous avons la plage de modification de ce nombre entre 0 et 255, et ce nombre entre 0 et 255. Pourquoi 0 à 255 ? Eh bien, cela deviendra clair lorsque nous aborderons la segmentation. Mais ce que cela nous permet de faire, c'est d'avoir un grand nombre de réseaux ici et une petite quantité d'hôtes. Mais pour un utilisateur ordinaire comme vous ou moi, ou une petite entreprise, 254 hôtes, c'est plutôt bien. Je veux dire, je n'utilise qu'environ 20 dans mon foyer. Donc, le foyer le plus courant utilise probablement cette adresse 192. Mais qu'en est-il d'une grande, grande entreprise ? Quelque chose d'énorme ? Eh bien, ils pourraient utiliser une adresse 10, car une adresse 10 vous libère pour tout ce qui suit ce 10 est privé. Donc, 10.1, 10.1.1.1, tout ce que vous voulez y mettre jusqu'à 255 sur chaque octet, crée une petite quantité de réseaux, mais une grande quantité d'hôtes. Et ne vous inquiétez pas de la chose hôte par rapport à réseau, encore une fois, la segmentation, nous en parlerons, tout deviendra clair. Mais imaginez simplement la quantité d'hôtes que vous pouvez y mettre avec cette large gamme. Donc, en raison de cela, vous verrez de grandes entreprises utiliser des adresses 10. Vous verrez également de nombreuses entreprises, même de petites entreprises, utiliser des adresses 10. Le fait est que tant que vous avez cette adresse IP privée, vous pouvez communiquer sur votre réseau. Donc, toute adresse IP en dehors de celles-ci et de la boucle locale est libre pour l'espace d'adresses publiques. Elles sont probablement déjà possédées et vous les achetez ou les louez vraiment à votre FAI, votre fournisseur d'accès à Internet. Donc, pour revenir à cette pensée, nous avons une adresse de classe C. Mon réseau est de classe C, 192.168.57.139 ici. Donc, elle tombe dans cette classe C. J'ai tous ces appareils sur ce réseau 192.168. Tous ces appareils communiquent à partir d'une seule adresse IP, qui est mon adresse IP publique. C'est ce que je loue à mon FAI, et tout ce trafic réseau sort par une seule IP. C'est ainsi que nous avons atteint ou résolu le problème de manquer d'espace d'adresses sans avoir à utiliser IPv6. Non pas qu'il y ait quoi que ce soit de mal avec IPv6. Ce n'est pas joli. Je veux dire, il est beaucoup plus facile de taper ces choses que de taper quelque chose comme ceci. Mais en même temps, c'est ainsi que nous l'avons résolu. Nous sommes capables d'utiliser encore ipv4 dans la plupart des réseaux et nous sommes capables de communiquer avec cette pénurie d'adresses IP "entre guillemets". Donc, j'espère que cela a du sens. Nous allons nous baser sur ces concepts. Encore une fois, ipv4, IPv6, les adresses IP sont des protocoles de couche 3. La couche 3 est un routeur. Donc, lorsque nous acheminons le trafic, nous acheminons via une adresse IP. Nous allons donc nous baser sur cela également au fur et à mesure. J'espère que tout cela n'est qu'un rappel pour vous. C'est donc tout pour cette vidéo. Je vous retrouve dans la prochaine.

Très bien, nous allons descendre d'une couche ici et parler de la couche 2. Donc, rappelez-vous, ipv4, IPv6, l'adresse IP n'est qu'un trou, c'est la couche 3. Nous parlons de routage ici. En couche 2, nous allons parler d'une adresse MAC ou d'une adresse physique. Maintenant, MAC signifie Media Access Control, et c'est identifié ici dans notre ifconfig comme cet éther. Donc, nous pouvons penser à cela comme notre adresse physique et une façon dont nous communiquons lorsque nous utilisons des commutateurs. Les commutateurs communiquent sur cette adresse physique. C'est un peu comme ça qu'ils savent quel appareil est quoi. Donc, ce que nous disons ici, c'est que si nous avons un appareil, disons que vous venez de construire un ordinateur et que vous installez votre carte d'interface réseau ou votre NIC. Vous allez la brancher et vous aurez une adresse MAC pour cette NIC. Votre téléphone portable, il aura une adresse MAC. Tout ce qui utilise une interface réseau aura une adresse MAC. Donc, ces adresses MAC sont importantes car elles utilisent la couche 2 ou la commutation, et c'est ainsi que nous communiquons sur les commutateurs. Maintenant, il y a quelque chose à noter brièvement sur les adresses MAC. Maintenant, les adresses MAC ont des identifiants. Donc, comme vous pouvez le voir ici, cette adresse MAC a six paires différentes de deux. Et ce que nous pouvons faire, c'est prendre les trois premières paires et nous pouvons simplement copier ceci, et nous pouvons aller et essayer de le mettre dans une recherche d'adresse MAC. Maintenant, pour celle-ci, ce sera juste VMware. Je ne suis pas sûr si cela va réellement apparaître, mais je vais le coller et voir ce qui se passe. Et vous pouvez voir que le vendeur apparaît en fait comme VMware. Donc, les trois premières paires ici sont des identifiants, et nous pouvons identifier à quoi nous avons affaire. Si vous avez déjà regardé dans votre maison et que vous avez regardé votre réseau et que vous essayez de trouver un appareil et que vous voyez l'adresse IP, mais que l'adresse IP ne vous aide pas vraiment à l'identifier, vous pourriez voir quelque chose comme une adresse MAC, car votre appareil domestique, disons votre routeur, pourrait également être ce qu'on appelle un appareil de couche 2/couche 3, ce qui signifie qu'il fait de la commutation et du routage pour vous, et il connaîtra également l'adresse MAC de cet appareil. Donc, vous pouvez prendre les trois premières paires ici, les mettre dans la machine Google et voir si vous pouvez identifier l'appareil. Donc, si j'étais incertain, cela n'avait pas de nom d'hôte ou de nom d'appareil, et je pourrais simplement me dire : "D'accord, laissez-moi les rechercher. Peut-être que cela me donnera un lien." Cela ne me dira pas l'appareil exact, mais si je sais qu'il fonctionne sous VMware, alors je pourrais dire : "Oh, vous savez, c'est ma machine hôte qui fonctionne." Ou si c'est lié à Texas Instruments ou quelque chose comme ça, peut-être que je connais cet appareil dans ma maison. Donc, c'est juste un moyen rapide de rechercher des appareils et d'en savoir plus sur eux. L'autre option, ou l'autre chose que vous devez savoir ici, c'est juste que, encore une fois, les adresses MAC sont liées à la couche 2, liées à la commutation. J'essaie juste de répéter cela et de vous le faire graver dans la tête. Donc, c'est tout ce que nous devons savoir de cette leçon, et nous allons passer à la suite. Je vous retrouve dans la prochaine leçon.

Très bien, nous passons maintenant à la couche 4, qui est la couche de transport du modèle OSI, et nous allons parler de ce qu'est TCP et de ce qu'est UDP. Nous allons donc le taper ici : TCP contre UDP. Donc, TCP est ce qu'on appelle le protocole de contrôle de transmission, et vous pouvez le considérer comme un protocole orienté connexion. Et nous avons aussi UDP, qui est le protocole de datagramme utilisateur, et c'est un protocole sans connexion. Donc, lorsque nous avons ces deux protocoles, l'un est le mieux adapté lorsqu'il s'agit d'une haute fiabilité, c'est TCP. TCP est orienté connexion, nous voulons établir une connexion, nous avons besoin d'une haute fiabilité. Donc, vous pouvez penser à quelque chose comme un site web, qui est HTTP ou HTTPS, ou vous pouvez penser à quelque chose comme SSH ou FTP, le protocole de transfert de fichiers. Tous ceux-là utilisent TCP. Quand vous pensez à UDP, vous pourriez penser à quelque chose comme un service de streaming qui est sans connexion, ou DNS qui est sans connexion, ou notre voix sur IP qui est sans connexion. Et quand cela devient important pour la numérisation, la numérisation est super importante. Nous allons numériser à la fois TCP et UDP en tant que testeurs d'intrusion, et ne vous inquiétez pas de la numérisation pour l'instant. Quand nous aborderons la section de numérisation, cela aura beaucoup plus de sens. Mais nous devons savoir ce que sont TCP et UDP et les définir largement. Donc, le protocole le plus couramment utilisé que vous allez numériser sera TCP. Maintenant, TCP fonctionne sur ce qu'on appelle une poignée de main en trois étapes. Maintenant, si nous regardons la poignée de main en trois étapes, elle ressemblera à ceci : nous allons d'abord envoyer un paquet SYN, puis nous allons recevoir en retour un paquet SYN-ACK, et enfin, nous allons envoyer un paquet ACK. Maintenant, comment cela fonctionne-t-il ? Maintenant, vous pourriez penser à cela comme une interaction. Alors, disons que vous avez un ami ou un voisin, et vous allez chez votre voisin et vous dites "Bonjour". C'est un SYN. Maintenant, SYN-ACK sera la réponse. Il dira : "Hé, SYN, je te reconnais." C'est votre voisin qui vous fait signe en retour. Et alors vous savez que vous êtes prêt à commencer une conversation. C'est donc l'accusé de réception. Maintenant, quand nous pensons à cela en termes de ports. Maintenant, un port est un élément qui peut être ouvert sur une machine. C'est un moyen de communiquer avec certains protocoles. Par exemple, si vous pensez à HTTP, c'est sur le port 80. Si vous pensez à HTTPS, c'est sur le port 443. Il existe de nombreux protocoles différents, et il y a plus de 65 000 ports qui peuvent utiliser ces protocoles. Donc, tout ce qui est lié ici a à voir avec ces ports. Maintenant, disons que vous voulez vous connecter au port 443 sur un site web. Vous allez envoyer un paquet SYN à ce site web. Vous allez dire : "Hé, je veux me connecter à vous sur le port 443." Et si le 443 est ouvert et disponible pour la connexion, ils diront : "Hé, vous pouvez vous connecter à moi." Et quand vous voulez réellement établir cette connexion, vous allez renvoyer ce paquet d'accusé de réception. Maintenant, rendons cela plus clair. Allons ouvrir un outil appelé Wireshark. Ceci est intégré à Kali Linux. Je vais juste taper Wireshark et je vais fournir une esperluette ici juste pour avoir un accès shell si j'en ai besoin en arrière-plan. Et tout ce que je vais faire, c'est capturer des données de paquets. Donc, cela écoutera sur ma NIC et dira : "Hé, qu'est-ce qu'il fait ? Capturons toutes ces données." Donc, nous allons capturer cela. Je vais commencer une capture ici. Vous allez commencer à voir beaucoup de trafic arriver. Vous pouvez voir les différents protocoles ici. Vous pouvez voir que UDP arrive en ce moment, mais nous allons établir une connexion TCP. Alors, allons sur le World Wide Web, et j'ai Google ouvert. Je vais juste rafraîchir Google. Vous allez voir beaucoup de trafic commencer à arriver. Alors, je vais juste arrêter ceci ici. Regardez toutes les données de paquets qui sont envoyées lorsque vous utilisez votre ordinateur. C'est ce qui se passe en arrière-plan, vous n'y pensez même pas. Donc, nous pouvons voir quelques SYN, SYN-ACK. Ceux-ci sont en gris. Voyons si nous pouvons en trouver un bon. D'accord, alors en voici un ici. Euh, alors ce que nous allons faire, en fait, trouvons un meilleur. Alors, nous allons descendre ici et nous allons dire : "D'accord, alors nous sommes ici. Nous sommes notre IP source. C'est 192.168.57.39. Nous allons vers la destination 74.125.21.155. Nous disons : "Hé, j'ai ce port ici, je veux me connecter à votre port." Donc, port 443. C'est une page web. Nous envoyons un paquet SYN. Si ce port est ouvert et disponible pour la connexion et la communication, ce qui va se passer en retour, c'est que cette adresse IP dira : "Hé, je suis là. Je vous autoriserai à vous connecter sur ce port." Et si nous établissons cette connexion finale, nous allons renvoyer le paquet ACK, qui est juste ici. Il dira ACK. Donc, c'est la poignée de main en trois étapes. S'il vous plaît, rappelez-vous que cela reviendra en jeu lorsque nous aborderons la numérisation, et nous parlerons de la numérisation furtive et de la façon dont nous modifions la poignée de main en trois étapes pour effectuer une numérisation. C'est donc tout pour cette leçon. Je vous retrouve dans la prochaine.

Très bien, avant de passer au modèle OSI, je veux parler de quelques ports et protocoles courants, car il s'agit d'un rappel. La plupart d'entre eux devraient vous être assez familiers. Je vais les parcourir assez rapidement et en parler brièvement sur chacun de ces ports courants. Et la raison pour laquelle j'ai listé ceux-ci est qu'il y a des choses que nous verrons assez souvent en tant que testeurs d'intrusion, et c'est juste quelque chose que, au fur et à mesure que nous parcourons le cours, si l'un de ceux-ci apparaît, c'est quelque chose qui sonne une cloche. Et vous voyez une analyse, elle revient, et vous voyez le port 21, vous pensez simplement : "Ah, oui, FTP." Ou vous voyez le port 80, vous pensez : "Ah, oui, HTTP." Donc, vous devez commencer à entraîner votre esprit à mémoriser ces ports. Donc, quand nous aborderons notre numérisation, que nous n'avons pas encore couverte, mais quand nous y arriverons et que nous verrons quels ports sont ouverts sur une machine, nous serons capables de mémoriser ces ports courants. Donc, du côté TCP, nous avons FTP. FTP est le protocole de transfert de fichiers. Vous le verrez dans certaines évaluations. Vous le verrez beaucoup lorsque nous ferons quelque chose appelé Capture the Flag, ou lorsque nous parcourrons des machines de test, vous verrez FTP ouvert assez souvent. Donc, FTP, protocole de transfert de fichiers. Tout ce que cela signifie, c'est que nous pouvons nous connecter à ce serveur, nous pouvons y mettre un fichier, ou nous pouvons en retirer un fichier. Maintenant, SSH et Telnet jouent un peu main dans la main. Telnet est la capacité de se connecter à une machine à distance. Maintenant, SSH fait la même chose. La seule différence est que SSH est la version cryptée de cela. Donc, avec Telnet, vous êtes en texte clair, et avec SSH, vous êtes crypté. Maintenant, SMTP, POP3 et IMAP sont tous liés au courrier. Nous ne nous soucierons pas trop du courrier dans ce cours, mais vous pourriez le voir revenir à un moment donné. Alors, rappelez-vous simplement vos 25, 110 et 143. DNS. Donc, DNS est un moyen de résoudre les adresses IP en noms. Et nous pouvons y jeter un coup d'œil rapide. Si nous retournons à notre machine Kali et disons que nous sommes sur Google ici, nous avons Google ouvert, mais l'ordinateur ne sait pas vraiment ce qu'est Google. L'ordinateur utilise simplement un texte agréable comme google.com pour nous, les humains. Ce qui se passe en coulisses, c'est que Google se résout en fait en une adresse IP. Maintenant, l'adresse IP est la façon dont l'ordinateur sait comment aller et venir, car nous ne voulons pas nous asseoir là et taper des adresses IP. Ce DNS, ou système de noms de domaine, a été implémenté pour nous. Donc, nous tapons google.com. En coulisses, il sait : "Hé, je veux aller à 17179.10.22.34, peu importe ce que c'est en réalité." Mais c'est juste un moyen rapide pour l'ordinateur de se relier à un humain, et pour l'humain d'avoir un accès facilement lisible à certaines de ces choses. Donc, pour revenir à notre PowerPoint, nous avons HTTP et HTTPS. C'est un site web, juste ce que vous avez vu là-bas. La plupart de tout est sur 443 maintenant, ou HTTPS. Le HTTP sur le port 80, vous le verrez parfois. Rappelez-vous, c'est la version non sécurisée du protocole. Donc, HTTPS est crypté, HTTP n'est pas crypté et n'est pas sécurisé. Donc, enfin, SMB, ports 139 et 445. À l'origine, c'était juste 139. Et dans les versions ultérieures de Windows, ils ont ajouté 445. Vous verrez beaucoup ces ports. C'est probablement le port le plus courant que vous verrez en tant que testeur d'intrusion. Ceux-ci sont liés aux partages de fichiers. Vous pourriez aussi entendre cela appelé Samba. Donc, il y a quelques noms pour cela, mais quand vous pensez à SMB et que vous voyez 139 ou 445, pensez aux partages de fichiers. Et du point de vue d'un testeur d'intrusion, vous devez penser à toutes les exploitations folles que nous avons eues concernant SMB. Le plus récent, à la date de ce cours, était le virus WannaCry, n'est-ce pas ? Donc, vous avez le virus WannaCry, il est également connu sous le nom d'EternalBlue, sur lequel il a été construit, ou ms17-010 était le terme officiel de cette exploitation. Cette exploitation utilisait une exploitation SMB pour naviguer à travers les réseaux. Il est donc devenu très vicieux très rapidement, car SMB est ouvert très fréquemment sur les réseaux. Maintenant, du côté UDP, nous avons aussi DNS ici. DNS est à la fois un protocole TCP et UDP. Nous avons aussi DHCP. Maintenant, en ce qui concerne les adresses IP, DHCP vous associe à une adresse IP, un peu au hasard. Maintenant, vous pourriez avoir l'inverse de cela, qui est une adresse IP statique. Donc, avec DHCP, vous vous connectez à votre réseau, disons votre réseau domestique, et Internet démarre juste. Devinez quoi ? Probablement DHCP en coulisses. Il choisit juste un nombre entre une plage, dit : "Hé, voici votre adresse IP. Je vais vous laisser la louer pendant huit heures, ou un jour, ou une semaine, ou peu importe la durée du délai." Et cette adresse IP est la vôtre. Maintenant, l'inverse de cela, encore une fois, est statique. Donc, vous pourriez dire : "Hé, je veux une adresse IP statique." Et chaque fois que je me connecte avec cet ordinateur spécifique, donnez-lui cette adresse IP. Alors, comment saurons-nous cela ? Très probablement, l'adresse MAC, n'est-ce pas ? Donc, de la couche 2, il connaîtra la couche 3 et comment l'attribuer. Donc, encore une fois, DHCP devrait vous être assez familier. Nous avons aussi TFTP sur le port 69, qui est le Trivial FTP, et il utilise UDP au lieu de TCP. Et nous avons aussi SNMP, qui est le protocole de gestion de réseau simple. Donc, vous rencontrerez SNMP occasionnellement sur les réseaux, pas toujours. Mais lorsque nous le rencontrons, il peut y avoir des informations à recueillir, surtout s'il y a des chaînes utilisées qui sont des chaînes communautaires ou publiques. Et nous nous en soucierons lorsque nous le rencontrerons. Mais vous le verrez probablement à nouveau dans ce cours. C'est donc tout pour cette vidéo. Nous allons passer au modèle OSI et tout relier. Ensuite, nous aborderons un peu la segmentation, et nous terminerons par un rappel sur les réseaux, une dernière vidéo sur les réseaux. Je vous retrouve donc dans la prochaine vidéo.

Très bien, tout ce temps que nous avons parlé, nous avons parlé de réseaux, et je vous ai lancé des termes, et chaque fois que je vous lance un terme, j'essaie d'utiliser la couche respective pour cela. Vous m'avez entendu dire couche 2, couche 3, couche 4, et tout cela correspond à ce qu'on appelle le modèle OSI. Donc, si vous êtes jamais dans un entretien réseau, ou si vous parlez à quelqu'un qui a de l'expérience en réseau, ou même si vous êtes au support technique ou que vous prenez des tickets, connaître le modèle OSI est incroyablement utile. Et les gens vous lanceront simplement des couches, surtout les personnes qui sont dans le domaine depuis assez longtemps. Ils pourraient simplement dire couche 2 au lieu d'un commutateur, ou ils pourraient dire couche 3 au lieu d'un routeur. Je vais donc discuter du modèle OSI très rapidement, vous donner un moyen mnémotechnique pour vous en souvenir, et simplement parler de certains des concepts qu'il contient et comment le dépanner également. Donc, j'ai appris cela de Keith Barker il y a longtemps, un excellent formateur d'ailleurs, et voici le moyen mnémotechnique. Nous allons donc faire PDNTSPA, et cela signifie dans ma tête : "Please Do Not Throw Sausage Pizza Away". Encore une fois, c'est "Please Do Not Throw Sausage Pizza Away". Je vais donc mettre des numéros correspondant aux couches devant. Et nous allons les taper un par un. Donc, sur la première couche ici, nous avons ce qu'on appelle la couche physique, et vous pouvez penser à votre couche physique comme des câbles de données, ou comme vos câbles Cat 6, ce genre de choses, quelque chose que vous pourriez brancher, n'est-ce pas ? C'est la couche physique. Et nous avons déjà beaucoup parlé de la couche 2. La couche 2 est la couche de données, et c'est notre commutation, n'est-ce pas ? Et aussi nos adresses MAC. En descendant la liste, nous avons la couche réseau, qui sont les adresses IP, aussi le routage. La quatrième couche est la couche de transport, qui est TCP, UDP, dont nous avons également parlé. Et les quelques dernières. Donc, la couche de session. Nous avons la couche de session, qui est juste la gestion de session. Vous n'avez pas vraiment à vous soucier trop de celle-ci. Six est la couche de présentation. Maintenant, cela devrait vous être familier, car pensez aux fichiers WMV, JPEG, vidéo. C'est ce qu'est votre couche de présentation, donc les médias. Et enfin, nous avons la couche application, qui est comme HTTP, SMTP, vos applications que vous utilisez, n'est-ce pas ? Donc, nous avons cela présenté ici. Et vous pourriez demander : "Pourquoi est-ce important ?" Eh bien, encore une fois, quand nous disons quelque chose comme : "Mon routeur domestique est une couche 2/3", cela signifie qu'il fait de la commutation et qu'il fait du routage, n'est-ce pas ? Vous pourriez penser à cela d'une autre manière également. Vous pourriez être amené à dépanner, et quelque chose à discuter aussi avec le modèle OSI, c'est que lorsque nous recevons des données, nous recevons des données descendant cette couche physique jusqu'à l'application. Lorsque nous transmettons des données, elles sortent de la couche application vers la couche physique. Lorsque nous dépannons cela, il est toujours préférable de commencer par la couche physique et de descendre jusqu'à la couche application. Donc, disons que vous travaillez au support technique et que vous recevez un appel téléphonique, et que quelqu'un dit : "Vous savez, mon internet ne fonctionne pas, aidez-moi." Eh bien, quelle est la première chose que vous allez faire ? Allez-vous lui poser des questions au niveau de l'application ? Oui, probablement pas. Vous pourriez dire : "Hé, pouvez-vous regarder à l'arrière de l'ordinateur ? Voyez-vous le câble branché ?" "Oh, le câble est branché." "D'accord, eh bien, euh, voyez-vous où le câble est branché ? Y a-t-il une lumière clignotante ? Cette lumière clignotante est-elle verte par hasard ?" "D'accord, nous vérifions la NIC." Et alors nous pourrions lui demander, vous savez, s'il a une adresse IP, ce qui se passe, euh, tout le chemin vers le bas, et ensuite nous dépannons tout le chemin jusqu'à la couche 7. Donc, nous ne commencerions pas à la couche 7, n'est-ce pas ? Nous commencerions par les bases et descendrions. Donc, il est important de savoir cela. Ce n'est en aucun cas un cours de support technique, mais il est super important de savoir cela, surtout si cela fait un moment que vous n'avez pas vu ces trucs de réseau, ou même si c'est nouveau pour vous, que le modèle OSI est couramment référencé. Même en tant que testeur d'intrusion, je reçois toutes sortes de discussions sur la couche 2, la couche 3, et vous serez assis dans des réunions avec des ingénieurs réseau, avec des personnes très, très intelligentes à ce sujet, et ils vous lanceront tout ce jargon. Donc, si vous connaissez ce jargon, cela vous bénéficie vraiment, sinon vous resterez assis et vous vous demanderez de quoi ils parlent. Donc, j'espère que c'est une méthode rapide et informative pour vous. Et encore une fois, rappelez-vous : "Please Do Not Throw Sausage Pizza Away". C'est la façon la plus simple dont je m'en souviens. Vous pouvez créer vos propres moyens mnémotechniques si vous le souhaitez. Les gens ont d'autres choses aussi. Si vous avez un moyen mnémotechnique préféré, n'hésitez pas à commenter ci-dessous et à me dire votre moyen mnémotechnique également. J'adorerais entendre certaines de ces autres options. Alors, allons-y et passons à la segmentation, puis nous commencerons à passer à d'autres parties amusantes du cours.

Parlons de la segmentation. La segmentation est importante dans les réseaux. Vous en entendez parler tout le temps. Vous entendez même des gens peut-être paniquer. Je sais que j'ai paniqué quand j'ai entendu dire que je devais le faire pour des examens comme Network Plus ou CCNA. Et j'ai l'impression qu'il existe de nombreuses méthodes compliquées pour la segmentation. Mais il y a eu une méthode qui m'a été montrée au milieu de ma carrière, et cela m'a époustouflé. C'est une méthode de segmentation vraiment, vraiment rapide. Et je veux vraiment vous expliquer ce qu'est la segmentation, pourquoi nous le faisons, puis vous montrer la méthodologie derrière cela. Donc, si nous voulons parler de segmentation, si nous venons ici et faisons simplement un ifconfig et que nous regardons notre adresse IP, n'est-ce pas ? Nous avons notre inet, qui est notre ipv4. Et vous pouvez voir ici aussi, nous avons ce masque de réseau. C'est aussi connu sous le nom de masque de sous-réseau ou sous-réseau. Et il dit juste 255-255-255.0. Cela ne nous dit pas grand-chose si nous n'en savons pas beaucoup à ce sujet. Mais c'est à quoi ressemble un sous-réseau. Et nous pouvons penser aux sous-réseaux en uns et zéros. C'est tout binaire, n'est-ce pas ? Donc, nous avons huit bits ici, tout comme une adresse IP ipv4. Même chose, 8 bits, 8 bits, 8 bits, et encore huit bits. Et nous avons des uns et des zéros. Si tous les uns sont activés, nous avons 255. Si aucun des uns n'est activé, nous avons zéro. Et selon la façon dont ces uns et ces zéros sont activés ou désactivés, cela détermine beaucoup de choses pour nous. Et c'est pourquoi ce masque de réseau est important. Maintenant, attaché à vos ressources pour ce cours, j'ai créé une feuille Excel que je pense sera utile. Donc, si nous regardons la feuille Excel, voici la feuille de segmentation Cyber Mentors. Et parlons-en. Cela ressemble à un tas de chiffres, et cela peut vous sembler fou. Et nous allons parler de la façon dont cela se décompose, comment les bits se décomposent, puis comment je l'écrirais en abrégé pour un examen ou un test, ou juste quelque chose que je fais au jour le jour. Alors, d'abord, parlons des bits. Venez à l'onglet bits ici, et nous avons nos huit bits, n'est-ce pas ? Nous pouvons compter cela et il y en a huit ici. Dans le compte, vous pouvez le voir, et cela commence à 128 et descend jusqu'à un. Vous continuez à le couper en deux, n'est-ce pas ? Donc, 128, 64, 32, 16, 8, quoi d'autre. Ce qui est plus important, c'est pourquoi nous arrivons à ces nombres. Donc, si nous avons un 1 activé ici, cela ajoute à la valeur. Quand tous les uns sont activés, cela équivaut à 255. Vous voyez tous les uns activés ici. Si nous devions surligner tout cela, descendre à la somme, vous voyez que la somme est 255. C'est tout ce que fait cette formule ici. Donc, si nous devions passer par là, et que vous voyez tous les zéros ici, rien n'est activé pour réellement activer une valeur ici. Comment cela fonctionne réellement, c'est que le commutateur doit être activé dans l'ordre, n'est-ce pas ? Donc, si nous devions activer un autre bit, nous devrions l'activer ici, et nous devrions en activer un autre ici. Nous ne pourrions pas simplement descendre ici et l'activer ici. Cela n'aurait pas de sens. Cela ne fonctionne pas comme ça, pas avec la segmentation. Donc, nous allons retirer ces uns et simplement montrer à nouveau des zéros. Mais vous voyez comment les valeurs changent. Par exemple, si nous avions ce réseau, et que vous voyiez le défaut, et que je vous montre le 255-255-255.0, le standard ici, parce que c'est ce qu'on appelle un réseau /24. C'est très, très courant. Et c'est très courant parce qu'il est utilisé principalement dans les foyers et les petites entreprises, et il est fait de cette façon en raison de la quantité d'hôtes qu'il autorise. Maintenant, si nous parlons de l'hôte, vous pouvez voir que j'ai ici 2 à la puissance 8. Pourquoi ai-je cela ? Eh bien, nous comptons en fait le nombre de bits qui sont désactivés, ou le nombre d'hôtes qui nous sont disponibles. Si un hôte ici, ou un bit, était activé, alors nous perdons la quantité d'hôtes dont nous disposons. Et ce sous-réseau devient de plus en plus petit. Ne vous inquiétez pas trop des uns et des zéros. Cela deviendra beaucoup plus clair lorsque nous arrêterons de parler en ces termes binaires. Je veux juste décomposer les mathématiques derrière cela avant de le rendre vraiment, vraiment simple. Donc, encore une fois, nous parlons de ce qu'on appelle le réseau /24, ou slash 24, et c'est tellement standard à cause de l'hôte, encore une fois, 256. Pensez à tous les appareils de votre maison. Vous avez des téléphones portables, vous avez probablement des ordinateurs, vous pourriez avoir un Roku ou un Amazon Fire ou quelque chose de ce genre. Vous pourriez avoir des téléviseurs intelligents ou des montres intelligentes ou quelque chose qui se connecte à Internet. Eh bien, encore une fois, ils se connectent tous via NAT, n'est-ce pas ? Et sortent, mais la quantité d'hôtes que vous pouvez avoir sur votre réseau privé dépend vraiment du masque de sous-réseau et de la façon dont vous le configurez. Nous avons cette classe C que vous avez vue auparavant, le 192.168.1, ou .0, ou peu importe comment vous voulez l'avoir, n'est-ce pas ? Eh bien, cela nous permet d'avoir 256 lorsque nous avons un sous-réseau de /24. Donc, c'est très courant pour un foyer, c'est aussi courant pour une petite entreprise. Il y a peut-être une imprimante, quelques appareils là-dedans, mais ils ne dépasseront jamais ces 256 hôtes. D'accord. Donc, quand nous arrivons à la feuille de triche de segmentation, décomposons cela un peu différemment. Donc, nous avons notre hôte ici. Commençons par le /24, celui que nous venons de voir, et vous avez vu qu'il y a 256 hôtes disponibles. Au fur et à mesure que nous commençons à désactiver des bits, nous désactivons un bit ici, nous désactivons un bit, continuons à descendre la liste, les hôtes commencent à devenir plus grands, et cela correspond juste ici. Nous avons un /24, et la seule raison pour laquelle je dis 24, c'est que je compte les uns sur toute la ligne, n'est-ce pas ? Donc, nous avons 24 bits activés. Si nous en avions 23, cela devient de plus en plus grand. Restons à l'écart des uns et des zéros. Je pense que c'est un peu compliqué. La meilleure façon de penser à cela est de regarder le masque de sous-réseau ici, et je vais le reproduire, puis nous y reviendrons. Donc, ce que je fais ici, c'est que nous pouvons avoir une possibilité de 32 bits activés, n'est-ce pas ? Donc, je crée juste un nouvel onglet et je vais juste aller ici et je vais appuyer sur Ctrl et le faire glisser jusqu'à ce qu'il atteigne huit. Et puis je vais faire la même chose avec neuf. Je vais le faire glisser. Tout ce que je fais, c'est juste créer rapidement 32 espaces réservés, et j'émule juste s'il y avait la possibilité de 32 bits différents activés. Donc, imaginez qu'un bit est activé. Imaginez que les 32 bits sont activés. Ce sont les possibilités ici, n'est-ce pas ? Donc, toujours, nous allons avoir un certain nombre d'hôtes, et nous allons avoir un masque de sous-réseau. Donc, nous l'appellerons juste sous-réseau. Nous commençons toujours ici avec 128, tout comme les bits que vous avez vus. Vous avez vu le 128 commencer sur les bits. Commençons aussi par 128. Maintenant, comme vous l'avez vu, chaque bit qui est activé, rappelez-vous, lorsque nous activons un bit ici, il commence à diminuer. Donc, nous allons diminuer pour les bits qui sont activés : 64, 32, 16, 8, 4, 2, 1. Vous venez ici, et ce que j'aime faire, c'est juste additionner ces nombres. Et vous pouvez voir que 128 et 64 font 192. Et puis vous pouvez additionner ces deux ensemble, donc vous obtenez 192, 32. Vous additionnez juste en diagonale, la façon dont je le fais toujours. Donc, 224, 240, 248, 252, 254 et 255. Maintenant, à quoi cela correspond-il ? Cela correspond aux possibilités des bits activés, n'est-ce pas ? Donc, cela ressemble exactement à ce que vous voyez ici, même chose. Et si vous aviez un 1 en dessous, alors vous avez 128. Si vous avez un autre 1 en dessous, eh bien, devinez quoi ? Vous avez 128 plus 64, ce qui fait 192. Et ce nombre continue de croître. Pourquoi est-ce important ? C'est toujours tout en uns et zéros, n'est-ce pas ? Eh bien, commençons à y penser. Si nous avons un réseau /24, nous avons 24 bits activés. Notre masque de sous-réseau est 255.255.255.0. Si nous avions un /16, cela devient 255.255.0.0. Pourquoi ces changements ? Laissez-moi vous montrer ceci. Pour un /8, je le lie juste à ceci. Eh bien, cela vient du nombre de bits qui sont activés. Huit bits activés, nous avons deux-cinq-cinq, et le reste sont des zéros. Vous avez encore huit bits activés, deux-cinq-cinq, deux-cinq-cinq, le reste sont des zéros. Descendez au /24, qui est ce sous-réseau vraiment courant que vous voyez, et vous avez deux-cinq-cinq, deux-cinq-cinq, deux-cinq-cinq, zéro. Maintenant, c'est très courant. D'accord, revenons à la feuille de triche maintenant, et vous pouvez voir que j'ai X comme espace réservé dans le sous-réseau. Donc, ce que je dis ici, c'est que vous regardez cette liste et vous dites : "J'ai un /1." Eh bien, pour toute cette zone ici, de un à huit, l'espace réservé tiendra à la place de ce X. Donc, pour un /1, si j'ai 128, alors devinez quoi ? Cela deviendra 128.0.0.0, parce que c'est comme ça que ce serait. Et si vous n'aviez activé qu'un seul bit ici, et que vous faisiez de tous ceux-ci des zéros, devinez quoi ? Seul le 128 serait activé, le reste serait des zéros. Si nous avions un /14, alors 255 sont automatiquement activés. Vous avez déjà un /8, vous l'avez traversé. Donc, vous commencez dans la deuxième itération ici. Le /14 correspond ici à 252. Donc, vous auriez un 255.252.0.0. Donc, tout cela n'est que des espaces réservés. Revenons à la feuille ici. Donc, je fais cette liste rapide et sale. C'est ce que j'écris lorsque j'écris quelque chose de rapide pour un examen. J'écrirai un à trente-deux. Je mettrai l'hôte ici et je mettrai le sous-réseau ici. Donc, encore une fois, si nous savons qu'une fois que nous traversons 8, 16, 24, 32, il y a un deux-cinq-cinq devant. Tout ce que nous avons à faire, c'est de dire /27. Eh bien, nous avons traversé trois colonnes. Ensuite, je sais avec certitude que nous avons 255.255.255. quelque chose, n'est-ce pas ? Vous voyez le /27, descendez ici, le sous-réseau serait 224. Disons 28. D'accord, deux-cinq-cinq, deux-cinq-cinq, deux-cinq-cinq. Regardez le 28, vous avez un point 240. Et cela va être déroutant. La segmentation n'est pas nécessairement facile. Une fois que vous avez le tableau, cela a beaucoup plus de sens. Alors, commençons à assembler davantage de choses. Quand je dis que j'ai des hôtes, les hôtes que je montre ne correspondent qu'aux premières lignes, mais c'est très courant ou très utile de connaître ce nombre d'emblée. Maintenant, si vous regardez la feuille de triche, ce que vous pouvez faire ici, c'est que vous savez juste que vous commencez par un, ou vous commencez par le 128, vous descendez. Mais chaque fois que vous montez, vous doublez. Et pourquoi doublons-nous ? Vous vous souvenez de la partie des bits ? Chaque fois qu'un bit est désactivé, alors que nous montons d'un nombre, nous le prenons à la puissance suivante. Donc, nous avons huit bits désactivés. Nous prenons deux à la puissance huit, c'est 256. Eh bien, voici, regardez, parcourez ceci, 256. Nous allons à la neuvième puissance, 512. À la dixième puissance, 1024. Cela continue de doubler. C'est tout ce que vous avez à penser dans votre esprit, c'est que cela continue de doubler. Donc, lors d'un examen, par exemple, vous pourriez avoir quelque chose comme : "Combien d'hôtes pourraient potentiellement se trouver dans un réseau /20 ?" Et vous venez à votre feuille de triche que vous avez faite, ou que vous avez en tête, et vous dites : "Eh bien, 496." Et puis nous y reviendrons dans une minute, mais nous devons soustraire deux, donc 494 potentiels. Et pourquoi tout cela est-il important ? Qu'est-ce que nous...

Même se soucier de quoi que ce soit. Pourquoi est-ce que je radote ? Eh bien, vous devez savoir, basé sur le réseau. D'accord, le slash 24 est excellent pour un petit réseau domestique de bureau, mais vous voulez l'avoir. Mais qu'en est-il si vous êtes une grande entreprise ? Peut-être avez-vous des milliers d'appareils. D'accord, peut-être voulez-vous un réseau slash 16. Cela pourrait avoir plus de sens pour vous, ou vous voyez même certains avec un réseau slash 8. Cela dépend simplement de la taille de l'entreprise. Plus l'entreprise est grande, plus il y a de chances que vous constatiez qu'ils n'utilisent pas de slash 24, ou qu'ils pourraient même avoir des segments de leur réseau subdivisés où, disons, ils n'ont que des téléphones et qu'ils ont 500 employés et 500 téléphones. Ils pourraient avoir un seul réseau slash 23 pour rien d'autre que des téléphones, car c'est la quantité d'hôtes qui y rentrent. Donc, ce que nous recherchons avec la segmentation de réseau, c'est combien d'hôtes nous pouvons intégrer et quel est le masque qui se cache derrière. Ce sont donc des questions qui pourraient vous être posées à l'examen, et ce sont des questions que vous allez simplement voir. Et lorsque l'on vous donne des adresses, disons que vous faites un test de pénétration pour un client, vous pourriez recevoir quelque chose comme ceci. Vous pourriez recevoir une adresse IP, c'est 192.168.1.0/24. D'accord, et immédiatement dans votre tête, vous vous dites : "Oh, slash 24, c'est standard. Il pourrait y avoir jusqu'à 256 hôtes, ou 254 hôtes ou appareils dans ce réseau." Mais s'ils vous donnaient quelque chose comme 192.168.1.0/20, alors vous pourriez regarder votre petit tableau et dire : "4094 hôtes". Rappelez-vous, nous allons soustraire deux, quatre mille quatre-vingt-quatorze hôtes dans ce réseau. Maintenant, je sais que si je scanne ceci, je suis confronté à beaucoup plus d'appareils potentiellement que dans ceci. D'accord, donc quand un client vous donne vos sous-réseaux, ils pourraient simplement l'écrire comme ça. Et selon la taille de votre client, cela pourrait dépendre de la taille de ses sous-réseaux pour vous. Par exemple, je viens de faire un test de pénétration pour un client qui était un slash 16 sur toute la ligne, et cela ressemble à quelque chose comme 10.1.0.0/16. D'accord, et votre masque de sous-réseau pour cela serait quelque chose comme 255.255.0.0. Et comment cela intervient-il ? Eh bien, chaque fois que vous avez un 255, ce nombre est verrouillé en place. C'est une autre façon de penser à cela. Donc, ce 10 est toujours verrouillé. Celui-ci est toujours verrouillé. Le reste des bits est libre de jeu, ce qui signifie que nous pourrions avoir 10.1.1.0, 10.1.2.3. Nous pourrions en fait avoir un zéro ici, 0.1.2.3.4. Et c'est ainsi que ce nombre, pour un slash 16, devient si grand, car vous avez 10.1.0.0 à 255 dans les possibilités, ce qui équivaut à 256 hôtes. D'accord, pour une plage, vous obtenez 256. Eh bien, imaginez que vous deviez faire cela 255 autres fois, n'est-ce pas ? Et ce nombre devient considérablement plus grand ici. Et puis, si vous aviez un slash 8, alors bien sûr, il devient de plus en plus grand. Donc, ce que vous devez réaliser, ce sont quelques choses ici. Nous avons ces adresses et vous voyez le slash 1, le slash 8 à nouveau. Nous les appelons "wack". Le "wack 24" sera très courant. Je dirais que le "wack 16" est probablement votre prochain plus courant. Vous pourriez voir des réseaux cimentés étranges comme ceux-ci, des réseaux subdivisés comme ceux-ci, mais généralement, c'est slash 24, slash 16. Maintenant, votre ID réseau est généralement ce qui est connu sous le nom de votre première adresse, et votre ID de diffusion est connu sous le nom de votre dernière adresse. Ce n'est pas toujours le cas, mais c'est très courant. Et laissez-moi me reconnecter à cette machine Cali ici et je vais vous montrer. Donc, nous avons notre adresse IP 192.168.57.139 et nous avons un masque de réseau de 255.255.255.0. Qu'est-ce que cela vous dit d'après ce que nous venons d'apprendre ? Cela vous dit que nous avons un réseau slash 24. D'accord, c'est un réseau courant. Il y a potentiellement 254 hôtes. Pourquoi est-ce que je continue à dire ça ? Pourquoi est-ce que je continue à soustraire deux ? Eh bien, nous avons un ID réseau et un ID de diffusion ou une IP de diffusion ici. Eh bien, ce que nous devons savoir, c'est que nous sommes le .139. Nous pourrions être n'importe où de .1 à .254 dans ce réseau. Ce sont nos 254 possibilités. Ce zéro signifie que nous avons la flexibilité d'être dans n'importe quelle plage d'adresses IP de 1 à 254. Généralement, généralement un .0 pour cette IP ici et un .255 constituent notre ID réseau et notre IP de diffusion. Généralement. Donc, si nous devions dire quelque chose comme, revenons à ce document Excel et disons quelque chose comme ceci. Disons que nous avons un réseau slash 24 et que nous voulons savoir combien d'hôtes, nous voulons savoir quel est notre ID réseau et quelle est notre diffusion. Ou IAP. D'accord, nous dirions : "D'accord", et nous en ajouterons une de plus. Nous dirons que c'est un slash 24 et que l'IP commence par 192.168.1.0. Ou nous pouvons même l'écrire comme ceci : 192.168.1.0/24. Supprimez ceci et nous dirons : quel est notre masque de sous-réseau ? Quel est notre hôte ? Quel est notre réseau ? Quel est notre diffusion ? Donc, sous-réseau. Vous venez à votre feuille de triche. Vous dites : "D'accord, slash 24, je le sais déjà. Je dois remplir cette zone ici sur le X." Donc, je vais juste venir 255.255. Quel est le X ? Eh bien, nous savons que pour descendre cette ligne, 255 ici, point zéro. Et puis nous avons des hôtes. Je vais juste agrandir ça un peu. Nous avons l'hôte. D'accord, les hôtes sont juste ici. 256 hôtes potentiels, mais 254, car nous soustrayons toujours 2 du total des hôtes. Donc, notre ID réseau est généralement la première adresse disponible pour nous, qui est 192.168.1.0. La diffusion est 192.168.1.255, ce qui signifie que tout ce qui est disponible pour nous est de .1 à .254. Regardons autre chose, c'est un exemple basique. Faisons comme un slash 28. Disons que nous avons 192.168.1.0/28. Maintenant quoi ? Eh bien, vous avez 16 hôtes ici. D'accord, donc notre sous-réseau va alors remplir 255.255.255.X, n'est-ce pas ? Parce que nous sommes dans cette ligne. Slash 28 dit que ce sera un 240 lorsque nous descendrons au masque de sous-réseau. Je vais agrandir ça un peu. Combien d'hôtes ? 16 moins 2, nous avons 14 hôtes. D'accord, donc le premier non-hôte serait un 192.168.1.0, encore la même chose. Première adresse, dernière adresse sera quoi ? 192.168.1.15. Est-ce que ça a du sens ? 0 à 15, ce sont 16 adresses. L'espace utilisable est de 14, car nous retirons le réseau et la diffusion. Maintenant, vous pourriez voir quelque chose comme ceci, et devinez quoi ? Vous êtes segmenté. Parce que vous n'utilisez que ce petit espace, vous pouvez alors à son tour avoir quelque chose comme ceci : 192.168.1.16/28. Et puis ça commence de la même manière. Votre masque de sous-réseau est en fait le même, car vous utilisez un slash 28. Vous venez, vous pouvez simplement copier et coller ça. Les hôtes sont toujours les mêmes. Qu'est-ce qui change ici ? Eh bien, votre première adresse, 192.168.1.16, puis votre dernière adresse, qui est 192.168.1.31. Donc, parce que c'est plus petit du côté slash 28, nous pouvons en fait avoir plusieurs réseaux dans, disons, un .1.0, un .1.16, un .1.32. Vous obtenez plusieurs petits réseaux avec seulement une petite quantité d'hôtes. Donc, peut-être que vous n'avez que quelques serveurs dans cette plage, et vous avez comme des serveurs A, B et C. Ils vont dans un slash 28, puis vous avez un autre de serveurs, DC et E, ou DE et F, peu importe comment vous voulez le dire, et vous en avez plus dans cette plage. D'accord, donc vous pouvez le subdiviser en différentes choses. Et lorsque nous voyons des sous-réseaux, nous voyons toutes sortes de choses. Nous pouvons voir des téléphones, des serveurs, des ordinateurs d'utilisateurs, du sans fil, toutes sortes de choses différentes. Certaines entreprises deviennent vraiment spécifiques avec leur segmentation de réseau. Maintenant, essayons encore une fois. Disons que nous avons un slash 23. Maintenant, je veux mettre 192.168.1.0/23, mais ce serait faux. Pourquoi serait-ce faux ? Ceci va en fait être un zéro, et je vais vous montrer pourquoi dans une seconde. Donc, nous ne verrouillons plus ce nombre, n'est-ce pas ? Quand nous descendons en dessous du slash 24 des 255 tout au long des trois, devinez quoi ? Nous avons maintenant la possibilité de changer ce nombre, autre que ce qui est verrouillé. Donc, faisons un point zéro. Nous parlerons du pourquoi. Appuyons sur Entrée ici. Donc, le sous-réseau sur un slash 23, eh bien, nous allons faire un 254, qui sera le substitut du X ici. Nous allons venir et dire 255.255.254.0. Et maintenant, encore une fois, nous ne sommes pas verrouillés. Donc, rappelez-vous que ce 255 verrouillerait ce point 1. Cela n'arrive plus. Donc, nous avons 255.255.254.0. Nous allons en fait commencer à zéro ici et nous allons dire que le nombre d'hôtes possibles est de 510. D'accord, 512 moins 2. Nous dirons que notre ID réseau est 192.168.0.0 et notre diffusion serait alors 192.168.1.255. Pourquoi ? D'accord, donc nous avons la possibilité maintenant que nous couvrons deux plages. Nous avons 510 hôtes dans ce réseau. Et nous avons la possibilité d'aller entre zéro et un. Nous avons deux options maintenant, zéro et un. Donc, si nous devions dire un autre réseau, si nous voulions aller à comme un deux, nous devrions en fait dire 192.168.2.0/23. Ce serait le même masque de sous-réseau, le même nombre d'hôtes, mais alors ce serait 192.168.2.0, 192.168.3.255. Encore une fois, il y a 500, 510 hôtes possibles entre ceci, n'est-ce pas ? Parce que vous devez penser .0.1, .0.2, .0.3 tout au long de 254. Et encore, 1.1, 1.2 tout au long de 254. Donc, cela équivaut à 510. Une fois que vous avez atteint ce maximum, le 1.255, alors devinez quoi ? Vous commencez à 2. Vous avez un tout nouveau réseau ici, tout comme ces segments plus petits. Vous obtenez de nouveaux réseaux du côté plus grand également. Donc, ce que vous devez savoir, c'est que lorsque je, si je devais mettre quelque chose comme un 192.168.1.0.23, cela serait tombé en ligne avec le un et le zéro dans notre ID réseau réel. Le réseau serait toujours 0.0 et la diffusion serait 1.255. Et vous pouvez vérifier cela à tout moment si vous êtes confus. Vous pouvez vérifier votre notation CIDR. Donc, je vais apporter un site Web que je vais vous montrer ici, et c'est juste un guide d'adressage IP. Il s'appelle ipaddressguide.com. Vous l'apportez et vous faites défiler un peu. Et je viens de saisir 192.168.1.0/23, et vous pouvez voir qu'il me corrige en fait et dit que le premier bit est 192.168.0.0, le dernier est 192.168.1.255. Le nombre total d'hôtes est de 512 moins 2. Il vous montre cela à nouveau. Première IP, dernière IP. Vous avez votre masque de réseau. Très facile à utiliser un calculateur CIDR ici ou une plage d'adresses IP pour convertir en CIDR également. Donc, des calculateurs très utiles. Mais si vous n'êtes pas autorisé à les utiliser pour un examen ou quelque chose de ce genre, alors utiliser la feuille de triche que je vous ai montrée est super utile. Maintenant, ce que je veux faire, c'est essayer trois sous-réseaux de plus. Je vais les écrire. Je vais dire 192.168.0.0/22, 192.168.1.0/26 et 192.168.1.0/27. Je veux que vous les résolviez pour moi. Dites-moi le masque de sous-réseau, l'hôte, le réseau et la diffusion. Et cela étant dit, c'est encore un sujet très compliqué. Je ne l'ai pas compris la première fois, ni la deuxième fois que je l'ai compris. Si vous êtes confus en ce moment, c'est parfaitement normal. Vous pouvez revenir en arrière et regarder cette vidéo à nouveau, essayer de comprendre plus de sujets, essayer de la comprendre. Peut-être que je ne suis pas le bon instructeur pour cela non plus. Je recommande de consulter d'autres ressources pour combler complètement votre lacune de connaissances, s'il en existe une. Une autre ressource que je vais lier ci-dessous est ce qu'on appelle le "seven second subnetting". C'est très utile. Beaucoup d'étudiants me l'ont recommandé. Je vais le promouvoir également. Alors, allez-y et essayez de résoudre cela, comprenez que ce que vous recherchez ici, c'est simplement de comprendre ce qu'est un sous-réseau. D'accord, lorsque vous voyez quelque chose comme ceci, si un client vous envoie 192.168.1.0/24, vous direz : "Hé, d'accord, je sais qu'il y a probablement 254 hôtes dans ce réseau et je sais avec quoi je travaille." Si vous voyez ce 255.255.255.0, encore une fois, vous savez que vous travaillez avec un réseau slash 24. Des choses très standard. C'est ce que nous recherchons. Je ne m'attends pas à ce que vous mémorisiez jamais cela. Je ne l'ai pas mémorisé. Comme, je ne viens pas ici et je ne dis pas, vous savez, un slash 18 est un 255.255.192.0 réseau et il a 16384 hôtes. Je ne fais pas ça. D'accord, j'ai une feuille de triche. J'utiliserai un site Web si j'en ai besoin. Pour la plupart, ce que vous devez comprendre, c'est 254 hôtes pour un slash 24. Si ce nombre est monté à un slash 28, vous savez que vous avez affaire à moins. Si ce nombre est plus bas, comme un slash 16, vous savez que vous avez affaire à un réseau plus grand. C'est vraiment tout ce qu'il y a à dire, à moins que vous ne travailliez dans le domaine des réseaux, et alors cela devient plus important. Mais en tant que testeur de pénétration, comprendre comment lire cela, comprendre ce qu'est un sous-réseau et simplement l'identifier avec des mesures très basiques, c'est extrêmement utile. Alors, je vous retrouve dans la prochaine vidéo lorsque nous parlerons de la résolution de ces défis et, espérons-le, nous les aurons tous résolus. Alors, je vous retrouve dans la prochaine.

Alors, résolvons ce défi ensemble, d'accord ? Nous avons un 192.168.0.0/22. Pourquoi ai-je écrit cela de cette façon ? Eh bien, similaire au slash 23. Donc, si nous arrivons à un slash 22, nous constatons qu'il y a 1024 hôtes, ce qui signifie que nous avons une possibilité de 1022, n'est-ce pas ? Et tout ce que nous avons à faire, c'est de remplir le blanc sur le X. Donc, 255.255.252.0. Nous arrivons, nous connaissons notre première IP ici, notre ID, c'est 192.168.0.0. Première adresse possible. Maintenant, si nous y pensons, nous pouvons le faire mentalement. Nous pouvons penser : "D'accord, il y a probablement environ 250 hôtes dans un réseau, et nous avons environ mille hôtes ici." Eh bien, ce sera environ quatre, n'est-ce pas ? Quatre plages, car nous avons mille divisés par 250. Alors, je vais y aller et dire 0, 1, 2, 3. C'est quatre au total. Nous dirons 192.168.3.255. Et j'espère que ce calcul a du sens. Encore une fois, 0.0 à 1.254, 1.1 à 1.254, 2.1 à 2.254, 3.1 à 3.254. Cela équivaut à environ 1022 hôtes. D'accord, en fait, je vous ai menti. Les deux seuls que nous retirons sont 0 et 255. Vous avez en fait .0 à 255, 1.0 à 255, tout au long. Nous ne retirons que ces deux. Donc, si vous faites ce calcul, cela s'élèvera à 1022. D'accord. Donc, un slash 26, nous avons un 255.255.255.192. Remplissez les blancs, remplissez les X. 64 hôtes, nous en avons 62 en réalité, et nous allons dire 192.168.1.0 et 192.168.1.63. Encore une fois, si nous voulions créer un deuxième réseau, nous pourrions commencer ici avec un 64-26, et nous commencerions avec 64 comme ID réseau, puis 127 comme diffusion. Et enfin, 255.255.255.224 pour un slash 27. Nous avons 30 hôtes potentiels, car nous avons 32 moins 2. 192.168.1.0, puis nous allons faire 192.168.1.31. Même chose ici. Si nous voulions créer un deuxième réseau, nous pourrions. Nous pourrions dire 192.168.1.32-27, et alors cela commencerait à 32 et celui-ci se terminerait à 63. Nous pouvons créer autant de réseaux que possible dans ces quatre à huit, je pense huit, huit réseaux segmentés différents avec le slash 27. Donc, c'est tout. Encore une fois, comme je l'ai dit dans la dernière vidéo, cela peut être déroutant, et tout ce que nous retirons, c'est l'identification de ce à quoi ressemble la notation CIDR, l'identification de la base. Pour moi, c'est le slash 24 étant le plus courant. Ce que vous verrez, c'est comprendre ce qu'est un masque de sous-réseau et pourquoi il est important, surtout par rapport aux hôtes et au nombre d'appareils que vous pouvez avoir sur un réseau, et pourquoi vous pourriez voir quelque chose comme un slash 28, ou un slash 23, ou plus couramment quelque chose comme un slash 16. Donc, comprenez encore que le slash 24, lorsque vous voyez un nombre plus grand là-bas, ou que vous voyez même quelque chose d'autre que 3 255 d'affilée, comprenez que le nombre d'hôtes diminue. Les derniers 255 que vous voyez à l'écran, le nombre augmente pour le nombre d'hôtes. D'accord, et comprenez simplement comment lire cela. C'est tout ce que vous devez retenir. Encore une fois, je vais fournir des ressources supplémentaires comme je l'ai fait dans la dernière vidéo. Allez les revoir. Si vous ne les comprenez pas, vous pouvez toujours venir sur le canal Discord, vous pouvez toujours poser des questions Q&R. Ce n'est pas un sujet facile à assimiler, mais c'est un sujet que je devais vous montrer dans le cadre des réseaux.

D'accord, donc pour réussir dans ce cours, nous allons utiliser ce qu'on appelle une machine virtuelle. Les machines virtuelles sont connues sous le nom de VM en abrégé, et une VM n'est qu'une machine sur une machine. Et pour vous donner un exemple, j'exécute en fait cette instance Windows 10 que vous voyez ici sur mon instance Windows 10. Donc, ici, vous pouvez voir si je fais défiler vers le haut que j'ai une machine Windows 10. J'ai aussi une machine Linux ici. Si je la démaximise, vous pouvez voir que j'exécute en fait ici une machine Windows en arrière-plan. C'est ma femme et moi, et vous venez ici, nous la faisons simplement revenir en arrière et nous sommes de retour dans notre machine. Donc, une machine virtuelle est juste une machine à l'intérieur d'une machine. Donc, ce que nous allons faire, c'est que nous allons l'utiliser pour construire des laboratoires afin de ne pas avoir à avoir beaucoup de matériel. Nous pouvons simplement l'utiliser pour notre cours et exécuter ce dont nous avons besoin sur notre propre machine. Maintenant, cela peut devenir gourmand en ressources. Donc, si vous n'utilisez que quelque chose comme huit gigaoctets de RAM, vous pourriez avoir quelques problèmes avec cela, mais vous pouvez toujours suivre. Lorsque nous arriverons à la partie active directory, vous pourriez rencontrer des problèmes si vous n'avez pas au moins 16 gigaoctets de RAM à utiliser, mais nous nous en soucierons lorsque nous y arriverons. Il y a encore plein de façons de suivre tout au long de ce cours. Une autre chose à noter, c'est que j'utilise des VM tous les jours. Cette machine que vous voyez ici est en fait ma machine de test de pénétration quotidienne. Donc, j'exécute une instance Kali Linux sur ma machine Windows et je l'utilise pour faire des tests de pénétration. Je vais donc vous montrer cela et comment nous allons construire nos laboratoires avec cela. Et beaucoup d'entre nous dans l'industrie fonctionnent via des VM par opposition à l'exécution directement sur du matériel ou sur une machine. Donc, afin d'utiliser des machines virtuelles, nous avons d'abord besoin d'un logiciel de machine virtuelle pour les exécuter. Il y a donc deux façons de le faire. Si vous êtes sur une machine Windows ou une machine Linux, vous pouvez utiliser VMware Workstation Player. Maintenant, si vous tapez VMware Workstation Player dans Google, le premier qui dit "télécharger VMware Workstation Player", vous cliquez simplement dessus. Et si vous êtes dans un environnement Mac, vous utiliserez Oracle VirtualBox. Donc, si vous tapez Oracle VirtualBox, vous venez ici et vous allez dans téléchargements. Vous avez votre option là-bas aussi. Donc, dans ce cours, j'utiliserai VMware Workstation Player. Je vais l'exécuter sur Windows. Si vous utilisez Mac, c'est absolument bien. Vous suivrez exactement de la même manière. Tout ce que vous avez à faire est de suivre les mêmes instructions que je vous donne, et tout ira bien. Alors, si vous faites défiler vers le bas ici, vous pouvez voir "essayer Workstation Player pour Windows" ou "essayer Workstation Player pour Linux". Allez-y et sélectionnez simplement "télécharger maintenant". Cela devrait lancer un téléchargement, et allez-y et enregistrez-le. Si vous utilisez VirtualBox, allez-y et téléchargez pour OS X. Je vais télécharger la version Windows juste pour que nous puissions voir à quoi cela ressemble également. Alors, je vais enregistrer les deux. Alors, regardons nos téléchargements, et nous avons VMware Workstation Player ici. Je vais l'ouvrir et nous allons l'installer, et ce sera très simple, juste cliquer. Alors, suivant, acceptez l'accord, donnez peut-être notre premier enfant. Oui, nous devrions installer le pilote de clavier amélioré pendant que nous avons ça. Et puis nous n'avons pas besoin de rejoindre de programmes d'amélioration ou de vérifier les mises à jour de produits, c'est bon. Nous allons installer le bureau, le menu de démarrage. Cochez vos préférences comme vous le souhaitez. Je vais juste l'installer, et cela devrait se terminer dans une seconde. D'accord, puis vous arriverez à cet écran une fois que tout sera terminé. Cela devrait prendre une minute ou deux, et nous allons cliquer sur "terminer". Et il va vouloir un redémarrage pour prendre effet. Vous pouvez redémarrer votre système. Je vais dire non pour l'instant. Allons-y et installons VirtualBox si vous êtes un utilisateur Mac. Nous allons cliquer sur suivant ici, suivant, et oui, et installer, accepter. Et encore une fois, très simple avec l'installation. Sélectionnez installer, et toutes les options qui apparaissent. Et puis nous pouvons démarrer Oracle VM si nous le voulons. Allons-y et démarrons ça. C'est à quoi ressemble Oracle VM. Et voyons si nous pouvons démarrer VMware Player, même si nous devons redémarrer. Et c'est à quoi ressemble VMware Workstation Player. Donc, ici, vous pouvez voir que nous avons des machines virtuelles. Nous pouvons créer de nouvelles machines virtuelles, en ouvrir, etc. Nous y reviendrons dans la prochaine vidéo. Donc, encore une fois, si vous utilisez Windows ou Linux, c'est probablement à quoi ressemblera votre vue pour le reste du temps. Si vous utilisez Oracle sur un Mac, c'est à quoi ressemblera votre vue. Autre conseil de pro ici, c'est que j'utilise Workstation Pro et je pourrais l'utiliser dans certaines instances tout au long du cours. Dans d'autres instances, j'utiliserai Workstation Player. Ils ne font pas une grande différence, surtout au début. Lorsque nous arriverons à la partie active directory, il pourrait même valoir la peine pour vous tous de télécharger l'essai de VMware Pro, car l'essai dure 30 jours et vous pouvez l'utiliser pour traverser certaines sections et avoir de belles petites fenêtres pour être propre et avoir juste une édition pro. Vous pouvez faire tout ce que je vais vous montrer dans le cours sur le Player. C'est juste que vous devrez rouvrir VMware Workstation Player plusieurs fois pour exécuter plusieurs machines, mais ce n'est pas grave. Cela ne ressemblera pas à cette belle mise en page propre où vous pouvez transférer entre les machines comme je peux le faire ici. Donc, cela étant dit, passons à la prochaine vidéo. Nous allons installer Kali Linux sur notre VMware Workstation Player.

Maintenant que nous avons installé VMware ou VirtualBox, nous devons installer Linux. Nous allons utiliser une version de Linux appelée Kali Linux tout au long de ce cours. Cette version de Linux est une distribution basée sur Debian qui est axée sur le piratage éthique et les tests de pénétration. C'est donc une version spéciale de Linux qui nous permet d'avoir tous les outils au même endroit qui nous permettront de pirater sans avoir à télécharger ces outils et à les installer sur notre propre distribution Linux personnalisée. C'est donc tout joliment intégré dans un seul paquet. Donc, si vous allez sur Google et que vous tapez "Kali Linux download", vous devriez voir ce lien. Je mettrai également le lien dans la description ci-dessous, mais vous devriez simplement pouvoir aller sur "get Kali" ici, et vous serez présenté avec quelques options. Nous allons utiliser une machine virtuelle dans ce cours, donc nous allons simplement cliquer sur cette option "machine virtuelle", et cela nous mènera un peu plus bas. Ce que vous allez faire, c'est télécharger la version respective dont vous avez besoin. Donc, si vous avez besoin de VMware, vous téléchargez VMware. Vous utilisez VirtualBox, allez-y et téléchargez celui de VirtualBox. Maintenant, ils ont un téléchargement direct qui est un 7-Zip, et ils ont aussi un torrent si vous savez comment faire du torrent. Ce que vous allez faire, c'est télécharger le fichier dont vous avez besoin. Et pendant que vous le faites, si vous choisissez de télécharger directement, vous aurez également besoin d'un outil appelé 7-Zip ou d'un moyen de décompresser ce fichier. Alors, commencez votre téléchargement. Pendant qu'il télécharge, naviguons également vers 7-Zip. Donc, si vous allez sur Google et que vous cherchez 7-Zip, vous verrez cette page apparaître. Vous allez simplement dans "téléchargements". Ici, vous allez télécharger le fichier qui correspond à votre système respectif. Ici, j'utilise Windows sur 64 bits, je téléchargerais cet exécutable ici. Maintenant, si vous utilisez Linux, voici où vous téléchargez Linux. Si vous utilisez Mac OS, voici où vous téléchargez pour Mac OS. Très simple. Je l'ai déjà installé, mais ce que vous devez faire, c'est simplement télécharger ceci et littéralement cliquer sur suivant. Assurez-vous de l'installer. Allez-y et mettez la vidéo en pause une fois que c'est installé, 7-Zip, et une fois que vous avez l'image Kali réelle téléchargée, allez-y et décompressez la vidéo. Je serai là à vous attendre.

D'accord, donc votre prochaine étape devrait ressembler à ceci. Vous avez votre fichier 7-Zip ouvert. Vous devriez voir un dossier à l'intérieur. Et la chose la plus simple est de simplement le glisser-déposer. Vous pouvez également cliquer avec le bouton droit et extraire si vous savez où vous voulez l'extraire. J'ai créé un dossier appelé "Kali". Je vais simplement prendre ceci et le faire glisser, et cela prendra une minute ici, juste quelques secondes honnêtement, pour décompresser. La taille du fichier, du moins pour la version VMware, est d'environ 11 gigaoctets, ou exactement 11 gigaoctets décompressés. Alors, assurez-vous d'avoir de l'espace sur votre disque dur pour le faire. Maintenant, une fois que vous l'avez décompressé, vous pouvez simplement double-cliquer ici. Vous verrez un tas de fichiers. Si vous avez installé VMware, vous pouvez en fait simplement double-cliquer sur ce fichier .vmx, et cela devrait ouvrir les choses pour vous. Je vais juste vous montrer l'autre façon de faire cela aussi. Donc, avec VMware Workstation Player ouvert, ce que vous allez vouloir faire, c'est aller dans "ouvrir une machine virtuelle". Et dans le dossier que vous avez, vous devriez voir ce fichier .vmx également. Encore une fois, vous pouvez double-cliquer dessus ou simplement l'ouvrir via ceci. Ce qui va se passer, c'est qu'il va ouvrir ce fichier ici, et vous allez vouloir modifier les paramètres de cette machine virtuelle. Une fois que vous l'avez chargée, cliquez sur "modifier les paramètres de la machine virtuelle". Et ici, nous allons d'abord vouloir changer la quantité de RAM que nous avons. Maintenant, cela dépend de votre système. Si vous avez comme huit gigaoctets de RAM ou peut-être même seize gigaoctets de RAM, vous pourriez vouloir essayer de le laisser à deux au début. Je vais augmenter le mien à quatre gigaoctets, ce qui fait 4096, et j'ai 128 gigaoctets de RAM, donc j'ai plus qu'assez d'espace à allouer pour cela. Mais si vous, encore une fois, si vous êtes sur comme huit gigaoctets de RAM, ce n'est probablement pas une bonne idée de pousser cela au-delà de deux, honnêtement. J'essaierais à un, peut-être deux, voir comment ça marche. L'autre chose dont vous devez vous assurer, c'est que vous êtes sur un réseau NAT. Donc, si vous cliquez sur "adaptateur réseau", assurez-vous qu'il est indiqué "NAT" et que c'est sélectionné. Une fois que c'est sélectionné, allez-y et cliquez sur "OK", puis vous allez simplement cliquer sur "jouer la machine virtuelle". Quand il vous demande quoi faire, dites simplement "j'ai copié ça". Maintenant, à partir d'ici, cela prendra une minute pour que cela se charge. Vous pouvez simplement laisser cela se dérouler. Il démarrera tout seul. Une fois que vous êtes présenté à l'écran de connexion, allez-y et décompressez la vidéo. Mais jusque-là, mettez en pause et je vous retrouverai à l'écran de connexion.

D'accord, je suis à l'écran de connexion. Je vais l'agrandir un peu pour que nous puissions voir. Et à partir d'ici, ce que je vais faire, c'est que je vais simplement taper le nom d'utilisateur de Kali, K-A-L-I, et le mot de passe de Kali, K-A-L-I. Appuyez sur Entrée. Et si vous voyez cet écran, félicitations, vous avez installé avec succès Kali Linux et vous l'avez maintenant opérationnel. Dans les vidéos ultérieures, nous couvrirons ce que nous allons faire et comment utiliser ceci et comment utiliser Linux et tout cela. Mais pour l'instant, félicitez-vous. Vous avez installé Linux et nous allons faire une pause ici et passer à la prochaine vidéo.

D'accord, cette vidéo concerne certaines mises à jour que nous devons apporter à VirtualBox pour le confort. Donc, si vous n'utilisez pas VirtualBox, vous pouvez ignorer cette vidéo. Si vous l'utilisez, accrochez-vous. Nous devons juste faire quelques mises à jour rapides, et ensuite nous serons bons pour le reste du cours. Alors, allez sur Google et recherchez "VirtualBox Extension Pack". Ce qui apparaîtra, c'est juste la page de téléchargement de VirtualBox. Nous allons donc vouloir aller ici, et sur cette page, si vous regardez vers le milieu, vous verrez qu'il y a un "VirtualBox Extension Pack" ici. Nous allons simplement cliquer sur "toutes les plateformes prises en charge", et cela téléchargera automatiquement le fichier dont nous avons besoin. Alors, une fois que c'est téléchargé, mettez en pause si vous en avez besoin. Allez-y et ouvrez VirtualBox, et vous pouvez venir ici, et en haut, nous allons cliquer sur "préférences". Et à partir d'ici, nous nous intéressons aux extensions. Voyez "extensions" juste ici. Allez-y et cliquez dessus. Il y a un petit signe plus. Nous allons cliquer dessus, puis vous devriez avoir vos téléchargements juste ici. Alors, nous allons prendre les téléchargements et simplement les installer. Cliquez sur installer, lisez ceci, donnez votre premier-né, acceptez toutes les conditions, et vous devriez être bon. Installation très rapide. D'accord, la deuxième chose que nous devons faire, c'est venir à l'onglet "réseau" ici au-dessus. Nous allons cliquer sur le bouton "réseau" ou ce bouton "ajouter", et nous allons ajouter ce qu'on appelle un "réseau NAT". D'accord, et nous allons venir ici et nous allons double-cliquer. Et vous pouvez conserver ces valeurs par défaut. Je vais en fait les changer en 192.168.57.0, car c'est ce qui sera utilisé pour le reste du cours, et c'est ce que la notation CIDR de ma machine Kali et de mon Kioptrix, que vous verrez plus tard, etc., tout est tombé dans ce 57.0. Nous allons donc le conserver sur ce réseau NAT. Assurez-vous de prendre en charge le DHCP. Allez-y et cliquez simplement sur "OK", cliquez sur "OK". Et puis pour une machine, et assurez-vous que toute machine que vous utilisez, encore une fois, toute machine que vous utilisez dans ce cours, assurez-vous de la régler sur le réseau NAT si vous utilisez VirtualBox. Donc, vous pouvez venir ici, cliquer sur une machine comme cette machine de messagerie que j'ai ici. Vous pouvez simplement cliquer sur "paramètres", aller dans "réseau", puis vous pouvez aller dans "réseau NAT". D'accord, et ce nom ici, vous voyez "réseau NAT", c'est tout ce que nous allons utiliser. Cela le configurera automatiquement. Donc, lorsque vous aurez une machine Kali en cours d'exécution plus tard, et que vous aurez Kioptrix ou une autre boîte en cours d'exécution, ou même lorsque nous construirons un laboratoire d'active directory, vous devez vous assurer que vous exécutez ce réseau NAT afin que toutes les machines soient sur le même sous-réseau. Si vous ne le faites pas, vous pourriez vous retrouver dans une situation où la même IP apparaît pour la même machine, et alors elles entrent en conflit les unes avec les autres, ou vous vous retrouvez sur différents réseaux et des choses étranges se produisent. Alors, assurez-vous encore une fois qu'il est impératif que vous configuriez ce réseau NAT pour chaque machine que vous configurez. Cela étant dit, nous allons passer à la prochaine vidéo.

Dans la première chose que j'aimerais faire avant de commencer avec des commandes ou quoi que ce soit, c'est simplement de regarder autour de Kali Linux et de démontrer pourquoi un testeur de pénétration ou un hacker éthique pourrait utiliser cette distribution de Linux. Tout au long du cours, comme indiqué dans la dernière vidéo, vous pourriez voir une version différente de celle-ci apparaître, car j'ai enregistré des vidéos sur certaines des anciennes versions. Tout fonctionnera toujours comme il se doit, vous pourriez simplement voir un aspect différent de l'interface Kali, mais toutes les commandes que je vais vous montrer, tout ce que nous ferons sera le même. Alors, jetons un coup d'œil et explorons simplement Kali Linux un peu. Alors, si nous venons ici dans le coin et que nous cliquons sur le petit logo Kali, vous pouvez voir que nous avons de belles choses réparties pour nous. Nous avons ces favoris ici, où nous avons notre terminal, dans lequel nous allons essentiellement vivre. Nous avons un éditeur de texte. Nous avons un navigateur Web, qui est essentiellement Firefox. Nous avons d'autres outils ici, des documents, etc. L'autre chose que nous pouvons faire défiler, c'est que nous pouvons voir que nous avons différentes applications ici. Si nous regardons les différentes sections, celles-ci vont à peu près dans l'ordre, ce que nous n'avons pas encore couvert, mais dans l'ordre dans lequel un piratage pourrait se dérouler. Donc, la collecte d'informations est généralement la première étape. Vous pouvez venir ici, regarder ceci, et voici un tas d'outils liés à la collecte d'informations. Vous pouvez même cliquer dessus et aller plus loin si vous le souhaitez, liés à des choses spécifiques, donc DNS, ou SMB, ou renseignements open source. Tout ce qui est ici, ce sont juste des outils intégrés. Alors, disons que nous venons ici, nous voulons faire une attaque sans fil. Eh bien, nous allons dans les attaques sans fil. Il y a un tas d'outils déjà intégrés. Donc, Kali Linux est essentiellement une distribution Linux de piratage éthique et elle est basée sur Debian. Donc, si vous avez déjà utilisé quelque chose comme Ubuntu ou quoi que ce soit de cette lignée de distribution Debian, tout cela vous semblera très familier, avec juste un tas d'outils intégrés par-dessus. Donc, assez simple. Ils ont quelques bons outils ici. Vous pouvez venir et les utiliser. Beaucoup de cela est déjà intégré, et nous allons y jeter un coup d'œil au fur et à mesure.

D'accord, la prochaine chose que nous allons faire, et tout au long du reste de ce cours, c'est commencer à regarder le terminal. Donc, si vous venez ici, vous verrez que nous avons un terminal. La plupart de tout ce que nous faisons se fera dans ce terminal ici. C'est presque comme accéder à la ligne de commande. Donc, si vous utilisez une ligne de commande, par exemple, sous Windows, si vous avez déjà utilisé une ligne de commande, sinon, ce n'est pas grave, mais nous faisons beaucoup de cela à partir de cette interface, par opposition à peut-être utiliser une interface graphique où si nous cliquions sur un dossier, cela pourrait vous sembler plus familier si vous êtes un utilisateur Windows ou Mac. Vous venez ici, vous avez cette zone. Oui, oui, nous pouvons faire ça. Et parfois, nous utiliserons cela, mais la plupart du temps, nous vivrons ici. D'accord, alors que nous avançons, nous allons commencer à parler de cette ligne de commande, comment nous pouvons l'utiliser et l'utiliser à notre avantage, puis nous ferons quelques astuces et espérons apprendre des choses assez intéressantes au fur et à mesure. Donc, dans la prochaine vidéo, je vais couvrir la fonctionnalité sudo, que je pense être importante. C'est quelque chose qui a été introduit. Auparavant, nous avions quelque chose appelé une permission root, et nous en parlerons. Cela a changé depuis la version 2020.1 et au-delà. Nous introduisons donc cela dans ce cours et nous parlerons des options que vous avez. Alors, allons-y et passons à la prochaine vidéo où nous parlerons de la fonctionnalité sudo.

D'accord, avant de regarder des commandes ou d'apprendre la ligne de commande, nous devons parler de sudo. Sudo est très important. Et ce qui s'est passé précédemment, c'est que dans les versions antérieures de Kali Linux, nous nous exécutions en tant qu'utilisateur appelé root. Root est l'utilisateur ultime. Vous pouvez le considérer comme l'administrateur de la machine. Maintenant, nous nous exécutons en tant qu'utilisateur appelé Cali. Nous n'avons donc pas directement les privilèges root. C'est une fonctionnalité de sécurité améliorée, car nous ne devrions exécuter certaines commandes que lorsque nous en avons besoin en tant qu'utilisateur root. Donc, ce que nous allons voir, c'est comment nous pouvons exécuter des commandes avec des privilèges élevés, et nous allons le faire avec sudo, qui signifie "super utilisateur do". Ils l'ont juste raccourci. Donc, nous avons juste sudo maintenant. D'accord, maintenant avec sudo, ce que nous faisons, c'est que nous disons : "Hé, je veux exécuter une commande avec des privilèges élevés. Je veux exécuter ceci en tant qu'utilisateur supérieur." Dans ce cas, nous pouvons dire : "Je veux exécuter la commande en tant que root." Pourquoi est-ce important ? Eh bien, regardons un exemple. Disons que je voulais regarder un fichier très sensible. Un fichier sensible dans notre système est le fichier /etc/shadow. Vous pouvez voir `cat /etc/shadow` comme ceci, et vous n'avez pas à suivre tout de suite. Vous n'avez pas à comprendre vraiment ce qui se passe si vous n'avez jamais vu Linux. Tout ce que je dis, c'est : "Hé, je veux imprimer ce fichier, je veux le regarder." D'accord, et pour ici, je ne peux pas le voir. Il dit "permission refusée". Vous n'avez pas l'accès pour voir ce fichier. C'est une bonne chose. Mais si j'étais l'utilisateur root ou quelqu'un qui avait des privilèges élevés, je pourrais le voir. Alors, je pourrais dire `sudo cat /etc/shadow` comme ceci. D'accord, et il va dire : "Quel est votre mot de passe pour Cali ?" Je vais dire Cali, K-A-L-I, appuyer sur Entrée, et maintenant je peux voir que j'ai accès à ce fichier, et ce fichier est très sensible. Nous en parlerons plus tard dans le cours, mais c'est un fichier sensible. D'accord, donc lorsque nous le regardons, j'ai exécuté cette commande spécifiquement en tant qu'utilisateur root. En tant qu'utilisateur root, je suis capable de voir ce fichier. Maintenant, pourquoi ou qu'est-ce qui se passe ici ? Eh bien, nous exécutons cette commande spécifique, n'est-ce pas ? Et nous restons toujours Cali. Nous faisons cela dans un scénario unique. Il y aura donc des moments où quelque chose que vous exécutez dans ce cours pourrait nécessiter sudo, ou vous pouvez exécuter la commande sans sudo, mais vous remarquez que quelque chose ne fonctionne pas. Donc, la meilleure pratique pour cela est de dire : "Hé, exécutons la plupart de tout ce que je vous montre en termes de commandes dans ce cours." Ce n'est pas la meilleure pratique en général. Habituellement, vous devriez exécuter les choses en tant qu'utilisateur normal. Si vous obtenez des permissions bloquées, alors exécutez-le avec sudo si nécessaire. Maintenant, l'autre chose à souligner, et nous en parlerons à nouveau plus tard dans le cours, mais pourquoi pouvons-nous faire cela ? C'est parce que cet utilisateur fait partie de ce qu'on appelle un fichier sudoers. Cela signifie que nous pouvons avoir cette permission. Pas tous les utilisateurs peuvent venir ici. Disons que nous avons créé un nouvel utilisateur et que nous l'avons appelé John. Nous ne pouvons pas simplement prendre John et simplement exécuter ces commandes en tant que root. Non, John doit avoir la permission de le faire. Donc, vous pouvez penser à Cali comme étant un administrateur, mais seulement lorsque nous utilisons cet accès ou ce privilège. L'autre chose que je veux vous montrer, cependant, c'est que nous pouvons passer à root si nous le voulons. Nous pouvons venir ici et dire `sudo su -` comme ça. Et puis cela nous mettra en root. Maintenant, vous pouvez voir, d'accord, nous exécutons root à Cali. Et ce n'est que pour cette instance. Vous pouvez, si vous le souhaitez, je ne vais pas démontrer comment faire cela, mais vous pouvez, si vous le souhaitez, changer le mot de passe root, vous déconnecter et vous reconnecter en tant que root et suivre ce cours en tant que root. Encore une fois, ce n'est pas la meilleure pratique de sécurité, mais cette fonctionnalité est disponible pour vous si vous êtes un utilisateur Linux qui est à l'aise avec Linux, à l'aise avec l'exécution en tant que root, et que vous voulez le chemin facile. Sinon, je recommande vivement de rester en tant que Cali, d'exécuter avec des privilèges sudo au besoin, puis d'avancer. Mais c'est un moyen rapide de passer à root si vous en avez besoin. Parfois, même l'exécution de sudo cause des problèmes. Donc, passer à root pour exécuter une commande est acceptable. Ce que nous pouvons faire ici aussi, c'est la démonstration. Nous pouvons aller dans "fichier", "nouvel onglet", et regarder une nouvelle instance, et vous verrez que cette instance de root n'est valable que pour cet onglet. Une fois que nous démarrons un nouvel onglet, nous serons ramenés directement à Cali. Cali, vous pouvez le voir à partir de la ligne du haut dans l'onglet également. Alors, gardez simplement cela à l'esprit lorsque vous exécutez des commandes dans ce cours. Si vous voyez quelque chose, essayez de l'exécuter avec sudo. Si cela ne fonctionne pas ou si cela dit "accès refusé", alors vous savez : "Hé, je dois exécuter sudo." Très, très, très important. D'accord, j'essaie de graver cela dans vos cerveaux en ce moment. Alors, à partir d'ici, nous allons passer à l'étape suivante. Nous allons commencer à regarder comment naviguer dans le système de fichiers, en regardant tout d'une perspective plus large et en plongeant dans le terminal. Alors, je vous retrouve dans la prochaine vidéo.

Maintenant, nous allons jeter un coup d'œil au terminal Linux. Et si vous êtes un utilisateur d'un ordinateur normal comme Windows ou même Mac OS, vous êtes probablement habitué à utiliser ce qu'on appelle une interface graphique ou une interface utilisateur graphique. Et nous pouvons le faire avec notre version de Linux. Nous pouvons venir ici, et si nous voulons aller dans des dossiers, nous pouvons absolument ouvrir ceci et aller dans des dossiers. Nous avons la possibilité d'aller sur Firefox. Nous avons tous nos outils ici que nous voulons utiliser ou regarder, et nous avons une interface utilisateur graphique. Cependant, une grande partie de notre temps sera consacrée à la ligne de commande et à l'utilisation d'un terminal. Il est donc très important que nous apprenions à utiliser un terminal sous Linux. Alors, en regardant notre terminal ici, nous pouvons voir quelques choses avant même de commencer. La première chose est que nous avons un "kali@kali". Qu'est-ce que cela signifie ? Eh bien, la première instance ici est "kali", c'est votre utilisateur. Donc, rappelez-vous, lorsque nous nous sommes connectés pour la première fois, nous nous sommes connectés en tant que Cali, et c'est notre utilisateur. Donc, si nous passons à root, nous verrons root ici. La deuxième partie est notre nom d'hôte. Donc, le nom de notre ordinateur s'appelle également Cali. Si vous changez votre nom d'hôte, vous pourriez dire ce que vous vouliez dire ici. La dernière petite partie de ceci est ce tilde. C'est en fait le répertoire dans lequel vous vous trouvez actuellement. C'est donc un moyen rapide de dire quel utilisateur je suis, sur quelle station de travail je suis et dans quel répertoire je suis. Maintenant, nous pouvons regarder dans quel répertoire nous sommes avec la commande `pwd`. Et cela signifie "print working directory" (imprimer le répertoire de travail). Et dans ce cas, vous pouvez voir que nous sommes dans le dossier `/home/kali`. Et c'est l'équivalent d'être dans le tilde. Donc, si vous voyez le tilde, cela signifie simplement que vous êtes dans le dossier personnel de votre utilisateur. Donc, si nous étions un utilisateur root, nous serions en fait dans le dossier `/root` par opposition au dossier `/home/kali`. Donc, le tilde signifie quelque chose de différent pour chaque utilisateur sur lequel vous êtes. La prochaine chose que nous allons regarder est la fonctionnalité "changer de répertoire". Donc, imaginez que nous sommes dans notre dossier ici. Donc, si nous allons, je ne sais pas, sur notre bureau, et que nous sommes assis dans notre dossier Cali, c'est vraiment ce que nous regardons. Donc, nous regardons Cali juste ici, et nous voulons sortir de ce dossier Cali et entrer dans un autre dossier, disons, je ne sais pas, téléchargements, par exemple. Si nous allons dans téléchargements, c'est très facile à cliquer, mais comment naviguer dans le terminal ? Je vais vous montrer comment faire. Donc, la première chose que nous allons faire est d'utiliser la commande `cd`, qui signifie "changer de répertoire". Maintenant, si nous faisons `cd ..`, cela signifie que je veux revenir en arrière. Donc, si je fais ça, maintenant vous pouvez voir que nous sommes dans le dossier `/home`. Mais nous pouvons aussi faire un `pwd`, imprimer le répertoire de travail, et vous pouvez voir que nous sommes dans le dossier home. Maintenant, pouvons-nous aller plus loin en arrière ? Eh bien, essayons `cd ..` encore une fois, et maintenant vous pouvez voir que nous sommes à `/`. Si nous faisons un `pwd`, nous sommes à `/`. Et encore une fois, je vais faire `cd ..` et voir si quelque chose se passe. Rien ne se passe ici. Nous ne pouvons pas aller plus loin. Nous sommes dans ce qu'on appelle notre.

répertoire de base, donc si vous voyez une barre oblique, considérez-la comme le dossier de base, vous ne pouvez pas aller plus loin en arrière à partir de là. Maintenant, je vais effacer mon écran. Si vous voulez effacer votre écran, appuyez simplement sur Ctrl + L comme ceci, et cela effacera l'écran. Et à partir d'ici, nous allons examiner ce qui se trouve dans notre dossier de base. Pour ce faire, nous pouvons utiliser un outil appelé "list", qui est LS. Donc, à partir d'ici, nous pouvons voir différentes couleurs et différentes choses, et nous pouvons dire, en nous basant sur les couleurs, que même si ces schémas de couleurs ne sont pas les meilleurs dans le dernier Kali Linux, nous pouvons toujours voir, par exemple, que cette version plus foncée de bleu est en fait un dossier, tandis que certaines de ces autres choses sont en fait des fichiers. Nous n'avons pas à nous en soucier trop pour le moment, mais nous venons de sortir du dossier d'accueil, donc nous pouvons voir ici que nous avons un tas de fichiers et de dossiers. Et disons que nous voulons retourner au dossier d'accueil. Eh bien, nous pouvons voir "home" et je vais commencer à taper H et je vais simplement appuyer sur Tab. Et parce qu'il n'y a rien d'autre ici avec un H, nous n'avons pas à nous en soucier trop, cela se complétera automatiquement vers le dossier d'accueil. Maintenant, par exemple, s'il y a un tas de L, je vais revenir en arrière très rapidement avant d'appuyer sur Entrée. Si je voulais essayer quelque chose qui a plusieurs éléments ici, si j'essayais L et que j'appuyais sur Tab, vous verrez qu'il y aura beaucoup d'options pour moi à parcourir. Et en fonction de ce que vous avez, c'est quand vous pouvez compléter automatiquement. Donc, si je commence à taper LO, il devrait savoir qu'il n'y a qu'un seul LO et je peux appuyer sur Tab et compléter le reste. Vous devez donc simplement pouvoir arriver à un point où vous pouvez appuyer sur Tab, ou si vous connaissez la première lettre du fichier que vous recherchez, vous pouvez appuyer sur Tab sur celui-ci et vous pouvez voir, d'accord, c'est là que je dois être, ou c'est ce que je peux regarder avec tout ce qui commence par cette lettre. Je vais supprimer ceci et nous allons CD de retour dans home. Nous allons faire LS pour lister le contenu de home, qui est juste notre dossier Cali. Donc, je vais CD dans Cali. Et si je fais LS à partir d'ici, vous pouvez voir que nous avons notre bureau, nos documents, nos téléchargements, similaire à ce que nous avons vu dans l'interface utilisateur graphique lorsque nous étions dans le dossier. Maintenant, nous pouvons le voir depuis notre terminal. Maintenant, avant de plonger plus profondément dans ces dossiers, quelque chose que je veux regarder, c'est que faire si je voulais accéder à ce dossier Etsy ici. Il y a donc ce dossier Etsy qui était dans notre base. Maintenant, si j'essaie de CD dans Etsy à partir d'ici, rien ne va fonctionner. J'appuie sur Tab, rien ne fonctionne. Si j'essaie CD Etsy, il va dire que je ne le trouve pas. Alors, qu'est-ce que cela signifie ? Eh bien, lorsque nous changeons de répertoire, nous ne pouvons changer de répertoire que depuis les dossiers qui nous sont disponibles. Je ne peux donc changer de répertoire que dans ces dossiers en utilisant cette sorte de nomenclature. Cependant, si je peux fournir un répertoire complet ou un chemin complet, alors je peux CD depuis n'importe quel dossier où je me trouve. Donc, si je fais CD / (barre oblique) car rappelez-vous que nous avons la base ici, eh bien, je peux dire / (barre oblique) ET, commencer à taper cela et devinez quoi, j'obtiens Etsy ici. Et si je voulais plonger plus profondément dans les dossiers qu'il y a, je pourrais appuyer sur Tab et je pourrais voir tous les dossiers disponibles dans le dossier Etsy pour accomplir ma tâche. Maintenant, si j'appuie sur Entrée, je serai amené dans le dossier Etsy et de même, je peux appuyer sur LS et voir tous les fichiers et dossiers qu'il y a ici. Maintenant, allons simplement CD ici et je vais utiliser le tilde, et cela nous ramènera à notre dossier d'accueil. Je vais faire Ctrl + L pour effacer l'écran, puis je vais faire LS à nouveau. Vous verrez que nous sommes de retour là où nous étions. Maintenant, dans ce cas, que faire si je voulais lister les fichiers du dossier Etsy ? Eh bien, c'est la même chose. Je pourrais faire LS / Etsy, et cela listera tous les fichiers comme si j'étais assis dans ce dossier. Sachez donc simplement que vous pouvez lister des dossiers et des fichiers, vous pouvez changer de répertoire en étant dans un autre répertoire. Il n'a pas à être dans le même arbre de haut en bas que je vous montrais. Il y a beaucoup plus de robustesse à ces commandes. Même chose, si nous faisons LS ici, nous pourrions jeter un œil aux dossiers et nous n'avons pas à changer de répertoire pour voir ce qu'il y a dans ces dossiers. Nous pouvons simplement faire LS desktop, par exemple, et commencer à compléter automatiquement. Il n'y a rien là-dedans. J'ai quelque chose dans le dossier downloads, juste parce que j'ai changé ma photo, j'y ai mis notre logo TCM Security. Donc, j'ai ça dans le dossier downloads, mais il est tout à fait normal de ne rien avoir sur votre bureau ou dans vos téléchargements lorsque vous installez Cali pour la première fois. Et encore une fois, nous pouvons obtenir la même chose en faisant CD dans downloads, puis en appuyant sur LS. Vous avez le même objet ici que celui que vous avez vu auparavant, sauf que nous sommes maintenant dans ce dossier. Vous devez donc déclarer le dossier ou être dans le dossier pour voir le contenu. D'accord, maintenant allons-y et faisons CD de retour au dossier de base. Vous pourriez faire CD .. ou simplement utiliser le tilde. Je vais effacer mon écran et à partir d'ici, nous voulons parler de la création d'un répertoire. Alors, créons un répertoire. Je vais créer un répertoire appelé Heath. Vous pouvez simplement utiliser votre prénom si vous le souhaitez. Et puis, lorsque vous faites LS ici, vous pouvez voir maintenant que le répertoire Heath est ici, et je peux voir la fin de ce répertoire Heath. Je peux faire LS dans ce répertoire et il n'y aura rien dedans. Donc, je vais continuer et revenir en arrière d'un cran. Et maintenant, je vais vous montrer comment supprimer un répertoire ou supprimer un dossier. Donc, vous dites rmdir et vous allez simplement dire he, et cela supprimera cela. Ces commandes fonctionnent exactement comme tout le reste. Si je voulais créer un répertoire dans le dossier de base, je pourrais totalement faire dur / eat si je voulais, et je pourrais aussi le supprimer d'ici. Donc, encore une fois, peu importe où vous êtes, tant que vous utilisez le chemin de fichier complet. D'accord, j'ai effacé mon écran et maintenant je veux exécuter LS et vous voyez dans LS que nous avons juste un tas de dossiers. Ce n'est pas entièrement vrai. Ce que nous allons faire, c'est que nous allons faire un ls-la. Et j'aime penser à cela comme "lister tout", mais en réalité, cela signifie "long tout". Et si nous appuyons sur Entrée, vous pouvez voir qu'il y a un tas de nouveaux fichiers ici, et en fait des dossiers. Donc, à partir de cela, nous pouvons voir que nous avons une sorte d'historique bash, nous avons un dossier .java. Tout ce qui commence par un point est considéré comme un fichier caché. Nous ne le verrons pas lorsque nous utiliserons la commande ls. Nous devons en fait faire une commande -la. Et c'est le bon moment pour examiner ce que sont ces sous-commandes et comment pouvons-nous identifier ce que signifient ces choses. Je vais vous montrer un site Web d'abord, et je pense que ce site Web est génial. Nous pouvons aller sur quelque chose comme explain shell.com. Donc, c'est explain shell. Vous pouvez le voir se compléter là-haut, mais explain shell.com. Et si vous veniez ici et que vous vouliez jeter un œil, laissez-moi agrandir un peu. Si vous vouliez jeter un œil à quelque chose comme ls-la, vous pourriez dire, expliquez-moi cela, et cela vous dira, d'accord, la première partie est LS, cela signifie lister le contenu du répertoire. Rappelez-vous, je l'ai appelé la commande list, c'est ce que c'est. Maintenant, que fait ce La ? Eh bien, le L, si vous le survolez, dit "utiliser le format de liste long", et le a dit "utiliser tout". D'accord, donc n'ignorez pas les entrées commençant par un point, ce que nous recherchons. Et la liste longue nous donne plus de détails, nous donne ces permissions de fichiers, dans lesquelles nous allons entrer un peu plus tard, et qui les possède, et quelle est la taille du fichier, le répertoire, etc., etc. Nous y arriverons dans quelques vidéos. Nous pouvons également utiliser ce que l'on appelle des pages man. Je vais faire Ctrl + L à nouveau. Si nous faisons man LS, man signifie manuel. Donc, man LS, nous pouvons voir ici que LS signifie lister le contenu du répertoire. Super. Le -a signifie "tout", n'ignorez pas les entrées commençant par un point. Même chose que nous avons vu auparavant. Nous pourrions faire défiler vers le bas, chercher la partie L de ceci, et nous verrons que nous avons utilisé un format de liste long. Vous pouvez appuyer sur Q pour quitter. Donc, si vous n'avez pas d'accès Internet, par exemple, vous pouvez utiliser les pages man. J'aime utiliser explain shell.com, je pense que c'est assez génial, mais man fonctionne très rapidement et depuis le terminal, vous n'avez pas à partir ou à faire quoi que ce soit. Une autre chose que vous pouvez faire est LS --help, et cela vous donnera quelque chose de similaire aux pages man, bien que pas aussi détaillé, je suppose que c'est la meilleure façon de le dire. Et vous venez ici et vous pouvez voir le même genre de commutateurs et de commandes qui étaient ici. Donc, --help fonctionne pour beaucoup de commandes. C'est l'une de celles que vous devriez connaître et essayer si vous avez des questions sur ce que vous essayez de faire. C'est une excellente ressource. Donc, si nous faisons ls la, nous pouvons CD dans l'un de ces dossiers cachés, comme nous pouvons CD dans .cache, par exemple, et nous faisons juste LS. Vous pouvez voir qu'il y a en fait des choses dans le cache ici. Donc, nous n'allons pas entrer dans cela, je veux juste vous montrer que les fichiers et dossiers cachés existent. Donc, si vous cherchez quelque chose, en particulier lié au pen test, quelque chose pourrait être caché. Si vous êtes sur une machine Linux, vous pourriez avoir besoin de faire ls-la pour voir un fichier caché. Et ils sont incroyablement faciles à voir, comme vous pouvez le constater par vous-même. Allons-y et faisons CD de retour à notre dossier d'accueil. Et à partir d'ici, je vais vous montrer quelques choses que nous allons expliquer plus tard, mais je veux juste vous familiariser avec cela. La première chose que je veux vous montrer est la commande echo. Si nous faisons echo et que nous utilisons une apostrophe simple et que nous disons "hi" comme ceci, cela va simplement s'afficher à l'écran. Nous parlerons de la commande echo un peu plus tard dans le cours. Ce que nous faisons ici, c'est que nous allons faire écho de cela dans un fichier. Donc, je vais dire "hi" et ensuite je vais mettre ce fichier. Je vais utiliser ce symbole supérieur à, et ce sera un opérateur de redirection. Et je vais dire, allez, créez simplement un fichier appelé test.txt. Et bien que vous n'ayez pas besoin de savoir cela encore, si j'exécutais Cat sur ceci, sur test.txt, vous verrez qu'il imprime "hi". D'accord, je veux juste avoir ce fichier ici que nous avons créé. Et ce que nous allons faire, c'est que nous allons simplement rapidement faire LS. Nous verrons qu'il est là. Vous pouvez voir qu'il y a des différences de couleurs pour les fichiers et les dossiers, encore une fois. Et la raison pour laquelle nous faisons cela dans cette vidéo est que je veux vous montrer la commande copy. Donc, si nous exécutons copy sur ceci, nous pourrions dire copy test.txt. Ce que je veux faire, c'est copier ceci dans le dossier downloads. Donc, je peux simplement dire copy test.txt dans downloads. Si nous faisons LS, nous verrons que test.text est ici. Nous faisons une copie. Si nous faisons LS downloads, nous pouvons voir que test.text est en fait là aussi. Donc, de manière similaire à la suppression de répertoire, nous pouvons utiliser la commande RM. Et ce que nous allons faire, c'est supprimer ce fichier. Et encore une fois, nous n'avons pas à être dans le répertoire pour le supprimer. Nous pouvons appeler le chemin du répertoire, puis test.text. Si nous appuyons sur LS sur downloads à nouveau, nous pouvons simplement appuyer sur Entrée et vous verrez qu'il n'y a plus de test.txt là-dedans. Mais si nous faisons LS ici, vous verrez que test.text existe. Donc, je vais faire Ctrl + L. L'opposé de ceci est la commande move. Maintenant, si je déplace test.txt et que je le mets dans downloads, si je fais LS maintenant, vous verrez qu'il n'y a plus de test.txt ici. Pourquoi est-ce ? Eh bien, si nous faisons LS downloads, vous verrez que nous l'avons déplacé. Donc, rappelez-vous, copy laisse une version originale là où vous avez copié. move le déplace complètement. Donc, les commandes CP et MV sont celles que vous devez connaître. Maintenant, pendant que nous sommes là-dessus, ce que nous allons faire, c'est que nous allons regarder une commande appelée locate. Donc, locate est assez génial. Si nous faisions locate et disons que je voulais savoir où se trouve ce fichier test.text, je pourrais faire locate test.text. Et nous n'obtiendrons probablement rien pour le moment. Maintenant, si nous parcourons ceci, aucun de ces fichiers n'est là où nous sommes. Il y a donc certains fichiers test.text sur cette machine, mais nous ne voyons pas celui que nous avons créé. Donc, disons que nous avons créé un fichier, nous ne nous souvenons pas où nous l'avons mis, et nous voulons juste aller le chercher et le trouver. Ce que nous pouvons faire, c'est dire update DB. Et vous verrez que nous obtenons en fait un "denied". Pourquoi obtenons-nous "permission denied" ? Eh bien, cela revient à sudo. Alors, allons-y et sudo update DB. Vous entrerez votre mot de passe sudo. Il mettra à jour la base de données. Et maintenant, si nous faisons locate test.txt, et vous pouvez juste, lorsque vous voyez un écran comme celui-ci, au fait, où il est un peu gris, si vous appuyez simplement sur la flèche droite, cela complétera automatiquement car il se souvient de votre dernière commande. Vous pouvez appuyer dessus et vous pouvez maintenant voir que la première entrée ici est home/cali/downloads/test.text. Donc, maintenant la base de données est mise à jour et elle le trouve. Une autre chose à mentionner, je viens de parler de la complétion automatique avec la flèche droite. Si vous appuyez sur la flèche vers le haut, vous pouvez parcourir vos commandes précédentes. Vous pouvez voir toutes les commandes que j'ai exécutées. Nous pouvons donc également utiliser la flèche vers le bas pour faire défiler ces commandes. Donc, disons que je voulais exécuter à nouveau cette commande locate test.txt au lieu de la taper, j'appuie simplement sur la flèche vers le haut, puis j'appuie sur Entrée. Facile. D'accord, nous allons donc supprimer downloads/test.txt, et maintenant ce fichier devrait avoir disparu. Nous pouvons faire LS une fois de plus dans downloads juste pour être sûr, et vous verrez que les fichiers PCM Security sont la seule chose qui s'y trouve. Une autre chose à souligner que je viens de remarquer en fait, c'est que ces fichiers sont sensibles à la casse et les dossiers sont sensibles à la casse. Donc, si j'essaie de CD dans downloads, cela ne fonctionnera pas car downloads n'existe pas. Donc, si je fais CD dans Downloads, je peux l'épeler, puis vous pouvez voir que j'entre en fait dans le dossier downloads. Notez donc qu'il est sensible à la casse. La complétion automatique, si je reviens en arrière, fera un très bon travail d'essai. Dans les versions plus récentes de Cali, c'est-à-dire si j'appuie sur do, par exemple, puis que j'appuie sur Tab, il réalisera que j'essaie d'atteindre downloads. Donc, la dernière chose que je vais vous montrer est la commande de mot de passe, et c'est p-a-s-s-w-d. Nous allons être de bons ingénieurs en sécurité et changer notre mot de passe. Nous allons en faire un mot de passe fort car nous sommes de bons ingénieurs en sécurité. Je vais être le mauvais ingénieur en sécurité et faire de mon mot de passe "password". Et je fais cela parce que plus tard dans le cours, nous parlerons du craquage des mots de passe Linux, et nous utiliserons mon mauvais mot de passe comme exemple. Donc, ici, nous allons taper notre mot de passe actuel. Kali est un mot de passe terrible, d'ailleurs. Et nous allons taper notre nouveau mot de passe. Vous pouvez faire de votre mot de passe ce que vous voulez. Je fais le mien "password". Et maintenant, nous avons mis à jour avec succès, et nous avons terminé toutes les commandes dont nous avons besoin pour cette vidéo. Je vous verrai dans la prochaine leçon. Maintenant, nous allons parler des utilisateurs et des privilèges. Donc, dans la dernière vidéo, nous avons appris ls-la. Donc, je suis dans mon dossier d'accueil, qui est le tilde ici, et tout ce que je vais faire, c'est juste dire ls-la. Je vais appuyer sur Entrée, et nous allons voir un tas de choses ici sur le côté gauche. Nous avons ceci, nous avons les détails de la propriété, nous avons une taille de fichier ici, et nous parlerons de tout cela. Mais lorsque nous faisons ls-la, nous obtenons beaucoup plus d'informations que le simple fait de savoir si un fichier est caché, ce qui est un peu le but pour lequel nous l'avons regardé la dernière fois. Mais maintenant, nous pouvons le prendre et le regarder sous une perspective ou un objectif différent. Nous pouvons voir que nous avons cette colonne ici, la première colonne. Maintenant, la première colonne nous dit quelque chose d'intéressant. Elle nous dit d'abord si nous regardons un fichier ou un répertoire. Donc, si nous voyons un d ici, nous voyons que c'est un répertoire. Notez que ceux-ci sont également codés par couleur, n'est-ce pas ? Donc, nous avons du bleu pour les répertoires, il semble, et puis du blanc ici pour les fichiers, et nous avons aussi des liens, dans lesquels nous n'allons pas beaucoup entrer pour le moment, mais un lien ressemble à un bleu plus clair. Donc, nous avons l'indicateur ici, d'abord, il dit, d'accord, c'est soit un d, soit peut-être un tiret, soit un L. Il y a d'autres paramètres qui pourraient être ici, mais pour l'instant, c'est tout ce dont nous avons besoin de nous soucier. Le prochain ensemble de choses que nous allons regarder, ce sont ces rwx, ou notre x vide. Qu'est-ce que tout cela signifie ? Eh bien, rwx signifie lire, écrire, exécuter. Lorsque nous en manquons un, comme un tiret ici, cela signifie simplement que nous avons une lecture et une exécution. Et il y a en fait trois groupes que nous regardons ici. Donc, nous avons le premier groupe, qui est le propriétaire de notre fichier. Donc, ce premier groupe dit lire, écrire, exécuter pour le propriétaire de ce fichier. Et si nous regardons le propriétaire du fichier, nous pouvons en fait voir que le propriétaire sera Cali. Eh bien, dans cet exemple, c'est le répertoire, mais ici nous regardons Cali. Vous pouvez voir que l'un d'eux a root listé, mais dans cet exemple, ou puisque nous utilisons l'utilisateur Cali et que nous sommes dans notre dossier d'accueil, nous regardons principalement Cali comme propriétaire du fichier. Le prochain que nous allons regarder, c'est que nous allons dire, d'accord, appartenance au groupe. Donc, quiconque fait partie de ce groupe, qu'est-ce qu'ils obtiennent en propriété ou qu'est-ce qu'ils peuvent faire avec ce répertoire ou ce fichier ? Eh bien, quiconque dans ce groupe peut lire ou exécuter, mais ils ne peuvent pas écrire dans ce répertoire ou fichier. Et enfin, nous avons le troisième paramètre, qui est tous les autres utilisateurs. Que peuvent faire tous les autres utilisateurs ? Tous les utilisateurs peuvent lire et exécuter, mais ils ne peuvent pas écrire ici. Et nous n'avons rien ici, à part ce lien, qui est lire, écrire, exécuter. Nous n'avons pas de lecture, écriture, exécution mondiale dans ce dossier, et ce n'est pas grave. Cela entre en jeu lorsque nous faisons des tests de pénétration. Cependant, lorsque nous voulons trouver une sorte de fichier qui a un accès en lecture, écriture, ou lecture, écriture, exécution, si nous avons un accès complet, c'est idéal, surtout s'il y a des fichiers sensibles que nous ne sommes pas censés voir, ou peut-être mal configurés, ou si nous avons besoin d'un endroit pour écrire sur le disque, par exemple. Si j'efface l'écran ici et que nous faisons un ls-la du dossier temp, nous pourrions voir que temp a en fait des privilèges de lecture, écriture, exécution partout. C'est un excellent endroit lorsque nous faisons des pen tests et que nous travaillons sur une machine Linux, si nous avons besoin de déposer un fichier, nous savons que ce dossier temp peut être écrit. Nous pouvons écrire n'importe quel fichier que nous voulons et exécuter ces fichiers à partir d'ici sans avoir à nous soucier de trop de permissions. Donc, pour attaquer des machines plus tard, surtout lorsque nous avançons dans le cours pratique de piratage éthique, vous pourriez me voir utiliser le dossier temp pour télécharger des malwares ou écrire un fichier malveillant ou quelque chose que je peux faire à partir d'un dossier qui est lisible, écrivable, exécutable. Alors, effaçons à nouveau l'écran. Une autre raison et importance de la lecture, écriture, exécution est que si nous écrivons un script, nous ne pourrons pas exécuter ce script tant que nous n'aurons pas un accès complet pour le faire. Cela deviendra plus important lorsque nous téléchargerons des fichiers et essaierons de les exécuter contre des machines. Mais même dans cette petite section, lorsque nous examinons le scripting bash, nous devrons être capables d'exécuter notre script et nous devrons être capables de changer ses permissions. Faisons cela ici. Nous allons créer un petit fichier texte et simplement regarder les permissions et comment les choses changent. Donc, de manière similaire à la dernière vidéo, nous allons faire un echo et nous allons simplement dire "hello". Et dans ceci, nous allons utiliser notre opérateur de redirection et nous allons simplement mettre cela dans un fichier hello.txt. Si nous faisons ls-la, nous pouvons voir que hello.txt est ici, mais regardez les permissions qui sont définies. Nous avons des permissions de lecture, écriture. Nous n'avons aucune permission d'exécution. Si c'était un script ou quoi que ce soit que nous essayions d'exécuter, la machine ne nous laisserait pas l'exécuter car nous n'avons pas les permissions d'exécution. Même chose ici, tout le monde ne peut que lire ce fichier, ils ne peuvent pas écrire ou exécuter ce fichier. Donc, nous pouvons changer les permissions sur cela, et nous pouvons le faire avec chmod, qui signifie "change mode". Donc, je vais effacer l'écran à nouveau, et nous pouvons faire un CH mod. Et il y a deux façons différentes de le faire. La première façon est de faire quelque chose comme un signe plus, puis de donner les permissions que vous voulez définir pour ce fichier. Donc, nous pourrions faire quelque chose comme rwx, c'est lire, écrire, exécuter. Si vous voulez juste un accès en lecture, ou un accès en lecture, écriture, ou juste un accès en écriture, vous mettriez la lettre appropriée là-bas. Et allons-y et donnons-lui simplement une lecture, écriture, exécution, et je vais dire hello.txt et appuyer sur Entrée. Et nous allons faire ls-la à nouveau, et maintenant vous pouvez voir que la couleur de ceci a changé. Pourquoi ? Il est entièrement lisible, écrivable, exécutable pour nous en tant qu'utilisateur. D'accord, en tant que propriétaire, je devrais dire. Donc, c'est une façon de faire. Cependant, il existe une autre façon de le faire également. Nous pouvons dire chmod 777 hello.txt, appuyer sur Entrée, faire un ls-la, et vous verrez maintenant que tout a lecture, écriture, exécution ici. Eh bien, qu'est-ce qui a changé ? Qu'est-ce que ce 777 et pourquoi est-il si important ? Pour cela, nous allons passer à PowerPoint pendant une seconde. D'accord, donc nous avons différents nombres que nous pouvons définir pour le CH mod. Et rappelez-vous, nous avons fait 777 parce que nous avons donné un sept à chaque groupe. Nous avions les premier, deuxième et troisième groupes, vous vous souvenez ? Eh bien, que signifie 7 ? Eh bien, 7 signifie lire, écrire, exécuter. Donc, pour une permission de lecture, nous obtenons 4 points, ou pour une écriture, nous obtenons 2, et pour une exécution, nous obtenons 1. Donc, comme vous pouvez le voir ici, nous avons 4 + 2 + 1, cela fait 7. Eh bien, si nous n'avions aucune permission, ce serait zéro. Donc, nous pourrions faire quelque chose comme un 700. Vous pourriez voir quelque chose comme "lecture seule", et ensuite vous lui donneriez simplement 4 4 4 partout, par exemple. Ou j'ai vu quelque chose comme un fichier pem SSH, et ces fichiers nécessitent des permissions spécifiques. Généralement, c'est 644. Donc, cela dirait que le propriétaire a lecture, écriture, mais pas exécution, et ensuite tout le monde a juste un accès en lecture à ce fichier. Donc, ce serait une permission 644. Donc, si vous vous demandez jamais ce que signifient les permissions, vous pouvez toujours vous référer à un tableau comme celui-ci ou rechercher rapidement "que signifient les nombres CH mod". Sachez simplement que si vous voulez donner quelque chose des permissions complètes, vous allez définir 777 partout. Et si nous faisons du hacking ou du pentesting, c'est souvent ce que nous allons utiliser, à l'exception des fichiers pem où ils doivent avoir des permissions plus restreintes, parfois 644, parfois en fait 400, c'est ce que j'ai vu aussi. À partir de là, retournons à notre machine Cali, et je vais faire Ctrl + L pour effacer l'écran ici. Nous voulons examiner l'ajout d'un utilisateur. Donc, nous allons faire un pseudo add user, et vous pouvez donner le nom d'utilisateur que vous voulez. Je vais juste appeler cet utilisateur John. Il va demander notre mot de passe sudo. Rappelez-vous, nous avons changé notre mot de passe, alors assurez-vous de mettre le bon mot de passe. Et maintenant, il va dire, d'accord, quel mot de passe voulez-vous utiliser pour John ? Je vais entrer cela, et je vais le saisir à nouveau, puis vous pouvez simplement appuyer sur Entrée pour tout cela et revenir à l'écran où il est dit Cali at Cali. À partir d'ici, nous allons aller changer d'utilisateur et aller dans John. Donc, faites simplement su John. Je vais demander le mot de passe de John. Donnez ce mot de passe, et maintenant vous pouvez voir que nous sommes John at Cali. Alors, qu'est-ce qui est spécial à propos de John ? Eh bien, nous avons créé un nouvel utilisateur, et John a certaines permissions. Si nous voulions cat le fichier at password, nous pouvons. Et c'est un fichier très courant que vous allez regarder en tant que pentester. Si vous venez ici, le fichier Etsy password est important. C'est quelque chose que nous pouvons voir beaucoup d'informations sur cette machine. Maintenant, le fichier Etsy password est appelé le fichier password, non pas parce qu'il contient notre mot de passe, mais parce qu'il stockait autrefois notre mot de passe il y a très, très longtemps. Maintenant, ce qui est fait, c'est qu'ils y ont mis un X comme espace réservé, et cet espace réservé est ensuite rempli avec le fichier shadow. Nous y jetterons un œil ici dans une seconde. Donc, nous utilisons la commande cat, et vous m'avez vu l'utiliser plusieurs fois tout au long du cours. Nous l'utilisons pour imprimer un fichier, donc lorsque nous imprimons le fichier, nous pouvons lire le fichier. Donc, à partir d'ici, nous lisons le fichier et nous disons, d'accord, je vois root. Root est l'ID utilisateur zéro, et c'est important. Cela nous dit qu'ils sont l'utilisateur ultime sur la machine, ils sont l'utilisateur zéro. Si nous faisons défiler tout en bas, nous devrions voir certains utilisateurs qui ont été créés ici. Par exemple, nous voyons Cali. Cali est l'utilisateur 1000, assez courant. Nous pouvons également voir que John est utilisé ici, et John est l'utilisateur 1001. Nous pouvons voir quel type de shell ils utilisent et quel est leur dossier d'accueil. Vous pouvez voir le type de shell zsh par rapport au bin bash de John, donc ce sont des types de shell différents, et nous y reviendrons un peu plus tard. Mais à partir d'ici, nous pouvons également voir root ici. Nous pouvons voir le type de shell root, et nous pouvons également voir quels types de services s'exécutent sur cette machine. Donc, si vous voulez trouver les utilisateurs, je regarde généralement root, puis je regarde et fais défiler tout en bas pour voir ce qui a été installé en plus de ce qui se trouve sur cette machine. Donc, ici, nous pouvons voir certaines choses comme SSH, ce qui est important. Nous savons, d'accord, cela a la capacité d'exécuter SSH, peut-être a un service SSH, peut-être a un service SQL ici avec MySQL, OpenVPN. C'est donc une petite collecte d'informations. Si nous atterrissions sur une machine, par exemple, et que nous étions un utilisateur de bas niveau sans privilèges, nous pourrions commencer à regarder qui sont les autres utilisateurs sur l'ordinateur, pourquoi sont-ils importants, comment pouvons-nous les atteindre, où se trouvent leurs fichiers, quels types de services s'exécutent sur cette machine. Tout cela fait partie de l'étape de collecte d'informations du piratage éthique, et ce fichier conduit à de nombreux indices pour nous. Maintenant, effaçons l'écran. Disons que je veux voir le fichier shadow. Le fichier shadow est le fichier qui contient les hachages de mots de passe pour cette machine. Je vais essayer de taper cat Etsy shadow. Permission denied. D'accord, peut-être que j'ai besoin d'utiliser sudo. Essayons ici. Entrez notre mot de passe. Oh, John n'est pas dans le fichier sudoers. Ceci est également appelé le fichier sudoers, et vous pouvez également appeler sudo "sudo". Cela dépend de votre nomenclature et de la façon dont vous le prononcez. Je suis une personne "sudo". Donc, à partir d'ici, je vais faire Ctrl + L. Nous allons changer d'utilisateur pour revenir à Cali, et nous allons examiner certaines choses. Donc, si je fais switch user Cali, il va me demander le mot de passe. Je vais entrer notre mot de passe, et la première chose que je veux vous montrer, c'est le fichier shadow avant de passer au fichier sudoers. Donc, si nous faisons sudo cat, regardons shadow. Je pense que c'est important à voir. Vous pouvez venir ici et vous souvenir de la façon dont j'ai dit avec un hash que c'est défini ici. Donc, notre mot de passe root n'a pas été défini. Il n'y a pas de hash ici, et c'est une meilleure pratique de sécurité. Nous ne voulons vraiment pas avoir de mot de passe root, sauf si nous en avons absolument besoin. Dans ce cas, nous voulons peut-être juste avoir certains utilisateurs qui peuvent s'élever à root, puis si la journalisation est activée, nous pouvons alors voir à partir de nos journaux qui a accédé à ce compte root, à quelle heure. Vous ne voulez vraiment pas avoir de mot de passe root où n'importe qui peut simplement se connecter avec un mot de passe connu, car cela élimine une certaine responsabilité. Donc, la meilleure pratique serait de dire, hé, si nous avons une machine Linux, vous obtenez tous les comptes utilisateurs réguliers, puis si vous voulez exécuter quelque chose avec des privilèges élevés, vous le ferez avec votre compte, puis vous utiliserez sudo pour cela. Mais en regardant ici, nous pouvons voir les hachages pour cet ordinateur. Et ce qui est intéressant en fait, c'est que Cali et John ont le même mot de passe, mais ils ont des hachages différents. Et c'est un peu unique. Si vous voyiez cela sur une machine Windows, si le mot de passe était le même sur la machine locale, vous verriez exactement le même hash, et c'est un indicateur clair que la réutilisation du mot de passe est en jeu. Mais ici, ce n'est pas le cas. Donc, l'algorithme de hachage utilisé est un peu différent, et il génère des hachages différents, même si le mot de passe est le même. Quoi qu'il en soit, le mot de passe pour ces deux comptes est "password", et c'est très faible et peut facilement être cracké, comme nous le découvrirons plus tard. D'accord, maintenant passons au fichier sudoers. Ce que nous allons faire, c'est que nous allons faire un pseudo cat et nous allons regarder Etsy sudoers, juste comme ça. Et j'ai peut-être tapé un peu vite, alors je vais remonter un instant. Pseudo cat Etsy sudoers. D'accord, juste comme ça. Il devrait se compléter automatiquement. Et à partir de là, nous allons entrer ici et nous allons regarder qui a quels privilèges. Eh bien, si vous voyez "allow members of group sudo to execute any command" et que vous voyez "% sudo", donc il appelle sudo depuis ailleurs. Parfois, nous pouvons simplement inclure des utilisateurs ici. Nous pourrions dire, hé, l'utilisateur Cali, je veux qu'il fasse ces choses à la place. Ceci dit, hé, quiconque fait partie de ce groupe, je veux qu'il puisse faire ce qu'il veut. Ils peuvent exécuter n'importe quelle commande comme s'ils étaient l'utilisateur root, essentiellement. Donc, avec cela, ce que nous allons faire, c'est que nous allons regarder qui est dans ce groupe % sudo. Et nous pouvons le faire en utilisant la commande grep. Donc, nous pouvons dire grep, et nous allons nous familiariser avec grep dans la vidéo de scripting bash. Mais en gros, pensez à grep comme à extraire une chaîne ou un élément spécifique d'un fichier ou de certains contenus que vous voulez voir. C'est un excellent moyen de réduire les spécificités et d'extraire uniquement les informations que vous souhaitez, et nous allons nous familiariser avec cela ici dans quelques vidéos. Donc, nous allons dire grep, puis nous allons dire sudo, juste comme ça, et nous allons le faire à partir de Etsy group. Et il dit qui a un privilège sudo ici. Tout ce que nous voyons, c'est Cali. Donc, notre utilisateur a un privilège sudo. Si nous voulions donner des privilèges à John, nous devrions ajouter John au groupe sudo dans le groupe Etsy, ou nous pourrions ajouter John spécifiquement au fichier sudoers et lui donner des permissions spécifiques également. Et à mesure que nous avançons dans le cours et que nous abordons l'escalade de privilèges, et si vous allez dans les cours d'escalade de privilèges que nous avons, vous verrez que nous examinons immédiatement les privilèges sudo lorsque nous arrivons sur une machine en faisant quelque chose comme sudo -l. Et nous allons examiner cela et dire, d'accord, quelles commandes puis-je exécuter ? Et dans ce cas, nous pouvons voir, d'accord, toutes les commandes peuvent être exécutées ici. Mais parfois, ce n'est pas le cas. Parfois, nous ne pouvons exécuter qu'une seule commande spécifique, ou peut-être que John, par exemple, nous voulons que John puisse exécuter Python parce que John est un développeur. Donc, John peut exécuter Python avec des privilèges sudo, mais ne peut rien exécuter d'autre. Donc, quelque chose à considérer en fonction de l'individu et de qui nous voulons donner des permissions sur cette machine. Ils pourraient ne pas avoir les privilèges d'accéder à tout en tant que sudo. Ils peuvent en fait être limités dans ce qu'ils peuvent exécuter également. Donc, c'est tout pour cette vidéo. Je vais vous voir dans la prochaine. Maintenant, nous allons aborder les commandes réseau qui sont pertinentes pour les tests de pénétration et pertinentes pour ce cours. Donc, la première chose que nous allons faire, c'est utiliser la commande IP, et c'est IPA. IPA liste tout, c'est comme ça que j'aime y penser. Et vous pouvez voir ici que nous avons une adresse de bouclage et nous avons notre eth0. C'est notre adresse Ethernet, et vous pouvez voir que nous avons une adresse IP ici, IPv4 de 192.168.138.140. Nous sommes sur un sous-réseau /24, et voici notre adresse de diffusion. Ici, nous pouvons également voir notre IPv6 ici, ce qui est bien, et nous pouvons voir notre adresse MAC ici. Nous pouvons donc également examiner cela via la commande IFCONFIG, et cela montrera les mêmes choses. Voici Ethernet zéro, voici la boucle, toutes les mêmes informations ici. IFCONFIG est l'ancienne méthode pour le faire. IPA est la nouvelle méthode pour le faire. IPA est agréable et colorée, si je dois être honnête. J'utilise toujours IFCONFIG parce que j'aime l'ancienne méthode. Mais IPA est la nouvelle méthode. Et dans certains cas, IFCONFIG nécessite sudo pour même s'exécuter ou peut ne plus être sur une machine. Mais dans certains cas, IP n'est pas une machine. Selon le type de machine sur laquelle vous vous trouvez et ce à quoi vous accédez, vous pourriez avoir besoin de l'un ou l'autre. Il est donc bon de vous montrer les deux. Maintenant, tandis que IPA fait tout, il ne montre que la connexion Ethernet, donc les connexions filaires. Si nous voulons voir les connexions sans fil, nous devons faire IWCONFIG. Et dans ce cas, vous verrez ici que nous n'avons pas de connexions sans fil pour le moment. Lorsque nous aborderons le piratage sans fil, nous verrons que nous avons des connexions établies et nous utiliserons la commande IWCONFIG. Mais sachez pour l'instant que c'est pour le sans fil, et si vous en avez jamais besoin, c'est à cela qu'il sert. Effaçons notre écran, et la prochaine chose que je veux couvrir est IP N, et N signifie voisin. L'alternative à cela est ARP -a. D'accord, qu'est-ce que ARP si vous ne savez pas ce qu'est ARP ? C'est le protocole de résolution d'adresse. Cela vient de votre réseau. Si vous n'êtes pas familier avec les réseaux, vous devrez peut-être étudier un peu cela. Maintenant, ARP dit quelle adresse IP est associée à quelle adresse MAC. Et ce qui se passe, c'est qu'un message de diffusion sort lorsque nous essayons d'identifier une adresse IP et une adresse MAC. Donc, une diffusion sort et elle dit, qui a cette adresse IP ? Et quiconque a l'adresse IP reviendra et dira, hé, c'est moi, j'ai cette adresse IP, et voici mon adresse MAC. Donc, maintenant, vous pouvez associer mon adresse MAC à cette adresse IP, et c'est un moyen d'identifier ces deux éléments ensemble et de les relier. Donc, encore une fois, dans ce cas, nous pouvons utiliser la commande IAP ou l'ancienne commande ARP. Maintenant, la commande IP est un peu plus jolie et un peu plus colorée, je pense plus facile à lire à mon avis, mais l'une ou l'autre fonctionnera dans cette situation. Une autre commande IP que nous voudrons exécuter et connaître est la commande IPR. Maintenant, R signifie route. Vous pourriez également taper route et vous obtiendrez des commentaires similaires ici. Donc, ce que nous regardons, c'est ce que l'on appelle une table de routage. Nous voulons savoir où notre trafic est acheminé. Et ici, vous pouvez voir sur l'une ou l'autre de celles-ci que nous acheminons via 192.168.138.0. Nous avons une passerelle ouverte. Nous pouvons voir la passerelle ici, c'est 138.2. Nous pouvons voir notre masque ici, et nous pouvons trouver toutes ces informations ici aussi. Donc, il est important de connaître le routage et ce qui se passe, surtout si vous êtes dans un réseau, par exemple, où vous pourriez avoir plusieurs routes. Disons que nous arrivons et que nous disons, oh IPA, d'accord, nous sommes sur le réseau 192.168.138, mais nous essayons juste de nous connecter aux machines de ce réseau. Nous voyons un /24, nous pensons, d'accord, eh bien, je sais qu'un /24 a 255 adresses IP potentielles, et je vais juste rester à scanner ce sous-réseau et à rechercher ces adresses IP sur ce sous-réseau. Eh bien, si vous regardiez la table de routage, vous pourriez en fait voir qu'il y a un 137 ici, ou 136, ou peut-être une adresse IP 10. ou quelque chose de différent de ce que vous avez ici. Peut-être avez-vous la possibilité de parler à d'autres réseaux, même si vous êtes sur ce réseau /24. Il est très important de regarder la table de routage. C'est aussi important car dans les vrais tests de pénétration, nous avons été sur un réseau "segmenté" et en réalité, ce n'était pas vraiment un réseau segmenté, il n'y avait juste pas de route vers ce réseau. Donc, ils ont dit que nous étions isolés et que nous ne pouvions accéder à rien, et tout ce que nous avions à faire était de dire, d'accord, nous allons ajouter ce réseau à notre table de routage, et que pensez-vous ? Nous avons pu scanner et nous connecter au réseau. Donc, être capable de connaître votre table de routage, être capable de comprendre ce qu'est une route et comment ajouter des routes, comment supprimer des routes peut devenir important. Ce sont des choses que vous devriez déjà savoir du réseau général. Je vous montre les commandes pour le routage de base et comment afficher les tables de routage. Si vous avez besoin de plus d'informations sur les tables de routage, vous devriez rechercher cela avant de continuer avec le cours de piratage éthique. D'accord, dernière commande que je veux aborder, c'est la commande ping. Donc, je vais faire un ifconfig à nouveau, et dans ce cas, je vais juste ping 192.168.138. Et je crois plus tôt j'ai vu un .2 était ma passerelle, donc je vais juste appuyer sur Entrée. Cela devrait me répondre, et ça le fait. Maintenant, si vous êtes un utilisateur Windows et que vous avez déjà utilisé ping, il n'enverra que quatre paquets. Il vérifiera donc quatre fois. Comme vous pouvez le voir ici, nous envoyons plus de quatre paquets. Nous envoyons indéfiniment, et je vais juste appuyer sur Ctrl + C pour arrêter cela. Nous voyons définitivement que nous recevons des réponses. Maintenant, il existe un moyen de limiter la quantité que nous envoyons et la quantité de trafic que nous envoyons, mais en gros, ce que nous faisons avec la commande ping, c'est que nous disons, hé, es-tu là ? Es-tu en vie ? Peux-tu me répondre ? Fais-moi savoir que tu es là. Donc, j'ai demandé à la machine à cette adresse IP de répondre et de me dire oui, je suis là. Ceci est appelé trafic ICMP. Toutes les machines ne permettent pas le trafic ICMP. Ce n'est pas parce que nous pingons une machine et qu'elle ne répond pas que cela signifie qu'elle n'est pas en ligne. Il y a des machines qui ont ICMP désactivé et qui ne répondront pas aux requêtes ping. Mais ping est un moyen rapide de voir si une machine est en ligne, et généralement par défaut, ping ou ICMP est activé sur la plupart des machines. Juste comme exemple supplémentaire, nous pouvons pinguer une machine qui, nous pensons, n'est pas en vie. Donc, je vais changer cela en un trois. Je ne pense pas qu'il y ait un trois sur mon réseau, et vous verrez qu'il va essayer d'envoyer des données et il va juste rester bloqué ici et dire "hôte inaccessible". Encore une fois, cela pourrait potentiellement signifier que cet hôte n'est pas là, ou cela pourrait potentiellement signifier que l'hôte a ICMP désactivé. Mais nous allons utiliser le balayage ping pour identifier les hôtes sur notre réseau, et nous le ferons ici dans quelques vidéos. Mais je voulais que vous vous familiarisiez avec la commande ping si vous ne l'étiez pas déjà. Maintenant, il existe certaines commandes dans cette vidéo dont nous n'avons pas parlé, par exemple la commande netstat. La commande netstat est utilisée pour identifier quels ports ouverts et quels services sont là. Nous y regarderons plus tard, mais sachez simplement que cette commande existe et que nous ferons le nécessaire sur une commande plus tard. Donc, pour ceux d'entre vous qui regardent et qui ont une formation en réseau ou qui disent, hé, vous n'avez pas montré netstat, c'est tellement important, vous avez raison, cela arrive plus tard dans le cours. Donc, c'est tout pour cette vidéo. Nous allons passer à la suivante. Parlons maintenant de la visualisation, de la création et de la modification de fichiers. Et nous en avons déjà fait un peu dans le cours. Vous m'avez vu faire quelque chose comme echo hello, et rappelez-vous que cela s'affiche à l'écran. Et nous pourrions simplement faire écho de cela à nouveau, comme un hello, et le mettre dans un fichier, et vous m'avez vu faire cela. Nous allons juste appeler celui-ci hey.txt. Et si nous faisons LS, nous devrions voir hey.txt juste ici. Si nous faisons cat a.txt, nous devrions imprimer hello à l'écran. Tout cela devrait vous être assez familier. Alors, construisons là-dessus. Parlons de la façon dont nous pouvons ajouter à ce fichier et écraser ces fichiers de différentes manières dont nous pouvons réellement créer et modifier des fichiers. Je vais effacer l'écran ici. Maintenant, que faire si je voulais ajouter à ce fichier, et je tape juste vers le haut, au fait. Que faire si je veux dire "hello again" ? Donc, je veux dire echo "hello again" dans ce fichier hey.txt qui existe déjà. Que pensons-nous qu'il va se passer ici ? Donc, je vais appuyer sur Entrée, puis je vais cat hey.txt. Eh bien, maintenant il dit "hello again". Il disait "hello" auparavant. Eh bien, c'est parce que lorsque nous utilisons un seul symbole supérieur à, comme ceci, cela va écraser le fichier. Donc, si nous tapons vers le haut et si nous allons et que nous écrivons juste "hey again again" juste pour le plaisir, et ajoutons un deuxième de ceux-ci. Donc, il devrait y avoir deux de ces symboles supérieurs à. Nous appuyons sur Entrée, nous cat out a.txt, et maintenant vous pouvez voir qu'il dit "hello again" et "hello again again". Pourquoi nous soucions-nous ? Pourquoi faisons-nous cela ? Eh bien, lorsque nous utilisons le scripting, par exemple, et que nous voulons parcourir beaucoup d'informations et que nous voulons ajouter ces informations à un fichier, nous pourrions utiliser quelque chose comme ceci, où si nous collectons, disons, des adresses IP, c'est un présage, au fait, s'ils collectaient des adresses IP et que nous voulions les mettre toutes dans un fichier, nous allons devoir utiliser quelque chose comme un double supérieur à afin de ne pas écraser le fichier avec une seule adresse IP. Nous voulons lister toutes les adresses IP dans le fichier. Vous verrez donc cela lorsque nous aborderons le scripting bash de cette section. Effaçons notre écran. Une autre façon de créer un nouveau fichier est simplement de dire touch newfile.txt. Et si nous faisons LS, vous pouvez voir que newfile.txt est ici. Nous pouvons cat out newfile.txt. [Musique] Et il n'y aura rien dedans, car nous ne lui avons rien dit de faire. Nous avons juste dit "touch", ce qui crée un fichier. Nous pouvons donc utiliser un éditeur d'un type différent pour essayer d'éditer.

ceci et enregistrez le fichier maintenant il y a quelques éditeurs que nous pouvons utiliser dans notre terminal donc nous pouvons utiliser quelque chose appelé Nano qui est mon préféré personnel vous pourriez entendre d'autres personnes parler de VI et Vim vous pourriez entendre beaucoup de blagues sur la façon de les quitter et comment il est impossible de les quitter et pour cette raison honnêtement à cause des complications et parce que j'aime la simplicité j'utilise juste Nano donc nous pouvons Nano nouveau fichier et ici vous pouvez taper tout ce que vous voulez je vais littéralement dire je peux taper tout ce que je veux ici et maintenant je vais appuyer sur Ctrl X et tout au long de ce cours vous me verrez utiliser Nano assez souvent et nous l'utiliserons pour mettre à jour les fichiers et le code shell et c'est bénéfique si nous nous connectons à une machine à distance par exemple et nous n'aurons pas la possibilité d'avoir une interface utilisateur graphique comme le bloc-notes que je vais vous montrer ici dans une seconde nous n'aurons peut-être pas le luxe d'avoir quelque chose comme ça nous devrons peut-être utiliser Nano ou Bim ou un éditeur de texte dans le terminal donc nous allons y aller et appuyer sur Ctrl X ici je vais appuyer sur Y ce qui va dire oui je veux enregistrer ce fichier et ensuite j'appuierai sur entrée et maintenant si je coupe nouveaufichier.txt vous pouvez voir qu'il dit je peux taper tout ce que je veux ici enfin nous allons regarder un bloc-notes graphique donc nous allons utiliser mousepad nous pouvons taper dans mousepad et nous pouvons simplement dire nouveau fichier.txt tout comme nous l'avons créé et caché ici vous pouvez voir qu'il dit je peux taper tout ce que je veux ici et c'est vrai je peux aussi modifier c'est comme un bloc-notes si vous en aviez sur une machine Windows ou si vous avez utilisé leafpad ou n'importe quel type de matériel de bloc-notes celui-ci s'appelle juste mousepad donc nous pouvons contrôler s et enregistrer puis simplement sortir si nous catons notre nouveau fichier à nouveau vous pouvez voir que je peux aussi modifier maintenant tout au long de ce cours vous pourriez me voir utiliser un outil appelé Gedit il n'est pas encore installé sur cette machine bien que nous apportions des mises à jour au cours nous utiliserons Gedit chaque fois que vous me verrez utiliser Gedit n'hésitez pas à utiliser mousepad à la place de Gedit il est devenu obsolète offensive security s'en est débarrassé dans Kali Linux et maintenant si vous allez taper Gedit il dira qu'il n'est pas trouvé mais vous pouvez l'installer nous n'allons pas le faire maintenant mais lorsque nous installerons des outils dans une vidéo à venir vous pourrez l'installer avec l'un des outils que nous exécutons donc de toute façon notez simplement que nous utiliserons mousepad au lieu de Gedit car c'est le nouveau et le dernier et le meilleur dernière chose avec Nano ou l'un de ces outils vous pouvez créer un tout nouveau fichier donc vous pouvez dire comme nouveau fichier.txt et ensuite vous pouvez taper n'importe quoi ici et contrôler X appuyer sur Y appuyer sur entrée et ensuite vous pouvez cat nouveau fichier et devinez quoi il est là donc le fichier n'a pas besoin d'exister pour utiliser Nano ou exister pour utiliser mousepad vous pouvez créer de nouveaux fichiers avec ces commandes également donc c'est tout pour cette vidéo je vais continuer et vous retrouver dans la prochaine un autre sujet dont nous devons parler est le démarrage et l'arrêt des services nous pouvons avoir un service comme un serveur web ou SSH ou peut-être SQL ou une sorte de base de données que nous devons démarrer pendant que nous exécutons déjà Cali ou nous pourrions vouloir démarrer un service au démarrage à chaque fois que notre ordinateur se charge si vous avez déjà utilisé Windows c'est similaire à l'installation d'un programme puis à son démarrage au lancement c'est un peu la même chose ici si nous installons quelque chose nous voulons que ce service démarre au lancement nous devons le dire à notre machine pour le faire donc nous allons voir comment démarrer un service et comment faire démarrer un service au lancement donc le premier service que nous allons examiner est le service Apache et c'est ce que j'utilisais quand j'ai commencé en tant que hacker éthique et la raison est que nous pouvons lancer notre propre serveur web assez facilement et héberger des données malveillantes ou des fichiers ou des choses auxquelles nous pourrions vouloir accéder ou que quelqu'un d'autre pourrait vouloir accéder donc avant d'exécuter cette commande je veux faire une preuve de concept donc faisons un ifconfig et nous allons récupérer notre adresse IP ici je vais la copier puis je veux ouvrir Firefox depuis Firefox je vais aller essayer de naviguer vers cette adresse IP et vous verrez qu'il dit qu'il est impossible de se connecter c'est exactement ce à quoi nous nous attendions donc maintenant ce que nous allons faire c'est que nous allons venir ici et nous allons dire sudo service Apache to start nous appuyons sur entrée il va demander notre mot de passe sudo puis nous n'avons aucune confirmation de quoi que ce soit donc allons-y et revenons dans le navigateur et nous allons rafraîchir et enlevons le https et maintenant vous pouvez voir que ceci est là sur le port 80 donc nous sommes en fait sur HTTP pas HTTPS et nous avons un serveur Apache en cours d'exécution maintenant maintenant disons que nous voulions arrêter ce service nous pourrions nous pouvons aller ici et dire sudo service Apache to stop et avant de faire cela je veux vous montrer quelque chose donc si nous revenons dans Apache 2 je vais agrandir un peu cela vous pourriez voir que nos fichiers sont situés dans le dossier VAR www.html et ce que c'est si nous venons dans notre dossier personnel ici et nous allons juste dans le système de fichiers nous descendons et allons dans var puis nous allons dans www .html tout ce que je fais c'est aller au même endroit ici pourquoi je fais cela c'est ici que si je voulais héberger comme une image ou un fichier ou un malware je pourrais le mettre ici cet index.html est la même page d'index qui est chargée ici comme si je l'ouvrais c'est littéralement la même page qui est hébergée vous la voyez ici dans un format de fichier mais maintenant si je reviens vous pouvez voir que je l'héberge à cette adresse IP donc si je voulais héberger quelque chose de malveillant je pourrais le faire maintenant pour arrêter le service tout ce que nous avons à faire est de dire stop appuyer sur entrée puis nous revenons et nous rafraîchissons cette page vous pouvez voir que nous ne pouvons plus nous connecter maintenant j'ai mentionné au début de cette vidéo que c'était ma façon préférée d'héberger des trucs malveillants ou juste d'héberger des fichiers à quelque fin que ce soit maintenant cela a changé j'utilise maintenant Python pour faire cela donc nous pouvons créer un fichier allons-y et disons juste Echo hello et nous allons faire [Musique] hello.txt donc si nous LS nous pouvons voir que nous avons un tas de choses ici um hello.txt en étant l'une d'elles donc ce que je vais faire c'est que je vais lancer un serveur web à la volée avec python donc je vais dire python trois Dash m http.server et ensuite je vais lui donner le port 80. maintenant ce que nous disons c'est que nous voulons exécuter le module HTTP server et nous allons exécuter le port 80 ici vous pouvez mettre n'importe quel port que vous voulez et vous pouvez voir maintenant qu'il dit hey il héberge HTTP sur le port 80 et ce qui va se passer c'est que n'importe quel fichier dans le répertoire où je suis sera maintenant hébergé donc vous pouvez voir que j'héberge tout ça ici assez génial c'est un moyen rapide d'héberger un serveur web sans avoir à démarrer et arrêter des services et vous pouvez à la volée depuis un dossier juste démarrer un serveur web donc je pense que c'est la façon la plus cool et la meilleure de le faire donc je voulais vous montrer comment démarrer un service mais aussi que python a des capacités robustes ainsi si vous suivez la section python nous couvrirons comment exécuter un serveur FTP également ce qui est aussi amusant donc je vais appuyer sur Ctrl C ce qui va à nouveau arrêter le serveur si je viens ici rafraîchir vous verrez qu'il est maintenant arrêté et nous pouvons passer à une chose de plus avant de partir donc disons que nous voulions qu'un service démarre lorsque nous démarrons notre machine eh bien pour cela nous utiliserons la commande system CTL system CTL et nous pouvons dire enable si nous voulions par exemple activer SSH nous pouvons venir ici et simplement activer SSH et nous appuyons juste sur entrée sur cela et maintenant vous pouvez voir qu'il est activé donc lorsque nous redémarrons l'ordinateur SSH sera toujours activé pour nous maintenant je vais désactiver cela ce n'est pas une bonne pratique de sécurité et maintenant vous pouvez voir que nous l'avons désactivé et nous sommes bons pour partir donc si jamais vous avez un service que vous voulez exécuter il vous suffit de trouver le nom du service et de l'activer et il peut y avoir des moments où vous voulez que les choses s'exécutent par exemple historiquement j'ai exécuté SSH avec activé ou j'utilisais le serveur Apache 2 donc je n'avais pas à le lancer à chaque fois j'avais juste un endroit où aller héberger immédiatement cela mais votre kilométrage peut varier en fonction de ce que vous voulez exécuter mais connaître ces commandes est important au cas où vous auriez besoin de démarrer ou d'arrêter un service peut-être de redémarrer un service la même chose avec l'activation d'un service au démarrage ou la désactivation d'un service au démarrage donc c'est tout pour cette vidéo je vais vous retrouver dans la prochaine maintenant parlons de l'installation et de la mise à jour des outils la première chose que nous allons faire pour notre ligne de commande est de regarder comment nous mettrions à jour notre machine actuelle donc comme les autres systèmes d'exploitation les machines Linux nécessitent également des mises à jour et le patching peut être une bonne pratique donc afin de mettre à jour et de mettre à niveau notre machine nous utiliserons la commande sudo et nous dirons apt apt puis nous dirons update et upgrade juste comme ça donc assurez-vous d'utiliser deux symboles Ampersand ici nous allons faire deux commandes nous allons dire d'abord je veux que tu mettes à jour ensuite je veux que tu mettes à niveau bien pourquoi faisons-nous cela pourquoi exécutons-nous deux commandes en premier lieu eh bien ce que nous faisons lorsque nous installons réellement des éléments sur notre machine Cali nous allons vers ce que l'on appelle des dépôts et nous parcourons les paquets et la commande update va vers les dépôts connus et met à jour ces dépôts puis elle regardera ces dépôts et dira ok qu'est-ce qui doit être mis à niveau ici donc quels outils ont des mises à niveau ou des mises à jour disponibles pour eux dont nous avons besoin donc si nous exécutons cette commande vous verrez qu'elle va parcourir ces dépôts vous pouvez la voir parcourir ces paquets Cali rolling et release AMD 64 et leurs contenus etc etc cela prendra du temps car elle parcourt et met à jour ces dépôts elle trouvera quels programmes nous avons besoin et elle les fournira dans une liste maintenant ce que vous pouvez voir c'est qu'elle nous demande êtes-vous root donc c'est une leçon ici parfois nous devons être l'utilisateur root nous ne pouvons pas être juste un utilisateur pseudo pour exécuter la commande donc ce que nous allons faire dans ce cas c'est que nous allons sudo changer d'utilisateur en root maintenant nous sommes root et nous allons exécuter cette commande à nouveau nous allons dire apt update et apt upgrade d'accord et cela va parcourir cela et ensuite devrait nous fournir une liste de ce que nous allons installer qui si nous remontons en haut vous pouvez voir qu'il dit hey ces paquets ont été installés automatiquement et ne sont plus requis et il dit que nous pouvons utiliser la commande APT Auto remove pour le faire il dit voici les nouveaux paquets qui doivent être installés et voici les paquets qui vont être mis à niveau donc ceux-ci sont déjà installés comme Apache 2 a des mises à jour requises et il va parcourir et installer tout cela maintenant lorsque vous faites défiler vers le bas il dira que vous avez besoin de 801 mégaoctets et le vôtre pourrait être différent selon le moment où vous regardez cette vidéo il dira voulez-vous continuer cette opération dans ce cas je dirai non et la raison pour laquelle je dirai non est que la mise à jour sur Kali Linux peut casser des choses vous devriez toujours avoir presque deux copies de votre Linux n'est-ce pas vous devriez faire une copie de sauvegarde avant de faire une mise à jour et il y a certaines limitations pour pouvoir faire des sauvegardes en fonction de si vous utilisez VMware ou virtualbox et nous n'allons pas entrer dans cela maintenant mais sachez simplement que les outils peuvent facilement être cassés en poussant des mises à jour et nous parlerons d'un outil que vous pouvez utiliser qui est à jour et rend votre Cali le dernier et le meilleur sans rien casser même la version actuelle de Cali 2022.2 tous les outils ne fonctionnent pas immédiatement comme ils devraient nous en parlerons un peu plus tard donc disons que vous vouliez installer un outil nous allons juste en prendre un en exemple donc disons qu'il y avait un outil que vous vouliez installer comme ce cron daemon common je vais juste le copier vous pourriez venir ici et dire apt install cron daemon common comme ceci appuyer sur entrée et il dira oh vous voulez installer cela appuyez juste sur oui et il l'installera et il mettra également à niveau ce paquet cron ici je ne vais pas le faire mais sachez que vous pouvez également installer des applications une seule fois si elles font partie du dépôt que vous avez nous n'allons pas entrer dans la mise à jour des dépôts et l'ajout de dépôts manuels nous n'avons pas besoin de le savoir à ce stade de nos carrières Linux nous avons juste besoin de comprendre que nous allons vers un dépôt et que nous pouvons télécharger ces éléments ou paquets en fonction de ce qui se trouve dans le dépôt donc mettre à jour le dépôt est toujours bon et ensuite nous vérifions les mises à niveau disponibles pour nos paquets dans ce cas nous ne ferons aucune mise à jour ou mise à niveau mais il peut y avoir un moment où nous devons installer un outil spécifique nous allons sur le web et nous devons récupérer un outil et il dit hey exécutez cette commande app install c'est ce qu'elle fera c'est ainsi que nous installerions quelque chose si nous en avons besoin maintenant la prochaine chose que nous allons examiner est la commande get et git est un outil qui fonctionne avec GitHub je vais ouvrir un nouveau Firefox et je vais agrandir un peu cela nous allons aller sur GitHub en fait allons juste sur Google nous allons aller sur Google et souvent dans nos carrières de hacker éthique nous allons rechercher des outils nous allons venir ici et dire oh je veux vraiment trouver un outil peut-être qui fait du brute force sur Office 365 et ensuite je pourrais dire quelque chose comme GitHub et vous pouvez voir qu'il commence déjà à se remplir et nous pourrions trouver quelque chose comme ok il y a cet outil Daft hack nous pourrions cliquer dessus et venir ici et il pourrait vous dire comment l'installer eh bien c'est Powershell donc ce n'est pas un bon exemple euh nous pourrions venir ici nous pourrions dire ok voici comment installer donc vous parcourez et il dira voici l'utilisation comment l'utiliser et parfois il vous donnera des instructions d'installation mais souvent tout ce dont vous aurez besoin est de venir ici et de télécharger le code pour installer le fichier donc je vais vous montrer un outil que nous allons installer et exécuter nous allons sur Google et nous recherchons hemp my Cali juste comme ça vous verrez que nous pouvons cliquer ici et cet outil est disponible pour nous à télécharger maintenant une façon de regarder un outil et de voir s'il a une pertinence sur GitHub est de regarder le nombre d'étoiles qu'il a et les forks qu'il a tout ce qui a comme 700 étoiles comme ceci est assez réputé et vous devriez également regarder quand il a été mis à jour pour la dernière fois vous pouvez voir que ceci a été mis à jour le mois dernier maintenant divulgation complète DeWalt travaille en fait pour TCM security et est une personne fantastique si vous n'avez jamais interagi avec DeWalt c'est quelqu'un d'incroyable et une excellente ressource il l'a construit parce qu'il y avait tellement de problèmes avec Kali Linux et les outils qui venaient fraîchement installés comme en 2022.2 ne fonctionnent pas toujours comme ils le devraient donc beaucoup d'outils sont cassés certaines choses doivent être rétrogradées et il y a beaucoup d'options ici qui peuvent vous dire hey voici ce que nous pouvons réparer comme nous pouvons réparer différents problèmes manquants qui se produisent ou nous pouvons réparer go laying ou réparer impack et vous n'avez pas à vous soucier de ce que tout cela signifie pour l'instant jusqu'à ce que nous entrions dans le pen testing mais c'est quelque chose que nous installons et exécutons réellement lorsque nous construisons nos machines de laboratoire ou que nous construisons nos machines pour même pirater des clients c'est un outil si bien fait et il vous dit ici comment l'installer il dit hey get clone ici de cette adresse nous pouvons également venir ici nous pouvons aller dans le code et nous pouvons simplement copier nous disons copy my Cali ici et ensuite nous viendrons et nous pourrons simplement dire get clone en fait changeons d'utilisateur je suis désolé changeons d'utilisateur de retour à Cali et nous entrerons ici et ensuite ce que j'aime faire lorsque j'installe des outils c'est que j'aime les installer dans le dossier opt le dossier opt donc à partir d'ici nous allons exécuter get clone collez ceci en fait nous allons exécuter sudo get clone je m'excuse et ensuite entrez votre mot de passe et maintenant si nous regardons ici nous devrions avoir Pimp My Cali ce que nous avons donc si nous CD à Pimp My Cali et maintenant nous LS nous pouvons voir que nous avons le script pimp mycali.sh si vous revenez sur le site web il vous dira comment exécuter et utiliser cela tout bon GitHub dira hey voici comment exécuter ce script donc il dit hey exécutez juste sudo hit my Cali ceci est pour une nouvelle VM Cali vous avez juste besoin d'exécuter l'option de menu n nous allons copier ceci et coller puis nous allons l'exécuter donc maintenant cela vous dit ce que vous voulez faire eh bien voici toutes les différentes options n est une nouvelle configuration de VM exécutez cette option pour la première fois que vous exécutez Pimp My Cali d'accord donc cela corrigera toutes les choses pour vous je vais appuyer sur n et laisser cela s'exécuter il va aller chercher des choses dans les dépôts et il exécute apt update et maintenant il va installer certains outils et paquets et désinstaller certains outils et paquets comme vous pouvez le voir il défile ici donc allez-y et laissez cela s'exécuter je vais mettre la vidéo en pause ici pendant une seconde puis retrouvez-moi lorsque vous êtes à l'écran suivant où vous pouvez réellement entrer n'importe quelle commande d'accord donc cela fait environ cinq minutes et nous arrivons à cet écran ici et vous pouvez voir qu'il nous demande si nous voulons exécuter l'installation de connexion root il explique qu'en Cali 2019.x l'utilisateur par défaut était root ce dont nous avons parlé plus tôt dans ce cours et maintenant qu'ils l'ont changé en Cali ce que nous avons utilisé voulons-nous réactiver la possibilité de se connecter en tant que root dans Cali dans ce cas je choisirai oui cependant vous devez vous assurer que vous êtes à l'aise et capable de vous exécuter en tant que root sous Linux si vous ne vous sentez pas à l'aise continuez à vous exécuter en tant que Cali vous me verrez tout au long du cours lorsque nous entrerons dans la section de hacking éthique en vous exécutant en tant que root sachez simplement qu'il peut y avoir des moments où vous pourriez avoir besoin d'utiliser sudo ou vous pourriez avoir besoin de changer d'utilisateur en root comme vous me l'avez vu faire avec la mise à niveau des paquets il y a quelques minutes cela peut être nécessaire donc si vous comprenez cela vous pouvez appuyer sur non sur cet écran et c'est parfaitement d'accord bonne pratique de sécurité de simplement appuyer sur non je vais appuyer sur oui parce que je me sens à l'aise de me connecter en tant que root je suis le seul utilisateur sur cette machine et je n'ai aucune responsabilité ou répudiation à craindre donc je vais donner un nouveau mot de passe pour cela et je vais le saisir à nouveau et maintenant il va demander si nous voulons copier tout de notre dossier Cali dans notre dossier root je dirai non et maintenant il va continuer à installer donc nous allons laisser cela s'exécuter à nouveau allez-y et mettez la vidéo en pause si vous en avez besoin et nous vous retrouverons lorsque tout sera terminé d'accord et lorsque tout sera terminé ce qui a pris environ 10 minutes pour tout cela vous devriez arriver à cet écran tout est terminé bon hacking ici et tout devrait être installé pour vous si vous avez choisi la voie root c'est une chose étrange à dire si vous avez choisi la voie root vous pouvez vous déconnecter et vous reconnecter en tant que root et commencer à utiliser Linux en tant que root sinon vous pouvez continuer avec cette leçon en utilisant Cali comme votre utilisateur principal donc nous allons passer à la vidéo suivante dernière vidéo de la section et ce sera l'une de mes préférées donc ce dont nous allons parler c'est le scripting avec bash je vais vous montrer quelques astuces sympas que nous pouvons faire pour affiner certains des résultats que nous obtenons puis je vais vous montrer comment vous pouvez automatiser une partie de ce processus et nous allons prendre cela et même écrire des boucles for et des boucles en une seule ligne ce qui peut ne pas avoir de sens maintenant et c'est absolument normal mais au moment où la vidéo sera terminée j'espère que ce sera le cas donc la première chose que je veux vous montrer c'est comment nous allons écrire un ping sweep donc nous allons écrire un ping sweeper en gros nous allons sortir et dire je veux pinger un appareil si cet appareil est en vie affichez-moi ce résultat et nous allons balayer tout un réseau donc ce que nous allons faire d'abord c'est identifier un appareil qui est en vie pour que nous puissions tester cela puis construire dessus donc vous pouvez aller taper ifconfig et ensuite appuyer sur entrée maintenant mon ethernet est sur un réseau NAT donc j'exécute via un sous-réseau d'adresses IP différent ici donc celui-ci est 192.168 57 150 mon adresse IP réelle est sur un point 4. X ici donc je vais pour cet exemple pinger 192.168.4.29 cependant et vous pouvez voir voici le ping que nous obtenons en retour cependant si vous n'êtes pas sûr d'une adresse IP dans votre maison qui est active ou de votre sous-réseau dans votre maison ce n'est pas grave vous pouvez simplement exécuter 57.1 pour cet exemple vous n'obtiendrez peut-être pas beaucoup de résultats de retour cependant vous pourriez n'en obtenir qu'un ou deux lorsque nous ferons ce sweep donc je vous conseille de déterminer quelle est votre adresse IP c'est un bon défi de toute façon et si vous êtes familier avec le réseau ce qui devrait être le cas à ce stade alors vous devriez être capable de déterminer l'adresse IP de votre réseau domestique mais si vous ne le faites pas alors vous pouvez utiliser 57.1 ou quelle que soit votre adresse IP ici sur ce troisième octet donc cela fonctionnera également si vous voyez cela d'accord donc je vais effacer cela maintenant que remarquons-nous lorsque nous pingons nous pingons cette adresse et nous obtenons des données en retour maintenant si nous pingons une adresse active vous pouvez voir que nous obtenons ok 64 octets de 192 1684.29 il dit qu'il est actif nous obtenons des détails en retour si nous pingions quelque chose laissez-moi faire comme 41. où nous n'obtenons aucune donnée en retour d'accord et essayons encore une fois faisons-le d'une manière différente faisons comme un compte de un dash c de un nous ferons un compte de un il essaiera d'envoyer un paquet et de voir s'il fonctionne rien ne se passe n'est-ce pas il essaie de transmettre ce paquet vous pourriez voir qu'il obtient zéro reçu ici où ici obtient quatre reçu aucune donnée ne revient ce n'est tout simplement pas utile pour nous donc la chose que nous pouvons identifier ici est quelle est la grande différence si nous regardons les lignes un et deux par rapport aux lignes un et deux que voyons-nous lorsque nous obtenons des données en retour eh bien la grande différence ici est que nous avons bien deux d'entre eux je suppose que nous voyons que nous obtenons cette réponse n'est-ce pas c'est une grande différence et ensuite en bas il dira hey nous avons reçu des paquets si ce n'est pas zéro maintenant la façon simple de faire cela est de regarder une ligne qui dit hey nous recevons des données ce qui est cette ligne ici d'accord maintenant ce que je veux faire c'est juste réduire un peu cela ce que nous allons dire c'est que nous allons juste faire un ping d'une seule fois donc je vais effacer cela je vais le ramener comme ceci je vais faire un compte de un et cela devrait juste pinger une fois et c'est parfait nous n'avons pas besoin de pinger sans fin nous voulons juste nous assurer que nous pouvons pinger une fois et ensuite nous avons terminé d'accord et à partir de là je vais mettre cela dans un fichier texte je vais juste l'appeler ip.txt juste comme ça donc lorsque je coupe ip.txt maintenant vous pouvez voir que j'ai ce fichier il est stocké je n'ai pas à exécuter la commande à nouveau nous sommes bons pour partir donc ce que nous allons faire maintenant c'est que nous pouvons prendre cela puis nous pouvons commencer à collecter des données en fonction de ce que nous voyons ici donc ce que je veux faire c'est juste extraire cette ligne ici les 64 octets de 192 168.4.29 et la meilleure façon de le faire est avec une commande appelée grep donc grep va rechercher un terme ou une phrase spécifique et nous pouvons le faire et cela va extraire toute ligne qui contient ce terme ou cette phrase donc si je dis grep ici et ensuite je mets juste entre guillemets 64 octets comme ceci maintenant lorsque je coupe cela tout ce que j'extrais est cette ligne et cela le met même en surbrillance pour nous il dit voici la ligne que nous voyons 64 octets de 192.168 d'accord donc nous avons extrait juste la ligne unique et pourquoi j'extrais cette ligne eh bien si nous construisons un ping sweeper ce que je veux faire c'est balayer chaque IP dans un sous-réseau spécifique donc disons ce point 4 n'est-ce pas je veux pinger 4.1.2.3 tout le chemin jusqu'à 254 255. je veux voir si je peux traverser toutes les adresses IP d'un sous-réseau donc ce que nous allons faire c'est que nous allons pinger chacune d'elles et dire hey es-tu là et nous allons le faire avec un compte de un et nous allons dire es-tu là d'accord et s'ils sont là ils diront oui je suis là 64 octets voici ma réponse et il dira 64 octets de cette adresse IP donc nous voulons extraire les adresses IP pour dire oui nous sommes en vie c'est essentiellement notre objectif ici donc lorsque nous exécuterons cela à plus grande échelle ce que nous allons faire nous aurons besoin de grep ces informations et d'extraire ces informations pour que nous obtenions seulement l'adresse IP en retour d'accord donc ce que nous allons faire maintenant c'est que nous allons commencer à affiner et à saisir cette adresse IP et ensuite je vais vous montrer comment nous allons prendre tout cela en une seule instance et l'exécuter et extraire les adresses IP donc à partir d'ici ce que je veux faire c'est faire une autre commande donc chaque fois que nous faisons un pipe nous disons hey exécute cette commande puis avec cette commande exécute cette commande puis exécute également cette commande aussi donc nous allons continuer à exécuter cette commande sur celle-ci pour affiner les choses donc voici ce que nous faisons ici nous allons exécuter une commande appelée cut et avec cut nous allons dire je veux couper quelque chose de cela nous devons lui fournir ce que l'on appelle un délimiteur donc nous faisons un Dash D comme ceci et le délimiteur que je vais utiliser est un espace et ensuite je vais dire Dash f pour champ et ensuite je vais dire 4. d'accord qu'est-ce que cela fait eh bien cela dit hey je veux couper cette ligne que vous obtenez en retour sur un espace donc le délimiteur est un espace donc voici un espace voici un espace voici un espace et il dit que je veux compter jusqu'à 4 pour obtenir ces données donc un deux trois quatre ici donc si nous disons 4 ici comme ceci nous appuyons sur entrée nous obtenons cette adresse IP spécifique parce que nous le faisons par espaces si nous le faisions sur trois que pensez-vous que nous allons obtenir nous allons obtenir le mot from donc vous pouvez voir voici from donc ce que je veux faire c'est obtenir l'adresse IP donc nous allons utiliser cette coupe juste comme ceci utiliser notre délimiteur et ensuite aller à la bonne position de champ que nous voulons obtenir l'adresse IP d'accord donc nous avons l'adresse IP maintenant il n'y a qu'une seule chose qui ne va pas avec cette adresse IP c'est qu'il y a un petit deux-points à la fin nous voulons juste cela sans deux-points du tout nous le voulons juste comme ceci maintenant il y a plusieurs façons de le faire nous pourrions utiliser quelque chose appelé sed sed c'est un peu compliqué et un peu avancé je dirais pour où nous en sommes maintenant um donc je préférerais vous apprendre une façon plus simple de le faire et cela s'appelle translate donc avec translate tout ce que nous allons faire c'est que nous allons faire un autre pipe comme ceci et nous allons juste dire TR pour translate a Dash D pour un délimiteur encore et ensuite nous allons dire que nous voulons nous débarrasser de ceci et c'est tout nous nous débarrassons juste de ceci d'accord donc si nous exécutons cela une fois de plus maintenant vous pouvez voir que nous avons réussi à extraire cette adresse IP c'est notre objectif c'est tout ce que nous voulions faire maintenant comment pouvons-nous appliquer cela à quelque chose de plus grand comment pouvons-nous en faire partie d'un plus grand script c'est la question et nous allons le faire donc ce que je veux que vous fassiez c'est que je veux juste que vous copiez ceci d'accord copiez cette ligne entière et nous allons aller dans un mousepad donc copions la sélection et je vais effacer mon écran je vais juste dire mousepad et nous allons appeler cela ipsweep.sh d'accord donc ce sera un script bash et je vais agrandir cela et la première chose que nous allons faire avec notre script bash est de déclarer que c'est un script batch nous allons dire hash bang ici shebang c'est ce que nous appellerions forward slash bin forward slash bash cela permet à la machine de savoir lorsque nous exécutons cela cela permet à bash de savoir hey nous appelons ceci voici l'emplacement de bash c'est ce que nous exécutons avec le script vous verrez également cela lorsque nous utiliserons python vous verrez la déclaration hip en haut ou lorsque nous l'appellerons donc je vais appuyer sur Ctrl s et enregistrer cela ajoutera une belle couleur à cela donc lorsque nous coderons cela nous verrons en couleur j'aime beaucoup ça je vais en fait réduire cela un peu puis le rendre comme ceci ici pour que nous puissions avoir l'image complète d'accord donc ce que je veux faire c'est coller ce que nous venons d'écrire donc je vais juste contrôler v ici et coller cela donc nous n'avons pas besoin de faire un cat d'une adresse IP ici dans ce cas nous allons changer cela nous allons pinger rappelez-vous nous voulons pinger chaque appareil du réseau donc nous voulons pinger disons si nous pingons 192 1684. X d'accord nous voulons pinger cela et nous pouvons laisser cela comme ceci pour l'instant ne vous inquiétez pas de changer quoi que ce soit ici ce sera juste un espace réservé nous allons faire un peu de syntaxe supplémentaire pour que cela fonctionne donc nous allons écrire ce que l'on appelle une boucle for donc nous allons dire 4 et j'expliquerai ce que cela fait ici dans une seconde vous verrez également cela à nouveau lorsque nous entrerons dans le codage python et vous pourrez ainsi comprendre de plus en plus les boucles et ce que sont les boucles for les boucles while etc elles sont très très utiles et très courantes dans le codage et le scripting donc je vais dire 4 IP in et ensuite je vais dire sequence 1 through 254. maintenant très important ce caractère ici n'est pas une apostrophe d'accord ce n'est pas une apostrophe c'est la petite ligne je ne sais pas comment elle s'appelle elle est au-dessus du tilda à côté de votre touche d'échappement sur votre clavier donc c'est ceci d'accord c'est comme une apostrophe inversée presque je suis sûr qu'il y a un terme pour cela je ne le connais juste pas euh donc vous venez ici et vous dites ok 4 adresse IP dans sequence 1 through 254 et je vais expliquer ce que tout cela fait dans une seconde je veux juste que vous le tapiez pour l'instant je veux que vous disiez do d'accord et ensuite je veux que vous descendiez ici et nous allons dire Ampersand sur cette ligne et nous allons dire done je vais expliquer ce que tout cela signifie d'accord donc c'est une boucle que nous venons de créer ce que nous disons c'est pour l'adresse IP et nous déclarons juste cela cela pourrait être Bob si vous le vouliez nous faisons juste j'en fais juste un nom ou un terme facile à retenir donc nous allons dire 4 IP mais si vous voulez l'appeler Bob appelez Bob 4 IP in sequence 1 through 254. donc ce que fait sequence c'est qu'il dit hey je veux compter tout de 1 à 254. donc un deux trois quatre cinq six sept huit tout le chemin jusqu'à 254. cette boucle for signifie que je vais faire cela à chaque fois donc pour IP dans 1 pour ipn2 pour ipn3 nous allons exécuter cette commande jusqu'à ce que nous ayons terminé donc jusqu'à ce que cette séquence ait été exécutée 255 fois c'est fait d'accord et maintenant nous allons dire je veux faire un compte de dollar signe IP donc ce que nous disons ici c'est pour IP dans sequence 1 through 254 allez-y et faites un ping Dash C pour un compte de un 192.1684 254 et ici nous allons dire point 1.2.3 chaque fois que cette boucle tourne encore et encore elle incrémentera ce nombre à travers cette séquence c'est tout ce que nous faisons c'est une boucle de base d'accord donc nous allons continuer encore et encore maintenant cela fonctionnera si vous avez branché votre adresse IP codée en dur ici cela fonctionnera absolument maintenant nous pouvons l'améliorer un peu si nous le voulons donc ce qui se passe ici c'est ce que nous allons dire c'est si nous voulions l'exécuter nous ferions juste point slash et ensuite ip suite d'accord et cela fonctionnerait c'est bien mais nous pouvons le rendre un peu meilleur d'un point de vue codage nous pouvons venir ici et lui donner un dollar signe un et cela signifie argument un donc ce que nous disons ici c'est que je veux donner un argument à la place donc si vous voulez être technique ce premier point slash ipsweep.sh c'est l'argument zéro donc vous pouvez considérer cela comme l'argument zéro l'argument un serait ce que vous tapez après cela donc ce serait l'argument un l'argument deux etc donc dans ce cas ce que nous pouvons faire c'est dire que je veux exécuter 192.1684 comme ceci et cela exécutera le point 1.2.3 après cela donc vous fournissez l'argument il le place ici dans l'argument un et fait le reste pour vous donc de cette façon vous pouvez spécifier votre réseau et si vous vouliez pinger plusieurs réseaux vous n'avez pas à revenir ici et à changer cela ça marche juste donc super facile c'est un excellent petit script pour un sous-réseau de type slash 24 d'accord d'accord alors allons-y et essayons de l'exécuter rapidement je vais juste contrôler s enregistrer cela je vais le fermer nous allons faire un CH mod plus X sur ipsweep s'il nous le permet nous devrons peut-être faire un ok faisons un LS La rapidement pour nous assurer que cela a fonctionné ça a marché d'accord donc voici ce que nous allons faire nous allons exécuter ipsweep et nous allons dire 192.168 vous tapez juste votre IP ici je vais exécuter cela d'accord et vous pouvez voir tous les appareils qui reviennent dans mon réseau ici je vais appuyer sur Ctrl C annuler cela et donc cela capture tous les différents appareils de mon réseau maintenant c'est génial ça marche vraiment bien mais ce que nous pouvons faire c'est l'améliorer que se passe-t-il si j'ai tapé un que se passe-t-il si je n'ai rien tapé du tout que se passe-t-il si j'appuie juste sur entrée maintenant j'obtiens toutes sortes de pings inconnus et cela part de certaines choses que je faisais avant mais cela cause juste toutes sortes de problèmes et d'erreurs n'est-ce pas donc vous pouvez voir que j'essaie d'appuyer sur Ctrl C ça prend du temps pour casser um ici nous avons des problèmes parce que nous ne nous permettons pas n'importe quel argument ici ce que nous devons faire c'est corriger cela un peu donc ce que nous pouvons dire c'est que nous pouvons revenir ici et juste aller mousepad ipsweep.sh et venir ici et ajoutons un peu plus oh et j'ai aussi laissé ceci ici ne laissez pas ceci ici c'est pourquoi cela s'exécutait deux fois um d'accord donc ce que nous faisons ici c'est que nous devons ajouter une déclaration ce que nous allons faire c'est ajouter une instruction if les instructions if sont des conditions nous disons hey si cette condition est remplie fais quelque chose pour nous si elle n'est pas remplie alors allez-y et faites autre chose d'accord donc nous allons dire if et nous allons juste mettre ici dollar signe un est égal à rien alors nous allons juste dire alors Echo vous avez oublié et une adresse IP Echo syntaxe quelque chose comme ceci nous dirons juste IP sweep.sh et nous irons 192.1684 comme ceci d'accord et ensuite si nous avons fait cela correctement si nous avons un argument à l'intérieur de l'argument un alors nous allons dire else faites tout ceci ici et terminez et ensuite nous allons terminer notre instruction if avec fi maintenant ce script ou cette ressemblance de ce script n'est pas de moi d'ailleurs c'est le crédit va à quelque chose que j'ai modifié au fil du temps mais le crédit original va certainement à Georgia Weidman je me souviens l'avoir vu dans son cours il y a très très longtemps quand je commençais et elle a fait un excellent travail pour enseigner cela ce n'est qu'une modification de ce script donc je veux juste m'assurer que tout le crédit lui revient mais en regardant cela décomposons-le rapidement avant de l'exécuter à nouveau nous avons une instruction if nous avons dit si l'argument un n'est égal à rien alors vous allez faire un écho en arrière et dire hey vous avez oublié une adresse IP voici la syntaxe si elle inclut quelque chose alors nous allons y aller et dire exécutons notre instruction for notre boucle for et parcourons-la et ensuite nous terminerons notre if ici la seule chose que je fais de manière unique ici est que j'inclus cet Ampersand qui exécutera cette commande um plusieurs fois à la fois c'est une bonne façon de l'expliquer en gros nous avons plusieurs façons de le faire nous pourrions dire comme ceci donc nous pourrions mettre une commande ici et cela s'exécutera une par une elle dira ok pour un pour deux pour trois cela permet à plusieurs instances de cette boucle de s'exécuter à la fois et accélère simplement les choses je peux vous montrer la différence entre cela donc je vais juste contrôler s enregistrer cela je vais juste exécuter ce script rapidement maintenant essayons de l'exécuter sans rien ici d'accord maintenant regardez il dit vous avez oublié une adresse IP donc regardez nous avons fait cela correctement maintenant allons-y et ajoutons le 192.168.4 exécutons-le et vous pouvez voir ok il balaye mais il prend son temps surtout pour les adresses IP qui vont rester bloquées comme um comme si je n'ai pas de point deux ou point trois cela prendra un certain temps donc je vais contrôler c et sortir de cela s'il nous le permet et il semble qu'il va effectivement se bloquer donc ce que nous pouvons faire c'est revenir j'ouvrirai un nouvel onglet rapidement pendant que cela attend et je vais juste dire mousepad et nous allons juste retourner dans ipsweep.sh il est dans ce dossier voilà d'accord donc à partir d'ici je vais le changer pour l'Ampersand et je vais l'enregistrer je veux juste que vous voyiez la différence rapidement et pourquoi je l'exécute comme ceci donc ipsweep .sh192168.4 vous pouvez voir qu'il capture tout très rapidement d'accord ce que je peux faire maintenant c'est l'exécuter et ensuite le stocker dans comme ips.txt quelque chose comme ça juste comme adresses IP trouvées d'accord donc maintenant si je coupe IPS .txt j'ai toutes les adresses IP que je viens de trouver et je les ai trouvées aussi vite par rapport à ceci qui est peut-être encore en cours et il l'est et je ne peux même pas le tuer je vais juste fermer cela d'accord donc c'est la grande différence là avec cet Ampersand et la vitesse ce qu'il est capable de faire donc avec tout cela étant dit nous pourrions prendre cela et faire une chose de plus donc je veux vous montrer comment nous pouvons utiliser une ligne unique ces déclarations en une seule ligne sont appelées en um en bash et nous pouvons faire quelque chose de similaire à ce que nous venons de faire et l'accomplir dans cette ligne de commande donc maintenant nous avons une adresse IP nous avons une liste d'adresses IP disons que nous voulons exécuter nmap maintenant nous ne sommes pas encore arrivés à nmap vous n'avez pas vraiment besoin de le savoir sachez juste que c'est un outil qui nous permet d'aller faire du scan de ports d'accord donc typiquement nous dirions juste quelque chose comme nmap et nous ferions peut-être quelque chose comme euh Dash T4 Dash a Dash p Dash comme ceci c'est juste dire que je veux exécuter un scan nmap je veux tout regarder et je veux scanner tous les ports c'est juste un exemple vous pouvez juste exécuter mmap adresse IP comme ceci et ce serait bien aussi comme nous pourrions juste aller 192.168 4.29 et nous ferons un scan nmap rapide d'accord mais ce que nous ne pouvons pas faire ici c'est que nous ne pouvons pas juste dire hey je veux exécuter euh eh bien nous pourrions nous pourrions dire que je veux exécuter nmap pour tout dans point 0 24. le problème est que cela prendra du temps pour chercher et trouver quelles adresses IP sont valides ici si nous avons une liste nous pouvons automatiser ce processus considérablement nous pouvons juste venir ici et dire quelque chose d'un peu différent nous pouvons dire hey pour IP nous utilisons la même sorte de syntaxe en dollar signe et nous allons mettre des parenthèses ici nous allons dire cat et ensuite nous allons dire ips.txt et ensuite nous allons juste faire ceci nous allons dire do nmap dollar signe IP et ensuite encore nous avons l'option de faire done ou nous pouvons faire Ampersand done

juste comme ça, d'accord. Je vais juste faire ça ici comme exemple et vous montrer. C'est vraiment facile. Nous disons : hé, pour chaque adresse IP dans cette liste, et tout ce que nous faisons, c'est que nous découpons cette liste d'adresses IP que nous venons d'avoir. Donc, cela prendra la première adresse IP, puis relancera les M Maps. Cela reviendra, relancera la suivante, et ce jusqu'à ce que cette liste soit complètement terminée. Cela continuera à parcourir cette boucle. C'est tout, c'est une simple boucle. Ensuite, nous dirons terminé. Cela prendra cette adresse IP, commencera à la scanner, parcourra et espérons trouver des informations et entrera dans une boucle. C'est donc un moyen rapide d'automatiser une partie de ce processus. Je fais cela avec beaucoup de mes scripts où je fais une sorte de sondage, je vois s'il y a quelque chose qui est actif, je le mets dans un fichier IP, et vous verrez cela plus tard dans le cours, puis je scannerai cela avec nmap. Alors, réfléchissez à cela, j'espère que cela fera travailler votre esprit sur ce que vous pouvez faire pour commencer vraiment à écrire des scripts pour certaines de ces choses, et ce sera la première fois que vous mettrez la main à la pâte avec l'écriture de scripts. Nous allons continuer avec cela et nous deviendrons plus avancés au fur et à mesure, mais cela devrait être une bonne leçon d'introduction pour vous sur la façon dont nous pouvons construire un outil simple et automatiser une grande partie de ce processus assez facilement avec juste un peu de syntaxe de ligne de commande. Nous allons donc passer à la section suivante et je vous retrouverai là-bas. Bienvenue dans ce module sur Python. Donc, si vous n'avez jamais utilisé Python auparavant, ou même entendu parler de Python auparavant, Python est un langage de codage et de script. Il est couramment utilisé dans le piratage éthique et il est couramment utilisé dans le monde entier. Il est en fait considéré comme l'un des meilleurs langages pour débutants pour commencer si vous n'avez jamais appris à coder auparavant. C'est donc exactement ce que nous allons faire. Nous allons couvrir quelques bases de Python. Nous couvrirons donc tout ce que vous voyez sur cet écran ici : chaînes de caractères, fonctions mathématiques. Nous allons aborder les instructions conditionnelles et les boucles. Nous aborderons des éléments plus avancés et finalement nous construirons nos propres outils. Nous allons donc construire un scanner de ports à la fin de la leçon, puis lorsque nous aborderons la section développement d'exploits de ce cours, nous utiliserons à nouveau Python pour écrire nos propres exploits. Il sera donc utilisé tout au long du cours. Vous le verrez à nouveau en tant que hacker éthique également. Eh bien, vous irez sur des sites Web et vous pourriez avoir besoin de télécharger du code Python ou quelque chose à utiliser contre un hôte ou un client, et il sera fréquemment vu par vous. C'est donc un sujet très important à couvrir, surtout pour les fondations. Une chose très importante à souligner : vous n'avez pas besoin d'être un développeur pour réussir en tests d'intrusion. L'important est que vous compreniez ce que vous voyez et que vous sachiez lire du code. Si, en sortant de ce module, vous avez une meilleure compréhension de la façon de lire ce que vous voyez dans le code, vous serez bien mieux loti. En aucun cas vous ne devez être un développeur. Je suis encore à ce jour loin d'être au niveau d'un développeur et je suis très, très performant dans ce que je fais. Vous n'avez pas besoin d'être un développeur. Le point essentiel ici est donc de prendre de très bonnes notes, de comprendre ce que vous voyez. Si vous avez besoin de regarder une vidéo plusieurs fois dans cette section, absolument, c'est d'accord. Assurez-vous simplement de comprendre tout ce qui est devant vous et comprenez que les leçons vont s'appuyer les unes sur les autres et que tout devrait se rejoindre à la fin, et vous le verrez encore et encore tout au long du cours, surtout dans la section développement d'exploits où nous écrivons notre propre script Python. J'ai donc hâte de vous enseigner ce module sur Python et j'ai hâte de vous retrouver dans la prochaine vidéo.

Bien. Passons à notre première leçon. La première chose que nous allons couvrir sera les chaînes de caractères. Et pour ce faire, je vais créer un répertoire sur ma machine Linux. Vous pouvez créer un dossier sur votre machine Mac ou Windows si vous utilisez ces systèmes d'exploitation. Je vais juste aller ici et dire "make dir Python", puis je vais aller dans ce répertoire. Donc, à partir d'ici, je vais créer mon premier script. Je vais donc effacer mon écran avec Ctrl L et je vais dire "mousepad" et je vais juste appeler ce script "first.pi" et je vais lui donner l'esperluette à la fin. Cela me permettra simplement d'ouvrir ce processus de mousepad et d'avoir également le terminal disponible pour moi quand j'en aurai besoin. Vous verrez donc pourquoi je fais cela ici un peu plus tard. Maintenant, si vous n'êtes pas sous Linux, ce n'est pas grave. Vous pouvez utiliser quelque chose comme Notepad++ ou Code Runner pour Mac, que nous avons montré plus tôt dans ce cours. Donc, à partir d'ici, ce que je vais faire, c'est que je vais entrer un shebang, qui est un dièse, un point d'exclamation, une barre oblique, bin, ou une barre oblique, python3. Et c'est important pour Linux ici parce que nous appelons le répertoire. Si vous êtes familier avec Linux, ce qui se passe ici, c'est que nous avons deux options. Nous pouvons venir ici et dire "python3" et dire "first.pi" et cela exécutera notre script, ou en théorie, nous pouvons venir ici, faire juste un point, une barre oblique, "first.pi" et l'exécuter de cette façon. Si nous l'exécutons comme ceci, notre script ne saura pas où aller à moins que nous ne le déclarions. Donc, ici, nous donnons le shebang, une barre oblique, bin, une barre oblique, python3. C'est là que python3 est situé sur cette machine. Il montera donc ici et recherchera ceci en premier et dira : "Ok, je vais exécuter ceci en fonction de python 3." C'est donc une petite nuance de Linux ici et quelque chose que vous devriez savoir au cas où vous coderiez jamais sous Linux ou dans un environnement similaire comme Unix, sur lequel les Mac fonctionnent. Donc, à partir d'ici, si vous avez déjà suivi un cours de codage, la première chose que vous faites dans chaque cours de codage est ce qu'on appelle "Hello World". Nous allons donc imprimer "Hello World" et l'afficher dans notre terminal. Pour ce faire, nous allons faire quelque chose comme ceci. Nous allons dire "print" puis nous ferons une parenthèse et nous dirons "hello". Je vais enregistrer cela. Et si nous exécutons cela, et je vais l'exécuter avec python3, si nous exécutons "python3 first.pi", vous verrez qu'il dit "Hello World". Maintenant, une chose que nous pouvons faire ici, c'est une bonne pratique pour être un développeur, c'est d'ajouter quelques notes. Nous allons donc ajouter un commentaire ici. Nous allons faire un # ou un symbole de dièse et nous allons juste dire "print string". Maintenant, lorsque nous exécuterons cela à nouveau, cela n'imprimera pas. Les commentaires sont juste pour nous à l'intérieur du script, et je peux vous le prouver en enregistrant cela et en l'exécutant à nouveau. Vous verrez que tout ce que nous avons ici est "Hello World". Parfait. Donc, les commentaires avec un dièse sont juste destinés à celui qui lit votre script ou votre code, et cela pourrait être vous. Ou, dans le pire des cas, que se passe-t-il si vous êtes heurté par un bus demain, que vous êtes le développeur principal et que personne ne sait lire votre code parce que vous n'avez laissé aucun commentaire ? Ce serait très mauvais. Donc, une bonne pratique de codage suggère de laisser de bons commentaires et de s'assurer que les gens peuvent venir lire votre code et comprendre ce qui se passe ici. Nous allons donc ajouter des commentaires en cours de route, de sorte que nous comprenions ce que nous faisons et que nous pratiquions de bonnes habitudes également. Donc, ce que vous voyez ici est ce qu'on appelle une chaîne de caractères. Vous voyez une chaîne de caractères entre guillemets, et vous pouvez voir une chaîne de caractères imprimée avec des guillemets simples également. Nous pouvons donc juste dire "hello world". J'ajouterai le point d'exclamation pour la cohérence. Et si nous enregistrons cela et imprimons cela, vous verrez que cela imprime également "hello world". Donc, cela n'a vraiment pas d'importance si vous avez des guillemets simples ou doubles, jusqu'à ce que nous arrivions à des chaînes de caractères plus avancées, et nous en parlerons un peu plus tard dans le cours. Mais pour l'instant, sachez simplement que vous pouvez utiliser des guillemets simples ou doubles lors de l'impression d'une chaîne de caractères. Une autre chose que nous pouvons faire avec les chaînes de caractères est d'imprimer sur plusieurs lignes. Donc, si nous disons "print" et que nous utilisons des triples guillemets comme ceci, nous disons "this string runs", puis nous appuyons sur Entrée, "multiple lines" avec un point d'exclamation et ajoutons trois autres guillemets doubles là, et fermons cela. Nous pouvons également ajouter une note ici qui dit "triple quote for multi-line". Et si nous enregistrons cela avec Ctrl S et que nous l'exécutons à nouveau, vous verrez que cette chaîne de caractères s'exécute sur plusieurs lignes. Génial. Une autre chose que nous pouvons faire est de concaténer des chaînes de caractères. Nous pouvons donc imprimer quelque chose comme "this string is" et maintenant nous allons ajouter un espace à la fin. Assurez-vous d'avoir un espace ici. Nous allons utiliser un signe plus, puis nous allons dire "awesome" juste comme ça. Et nous pouvons dire "we can also concatenate". C'est toujours difficile pour moi de l'épeler. Donc, ce qui va se passer ici, c'est qu'il va prendre cette chaîne de caractères plus cette chaîne de caractères lorsqu'il l'imprimera. Donc, la raison pour laquelle nous avons un espace, c'est qu'il doit y avoir l'espace parce qu'il n'y a pas d'espace ici, et cela ajoutera juste un espace pour nous, même si dans notre tête nous pourrions vouloir qu'il le fasse. Nous allons donc enregistrer cela, l'imprimer une fois de plus, et vous pouvez voir qu'il a concaténé et dit "this string is awesome". Maintenant, une dernière chose. Nous pouvons également imprimer une nouvelle ligne. Nous pouvons donc juste faire quelque chose comme ceci et nous pouvons utiliser un guillemet simple cette fois juste pour faire une preuve de concept. Faire une barre oblique inverse n, comme ceci, et cela imprimera une nouvelle ligne, et nous nous familiariserons avec cela plus tard lorsque nous aborderons les fonctions. Nous écrirons notre propre fonction pour créer une nouvelle ligne, mais pour l'instant, si nous voulions ajouter une autre ligne, nous pourrions, puis nous pouvons simplement imprimer "test that new line". Et voyons s'il nous a réellement donné une ligne imprimée entre cette concaténation et cette nouvelle instruction d'impression ici. Enregistrons cela, imprimons-le, et vous pouvez voir qu'il y a une ligne ici. Donc, la barre oblique inverse n imprimera une nouvelle ligne pour nous, et c'est tout ce que nous avons besoin de savoir pour les chaînes de caractères de base. Nous allons donc passer aux mathématiques. Vous pouvez laisser cela ouvert. Nous allons parcourir cela au fur et à mesure, et vous aurez un long script qui fera également de très bonnes notes. Passons donc aux mathématiques. En fait, Python a un interpréteur mathématique intégré. Nous pouvons donc faire beaucoup de choses amusantes avec Python et avec les mathématiques qui sont automatiquement intégrées. Je vais donc appeler cette section "math". Et si vous voulez suivre les sections, vous pouvez monter ici et juste appeler cette section "strings" et juste la capitaliser comme ça, et ainsi nous aurons une idée de où nous en sommes. Nous pouvons même ajouter une ligne supplémentaire ici si nous le voulons. Donc, à partir d'ici, jouons un peu avec les mathématiques. Donc, si je voulais faire un "print" de 50 plus 50, nous pouvons certainement ajouter. Nous pouvons également soustraire. Donc, si vous voulez faire 50 moins 50, vous pourriez le faire. Et je vous donnerai un peu de temps pour rattraper votre retard ici dans une seconde. Je vais juste faire quelques instructions "print", puis nous les examinerons, puis nous passerons à d'autres mathématiques également. Nous pouvons également faire 50 fois 50. Et nous utiliserons juste la petite étoile ou l'astérisque. Nous dirons juste "multiply" et nous ferons également 50 divisé par 50. Nous dirons juste "divide". Donc, si nous enregistrons cela, vous pouvez prendre une seconde pour rattraper votre retard. Vous pouvez voir que nous faisons juste des mathématiques simples ici. Nous devrions nous attendre à 100, nous devrions nous attendre à zéro, nous devrions nous attendre à un ici et à 2500 si mes calculs mentaux sont corrects. Je vais donc imprimer cela. Ok, nous avons 100, 0, 2500 et 1.0. Donc, ce 1.0 est un peu différent. C'est ce qu'on appelle un flottant. Tout le reste qui est sorti jusqu'à présent est juste un entier, et nous en parlerons un peu ici dans quelques minutes. Mais sachez que les entiers sont sur le côté gauche, et si nous n'avons pas de point décimal ici, nous regardons les entiers. Et sur le côté droit, lorsque nous voyons quelque chose sur le côté droit du décimal, nous regardons ce qu'on appelle un flottant. Et cela devient très important selon quand nous en avons besoin. Pour l'instant, nous allons continuer à nous soucier des mathématiques. Nous aborderons les entiers et les flottants dans un petit moment. Une autre chose que les mathématiques intégrées à Python peuvent faire, c'est qu'elles peuvent faire PEMDAS. Si vous n'avez jamais entendu parler de PEMDAS, "Please Excuse My Dear Aunt Sally" (Veuillez excuser ma chère tante Sally). Parenthèses, Exposants, Multiplication, Division, Addition, Soustraction. Vous l'avez peut-être eu différemment dans votre expérience éducative, mais cela le fera pour vous. Donc, si vous faites 50 plus 50 moins 50 fois 50 divisé par 50, cela vous donnera la réponse. Je ne connais pas ce calcul mental sur le pouce. Une autre chose que nous pouvons faire sont les exposants. Nous pouvons donc imprimer, disons, 50 à la puissance deux, ce qui est la même chose que 50 fois 50, ce qui serait également 2500. Et nous pouvons obtenir des exposants à partir de cela. Et nous allons en fait enregistrer cela et l'exécuter ici, car la prochaine étape que je veux pouvoir exposer clairement. Vous pouvez voir que nous avons réussi à faire les mathématiques ici et que cela l'a fait pour nous. Génial. Et cela a également fait l'exposant pour nous. Donc, maintenant, quelques choses étranges avec la division. Vous avez vu le 1.0 auparavant. Eh bien, nous avons quelques choses que nous pouvons faire. Par exemple, 50 divisé par 6, mais en utilisant un signe de pourcentage, c'est ce qu'on appelle un modulo, et cela prend juste ce qui reste. Donc, 50 divisé par 6 n'est pas divisible, il y a un reste. Donc, si nous imprimons cela, vous verrez que nous obtenons un reste de deux, ce qui est logique car 6 va dans 58 fois. 6 fois 8 font 48, et il nous reste 2. Donc, si nous voulons savoir quel est le reste, nous pouvons utiliser un signe de pourcentage ici. Nous pouvons également faire quelque chose comme 50 divisé par 6, comme nous l'avons vu précédemment, et cela aura une division avec reste. Nous pouvons donc dire "or or float". Nous allons enregistrer cela et y jeter un coup d'œil rapide. Vous pouvez voir que nous obtenons 8.3, puis il arrondit éventuellement à quatre. Et enfin, que se passe-t-il si nous voulions pas de reste ? Donc, si nous faisions juste 50 divisé par 6, nous disons "no remainder", nous pourrions faire cela et nous devrions obtenir huit ici. Donc, selon la situation et ce que nous voulons, nous pourrions vouloir une situation où nous voulons seulement l'entier, ou nous pourrions seulement vouloir ce qui reste, ou peut-être que nous voulons réellement le nombre entier de ce qui est divisé. Il existe donc plusieurs façons de diviser avec les mathématiques en Python, et il est bon de toutes les connaître en fonction de la situation que vous rencontrez. Pour l'instant, prenez juste des notes là-dessus et sachez qu'il existe plusieurs façons de faire des mathématiques et de la division, et vous pouvez faire PEMDAS et des exposants et toutes sortes de choses amusantes, et ce n'est que la surface des mathématiques avec Python. C'est donc tout pour cette leçon. Nous allons passer à la suivante, qui commencera à couvrir les variables et les méthodes. Je vais donc venir ici et j'appellerai juste cette section "variables and methods". Et si nous voulons rendre notre script un peu plus propre, nous pouvons juste venir ici et copier cette nouvelle ligne. Ce sera beaucoup plus facile une fois que nous aurons écrit une fonction pour cela, mais nous n'en sommes pas encore là. Nous allons donc imprimer cette nouvelle ligne, et ainsi lorsque nous imprimerons cela, vous verrez que nous avons des sortes de sauts entre les sections sur lesquelles nous travaillons. Nous allons donc maintenant travailler sur les variables et les méthodes. Donc, variables. Variable signifie que quelque chose peut varier, cela peut changer, et nous allons regarder cela ici dans une seconde. Donc, si nous avons quelque chose comme "quote" et que nous faisons "quote" égal à "All is fair in Love and War" (Tout est juste dans l'amour et la guerre), et c'est ce que c'est, une chaîne de caractères. Nous stockons la chaîne de caractères dans cette variable appelée "quote", et nous pouvons juste venir ici maintenant. Nous pouvons imprimer "whoa". Et si nous le faisons, nous devrions obtenir ceci en retour. Vous pouvez voir "All is fair in Love and War". Si nous n'avions pas imprimé cela, allons-y, en fait, nous allons juste commenter cela. C'est un excellent moyen de tester le script. Si nous enregistrons cela maintenant avec un commentaire et que nous appuyons sur Entrée, il n'y a rien ici. Nous ne lui avons donné aucune instruction pour l'imprimer réellement. Nous pouvons donc maintenant l'imprimer, et il imprime tout ce qui est stocké dans cette variable. Dans ce cas, nous avons une chaîne de caractères stockée là-dedans. Maintenant, quand nous parlons de méthodes, les méthodes ne sont que des fonctions disponibles pour un objet donné. Vous pouvez penser aux fonctions comme quelque chose intégré à Python qui nous permet de faire quelque chose, et cela aura du sens ici lorsque nous utiliserons des méthodes. Donc, nous avons cette citation "All is fair in Love and War". Eh bien, que se passe-t-il si nous voulions l'imprimer de quelques manières différentes ? Eh bien, nous pouvons utiliser des méthodes pour le faire. Par exemple, nous pouvons imprimer "quote" en majuscules et juste faire "upper" comme ça, et cela le rendra tout en majuscules parce que nous lui donnons ce point "upper" puis des parenthèses ouvertes et fermées ici, et cela nous permet d'utiliser cette méthode. Nous pouvons donc dire "uppercase" et nous pouvons également imprimer en minuscules. Si nous faisons "lower", et juste pour une de plus, nous pouvons également faire "print" et nous dirons "quote.title". Et c'est ce qu'on appelle la casse de titre, et la casse de titre capitalisera chaque lettre comme c'est le titre. Dans ce cas, nous obtiendrons comme le "a" capitalisé, ce qui ne serait pas vraiment vrai dans un titre, mais sachez quand même que la casse de titre est destinée à capitaliser chaque première lettre de votre chaîne de caractères ou de votre phrase. Dans ce cas, nous appellerons cela "lowercase" ici. Ok, alors enregistrons cela et nous allons l'imprimer, et vous pouvez voir les différences que nous avons. Nous l'avons ici dans sa citation normale, puis nous l'avons en majuscules, tout en minuscules, puis chaque première lettre capitalisée. Parfait. Ce sont des méthodes. Ce ne sont qu'un petit exemple de méthodes. Nous en aborderons davantage un peu plus tard. Voici un autre exemple. Que se passe-t-il si nous voulions imprimer la longueur de "quote" ? Disons que nous voulions savoir combien de caractères il y avait dans cette phrase. Cela comptera les caractères et cela comptera également les espaces. Nous essayons donc d'obtenir un compte total de ce qui se passe dans cette chaîne de caractères. Nous l'imprimons, vous verrez que nous obtenons 28 en retour. Donc, si vous voulez vérifier cela, vous pouvez compter chaque caractère ici et vous obtiendrez la longueur de cela, et cela pourrait devenir important lorsque vous ferez du Python plus tard. Et c'est juste un autre exemple de méthode. Revenons maintenant à l'examen des variables et à la raison pour laquelle elles sont appelées variables. Disons donc que nous avons une variable de "name" (nom) et dans ce cas, je vais utiliser mon nom et je vais en faire une chaîne de caractères. Et je vais utiliser mon âge. J'ai 33 ans. Et ici, nous allons dire "string" juste pour que nous puissions nous assurer que nous notons les différences. Ceci est un INT ou un entier. Et nous allons également donner un GPA. Disons que je suis allé à l'école. Je vais utiliser le système de notation américain. Disons que j'ai eu un GPA de 3.7. Et c'est ce qu'on appelle un flottant, et cela a un décimal. Assurez-vous donc de le noter. Si nous imprimons cela, si nous imprimons l'entier de l'âge, cela imprimera toujours 33. Que se passe-t-il si nous imprimons l'entier de 30.1 ? Enregistrons cela, jetons un coup d'œil, et vous verrez que nous obtenons juste 30. D'accord. Et vous pouvez voir que cela a encore arrondi vers le bas. Entier, juste le premier nombre, juste ce qui est à gauche du point décimal. Il ne se soucie pas de la droite. Que se passe-t-il si nous imprimons l'entier de 30.9 ? Va-t-il arrondir ? Va-t-il arrondir ? Non. Donc, si nous enregistrons cela et que nous imprimons à nouveau, vous verrez que c'est toujours 30. Il ne se soucie pas de ce qui est à droite du nombre. Il ne prend que ce qui est l'entier. Donc, chaque fois que vous imprimez un entier, vous n'obtenez que le premier, ou ce qui est à gauche du point décimal. Assurez-vous donc de le savoir. Maintenant, quelques choses cool que nous pouvons faire. Disons que nous voulions imprimer quelque chose comme ceci. Si nous imprimons "my name is" avec un espace, puis nous ferons un plus "name", et nous dirons à nouveau un espace, et "I am" espace "age" plus espace "years old". Assurez-vous d'avoir vos espaces correctement là-dedans, de sorte que vous puissiez tenir compte des espaces avant et après ces variables. Mais qu'est-ce que nous faisons ici ? Nous concaténons des variables. Maintenant, si j'essaie de faire cela, j'obtiendrai une erreur. Si je l'exécute, nous obtenons une erreur de type. Et c'est un excellent exemple, d'ailleurs, de comprendre ce que Python vous dit. Je reçois des e-mails tout le temps d'étudiants qui disent : "Je ne comprends pas pourquoi mon script ne fonctionne pas." Et la première chose que je leur demanderai, c'est : "Avez-vous lu la sortie de l'erreur ?" Parce qu'elle vous le dit. Elle dit : "Hé, à la ligne 44", par contrôle tabulation, regardez, c'est la ligne 44, elle vous dit où est votre erreur. Et elle dit aussi : "Il ne concatène que des chaînes de caractères, pas des entiers avec des chaînes de caractères." Donc, si vous ne saviez pas ce que cela signifiait, et peut-être que vous ne le savez pas, vous pouvez copier cela, aller sur Google et le rechercher, et je vous promets que quelqu'un aura eu cette erreur auparavant, autant que nous aimerions être spéciaux. Il n'y a pas beaucoup de situations qui se présenteront où cette erreur ou un problème que nous rencontrons n'aura pas déjà été rencontré par quelqu'un d'autre. Donc, avec cela à l'esprit, nous pouvons corriger cela. Il dit donc qu'il ne peut concaténer que des chaînes de caractères, pas des entiers. Eh bien, "name" est une chaîne de caractères, mais "age" est un entier. Nous devons donc, dans cette situation, faire de "age" une chaîne de caractères. Ce que nous allons faire, c'est juste dire "Str" comme ceci et le donner comme ça. Et maintenant, si nous imprimons cela, enregistrons-le, imprimons-le, vous pouvez voir "my name is Heath and I am 33 years old". Parfait. Maintenant, que se passe-t-il si j'ai un an de plus ? Eh bien, je pourrais prendre "age" et faire quelque chose comme "+= 1", quelque chose comme ça. Et si j'imprime "age" maintenant, j'espère que nous voyons 34. Vous pouvez voir 34. Maintenant, c'est là que cela intervient. C'est une variable. Les variables peuvent changer. À ce stade du script, nous avons défini que j'ai 33 ans, et au fur et à mesure que nous parcourons, j'ai toujours 33 ans lorsque j'imprime cette instruction. Cependant, j'ai eu un anniversaire. Maintenant, "age" a augmenté de un. Imprimer "age" maintenant dira que j'ai 34 ans. Donc, les variables peuvent changer. Les variables peuvent stocker différents nombres à différents moments. C'est pourquoi elles sont appelées variables, parce qu'elles varient. Nous pourrions également faire quelque chose comme "birthday" et définir "birthday" égal à un. Et je pourrais dire "age += birthday". Et puis imprimer "days". Et devinez quoi ? Maintenant, cela retournera 35. Sachez donc que vous pouvez stocker un nombre dans une variable. Nous l'avons déjà montré. Nous pouvons ajouter deux entiers ensemble et nous pouvons les imprimer. Nous ajoutons donc ceux-ci ensemble, et cela prend ce total et l'ajoute à "age", et maintenant cela dit que nous avons 35 ans. C'est donc tout pour cette leçon. Nous allons passer à la suivante, qui couvrira les fonctions et corrigera ce problème de nouvelle ligne que nous avons eu, plus écrire des choses assez cool et construire d'autres fonctions cool également. Je vous retrouverai donc dans la prochaine leçon.

Bien. Passons aux fonctions. Imprimons donc une nouvelle ligne très rapidement, et nous appellerons cela "functions". J'aime penser aux fonctions comme des mini-programmes. Ce sont des blocs de code organisés que vous définissez, puis vous pouvez les appeler plus tard au lieu de taper le code à plusieurs reprises. Nous allons donc examiner quelques exemples de cela. Écrivons donc une fonction. Faisons "def", et c'est ainsi que nous commençons une fonction. Et dans celle-ci, je vais dire "who am I" et je vais faire des parenthèses fermées. Et ici, nous allons dire "this is a function without parameters" (c'est une fonction sans paramètres) et nous en parlerons ici dans un petit moment. L'indentation est incroyablement importante en Python. Si nous n'indenteons pas, nous allons générer une erreur ici, et vous verrez beaucoup de situations où l'indentation devient incroyablement importante. C'est l'une des choses les plus importantes en Python. Python n'a pas beaucoup de règles qui s'appliquent à lui, mais l'indentation en est une que vous devez suivre. Nous allons donc appuyer sur la tabulation pour indenter, et je vais dire "my name is Heath" (mon nom est Heath) et c'est ce qu'on appelle une variable locale. Nous en parlerons ici aussi dans un instant. "age" est égal à 30. Et nous allons faire "print", la même chose que nous avons faite auparavant. Nous pouvons en fait juste copier ceci ici. Nous dirons "my name is" juste comme ça. Ok, copions tout cela, collons-le, puis ajoutons la parenthèse fermée ici. Je vous laisserai rattraper votre retard, puis nous pourrons simplement appeler ici "who am I". Alors, que se passe-t-il ici ? Eh bien, nous avons une fonction que nous définissons, nous l'appelons "who am I" et elle n'a pas de paramètres. Nous allons aborder les paramètres ici dans un petit moment. Maintenant, nous lui donnons quelques éléments. Dans ce cas, ce que nous faisons, c'est que nous lui donnons des variables locales. Nous disons : "Hé, dans ce cas, lorsque nous avons une variable de nom, ce sera Heath, et l'âge sera 30." Eh bien, tout ce qui est stocké ici n'est stocké qu'à l'intérieur de la fonction, c'est pourquoi c'est une variable locale. Si nous imprimons également "age", nous le verrons. Donc, nous savons que "age" était 35. Nous avons appelé "age" ici, c'est 30. Et voyons ce qui se passe. Tout d'abord, nous avons appelé notre fonction ici. Nous avons dit "who am I", nous l'avons appelée, et tout ce qu'elle fait, c'est exécuter notre mini-programme. Notre mini-programme dit : "Hé, je vais imprimer ces variables dans cette chaîne de caractères ici." Ok, et c'est exactement ce qu'elle a fait. Mais lorsque nous avons imprimé "age" à nouveau, vous pouvez voir que nous sommes en fait toujours à 35. Donc, cette variable, ou les variables qui sont à l'intérieur d'une fonction, sont locales et ne s'appliquent pas en dehors de la fonction. Assurez-vous donc de vous en souvenir. Ok, je vais supprimer cette instruction "print", nous n'en avons pas besoin, et nous allons écrire d'autres fonctions. Faisons donc une où nous ajoutons des paramètres. Nous allons donc faire "add 100" et nous allons lui donner un paramètre de "num" (nombre). Et cela va juste représenter le nombre. Ok, nous allons indenter, assurez-vous d'indenter, et tout ce que nous allons faire, c'est imprimer "num + 100". Donc, lorsque nous appelons notre fonction, nous disons "add 100", juste comme la dernière fois. Cette fois, nous devons en fait lui donner ce qu'on appelle un argument. Donc, notre argument va avec notre paramètre ici lorsque nous l'appelons. Donc, notre argument sera cent, et lorsque nous imprimerons cela, cela fera 200, espérons-le. Nous allons donc enregistrer cela, l'exécuter. Vous pouvez voir que nous avons obtenu 200 parce que nous faisons "print 100 + 100". C'est tout ce que nous faisons, ce mini-programme. Ok, essayons un autre. Disons que nous voulons avoir plusieurs paramètres. Faisons "def add" et nous allons juste ajouter "x" et "y". Celle-ci sera facile. Nous allons juste dire "print x + y". Et maintenant, nous pouvons ajouter tout ce que nous voulons. Ajoutons donc sept et sept. Et un prendra la place de "x", l'autre prendra la place de "y". "x + y". 7 plus 7 devrait faire 14. Exécutons cela. Vous verrez que nous obtenons 14 ici. Magnifique. Ok, rendons cela un peu plus compliqué. Ok, essayons d'ajouter ici une autre fonction. Cette fois, nous allons faire "multiply". Nous allons faire "x" et "y" à nouveau, et au lieu de faire un "print", je veux vous montrer quelque chose d'un peu différent. Disons que nous retournons juste "x * y". Et maintenant, dans ce cas, si nous multiplions 7 par 7, obtenons-nous 49 ? Non. Il y a une raison à cela. Ceci est juste un rappel. Lorsque cela dit "return", cela ne dit pas "print". Rappelez-vous, cela dit "print". Cela va retourner "x * y". Donc, nous pouvons appeler cette fonction ici, et elle sait que cette fonction est égale à 49, et peut-être que nous pouvons la mettre dans autre chose, comme nous pourrions la mettre peut-être dans une variable ou quoi que ce soit que nous pourrions vouloir en faire. Cependant, si nous voulions retourner à l'écran, nous devons en fait l'appeler. Donc, parfois, nous allons en fait stocker quelque chose au lieu de l'imprimer. Nous faisons beaucoup d'impressions dans les tutoriels Python juste pour que vous puissiez le voir à l'écran et vous assurer que vous voyez ce que vous faites et que tout s'imprime correctement. C'est donc pourquoi nous faisons cela, mais veuillez comprendre que l'option "return" existe et est utilisée assez fréquemment. Je vais donc enregistrer cela et l'exécuter. Vous pouvez voir maintenant que nous obtenons 49. Parfait. Ok, deux de plus. Disons que nous voulons faire une racine carrée. Ok, alors définissons "square root" et nous allons lui donner un seul paramètre. Et dans ce cas, nous allons imprimer la racine carrée. Nous allons donc prendre "x" et une racine carrée au format exponentiel, c'est juste à la puissance 0.5. C'est tout ce que nous faisons. Et nous pouvons tester cette théorie en faisant quelque chose comme "square root of 64", ce qui devrait retourner 8, car 8 fois 8 font 64. Donc, si nous enregistrons cela, venons ici, imprimons-le, et vous pouvez voir que nous obtenons un flottant de 8.0. Maintenant, je vous ai dit que nous allions créer notre propre fonction pour une nouvelle ligne, et nous allons faire exactement cela. Créons donc "define new line" et nous pourrions l'appeler comme "new line" si nous le voulions ou quoi que ce soit, mais je pense que pour simplifier, tant que nous comprenons ce que c'est, nous pouvons faire des commentaires et des notes ici si nous le voulions. Nous pourrions juste dire "defined NL" et ensuite nous pouvons juste dire que lorsque nous faisons cela, nous allons juste imprimer notre "n" pour notre nouvelle ligne, puis nous appelons une nouvelle ligne, nous en obtiendrons une très simple. Nous pouvons donc même dire ici "new line". Ok, donc maintenant nous savons, et nous enregistrons cela et nous pouvons l'imprimer. Vous le verrez, il est là, mais nous n'avons vraiment rien après pour le montrer vraiment, mais nous avons cet espace là. C'est donc tout pour cette leçon. Je vous retrouverai dans la prochaine.

Ensuite, nous allons apprendre les expressions booléennes ainsi que les opérateurs relationnels et booléens. Alors, allons-y et tapons ici "Boolean expressions". Et quand nous pensons à ceux-ci, nous pouvons juste penser que c'est vrai ou faux. C'est vraiment ce que c'est. Alors, à partir d'ici, faisons quelques variables. Nous pourrions donc définir "bool one" égal à "true". Nous allons juste dire : "Hé, cette variable est vraie." "Bool two", nous pourrions la définir comme "trois fois trois est égal à neuf". Donc, le double égal signifie que quelque chose est égal à quelque chose. Nous avons trois fois trois, c'est neuf. Égal égal, cela signifie que c'est égal à neuf. Ne confondez pas cela avec la configuration de votre variable. Ceci dit : "Hé, ma variable est égale à ceci", mais ceci dit : "Ceci est égal à ce nombre." Et c'est une déclaration vraie. Nous pourrions également dire "Bool three" et la rendre "false", ou nous pouvons lui donner une déclaration qui la rend fausse. Quelque chose comme "trois fois trois n'est pas égal à neuf". Le point d'exclamation égal signifie "n'est pas égal à neuf". Maintenant, si nous l'imprimons, "bull one", "bull two", "bull three", "ample four", juste comme ça, et enregistrons-le, et si nous venons ici, vous verrez qu'il dit "true", "true", "false", "false". Encore une fois, les expressions booléennes sont quelque chose de vrai, quelque chose de faux. Pourquoi devons-nous savoir cela ? Eh bien, nous devons savoir si quelque chose est vrai, alors nous pourrions vouloir continuer, ou si quelque chose est faux, nous pourrions vouloir faire quelque chose. Et nous aborderons cela lorsque nous aborderons les instructions conditionnelles comme "si quelque chose est vrai, alors fais ceci. Si quelque chose est faux, fais ceci." Ou il y a quelque chose appelé "while loops" (boucles while) qui nous permettront de continuer tant que quelque chose est vrai. Nous y arriverons lorsque nous aborderons les instructions conditionnelles également, ou les boucles, je devrais dire, et nous en parlerons. Mais c'est pourquoi nous pourrions vouloir savoir ces choses, entre autres. Nous pourrions vouloir savoir si quelque chose est vrai, ou définir ce paramètre ou cette variable sur vrai jusqu'à ce qu'elle devienne fausse, etc., etc. Donc, pour l'instant, comprenez juste que les expressions booléennes sont vraies ou fausses. Et nous allons venir ici et nous allons imprimer, et nous allons dire "type" et nous allons faire "bull one". Et cela nous dira maintenant. C'est une bonne chose. Donc, si nous venons ici et disons "type", cela nous donnera la classe. Cette classe est "Boolean". Génial. Et un autre exemple de cela est si nous disons comme "rule five" est égal à "true" et que nous imprimons le type. Donc, si vous voyez "true" et que vous vous dites : "Je me demande ce que c'est ? Est-ce un booléen, ou est-ce en fait juste une chaîne de caractères ?" Nous venons ici et disons "pull five". Enregistrons cela, enregistrons cela là, et ensuite vous devriez voir que cette classe est en fait une chaîne de caractères. Vous pouvez donc vérifier avec le type pour voir ce que c'est. Ok, donc la fonctionnalité "type" est très agréable, et nous pouvons voir que nous avons affaire à un booléen ici, et celui-ci est en fait une chaîne de caractères. Veuillez donc noter que si vous le mettez entre guillemets, cela en fait une chaîne de caractères. Si vous le laissez comme ça, cela en fait une expression booléenne.

Allons-y et créons une nouvelle ligne, et nous allons parler des opérateurs relationnels et booléens. Ok, nous pouvons penser à cela comme, faisons une variable ici. Nous disons "greater than" (supérieur à). Disons "sept est supérieur à cinq". Eh bien, ce serait vrai. Et nous utilisons un opérateur ici. Donc, l'opérateur est le signe supérieur à. Nous utilisons également une expression booléenne, car elle va résulter en un retour vrai si nous devions l'imprimer. Maintenant, nous pouvons faire quelques autres choses. Nous pouvons dire comme "less than" (inférieur à). "cinq est inférieur à sept". Nous pouvons faire "greater than or equal to" (supérieur ou égal à), ce qui serait "sept est supérieur ou égal à sept". C'est vrai. Nous pouvons également faire "less than or equal to" (inférieur ou égal à), et dans ce cas, nous pouvons faire "sept est inférieur ou égal à sept", ce qui est également vrai. Donc, toutes ces déclarations ici sont vraies. Maintenant, nous pouvons entrer dans d'autres types d'opérateurs et de déclarations ici. Que se passe-t-il si nous faisons "and" (et) ? Alors, appelons cela "test" et nous allons faire "test" et nous disons "sept est supérieur à cinq". Eh bien, c'est vrai. Et "cinq est inférieur à sept". C'est aussi vrai. Les deux déclarations sont vraies, donc ceci est vrai. Faisons une autre "test and two". Et pour certains étudiants, cela prend un peu de temps pour s'y habituer. Je vais vous fournir un tableau ici dans une seconde, mais suivez simplement et je vais vous expliquer cela au fur et à mesure. Disons que nous avons "sept est supérieur à cinq" et "cinq est supérieur à sept". Allons-y, corrigeons la syntaxe. "cinq est supérieur à sept". Ceci devient maintenant faux. Pourquoi ? Eh bien, "sept est supérieur à cinq" et "cinq est supérieur à sept", ce n'est pas vrai. Donc, parce que ce n'est pas vrai, parce que toutes les déclarations ne sont pas vraies, cela devient faux. Il y a une alternative à cela. Que se passe-t-il si nous avions un "or" (ou) ? Nous disons "or". Donc, "sept est supérieur à cinq" ou "cinq est inférieur à sept". Eh bien, les deux déclarations sont vraies, donc ceci est vrai. Mais nous pouvons avoir la même situation qu'auparavant, où nous avons "sept est supérieur à cinq" ou "cinq est supérieur à sept", et devinez quoi ? Cette déclaration est en fait vraie, car tout ce dont nous avons besoin, c'est qu'une seule condition soit vraie pour que cela soit vrai. Donc, dans cette situation, c'est vrai. Ou si ceci est vrai, alors l'ensemble devient vrai. Donc, juste parce que ceci est faux, ceci devrait également être faux pour que cela soit faux. J'espère que cela a du sens. Une autre chose ici, avant que je vous montre le petit tableau cool, c'est que nous pourrions faire "test not". Donc, si nous disions que quelque chose n'était pas vrai, devinez quoi ? Cela devient faux. Même chose, si nous disions que c'était "not false", alors c'est vrai. "Not true" dans cette situation est faux. Maintenant, si nous allons sur Internet et que nous allons sur Google, nous pouvons venir ici et nous pouvons juste rechercher quelque chose comme "python truth table". Et si nous allons dans les images, nous devrions pouvoir en trouver une qui nous convienne assez bien. Voici un bon exemple ici. Donc, si vous suivez un cours de codage, vous pourriez être interrogé à ce sujet. Cela vous montrera les tables de vérité ici. Donc, si ce n'est pas faux, c'est vrai. Ce n'est pas vrai, c'est faux. Nous pouvons regarder les déclarations "or". Donc, vrai ou faux est vrai. La seule situation où une déclaration "or" devient fausse est lorsque les deux sont fausses. Maintenant, le "and". Nous avons regardé cela. Si c'est vrai et faux, c'est faux. Si c'est faux et vrai, ou faux et faux, c'est toujours faux. La seule situation pour "and" où cela peut être vrai est lorsque les deux sont vrais. Il y a aussi "not or", "not and", et il y a "does not equal" ou "equals". Il est donc bon de connaître ces types de tables de vérité, et vous pouvez simplement rechercher "python truth table" et venir regarder cela. C'est assez simple une fois que vous avez pris le coup de main, mais il est tout à fait normal pour l'instant que ce soit déroutant. Je voulais juste que vous sachiez que ces choses existent et sont disponibles au cas où vous seriez un peu confus par cette leçon. Nous allons donc passer à la leçon suivante, qui couvrira les instructions conditionnelles.

Ok, nous allons venir ici, nous allons faire une nouvelle ligne et nous allons juste dire "conditional statements". Et nous pouvons penser à cela comme "if then" (si alors), ou "if then else" (si alors sinon), ou "if else" (si sinon). Peu importe comment vous voulez l'écrire, c'est bien. Alors, pensez à ceci : si vous allez au magasin et que vous voulez acheter une boisson, et que cette boisson coûte deux dollars. Si vous avez deux dollars ou plus, vous pouvez acheter la boisson. Si vous n'avez pas deux dollars, vous ne pourrez pas acheter la boisson. Alors, regardons cela. Alors, si nous écrivons une fonction et que nous l'appelons "def drink", et que nous lui donnons un paramètre de "money" (argent). Nous venons ici et disons "if money is greater than or equal to two". Alors nous allons retourner. Regardez l'indentation à nouveau. Nous avons besoin d'une indentation ici après notre fonction, et nous avons besoin d'une indentation après notre instruction "if". Assurez-vous donc d'indenter correctement. Retournez "you got yourself a drink" (vous avez eu une boisson). Et ici, nous revenons, nous pouvons dire "else". Nous allons retourner "no drink for you" (pas de boisson pour vous). Un peu comme Seinfeld, "No soup for you!" (Pas de soupe pour vous !). Ok, alors si nous venons ici et que nous imprimons "drink of three" (boisson de trois), ce qui signifie que nous avions trois dollars à l'époque, et que nous imprimons "drink of one" (boisson de un), ce qui signifie que nous avions un dollar à l'époque, nous aurons deux résultats différents. Si nous avons deux dollars ou plus, nous retournerons "you got yourself a drink". Sinon, si nous avons moins de deux dollars, nous dirons "no drink for you". Enregistrons cela. "you got yourself a drink" lorsque nous imprimons trois dollars parce que nous avions assez d'argent ici. Vous pouvez voir qu'avec un dollar, nous n'avions pas assez d'argent, donc "no drink for us". Ok, regardons un exemple un peu plus compliqué. Nous allons venir ici, nous allons dire "define". Maintenant, je vais en faire des boissons alcoolisées. Si vous ne buvez pas, ce n'est pas grave, vous pouvez juste suivre quand même. Vous pouvez le transformer en ce que vous voulez. Je pense que c'est un bon exemple parce que nous avons quelques paramètres et nous pouvons les utiliser pour faire différentes sortes d'instructions conditionnelles. Alors, définissons "alcohol". Maintenant, aux États-Unis, nous avons deux choses dont nous avons besoin pour acheter de l'alcool. Premièrement, nous devons être assez âgés. Deuxièmement, nous devons avoir assez d'argent. Similaire à la boisson précédente qui était non alcoolisée, nous supposons. Nous devons en fait être assez âgés pour acheter la boisson. Aux États-Unis, vous devez avoir 21 ans. Donc, si notre âge est supérieur ou égal à 21. J'ai mis un espace ici, par ailleurs, désolé. Et regardez, le "and" (et) entre en jeu. "money is greater than or equal to five". Alors nous allons retourner "we're getting a drink" (nous allons prendre un verre). Maintenant, nous allons dire "else if" (sinon si), car il y a quelques situations dans lesquelles nous pouvons être. Il y a en fait quatre situations ici. Nous allons donc dire "e-l-i-f", ce qui signifie "else if". Que se passe-t-il si notre âge est supérieur ou égal à 21 et que nous n'avons pas assez d'argent ? Donc, nous disons "money is less than five". Eh bien, dans cette situation, nous allons retourner "come back with more money" (reviens avec plus d'argent). Et puis, que se passe-t-il si nous avons une autre situation où nous disons "age is less than 21" (l'âge est inférieur à 21) et que nous avons de l'argent ? Nous sommes juste une personne mineure qui essaie d'acheter une boisson, et nous disons cinq dollars. Eh bien, nous allons retourner "nice try kid" (bien essayé, gamin). Et enfin, si nous n'avons pas d'argent et que nous ne sommes pas assez âgés, eh bien, alors nous pouvons juste retourner quelque chose comme "you're too young and too poor" (tu es trop jeune et trop pauvre). Yay. Et puis, essayons cela. Nous avons ces différentes situations ici. Encore une fois, si nous avons notre âge et notre argent, nous remplissons les deux critères, nous allons prendre un verre. Sinon, si nous remplissons l'âge mais pas l'argent, revenons avec plus d'argent. Nous ne remplissons pas l'âge mais nous avons l'argent, bien essayé gamin. Et enfin, si vous n'avez pas l'argent et que vous n'êtes pas assez âgé, vous serez trop jeune et trop pauvre. Nous allons donc imprimer quelques instructions différentes de cette fonction. Nous allons donc lui donner 21 et 5. Nous imprimerons "alcohol" à nouveau de 21 et 4. Amis. "alcohol" de 20 et 5. Et ceux-ci devraient tous répondre à des critères différents. "alcohol" de 20 et 4. Nous devrions donc nous attendre à obtenir ceux-ci dans l'ordre. Nous remplissons ce dont nous avons besoin ici. Nous ne remplissons pas. Nous ne remplissons pas. Nous ne remplissons pas. Critères différents pour chacun d'eux. Nous allons enregistrer cela, exécuter cela, et vous pouvez voir qu'il dit "no drink for you". En fait, c'est le dernier. Nous allons prendre un verre. Reviens avec plus d'argent. Bien essayé, gamin. Et tu es trop jeune et trop pauvre. Vous pouvez donc voir que nous pouvons créer des instructions conditionnelles basées sur tout ce que nous commençons à assembler ici. Nous avons maintenant utilisé une fonction, nous avons utilisé plusieurs paramètres, nous avons utilisé l'instruction conditionnelle, nous avons utilisé des opérateurs relationnels. Ok, nous avons le booléen, n'est-ce pas ? C'est vrai et vrai, nous retournons quelque chose. C'est vrai et vrai dans cette situation, puis nous allons retourner quelque chose d'autre. Nous avons donc des situations différentes qui peuvent revenir. Nous devons donc répondre à ces critères, et nous commençons à l'utiliser. Regardez, nous utilisons le "return" au lieu de la fonctionnalité "print". Il y a un tas de choses différentes que nous faisons ici qui commencent à se lier, et j'espère que c'est...

Il commence à avoir du sens pourquoi nous faisons les choses, nous commençons à construire dessus et cela commence à devenir un peu plus amusant, donc à partir d'ici, nous allons continuer et passer aux listes et continuer notre voyage dans Python, donc je vous verrai dans la prochaine leçon. Passons aux listes, alors allons-y et faisons notre nouvelle ligne et nous l'appellerons listes et la meilleure façon de penser aux listes, à mon avis, est qu'elles ont des crochets, quelque chose comme ça. Maintenant, les listes sont des structures de données, elles sont modifiables, nous pouvons les réorganiser, elles sont essentiellement juste un groupe d'éléments. Maintenant, tout ce qui se trouve dans une liste est appelé un élément et comme je l'ai mentionné, la meilleure façon de penser aux listes est qu'elles ont des crochets, tout comme une chaîne de caractères peut avoir des guillemets autour d'elle, les listes auront des crochets autour d'elles. Maintenant, encore une fois, nous devons nous souvenir qu'elles sont modifiables. Nous parlerons de quelque chose ici dans un petit moment qui n'est pas modifiable, qui s'appelle le Tuple. Maintenant, ici, allons-y et déclarons une liste, nous allons dire films et je vais juste énumérer quelques films que j'aime et nous pouvons faire un crochet et je peux dire "Quand Harry a rencontré Sally", nous allons juste les donner comme chaînes de caractères. J'aime "Very Bad Trip" et j'aime "Le Monde de Charlie". Maintenant, vous pouvez ajouter ce que vous voulez ici et mon "Very Bad Trip" ici, au fait, que j'ai "Very Bad Trip" ici, mon "Very Bad Trip" sur la ligne ici est juste parce que mon bloc-notes ici n'est pas assez large. Si je le rendais plus large, il continuerait en fait. Donc, ne confondez pas cela, si j'appuie sur Entrée, vous verrez qu'il passe à 148, donc mon retour à la ligne ne signifie pas que je suis passé à une nouvelle ligne. Et enfin, nous dirons juste "L'Exorciste" et nous fermerons la liste avec un crochet fermant. Donc, si je voulais imprimer le premier film de la liste, je voulais imprimer "Quand Harry a rencontré Sally", je viens ici et j'imprime films et je voulais dire un. Pensons-nous que cela imprimerait le premier élément de la liste ? Allons-y et sauvegardons, imprimons et vous verrez qu'il imprime en fait "Very Bad Trip". Alors, qu'est-ce que je fais ici ? Je fais appel à un index et notre index commence en fait par le numéro zéro. Donc, quand nous regardons un index, nous devons le considérer comme 0, 1, 2, 3. Comptez toujours en commençant par zéro, pas par un, sinon vous pouvez retourner les mauvais numéros et cela peut devenir très déroutant. Assurons-nous d'ajouter non à cela. Retourne le deuxième élément de la liste. D'accord, nous regardons le deuxième élément avec l'index un. Si nous imprimions par exemple films et que nous lui donnions zéro, alors nous verrions que cela retournera le premier élément de la liste. D'accord, nous sauvegarderons cela, regardons rapidement. Vous pouvez voir que le premier élément est "Quand Harry a rencontré Sally" et c'est exactement ce que nous obtenons en retour, ce qui est ce que nous voulons.

Maintenant, regardons quelques astuces pour découper un index ou des indices. Nous pouvons dire quelque chose comme imprimer films et si nous imprimions films de un à trois, que se passerait-il ici ? Eh bien, ce qui va se passer, c'est qu'il va retourner le premier élément donné. Donc, ce sera l'index numéro un, qui est l'élément deux. Donc, d'abord, je devrais dire le premier index donné, jusqu'au dernier numéro donné. Il n'inclura pas le dernier numéro. Eh bien, disons même, mais n'incluez pas le dernier numéro. Donc, non, c'est beaucoup. Il vient de l'imprimer. Regardons. Donc, de un à trois imprimera "Very Bad Trip" en commençant par un et "Le Monde de Charlie" qui est deux. Il n'imprimera pas trois. D'accord, alors assurez-vous de comprendre, si vous allez de un à trois, vous n'inclurez que deux éléments, trois éléments. Maintenant, vous pouvez aussi aller de un à quatre, ce qui imprimerait tout cela. Si vous vouliez imprimer tout depuis le début d'un numéro, disons que nous voulions imprimer films un et que nous voulions aller jusqu'à la fin, nous pourrions simplement faire quelque chose comme ceci. Donc, vous pouvez commencer à partir d'un certain point dans l'index. Imprimez "Very Bad Trip" par rapport à "Le Monde de Charlie", "L'Exorciste" et nous sautons "Quand Harry a rencontré Sally" parce que nous ne commençons pas à zéro. D'accord, nous pourrions aussi faire l'inverse de cela, films, et rappelez-vous, si nous allons à un, il n'inclura pas un, il n'inclura que le premier élément ici, tout ce qui précède. Donc, "Quand Harry a rencontré Sally", tout jusqu'à ce point est une autre façon de le penser. D'accord, donc si nous voulions imprimer deux éléments, nous devrions en fait ajouter un deuxième ou mettre le numéro deux ici et cela inclurait "Very Bad Trip", c'est ce que nous voulions faire.

Maintenant, une autre chose que nous pouvons faire, c'est si nous voulions imprimer le tout dernier élément, nous pourrions faire un films moins un et vous n'avez pas besoin de tout mémoriser tout de suite, surtout si vous ne travaillez pas avec des listes, mais si vous travaillez un jour avec des listes, vous devez extraire des éléments spécifiques de la liste. Cela devient très important, il est donc important de savoir que les index ou les indices existent, vous commencez à zéro, puis vous avancez, puis la façon dont vous pouvez les découper dépend de la façon dont vous les appelez. Maintenant, cela retournera le dernier élément de la liste. Nous sauvegardons cela, regardons. Vous verrez qu'il retournera "L'Exorciste" ici. Maintenant, nous pouvons appliquer des méthodes aux listes, tout comme imprimer la longueur des films. Nous imprimerons le compte des éléments de la liste, n'est-ce pas ? Et la liste, et nous sauvegarderons cela. Regardons rapidement. Je n'ai jamais fermé ça, désolé. Donc, vous pouvez voir qu'il vous indique vos erreurs et même moi je fais des erreurs. Venez ici, essayez encore. Vous pouvez voir que nous avons quatre éléments dans notre liste. D'accord, et c'est vrai, nous avons quatre éléments dans la liste. Nous pouvons aussi ajouter à la liste, donc nous pouvons utiliser quelque chose comme films.append. Nous ajouterons aux listes et si nous voulions ajouter le film "Les Dents de la Mer", nous pourrions le faire et si nous imprimions films, vous verrez que cela s'ajoute à la fin de la liste. Allons-y et sauvegardons cela et vous verrez maintenant que "Les Dents de la Mer" est ici à la fin.

Maintenant, nous pourrions aussi insérer un film dans la liste, donc si nous faisions films.insert et que nous voulions le mettre à un endroit spécifique, disons que nous voulons le mettre à l'index deux, nous pourrions dire deux, puis nous pourrions lui donner un film, "Hustle", le film que j'ai regardé récemment et que j'ai vraiment aimé, et nous pouvons venir ici et imprimer films. Maintenant, nous sauvegardons cela. Vous pouvez voir que nous pouvons en fait insérer "Hustle" ici dans la position deux sur l'index, donc assez sympa. Maintenant, nous pouvons aussi supprimer des films. Nous avons fait films.pop. Venez ici et cela supprimera le dernier élément. Donc, si nous venons ici, ajoutons une instruction d'impression très rapidement, sauvegardons cela, puis imprimons cela, vous verrez que "Les Dents de la Mer" a maintenant disparu. Nous pouvons aussi spécifier des endroits spécifiques que nous voulons supprimer. Donc, si nous voulons supprimer l'index 0, nous pourrions le faire, puis cela supprimera le premier élément. Imprimez films, sauvegardez, allez-y et "Quand Harry a rencontré Sally" a maintenant disparu de notre liste. Nous pouvons aussi combiner deux listes. Donc, si nous venons ici et disons que ma femme a des films préférés et qu'elle en a vraiment, et nous allons juste avec quelques-uns de ses films préférés, elle aime "Amour et autres drogues" et elle aime aussi "50 premiers rendez-vous". Venez ici et fermez cela. Eh bien, nous pouvons combiner des films. Disons que nous voulions connaître nos films préférés. Ce que nous pouvons faire, c'est combiner des listes, je devrais dire. Venez ici et je pourrais dire que je veux ajouter films plus films d'Amber et je peux imprimer nos films préférés, et alors j'ai maintenant combiné des listes. Allons-y et regardons cela, j'espère que je l'ai bien fait et vous pouvez voir maintenant "Very Bad Trip", "Hustle", "Le Monde de Charlie", "L'Exorciste", "Amour et autres drogues", "50 premiers rendez-vous". Vous pourriez aussi simplement venir ici si vous avez copié cela, au fait, et simplement coller cela, vous n'avez pas à le mettre dans une variable, vous pourriez totalement faire ça, mais je pense que stocker dans des variables est une meilleure pratique, donc je vais juste faire Ctrl Z ici. Et une chose de plus, donc nous pouvons aussi avoir ce qu'on appelle des listes 2D, donc des listes bidimensionnelles. Donc, disons par exemple que nous avons des notes et que nous avons une liste de notes et nous allons dire qu'à l'intérieur de cette liste, nous avons Bob et sa note est de 82. Et puis nous avons Alice et elle a 90. D'accord, et puis nous avons Jeff, il ne va pas très bien, Jeff a 73. D'accord, et disons que nous voulions extraire la note de Bob, nous pourrions créer une variable comme "note de Bob" et nous pourrions la définir sur notes, puis faire quelque chose comme zéro un comme ceci. Et qu'est-ce que nous faisons ici ? Eh bien, nous disons que je veux extraire du premier index, d'accord, index un ou zéro, le premier index 0, 1, 2. Donc, j'extrais de zéro et à l'intérieur, je veux extraire le deuxième élément, qui est ce zéro un. Donc, nous avons un index bidimensionnel ici, et si nous allions imprimer la note de Bob, vous pouvez voir maintenant que nous sauvegardons cela, nous obtenons 82. Eh bien, c'est correct. Et si nous avons gâché la note de Bob et que nous voulions la corriger ? Eh bien, nous pourrions aussi faire quelque chose comme notes 0 1, juste comme nous avons appelé, et nous pourrions simplement la définir sur 83, peut-être que ce n'était pas 83. D'accord, nous venons ici et nous imprimons notes, vous devriez voir que cela a changé. Alors, allons-y et imprimons cela. Vous pouvez voir maintenant que Bob a 83. Donc, nous pouvons aussi modifier nos listes 2D.

C'est donc tout pour les listes. Rappelez-vous, les listes ont des crochets, les listes sont des structures de données, nous pouvons changer les listes, comme vous l'avez vu, nous avons pu ajouter, supprimer, insérer, supprimer. Nous pouvons modifier de nombreuses façons différentes. Nous allons passer ici dans un instant à ce qu'on appelle des tuples, et les tuples ne peuvent pas être changés, même s'ils ressemblent beaucoup à des listes, ils sont différents. Donc, je vais vous voir dans la prochaine leçon quand nous couvrirons les tuples.

D'accord, parlons des tuples très rapidement, puis nous passerons à autre chose. Donc, faisons une nouvelle ligne, disons tuples, et ce sont comme des listes, mais elles ne changent pas. Nous dirons ne changent pas, et puis elles obtiennent des parenthèses au lieu d'obtenir des crochets. Donc, nous pourrions vouloir avoir quelque chose qui ne change pas, et quand quelque chose ne peut pas changer, nous disons qu'ils ne sont pas mutables, m-u-t-a-b-l-e, ils ne sont pas mutables. Donc, cela signifie qu'ils sont immuables et que les tuples sont immuables, ce qui signifie que nous ne pouvons pas les changer. Donc, nous pensons à liste, liste mutable, tuples non mutables ou immuables. Donc, si nous avons un tuple de notes, nous pouvons dire quelque chose comme notes sont égales à A, B, C. C'est le système de notation américain, D et F. Venez ici. Si nous faisions quelque chose comme notes.pop, comme nous l'avons vu auparavant, ou notes.append, quelque chose comme ça, aucune de ces deux options ne fonctionnera, ou aucune de ces deux options ne fonctionnera, je devrais dire, en anglais correct. Ce qui va se passer, c'est qu'ils ne sont pas mutables, nous ne pouvons pas les changer. Une fois que nous avons cela et que nous le stockons, cela ne change pas. Donc, si nous voulons quelque chose qui est comme une liste, mais que nous ne voulons pas qu'il change, il vaut mieux utiliser un tuple. Nous pouvons mettre quelque chose en pierre, comme nos lettres de notation, puis nous pouvons les appeler quand nous en avons besoin. Nous pouvons simplement dire quelque chose comme imprimer notes et lui donner un un et sauvegarder cela, et nous devrions obtenir un B en retour. D'accord, et nous obtenons un B en retour.

C'est donc tout. Sachez simplement la différence entre les tuples et les listes, et que les tuples ne changent pas, mais qu'ils sont très similaires dans leur fonctionnement, et qu'il y a des avantages et des inconvénients à chacun d'eux. Donc, nous allons passer à la leçon suivante, qui sera la boucle.

D'accord, alors venons ici, faisons une nouvelle ligne et nous appellerons cela la boucle. Nous allons parler de deux types différents de boucles. Le premier type de boucle dont nous allons parler est ce qu'on appelle une boucle for, et les boucles for sont de début à fin d'une itération, et voici à quoi ressemble une boucle, et nous allons regarder. Alors, allons-y et prenons une liste. Nous allons dire légumes, et vous pouvez y mettre les légumes que vous voulez. Je vais prendre du concombre, je vais prendre des épinards, puis je prendrai aussi du chou. Et maintenant, ce que nous allons faire, c'est que nous allons venir ici et nous allons écrire une boucle for. Nous allons dire for x, et x peut être n'importe quoi. Vous pouvez dire for veggies, cela peut être n'importe quoi que vous voulez appeler. Dans ce cas, je vais juste l'appeler x, dans légumes. La boucle for x dans cette liste, nous allons l'imprimer. Alors, qu'est-ce que vous pensez que cela va faire ? Tout ce que cela va faire, c'est simplement parcourir les itérations, de début à fin, une itération. Donc, il dira concombre, épinards, chou. Allons-y, essayons. Sauvegardez, imprimez. Concombre, épinards, chou. Tout ce que nous avons fait, c'est parcourir une liste, l'itérer jusqu'à ce que nous atteignions la fin de la liste, puis elle s'est arrêtée. C'est donc une boucle for.

Un autre bon exemple de boucle, si vous voulez y penser, pourrait être d'essayer de pinger une adresse IP, comme 192.168.1.1, ou peut-être avez-vous 1.x. Peut-être qu'il y a toute une série d'adresses IP que vous voulez pinger. Peut-être que c'est de un à 254. D'accord, si vous vouliez pinger toutes celles-là, vous pourriez vouloir faire quelque chose comme une boucle for x dans IP, et où IP est juste égal à comme une séquence comme disons que IP est comme une séquence de un à 254, et ne vous inquiétez pas de cela, je l'écris juste logiquement. Donc, si vous dites IPS 1 à 254, for x in IP, puis vous voulez faire quelque chose, vous pourriez vouloir pinger 192.168.1.x, puis x sera un, puis deux, puis trois, puis quatre. D'accord, vous pourriez donc écrire quelque chose comme ceci pour un sweep de ping. Encore une fois, c'est de début à fin d'une itération, de un à deux cent cinquante-quatre, avec un arrêt à deux cent cinquante-quatre lorsque l'itération est terminée.

Maintenant, un autre exemple de ceci, ou un autre exemple de boucle, est ce que nous appelons une boucle while. Laissez-moi dire boucles while. Celles-ci s'exécutent tant que c'est vrai. Je devrais probablement mettre en majuscules "vrai" pour que cela ait du sens que nous parlons de booléens. Alors, pensons à cette situation. Et si nous définissions i égal à un ? Donc, nous avons une variable i égale à un. Tant que i est inférieur à 10, nous allons imprimer i, puis nous allons dire i plus égal à 1. Alors, que va-t-il se passer ? Eh bien, tant que i est inférieur à 10. Donc, en ce moment, i est égal à 1. 1 est inférieur à 10, c'est vrai. Nous allons imprimer i, augmenter la valeur de i de 1. Donc, la prochaine fois qu'elle boucle, ce sera 2, et elle continuera jusqu'à ce que ce ne soit plus vrai. Donc, si nous sauvegardons cela, cela devrait imprimer de un à neuf, car nous ne cherchons pas 10, juste de un à neuf. Donc, nous allons dire que nous sauvegardons cela, appuyons sur Entrée. Un, deux, trois, quatre, cinq, six, sept, huit, neuf. Et il semble que la boucle a effectivement fait son travail. Encore une fois, nous avons deux types de boucles. Tout ce que nous devons savoir pour l'instant, c'est que nous avons une itération de début à fin, c'est la boucle for. Une petite boucle while s'exécute tant que c'est vrai. Nous pourrions les voir plus tard lorsque nous ferons notre travail de projet, alors gardez-les à l'esprit pendant que nous avançons dans le cours.

À partir d'ici, nous allons passer aux chaînes de caractères avancées. Je vous verrai donc dans la prochaine leçon.

D'accord, regardons quelques chaînes de caractères avancées. Donc, si nous venons ici à nouveau, faisons une nouvelle ligne, allons-y et entrons dans les chaînes de caractères avancées, et créons une variable de mon nom. Je vais dire que mon nom est Heath. Maintenant, disons que nous voulions imprimer mon nom et que nous voulions saisir la première lettre de mon nom. Comment pensez-vous que nous pourrions faire cela ? Eh bien, si vous dites index 0, vous avez absolument raison, et nous pouvons dire ici la première lettre. Qu'en est-il de l'impression de la dernière lettre de mon nom ? Eh bien, si vous dites moins un, vous avez retenu vos leçons d'index, excellent travail. Ce sera la dernière lettre. Nous pouvons sauvegarder cela et nous pouvons aller imprimer. Et si j'en faisais une chaîne de caractères, ce serait très utile. Allons-y et sauvegardons cela. Vous pouvez voir que nous obtenons le H majuscule et le h minuscule ici, car mon nom commence par un h et se termine par un h.

Une autre chose à noter à propos des chaînes de caractères, tout comme les tuples, elles sont également immuables. Vous ne pouvez pas changer une chaîne de caractères. Nous ne pouvons pas modifier la chaîne de caractères. Nous pouvons joindre des chaînes de caractères, nous pouvons diviser des chaînes de caractères, et nous en parlerons ici dans un instant, mais une fois que j'ai défini cette variable et cette chaîne de caractères, cette chaîne de caractères est là pour toujours. Je peux toujours changer la valeur de cette variable, mais vous ne pouvez pas changer cette chaîne de caractères. Donc, encore une fois, les chaînes de caractères sont immuables.

Maintenant, allons-y et disons que nous avons une phrase. Nous lui donnons quelque chose comme ceci est une phrase si je peux taper aujourd'hui. Et nous imprimons la phrase avec quelque chose comme ceci. Qu'est-ce que nous pensons que cela va ressembler ? Sauvegardons cela, imprimons-le. Vous pouvez voir que nous obtenons ceci. Qu'est-ce que nous faisons ? Eh bien, nous saisissons juste ce premier mot. Cependant, nous avons l'avantage de savoir quel est le premier mot et quelle est sa longueur. Donc, nous sommes allés 0, 1, 2, 3. Rappelez-vous, nous nous sommes arrêtés à quatre. Donc, nous avons saisi le mot "ceci". Eh bien, et si nous étions dans une situation où nous ne savions pas quel était le mot ou quelle était la longueur du premier mot ? Nous pourrions utiliser quelque chose comme un délimiteur. Donc, nous pourrions dire imprimer, nous pourrions faire phrase.split. Et si nous faisons un.split, nous pouvons simplement le faire comme ceci, et alors c'est un délimiteur, et un délimiteur dit que nous allons prendre quelque chose et nous allons diviser en fonction de cela. Maintenant, le délimiteur par défaut en Python, si nous lui donnons juste un split, est un espace. Si nous sauvegardons cela, venons ici. Ceci est une phrase. Maintenant, regardez-la. C'est dans une liste. Nous pourrions extraire le premier élément si nous le voulions et connaître le premier mot au lieu d'avoir à le diviser comme ceci ou à l'extraire comme ça. Donc, nous pourrions aussi faire quelque chose comme ceci. Ceci est juste une preuve de concept, c'est un peu amusant. Nous allons phrase.split et nous disons que c'est égal à phrase.split. D'accord, et puis nous créons également une autre variable, nous appelons cela phrase.join, et nous disons que c'est égal à un espace. Nous lui donnons un délimiteur pour joindre. En fait, nous lui disons quoi ajouter entre les différents mots que nous extrayons. Donc, nous ajoutons un espace ici, et nous allons dire join phrase.split comme ceci. Et si nous imprimons phrase.join, qu'est-ce que vous pensez qu'il va réellement se passer ici ? Sauvegardons-le. Devinez quoi ? Ceci est une phrase. Donc, tout ce que nous avons fait, c'est déconstruire cette phrase en fonction du délimiteur, elle est sortie comme ceci est une phrase, puis nous l'avons rejointe avec un espace. Donc, chacun d'eux a eu un espace entre eux, et c'est tout. Donc, c'est juste une façon astucieuse de vous montrer que diviser et joindre est possible, et encore une fois, c'est toujours immuable, même si nous jouons avec les chaînes de caractères, les chaînes de caractères sont immuables.

Regardons quelques autres choses ici. J'ai mentionné au début de la première leçon, lorsque nous parlions initialement des chaînes de caractères, que nous pourrions avoir différentes façons d'utiliser des guillemets simples et doubles. Et pensez à cela comme à ce qui se passerait si nous avions une situation de guillemets et que nous voulions dire quelque chose comme "Il a dit : Donne-moi tout ton argent". Eh bien, dans cette situation, que allons-nous faire ? Et si nous voulions ajouter des guillemets ici et dire "Donne-moi tout ton argent" ? Nous le faisons parce que c'est un guillemet. Eh bien, il semble que ce soit un peu gâché. Nous ne le voyons pas en vert. Ça a l'air un peu bizarre. Ce que nous pouvons faire dans cette situation, c'est utiliser des guillemets simples si nous le voulions, ou nous pourrions inverser cela, au fait, nous pourrions utiliser des guillemets simples à l'extérieur, puis des guillemets doubles à l'intérieur si nous voulions utiliser des guillemets doubles ici, et je pourrais sauvegarder cela. Alors, imprimons guillemets juste pour vous montrer, puis nous pouvons sauvegarder cela.

Une autre chose que nous pouvons faire, cependant, c'est que nous pouvons dire quelque chose comme guillemets, puis nous pouvons simplement faire "Il a dit" et nous pouvons faire de l'échappement de caractères. Donc, nous pouvons faire "Donne-moi tout ton argent" comme ceci. Et maintenant Python sait que tout ce qui se trouve à l'intérieur de ces caractères échappés est ignoré. Il ignore ce guillemet double ici et ignore ce guillemet double ici. Donc, nous échappons cela, puis nous pouvons l'imprimer et espérons que nous avons fait cela correctement. Allons-y et imprimons. Vous pouvez voir maintenant qu'il dit "Il a dit : Donne-moi tout ton argent" entre guillemets doubles, alors que nous avons également utilisé des guillemets doubles à l'extérieur. Donc, nous pouvons utiliser l'échappement de caractères si nous voulons. Sachez simplement que nous devrons utiliser cette barre oblique inverse devant chacun des caractères que nous voulons échapper.

D'accord, prenons quelques exemples supplémentaires ici. Donc, si nous disons quelque chose comme une variable de trop d'espace, que se passe-t-il dans la situation où nous avons comme vous pouvez simplement ajouter autant d'espace que vous voulez ici, cela n'a pas vraiment d'importance. Nous avons une chaîne de caractères avec beaucoup d'espace là-dedans. Eh bien, nous pouvons la supprimer. Nous pouvons imprimer trop d'espace, puis nous pouvons faire un.strip. Et le strip va prendre le délimiteur d'un espace par défaut, et cela va aussi supprimer cela. Vous pouvez voir qu'il n'y a que "bonjour" là, rien d'autre. C'est donc plutôt sympa.

Quelques éléments de plus. Et si nous avons la lettre a et que nous avons le mot pomme ? D'accord, eh bien, et si nous voulions savoir quelque chose comme ceci ? Revenons un peu en arrière et disons que nous voulions savoir comme imprimer a et pomme. D'accord, qu'est-ce que cela va retourner ? Allons-y, et si je pouvais taper, désolé. Et cela va retourner quelque chose. Allons-y et sauvegardons cela. Cela va retourner vrai. Donc, nous dirons juste vrai. Maintenant, si nous imprimons a dans pomme, vous verrez que cela va retourner faux. Sauvegardons cela. Pourquoi ? Eh bien, ceci ici est un a minuscule et cela n'existe pas avec une pomme. Donc, même si nous cherchons une lettre spécifique dans un mot, nous devons faire correspondre la sensibilité à la casse pour que cela retourne vrai. Donc, si nous voulions savoir si la lettre a était dans le mot pomme et que nous ne nous souciions pas de la sensibilité à la casse, alors que faisons-nous dans cette situation ? Eh bien, cela soulève quelque chose que nous avons fait un peu plus tôt, qui est d'utiliser la casse inférieure. Rappelez-vous la méthode de casse inférieure. Nous pouvons dire imprimer, puis nous pouvons venir ici et dire lettre.lower. Vous pourriez aussi faire upper si vous le vouliez, mais ce que nous faisons, c'est que nous convertissons tout cela en casse inférieure. Donc, ce ne sera pas un a en casse inférieure, et alors nous pourrions dire dans mot.lower, et nous pouvons simplement dire que c'est une façon améliorée de faire cela. Donc, si nous imprimons cela, nous sauvegardons cela, cela devrait revenir comme vrai.

Alors, pensez à quand vous essayez de faire correspondre un mot ou une chaîne de caractères ou quoi que ce soit, et si quelqu'un venait et que nous attendions comme, je ne sais pas, pensez à l'école et nous pensons à un mot, peut-être comme Manhattan, je ne sais pas, et quelqu'un tape Manhattan comme ceci. D'accord, nous voulons toujours pouvoir accepter cette réponse comme vraie, même s'ils ont peut-être fait une petite erreur sur la ponctuation. Maintenant, il pourrait y avoir des cas où nous voulons une lettre majuscule et qu'elle doit être très spécifique. Dans ce cas, ce type de syntaxe fonctionne, mais si nous cherchons simplement à accepter une réponse comme Manhattan pour Manhattan, alors nous pourrions envisager d'utiliser la casse inférieure ou supérieure dans cette situation juste pour faire correspondre ces mots ou lettres ou quoi que ce soit.

Alors, encore une chose. Regardons ce qu'on appelle le formatage de chaînes de caractères. Donc, si nous faisons quelque chose comme film, nous prendrons à nouveau "Very Bad Trip". Nous disons "Very Bad Trip". Vous pouvez choisir n'importe quel film ici. Il y a plusieurs façons de l'imprimer. Rappelez-vous, nous avons concaténé plus tôt et nous avons dit comme imprimer, nous avons fait quelque chose comme mon film préféré [Musique] est un espace plus, vous savez, film, quelque chose comme ça, n'est-ce pas ? Eh bien, nous pouvons en fait écrire cela d'une certaine manière qui est un peu plus facile. Il y a donc quelques choses que nous pouvons faire. Par exemple, nous pouvons faire mon film préféré est, ajouter quelques crochets ici comme ça, puis nous pouvons ajouter un point à la fin juste parce que nous allons fermer notre phrase. Nous dirons .format et nous dirons film et fermerons cela. C'est une façon de le faire. Si nous sauvegardons cela, c'est mon film préféré est "Very Bad Trip". D'accord, c'est ce qu'on appelle utiliser la méthode de format de chaîne de caractères.

Maintenant, ce que nous pouvons faire, il y a un autre type de méthode que nous pouvons utiliser, c'est que nous pouvons dire imprimer mon film préféré est pourcentage s et nous disons pourcentage, juste comme ça. Sauvegardons cela. Ceci utilise le formatage en pourcentage, et regardez, la même chose se produit. J'ai juste oublié mon point là-dedans, donc pas de gros problème. Enfin, si nous imprimons un F devant, c'est ce qu'on appelle une chaîne F ou ce qu'on appelle une chaîne littérale. Nous pouvons dire mon film préféré est, puis simplement faire un film comme ceci, super facile. Et nous sommes passés de l'utilisation de la méthode format et de la méthode pourcentage à cette chaîne F ou chaîne littérale. Laissez-moi venir ici. Nous sauvegardons cela, montons, imprimons, et vous pouvez voir mon film préféré est "Very Bad Trip". Cela a parfaitement fonctionné. Eh bien, vous pouvez utiliser n'importe laquelle de ces méthodes pour formater, mais sachez simplement que les chaînes F sont la dernière et la meilleure façon de le faire en Python 3.

C'est donc tout pour cette leçon. Nous allons passer aux dictionnaires.

D'accord, nous allons donc ajouter de nouvelles lignes ici et nous dirons dictionnaires, et nous pourrions les considérer comme des paires clé-valeur, et pensez aussi à ceux-ci avec les accolades comme ceci. Nous avons donc vu des listes comme ça, nous avons vu des tuples, maintenant nous pouvons penser aux dictionnaires avec les accolades. Alors, allons-y et nous allons mettre des boissons, et encore une fois, je vais utiliser des boissons alcoolisées. Vous n'êtes pas obligé de le faire, vous pouvez utiliser les boissons et les prix que vous voulez, mais nous allons avoir une paire clé-valeur. Donc, notre clé sera la boisson. Donc, la première boisson que je vais prendre est un White Russian, et la valeur sera sept. Disons qu'un White Russian coûte sept dollars. Si nous faisons un Old Fashioned, nous allons dire que cela coûte dix dollars, et nous en ferons un de plus, nous ferons un Lemon Drop et nous dirons juste que cela coûte huit dollars. D'accord, et nous pouvons prendre note ici pour nous-mêmes que la boisson est la clé, le prix est la valeur. Rappelez-vous, paires clé-valeur, clé-valeur. D'accord, nous avons donc nos boissons. Nous pouvons imprimer nos boissons. Sauvegardons cela, allons-y, imprimons, et vous pouvez voir que nous imprimons notre dictionnaire ici.

Maintenant, donnons un autre exemple. Disons que nous avons des employés, et cela pourrait être un bon exemple. Donc, nous disons que nous avons des employés, et j'aime vraiment l'émission Bob's Burgers, donc je vais utiliser Bob's Burgers ici comme exemple. Disons que nous avons différents départements. Nous avons le département des finances, et dans le département des finances, nous avons en fait une liste de personnes. Et si nous avons Bob, oops, nous avons Linda et nous avons Tina, toutes en finance. Nous pouvons aussi avoir un autre département. Ayons-le, donc encore une fois, c'est la clé, et la valeur sera cette liste que nous mettons dedans. Donc, Gene, Louise, et nous allons y mettre aussi Teddy, et celui-là. Et faisons-en un de plus, nous ferons RH. Donc, RH, et nous mettrons ici Jimmy Jr, et nous mettrons aussi Mort. Encore une fois, vous pouvez mettre ce que vous voulez ici, et si vous avez besoin de faire une pause, si vous essayez de suivre ligne par ligne, mot pour mot, vous avez besoin de faire une pause et de le taper, n'hésitez pas à le faire. Je vais aller imprimer nos employés juste pour montrer cela, assurez-vous que je tape tout cela correctement, car c'est beaucoup de syntaxe, et nous avons Finance, IT et RH. Il semble que nous ayons fait un excellent travail, génial.

Alors, disons que je voulais ajouter une nouvelle paire clé-valeur. Je pourrais le faire de quelques manières différentes. Nous pouvons faire quelque chose comme employés, et nous pouvons simplement dire quelque chose comme que nous voulons ajouter un département juridique. D'accord, et dans le département juridique, nous n'aurons qu'une seule personne, nous aurons juste M. Frond, il est notre équipe juridique. D'accord, nous allons juste dire qu'il ajoute une nouvelle paire clé-valeur. Sauvegardons cela. En fait, imprimons employés pour que nous puissions réellement vérifier. Sauvegardons, imprimons, et vous pouvez voir que le département juridique ajoute M. Frond. Donc, nous ajoutons à la fin de notre dictionnaire, tout comme nous avons ajouté à la fin de notre liste, tout est ajouté à la fin, sauf si nous spécifions le contraire. Allons-y et venons ici.

Une autre façon de faire cela est que nous pouvons dire quelque chose comme employés.update, et nous pouvons dire quelque chose comme donner un département des ventes, et dans le département des ventes, nous aurons Andy, nous aurons Ollie. Fermons cela. Nous devrons également fermer nos accolades et nous fermerons nos parenthèses. Et si vous avez un bloc-notes décent, il vous montrera où se trouvent vos éléments, de sorte que vous sachiez que vous fermez les choses correctement. Donc, nous avons trois types de syntaxe différents qui se déroulent ici, et parfois cela peut être difficile à lire. Donc, ici, nous pourrions dire qu'il ajoute également une nouvelle paire clé-valeur. Donc, juste une autre façon de le faire. Nous pouvons imprimer employés et nous verrons qu'Andy et Ollie devraient être ajoutés, à condition que nous ayons tout tapé correctement, ce que nous avons fait. Donc, voici les ventes avec Andy et Ollie. D'accord.

Une dernière chose. Disons que nous voulions mettre à jour quelque chose dans notre dictionnaire. Nous allons aller mettre à jour une valeur. Nous allons revenir aux boissons pour cela. Disons que l'inflation s'est produite, ce qui est le cas, et avec l'inflation, le prix d'un White Russian est passé de sept dollars à huit dollars. Nous pouvons faire quelque chose comme ça. Imprimons boissons, et vous devriez voir que, espérons-le, cela a été mis à jour à huit dollars, ce qui était sept auparavant, maintenant c'est huit. Parfait. Nous pouvons aussi en saisir la valeur. Donc, si nous voulions faire quelque chose comme imprimer boissons.get, puis nous faisons White Russian, totalement, faisons quelque chose comme ceci, et sauvegardons, et espérons qu'il retournera huit, et il le fait.

C'est donc tout pour cette leçon. Nous allons passer à un nouveau fichier ici dans la prochaine vidéo. Alors, allons-y et sauvegardons cela et fermons cela, et nous nous préparerons pour la prochaine vidéo. Alors, je vous retrouverai dans la prochaine leçon.

D'accord, je voulais parler de l'importation. Nous allons parler de l'importation de modules. Donc, je voulais faire un nouveau fichier pour cela. Appelons-le simplement mousepad importing.py ou tout ce que vous voulez l'appeler. Et je vais faire l'esperluette ici, et encore une fois, si vous utilisez Windows ou Mac, assurez-vous simplement de créer un nouveau fichier pour cela. Je vais aller ici et ajouter mon shebang comme avant. Je vais déclarer bin Python 3 et sauvegarder cela. Et maintenant, nous allons parler de l'importation. Donc, l'importation, tapons cela, l'importation, et nous dirons que l'importation est importante.

Maintenant, des modules existent en Python qui sont intégrés, mais ne nous sont pas disponibles sans les importer. Donc, comme vous nous avez vu pouvoir faire des mathématiques, mais nous pourrions importer un module de mathématiques plus robuste, puis l'utiliser pour faire des calculs plus avancés en dehors de l'addition, de la soustraction, des exposants, etc. Dans ce cas, nous allons parler de quelques importations différentes que nous pouvons faire, et que vous verrez à nouveau lorsque nous aborderons certaines de nos activités pratiques et que nous construirons des projets. Par exemple, nous pourrions vouloir importer quelque chose appelé sys. Maintenant, disons que si nous essayions d'imprimer sys.version, et nous allons juste sauvegarder cela, puis nous allons aller à python3 importing.py, et vous verrez que j'obtiens une erreur qui dit que sys n'est pas défini, nom sys non défini. D'accord, eh bien, sys est quelque chose que nous allons utiliser assez souvent en Python. Vous le verrez importé assez souvent, et il fait beaucoup d'éléments uniques, comme il fait quelque chose appelé ARG V, par exemple, que nous utiliserons comme exemple plus tard, mais si nous voulons spécifier une quantité d'arguments, disons que nous essayons d'exécuter Python 3, nous allons faire un scanner de ports plus tard, donc nous dirons simplement portscanner.py, et nous devons fournir une adresse IP ici, n'est-ce pas ? Et c'est l'argument zéro, c'est l'argument un. Donc, si nous fournissons aucun argument un, alors nous allons jeter une erreur. Ce sera une instruction if else, et cela utilisera quelque chose appelé RV. Nous y reviendrons plus tard, mais c'est très important. C'est une partie de sys. Une autre partie de sys est de faire quelque chose comme le type de version de Python que nous utilisons, ou une autre chose est sys.exit, que vous verrez plus tard, qui nous permettra de sortir gracieusement lorsque nous rencontrerons une erreur. Nous disons au script de sortir, ou quoi que ce soit que nous faisons. Donc, nous pourrions avoir besoin d'importer quelque chose comme sys, ou un autre est OS, qui est très courant à importer également.

Alors, parlons de l'importation. Pour importer, nous pouvons dire quelque chose comme import sys, juste comme ça, et nous pouvons simplement dire que c'est pour les fonctions et paramètres système. Sauvegardons cela, et allons-y et imprimons cela maintenant, et voyons ce qui se passe. Vous pouvez voir maintenant que sys a été importé, même s'il n'était pas intégré automatiquement, nous pouvons l'importer, et vous pouvez voir maintenant qu'il nous dit que nous exécutons la version 3.10.5 de Python, et qu'elle a été téléchargée le 8 juin 2022, ou construite le 8 juin 2022.

À partir d'ici, allons-y et importons autre chose. Allons-y et importons datetime, et nous pouvons importer à partir de quelque chose. Donc, je sais que cela va être déroutant, mais nous pouvons importer des spécificités d'un module. Donc, nous importons juste la fonctionnalité datetime de datetime, même si elles sont nommées de la même manière, sachez juste que nous pouvons importer des spécificités. Nous n'avons pas à importer l'intégralité, même si nous pourrions totalement importer l'intégralité aussi. Donc, ici, par exemple, nous pouvons dire print datetime.now, comme ceci, et vous savez ce que cela va faire. Cela vous dira quelle est la date et l'heure. Et je m'excuse, c'est à l'envers. C'est from datetime import datetime. Donc, encore une fois, votre syntaxe vous dira où c'est faux, et il est parfaitement normal de faire des erreurs. Je laisse ces erreurs dans la vidéo pour que vous voyiez que je suis aussi humain et qu'il est complètement normal de faire des erreurs comme celle-ci. Alors, allons-y et faisons votre script maintenant, et vous verrez qu'il donne la date et l'heure. Donc, en ce moment, il est le 6 juillet, et il est deux heures du matin. Je suis un oiseau de nuit.

Maintenant, une autre chose que nous pouvons faire, c'est que nous pouvons venir ici et nous pouvons from datetime import datetime, et nous pouvons aussi lui donner un alias. Nous pouvons dire as DT. Et si nous ne voulons pas écrire datetime en entier, nous faisons juste DT, tout comme nous n'avons pas voulu écrire new line en entier, nous avons fait NL, même concept. Donc, nous pouvons simplement dire importer avec alias, et au lieu de dire datetime.now, nous pourrions simplement dire DT.now. Sauvegardons cela, allons-y et imprimons-le. Vous pouvez voir que cela fonctionne toujours. Donc, absolument la même chose, nous donnons juste un alias, ce qui le rend un peu plus facile à exécuter.

D'accord, c'est donc tout pour cette vidéo. Allons-y et fermons cela, puis je vous retrouverai dans la prochaine vidéo. Nous allons parler de sockets avant de commencer à construire un scanner de ports. Alors, je vous retrouverai dans la prochaine vidéo.

D'accord, alors faisons un nouveau fichier et nous l'appellerons s.py, et encore une fois, créez-le comme vous voulez. Si vous utilisez Linux, vous pouvez suivre comme ceci, ou simplement créer un nouveau fichier sous Linux ou Windows. Encore une fois, nous allons shebang cela ici. Je vais lui donner un bin python 3. Maintenant, c'est incroyablement nécessaire si vous exécutez sous Windows ou Mac, mais c'est juste une bonne pratique pour moi. C'est l'emplacement de mon Python, même si je ne l'appelle pas réellement, je l'appelle avec python3. Donc, ce n'est pas incroyablement pertinent tant que vous utilisez python 3.

Maintenant, nous allons traiter des sockets. Oh, sockets. Maintenant, les sockets sont ce qui peut être utilisé pour connecter deux nœuds ensemble. Donc, nous allons l'utiliser pour nous connecter à des ports et des adresses IP. Si vous n'êtes pas familier avec la mise en réseau informatique, ce n'est pas grave, mais ce que nous recherchons, c'est un port, et nous allons le rechercher sur une adresse IP. Et sur cette adresse IP, si ce port est ouvert, nous allons établir une connexion. Nous allons construire un scanner de ports dans la prochaine vidéo ou plus tard dans la leçon, et vous verrez cela en action. Pour l'instant, je veux juste que vous notiez, compreniez ce que nous faisons, et ensuite je vais démontrer un exemple que vous n'avez pas à suivre, et vous pourriez ne pas être en mesure de suivre, donc ce n'est pas grave, mais sachez que les sockets sont utilisés pour établir une connexion entre des ports et des adresses IP, et vous le verrez ici très bientôt.

Donc, vous ne nommez pas cela, au fait, socket.py. Si pour une raison quelconque vous veniez ici et que vous nommiez cela socket.py, cela cassera Python parce que nous allons importer socket. Donc, assurez-vous de venir ici et de renommer cela si vous l'avez nommé socket.py. C'est très facile à faire, mais cela cassera le socket.py que nous importons ici.

Donc, avec cela, nous allons définir quelques variables. Nous allons dire que l'hôte est égal à 127.0.0.1, et c'est notre adresse de bouclage ou notre adresse d'accueil. Si vous n'êtes pas familier avec la mise en réseau informatique, je vous recommande de suivre un cours sur la mise en réseau informatique, car cela deviendra très important à mesure que vous vous lancerez dans le développement Python, surtout si vous travaillez un jour avec des nœuds de quelque sorte.

Autre chose, les ports. Donc, nous avons des ports sur notre machine auxquels nous pouvons nous connecter. Nous allons utiliser TCP. Si vous ne savez pas ce qu'est TCP ou ce que sont les ports, ce n'est pas grave, vous pouvez toujours suivre, mais sachez qu'il y a 65 535 ports disponibles. Certains ports sont très courants dans ce qu'ils utilisent, comme le port 80, par exemple, est un serveur web sur HTTP. Vous avez 443, qui est HTTPS. 21 est FTP. Il y a beaucoup de ports et de protocoles courants qui existent. Nous allons choisir un port non standard, non courant. Nous allons juste dire 7777. Donc, ce que je vais dire à cela, c'est que je veux lui dire de contacter cet hôte, qui sera juste nous pour cet exemple, et ce port, je veux établir une connexion sur ce port.

Maintenant, je vais donner une variable s, et ce sera une très longue instruction. Donc, si vous dites socket.socket, je vais taper cela et je vais tout expliquer. D'accord, donc socket.AF_INET, puis nous allons dire socket.SOCK_STREAM, et puis juste pour vos notes, AF_INET est IPv4, SOCK_STREAM est un port. Donc, nous lui donnons ce s parce que nous ne voulons pas taper toute cette longue chose tout le temps, nous la raccourcissons juste.

Ce que nous allons faire, c'est que nous allons établir une connexion avec cet AF_INET, qui est une adresse IP IPv4, ce qui est ce que c'est, et nous allons également établir une connexion sur un port, qui est notre SOCK_STREAM. Nous allons lui donner ce port. Donc, nous allons dire que en faisant s.connect, et nous allons venir ici, et ce sera un tuple. Donc, nous allons en fait utiliser des parenthèses doubles ici. Oh, support. D'accord, et nous pourrions venir ici, au fait, et nous pourrions simplement mettre 127.0.0.1 au lieu d'utiliser une variable, mais j'aime utiliser des variables parce que c'est une bonne pratique, mais vous pourriez le coder en dur si vous le vouliez, mais ici j'aime juste utiliser des variables, c'est plus facile à changer, surtout si vous venez ici et que vous écrivez un tas d'appels hôte-port. Donc, la variable est facile à avoir en un seul endroit par opposition à le coder en dur.

D'accord, donc je vais sauvegarder cela. C'est là que je ne m'attends pas à ce que vous suiviez, car vous n'avez peut-être pas l'architecture derrière cela. Comme je l'ai dit au début de cette vidéo, je suis un hacker éthique de métier, ce qui signifie que cette version de Cali que j'ai exécutée sur elle, cette version de Linux que j'ai exécutée sur elle, est en fait Cali Linux, et dans Cali Linux, nous avons un tas d'outils disponibles pour les tests d'intrusion et le piratage éthique. L'un de ces outils est un outil appelé netcat. Maintenant, netcat est NC, et fondamentalement, ce qu'il fait, c'est nous permettre de nous connecter à des ports ouverts ou d'établir un écouteur sur un port ouvert.

Donc, ce que je vais faire, c'est en fait, je vais ouvrir un nouvel onglet ici, agrandir cela, puis je vais l'exécuter ici. Comprenez juste, si vous n'avez jamais utilisé netcat auparavant, c'est bien. J'ouvre juste un écouteur sur un port, c'est tout. Souciez-vous juste du L et du P pour l'instant. Écoutez sur le port 7777. Quiconque établit une connexion sur ce port, nous écoutons. Donc, nous allons nous connecter à nous-mêmes, car nous avons écrit le script pour 127.0.0.1, qui est nous, et tout ce que nous allons faire, c'est python3 s.py. Appuyez sur Entrée. Rien ne va se passer. Nous n'avons pas d'instructions d'impression, rien de fou, mais vous pouvez voir qu'une connexion a été établie de 127.0.0.1 à 127.0.0.1, et elle a établi une connexion sur ce port, et nous nous sommes connectés de l'autre côté sur cet autre port ici, ce qui ne vous inquiétez pas trop si vous n'êtes pas familier avec le réseau, c'est absolument bien, mais il doit y en avoir deux, ou il est connecté, un d'un côté, un de l'autre. Donc, ici, nous avons établi cette connexion. Nous ne lui avons rien dit d'autre. Nous avons juste dit, hé, allez écouter cette connexion. Nous avons établi une connexion, nous l'avons établie, nous avons fait notre travail, nous avons utilisé notre socket, et nous sommes bons. Ici, nous avons fermé la connexion parce qu'il n'y avait rien, aucune instruction donnée ou quoi que ce soit d'autre, et c'est tout ce dont nous avions besoin.

Donc, ce que nous allons faire maintenant, c'est que nous allons, dans la prochaine vidéo, construire ce que j'appelle un scanner de ports terrible, et nous parlerons de pourquoi il est terrible, mais nous allons lier tout ce que nous avons appris jusqu'à présent et construire quelque chose qui est réellement utilisable avec Python. Donc, je vous ai donné toutes ces leçons et ces termes et tout le reste. Maintenant, nous allons appliquer cela. Vous allez voir comment nous pouvons utiliser tout cela ensemble, et je suis très enthousiaste. Alors, je vous retrouverai dans la prochaine leçon lorsque nous commencerons à construire un scanner de ports.

Il est temps de créer notre premier projet, et ce projet sera de construire un scanner de ports terrible. Alors, allons-y et créons un nouveau fichier. Je vais l'appeler scanner.py. Donnez-lui l'esperluette ici si vous êtes sous Linux, puis nous allons.

Je vais juste appeler cela en python3, enregistrez-le, obtenez les jolies couleurs et ce que nous allons faire, c'est que nous allons créer un scanner qui va ressembler à ceci, nous allons taper python3 scanner.pi et ensuite nous allons dire adresse IP, nous voulons fournir une adresse IP et ensuite il va sortir et faire du scan de ports sur l'adresse IP, donc j'espère que nous pourrons construire cela, pour l'instant, allons-y et importons quelques choses, je devrais dire quelques choses, nous allons importer CIS, parlé de CIS, je vais importer socket, parlé de socket et de datetime, nous allons importer datetime, donc rien de tout cela ne devrait être nouveau pour vous, donc la première chose que nous devrons faire est de définir notre cible, nous devons configurer une instruction if, je vais juste dire définir notre cible et ce que je veux dire, c'est si la longueur de CIS ARG V et je vais expliquer cela dans une seconde est égale à 2, alors nous allons définir une variable cible, cible sera égale à socket.gethostbyname et nous allons dire sys.ARGV1 et tout cela va faire est de traduire le nom d'hôte en ipv4, d'accord, laissez-moi faire les instructions else, je vais revenir, je vais tout expliquer, d'accord, donc si nous faisons else, nous allons imprimer une quantité d'arguments invalide et imprimer également la syntaxe python3 scanner.pi adresse IP quelque chose comme ça, d'accord, fermons cela, d'accord, donc nous prenons une méthode de longueur et nous disons sys.ARGV, nous avons parlé un peu de argb dans la section d'importation, rv sera la quantité d'arguments que nous donnons, donc quand nous arrivons ici et que nous tapons python3, d'accord, notre premier argument, argument zéro en théorie sera scanner.pi, le deuxième argument ou le deuxième index, index de un sera l'adresse IP que nous donnons, donc 192.168.1.1 ou quoi que ce soit, donc nous avons besoin de deux arguments, si nous avons un troisième argument, cela va casser, si nous n'avons pas de deuxième argument, cela va casser, si nous tapons juste scanner.pi, cela va casser, si nous tapons une adresse IP comme 1.1 et ensuite nous tapons quelque chose ici, cela va casser parce qu'il y a trop d'arguments, donc si cela ne répond pas à cette longueur spécifique, alors ce que nous allons faire est d'imprimer une quantité d'arguments invalide, voici la syntaxe, donnez un peu d'aide à quelqu'un, si cela répond à la longueur, alors ce que nous allons faire est de définir notre cible égale à socket.gethostbyname et tout cela dit est que nous allons obtenir le nom d'hôte de sys.argv1, c'est notre adresse IP, maintenant cela va traduire un nom d'hôte en ipv4, donc dans le cas par exemple si vous faisiez python3scanner.pi et que vous aviez un nom d'hôte comme j'ai un hôte dans ma maison appelé Punisher, comme si je le donnais à Punisher et que mon DNS savait en interne que cela se traduisait par une adresse IP spécifique dans mon réseau, c'est bien, cela se traduira, d'accord, assez facile, mais nous pourrions aussi simplement lui donner une adresse IP, donc c'est ce que nous recherchons ici, je recommande vivement pour cet exemple d'utiliser une adresse IP, dans les leçons précédentes quand j'ai enseigné cela auparavant, quelqu'un a essayé de taper un nom d'hôte et cela ne se passe pas toujours comme prévu, bien que nous parlerons d'ajouter des exceptions d'erreur pour cela ici un peu plus tard, donc pour l'instant, tout ce que nous avons besoin de savoir est que nous essayons de configurer cela avec ces arguments, maintenant ce n'est pas la meilleure logique, c'est quelque chose qui fonctionnera pour nos besoins parce que nous construisons cela, mais si nous construisons cela pour quelqu'un d'autre, cette logique n'est pas géniale et c'est pourquoi j'appelle cela un scanner de ports merdique parce que ce n'est pas le meilleur, nous le faisons uniquement pour la preuve de concept et pour apprendre ce que nous avons appris jusqu'à présent, mais pensez à cela d'une autre manière, pensez si nous exécutons deux arguments, eh bien je pourrais donner à cela un argument, qu'en est-il si je si je viens ici et que je dis python3scanner.pi et que je lui donne le deuxième argument, mais que je lui donne comme 192.168.1.1 ou quelque chose comme ça, eh bien ce n'est pas un nom d'hôte, cela ne se traduira par rien, ce n'est pas non plus vraiment une adresse IP, donc nous devrions vraiment ajouter d'autres instructions ici pour dire hey, cela doit être une adresse IP valide, cela doit être comme avoir quatre octets comme nous nous attendons et si nous voulions vraiment être critiques à ce sujet, nous pouvons nous assurer que c'est une adresse IP valide parce que les adresses IP peuvent servir comme 256. quoi que ce soit, donc nous pourrions dire que cela doit être entre comme vous savez, chaque octet doit être entre 1 et 254 et devenir vraiment affiné avec cela et dire hey, ce n'est pas une adresse IP valide, donc nous ne allons pas scanner cela, mais nous n'avons pas à nous en soucier pour l'instant, je dis juste la logique derrière cela, nous devons commencer à penser à comment un utilisateur peut casser cela, nous savons comment l'exécuter, mais si nous donnions cela à quelqu'un d'autre, comment l'exécuteraient-ils et comment pourraient-ils le casser ou comment pourraient-ils taper quelque chose par erreur, donc ce sont des choses à considérer au fur et à mesure, donc pour l'instant, nous avons ajouté cela, nous l'avons ici, nous pourrions tester cela si nous le sauvegardons, nous venons ici et nous disons juste Python 3 scanner.pi, nous ne donnons aucun argument, vous verrez qu'il dit quantité d'arguments invalide, python3scanner.pi est la syntaxe, parfait, ne lui donnez pas d'argument pour l'instant parce que cela va casser si vous n'avez pas de DNS qui se traduit correctement, donc à partir de là, allons-y et ajoutons une jolie bannière, donc ajoutons juste une jolie bannière et tout ce que je vais faire est de faire une commande d'impression et je vais juste faire un tas de tirets, ce ne sera pas vraiment une jolie bannière, mais ce sera toujours une bannière et donc quand cela démarre, si si nous avons une adresse IP valide que nous allons scanner, nous allons juste faire scanner la cible et ensuite nous allons juste faire un espace et vous pourriez juste faire une concaténation ici de + cible, vous pourriez faire une chaîne F si vous voulez, complètement à vous de voir comment vous voulez faire cela, donc nous faisons juste scanner cible + cible, cela dira quelle est l'adresse IP, nous pouvons faire comme scanner cible de cela, quelque chose dans ce genre et ensuite nous pourrions dire imprimer l'heure de début et ensuite nous pouvons lui donner quelque chose comme une chaîne, nous voulons donner + une chaîne de datetime.now, rappelez-vous que nous ne pouvons pas concaténer des nombres et des chaînes, donc nous allons faire cela et ensuite nous allons juste imprimer cela une fois de plus, d'accord, je vais sauvegarder cela, allons-y et essayons de l'exécuter avec comme je ne sais pas, 192.168.1.1, d'accord, donc c'est ce que nous obtenons, nous pouvons voir que nous avons scanner la cible, d'accord, scanner la cible 192.168.1.1, voici l'heure à laquelle elle a commencé, parfait, nous avons une jolie bannière configurée, donc maintenant commençons à la faire faire quelque chose, nous allons utiliser ce qu'on appelle la commande try, nous allons essayer quelque chose et si ça marche, parfait, si ça ne marche pas, nous aurons des exceptions pour cela, donc voici ce que nous allons faire, nous allons dire try ou nous allons faire une boucle for, port dans range, rappelez-vous, nous avons parlé d'une plage plus tôt, nous avons parlé de bien, qu'en est-il d'un 4ip dans la plage de 1 à 254, nous faisons le même concept ici, maintenant nous lui donnons juste une plage, il y a 65 535 ports potentiels, je ne vais pas vous forcer à scanner tous ceux-là, si vous voulez, vous pouvez venir ici et dire 65 535, ce n'est pas threadé, nous ne faisons aucune sorte de speedrun ici, cela pourrait potentiellement être un scanner de ports lent, donc il est préférable à mon avis de faire comme un scan de ports entre 50 et 85, et la raison pour laquelle je fais cela est parce que nous allons scanner ou tenter de scanner notre routeur domestique et généralement le DNS est ouvert dessus et généralement le port 80 est ouvert dessus, donc j'essaie de voir si nous pouvons trouver quelques ports qui pourraient être ouverts, donc pour port dans cette plage, ce que nous allons faire, c'est que nous allons définir notre s égal à ce beau socket.socket socket.af_inet et socket.sock_stream juste comme ça, et ensuite nous allons aussi venir ici et nous allons faire un socket.set_default_timeout à une seconde, donc s'il répond ou ne répond pas dans une seconde, nous allons simplement passer à autre chose, nous ne voulons pas rester bloqués à scanner un port, attendre, attendre, attendre qu'il ne réponde pas, et ensuite le script prend de plus en plus de temps, donc nous voulons juste nous assurer que nous avons défini notre délai d'attente par défaut à une seconde là, et ensuite ce que nous allons faire, c'est que nous allons aller de l'avant et définir une variable résultat, et résultat sera égal à s.connect_ex, et j'expliquerai tout cela dans une seconde, cible, importer, d'accord, donc ce que cela fait ici, en fait, laissez-moi taper le reste, puis nous reviendrons, nous allons dire si le résultat est égal à zéro, nous allons imprimer le port, nous pouvons le faire, il est ouvert, donc maintenant nous pouvons venir ici, nous pouvons faire un format de port si nous voulons, vous pourriez utiliser une chaîne F ici si vous voulez, donc nous pouvons juste utiliser une chaîne F, je vous montre juste des exemples, mais vous pouvez dire port et juste faire un F devant cela, d'accord, port quoi que ce soit est ouvert, et ensuite nous allons fermer la connexion, d'accord, lisons cela, assurons-nous de comprendre ce qui se passe, donc nous allons faire une boucle for pour un port dans la plage de 50 à 85, donc nous allons commencer par 50 et 51, puis 52, parcourons ce processus, nous définissons une variable s égale à cela parce que nous allons collecter l'adresse ipv4 et nous allons collecter le port auquel nous essayons de nous connecter, maintenant notre adresse ipv4 ici est notre tuple, nous disons je veux me connecter sur cible et port, cible sera fournie par nous, nous allons utiliser rb1, donc nous allons fournir l'adresse IP et le port sera cette plage ici, donc pour port dans range, nous déclarons le port ici, maintenant ce s.connect_ex, c'est un indicateur d'erreur, donc si un port est ouvert, le résultat d'erreur renvoie zéro, si un port est fermé, il renvoie un, donc si le résultat est zéro, nous allons dire hey, ce port était ouvert, sinon il va se fermer et nous allons fermer cela, puis nous allons retourner à la boucle et revenir et essayer à nouveau, donc nous allons fermer notre connexion socket sur ce port, revenir, essayer 51, 52, etc., etc., maintenant avant de l'exécuter, il y a quelques exceptions que nous devons considérer, donc la première, nous allons essayer cela, mais nous avons besoin d'exceptions, donc accepter, qu'en est-il si nous avons une interruption clavier, donc nous dirons interruption clavier, et cela signifie juste, qu'en est-il si nous appuyons sur Ctrl C pendant que cela s'exécute, nous pouvons l'arrêter nous-mêmes, donc nous fournissons une exception d'interruption clavier et nous allons dire sortie du programme sur une nouvelle ligne, et ensuite nous allons assister à la sortie, rappelez-vous, j'ai parlé de sysexit et nous allons nous permettre de sortir gracieusement, nous pouvons aussi faire une exception d'une erreur de socket.gaierror, maintenant c'est ce qui se passe quand le nom d'hôte ne se résout pas, donc qu'en est-il si nous disons que le nom d'hôte n'a pas pu être résolu, donc si nous avons tapé un tas de charabia ici, nous disons comme python3 scanner.pi et nous avons juste tapé quelque chose et cela ne se résout pas en une adresse IP, eh bien devinez quoi, cela va lancer une erreur maintenant, et nous pouvons sortir, nous devons couvrir toutes nos bases, enfin, qu'en est-il si nous avons une erreur de socket, donc nous avons une erreur quand nous faisons cela, et nous imprimons hey, nous n'avons pas pu nous connecter au serveur, juste, il n'est tout simplement pas en ligne, qu'en est-il si nous essayons de nous connecter à une adresse IP et qu'elle ne nous répond pas, mais pas se connecter au serveur, donc quelque chose à considérer là, encore une fois, nous allons assister à la sortie, donc allons-y et sauvegardons cela maintenant, vous devrez l'exécuter contre quelque chose, donc je vais vous montrer un exemple du mien, d'accord, donc pour exécuter cela, nous avons besoin d'une adresse IP, maintenant si je tape ifconfig, je suis en fait sur une machine virtuelle en ce moment, donc 192.168.138.140 n'est pas ma vraie adresse IP, je vais en fait ouvrir ma machine Windows sur laquelle je suis, et vous pouvez voir ici que j'ai une passerelle par défaut de 192.168.4.1, donc assurez-vous de connaître votre passerelle ou l'adresse IP de votre routeur ou que vous avez une machine que vous pouvez scanner et que vous savez qu'elle pourrait avoir un port de 53 ou 80 ouvert, ou vous devez modifier votre script pour vous assurer que vous pouvez scanner quelque chose, mais je vais scanner mon 4.1 parce qu'il devrait avoir des choses ouvertes, donc si je fais un Python 3 scanner.pi, je vais venir ici et juste faire un 4.1 et j'appuie sur entrée, cela pourrait prendre du temps, donc ce que je vais faire, c'est que je vais laisser cela ici, en fait, c'est déjà, ça zoome, vous pouvez voir qu'il a trouvé le port 53 assez rapidement, et ensuite cela pourrait prendre du temps pour trouver le port 80 si le port 80 est ouvert, mais fondamentalement, ce qu'il va parcourir, c'est parcourir 450, 51, 52, 53, tout au long du processus et a ce délai d'attente d'une seconde pendant qu'il parcourt et vérifie chacun de ces ports, donc cela devrait prendre jusqu'à une minute pour que cela fonctionne, donc je vais mettre en pause ici, il semble que nous soyons presque terminés, en fait, ou 80 est revenu comme ouvert aussi, pas besoin de mettre en pause, il a terminé pendant que je bavardais, donc vous pouvez voir que je suis revenu et j'ai dit que 453 est ouvert, le port 80 est ouvert, donc notre script a fonctionné, il a fallu une éternité pour scanner ces ports, mais il fonctionne, donc nous avons pu construire, retournons et regardons cela, c'est génial, nous avons pu construire un scanner de ports qui est venu ici et en deux heures, vous avez maintenant les connaissances pour construire un scanner de ports de base, vous ne pensiez pas que vous pourriez faire ça, eh bien vous voilà, regardez-vous, vous êtes génial, d'accord, donc nous avons pu lui donner un argument, nous avons défini notre instruction conditionnelle if, nous avons vérifié la longueur de l'argument était deux valides, sinon nous avons un else ici, nous avons fait une jolie petite bannière, nous avons importé des choses, tout cela a fonctionné, nous avons fait une instruction try qui était en fait une boucle for ici, et nous avions une logique basée sur des conditions qui se produiraient dans cette boucle for, nous avions une boucle for et une instruction if ensemble, nous avons utilisé une chaîne F pour imprimer cela, assez cool, nous sommes passés par là, nous avions aussi des exceptions, par exemple, comme l'interruption clavier, juste pour vous montrer si je viens et que je l'exécute à nouveau, si je voulais arrêter ce scan en plein milieu, je pourrais juste appuyer sur Ctrl C et il dira hey, sortie du programme, et c'est exactement ce que nous lui avons dit de faire, nous pourrions dire ici, il dit sortie du programme, donc c'est l'interruption clavier, la même chose, nous avions des exceptions pour ne pas pouvoir nous connecter ou nous avions le nom d'hôte qui ne pouvait pas se résoudre, nous aurions aussi ces types de choses, donc vous pourriez tester ces erreurs, voir si elles fonctionnent pour vous, mais à part cela, nous avons construit un scanner, donc c'est le projet numéro un, nous allons passer à l'apprentissage d'un peu plus de Python, puis nous allons nous lancer dans plus de travail de projet, donc je vous verrai dans la prochaine vidéo.

Maintenant, nous allons examiner comment accepter les entrées de l'utilisateur dans notre programme et comment nous pouvons manipuler les données avec cette entrée, donc allons-y et créons un nouveau fichier, je vais juste dire mousepad et nous l'appellerons input.pi et je vais le déplacer, nous lui donnerons le shebang puis python3 ici, sauvegardez-le, obtenez les jolies couleurs et pour prendre l'entrée en Python, tout ce que nous avons vraiment à faire est d'utiliser input quelque chose comme ceci, donc nous pourrions dire comme entrez votre nom pour l'entrée comme ceci et mettez un espace et nous devrons le mettre dans une variable, donc si nous venons à l'avant de cela et que nous disons juste name est égal à, nous pourrions faire quelque chose comme ça et ensuite nous pouvons juste imprimer comme bonjour et donner un espace, donner name et ensuite nous ajouterons un point d'exclamation à la fin ou un point à la fin, peu importe et ensuite nous pouvons juste venir ici et sauvegarder cela et si nous l'exécutons, fermons cela, j'ai oublié d'ajouter un ampersand, nous allons le faire rapidement et si nous l'exécutons maintenant, nous disons juste python3 et nous disons input.pi, disons entrez votre nom, je dirai juste Heath et vous pouvez voir qu'il dit bonjour Heath, nous pouvons l'améliorer, nous pouvons dire comme quelle est votre boisson préférée, donc si nous faisons juste une variable et que nous l'appelons drink et que nous faisons input et disons quelle est votre boisson préférée et faisons un point d'interrogation quelque chose comme ça, nous pouvons venir ici et ensuite juste l'améliorer si nous voulons, nous pouvons juste dire avoir un espace + drink moins période, d'accord, et il devrait dire bienvenue Heath, a une et ensuite quelle que soit la boisson que nous y mettons, donc si nous sauvegardons cela, revenons et exécutons-le, d'accord, je vais mettre Heath comme nom et ensuite White Russian est ma boisson préférée et il dit bonjour Heath, a une White Russian, donc nous pouvons facilement accepter l'entrée comme ceci, donc pensons si nous voulions construire une calculatrice, je vais supprimer cela, qu'en est-il si nous voulions prendre l'entrée et faire une mini calculatrice, nous pourrions certainement le faire, donc qu'en est-il si nous avions deux nombres et que nous prenions X et Y, donc si nous disions X est égal à input et nous dirons juste donnez-moi un nombre et ensuite nous ferons quelque chose comme ça et ensuite nous pouvons aussi faire Y et aussi en faire une entrée, donnez-moi encore un nombre, vous mettez ce que vous voulez ici d'ailleurs, et si nous faisons quelque chose comme imprimer X + Y et que nous faisons cela, sauvegardons-le et voyons ce qui se passe ici, donc je vais imprimer cela, nous donnerons un nombre, nous ferons trois et ensuite nous ferons deux et il a donné 32. pourquoi fait-il cela, eh bien ce qu'il fait, c'est qu'il prend cela et nous le donne comme une chaîne, donc nous devons soit faire un entier ici et le mettre dans un INT, soit nous devons le prendre comme un float, donc si nous pensons à cela à partir du passé, si nous voulons seulement prendre des entiers, nous pouvons, mais si quelqu'un mettait comme 8.7 ou un nombre ici et nous le donnait, eh bien nous prendrions seulement le huit et nous laisserions le 0.7, donc je pense que si nous construisons une calculatrice, il est préférable d'utiliser des floats, donc nous pouvons juste venir ici et dire float et nous allons tout mettre entre parenthèses, et ensuite nous allons faire la même chose ici, donc maintenant quand nous venons ici et que nous sauvegardons cela et que nous l'exécutons à nouveau, ce qui devrait se produire, c'est que cela devrait fonctionner correctement, donc si nous faisions comme trois et ensuite 3.2, vous verrez que nous obtenons 6.2, ce qui est correct, c'est génial, eh bien qu'en est-il si nous voulions l'améliorer davantage, nous pourrions en faire une chose situationnelle, qu'en est-il si nous voulions non seulement faire une addition, mais qu'en est-il si nous voulions permettre à l'utilisateur de dire je veux ajouter ou soustraire ou diviser ou multiplier ou peut-être utiliser une exponentielle, nous pourrions le faire, donc qu'en est-il si nous ajoutions une autre variable et que nous l'appelions simplement o pour opérateur et que nous prenions juste cette entrée et que nous disions juste quelque chose comme input, donnez-moi un opérateur, d'accord, et peut-être que nous le mettons au milieu ici, de sorte que nous n'obtenons pas seulement deux nombres, peut-être que nous voulons prendre cela et que nous voulons dire quelque chose comme ceci, de sorte que vous direz donnez-moi votre nombre, donnez-moi un opérateur, puis donnez-moi un autre nombre, et nous imprimerons cela, donc maintenant pensons à comment nous voulons que cela se déroule, si nous voulons que cela fonctionne avec une addition comme nous l'avons déjà, nous pourrions vouloir venir ici et dire juste quelque chose comme si o ou opérateur est égal à un signe plus, eh bien alors nous allons venir et juste imprimer x + y, rappelez-vous que l'indentation est importante ici, sinon si ou L if o est égal à un moins, devinez quoi, nous allons imprimer x - y, et nous pouvons continuer ici, sinon si o est égal à la division, nous allons diviser, puis nous allons aussi multiplier, donc x divisé par y, sinon si o est égal à multiplier, ici nous allons le multiplier, ajoutons une exponentielle pour faire bonne mesure, donc faisons L if o est égal à une exponentielle, c'est donc deux astérisques là, et ensuite nous allons juste imprimer x * y, donc nous avons une mini petite calculatrice ici, et nous devons terminer cela avec une instruction else, donc qu'en est-il si nous prenons une entrée qui n'appartient pas ici, si elle ne correspond pas à l'un de ces opérateurs, alors nous pouvons juste imprimer quelque chose comme opérateur inconnu, d'accord, et période là, sauvegardez cela et cela devrait fonctionner, donc allons-y et donnons-lui un essai, qu'en est-il si nous venons ici, nous disons juste donnez-moi un nombre, nous ferons trois et disons que nous voulons multiplier et nous ferons par trois et nous obtenons un 9, nous pouvons le refaire, nous pouvons essayer quelque chose comme nous ferons euh quatre et cette fois nous ferons une exponentielle, nous ferons quatre, donc quatre à la puissance quatre est 256, donc nous avons tout juste construit une petite calculatrice que nous prenons l'entrée d'un utilisateur et l'utilisons ensuite pour calculer cette expression étant donné ce qui nous est donné par l'utilisateur, maintenant pensons à quelque chose d'autre ici, juste comme une parenthèse, qu'en est-il si quelque chose est écrit différemment, comme quand je pense aux mathématiques avec Python, oui, nous pensons que deux astérisques sont une exponentielle, mais qu'en est-il si nous avions une situation où nous voulions peut-être utiliser la flèche vers le haut ou le symbole de la carotte, qui est la façon dont je l'ai souvent vu utilisé en ligne pour les mathématiques et les exponentielles, eh bien nous pourrions faire quelque chose comme ou o est égal à la flèche vers le haut comme ça, et qu'en est-il si nous sauvegardons cela et que nous l'exécutons maintenant, et si nous donnions un 4 à la flèche vers le haut de 4, devinez quoi, nous obtenons toujours 256, donc nous pouvons utiliser notre instruction comme ça ici, notre et ou ou d'autres opérateurs que nous avons appris en cours, donc commencez à y penser comme ça au fur et à mesure que nous assemblons ces choses, nous commençons à construire de petits projets et nous pouvons utiliser une partie de la logique que nous avons déjà apprise tout au long de ce cours, donc c'est tout pour cette leçon, nous allons passer à la suivante.

D'accord, parlons maintenant de la lecture et de l'écriture de fichiers en utilisant Python, donc allons-y et créons un nouveau fichier, je vais juste dire mousepad et nous allons appeler ce fichier months.txt et ici, allons-y et tapons juste les mois, donc nous ferons janvier, février, mars, avril, si je pouvais taper, mai, juin, juillet, août, septembre, octobre, novembre et décembre, si vous avez besoin de faire une pause et de rattraper, allez-y et faites-le, sauvegardez cela et une fois que vous l'avez sauvegardé, allez-y et fermez le fichier, donc allons-y et créons un nouveau fichier Python, donc appelons-le mousepad et je pense que nous l'appellerons juste read_write.pi, il fera un ampersand ici et pour cela, ce que nous allons faire, c'est que nous allons examiner comment lire et écrire des fichiers, donc la façon dont nous le faisons est avec la commande open, donc nous dirons quelque chose comme open et avec open et en fait, ajoutons le shebang ici très rapidement en python3, sauvegardez-le et avec la commande open, nous pouvons dire quelque chose comme open months.txt et j'ai besoin de l'ajouter ici, donc si nous ouvrons months.txt, ce que nous devons faire avec cela ou ce que nous faisons généralement avec cela, c'est que nous le stockons dans une variable, donc nous pourrions juste appeler cela months = open months.txt et si nous voulons lire ce fichier, nous pouvons venir ici et juste imprimer months et vous verrez ce que cela fait ici dans une seconde, maintenant les meilleures pratiques disent de le fermer aussi, chaque fois que nous l'ouvrons, donc je vais juste ajouter quelques lignes ici parce que nous allons ajouter plus de choses à cela, mais nous pouvons juste faire months.close et nous allons sauvegarder cela, allons-y et exécutons et voyons ce qui se passe ici, donc si nous faisons Python 3 read_write.pi, vous verrez que nous obtenons ces informations en retour, laissez-moi déplacer cela pour que ce soit lisible et ce que cela nous dit, c'est hey, c'est le nom du fichier, nous sommes dans un certain mode, et ce mode est actuellement le mode lecture, et nous obtenons le codage par défaut ici de utf-8, donc nous obtenons des informations en retour, nous ne lisons pas réellement le fichier que nous avons écrit, donc euh, certaines des informations que nous pouvons obtenir d'ailleurs, nous pouvons venir ici et nous pouvons nous dire eh bien, ce fichier est-il lisible, donc nous avons mode = r, et c'est une façon de le vérifier, il y a quelques façons de le vérifier aussi, nous pouvons imprimer month.mode et cela nous dira dans quel mode nous sommes, nous pouvons aussi imprimer months.readable et cela devrait nous donner une déclaration booléenne indiquant si c'est vrai ou faux, donc si nous venons ici et que nous sauvegardons cela et que nous le faisons à nouveau, vous verrez que nous obtenons months, nous l'imprimons, nous obtenons tout le shebang ici et nous obtenons le euh, mode = r, ce qui est lisible, vous pouvez voir si nous imprimons le mode, nous pouvons aussi le voir, c'est lisible, ou si nous faisons months.readable, nous pouvons voir que c'est lisible, donc nous avons la possibilité ici d'imprimer cela et de lire ce fichier, donc comment faisons-nous cela, eh bien, allons-y et supprimons ces deux lignes et nous pouvons juste venir ici et faire month.read, si nous faisons cela, que se passe-t-il ici, sauvegardons-le, imprimons-le et vous pouvez voir qu'il lit toutes les itérations, janvier, tout le chemin jusqu'à décembre, parfait, donc nous venons de lire un fichier et nous avons fermé, cela fonctionne comme prévu, si nous voulions le lire ligne par ligne, nous pourrions, nous pouvons faire months.readline comme ceci et si nous sauvegardons cela et imprimons, nous lirons littéralement une ligne, si nous voulions lire une deuxième ligne, nous pourrions copier cela et nous pourrions coller cela et sauvegarder et venir ici et devinez quoi, nous obtiendrons janvier et février cette fois, donc si nous voulons le lire, nous devons lire ligne par ligne maintenant, si nous voulions lire toutes les lignes en une seule fois, nous pourrions le faire d'une manière différente, nous pourrions le faire avec readlines, et cela imprimera un tableau vide ou une liste ici en fait, et ce que vous verrez, c'est que nous obtenons janvier, une nouvelle ligne, février, une nouvelle ligne, mars, etc., donc nous mettons cela dans une liste, et maintenant si nous essayons de l'exécuter à nouveau, allons-y et faisons une tabulation, nous avons essayé de l'exécuter deux fois, regardez ce qui se passe, je vais imprimer cela et sauvegarder cela, donc nous avons la première liste ici, puis nous avons une deuxième liste ici, la deuxième liste est vide, eh bien c'est parce que nous l'avons déjà lue, donc nous l'avons lue ici en premier, puis elle est vide la prochaine fois que nous essayons de la lire, donc si nous voulions la lire à nouveau, ce que nous devons faire, c'est en fait utiliser ce qu'on appelle la méthode seek, nous pouvons venir ici et dire months.seek, faites zéro comme ça pour revenir à la toute première ligne et imprimer à nouveau, et maintenant vous pouvez voir que nous avons en fait imprimé cela deux fois, donc cela fonctionne bien, nous avons également la possibilité de le mettre dans une boucle for pour lire chaque itération de la ligne, donc si nous voulions faire quelque chose comme pour month dans months, nous pourrions juste imprimer month, d'accord, et cela devrait itérer à travers tout ici, donc sauvegardons cela, imprimons cela et vous pouvez voir que cela imprime en effet à travers tout, nous pouvons aussi ajouter le .strip à la fin de cela, sauvegardons cela, imprimons et vous pouvez voir que nous supprimons toutes les nouvelles lignes qui s'y trouvent, donc vous avez vu que nous avons eu un espacement ici, c'est un peu bizarre, donc si nous venions et que nous ajoutions juste le .strip, cela rend notre boucle for un peu meilleure, donc encore une fois, rappelez-vous ce que nous définissons ici, c'est ce que nous voulons, nous pouvons appeler cela for x in months, en faire un x et c'est la même chose, mais logiquement, c'est juste facile d'appeler cela month in month, puis nous pouvons juste les imprimer, donc nous pouvons itérer à travers cela, donc jusqu'à présent, tout ce que nous avons fait est de pouvoir lire un fichier, qu'en est-il si nous voulons écrire dans un fichier ou ajouter à un fichier, eh bien nous pouvons le faire aussi, donc si nous voulions par exemple ouvrir un fichier, ouvrons un nouveau fichier, faisons quelque chose que nous n'avons pas encore créé, faisons days_of_the_week, donc faisons open days et si nous essayons de faire cela, changeons months en days et nous allons changer days en close et nous allons juste laisser cela ouvert ici, donc nous avons notre meilleure pratique, maintenant si nous essayons de l'exécuter avec un open days.txt, nous ne pourrons pas le faire parce qu'actuellement nous sommes juste en mode lecture, donc nous voulons pouvoir passer et nous mettre en mode écriture, pour ce faire, nous pouvons juste faire un w, si nous voulions vérifier cela, nous pourrions juste faire print days.mode comme nous l'avons vu auparavant, assurez-vous que nous opérons en fait en mode écriture, donc si nous sauvegardons cela, vous verrez que nous sommes en mode écriture, donc nous sommes prêts, vous pourriez aussi juste supprimer cela, sauvegarder et imprimer days, désolé, vous imprimez days, sauvegardez cela, vous pourrez voir que nous sommes aussi en mode écriture, donc les deux fonctionnent maintenant, écrivons dans un fichier, donc nous avons days, allons-y et écrivons dedans, donc nous pouvons faire quelque chose comme days, oops, days.write et disons que nous voulions mettre lundi dans days, sauvegardons cela, fermons-le et si nous exécutons cela, rien ne se passe, mais si nous faisons un cat out days.txt, vous verrez que lundi a été mis dans days.txt, parfait, donc maintenant qu'en est-il si nous voulions continuer avec cela, mettons mardi dedans et nous aurons besoin d'une nouvelle ligne, donc allons-y et faisons une nouvelle ligne avec cela et nous ferons mardi et espérons que lorsque nous l'écrirons, nous verrons lundi et mardi, donc sauvegardons cela, imprimons cela, désolé, exécutons le script, puis imprimons cela, et vous verrez que nous avons la nouvelle ligne dedans et nous avons mardi, mais nous l'avons en fait écrasé, nous n'avons plus lundi, donc ce qui se passe ici, c'est que nous écrivons en fait dans un fichier, ce qui écrase le fichier, nous n'ajoutons pas au fichier, donc si nous voulions ajouter au fichier, ce que nous devons faire, c'est changer ce W en A, et nous pouvons venir ici et écrire mercredi si nous voulions, sauvegardons cela et maintenant exécutons cela et exécutons cela, et maintenant vous pouvez voir que nous avons mardi et mercredi, donc comprenez la différence entre R étant lecture, W étant écriture, qui écrase, et A étant ajout, qui permet d'ajouter à un fichier au lieu d'écraser un fichier, donc c'est tout pour cette leçon, je vous verrai dans la prochaine.

D'accord, parlons des classes et des objets, Python est ce qu'on appelle un langage de programmation orienté objet, donc à peu près tout en Python est un objet et nous pouvons utiliser ce qu'on appelle une classe pour être ce qui est comme un constructeur d'objet, et nous pouvons l'utiliser pour aider à créer des objets, et c'est un peu plus facile à expliquer une fois que nous le démontrons réellement, donc nous allons créer quelques fichiers dans cette leçon et la première chose que nous allons faire est que nous allons faire un mousepad et je vais créer un fichier appelé employees.pi et dans celui-ci, nous allons déclarer la classe, je vais sauvegarder cela ici, donc faisons class employees, sauvegardez-le et nous allons appuyer sur entrée et juste décaler et nous allons faire cela, définir et deux underscores, init ou init, deux underscores à nouveau, et nous allons mettre quelques paramètres à l'intérieur de cette fonction, et nous parlerons de ce qu'est la fonction init ici dans une seconde, allons-y et pensons à avoir des employés, donc le premier paramètre que nous allons définir s'appelle self, et ensuite pour nos employés, nous pourrions vouloir connaître le nom de l'employé, nous pourrions vouloir savoir dans quel département ils travaillent, nous pourrions vouloir connaître leur rôle dans ce département, leur salaire et peut-être les années pendant lesquelles ils ont été employés, donc nous ferons years_employed et juste comme une fonction, nous ajouterons le deux-points ici à la fin et nous allons décaler et ensuite nous allons définir tout cela, donc allons-y et disons self.name est égal à name, donc nous créons des méthodes ici, que vous nous verrez utiliser dans un instant, nous allons faire self.department = Department, et vous devriez comprendre à ce stade, self.role = role, self.salary = salary, self.years_employed = years_employed, d'accord, donc sauvegardons cela, donc toutes les classes ont une fonction appelée la fonction init, et elle est toujours exécutée lorsque la classe est initiée, donc nous allons utiliser cette fonction init pour attribuer des valeurs aux propriétés de l'objet, donc ce que nous faisons ici, c'est que nous créons ces paramètres dans cette fonction, et nous construisons également des méthodes que nous pouvons utiliser une fois que nous importons cette classe, donc allons-y et fermons cela et nous allons ouvrir un autre mousepad et nous l'appellerons juste quelque chose comme our_employees.pi, vous pouvez l'appeler comme vous voulez, et je vais faire mon shebang en haut, nous ferons bin python3, sauvegardez cela et à partir d'ici, je veux en fait importer la classe que nous venons de construire, donc ce que je vais faire, c'est que je vais l'importer et nous allons dire from employees import employees, d'accord, et nous pouvons faire quelques employés ici, donc faisons une variable e1 pour employee1 et nous allons juste faire employees et je vais rester sur le thème de Bob's Burgers d'avant, nous allons juste dire que nous avons Bob, rappelez-vous, nous déclarons le nom de Bob, son département, nous dirons qu'il travaille dans les ventes, nous dirons que son rôle dans le département est le directeur des ventes, et nous dirons que son salaire est de cent mille dollars par an et qu'il est employé depuis 20 ans, et nous ferons un autre employé et nous dirons que cet employé est Linda, elle est cadre, elle est la Chief Information Officer ou la CIO, elle gagne cent cinquante mille dollars par an et elle est dans l'organisation depuis 10 ans, donc nous pouvons faire des choses avec cela, nous pouvons aller dire comme print e1.name, sauvegardons cela, assurons-nous que tout fonctionne, en venant ici, en fait, laissez-moi fermer et rouvrir cela parce que j'ai oublié mon ampersand sur celui-ci et nous reviendrons et maintenant nous allons faire python3 our_employees et vous verrez que print e1.name récupère Bob, donc nous utilisons la méthode name que nous avons créée avec notre classe, donc nous l'avons définie dans cette classe, donc maintenant nous avons la possibilité de récupérer des informations basées sur la classe que nous avons construite, donc nous pouvons aussi faire quelque chose comme print e2.role et nous devrions obtenir ce rôle imprimé pour nous, donc si nous voyons e2.role, nous obtenons qu'elle est une CIO, donc c'est une déclaration exacte ici, voyons si nous pouvons ouvrir les deux, ouvrons aussi employees.pi et nous avons les deux ici maintenant, donc c'est un peu plus facile à voir, nous avons notre fonction, notre fonction init ici, et nous avons toutes nos méthodes que nous avons définies, maintenant nous pouvons construire là-dessus dans cette classe, donc disons si nous voulions faire une autre fonction, si nous voulions dire quelque chose comme define eligible_for_retirement et nous avons juste dit self ici comme paramètre, qu'en est-il si nous disons quelque chose comme if self.years_employed est supérieur ou égal à 20, alors nous retournons true, parce que si la personne a travaillé avec nous pendant 20 ans, alors elle est éligible à la retraite, sinon si elle ne l'a pas fait, alors elle n'a pas encore gagné sa retraite, donc nous pouvons regarder un employé et voir combien de temps il a travaillé avec nous et nous pouvons sauvegarder cela ici, et ensuite nous pouvons venir ici, nous pouvons faire quelque chose comme print et nous dirons e1 et nous demanderons s'ils sont éligibles à la retraite, d'accord, sauvegardons cela, imprimons cela et vous verrez que Bob est en effet éligible à la retraite parce qu'il est dans l'entreprise depuis au moins 20 ans, ce que nous avons mis ici dans la classe, donc sachez que ce que nous faisons, c'est que nous construisons notre propre classe et nous sommes capables de définir ces fonctions et ces paramètres, et ceux-ci nous aident à créer nos objets que nous utilisons ici, donc nous avons nos classes, puis nous avons nos objets, donc cela peut devenir très robuste très rapidement et nous allons construire un projet pour examiner cela dans la prochaine leçon, et de cette façon, nous pouvons tout lier ensemble, mais c'est une partie très importante de la programmation et c'est très similaire à une classe individuelle, donc nous effleurons juste la surface de ce que c'est, mais c'est en fait incroyablement utile lorsque nous commençons à construire des classes comme celle-ci pour aider avec d'autres choses que nous écrivons et récupérons des informations, donc c'est tout pour cette leçon, nous allons passer à la suivante.

Nous sommes arrivés au projet final de ce cours et cela va lier tout ce que nous avons appris jusqu'à présent, donc je suis un peu un passionné de baskets, ce qui signifie que j'aime vraiment les chaussures, et donc ce que nous allons faire, c'est que nous allons construire une application de budget en utilisant des classes et des objets, et nous allons voir quelles chaussures nous pouvons nous permettre en fonction de combien d'argent nous avons, donc nous allons commencer par la classe et nous allons juste faire un nouveau fichier, nous ferons mousepad et nous l'appellerons shoes, je peux taper shoes.pi, ouvrez-le et nous ouvrirons également une nouvelle fenêtre, ou juste un nouvel onglet ici, et nous écrirons dans les deux, donc euh, pour celui-ci, nous allons juste définir une classe de chaussures et je vais juste sauvegarder cela, donc je vois les couleurs et ici nous allons définir notre instruction init et nous allons juste dire self, et ensuite nous aurons un nom, le nom de notre chaussure et le prix de nos chaussures, et dans celui-ci, nous allons juste définir self.name = name, cela devrait tout vous sembler familier jusqu'à présent, et self.price est égal à price, ce que nous allons faire avec le prix parce que nous rencontrerons une instance où cela sera pris potentiellement comme une chaîne, nous allons juste lui donner un float, nous voulons nous assurer que nous supposons que ce sera un float d'un prix ici, allons-y et définissons quelques choses de plus, donc je veux définir un budget_check et je veux m'assurer que nous avons le budget ici, donc ce que nous allons faire dans cette instance, c'est que nous allons juste dire self, et ensuite nous allons aussi ajouter le budget ici, et nous allons venir ici et nous allons faire une vérification d'abord, nous voulons nous assurer que nous recevons un entier ou un float ici lorsque l'on nous demande le budget, donc nous pouvons dire quelque chose comme if not isinstance, et ce que cela signifie, c'est que nous disons si ce type n'est pas ce que nous spécifions ici, alors nous allons le rejeter et fermer l'application, donc is_instance recherche notre type et renvoie une valeur True, mais si nous disons pas vrai, alors c'est faux, rappelez-vous nos tables de vérité, et donc devient invalide et ferme l'application, donc ce qui va se passer, c'est que nous allons dire budget et nous allons aussi regarder si le budget va être un INT ou un float, et s'il n'est pas l'un de ces deux choses, nous allons imprimer une entrée invalide, veuillez entrer un nombre, quelque chose dans ce genre, et ensuite nous quitterons l'application, donc disons que nous avons un budget et que nous voulons aussi savoir combien d'argent il reste si nous achetons les chaussures, donc nous pouvons définir quelque chose comme change ou quel changement reste, et nous pourrions dire quelque chose comme self.budget sur cela aussi, et nous pouvons juste retourner notre budget moins notre self.price, rappelez-vous, nous avons déclaré self.price ici, maintenant nous l'appelons, nous disons juste hey, je veux retourner la valeur du budget que nous avons moins le coût de l'article que nous achetons, d'accord, seulement quelques choses de plus et nous aurons terminé avec notre classe ici, donc nous devons aussi l'acheter, n'est-ce pas, donc définissons buy et nous allons faire self.budget à nouveau, et ici nous allons faire un self.budget_check, et nous allons vérifier notre budget, et ce que nous allons dire, c'est si notre budget est supérieur ou égal à self.price, alors nous allons imprimer, nous allons faire une chaîne F ici et nous allons juste dire U et cop sum, et ensuite nous ferons self.name, donc le nom que nous fournirons ici, cela aura tout son sens une fois que nous aurons tout lié ensemble, d'accord, et ensuite si notre budget est égal à self.price, alors nous allons juste dire imprimer vous avez exactement assez d'argent pour ces chaussures, sinon nous pouvons faire else, maintenant nous pourrions parcourir tout cela et et donner une déclaration et dire eh bien, qu'en est-il si nous n'avions pas d'argent ou qu'en est-il si nous n'avions pas assez d'argent, mais dans cette instance, nous allons juste imprimer la situation de vous pouvez acheter ces chaussures et avoir, nous avons un signe dollar ici, nous dirons self.change et nous donnerons un budget restant, donc restant comme ceci, d'accord, et ensuite lorsque nous quitterons l'application, nous pourrons dire quelque chose comme exit et nous donnerons juste une déclaration, merci d'avoir utilisé notre application de budget de chaussures, maintenant cela n'a peut-être aucun sens encore et ce n'est pas grave, laissez-moi agrandir cela un peu, et donc ce que nous faisons ici, c'est que nous définissons notre init et dans notre init, nous avons un nom qui sera le nom de la chaussure et le prix qui me donnera le prix de la chaussure, donc self.name est égal à name, self.price sera un float parce que nous nous attendons potentiellement à ce que ce soit notre prix de notre chaussure pourrait être 2.99 ou 100.99, ce ne sera peut-être pas un nombre parfait, donc nous voulons utiliser un float, allons-y et définissons notre budget_check ici, nous vérifions juste l'is_instance, nous pourrions en théorie ajouter à ce budget_check et nous assurer que nous avons suffisamment de financement avant de descendre.

Et faites l'achat serait probablement la manière logique de faire cela, mais dans ce cas, nous utilisons simplement une logique très basique et nous disons simplement : "Hé, si cette instance n'est pas un entier ou un flottant, comme si quelqu'un tapait une chaîne de caractères, alors nous allons simplement rejeter cela. Nous n'en voulons pas. Nous n'avons aucun intérêt si ce n'est pas un entier ou un flottant ici, alors nous allons définir notre changement. Donc, s'il nous reste de l'argent, comme si nous avons le budget moins le prix de la chaussure, alors nous allons rendre de l'argent. Et ensuite, nous allons aussi acheter la chaussure. Donc, nous aurons notre option d'achat tant que notre budget est supérieur au prix de la chaussure, nous pouvons acheter cette chaussure, et si le budget est égal au prix, alors nous avons assez d'argent. Si ce n'est pas le cas, alors nous aurons en fait de l'argent restant ici, à moins que ce ne soit le cas de ne pas avoir assez d'argent, et alors l'application se terminera simplement parce que nous ne lui avons rien dit d'autre à faire, et ensuite elle nous remerciera également d'avoir utilisé l'application de chaussures. C'est donc la première partie, nous avons défini la classe. Maintenant, pourrions-nous tout construire en une seule chose ? Oui, nous pourrions simplement écrire un script pour cela. Nous pourrions coder cela et en faire un script facile, mais ce que cela fera, c'est nous donner de la flexibilité. C'est là que la programmation orientée objet entre en jeu, car nous n'avons pas à continuer à nous répéter. Et ce que nous suivons, c'est ce qu'on appelle l'approche DRY, l'approche "Don't Repeat Yourself" (Ne vous répétez pas). Et donc, ce que nous faisons, c'est maintenir tout dans une classe ici, puis nous appellerons cette classe et cela nous facilitera grandement la tâche au lieu d'avoir un script fou et long qui est potentiellement répétitif et beaucoup plus difficile à parcourir.

Alors, nous allons simplement ouvrir ceci et j'appellerai un shebang. Je suis Ben Python 3. Je vais enregistrer cela et je vais appeler cela euh achat_chaussure.py. Je sauvegarde cela. Maintenant, nous allons importer de notre classe que nous avons créée. Donc, depuis chaussures, importer chaussures. Et définissons quelques variables. Disons donc que bas est égal à chaussures. Et pour les chaussures à prix bas, nous allons simplement dire que nous pouvons acheter des "some and ones" et nous pouvons les acheter pour 30 dollars. Pour les chaussures à prix moyen, peut-être que nous pouvons acheter des Air Force Ones, et pour celles-ci, peut-être qu'elles coûtent 120 dollars. Et puis pour les chaussures à prix élevé, peut-être que nous sommes intéressés par l'achat de quelques Off-Whites, et celles-ci pourraient nous coûter 100 dollars. Et à partir de là, ce que nous allons faire, c'est que nous allons faire une instruction try. Rappelez-vous, nous avons déjà fait une instruction try, et nous allons dire try, et nous allons dire que le budget_chaussure est égal à un flottant d'une entrée. Nous allons demander une entrée ici. Donc, tout cela se relie. Nous dirons : "Quel est votre budget chaussures ?" Mettez un point d'interrogation là. Reliez cela ensemble, et ensuite nous allons faire une exception. Donc, si nous avons une erreur de valeur, ce qui signifie que nous n'obtenons pas de nombre en retour, similaire à ce que nous faisions précédemment. Si nous n'obtenons pas de nombre en retour ici, nous allons dire : "Veuillez entrer un nombre."

Maintenant, nous pouvons venir ici et dire pour chaussures dans, et ensuite nous pouvons simplement donner ceci : haut, moyen, bas, comme ceci. Nous pouvons faire chaussures.acheter. Et rappelez-vous, nous avons créé cette méthode acheter dans notre classe ici. Donc, nous faisons chaussures.acheter. Je vais aller vérifier tout cela pour nous, et nous allons dire au budget. Donc, nous allons prendre l'entrée du budget_chaussure. Quelle est la valeur ici ? Nous allons la prendre. Nous allons venir ici et voir quel est notre budget. S'il est supérieur ou égal au prix de la chaussure, nous définissons le nom de la chaussure et le prix de la chaussure à partir de nos paramètres que nous avons définis ci-dessus : nom et prix. Donc, nous disons : "Hé, le nom et le prix." Donc, le prix de la chaussure est-il au moins le montant de notre budget ? Et si c'est le cas, nous pouvons l'acheter. Et nous allons vérifier dans l'ordre le plus élevé, puis aller dans l'ordre le plus bas. Si vous inversez cela et que vous entrez 400, nous continuons à vous dire que vous ne pouvez acheter que la chaussure à prix bas. Vous devez donc vous assurer qu'elle est dans l'ordre du plus élevé au plus bas dans cet exemple. Et donc, il vérifiera : avons-nous assez d'argent pour acheter la paire de chaussures à 400 dollars ? Non. D'accord. Et ensuite, avons-nous assez d'argent pour acheter la paire de chaussures à 120 dollars ? Non. Avons-nous assez d'argent pour acheter la paire de chaussures à 30 dollars ? Nous allons donc parcourir cela et itérer dans cette boucle pour voir ce que nous pouvons ou ne pouvons pas acheter.

Alors, allons-y et sauvegardons ceci, et nous sauvegarderons chaussures.pi. Et je vais aller exécuter ceci. J'espère que je n'ai pas de fautes de frappe. Je vais faire budget_chaussure, achat_chaussure, désolé, et exécuter ceci. Et j'ai une faute de frappe. Donc, si je reviens ici, j'ai oublié de fermer ma f-string. Alors, laissez-moi sauvegarder cela. Maintenant, essayons ceci. Quel est notre budget chaussures ? Donnons-lui quelques options différentes. Si nous disions que notre budget chaussures était exactement de trente dollars, eh bien, il dira que nous pouvons acheter des "some and ones", désolé, et nous avons juste assez d'argent pour ces chaussures. Merci d'avoir utilisé l'application de chaussures. Et si nous avions 31 dollars ? Eh bien, nous pourrions toujours acheter des "some and ones", et ensuite nous pouvons acheter ces chaussures et avoir un dollar restant. D'accord. Et si nous avions 450 dollars ? Eh bien, nous pouvons acheter les Off-Whites et nous pouvons les acheter et avoir cinquante dollars restants pour notre budget. J'espère donc que cela a du sens. Je sais que c'est beaucoup d'informations, et encore une fois, c'est juste un cours individuel. Nous nous effleurons donc la programmation orientée objet, et si vous continuez avec Python à partir d'ici et que vous commencez à aborder des sujets plus complexes, alors vous pourrez vous appuyer sur ce que vous apprenez ici. Essayez donc de penser à quelque chose que vous aimeriez scripté ou écrit comme ceci, et pensez à la logique derrière cela. Je recommande vivement de faire des défis de codage ou des défis de programmation et d'essayer d'augmenter la logique et les idées derrière ce que vous essayez de construire. Et cela demande juste de la pratique. Tout cela demande de la pratique. C'est une chose de regarder et de suivre quelqu'un, c'est une tout autre affaire d'aller et de faire cela vous-même. Alors, commencez à penser à certaines choses que vous voulez construire. Utilisez vraiment vos compétences Google. Regardez Stack Overflow et regardez un peu de Google et un peu de Reddit, et essayez simplement de rassembler la logique que vous avez dans ce que vous voulez construire. Je recommande donc vivement de vous appuyer sur cela. C'est un excellent langage à apprendre et très flexible, et j'espère que vous continuerez avec cela.

D'accord, avant de passer à la pratique, je dois vous donner un peu de "Death by PowerPoint", mais c'est pour une bonne raison. Nous devons introduire les cinq étapes du piratage éthique. Ce sont les cinq étapes que vous traverserez à chaque évaluation. Avant de faire cela, faisons d'abord une grande note : à partir de maintenant, nous passons à la partie piratage éthique de notre cours. Nous allons apprendre des choses malveillantes. Veuillez utiliser uniquement les informations apprises dans ce cours à des fins éthiques. N'attaquez pas vos voisins. N'attaquez personne pour qui vous n'avez pas d'autorisation explicite. Vous pouvez et aurez des ennuis si vous faites cela.

Donc, cela étant dit, parlons brièvement des cinq étapes du piratage éthique. Nous commençons en haut et nous commençons en fait par ce qu'on appelle la reconnaissance. Cette étape est également connue sous le nom de collecte d'informations, et il existe deux types : actif et passif. Maintenant, passif, c'est comme aller sur Google et chercher quelqu'un. Disons que vous donnez un client et que vous voulez regarder leur Google, vous voulez regarder LinkedIn. Vous pourriez chercher, je ne sais pas, une photo de leur badge, ou le nom d'un employé, ou peut-être la page Twitter d'un employé. Tout cela est passif. Vous n'allez pas réellement sur le site web de l'entreprise et ne faites rien d'actif contre elle. Maintenant, la reconnaissance active s'inscrit en quelque sorte dans la deuxième phase, qui est l'analyse et l'énumération. C'est actif. C'est là que nous allons et que nous utilisons des outils tels que Nmap, Nessus et Nicto. Et si vous n'avez jamais entendu parler de l'un d'eux, ce n'est pas grave, mais nous les utilisons et nous analysons activement contre un client. Ce que nous recherchons, ce sont les ports ouverts, les vulnérabilités, différents éléments. Et avec ce qui retourne sur ces résultats lorsque nous faisons cette analyse, nous effectuons également ce qu'on appelle l'énumération. L'énumération consiste simplement à examiner les éléments et à les approfondir pour voir si nous pouvons trouver quelque chose de valeur. Disons qu'il y a un serveur web qui tourne sur le port 80. Nous voyons que le port 80 est ouvert et qu'il exécute quelque chose comme Apache 1.2, ce qui serait vraiment, vraiment obsolète. Nous irions sur Google et nous dirions : "Google, sais-tu si Apache 1.2 a des exploits ?" Et nous ferions des recherches. C'est la partie énumération.

Donc, une fois que nous avons fait notre collecte d'informations, notre analyse et notre énumération, nous passons à la partie obtention d'accès. C'est aussi connu sous le nom d'exploitation. Nous allons exécuter un exploit contre le client ou contre le service vulnérable ou quoi que ce soit pour essayer d'obtenir un accès à une machine, à un réseau, à un environnement, etc. Une fois que nous avons cet accès, le processus commence à se répéter. Nous faisons à nouveau de l'analyse et de l'énumération, et nous voulons également maintenir cet accès, n'est-ce pas ? Donc, si nous étions expulsés, d'accord, ou si un utilisateur éteint son ordinateur, comment maintenons-nous cet accès ? Donc, quand ils rallument leur ordinateur, nous avons toujours accès à celui-ci. Et enfin, il y a la couverture des traces. Vous voulez supprimer tous les journaux que vous pourriez laisser derrière vous. Vous voulez supprimer tout type de logiciel malveillant que vous téléchargez, ce qui est plus important en tant que testeur d'intrusion. Tous les comptes que vous créez, pour quelque raison que ce soit, vous voulez les supprimer également. Vous voulez vraiment juste nettoyer. C'est une bonne façon de le dire. Couvrir les traces est la façon la plus "hacker" de le dire, mais en tant que testeur d'intrusion, vous voulez vraiment juste nettoyer.

Nous allons donc nous concentrer fortement sur les étapes un à trois dans ce cours. Nous couvrirons également brièvement les étapes quatre et cinq, mais le processus et la méthodologie ne changent jamais, que vous fassiez du réseau, que vous fassiez une application web ou que vous fassiez un type d'évaluation différent. Tout est similaire dans ces cinq étapes de piratage. Les outils peuvent changer, les méthodes d'attaque peuvent changer, mais la méthodologie globale est toujours la même. C'est donc ainsi que nous allons structurer ce cours. Nous allons d'abord parler de la collecte d'informations et de la reconnaissance. Ensuite, nous passerons à l'analyse et à l'énumération, puis nous commencerons par l'exploitation et nous le ferons de manière répétée jusqu'à ce que cela nous rentre dans la tête et que cela devienne presque une seconde nature, n'est-ce pas ? Une fois que tout cela est fait, nous ferons des boîtes d'entraînement. Vous savez, essayez de voir comment nous nous en sortons. Nous passerons à l'aspect interne avec Active Directory. Nous commencerons à travailler avec nos applications web et notre réseau sans fil, et nous aborderons le maintien de l'accès et la couverture des traces, mais vous verrez cette méthodologie encore et encore, et vous pourriez également poser cette question lors d'un entretien, vous savez, pour décrire les cinq étapes. Il est donc important de les connaître. C'est juste quelque chose que chaque hacker éthique peut réciter assez rapidement. Alors, ayez cela écrit, réfléchissez-y, gardez vos roues qui tournent et passons à notre première section, qui sera la collecte d'informations / reconnaissance.

Donc, dans quelques outils sympas, un peu de Google Foo, et juste quel type d'informations nous pouvons réellement collecter sur un client potentiel. Dans cette section, nous allons parler de la collecte d'informations, et toutes les informations que nous allons collecter dans cette section seront passives. J'appelle donc cela Recon passive ou reconnaissance passive. Je voulais donner un bref aperçu de ce que nous allons couvrir et parler de quelques sujets de haut niveau avant de nous plonger dans les détails et de vraiment plonger dans notre cible.

Alors, parlons des différents types de Recon passive. Donc, sur les côtés physiques ou sociaux. Physique, ce qui signifie aller sur site et peut-être faire un engagement physique, ou l'aspect d'ingénierie sociale, comme faire une évaluation de phishing, ou même inclure dans un engagement physique, ou une évaluation de "bishing" (piratage téléphonique). Juste collecter ces informations de l'aspect physique et social est incroyablement utile. Nous avons des informations de localisation. Nous pourrions utiliser quelque chose comme des images satellites, ou souvent nous irons sur site et ferons de la reconnaissance par drone, où nous faisons voler un drone et essayons de recueillir des informations. Et ce que nous recherchons vraiment avec ces images de reconnaissance par drone, c'est que nous essayons de découvrir : "Hé, à quoi ressemble la disposition du bâtiment ? Y a-t-il des lecteurs de badges ? Y a-t-il des zones de pause ? La sécurité existe-t-elle ? Y a-t-il quelqu'un posté à l'avant ? Pouvez-vous simplement entrer par la porte ? À quoi ressemble leur clôture ? Y a-t-il des zones où ils laissent simplement les portes ouvertes ? Où les gens sortent-ils pour fumer dans ces zones de pause ?" Parce que ce sont de bons endroits pour simplement s'approcher de quelqu'un, allumer une cigarette, même si vous ne fumez pas, et commencer une conversation, puis les suivre à l'intérieur du bâtiment.

L'autre aspect de cela est l'information sur l'emploi. Nous pourrions donc rechercher des employés en ligne. Je pourrais vouloir connaître le nom de quelqu'un, son titre de poste, son numéro de téléphone, qui est son responsable. J'essaie d'avoir une bonne idée de ce à quoi ressemblent les gens, donc si je les vois sur site, j'ai une bonne idée de qui ils sont. Je recherche également des photos. Je ne peux pas vous dire combien de fois une photo de badge est publiée sur LinkedIn, ou quelqu'un publie sur Twitter. Vous pouvez voir tous les mèmes qui circulent sur les gens qui publient leurs photos au travail, et c'est mauvais. Ça arrive tout le temps. Je le vois encore aujourd'hui. Nous recherchons donc des photos de badges. Je recherche des photos de bureaux, des photos d'ordinateurs. J'ai eu une situation où quelqu'un a pris une photo de sa partie d'un jeu au travail. Elle regardait un match de basket au travail, et le match de basket était sur son ordinateur, et sur son écran, il montrait tous les différents outils qu'ils utilisaient au travail. Elle avait une application de travail ouverte dans cette photo. Il y avait un bureau à l'arrière, vous pouvez voir différentes choses, et cela nous donne simplement des informations. Et c'est vraiment ce que nous recherchons : quel type d'informations pouvons-nous collecter ?

Ce cours n'est pas un cours sur le physique ou le social, donc je voulais donner un aperçu de ce à quoi s'attendre. Nous ne ferons pas vraiment beaucoup de cela dans ce cours avec ce type de collecte d'informations, mais ce sont les choses que vous devriez rechercher. Donc, si vous êtes chargé d'une évaluation physique, allez-y et recherchez des images satellites, essayez d'avoir une bonne idée de la disposition du bâtiment, et essayez également d'avoir une idée de qui sont les employés, qui est peut-être le responsable informatique, au cas où vous diriez : "Je travaille pour l'informatique", ils pourraient vous demander qui est votre responsable, vous pourriez avoir besoin de connaître ces noms. Et bien sûr, recherchez des photos. Si vous pouvez trouver une bonne photo de badge et à quoi elle ressemble, vous pouvez créer un faux badge, aller sur site et vous serez beaucoup plus crédible avec ce badge. Mais parfois, ils ne regardent même pas. Il peut être dessiné à la craie.

À partir de là, parlons de ce que nous allons faire beaucoup, c'est le web et l'hôte. Donc, lorsque vous obtenez une évaluation web ou d'hôte, la première chose que vous devriez vraiment faire est ce qu'on appelle la validation de la cible. Nous allons cibler quelque chose sur Bugcrowd. Nous ne allons pas vraiment nous concentrer sur cela, mais ce que nous allons faire dans le monde réel, c'est valider la cible. Il existe des situations où un client vous donnera une adresse IP ou un site web, et ils pourraient, ils pourraient le falsifier, n'est-ce pas ? Ils pourraient accidentellement taper mal, mettre le mauvais numéro, mettre la mauvaise lettre sur le site web, et ensuite devinez quoi ? Vous attaquez le site web de quelqu'un d'autre. Et si vous êtes un auditeur de podcast, il y a un bon épisode de Darknet Diaries à ce sujet. Si vous n'écoutez pas Darknet Diaries, allez le vérifier. Il y a un excellent épisode avec un gars nommé Rob Fuller, alias Mubix, et il parle d'avoir obtenu la mauvaise adresse IP lors d'une évaluation et d'avoir attaqué les mauvaises personnes, et d'avoir en fait obtenu l'accès à cette machine, ce qui est une très, très grosse erreur des deux côtés, n'est-ce pas ? Vous devriez donc toujours valider vos cibles. En plus de cela, lorsque nous faisons notre évaluation web et hôte sur le site web, nous allons rechercher des sous-domaines, et nous en parlerons davantage lorsque nous y entrerons. Mais nous pouvons le faire avec Google, nous pouvons le faire avec Nmap, Sublist3r. Il existe tellement d'outils différents que nous pouvons utiliser, et nous couvrirons certains des outils et comment le faire, nous y plongerons un peu plus en profondeur, surtout lorsque nous aborderons l'aspect web.

Il y a l'empreinte digitale. Nous devons savoir ce qui tourne sur un site web ou ce qui tourne sur un hôte. Quels types de services sont là ? Exécutent-ils un serveur web ? Quel est ce serveur web ? Est-ce IIS ? Est-ce Apache ? Quelle version est-ce ? Exécutent-ils ? Quels ports sont ouverts sur leurs machines ? Oh, ils ont FTP ouvert ? Quelle version de FTP est ouverte ? Nous devons donc faire l'empreinte digitale des machines et comprendre un peu. Mais du côté passif, nous ne touchons aucune machine, n'est-ce pas ? Donc, nous ne allons pas faire beaucoup d'analyses contre un hôte. Nous devons simplement utiliser quel type d'informations pourrait déjà être disponible. Donc, si nous allons sur un site web, c'est à la limite de l'actif, mais tant que nous ne l'analysons pas, dans mon livre, c'est toujours passif. Nous allons donc couvrir certains aspects passifs/actifs dans cette section, puis lorsque nous passerons à l'analyse, nous serons beaucoup plus actifs.

Enfin, nous allons nous concentrer fortement, surtout au début, sur les violations de données. Les violations de données sont le moyen le plus courant lorsque nous effectuons une évaluation externe pour accéder aux réseaux. Absolument, de loin. Lorsque nous parlons de violations de données, nous parlons d'incidents de violation passés qui ont divulgué des données. Encore une fois, ce sont comme Home Depot, Equifax, LinkedIn, toutes sortes de violations qui existent et qui ont eu des identifiants vidés, puis ces identifiants deviennent disponibles pour nous éventuellement, et nous essayons de les utiliser pour obtenir l'accès, ou au moins utiliser les noms d'utilisateur pour obtenir l'accès. De nos jours, la plupart du temps, il n'y aura pas une analyse facile pour trouver quelque chose de vulnérable et l'exploiter du côté externe. Nous recherchons donc ces violations de données et ces informations que nous pouvons collecter. Et c'est pourquoi la collecte d'informations, puis l'énumération et l'analyse sont les plus importantes, de loin. Mieux vous pourrez faire de l'analyse et de l'énumération, et mieux vous pourrez collecter des informations, meilleur hacker vous serez, et meilleur vous serez dans votre travail. Alors, prenez ces deux premières sections très au sérieux.

Nous allons commencer par identifier quelle sera notre cible pour cette partie de la section, puis nous allons commencer à parler des violations de données et pourquoi elles sont importantes, et approfondir cela, puis nous allons aborder certains de ces outils que vous voyez ici sur cette liste et vraiment plonger dans ceux-ci. Je me réjouis donc de vous voir dans la prochaine vidéo lorsque nous identifierons notre cible et commencerons la collecte d'informations.

D'accord, avant de commencer notre reconnaissance, nous devons établir un client à attaquer. Pour ce cours, nous allons utiliser un client de Bugcrowd. Si vous n'avez jamais entendu parler de Bugcrowd, Bugcrowd est un programme public de bug bounty. Ce que cela signifie, c'est qu'il existe des programmes sur le site web qui vous permettront de les attaquer, et si vous trouvez un bug contre le programme, vous pouvez le soumettre et potentiellement gagner de l'argent. Vous êtes donc autorisé à pirater ces programmes publiquement car ils font partie de ce programme.

Maintenant, le programme que nous allons attaquer est Tesla. Donc, Tesla fait partie de Bugcrowd. Veuillez noter, veuillez vérifier deux fois lorsque vous regardez ce cours, car du temps peut s'être écoulé. Tesla pourrait ne plus faire partie de ce programme de bug bounty. Il est donc très important de vous assurer que vous êtes toujours dans le périmètre avant d'attaquer. Si, pour une raison quelconque, Tesla n'est plus dans le périmètre, allez simplement choisir un nouveau client et collectez des informations à son sujet. Vous n'avez pas à choisir Tesla lorsque nous faisons cela, vous pouvez simplement le faire pour suivre avec moi, mais vous êtes également invités à choisir n'importe quel programme que vous voulez.

Donc, si vous allez sur bugcrowd.com et que nous allons sur programmes, je vais vous montrer où Tesla existe. Vous pouvez voir ici qu'ils ont toutes sortes de programmes ici, et si je fais défiler et que je continue, je pourrais en trouver de plus en plus. Il y a des centaines de programmes impliqués, toutes sortes de noms : DigitalOcean, Okta, de très grands noms, Pinterest, Atlassian, tout ce que vous pouvez imaginer a probablement un programme de bugs, s'il est réputé. D'accord, tous les grands noms ont très probablement un programme de bugs, surtout s'ils sont réputés.

Vous pouvez donc voir ici ce qui est basé sur la récompense, ce qui est basé sur la charité et ce qui est basé uniquement sur les points. C'est ainsi que les bug bounties sont récompensés. Certains ne sont pas tous en espèces, certains sont juste pour des points et des Kudos, et les autres sont pour la charité. Je vais simplement rechercher Tesla, et lorsque je le fais, vous pouvez voir ici que Tesla apparaît.

Maintenant, c'est votre première leçon sur les règles d'engagement, et nous en parlerons plus tard, mais il est super important de lire les détails du programme que vous voyez ici, et ce que nous devons vraiment faire, c'est faire défiler et nous assurer que nous restons dans le périmètre lorsque nous faisons cela. Nous avons un joker ici, donc cela signifie que tout sous-domaine à l'intérieur de tesla.com est un jeu équitable, tesla.cn, Tesla Motors, etc. Ce qui est plus important, c'est que nous restions dans ce hors-périmètre. Donc, nous ne voulons pas attaquer shop.eu.teslamotors.com ou energy.support.tesla.com. Il est indiqué que vous pouvez signaler des vulnérabilités à Bug Bounty pour celui-ci. Tous les domaines issus d'acquisitions telles que Maxwell. Donc, nous devons rester dans Tesla, et il y a quelques autres sites. Nous ne allons pas trop nous en soucier. Lorsque nous aborderons la partie application web du cours, nous parlerons beaucoup plus en détail de l'énumération des applications web et nous y plongerons.

Donc, pour l'instant, ce que nous allons faire, c'est que nous allons simplement nous concentrer sur la collecte d'informations. Quel type d'informations pouvons-nous collecter auprès de ce client ? Donc, encore une fois, je définis ma cible sur Tesla. Si vous choisissez un autre Tesla ou un autre client, assurez-vous simplement de rester dans le périmètre de ce client.

À partir de là, nous allons passer à notre première vidéo et commencer notre collecte d'informations.

Bienvenue dans la section Email Ocean. Nous allons parler de la découverte d'adresses e-mail, et c'est quelque chose que je fais chaque semaine. Je vais donc vous montrer les outils les plus courants que j'utilise pour rechercher des adresses e-mail et essayer de trouver des personnes, et ce que vous pouvez faire pour vérifier les adresses e-mail. Je vais donc vous montrer certains de mes outils et concepts préférés. Et c'est quelque chose que je fais non seulement pour l'OSINT (Open Source Intelligence) et pour un travail d'investigation, mais pensez aux ventes. Si j'essaie de trouver un prospect ou si j'essaie de trouver plusieurs prospects au sein d'une organisation, je dois comprendre où se trouvent les e-mails, qui sont les personnes que j'essaie d'envoyer par e-mail. Alors, peut-être que je vais les chercher sur Google et dire : "Qui est le CSO ou le Chief Information Security Officer pour cette entreprise ?" Et je pourrais découvrir que c'est Bob Jones, et nous recherchons Bob Jones, et nous disons : "Eh bien, comment puis-je obtenir les coordonnées de Bob Jones ? Puis-je les trouver via Google ? Peut-être, peut-être qu'elles sont publiques, mais peut-être que nous devons creuser un peu plus. Peut-être que nous devons faire une estimation et voir si nous pouvons le découvrir." C'est donc ce que nous allons faire aujourd'hui : examiner les formats d'adresses e-mail et essayer de déterminer si nous pouvons trouver des e-mails.

Alors, allons-y et passons à la machine Kali Linux que j'ai. Et le premier site web est l'un de mes préférés : hunter.io. Vous allez simplement sur hunter.io, vous obtenez environ 50 ou 100 recherches gratuites par mois. Je ne me souviens pas de ce que c'est. C'est une quantité raisonnable. Vous pouvez venir ici et simplement taper le nom d'une entreprise. Disons donc que je veux taper TCM Security, tcm-sec. Et vous pouvez voir TCM Security ici. Nous obtenons un résultat sur l'adresse e-mail. Nous allons donc cliquer dessus et voir ce qui se passe. Et il semble que nous ayons quelque chose comme info@tcm-asect.com. Il nous dit : "Hé, il y a cinq sources qui identifient cela." Nous voyons donc tcm-sec.com, il y a un blog "about". C'est là qu'ils le trouvent, d'accord. Un meilleur exemple, peut-être quelque chose qui a plus d'utilisateurs, comme Tesla. Tesla a 468 utilisateurs. Si nous venons ici et que nous regardons, eh bien, nous pouvons voir qu'ils ont identifié un modèle ici. Donc, leur modèle qu'ils identifient est la première initiale, le nom de famille, à tesla.com. Et c'est vraiment ce que nous voulons voir. Et ensuite, nous pouvons collecter des adresses e-mail ici si nous le voulons. Mais disons que nous connaissions Bob Jones, encore une fois, en revenant à cet exemple, Bob Jones. Donc, peut-être que Bob Jones travaille chez Tesla. Peut-être que son e-mail serait b.jones@tesla.com. C'est donc quelque chose à considérer.

Maintenant, nous pouvons nous inscrire et obtenir des informations réelles ici. Vous devriez pouvoir vous inscrire avec un compte Gmail. Parfois, cela ne fonctionne pas, selon le pays où vous vous trouvez. Soyez donc conscient que vous devrez peut-être utiliser une adresse e-mail différente, mais j'ai juste essayé de m'inscrire avec un compte Gmail que j'ai ici, et cela a bien fonctionné. Je vais donc aller essayer de me connecter. Je vais me connecter avec Google avec ce qui est déjà là, et juste maintenant, je suis connecté. Nous pouvons donc revenir en arrière et essayer de rechercher à nouveau Tesla, et vous verrez que les résultats reviennent. Nous obtenons des informations ici. Maintenant, nous obtenons, laissez-moi agrandir un peu cela. Nous obtenons des informations sur : "D'accord, voici le vice-président. C'est l'adresse e-mail du vice-président. Chef de projet développement, peut-être que vous voulez parler à quelqu'un des ressources humaines, donc vous pouvez cliquer ici et aller aux ressources humaines, et ensuite voici les différentes adresses e-mail des ressources humaines qui sont ici. Et puis les sources où ils ont trouvé ces adresses e-mail. Donc, ce n'est pas une personne en particulier dans les RH, mais ce sont toujours des adresses e-mail des ressources humaines. Donc, cela semble être pour Hong Kong, c'est pour Berlin, c'est Gigafactory. Donc, ils ont différentes adresses e-mail en fonction de leur emplacement.

Si vous recherchiez TCM Security ici, vous ne trouveriez vraiment pas grand-chose sur nous, car nous n'avons pas beaucoup d'adresses e-mail disponibles. Mais je pense que nous pouvons en trouver plus d'autres manières. Donc, nous n'obtenons que quelques utilisations ici. Nous continuerons à y penser au fur et à mesure que nous avançons. Donc, hunter.io est une excellente ressource. Ils ont des plugins si vous le souhaitez. Je pense que c'est un endroit fantastique pour chercher.

phonebook.cz est la prochaine ressource que je veux vous montrer. Celle-ci est fantastique. Commençons par tcm-sec.com et voyons. Nous allons donc tcm-sec.com et nous allons rechercher des adresses e-mail ici. Ils font des domaines et des URL aussi, ce que je trouve génial, mais cherchons juste des adresses e-mail. Voyons si quelque chose revient. Non, aucun résultat. D'accord, ce n'est pas grave. Essayons Tesla et voyons ce qui revient. D'accord, beaucoup plus. Nous obtenons donc pas mal d'adresses e-mail. Nous pouvons voir Elon Musk partout. Nous avons Elon-musk, Elon. Nous avons emusks ici, et nous obtenons une tonne d'e-mails. Regardez ça. Ce qui est bien avec cela, c'est que nous pouvons nous asseoir ici et essayer d'identifier quelles sont les adresses e-mail possibles. Donc, encore une fois, première initiale, nom de famille semble apparaître assez souvent, en dehors peut-être des Elon Musk du monde. Nous obtenons un tas de euh, principalement des premières initiales, noms de famille ici. Je pense que c'est assez juste avec cela. L'autre chose que nous pouvons faire, c'est utiliser cette liste. Disons que nous essayons de faire quelque chose appelé "credential stuffing", dont nous parlerons dans la section suivante, en fait, lorsque nous parlerons des identifiants de violation. Mais disons que nous essayons de collecter un tas de noms d'utilisateur et de tester pour voir si nous pouvons nous connecter avec ces noms d'utilisateur n'importe où, ou peut-être le "password spraying", pas tellement le "credential stuffing", mais le "password spraying" où nous prenons tous ces noms d'utilisateur et nous les jetons sur un formulaire de connexion et disons : "Hé, été 2020 !". Vous savez, voir si cela se connecte à l'un de ces comptes, et vous seriez surpris, ça arrive assez souvent.

Donc, vous savez, ce sont des informations précieuses, même si nous ne savons pas exactement, peut-être que nous ne chassons pas seulement un e-mail, peut-être que nous chassons un domaine entier. C'est un excellent moyen d'obtenir gratuitement des domaines entiers avec une capacité de copier-coller rapide, comme nous avons Tesla ici. Nous pouvons exporter le CSV depuis hunter.io, mais vous n'obtenez que quelques résultats que vous pouvez exporter dans un CSV ici. Vous obtenez beaucoup. Il n'y a aucune garantie qu'ils soient tous valides, mais c'est toujours de l'information. L'information est ce que nous voulons. C'est tout ce que nous essayons de collecter : autant d'informations que possible. Ce sont donc toutes des adresses e-mail potentielles pour tesla.com. Je pense que c'est une excellente ressource.

Maintenant, nous pourrions également utiliser quelque chose comme euh, voila.no-bear. Maintenant, avec celui-ci, vous pouvez obtenir 50 prospects supplémentaires gratuitement. Je ne vais pas vous le montrer, c'est le même genre de chose que hunter.io. Ils vous montrent comment l'utiliser ici. Essentiellement, vous pouvez simplement rechercher des personnes et essayer de trouver leurs adresses e-mail. Il y en a une que je veux vous montrer que j'utilise et avec laquelle j'ai beaucoup de succès, et c'est clearbit. Et clearbit doit être utilisé dans Chrome. Je vais donc ouvrir ceci ici. Clearbit doit être utilisé dans Chrome. Vous pouvez donc télécharger l'extension Chrome pour Clearbit, et tout ce que vous avez à faire est d'aller sur Google. Laissez-moi me connecter rapidement, puis je vais simplement sélectionner le compte gratuit que nous obtenons. Nous obtenons tellement de recherches, 100 e-mails par mois.

Donc, essentiellement, vous allez rechercher "Clearbit Connect", et vous diriez simplement : "Hé, Clearbit Connect". Je mettrai un lien ci-dessous, au fait, mais Clearbit Connect est génial. Vous verrez pourquoi ici dans une seconde une fois que j'aurai autorisé cela. D'accord, nous allons descendre ici, reconnaître, probablement donner notre premier-né, et puis maintenant nous allons dire : "Hé, je veux trouver des e-mails", et voici toutes sortes de choses que nous pouvons rechercher. Vous pouvez voir TCM Security ici. Ce sont des recherches que j'ai faites. Ce ne sont pas des clients à moi, ce sont juste des recherches que j'ai faites dans le passé, peut-être à la recherche d'informations ou à la recherche de prospects potentiels ou quoi que ce soit.

Donc, si je viens ici et que je dis : "Hé, je veux chercher TCM Security", vous pouvez le taper. Je vais simplement cliquer sur TCM Security et regardez ce qu'il a découvert que les autres n'ont pas. Il m'a découvert. D'accord. Et si je clique sur moi, regardez, il dit : "Hé, à tcm-sec.com. D'où cela vient-il ?" Et puis regardez, il a mon LinkedIn ici aussi. C'est incroyable. C'est génial. Et il dit ici : "Vous pouvez envoyer un e-mail à Hé, cliquez simplement sur ce bouton." Et puis il a aussi Rizwan. Rizwan est dans mon équipe de vente. Regardez, il a rizwan@tcm-sec.com. Qu'est-ce que cela vous dit ? Cela vous dit que nous utilisons une base de prénom pour nos adresses e-mail. C'est génial.

Maintenant, venons ici et peut-être que nous voulons regarder Tesla. Peut-être, essayons Tesla une fois de plus. Peut-être que nous recherchons le CSO de Tesla. Tesla a un CSO. Vous pouvez venir ici et regarder. Elon Musk est juste là, évidemment PDG, mais vous pouvez venir ici et peut-être aller par rôle, et ils ont différents rôles ici. Donc, PDG. Voyons si nous pouvons trouver une sorte de CSO. Je n'en vois pas, mais je vois "Information Technology". Donc, peut-être que nous pouvons trouver quelqu'un du département "Information Technology" ou du département informatique. Et puis voilà. Nous avons pas mal de personnes informatiques. Voici un CIO. Cela pourrait être quelqu'un d'intéressant à qui nous pourrions vouloir nous adresser. Et nous pouvons simplement faire défiler cette liste et trouver des personnes. Disons donc que nous voulons nous adresser au CIO. Cliquez simplement dessus. Nous obtenons la première initiale, le nom de famille, tout comme nous pensions que ce serait le cas. Nous obtenons la page LinkedIn de cette personne, son emplacement, son site web. C'est génial, génial, génial.

Donc, je commence généralement par une recherche Google si j'essaie de trouver quelque chose. Je commence par une recherche Google. Je dis : "Qui est dans ce rôle dans cette entreprise ?" Si je recherche une personne spécifique dans une entreprise, alors je vais sur phonebook.cz ou hunter.io pour essayer d'identifier le format de l'e-mail, puis essayer de trouver cette personne ou de l'estimer. Une fois que nous arrivons à ce point, j'essaie de ne pas épuiser ces Clearbit, sauf si j'en ai besoin. Mais Clearbit est très bon pour identifier cela. Une fois que nous arrivons à ce point, nous pouvons prendre cet e-mail, disons comme ceci, cet e-mail, ou nous allons même essayer un e-mail différent. Je vais vous montrer quelques-uns, mais nous pourrions prendre cela et essayer de le vérifier.

Il existe un site web appelé Email Hippo. Vous pouvez aller sur tools.verifyemailaddress.io, et tout ce que vous avez à faire est de taper une adresse e-mail ici. Parfois, vous pouvez obtenir de faux positifs s'ils sont bons ou mauvais. J'ai tapé cette adresse e-mail plusieurs fois et j'ai juste obtenu un mauvais résultat. C'est une adresse e-mail qui n'existe pas. Essayons maintenant une adresse e-mail que nous avons vue : info@tcm-sec.com. Voyons si cela fonctionne. Le résultat est "OK". Donc, il dit : "Oui, cette adresse e-mail fonctionne." Donc, nous vérifions que c'est bien ça. Donc, disons que vous trouvez quelqu'un et que vous voyez qu'il a une adresse e-mail potentielle, vous pouvez venir ici et essayer de la vérifier d'abord et voir si cela fonctionne avant de vous lancer dans un e-mail. Ou ne le faites pas. Vous n'avez pas à envoyer d'e-mail. Vous n'avez pas à faire quoi que ce soit ou à interagir.

C'est donc l'avantage, comme si vous étiez d'un point de vue commercial et que vous faisiez de l'OSINT ici. C'est l'avantage de ne pas avoir à envoyer d'e-mail, à perdre votre temps, à le faire rejeter. Vous pouvez venir ici et simplement valider. Si vous faites une enquête, vous ne voulez pas interagir avec la personne ou l'entreprise que vous enquêtez. Vous voulez venir ici et simplement vérifier sans aucune interaction. C'est la façon de faire. Même chose avec ce site web ici, email-checker.net. Valider l'adresse e-mail - checker.net. Valider, dites : "Hé, je vérifie l'e-mail." J'ai mis la même adresse e-mail ici. Vous pouvez voir qu'elle dit "Bad". Nous pourrions réessayer avec info@tcm-sec.com et voir si cela fonctionne, et il dit "OK". Donc, encore une fois, cela fait un excellent travail. Il y a des possibilités de faux positifs. Il y a tellement de recherches que vous pouvez faire par mois sur ceux-ci. Je crois qu'ils ont des API, ce qui est bien si vous voulez automatiser cela ou le script. Mais je pense que c'est fantastique. C'est du bon matériel.

Il existe de nombreuses autres façons de vérifier les adresses e-mail. Dans la section suivante, nous en parlerons encore plus lorsque nous parlerons des données de violation, car si quelqu'un apparaît dans une violation de données, devinez quoi ? Nous aurons cette adresse e-mail qui a été utilisée dans le passé. Si vous regardez quelque chose comme "I've Been Pwned", dont je parlerai dans la section suivante, et qu'ils apparaissent, devinez quoi ? L'adresse e-mail de cette personne a existé. Nous essayons donc de vérifier si une adresse e-mail existe, à qui cette adresse pourrait appartenir, etc.

Ceci est plus du point de vue commercial. Une partie de cette traque d'e-mails peut être plus difficile à faire si vous essayez de trouver un individu spécifique. C'est là que les données de violation entrent en jeu, et beaucoup de ces recherches, et ce que je vais vous montrer dans la section suivante, nous essaierons de traquer des individus avec peut-être des bribes d'informations comme un nom ou un nom d'utilisateur ou quelque chose de ce genre. Les données de violation peuvent être très, très utiles. Donc, cela ne fait qu'effleurer la surface.

Il y a une dernière chose que je veux vous montrer, une dernière petite astuce. Ne sous-estimez pas les mots de passe oubliés. Ne les sous-estimez pas. Allons sur Google, par exemple. En ce moment, je me connecte sous un compte qui est : "S'il vous plaît, ne me piratez pas, monsieur, s'il vous plaît." Donc, c'est "s'il vous plaît, ne me piratez pas, monsieur, s'il vous plaît". Je crois que je vais essayer de cliquer sur suivant. D'accord.

Alors, d'abord, il a dit : "Hé, bienvenue. Hé, qu'est-ce que cela signifie ?" Cela signifie que nous avons un compte valide ici, c'est génial. C'est une validation que ce compte Gmail existe. Voici autre chose que nous pouvons utiliser pour lier potentiellement à un autre compte ou aider à valider. Disons que nous savons que cet e-mail appartient à quelqu'un qui harcèle quelqu'un d'autre. Nous ne savons pas qui est cette personne, elle utilise cet e-mail usurpé, mais peut-être que nous en avons cent, peut-être que nous n'en avons pas. Peut-être que nous voulons juste obtenir plus de données. Vous pouvez aller sur "Mot de passe oublié", et il dira : "Quel est le dernier mot de passe que vous vous souvenez avoir utilisé ?" Je ne sais pas. Essayons une autre façon. Descendez ici et il dit : "Hé, laissez-moi agrandir ça. Google enverra un code de vérification à H", et il dit : "Regardez, il montre le reste des chiffres ici." Et puis à TC. Cela vous donnerait une indication assez claire si vous suivez qui est votre sujet, que cet e-mail pourrait être lié à quelqu'un d'autre. Regardez, c'est : hé, tcm-sec.com. D'accord. Donc, cet e-mail m'appartient. Cela me relie. Maintenant, vous avez un autre point ici. Donc, si vous saviez à propos de cette adresse e-mail et que vous avez maintenant le lien, le lien pour garantir que cette personne, c'est une preuve ici.

Disons que vous faisiez quelque chose, ce que nous apprendrons à nouveau dans la section suivante, où vous parcourez les données de violation, vous trouvez un nom d'utilisateur qui correspond à cet e-mail, et correspond également à cet e-mail, mais les gens peuvent réutiliser les noms d'utilisateur. Il pourrait y avoir plusieurs personnes qui utilisent le même nom d'utilisateur. Vous devez donc vérifier ou certains liens. Ce serait une preuve d'un lien entre ceux-ci. Une preuve assez solide, si vous me demandez, si vous pouvez dire : "Hé, j'ai identifié deux adresses e-mail avec le même nom d'utilisateur. J'ai fait une récupération de compte, je suis venu ici et j'ai vu que cela avait le même premier caractère et le même nom de domaine." Je pense que c'est une corrélation assez forte.

Donc, des choses à considérer. Que vos roues tournent. Essayez d'identifier les adresses e-mail de toutes les manières possibles. Nous couvrirons cela plus en profondeur dans la section suivante, et je suis vraiment enthousiaste car la chasse aux mots de passe est l'une de mes choses préférées. Alors, allons-y et passons à la section suivante lorsque nous parlerons de l'OSINT des mots de passe.

D'accord, j'aimerais que vous alliez sur github.com, puis une fois que vous y êtes, allez simplement faire une barre oblique H Maverick Adams, H M A V E R I C K Adams et appuyez sur Entrée. Et vous pouvez me voir avec ma photo élégante, mais ce que nous recherchons, c'est que je veux vous montrer un outil que j'ai écrit appelé BreachParse, et nous allons parcourir ce qu'il fait. Maintenant, allez cliquer sur BreachParse, et vous verrez un script bash et une petite description. Vous n'avez donc pas besoin de le télécharger. Laissez-moi vous dire ce que nous faisons ici. Ce lien magnet, vous aurez besoin d'un torrent, d'une sorte de uTorrent ou BitTorrent, et vous devrez le télécharger. Et c'est aussi quelque chose comme 44 gigaoctets une fois extrait, c'est un fichier énorme. Donc, vous n'avez pas à le faire, vous pouvez simplement regarder et suivre. Vous êtes plus que bienvenu pour l'installer sur votre machine. Je vais vous montrer à quoi cela ressemble.

Je vais donc aller dans mes applications et mes fichiers ici, puis je l'ai mis dans mon dossier opt. Donc, si vous venez dans opt ici, et que j'ai breachparse, si vous venez dans ce dossier "breach compilation", ce que nous allons télécharger, vous verrez que nous avons des données ici. D'accord. Donc, ces données ont beaucoup de données différentes. Elles ont des e-mails commençant par 0, 1, 2, 3, 4, toutes ces différentes choses. Ce qui vit à l'intérieur, si nous pouvons l'afficher, ce sont des e-mails et des mots de passe. Maintenant, vous voyez que ceux-ci ont des symboles étranges à l'intérieur des e-mails, mais il y a beaucoup d'e-mails et de mots de passe ici, comme somebody@yahoo.com et leur mot de passe est 123456. Eh bien, ces mots de passe proviennent de vidages d'identifiants. Nous en avons parlé plus tôt, à propos de penser à, vous savez, l'Equifax ou la violation de LinkedIn ou Home Depot, toutes ces grandes violations qui se produisent, les identifiants sont vidés, et devinez quoi ? Ils apparaissent sur le dark web, et finalement, ils apparaissent dans ces listes.

Nous utilisons donc ces listes, et nous avons, vous cliquez sur cela, juste des centaines de fichiers ici, et encore 44 gigaoctets. Donc, ce que j'ai fait, c'est que j'ai construit un petit outil qui peut rechercher dans ces données et télécharger des noms. Nous pouvons donc jeter un coup d'œil rapide à l'outil et à ce qu'il fait, mais essentiellement, ce qu'il fait, c'est que vous mettez simplement la syntaxe. Vous recherchez quelque chose comme @tesla.com, puis vous spécifiez, vous savez, tesla.txt, et il va rechercher dans tous ces fichiers @tesla.com. Si vous êtes plus intéressé par le code derrière cela, vous êtes plus que bienvenu pour lire le code ici et voir si certains des éléments que nous avons déjà couverts avec le scripting bash et le scripting python vous disent quelque chose.

Donc, ce que nous allons faire, c'est que je vais aller dans le terminal et l'agrandir un peu, puis je vais simplement changer pour ce dossier opt, breachparse. Je vais exécuter breachparse. Donc, breachparse ici, et ce que nous allons faire, c'est que je vais simplement dire @tesla.com, puis tesla.txt, et cela va s'exécuter. Encore une fois, vous n'avez pas à l'installer, c'est uniquement à des fins visuelles. Je vais vous montrer dans la prochaine vidéo une autre façon de le faire. Cela va parcourir, cela va prendre une minute ici, et cela va récupérer le nom d'utilisateur et le mot de passe de tout le monde qui dit tesla.com et le nom d'utilisateur, puis il aura tous les mots de passe, et nous serons en mesure de déchiffrer des choses à partir de cela. Je vais laisser cela s'exécuter, et dès que ce sera terminé, je reviendrai et nous parlerons des résultats.

D'accord, les résultats sont de retour. Cela se divise en trois fichiers. Il y a un, c'est cat Tesla, il y a un master passwords et user. Donc, le master a le nom d'utilisateur et le mot de passe, et ensuite le fichier users a les mots de passe. J'ai donc l'intention de Gedit le Tesla master.txt et de jeter un coup d'œil.

Donc, à partir d'ici, nous n'avons pas une grande liste, étonnamment, pour une entreprise de la taille de Tesla. Donc, ce qui se passe, c'est que les gens utilisent leurs identifiants de travail, leurs e-mails de travail, et ils se connectent à des sites web et probablement ne devraient pas utiliser leurs e-mails de travail. Et nous l'utilisons à notre avantage. Ce que nous recherchons, ce sont non seulement ces noms d'utilisateur, mais aussi ces mots de passe. Nous voyons donc ces noms d'utilisateur et nous voyons ces mots de passe. Et j'aime rechercher les récidivistes. J'aime rechercher la syntaxe également. Rappelez-vous, nous avions la première initiale, le nom de famille, mais nous voyons ici le prénom.nom.de.famille. Nous voyons peut-être, vous savez, juste un seul nom. Il y a différents types de choses ici. Donc, euh, Nick@tesla.com aussi. Donc, vous savez, c'est différent. Je pense qu'aujourd'hui, c'est la première initiale, le nom de famille, mais peut-être qu'ils utilisaient dans le passé le prénom.nom.de.famille, puis sont passés à.

un format plus facile ou vice versa ils ont commencé par le premier nom initial le nom de famille ils sont devenus trop gros puis ils ont dû faire prénom point nom de famille mais encore une fois ce que nous recherchons ici, ce sont les délinquants potentiels récidivistes, alors regardez ce requin à tesla.com, il a été attrapé deux fois et le mot de passe est très, très, très similaire, donc si j'attaquais tesla.com via une interface de connexion, je pourrais pulvériser ce nom d'utilisateur avec ce mot de passe et ce mot de passe, c'est ce que nous appelons le bourrage d'informations d'identification, car nous connaissons déjà les mots de passe, puis je pourrais faire quelques modifications de lettres majuscules et minuscules avec d-a-d-e car 907 et 814 semblent être cohérents, vous savez, donc j'alternerais les majuscules et les minuscules ici en minuscules et je verrais juste si quelque chose colle. C'est donc quelque chose d'intéressant, cet utilisateur ici, un deux trois quatre cinq un deux trois quatre cinq étoiles, probablement pas d'entrée avec ça sur une entreprise comme Tesla, mais on ne sait jamais, mais c'est ce que nous ferions, nous prendrions les noms d'utilisateur, nous lancerions ces mots de passe dessus, et c'est ce qu'on appelle le bourrage d'informations d'identification, puis nous prendrions ces noms d'utilisateur et tous les noms d'utilisateur connus et nous lancerions des mots de passe dessus comme automne 2019, comme nous en avons parlé dans la dernière vidéo, c'est le printemps des mots de passe. C'est donc une partie importante et très, très critique de la collecte d'informations, la collecte de ces noms d'utilisateur et de ces informations d'identification dès le départ, vous voulez identifier ceux qui ont vos cibles. C'est donc un peu à quoi cela ressemble, c'est ce que je fais lors de chaque évaluation et j'espère que cela a du sens et que cela fonctionne. Dans la prochaine vidéo, nous allons continuer et montrer une autre méthode et recommencer à réfléchir à ces informations d'identification et à la façon dont elles peuvent être utilisées, puis nous ferons d'autres collectes d'informations au fur et à mesure que nous avancerons et apprendrons des techniques et comment nous pouvons obtenir des informations sur un client. Je vous verrai donc dans la prochaine vidéo. D'accord, parlons de la chasse aux informations d'identification compromises et passons à la pratique. Avant de commencer, je sais que j'ai insisté là-dessus au début du cours, je vais insister à nouveau. Ce que je vais vous montrer ici pourrait changer. J'ai sorti un cours il y a environ un an qui portait sur le piratage éthique. Nous avons parlé des informations d'identification compromises et j'ai utilisé un site Web appelé we leak info. We leak info a ensuite été fermé et j'ai reçu toutes sortes d'e-mails disant : « Hé, c'est fermé, je ne sais pas quoi faire, il y a plus là-bas. » D'accord, il y a toujours plus là-bas. Ce que je vous montre, c'est la méthodologie. Je pourrais vous montrer sur un site Web spécifique, ce que je vais faire. Ce site Web pourrait disparaître demain, nous ne le savons jamais. Mais ce que vous devez retenir, c'est le processus de pensée et la méthodologie derrière ce qui va se passer. À partir de là, vous pouvez prendre cela et l'utiliser ailleurs. Donc, si un site Web disparaît, vous avez toujours les mêmes pensées, pourquoi vous le faites et pourquoi vous y pensez. Alors, allons-y et passons à un site Web maintenant. Je veux vous emmener sur un site Web appelé D hash. C'est dhash.com. Je ne m'attends pas à ce que vous puissiez suivre à ce stade, car cela coûte de l'argent. C'est cinq dollars pour une semaine, c'est cent cinquante dollars pour un an. C'est seulement utilisé pour prendre des cartes de crédit. Ils ne prennent maintenant que le Bitcoin, je crois, ou une sorte de cryptomonnaie. Absolument ça vaut le coup à mon avis. Obtenez même une semaine, obtenez une semaine, voyez si vous l'aimez, c'est incroyable. Il y aura des outils que je vous montrerai plus tard dans le cours qui passeront en revue et nous pourrons le faire localement, comme celui que je viens d'exécuter dans la dernière vidéo. J'ai exécuté breach parts. C'est quelque chose que j'ai mis en place et configuré, mais c'est gratuit, mais la base de données n'est pas entretenue, la recherche est lente, je n'obtiens pas les résultats aussi instantanément et je ne peux pas la lier à autant de points de données qu'un site Web comme celui-ci. Je pense que ce site Web est génial. Parlons maintenant de ce que D hash peut faire. Maintenant que je suis connecté, nous avons la possibilité de rechercher par, laissez-moi agrandir un peu. Nous avons la possibilité de rechercher par e-mail, nom d'utilisateur, adresse IP, nom, adresse, numéro de téléphone, VIN. D'accord, réfléchissez à ceci. Disons que nous connaissons une adresse e-mail. D'accord, nous connaissons une adresse e-mail, disons que c'est Bob, Bob@tesla.com. Nous n'allons pas encore chercher cela. Nous prenons Bob et nous savons que Bob a un compte et nous le cherchons. Nous le cherchons, Bob apparaît et nous voyons que Bob apparaît et nous voyons peut-être son nom comme Bob Jones ou quelque chose comme ça, peut-être quelque chose dans lequel il a été divulgué, a son adresse, ou peut-être qu'il y avait une adresse IP liée au client que vous recherchez ou à la personne que vous recherchez. Tout cela peut être identifié. Et si Bob a un nom d'utilisateur, c'est comme Bob, Bob rocks123. D'accord, nous pouvons rechercher ce nom d'utilisateur ici et voir si ce nom d'utilisateur s'est répété. C'est génial. Nous pouvons rechercher par mot de passe. Alors disons que le mot de passe de Bob était Bob rocks123. Nous pouvons rechercher ce mot de passe et s'il est suffisamment unique, alors peut-être que nous pouvons réellement faire des recherches avancées. Comme si nous revenons à l'exemple de la dernière fois, comme cette dernière vidéo, nous avons vu ce 907 d-a-d-e-814. Nous pourrions le mettre dans un moteur de recherche et voir s'il correspond à autre chose. Peut-être qu'il correspond à un utilisateur qui n'est pas à tesla.com, mais peut-être que c'est comme Bob@gmail.com, et alors devinez quoi, maintenant nous avons le compte personnel de Bob, ou maintenant nous avons Bob lié à un autre compte e-mail, surtout si nous recherchons par nom ou quelque chose qui peut les lier ensemble. Nous devons commencer à pouvoir relier d'autres comptes les uns aux autres. Nous pouvons le faire avec le hachage. Nous pouvons le faire avec les mots de passe. Il y a beaucoup de choses que nous pouvons faire et nous voulons commencer à lier cela ensemble. Comme exemple concret, lorsque je regarde une organisation et que je fais des recherches sur le hachage ou que je fais des recherches sur les informations d'identification compromises, j'essaie de penser, d'accord, d'abord, si mon client, si mon client est tesla.com, je pourrais venir ici et rechercher @tesla.com et je pourrais voir combien de résultats il y a ici. Voyons ce qui se passe. D'accord, voici George@tesla.com. George a été dans des données partagées, donc il n'y a pas de détails de données réels ici, à part un nom d'utilisateur potentiel, un nom, un e-mail. D'accord, la même chose avec la sécurité, nous devrions faire défiler et voir si nous pouvons trouver quelque chose qui, d'accord, voici Adobe. Maintenant, Adobe aura un, il y a en fait un Bob et Tesla, Bob@Tesla a un mot de passe haché ici. D'accord, alors maintenant nous pourrions dire, d'abord, nous pouvons aller voir si nous pouvons découvrir ce qu'est ce hachage, dont nous parlerons dans une seconde. Nous pouvons également dire, d'accord, Bob, Bob existe-t-il ailleurs ? Ce hachage existe-t-il ailleurs sur ce site Web ? Pouvons-nous le lier à un autre compte qui, même si nous ne cassons pas le mot de passe, alors nous pouvons dire, d'accord, ce Bob, cela se lie à Bob@gmail.com. Alors, comme je le noterais et je le prendrais et je le copiais. Donc, d'un exemple concret, je prendrais toutes les données que je vois sur ce site Web, je collecterais tous les mots de passe, tous les noms d'utilisateur et tout. Alors, comme Tesla 9, tout cela, je veux savoir quels sont les mots de passe, je veux savoir qui sont les gens, je veux savoir toutes les données, car si je peux commencer à trouver des modèles, si je peux commencer à assembler les choses, peut-être que je peux même les relier à leurs comptes e-mail personnels, comme nous en parlons, et alors je pourrais voir des modèles de mots de passe là-bas ou d'autres mots de passe et juste commencer à lier cela, car mon objectif est de pénétrer dans une organisation. Si je fais un test d'intrusion, mon objectif est de pénétrer dans une organisation. Donc, je prendrai ces données et si je peux trouver d'autres mots de passe liés à un compte personnel, je n'essaierai pas de pénétrer dans un compte personnel, mais je prendrai ces données et je les assemblerai et j'essaierai peut-être de pénétrer dans leur compte de messagerie professionnel avec ces mots de passe ou ces informations. Cela peut également être lié à une enquête si vous traquez un individu, vous essayez de le lier à d'autres comptes. C'est incroyablement utile si vous pouvez trouver ses données dans une base de données compromise et avoir un mot de passe, et que ce mot de passe est unique, vous pouvez le rechercher, peut-être le trouver ailleurs. Vous trouvez une adresse IP, vous trouvez un nom. Il y a souvent des adresses IP ici que nous pouvons lier à un emplacement possible et voir, voici ce 9078 ou Dade 814. Nous pourrions prendre cela et peut-être le rechercher et voir s'il correspond à autre chose. Qui sait, requin@Tesla, requin@Tesla. D'accord, sharkmail.ru. Regardez, c'est une nouvelle adresse e-mail que nous ne connaissions pas auparavant. Et regardez, cela nous rend service. Nous recherchons d-a-d-e, mais voici la majuscule. Nous n'avons pas recherché la majuscule. Nous ne recherchons pas spécifiquement. D'accord, et maintenant nous obtenons plus d'informations. Regardez, voici une pour Dropbox. D'accord, cela vous indique d'où cela vient et comment vous pouvez le lier. Si nous pouvons obtenir un nom quelconque à partir de cela, n'importe quoi, ce serait incroyable. Nous pouvons obtenir le nom d'une personne ou une adresse IP et nous pouvons commencer à les identifier. Mais lorsque vous effectuez différentes recherches comme celle-ci, vous devez commencer presque, vous savez, comme dans les enquêtes où ils ont le fil rouge et qu'il va d'un point à un autre, vous devez un peu zigzaguer d'avant en arrière et vraiment essayer de lier cela, et vous verrez cela lorsque nous aborderons le reporting, comment vous pourriez prendre un individu et vraiment juste voir comme un mot de passe lié à un compte lié à ceci, et c'était la méthodologie exacte que nous avons utilisée pour arriver à ce point, car lorsque vous rédigez un rapport, vous voulez vous assurer que moi, la personne d'investigation, ou disons que vous vous adressez à la police ou quoi que ce soit, vous voulez vous assurer que la personne qui fait ce que vous avez fait ou qu'elle peut reproduire ce que vous avez fait facilement et qu'il n'y a aucun doute à ce sujet. C'est donc une partie des recherches que nous pouvons faire. Maintenant, si nous revenons à dehashed, nous pouvons venir ici et nous pouvons rechercher par e-mail, nom d'utilisateur, nom, nom, n'importe quoi. Vous pouvez donc mettre votre nom ici. Je veux dire, si vous voulez chercher ici, je pense que c'est génial. Vous pouvez venir ici et simplement rechercher votre nom. Revenons, recherchons à nouveau Tesla. J'ai vu un hachage là-dedans. Les hachages Adobe sont assez intéressants. Ils ne sont pas les plus faciles à saisir, mais voyons, trouvons ce hachage Adobe. Alors disons que nous obtenons un hachage comme celui-ci, nous pourrions essayer d'identifier ce qu'est ce hachage. Nous pouvons essayer de casser ce hachage. Nous pouvons voir s'il a été cassé ailleurs. Ce hachage, à l'heure actuelle, nous n'en avons aucune idée, mais nous savons Bob@tesla.com. Nous pouvons peut-être le coller ici d'abord et voir s'il se lie à quelque chose. Et il y a 22 résultats. Vous savez, je chercherais probablement quelqu'un qui a ce mot de passe avec le nom de Bob. Ce ne sera probablement pas comme un Brett ou un Michael, vous savez. Nous pourrions vouloir voir si nous pouvons trouver un autre compte quelque part ailleurs, mais tous ceux-ci se lient à un hachage d'Adobe. Donc, selon la façon dont ils ont haché ces données, nous pourrions ne rien trouver d'autre d'intéressant, mais vous pouvez voir toutes les choses ici, toutes les différentes opportunités qui sont là pour nous de simplement faire des recherches et de lier des informations. Maintenant, nous pouvons aller sur un site Web appelé hashes.org et si nous venons ici, nous avons la possibilité d'essayer de rechercher ce hachage. Nous pouvons donc rechercher des hachages et voir si nous pouvons le trouver. Vous pouvez donc venir ici et simplement le coller et encore une fois, il ne fait pas un excellent travail à mon avis avec les hachages Adobe. Parfois, ils sont cassés, mais la plupart du temps, il dit qu'il ne peut pas les trouver. Oops, voilà. Essayons de lancer une recherche ici. D'accord, il dit que ce n'est pas un hachage valide. Maintenant, si vous mettez cela dans Google comme une recherche, vous pouvez voir que cela n'a rien donné non plus. Nous voulons donc nous assurer que lorsque nous recherchons cela, vous savez, nous essayons toutes les options. Il existe une base de données Adobe où si vous entrez un hachage et qu'il apparaît, il existe une base de données GitHub Adobe qui apparaîtra effectivement ici. Donc, cela étant dit, c'est un peu ce à quoi je veux que vous commenciez à penser lorsque nous traquons les informations d'identification compromises. Comment puis-je prendre une personne ou une entreprise que j'examine ? Donc, si vous avez une entreprise, vous pouvez simplement aller à nomdelentreprise.com ou .net ou quoi que ce soit, rechercher ici, voir comment elle apparaît. Si vous avez une personne, peut-être un compte e-mail personnel, si vous pouvez trouver cette personne, si vous connaissez son compte e-mail, vous venez ici et dites Bob@gmail.com. Peut-être que vous ne connaissez pas son adresse e-mail, alors peut-être que vous venez ici sur la page principale, vous dites, d'accord, je vais chercher un nom, je vais chercher Bob Jones et rechercher cela, puis vous commencez à prendre cela et à essayer de trouver les modèles. Si vous savez que Bob vit quelque part, peut-être que vous pourriez trouver une adresse pour Bob, ou peut-être que vous savez que Bob vit en Arizona, vous pourriez rechercher Bob Jones et voir si Bob apparaît. Et puis, à partir de là, il existe des opérateurs de recherche que vous pouvez utiliser. Vous pouvez voir que Bob Jones prend une éternité. Vous pouvez mettre cela entre guillemets et le rechercher à nouveau et affiner vos résultats ici. Alors, si nous cliquons là-dessus, vous pouvez voir, voici un nom, nous avons beaucoup de résultats, mais voici le nom Bob Jones. C'est un nom très courant, mais vous pouvez voir que si nous essayons de le rechercher, nous pouvons commencer à rechercher et à ajouter des opérateurs ici et à essayer de voir si nous pouvons trouver un nom d'utilisateur ou quelque chose qui lui est lié. Donc, encore une fois, faites travailler votre cerveau, ne vous fiez pas uniquement à dehashed, mais fiez-vous à la réflexion à ce sujet. C'est la chose à laquelle vous devriez penser. Encore une fois, le hachage pourrait disparaître demain, mais si vous y réfléchissez de la manière dont les informations d'identification et les informations peuvent être entrelacées, souvenez-vous de ce fil rouge. C'est vraiment ce que je veux que vous reteniez. Nous allons donc faire une autre vidéo à ce sujet. Je vais vous montrer quelques autres outils qui existent et d'autres choses que vous pouvez faire, offrir des alternatives à cela, puis nous conclurons cette section. Je vous retrouverai donc dans la prochaine vidéo. D'accord, nous avons atteint la fin de la première partie. Je vais à nouveau mettre le lien vers la deuxième partie dans la description ci-dessous. Alors, allez-y et cliquez dessus si vous avez terminé ceci, et nous nous retrouverons dans la deuxième partie de la vidéo.