Je m'attaque tranquillou à ma journée, après un rapide passage sur Kbr qui augmente ma vitesse de frappe, je déplore juste le fait que les mots soient aussi bizarres et aussi trompeurs, je n'arrive pas encore à taper sans regarder, ça viendra avec la pratique je suppose. 

Nous sommes lundi, je me mets sur Python in ethical hacking car j'ai mes VM à portée de main ce coup-ci. Je m'amuse un peu avec le script permettant de changer sa mac, c'est assez simple, il suffit d'appeler des commandes avec subprocess.run(), je commence à piger pourquoi Python est sympa pour le hacking éthique et ses utilisations possibles. Je prépare ensuite mon environnement de développement pour du scapy, je mets tout à jour et je me mets un environnement virtuel correct. La syntaxe est étrange, surtout le fait de concaténer avec "/" avec scapy. J'apprends la commande arp -a, qui est cross-platform et qui renvoie tous les appareils du réseau si j'interprète bien les résultats. Je m'arrête juste avant le chapitre sur les attaques MITM.

Changing Mac

Je passe sur Udemy pour continuer et finir la section sur le HTML. Je continue sur la section CSS, je n'ai globalement rien appris avec la première section, je pars pratiquer sur OdinProject, je pense que je vais mettre de côté Udemy un temps. Sur OdinProject je découvre le site explainshell.com qui décompose les commandes compliquées de Linux point par point, ce qui est pas mal. Je commence enfin l'introduction au HTML, je me renseigne un peu plus sur les charsets.

Je continue sur w3schools où je me mange un peu d'exercices HTTP. J'y découvre le tag <abbr> et <bdo> que je n'avais jamais mais alors jamais croisé. Je passe un quizz html toujours sur ce site que je réussis haut la main, je pense que je vais tout de même parcourir le cours HTML puis CSS puis JS et que ça me servira de ressource car je ne pense pas qu'il soit nécessaire, pour moi, de se bouffer 30 heures de contenu pour les bases HTML/CSS, je reprendrai sérieusement à partir du JS, je pense.

Quizz html

Je passe sur TryHackMe, direct sur la room qui m'avait énervé la dernière fois que j'en ai fait, à savoir Wireshark 1. Depuis, j'ai demandé de l'aide sur le serveur Discord et je sais quoi faire, à savoir suivre les instructions du paquet 12, extraire une image et lire le hash inclus à l'intérieur, je ne sais pas encore quelle méthode je vais utiliser pour extraire le hash de l'image... J'attrape l'image, je tente de la passer dans des outils de forensique, voir si le hash est caché dans des métadonnées par exemple. Je fouine dans Wireshark pour voir si les bytes peuvent être traduits, en Raw ou en YAML, c'est lisible pour un humain, il faudrait voir si c'est traduisible, j'ai beau passer par un YAML Viewer, rien n'y fait, j'ai toujours un bordel devant les yeux. Je tente Pyyaml pour décoder mon fichier, rien, toujours rien. Je teste une nouvelle fonctionnalité, à savoir Follow TCP Stream, qui ne me donne pas de résultats probants non plus. Je tente par md5sum et ça passe. Hourra! Je continue dans cette room.

Stuck YAML

Je dois trouver un fichier txt dans le fichier de capture, encore une fois, la consigne n'est pas très clair. Lequel, le 12? Ou celui dont je viens? Je tente d'exporter et je tombe sur deux paquets qui ont un fichier texte, je les passe en html pour pouvoir les lire, je tombe sur un truc nommé ServForce mais vu la tronche que ça a je fais fausse route. Je le trouve en filtrant mes exports et en faisant un coup de cat.

Je continue toujours sur cette room, je coince sur le nombre de paquets. Je suis allé dans la section expert info, j'ai filtré selon les warnings et j'obtiens 1040 paquets, ceci dit ce n'est pas la bonne réponse... Je scrolle horizontalement et apparemment j'en aurais 1636, soit. Je continue avec la tâche 5. J'ai quand même passé trois tomates là-dessus ce qui n'est pas négligeable.

Je fais une pause puis je retourne sur mes projets Python. Je vais tenter de récupérer les prix des articles que je fournis à mon script Python par les classes CSS contenues dans la page. Je tente de cibler les caractères "€" ce qui s'avère plus complexe que prévu, je vais passer par les regex. Je modèle ma regex ainsi, on veut des chiffres puis le signe € soit \d*€? ce qui me renvoie, sur le site de google shopping un nombre énorme de résultats ce qui me surprend assez. Je change alors de technique et de site, car google est trop complexe, je passe sur chasse-aux-livres qui fonctionne très bien et je vais tenter de cibler le comparateur de prix de la première recherche. Je continue, je vais tenter de passer tout ça en GUI, hélas j'ai un problème de rythme dans mon programme, on cherche à lancer une interface graphique, sauf que j'ai un input() qui en bloque l'exécution. Je réussis ,en commentant tout sauf la fonction qui m'intéresse, à avoir le fonctionnement attendu. Je vais me concentrer sur la préparation du script en POO, pour me faciliter la tâche ensuite.

