Apprendre à développer des logiciels libres [Résolu/Fermé]

Signaler
Messages postés
3
Date d'inscription
jeudi 17 mai 2012
Statut
Membre
Dernière intervention
29 juillet 2016
-
Messages postés
653
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
22 février 2019
-
Bonjour,
Je souhaite apprendre des connaissances avancées en informatique et ne sais pas par où commencer ! Je pense avoir des bases solides, j'ai pas mal programmé en C, C++, Php, SQL, Linux, Python, Caml, et j'ai des notions d'Html, CSS, Basic, Assembleur. (quand je dis "pas mal" tout est relatif : j'ai travaillé le tuto principal du site du zéro en C, C++, Linux, je sais manipuler les classes/pointeurs en C++ mais je n'ai jamais fait de "gros projets", quelques jeux du genre labyrinthe, ou morpion).
Je cherche à savoir ce que je peux apprendre à partir de ce que je sais, qui serait intéressant pour ses applications concrètes ! J'aime beaucoup tout ce qui touche à la sécurité et au hacking, je suis en train de lire le cours sur les réseaux TCP/IP d'OpenClassrooms et je suis déçu du manque de programmation qu'il contient, j'ai l'impression d'apprendre beaucoup de choses, mais descriptives, sans vraiment savoir "ce qui se passe dans la machine", sans pouvoir créer des petits programmes qui feraient des tests (créer un réseau, tester la sécurité etc).
Dans l'idéal, j'aimerais beaucoup pouvoir modifier mon linux à ma guise (Ubuntu), et apprendre dans cet espace de liberté (changer le menu déroulant quand on fait un clic droit sur un fichier, changer le fonctionnement d'applications comme "gedit" ou Firefox etc), mais je ne sais absolument pas par où démarrer ... Après de nombreuses recherches sur internet, je ne trouve rien après le stade "apprendre les bases du C/C++", en dehors de réponses très spécifiques pour résoudre des problèmes précis.
J'ai lu beaucoup d'articles exposant "ce qu'est un hacker", cet objectif m'attirant beaucoup, et je ne vois pas comment l'atteindre, j'aimerais beaucoup aider à débugger des logiciels libres, ou en développer moi-même, ou modifier des logiciels existants. Voila donc je cherche si possible un cours assez complet qui expliquerait comme faire ce genre de choses, du genre "la suite du site du zéro", avec, si possible beaucoup de programmation (et je n'ai pas peur des maths).
J'avais pensé à "Linux from Scratch" mais je ne sais pas si cela correspond à mes attentes.

Merci d'avance pour vos réponses,
Nom supprimé Modération CCM

2 réponses

Messages postés
5718
Date d'inscription
jeudi 8 mai 2008
Statut
Membre
Dernière intervention
30 mars 2021
1 976
Salut,

Tu as des tutoriels programmation ou réseau avancés ici : Cours avancés en programmation et réseaux cependant si tu veux te lancer à fond autant aussi apprendre à lire l'anglais et à lire des tutos en anglais, certains tutos sur le hacking existent pas forcément en Français par exemple.
Messages postés
3
Date d'inscription
jeudi 17 mai 2012
Statut
Membre
Dernière intervention
29 juillet 2016

Merci, c'est bien en anglais que je cherchais des cours sur le hacking.
Messages postés
653
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
22 février 2019
43
Bonjour, je te laisse un long message qui j'espère sera l'étincelle de la flamme pour de nouvelles connaissances pour toi... et en premier que cela t'aidera

Tu as visiblement de bonnes compétences j'ai l'impression (tout dépend de ton niveau dans chacun de ces langages également). Et il y a connaître le langage et les librairies qui vont avec (si tu maîtrise le premier tu peux tout faire mais il faudra toujours avoir des connaissances sur "les" seconds)

Pour la programmation de socket (connexion internet, ...) je te conseille la partie Winsock MSDN de microsoft (je suis en train de crée une suite de composant internet pour Lazarus/Delphi, des logiciels de programmations qui permettent de placer des composants directement sur les fiches et de programmer en Pascal a coter. C'est des vrai langages conçu pour la vrai programmation, Lazarus utilise FreePascal qui est gratuit, le second est payant mais n'a pas grand chose à envier au libre) tout ce qui n'est pas WSA... fait partie des API Bekerley qui est multiplateforme (dont Linux). C'est tout a fait normal que les cours TCP/IP ne contienne pas de programmation mais sont toujours utiles.

