Reverse-engineering et problèmes juridiques autour de l'appli Crush
Je me suis intéressé à la cybersécurité de **Crush**, l'appli de rencont...
Et si votre bonne résolution pour 2022 c’était de vous mettre à l’algorithmique ou la cybersécurité ?
Dans cet article, je vous livre les secrets qui m’ont permis de rejoindre tout en m’amusant le top 10 compétitif en France sur ces deux disciplines. (et un job chez Google !)
Au fil des années, j’ai pu tester pas mal de ressources et j’ai conseillé beaucoup de personnes qui cherchaient à se lancer, voici donc une compilation de ce qui se fait de mieux.
Parfois ces conseils s’appliquent à des cas spécifiques, donc gardez juste ce qui vous plaît :)
Commençons par l’algorithmique ! C’est la science qui se cache derrière la programmation informatique : la capacité de transformer sa pensée en une série d’instructions pour l’ordinateur.
C’est une discipline assez théorique et formelle, qui relève des maths appliquées.
Mais pas besoin d’être un crack en maths pour se lancer !
Le plus important à mon avis est d’avoir un esprit logique : en algo avancée, on ne se contente pas de traduire ses pensées en code : on se nourrit aussi de méthodes moins intuitives pour résoudre des problèmes complexes.
Avoir une équipe de développeur/es solides ça vaut de l’or, ce n’est donc pas par hasard que certaines entreprises sont très présentes sur le sujet de la programmation compétitive.
Une petite sélection des meilleures :
Première recommandation : le Google Code Jam, compétition qui a lieu chaque année au printemps. Des exos bien pensés et qui vont tester les capacités de raisonnement plutôt que les connaissances.
J’étais dans l’organisation de la finale en 2017 quand je bossais chez Google !
Autre géant de la tech qui s’intéresse au code compétitif, la Facebook Hacker Cup est bien un challenge de code malgré son titre trompeur. Moins de joueurs que le Code Jam, on reçoit un T-Shirt quand on finit dans le top 500 mondial ! (J’en ai 3 identiques lol)
Pour les étudiants, il y a aussi le célèbre SWERC (souvent surnommé championnats d’Europe ou du monde). Le format est très spécial : ça se joue par équipe de 3 avec un seul ordi et sans internet, 5 heures pour résoudre 12 exos. Super ambiance et ouvert à tous niveaux.
Le top en France, c’est la BattleDev ! Organisée sur une ou deux soirées dans l’année, c’est le rassemblement de près de 10.000 devs sur 6 exos de niveau croissant et des lots sympa. Participant depuis 2014, je suis maintenant rédacteur des exos avec mon frère @clement_hammel :D
Pour finir, le Google Hash Code (encore eux !) est un format spécial : au lieu d’une réponse unique, on doit trouver une solution approximative à un problème ultra complexe (exemple sujet 2021 : minimiser les bouchons d’une ville en optimisant le cycle des feux tricolores)
UPDATE (2023) : Google a mis fin à son programme de compétitions techniques suite à la vague de licenciements du début d’année. Les BattleDev sont également stoppées depuis mi-2022.
On ne devient pas champion/ne sans un bon entraînement, heureusement il existe plein de plateformes sympa pour progresser tout au long de l’année (en plus vous pouvez vendre ça à vos managers comme de la montée en compétences sur le temps de travail 😋)
On ne présente plus CodinGame, ma recommandation #1 pour les débutants avec un design archi stylé et des modes solo/multi très originaux.
Gros coup de coeur sur le mode Clash of Code, des duels en 15 minutes chrono pour s’entraîner au speed-code ❤️
Si vous voulez passer à la vitesse supérieure, allez sur le génialissime CodeForces.
Des mini-compétitions très intéressantes plusieurs fois par semaine, et on peut suivre ses évolutions au classement mondial face à des centaines de milliers de devs.
Les matheux ont une plateforme d’entraînement faite spécialement pour eux : Project Euler.
Les 100 premiers exos de l’archive sont assez sympa et permettent d’aborder plein de concepts, mais ça devient vite très pointu et difficile ensuite.
La plupart des annales des championnats du monde sont sur Kattis, un site très complet avec des exos suggérés en fonction de votre niveau et un leaderboard par pays qui est assez facile à gravir en y passant un peu de temps.
Un dernier pour la route : pour pratiquer le format particulier du Google Hash Code, je n’ai trouvé que Primers qui propose un bon contenu sur les challenges d’optimisation (et en plus c’est français !)
Comme l’algo est une science et un sujet universitaire, il existe plein de littérature allant des livres d’intro jusqu’aux papiers de recherche ultra pointus !
Le livre d’algo qui fait l’unanimité c’est “Introduction to Algorithms” que je trouve clair et bien écrit.
Il est généralement recommandé en fin de licence, et je pense que comme tout livre un peu épais en algo il faut un niveau ~Bac+1 pour kiffer.
Un autre dans le même genre, un peu moins connu mais c’est mon préféré : “The Algorithm Design Manual”.
Mon coup de coeur ? Les “war stories” qui relatent des histoires vraies de l’auteur qui est consultant en algo : top pour les ingénieurs qui aiment le concret !
Et comment ne pas mentionner aussi ce super livre made in France ?
Je trouve que c’est une bonne alternative aux deux précédents si les livres épais vous font peur, ici on explore les concepts de manière intuitive et avec moins de notation formelle.
On finit sur deux ouvrages spécifiques mais excellents :
Si vous voulez vraiment tryhard les championnats du monde, “Competitive Programming” propose des conseils et stratégies qui vont jusqu’à l’heure optimale pour prendre une pause en compétition 😁
Et si vous préparez des entretiens pour un poste de dev (notamment chez les GAFAM), l’autrice de “Cracking the Coding Interview” explique le processus de recrutement des boîtes tech et donne des centaines d’exercices d’entraînement. Testé et approuvé !
Passons maintenant à la deuxième partie de ce post, on va parler challenges de hacking ! On appelle ça un Capture The Flag, elles sont souvent organisées par des associations ou en parallèle de conférences de sécurité informatique.
Ici, pas question de pirater des sites ou des comptes réels : on a entre 10 et 50 services volontairement vulnérables dans un environnement fictif (mais réaliste) créé par les organisateurs. Si on arrive à trouver et exploiter la faille, on marque des points !
Contrairement aux challenges d’algo qui sont très individuels, la cyber se joue plutôt en équipe. C’est notamment dû au fait qu’il y a énormément de sous-disciplines (web, reverse, crypto, pwn, forensics, …) et qu’il faut plusieurs personnes pour réussir partout.
Pour tout ce qui est CTF, le site de référence c’est CTFtime : vous avez le calendrier de la plupart des CTFs en ligne, et il y a même un méta-scoreboard qui permet à votre équipe de gagner des points sur l’année en participant aux CTFs répertoriés.
Il y a plein d’events par chez nous, et on passe souvent des moments mémorables quand c’est en présentiel.
Un événement très sympa pour fédérer la communauté c’est les championnats d’Europe (ECSC) où chaque pays envoie ses 10 meilleurs joueurs (25 ans max). L’équipe de France est sélectionnée au printemps par l’ANSSI lors du FCSC, et les challenges y sont de super qualité.
Pour les personnes qui souhaitent un moyen d’appliquer leurs connaissances dans un challenge moins artificiel que les CTFs, vous pouvez participer à des bug bounty : des entreprises donnent le feu vert pour être piratées, et si vous trouvez une faille vous êtes payé 🤑
Je suis pas très calé en plateformes de bug bounty, mais j’ai déjà testé Yes We Hack qui est une boîte française avec beaucoup d’entreprises participantes.
À tester aussi : Yogosha, Intigriti, HackerOne, BugCrowd, …
Ici aussi, plein de plateformes qui totalisent des dizaines de milliers de challenges disponibles gratuitement en ligne !
La plateforme #1 de challenges cyber en France, c’est Root Me. Les épreuves sont mises à jour régulièrement, mais on peut rapidement arriver au bout si on se spécialise dans une catégorie.
On a aussi Newbie Contest qui propose des challenges plus originaux (parfois un peu trop originaux 😋) et une communauté historiquement assez grande.
Pour devenir invincible en cryptographie, deux sites de challenges spécialisés sur cette catégorie : http://cryptohack.org et http://cryptopals.com
Et pour celles et ceux d’entre vous qui veulent découvrir des cas pratiques, vous avez l’incontournable Hack The Box : des machines et parfois des réseaux entiers réalistes à attaquer. Idéal pour se former au métier de pentester !
La cybersécurité est un monde beaucoup moins organisé et centralisé que l’algorithmique : la discipline est plus jeune et peu enseignée en études supérieures, avec énormément d’autodidactes. Donc pas de livres ici, mais plutôt du contenu web :)
Pour les CTFs, foncez voir l’excellent travail de @LiveOverflow sur YouTube, c’est un super vulgarisateur : il présente des solutions à des challenges, fait des reportages, et plein d’autres contenus liés à la cyber en général.
>> https://www.youtube.com/c/LiveOv…
Si vous cherchez une bonne source de contenus cyber en français, tournez-vous vers la chaîne YouTube de mon pote @Rom101_ (qui a ENFIN commencé à percer récemment, ça en a mis du temps)
>> https://www.youtube.com/c/PourInfo
Je vous parlais plus haut de CTFtime, le site qui centralise quasiment tous les CTFs du monde. Ils ont également une section depuis laquelle on peut accéder à plein de writeups (solutions au format article), qui vous permettront de trouver des blogs CTF qui vous correspondent.
Libre à vous de vous fixer des objectifs ou non, perso j’ai toujours aimé l’aspect compétitif de ces deux disciplines mais je ne me fixe jamais de cible précise sur un challenge : c’est un jeu avant tout, avoir un bon résultat c’est cool mais ça reste un bonus.
La quantité de ressources dispo en ligne fait que c’est assez facile de se disperser, je recommande d’en essayer plein pour trouver ce qui vous plaît mais de focus sur** un ou deux à la fois**. C’est bien aussi de se fixer un objectif comme 1h/semaine, avec un créneau fixé en avance.
Pour tirer un maximum de progression après un challenge, il faut s’infliger la difficile tâche de l’upsolving : on lit après coup les solutions des problèmes que l’on a pas réussi, puis on les résout. Ca permet aussi de se rassurer sur son niveau et d’enlever certains blocages.
Le vrai secret pour réussir en CTF, c’est de trouver des coéquipiers qui ont le même niveau de motivation que vous : si vous jouez tous les weekends mais que votre équipe ne vous suit qu’une fois sur deux (ou inversement), c’est un risque de perdre l’envie de jouer.
Pas d’inquiétude s’il manque des spécialités dans l’équipe, ça vient assez naturellement. Y’a toujours un membre qui se dévoue pour faire les challenges que personne ne veut, et qui finit par apprécier (c’est exactement comme ça que j’ai découvert la crypto et le reverse 😁)
Il existe beaucoup de concours réservés à des niveaux collège/lycée, pour déceler les champion/nes dès leur plus jeune âge.
Si vous avez un/e ado dans votre famille qui aime l’info et les défis, cette liste en vrac lui est destinée ;)
Code :
Cybersécurité :
Je ne prétends évidemment pas qu’apprendre par le jeu est l’unique méthode pour s’améliorer et je sais bien que certaines personnes ne supportent pas la pression des compétitions. Mais si comme moi vous avez un esprit joueur et curieux, c’est carton plein garanti !
Pareil, une expertise en théorie des graphes ou en injections SQL ne vaut rien en entreprise sans maîtriser les bases : travail en équipe, outils, vision projet, …
J’ai encore des dizaines de conseils à vous partager, mais on va s’arrêter là pour éviter de faire un pavé trop indigeste (et parce qu’il est 4h42 du matin à l’heure où je prépare ces lignes). À très vite 😘
contact@mathishammel.com
Copier
contact@mathishammel.com