Petite pause pour me reposer les yeux, j'ai quasi fini ma journée et j'en suis très fier. Je finis sur un peu de CodinGame, avant de partir me détendre. Je ne tombe que sur des clashs incompréhensibles, dont un reverse, ce qui m'agace... Je passe donc sur un puzzle qui j'espère sera mieux expliqué. Je passe sur Retro Typewriter Art. Résumons l'énoncé, on a des instructions fournies en input, avec des caractères spéciaux et d'autres avec un chiffre en premier qui définira le nombre d'occurrences du second charactère. J'essaie de récupérer tout ça dans une liste. Je m'approche de la solution avec les slices mais j'ai un souci car les seconds charactères s'affichent également. Par exemple j'ai " sp" alors que je devrais avoir " " tout seul. Je passe la plupart des tests une fois avoir parsemé ma boucle avec des continue, un des tests est diabolique, le second élément, normalement non numérique, contient des chiffres ce qui ne peut pas passer avec mon code, je trouverai un moyen demain.

 

Nous sommes mardi, je commence par faire mes fiches sur le CEH Study Guide ce qui est très bénéfique puisque les infos commencent à rentrer. Je me fais une tomate de 25 minutes sur le Computer Networks de Tannebaum pour rester dans le même mood.

Je ne sais pas de quand je date ce bouquin, cependant je pense que les notions que j'y trouverai me serviront de bases pour la suite. Je revois le modèle client-server, et je passe l'introduction. Je passe également la plupart du premier chapitre qui n'est qu'un tour d'horizon de l'utilité des réseaux. Je lis attentivement les distinctions entre LAN/MAN/WAN, malgré le fait que je connaisse leurs différences. J'aime beaucoup le schéma pour expliquer les couches OSI, l'auteur prend l'exemple de deux philosophes ne parlant aucun langage en commun, les traducteurs aidant les philosophes choisissent donc un langage commun pour pouvoir établir une communication.

Explaining layers

Je continue sur w3Schools où je pense faire deux tomates. Je commence mon apprentissage, enfin plutôt mon reboot sur le CSS. Je revois les trois façons de styler une page, dans une ligne, dans un fichier interne avec le <style></style> et dans un fichier externe avec le <link rel="" href="">. Je continue avec la façon de nommer une couleur CSS, à savoir soit par son nom soit par, ce que je trouve optimal, par le rgb() car on peut caser la transparence directement tout comme hsla() en vrai, mais je déteste cette façon, je la trouve beaucoup moins claire. Je ne connaissais pas la propriété background-attachment, qui permet de définir si une image en background "suit" l'utilisateur quand il scrolle, certes c'est très situationnel, mais je suis content d'apprendre quelque chose. Je continue avec les bordures, je m'en souviens bien assez. Je passe le chapitre. Je revois margin et padding. Un schéma très bien foutu me rappelle comment marchent les marges en CSS, on a la marge, puis la bordure, puis le padding et enfin le contenu, c'est le box model. Je ne me souvenais pas des propriétés outline qui permettent de dessiner autour des éléments, en dehors du box model donc, ce qui peut-être assez joli. Le outline-offset en particulier me plaît assez, il définit l'espace entre l'élément et la dite outline, et cet espace est transparent. Première tomate finie.

Box model

Tomate suivante, je reprends sur w3Schools, comme promis. Je continue avec les polices d'écriture. Je me souviens que j'utilisais beaucoup la famille CSS cursive car je trouvais cela plus stylisé. J'apprends sur les fonts dites Web-Safe, c'est à dire qu'elles sont installées sur tous les navigateurs, il est considéré comme une bonne pratique de toujours déclarer une police d'écriture "de secours" dans la propriété font-family. L'association Georgia-Verdana a fait ses preuves, avec Georgia pour les headings et Verdana pour les textes. Je revois comment styler une liste, car j'ai quelque peu oublié tout ça, notamment les images/puces. Je suis actuellement dans le chapitre sur les tables et je découvre une technique consistant à entourer une table avec <div style="overflow-x:auto;"> qui rend le tout beaucoup moins dégueu dans un souci de responsive design. Je continue avec un gros morceau, à savoir la propriété display qui est centrale dans toute feuille de style. Il est mieux de cacher un élément avec display:none plutôt que par visibility:hidden car ce dernier prendra toujours de la place, que j'ignorais. Seconde tomate finie. J'attaque ma routine Keybr puis je pars manger. Trois tomates dans la matinée, la journée commence bien.