Pour en apprendre sur le fonctionnement des OS ce tuto (en C même s'il faut un peut d'assembleur) explique comment crée un miniOS console : http://a.michelizza.free.fr/pmwiki.php?n=TutoOS.TutoOS (ps:passe d'abord par la FAQ car il faut des exécutables en 32B). Sinon LinuxFromScratch semble d'après l'etiquette répondre pile poil à tes besoins !

Pour modifier des applications il faut (tu le sais peut être déjà) les recompiler. Mais il faut les sources ! Si tu ne connais le principe de paquets Debian je te l'explique plus loin. Autrement sur ton Ubuntu un simple
apt-get source <nom paquet>
suffit (ici de la doc sur les paquets sources, je te conseille fortement d'installer Synaptic qui offre une gestion plus avancée que la logithèque, pour le navigateur de fichier c'est le paquet "nautilus") : Debian et ses dérivée (dont Ubuntu ;-D) utilise un système de paquet. Ces paquets peuvent des logiciels, bibliothèques, traduction, pages de man, recettes de cuisines, etc (tu met ce que tu veux). Il existe des "dépôts" il y a les dépôts officiels et des dépôts tiers (appelée PPA) qui les proposent. Ce système permet d'installer de définir des dépendances (dépendances, conflits, remplacement, ...) mais permet d'avoir de "centraliser" les mises à jour (pas besoin d'updater !) et d'offrir une interface unique pour l'installation, gestion et désinstallation de logiciels. Des recherches sur internets permettront de compléter tes connaissances (notamment cette article qui te montrera comment compiler le paquet source que tu as télécharger)

Pour finir et Célien a entièrement raison là-dessus... j'espère que tu maîtrise l'anglais car pour atteindre ton objectif l'anglais est une obligation (je passe en première et je n'ai pas de gros problèmes de compréhension de l'anglais, donc un anglais scolaire suffit, en plus avec la programmation on apprend de l'anglais ! Au pire les traducteurs automatique permettent d'avoir un texte compréhensible)

Moi perso pour apprendre tout ce que je sais, quand j'avais un problème j'allais sur Google mais je n'hésitai à lire des pages connexes. Par exemple je me suis demander comment changer les icones sur un type de fichier sur Windows et j'ai découvert le registre ! Tu m'a aussi fais découvrir que tous les programmeurs sont des hackers dans le bon sens du terme !

Bonne aventure ;-)
Messages postés
3
Date d'inscription
jeudi 17 mai 2012
Statut
Membre
Dernière intervention
29 juillet 2016

Merci beaucoup :)
Oui j'ai aucun problème avec l'anglais, beaucoup de l'informatique que j'ai faite a été en anglais !
Je regarderai ce qui concerne les sockets et les OS, cependant, pour la partie "modifier des applications open source", je sais déjà trouver la source et la recompiler, le problème est davantage dans la compréhension de comment marche un programme si compliqué, dans tous les cours que j'ai vus, les programmes dépassaient pas quelques centaines de lignes, et quelques fichiers. Je ne pense pas pouvoir apprendre en autodidactie à partir de codes sources de programmes ... Comment les développeurs apprennent ils comment faire un programme du genre paint, ou gedit ?

Bonne journée,
Ludovic
Messages postés
653
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
22 février 2019
43
Re !

Ce que tu peux faire c'est essayer de refaire un gedit ou un paint. Après comprendre le code source d'une autre personne peut être compliquer (surtout si le code n'est pas commenté ou que le style nous paraît très étrange), on a tous des habitudes. Moi même j'ai essayer d'améliorer Synaptic mais je n'ai pas encore compris le code source.
Messages postés
4761
Date d'inscription
dimanche 12 juin 2011
Statut
Contributeur
Dernière intervention
23 octobre 2020
1 257
Conseiller Winsock à quelqu'un voulant développer des logiciels libres est ironique, surtout que Winsock copie les sockets BSD et rajoutent l'horreur de l'environnement Windows (initialisation statique, typedefs inutiles et pointeurs opaques nommés bizarrement).
Messages postés
653
Date d'inscription
lundi 21 juillet 2014
Statut
Membre
Dernière intervention
22 février 2019
43
Je sais ce n'est pas ce qu'il y a de mieux. Mais c'est quelque chose. Et comme tu le dit Windows respecte la spécification BSD (avec leurs WSA avec Ex spécifiques). Donc c'est une base réutilisable (mais je te l'accorde avec du trie à faire. Je regrette par exemple le WSAAsyncSelect).