J'ai un projet qui vient tout juste d'être créé, avec mon compagnon de Pong. Nous allons nous attaquer à un jeu en JS dans le navigateur, un mix entre un jeu de cache-cache et un Pokémon Like, je pense que je vais faire mon setup et y consacrer une tomate. Je vais tenter de coder l'interface ou du moins la fenêtre de jeu, il me semble que ça sera un bon début. Je finis ma tomate, j'ai tenté de comprendre comment fonctionne les coordonnées du canvas, j'ai réussi à piger grâce à des bidouilles avec le contexte du canvas, je sais désormais dessiner là-dessus.

Mouvement souris

Je fais une petite pause pour tenter de pondre un sprite pour bien visualiser les contrôles du futur jeu.

Je vais me faire une tomate sur TryHackMe avec Wireshark 2. Je n'imaginais pas que cet outil était aussi complet et complexe. Je réussis à trouver toutes les informations demandées dans l'onglet statistiques, j'ai beaucoup aimé l'exercice, notamment avec le coup consistant à afficher les villes des adresses IP données. Je galère un peu plus tard pour récupérer le nombre de paquets d'un certain nom de domaine malgré mes fouilles dans les statistiques HTTP. Je change de room.

Je reprends une tomate et je passe sur Introduction to Antivirus, puis sur Lay of the Land qui est un prérequis. Je vais apprendre sur les infrastructures réseau semble-t-il. Je suis content d'avoir un chapitre sur l'Active Directory car pour l'instant je ne maîtrise pas ce sujet. J'apprends la commande "systeminfo | findstr Domain" qui permet de dire si oui ou non la machine fait partie d'un AD. Ensuite, on énumère avec "Get-AdUser -Filter *". J'apprends ensuite comment checker avec Powershell si le système dispose d'une quelconque protection, mais malgré mes bidouilles sur les commandes, rien ne marche sur l'AttackBox. J'apprends à énumérer un WAF avec "Get-NetFirewallRule" ce qui est très chouette à faire. J'apprends l'existence de sysmon, que j'ai peut-être déjà croisé, c'est le moniteur système de Windows. Je vais sûrement migrer sur la room Sysmon que, techniquement, je devais entamer après Windows Event Logs. Je finis ma tomate, je suis officiellement de rang Wizard sur TryHackMe.

Petite pause, avant d'attaquer mes projets Python. Finalement je passe un peu de temps sur mon nouveau projet de jeu sur navigateur, où je crée une classe et des fonctions pour dynamiser la chose après avoir fait un plan d'action avec mon collègue. Finalement je n'ai quasi pas codé en Python aujourd'hui mais je sens que mon cerveau a pris cher, aussi j'arrête là.

 

Nous sommes mercredi, je commence avec ma première tomate de la journée sur le Computer Networks de Tannenbaum. Je m'étais arrêté à l'internetworking ou la connexion de plusieurs réseaux. J'y apprends le terme de congestion qui est la surcharge d'un réseau car il y a trop de demandes de la part des appareils le constituant. Je ne comprends pas bien la notion de "services primitives", je suppose que c'est globalement un set d'instructions pour initier ou non une connexion.

Je relève une distinction service-protocole, car elle me paraît importante à souligner ici. Un service est un ensemble d'instructions qu'une couche offre à une autre et un protocole est un ensemble de règles qui gouverne le format des paquets. J'espère avoir bien traduit tout ça, sinon le schéma fourni par l'auteur fera l'affaire. Je revois ensuite mon modèle OSI, en particulier ce à quoi sert chaque couche puisque l'ordre des couches commence à rentrer. Tomate terminée.

Service vs protocole

Prochaine tomate et prochain objectif: finir la section HTML sur w3Schools, rapidement, pour passer direct à la pratique, c'est quelque chose que je connais, et je ne veux pas m'attarder là-dessus. Reboot de connaissance, puis pratique. Assez de tergiversations, m'enfin! J'attaque. Je crois que je m'étais arrêté au FilePath déclaré dans les balises, je reprends à partir de là et je lance ma tomate. Je revois path absolu et path relatif, que j'utilise tous les jours avec Python à vrai dire, dans un format différent. Apparemment, il est mieux d'utiliser des paths relatifs, ce qui est compréhensible et moins chiant. J'y revois <meta> et il y en a plus que dans mon souvenir notamment <meta http-equiv="refresh" content="30"> qui rafraîchit la page toutes les 30 secondes, j'ai du mal à voir l'utilité pour celle-ci... En revanche la balise meta viewport est beaucoup plus utile, toujours dans un souci de responsive design. J'analyse les exemples dans le chapitre HTML Layout, je m'amuse un peu avec, j'avais quasi oublié à quel point le CSS était fun. Je me souvenais en revanche de tous ces petits schémas sémantiquement corrects et le temps que j'ai passé à réaliser des layouts selon ceux-ci.

Layout

J'apprends sur <picture> qui permet de faire du responsive directement dans le HTML, ce qui peut-être utile pour alléger le fichier CSS. Et évidemment on enchaîne avec les media querries. J'y découvre un framework CSS que je ne connaissais pas, à savoir W3.CSS, bien sûr je ne vais pas apprendre de frameworks CSS, ce n'est aucunement dans mes objectifs, je ne fais un passage dans le front-end que pour me redonner des bases pour le back-end, car j'ai besoin de PHP et MySQL. Je revois le HTML qui doit être sémantique, le navigateur et le web-dev doivent piger directement ce qu'est le tag et à quoi il sert, pour illustrer tout ça on peut prendre l'exemple du <section>. Il est d'ailleurs amusant de constater que le code source de la page qui nous incite à prendre des balises sémantiques est elle-même dénuée de balises sémantiques et est une cascade affligeante de <div>. Je lis attentivement les conventions de codage, qui sont toujours assez plaisantes à connaître, à mes yeux. J'ai quasi fini ce qu'ils appellent le "Html Tutorial", je vais pouvoir attaquer le "Html Forms" ensuite. Ma tomate finit avant, je m'arrête à l'URL Encoding que j'ai déjà un peu croisé dans TryHackMe.

J'ai initié un nouveau projet appelé Fakebook, je vais tenter de cloner la page d'accueil de Facebook, uniquement le front-end, évidemment, pour pratiquer mon HTML/CSS/JS. Petite pause, puis j'attaque.

Original Facebook

Je lance une première tomate, je pense que deux tomates devraient me permettre d'avancer de façon significative, peut-être pas de finir la maquette mais de remplir le squelette HTML. Je pense que les boutons de changement de langue vont ensuite me poser problème, mais je n'en suis pas encore là. Je commence logiquement par la structure, puis j'attaquerai la mise en page. Je rencontre mon premier souci avec le footer qui a tendance a squatter les autres sections, je pense que je vais tenter de le dégager avec position, ce qui fonctionne, je le colle en absolute pour le pousser de l'endroit où je vais travailler, c'est à dire du body, là où j'ai un formulaire de connexion à droite et le reste de la page à gauche. La propriété vertical-align fait ce que je veux, avec la valeur text-top mes sections arrivent à peu près à l'endroit désiré, un coup de margin et ça devrait être rêglé. Hélas, ça ne s'affiche pas comme prévu, j'arrête ma tomate là-dessus.

Prochaine tomate sur mon projet de jeu en navigateur avec HTML Canvas et JS, l'objectif est de réussir à appréhender les fonctions de mouvement et de faire bouger mon carré qui est mon objet Sprite.

Je réussis l'exercice, j'ai commencé par coder des getters et setters dans ma classe Sprite, en invoquant mes setters intelligemment depuis une fonction, j'arrive à bouger mon carré après l'avoir dessiné évidemment. L'astuce consistait à effacer le carré déjà présent, ce qui posera sûrement souci niveau optimisation plus tard.

Prochaines tomates, au total deux sur TryHackMe, c'est parti, je commence avec la première sur la room Sysmon, je suis conscient d'avoir mis de côté la room Advent of Cyber 2, car j'avais besoin d'autres connaissances en reverse engineering, notamment. Je bute un peu sur les Event ID, qui identifient une certaine menace avec un certain code, par exemple l'ID 3 est une connexion réseau à distance. Pour télécharger Sysmon sans trop se prendre la tête, il est conseillé de télécharger une config optimale sur le repo SwiftOnSecurity. Je m'y suis pris comme un manche pour installer Sysmon mais ça y est, je suis dedans. Je reprends Get-WinEvent que j'avais déjà pratiqué dans la room Windows Event Logs que j'ai bien fait de faire avant. Je finis ma première tomate là-dessus.

Je continue dans la même room. Je récupère le premier event avec -Oldest que j'ai trouvé dans la documentation de Get-WinEvent. Je change de fichier à analyser, ce coup-ci on va chercher les sessions meterpreter. Je change de room pour Lay of the Land où je continue d'apprendre sur les SIEM et où je croise Sysmon, justement. J'apprends la commande wmic qui m'a l'air assez douteuse sur mon écran comparé à ce que montre la room. Il y a également net start qui liste des processus utilisée actuellement sur la machine. Je ne connaissais l'équivalent Windows de grep, à savoir findstr qui permet de piper les résultats, par exemple d'un dir ou autre. Je récupère le processus qui nous intéresse avec wmic puis je le  consulte avec Get-Process et je récupère le flag avec curl. Tranquillou pour l'instant. Je finis la room en même temps que ma seconde tomate.

Wmic

Il ne me reste que mes projets perso Python à gérer, notamment cette GUI que j'aimerais bien finir sous peu. J'ajoute deux nouveaux conteneurs pour placer correctement mes éléments dans ma fenêtre dorénavant non redimensionnable, ce que je préfère. J'ai réussi à ajouter une textbox pour contenir les informations ensuite, je voudrais en rajouter une autre pour l'url cliquable si possible et ma GUI sera complète il me restera à lier les fonctions à la GUI. J'ai compris le fonctionnement des textbox je tente de m'atteler à l'implémentation de mes fonctions dans la GUI.

Une seconde tomate devrait avancer le problème. Je réussis à imprimer mon output dans la GUI, cependant, le résultat est étrange... J'ai entouré mon résultat de str, mais c'est tout moche, affaire à suivre, pour tout de suite. Je résous mon problème avec un coup de join(). Cependant, un nouveau souci se présente. Techniquement ce n'est pas l'évènement de mon bouton qui déclenche la fonction mais ce que j'ai codé en dur au début de mon fichier Application, ça sera pour la prochaine tomate.

GUI

Je finis ma journée, j'ai assez bossé aujourd'hui et je suis ravi de mon travail.

 

Nous sommes vendredi, je commence ma journée sur ma veille Netvibes, j'y ajoute quelques ressources pour le web-development, histoire de m'améliorer en même temps. Je découvre un nouvel outil pour le reverse engineering, à savoir ReSim qui aiderait à l'analyse dynamique de malware et qui fonctionnerait comme une VM. Un autre avait piqué mon intérêt sur mon dashboard, cdb est un débuggeur Chrome sous stéroïdes en ligne de commande, qui peut être installé par les packages npm ce qui pourrait être intéressant, cependant cet article parle de pown.js que je ne connais pas mais qui est construit sur une interface node, à voir plus tard, donc.

Première tomate et premier objectif, j'aimerais me perfectionner en algorithmes avec l'introduction aux Algorithmes de Cormen. Rien que dans l'introduction, dans laquelle je suis toujours, il y a plein d'implémentation terrifiantes, telle que la génération des génomes similaires entre deux espèces en utilisant un simple tableau, j'ai hâte d'avancer et d'upgrader ma programmation. Je commence avec un algorithme de tri, l'insertion sort qui compare chaque valeur à une valeur clé. On a deux boucles, la première définit la clé,dite j, la seconde itère avec i = j-1, la valeur d'avant donc. Techniquement , il ne me semble pas efficace, mais soyons indulgents c'est le premier que je vois dans ce livre, laissons-nous surprendre. La façon de mesurer la vitesse ou l'efficacité un algorithme est un mystère pour moi, trop de données mathématiques que je passe sans scrupule pour me consacrer sur l'implémentation pure. 

Insertion sort

Je continue ensuite avec le merge sort que je pensais connaître avant de regarder le pseudocode proposé. Si je comprends bien, on sépare le tableau d'input TAB1 en deux petits tableaux MTAB et MTAB2, en itérant dans chacun des deux tableaux et en comparant leur première valeur, on met le plus petit, soit MTAB[0] soit MTAB2[0] dans TAB1[0]. Je tente de faire un schéma sur papier pour que ça rentre mieux, visiblement je n'ai pas compris. Je reprends mais je bloque toujours, je vais demander à Google d'éclairer ma lanterne juste avant de finir ma tomate. Un petit tour sur programiz.com me fait comprendre que l'algorithme est beaucoup plus complexe que ce que je pensais. On divise toutes les cellules du tableau, puis pour les réunir on les compare.

Exemple: On a:

O[1,4,5,3,54,12] > séparation en deux > A[1,4,5] et B[3,54,12]
De A[1,4,5] et B[3,54,12] on sépare encore > A[1,4], A[5] et B[3,54], B[12]
Pour gérer A on compare 1 à 4 puis 5 à 1 et 4, résultat > [1,4,5]
Pour gérer B on compare 3 à 54 puis 12 à 3 et 54, résultat > [3,12,54]
Pour regrouper dans O, on compare les deux premiers éléments et on vire le plus petit, résultat > O[1]
Et on réitère jusqu'à ce que la longueur soit bonne.

Seconde tomate, je vais la passer sur w3Schools pour continuer avec le html et peut-être enchaîner avec le CSS. J'espère pouvoir apprendre des choses pour mon Fakebook car je tâtonne un peu au pif, je l'avoue.  Je m'étais arrêté à l'URL Encoding, je crois. Je revois brièvement tout ce qui touche aux formulaires et aux inputs. Je note l'obligation de déclarer un <input name=""> ce qui est logique pour y accéder plus tard pour le back-end, notamment, ou même avec le JS. J'apprends l'action dans <form action="page.php">, je sais dorénavant où déclarer ma page PHP, ce que j'ignorais. On associe souvent ça avec le method="" où il faut définir la méthode HTTP utilisée pour choper le fichier du serveur. Je note également qu'il ne faut JAMAIS utiliser GET pour des informations sensibles, mais au contraire toujours privilégier POST. J'apprends également l'attribut d'input readonly="" qui empêche toute modification ce qui est pratique pour mettre une valeur par défaut et en avertir l'user. Le size="" et le maxlength="" sont également indispensables pour un formulaire personnalisé, je pense notamment à l'année de naissance où il serait débile de laisser plus de 5 caractères à l'utilisateur, peut-être que niveau sécurité, cela ne serait pas plus mal également. Je passe à la prochaine section sur les graphismes HTML où je retrouve mon canvas, avant de passer à la section Multimédia car le contenu est assez maigre, malgré d'autres spécifications ailleurs. Je passe la section sur les API et je continue sur le tutoriel CSS comme ils l'appellent. Je saute directement sur la section Background car je n'ai pas envie de me farcir l'introduction ni les bases des bases tel que faire des commentaires.

Grosse pause, je me détends avant de passer l'après-midi à coder et à hacker.

Nouvelle tomate, l'objectif est simple: aligner verticalement mes sections dans mon projet Fakebook, je vais tenter de passer soit par Flexbox soit par Grid car c'est les solutions que j'ai trouvé pendant ma promenade. J'attaque. Mission réussie avec Flexbox, je flexe puis je centre horizontalement avec align-items: center et verticalement avec justify-content: center. Le rendu est nickel, il ne manque que les marges et les padding si on veut être dans le cahier des charges. Je continue à styler le formulaire qui commence à ressembler de plus en plus, notamment avec les couleurs et les finitions. Ma première section sera bientôt terminée, j'ai d'ailleurs mis moins de temps que prévu. Tomate finie, cette tomate est une réussite.

Fakebook

Nouvelle tomate, l'objectif de celle-ci est de réussir à empêcher que mon joueur sorte du terrain avec une détection de collision, je pense qu'une fonction avec mon objet en argument devrait fonctionner, comme sur Pong jadis. Si je réussis plus tôt que prévu, je pense que je créérai un espace de jeu, à savoir le sol du jeu de plateforme, pour essayer ma fonction dans des conditions réelles. Je rame, je dois avoir un souci de syntaxe car ma logique me paraît bonne et efficace. Je finis ma tomate. Un peu déçu, certes ma fonction marche, mais un petit souci lorsque je déclare les nouvelles coordonnées m'empêche d'être pleinement satisfait. Techniquement c'est loin d'être parfait, mais une nouvelle tomate demain devrait régler le souci, je vais devoir poser le problème sur feuille pour cela.

Découper pb

Petite pause puis j'attaquerai mes doubles tomates sur TryHackMe.

Je retourne sur Sysmon, je m'étais arrêté à la section pour détecter les RAT ou Remote Access Trojan. Le but de la manoeuvre est de détecter les ports ouverts, comme pour la section Metasploit. Je retiens que l'EventID de 11 est un fichier créé à distance et qu'il est donc "facile" de voir ces logs dans en filtrant ainsi. J'arrive à trouver les trois premières informations sans réelle difficulté, en fouinant dans le gestionnaire d'évènements. Je m'arrête un peu après ma tomate car j'ai été interrompu. Je ne ferai pas de seconde tomate sur TryHackMe, je la passerai sur mon projet Python car mon objectif me paraît en avoir besoin.

Je commence une tomate sur mon projet de générateur de livre en Python, la GUI m'avait posé problème, je veux régler ce problème dans ma tomate, si possible. J'ai vu deux éventuelles solutions je vais les tester une par une. Visiblement, impossible de supprimer le contenu en output du début, je tente de passer par text.delete() sans résultat. Je finis ma tomate alors que je n'ai fait que me battre avec les évènements. Je continue, toujours sur la même tâche. Je réussis déjà à afficher avec une lambda dans mon button.bind() mais impossible de le mettre dans ma textbox, ce qui m'agace. J'ai compris mon erreur, elle se situait dans le state="disabled" que je déclarais dans ma textbox, qui empêchait d'avoir un comportement normal. Problème corrigé, je créé un second bouton pour supprimer les données, il me faudrait maintenant idéalement activer une seconde fonction dans ma lambda, j'ignore si c'est possible. Je réussis toutes mes missions mais un nouveau souci se montre. Je le résous sans même avoir le temps de poster une issue. Deux tomates constructives, un objectif résolu.

 

Nous sommes samedi,  j'entame la dernière journée de ma semaine, je commence officiellement mes tomates en retournant sur l'Introduction aux algorithmes de Cormen. Je me souviens du merge sort d'hier, il faudra que je le tente en Python sauf si je trouve plus intéressant entre temps. Je comprends beaucoup mieux ce que raconte l'auteur en faisant un schéma qu'en lisant ses explications matheuses... Je passe toute l'explication et continue avec le bubble sort, grandement inefficace selon l'auteur et mes souvenirs. Ce livre me gonfle, je lis une page sur trois, je ne suis visiblement pas dans le bon public, je me formerai aux algorithmes autrement, avec une autre ressource. J'attaque Eloquent Javascript de Marijn Haverbeke, pour upgrader mon potentiel en JS.

Je me tâte à passer directement aux projets en fin de bouquin mais je me force à être un peu plus sérieux et j'attaque par le début, je trouverai peut-être des idées en passant. J'aime beaucoup le phrasé de l'auteur, ça se lit tranquillou. Je rushe l'introduction et attaque sur les valeurs, les types et les opérateurs, que je pense rusher aussi. J'y revois typeof qui fonctionne comme type() dans Python et qui peut être utile pour le debug. Je finis ma tomate, je n'ai techniquement pas appris grand chose car les bases sont les mêmes que Python, la syntaxe change ceci dit. Les fonctionnalités rigolotes et avancées de JS viendront ensuite.

Nouvelle tomate, l'objectif est simple, je passe du temps sur le tutoriel CSS de w3schools et je m'imprègne de nouvelles propriétés dans le but de les essayer ensuite. Je reprends sur les bordures, je me rappelle d'ailleurs de la valeur border-radius du bouton sur mon projet Fakebook, je trouve que 6px est une bonne valeur. Je continue avec les margins, ce qui est aussi bien puisque j'en aurai bientôt besoin pour mon Fakebook. Je rushe un peu les sections sur le padding, c'est quelque chose dont je me souviens. J'ai comme une impression de déjà vu avec les sections suivantes, sûrement que c'était inclus dans le html car tout se regroupe en web-dev front-end. Je reprends à partir de la section sur le float. Je ne connaissais pas la petite technique pour être une image dans une bordure avec le overflow:auto, ce qui peut-être très utile et donner un rendu sympa. Je tombe sur un exemple assez chouette, on a trois images contenues dans une div de même classe, on leur affecte une width commune, un float:left et ce qui fout tout le charme de ce loadout est le boxsizing:border-box. C'est très ingénieux. Si je résume bien le float et le clear sont très bien ensemble, et ça serait gâcher que de les séparer car ils permettent de créer de très jolis menus. J'y apprends sur l'usage principal du inline-block qui est utilisé pour les barres de navigation, ce que j'ignorais. Je continue à découvrir de nouvelles choses avec les combinateurs, ce qui relie les sélecteurs css.

Bel exemple

Ex:
Si je veux sélectionner un p dans une div, je peux écrire "div > p", si et seulement si p est un enfant direct de div.

Je continue avec les pseudo-classes, je me souvenais de :hover qui détecte la souris et accomplit une action précisée ensuite. La pseudo-classe :focus me fait envie, je pense que je m'amuserai avec ensuite, c'est assez pratique pour les formulaires, je vais sûrement implémenter ça sur Fakebook. J'apprends un petit trick sympa avec le chapitre suivant sur l'opacité. Il est généralement assez fréquent de mettre une opacité à 0.5 et de la régler à 1 lorsque la souris passe dessus, avec :hover par exemple. Ma tomate est finie, je m'arrête sur la section Navbar. Je devrais finir le tutoriel complet dans le courant de la semaine prochaine, peut-être mardi ou mercredi.

Nouvelle tomate, j'aimerais bien avancer un peu le footer de mon Fakebook, j'ai quasi fini la section qui occupe la plupart de ma page, je voudrais continuer avec le reste. Le footer est fini, je retire toutes les bordures, il ne me reste qu'à gérer les margin et les paddin de mon formulaire ainsi que le bouton de création de compte. Je bloque sur ce dernier car le texte déborde un peu, ce qui rend moche. J'agrandis sa width, sans dépasser du bouton Connexion qui est le plus important. Je remplis ma nav pour finir la maquette. Il ne me restera que le :focus et le :hover à gérer et je pourrais mettre de côté le projet le temps d'apprendre le backend. Je finis ma tomate, le résultat me plaît assez, encore une ou deux tomates si aucun souci ne se montre et je devrais finir la maquette. Si on veut être tatillon, les input text de Facebook sont plus hauts et plus grands, il y a également un joli curseur de la couleur du bouton "Se Connecter", j'ignore comment faire ça mais je ne devrai pas avoir trop de problème.

Petite pause puis je me fais une tomate sur le jeu par navigateur. J'ai pour objectif de créer la plateforme à proprement parler et de finir mon système de collision, idéalement. Je passe un peu de temps sur netvibes pour me détendre. J'y découvre l'outil de scan réseau liveTargetsFinder fait pour être utilisé avec masscan ou nmap.

J'attaque ma tomate. Je crois que je vais avoir besoin de spécifier la direction de l'endroit où ma collision merde, pour empêcher un bug bizarre. Je réussis en fournissant un nouveau paramètre à ma fonction, j'aimerais bien m'atteler à une fonctionnalité qui nous rapprocherait de la V1, aussi je vais tenter de créer un sol. Je réussis, sauf qu'un problème arrive, une fois que je bouge mon carré rouge, ma plateforme s'efface, ce qui est logique puisque j'ai décidé qu'il faudrait effacer le carré, je croyais effacer ce dernier mais j'effaçais tout le canvas. J'avance bien, je tente d'ajouter une fonction pour sauter, mais je ne suis pas encore très doué avec le settimeout() qui permet d'attendre quelque temps avant d'exécuter une autre fonction. Tout fonctionne, j'avais oublié de dessiner dans ma fonction pour atterrir, aussi cela ne s'initialisait pas. Je tente de faire quelques tiles pour préparer un défilement horizontal à l'infini, je n'ai aucune idée de comment faire ça...

Grosse pause écran avant d'attaquer la fin de mon projet Python et TryHackMe.

Je passe sur TryHackMe pour reprendre où j'en étais sur Sysmon. Première tomate. Je finis la room, je m'étais arrêté vers la fin de toute façon. Je continue sur la room Ice. Je recherche une CVE pour pénétrer dans le système, avant tout. Je trouve la CVE qu'il me faut, je lance metasploit et je parviens à lancer une session meterpreter. Je ne connaissais pas l'astuce de balancer un local_exploit_suggester directement dans la session. Une fois la privesc effectuée, l'étape suivante est de migrer dans un processus intéressant et de récupérer des identifiants. On migre dans spoolsv.exe et on s'aide de Mimikatz ou kiwi pour récupérer ce qu'il nous faut. Je finis la room, la dernière section était de la lecture du manuel. Cette room était très chouette! Je continue avec la room Windows Assembly.

Privesc réussite

Je finis ma tomate juste quand je lance la room, j'en recommence une autre. La room est juste informative à vrai dire, mais ce sont des infos que je ne connais pas, aussi je m'attends à souffrir. Il y a trois termes distincts que je note: les valeurs dites immédiates, en gros des données, les registres et les adresses de mémoire

Ex: MOV rax, 5 déplace 5 dans la valeur de registre rax. 

J'apprends les instructions MOV et LEA. RET est équivalent à return, on sort d'une fonction et JCC est un saut conditionnel. Je croise la notion de pointeurs, d'après ce que je comprends c'est une adresse de mémoire affectée à une variable. Ce langage est vraiment technique, comme je m'y attendais. J'apprends sur les drapeaux, qui signifient/contiennent les résultats des opérations précédentes. Pause assembleur, je passe à une autre room: la room Yara.

ASM

Yara est apparemment un outil pour faciliter l'analyse de malware. Je migre sur Malware Introductory, comme c'est conseillé. J'y apprends sur les types de malwares, les ciblés et les campagnes de masses, destinés à infecter le plus de système possible. Ma tomate est terminée, j'ai revu pas mal de bases sur l'analyse de malwares et je vais plonger dans l'inconnu à ma prochaine session.

Dernière tomate de la semaine, je vais tenter de coder une nouvelle fonction pour mon projet Book_gen et d'afficher le résultat dans ma plus grande textbox. Le principe serait de récupérer le résumé du livre choisi sur Wikipédia par exemple. Je repère que, généralement, le premier h2 s'un article sur les livres est le résumé, je vais faire une requête là-dessus. J'aurai hélas besoin de simuler un clic pour ça, puisque Wikipédia ne trouve pas directement la recherche, ce qui va poser problème. Je me renseigne sur le module PyMouse, qui pourrait éventuellement faire mon affaire, il faut lui suggérer des coordonnées, ce qui dans mon cas n'est pas possible puisqu'à l'avance on ne sait pas où sera le lien. J'essaie de trouver une solution avec requests. Je vais plutôt tenter de passer par mechanize, ce qui sera plus simple. Je coince sur le consentement Google car j'ai finalement sélectionné Google, qui me gonfle avec ses cookies. Il faudra trouver une solution pour ça.

Je finis ma semaine de travail.
 

Affaires à suivre:

  • Finir Fakebook
  • Trouver une solution pour la génération procédurale du niveau dans le platformer JS
  • Réfléchir sur une migration éventuelle sur Phaser JS
  • Trouver une solution pour le webscraping de Book_Gen
  • Sécuriser code de Book_Gen, finir projet

 

Une grosse semaine, mes projets avancent, et il me semble que j'ai beaucoup moins peur qu'auparavant pour affronter des modules, des idées, ou des technologies que je ne connais pas. Cela me paraît un bon atout pour plus tard. Je progresse à vue d'oeil ce qui me ravis.

Retour à l'accueil