Catégorie : Non classé

  • Liste des IP sur un réseau privé (ou pas)!

    Cela fait longtemps que j’aimerais me lancer dans la programmation réseau car c’est un domaine où je me sens vierge de connaissance.

    Pour remédier à cette lacune, je vais tenter de détecter toutes les IP visibles sur mon réseau privé.

    On y trouve, comme dans beaucoup de maison, des ordinateurs, des téléphones/tablettes, des appareils multimedia, …

    Mon but, dans un premier temps, est de simplement les lister! Je verrai ensuite si il y a moyen (bien sûre que oui) de les présenter un peu mieux à l’écran…

    Donc, pour réaliser cela, il faut déjà savoir ce qu’il y a lieu de faire! Une petite recherche s’impose.

    Si l’on en croit Wikipedia, il existe différents protocols associés au transfert de données. Les plus importants étant IPv4, IPv6, mais aussi Internet Stream Protocol, TP/IX, PIP ou encore TUBA.

    Pour ce que j’ai l’intention de réaliser, je vais, de toute évidence utiliser les 2 premiers protocols nommés ci dessus IPv4 et IPv6.

    L’IPv4 est un protocol permettant de codé une adresse sur 32bits et donc un peu plus de 4 milliards de combinaison. C’est pas mal mais insuffisant pour le monde dans lequel nous vivons, quoique bien assez pour un réseau privé.

    L’IPv6 par contre permet de coder une adresse sur 128bits, ce qui offre bien plus de possibilités (environ 3.4 x 10³⁸ combinaisons 340 milliards de milliards de milliards de milliards de combinaisons). Est ce vraiment nécessaire pour un réseau privé??? Oui et non mais ceci est une autre discution.

    Bref! Dans un premier temps, je vais juste me limiter au protocol IPv4 car, à priori, ce serait le protocol le plus utilisé au sein d’un réseau privé.

    Toujours sur cette même page Wikipedia on peut voir un schéma assez grossier mais néanmoins intéressant de ce que l’on peut trouver dans l’entête d’un protocol IPv4. Pour une question de visibilité, les informations ont été regroupées par tranche de 32bits (1 DWORD)

    4 bits version (ici 0100 = 4)
    4 bits IHL (je ne sais pas encore ce que c’est)
    8 bits ToS (encore un truc à apprendre)
    16 bits Total Length (La longueur totale, je suppose du paquet puisque l’entête a une taille fixe)
    16 bits Identification (Serait ce un numéro unique??? Étrange! Je croyais justement que c’était l’IP qui faisait cela…)
    2 bits Flags (Je ne sais pas encore à quoi cela correspond)
    14 bits Fragment Offset (La position du paquet dans une liste de paquets qui pourraient arriver dans le désordre) (( mmmm Est ce que cela aurait un rapport avec Identification ci dessus???))
    8 bits Time To Live (Un timeout, je suppose)
    8 bits Protocol (L’identificateur du protocol employé par dessus IP tel que UDP ou TCP)
    16 bits Header Checksum (Le seul moyen de vérifier que cette entête ci n’est pas corrompue)
    32 bits Source Address (L’adresse IP de l’émetteur du paquet en cours)
    32 bits Destination Address (l’adresse IP du destinataire du paquet en cours)
    24 bits Options (Voilà un truc bien explicite…)
    8 bits Padding (Y aurait il un espace entre les différentes données ou bien un formatage préétabli??? À voir en profondeur…).

    MMMMM! C’est intéressent tout cela mais est ce que j’ai besoin vraiment de connaître tout cela pour réaliser mon petit projet basique? C’est le moment d’aller voir ce qu’il convient de faire pour tenter de repérer ce qui se trouve sur le réseau privé! Si j’en crois le protocol, en écoutant se qu’il se passe sur le réseau, on peut connaître qui envoie et qui reçoit un paquet. C’est bien, c’est déjà 2 IP connues mais si une machine n’émet pas, il est impossible de savoir si elle existe. (C’est comme un prof qui fait sa prise de présence pour la première fois. Il ne sais pas à qui il s’adresse ni même si il a reçu des noms inexistant.) Techniquement, l’adresse de destination est peut être une erreur de l’envoyeur. Mais également, l’adresse de la source pourrait être fausse, c’est pas interdit d’écrire n’importe quoi! Mieux que cela, une même machine pourrait avoir plus d’une adresse IP…

    Ceci étant développé, n’y aurait il pas quelque chose qui permettrait à 2 machines de se dire bonjour, de se saluer, de se donner la main, …

    Ça, je connais déjà la réponse, il suffit de jouer au ping pong… Tout ordinateur est capable d’envoyer et de recevoir un ping et/ou d’y répondre par un pong. C’est un peu comme si un ordi dit bonjour je m’appelle IP x est ce que IP y est bel et bien là? Et ensuite l’ordinateur y répond Bonjour je suis bien là!

    C’est franchement plus pratique que de manipuler les paquets IP directement, quoique une combinaison des 2 devrait nous apporter énormément d’informations utiles!

    La commande Ping sur un ordinateur est une implémentation du protocol ICMP par dessus le protocol IP qui permet de demander à une machine distante de savoir si elle est bien présente. Cela permet également de connaître le temps de réponse du serveur mais également le nombre de routeur que l’on peut trouver entre les 2 machines grâce au fameux TTL (Time To Live vu plus haut)

    Donc, si j’ai bien compris, pour connaître les machines disponible sur un réseau privé, il suffit d’envoyer un Ping à toutes les adresses possible de ce réseau et de contrôler si on a une réponse ou non!

    Tout cela, c’est bien mais cela ne reste que de la théorie! En pratique, qu’en est il? Existe t’il des librairies permettant de faire tout ce petit travail ou bien il faut réinventer la roue? Je pense qu’il y a un programme qui fait déjà le travail et qui s’appellerait nmap me semble t’il! Je vais aller voir cela de suite…

    En effet NMAP est bel et bien ce que je pensais, et c’est même mieux que cela puisqu’il est possible également avec ce programme de connaître les ports ouverts et ainsi connaître quels sont les protocols à utiliser, pour autant que les numéros de port soient respecté par rapport à leur fonction dictée, mais aussi par le message que ces ports renvoie lors d’une interrogation…

    Afin de ne pas réécrire ce genre de logiciel, ne serait il pas intéressent d’écrire un programme qui donne les options à nmap et qui récupère sa sortie???

  • Je suis triste… Plus de 10 jours sans blogger!

    Comme écrit ci dessus dans le titre, je suis triste de ne pas avoir écrit plus tôt sur le site.

    Je n’ai pas d’excuse valable, j’aurais pu écrire ce que j’étais en train de faire…

    Néanmoins, j’étais occupé à chercher comment faire passer une commande de l’API de Binance pour mon Shell, et c’est seulement après plusieurs jours que je me suis rendu compte que je cherchais à exécuter cette fameuse commande sur une mauvaise URL de base.

    Bien sûre, je me suis senti gêné vis à vis de moi même! Comment voulez vous que j’écrive quoi que ce soit sur le site dans ces conditions là!

    Mais alors, pourquoi le fais je maintenant??? C’est très simple! Après mûre réflexion, il est inutile d’être gêné de mal faire une chose. C’est justement en faisant mal certaine chose que nous apprenons à avancer. Et donc, écrire ceci en ce moment ne me cause absolument pas de tord. Par contre, cela peut fort bien aider la personne en train de le lire, entre autre, vous qui lisez.

    Ne vous arrêtez pas en chemin, continuez d’avancer et il ne vous arrivera que du bon!

  • Il est temps d’évoquer les nouveaux côtés du site.

    Après de longues heures à chercher comment arranger les éléments sur ma page internet, j’ai fini par trouver ce qui me gênait.

    Maintenant, j’ai enfin mes deux colonnes extérieures qui fonctionnent de paire. Elles ont la même taille. J’aurai encore à ne pas afficher le contenu de la première ou bien à la déplacer dans le cas où la largeur de d’écran est trop petite.

    Une grande partie de ce que je viens de faire se trouve dans le fichier style.css qui rassemble tout ce qui a attrait à l’aspect visuel du site.

    Au fil du temps, je pense avoir trouvé comment créer une largeur dynamique, pour que celui qui regarde le site puisse ajuster à sa manière la largeur de la page affichée.

    Il faudra pour cela que je fasse un peu de javascript et inscrire cette information dans un cookie.

    Au niveau du fichier functions.php, je n’ai pas fait grand chose en dehors de copier/coller un des appel à register_sidebar() , ce qui m’a permis de faire comprendre à WordPress que je voulais une barre de côté en plus.

    Bien sûre, j’ai modifier le contenu, histoire de pouvoir les reconnaître.

    Par contre, afin d’éviter que WordPress ne se perde pas dans une page blanche, j’ai évité de changer l’ID de la sidebar d’origine. Je pense que j’aurais pu le faire à condition de supprimer tout ce qui était déjà assigné à l’intérieure.

    Donc, en ce moment, je suis à même de pouvoir placer à ma guise des widgets à gauche et à droite de mes articles.

    C’est beaucoup mieux qu’un menu forcé à gauche.

    Prochaine étape, je veux pouvoir placer 3 résumés d’articles en haut ainsi que 3 autres choses widget en bas.

    Au moins, je sais ce que je veux et où je vais…

    À bientôt!

  • Fabriquer un nouveau thème pour WordPress qui me ressemble.

    Ce site est complètement nu, et ne ressemble à rien pour le moment.

    J’ai donc entrepris de créer un nouveau thème pour WordPress que j’utilise ici même.

    Comme vous pouvez le voir, il n’y a pas grand chose à voir, et c’est normal car je suis en plein travaux de rénovation du site.

    J’ai commencé par suivre un petit tutoriel afin de m’aider à comprendre les bases du fonctionnement interne de WordPress.

    Ceci fait, j’ai commencé à structurer les différentes positions de ce qui m’intéresse à avoir sur la page internet.

    En ce moment, il y a le titre en haut de la page avec le menu principal.

    À gauche, il y a le menu du choix des catégories, qui pour le moment s’affiche en permanence mais qui devra à l’avenir ne s’afficher que sur la page du blog.

    À droite, il y a un bloc créé, mais qui pour le moment ne sert à rien

    Au centre, il y a les articles, et je suis en train de voir ce que je dois absolument faire pour y ajouter vos commentaires en respectant bien le fonctionnement de WordPress.

    En dessous, il y a un semblant de menu pour les réseaux sociaux, qui n’est pas encore fonctionnel.

    Et enfin, encore plus bas, il y a une zone de remerciement, qui, elle non plus, n’est pas encore tout à fait fonctionnelle.

    Je reviendrai bientôt sur le sujet, dès que j’aurai un peu avancé sur le projet.

    À bientôt.

  • Comment réaliser un log dans une application java?

    Après avoir cherché longtemps ce qui pouvait se faire de mieux en matière de logging en java, j’en suis revenu aux sources.

    En effet, le namespace java.util contient une classe logger suffisement complète pour pouvoir y faire tout ce que l’on désire.

    Cette classe, à elle seule ne sert pas à grand chose, mais combinée à un Handler ainsi qu’un Formater, qui sont toutes deux des classes de java.util, va permettre de créé des logs, aussi bien directement sur la console que dans un fichier ou un socket sur la toile.

    Ce qui m’intéresse ici, c’est un log au format xml. Il existe une classe XmlFormater toute faite pour le réaliser mais elle ne donne pas de référence à un fichier xsl pour la conversion automatique par un browser internet. J’ai donc créé un nouveau Formater avec cette fameuse ligne en plus et créé également ce fichier xsl.

    Pour information, il ne reste plus que internet explorer qui accepte de réaliser la conversion localement. Pour les autres browser, il faut passer par un serveur web pour une question de sécurité parait il…

    Voici donc les listings qui me permettent de créer un log en java. Je ne rentrerai pas dans des explications en détail mais si vous avez besoin d’informations, vous pouvez toujours laisser un commentaire sous l’article, je me ferai un plaisir de le lire et d’y répondre.

    	private static Logger logger;
    
    	public static void createLogger() {
    		logger = Logger.getLogger("binanceshell.application");
    		Handler loghandler;
    		try {
    			loghandler = new FileHandler("myTestingLogFile.xml");
    			loghandler.setFormatter(new MyXmlFormatter());
    			//System.out.println(loghandler.getFormatter().getTail(loghandler));
    			logger.addHandler(loghandler);
    		} catch (SecurityException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		} catch (IOException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}		
    	}
    

    Pour écrire un log, il suffit de faire:

    logger.log(Level.INFO,"Application Start!");
    

    Ci dessous, je donne une copie de la classe MyXmlFormatter, qui crée une sortie au format xml le plus simplement possible:

    package be.dagal.java.crypto.application.binanceshell;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.logging.Formatter;
    import java.util.logging.Handler;
    import java.util.logging.LogRecord;
    
    public class MyXmlFormatter extends Formatter {
    	private static final SimpleDateFormat SDF = new SimpleDateFormat("MM/dd/yyyy hh:mm:ss");
    	@Override
    	public String getHead(Handler h) {
    		return "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\r\n"
    				+ "<?xml-stylesheet href=\"logger.xsl\" type=\"text/xsl\"?>\r\n"
    				+ "<!DOCTYPE log SYSTEM \"logger.dtd\">\r\n"
    				+ "<log>\r\n";
    	}
    	@Override
    	public String getTail(Handler h) {
    		return "</log>\r\n";
    	}
    	@Override
    	public String format(LogRecord record) {
    		return "<record>\r\n"
    				+ "  <date>" + SDF.format(new Date(record.getMillis())) + "</date>\r\n"
    				+ "  <millis>" + record.getMillis() + "</millis>\r\n"
    				+ "  <sequence>" + record.getSequenceNumber() + "</sequence>\r\n"
    				+ "  <logger> " + record.getResourceBundleName()+"</logger>\r\n"
    				+ "  <level>" + record.getLevel() + "</level>\r\n"
    				+ "  <class>" + record.getSourceClassName() + "</class>\r\n"
    				+ "  <method>" + record.getSourceMethodName() + "</method>\r\n"
    				+ "  <thread>" + record.getThreadID() + "</thread>\r\n"
    				+ "  <message>" + record.getMessage() + "</message>\r\n"
    				+ "</record>\r\n";
    	}
    
    }
    

    J’espère que cela suffira à donner des idées à certains.

    Étant donné qu’il faut absolument que les fichiers xml et xsl soient sur un serveur, j’ai installé un serveur XAMPP qui fourni Apache, MySQL, PHP, Perl, Tomcat, et j’en passe bien d’autre. Ce bundle de serveur pour GNU/Linux, MS Windows, Mac OS est entièrement gratuit, et je crois même que tout est open source, sans vouloir m’avancer trop loin.

    Maintenant que j’ai un serveur web opérationnel, et tout ce qui va avec, je vais pouvoir trouver un emplacement pour y mettre mes fichiers de log mais aussi un semblant de site internet qui va me permettre de faire tout mes tests.

    Je vais donc commencer à réfléchir à ce que je vais mettre dans ce site, et par la même occasion, à ce que je dois écrire en java, php, html, xml, xhtml, xsl, dtd, css, …

  • Le centre névralgique de BinanceShell avec beaucoup de recul

    Au cœur du système se trouvera BinanceShell, un interpréteur de commande spécialement développé pour l’API de Binance.

    Dans un premier temps les entrées sorties se feront uniquement via la console, et par la même occasion via un tunnel local (pipe)

    Par la suite, je compte bien créer d’autres interractions comme un nouveau Rest/Post commun avec d’autres broker que Binance. Cela serait bien utile pour un programme plus général.

    La sortie se fera uniquement en XML dans un premier temps, et sur la console.

    Les possibilités futur sont infinie: http, telegram, twitter, etc…

    Je viens donc de démarrer un projet en java pour réaliser cet interpréteur purement console dans un premier temps.

    Le fait de l’écrire en java permettra de changer d’ordinateur facilement sans devoir compiler le programme 150000x

  • De la pensée vers le site en passant par le clavier, de quoi être heureux avec pas grand chose

    Mes salutations.

    Ces derniers temps, je me suis mis dans la tête de créer un bot de trading. Vous allez me dire, mais qu’est ce donc que cela?

    Pour commencer, il faut savoir ce qu’est le trading. Pour faire simple, le trading, c’est l’art d’acheter et de vendre des biens matériels ou non afin d’en tirer un intérêt quelconque.

    Ce qui m’intéresse, ce n’est pas d’aller chez un grossiste pour acheter des objets et puis de les revendre sur un marché publique, quoique cela pourrait être une expérience intéressente.

    Non, ce qui m’attire, ce sont les marchés en ligne. Cela parle de bourses, de matières premières, de forex mais aussi de cryptomonnaies.

    Dans un premier temps, c’est ce dernier point qui m’intéresse. Pourquoi? Simplement parce que c’est le marché le plus volatile, où il est donc plus facile de gagner de l’argent, mais malheureusement, d’en perdre également.

    Rassurez vous, je ne suis pas fou! Je n’ai pas l’intention de jeter de l’argent par la fenêtre en tentant d’automatiser des achats et ventes.

    Heureusement, il existe la possibilité de faire ces transactions avec des comptes démos (fictifs) pour pouvoir s’entrainer sans dépenser un cent.

    Tout cela pour dire que dans les jours qui viendront, je vais tenter de partager mes découvertes et peut être même passer mes actions en direct. Pas vraiment pour discuter mais plutôt pour montrer ce que je fais.

    Toujours est il que je suis bien lancé…

    En effet, cela fait bientôt 10 ans que je fais cela! Je peux dire que je sais de quoi je parle. J’ai déjà essayer différentes méthodes avec plus ou moins de résultats. Je suis donc fin prêt à tout mettre en œuvre pour réaliser ce qui me tient à cœur depuis bien longtemps.

    Pour ce faire, je viens de (re)démarrer un site internet, pour le partage des informations mais également pour que je puisse voir mon évolution.

    J’ai installer tous les outils qui me semblent nécessaire sur mon ordinateur personnel. J’ai également accumulé pas mal de matériel ces derniers temps afin de pouvoir parvenir à mes objectifs.

    Mes loisirs passant également par l’informatique, il est possible que ce site y voit certaine de mes activités en dehors de mon projet principal.

    Bon! Allez! C’est partit! Que la musique commence!

    À bientôt!

    Gilbert.

  • Un projet de vie intéressent pour un avenir meilleur

    Mes salutations!

    Cela fait un baille, maintenant, que je projette de me lancer dans quelque chose lié à internet et à tout ce qui me fait plaisir au quotidien. Le soucis, je n’arrivais pas à trouver exactement ce que je voulais faire. C’est là que beaucoup de personnes, tout comme moi jusqu’à ce jour, ne font rien par peur de la page blanche, de mal faire, du qu’en dira-t’on, et j’en passe bien d’autre. Le principal, n’est pas de savoir ce que l’on veut faire… Ben non! Ce qui compte le plus, c’est de se lancer et de montrer au monde entier ce que l’on fait. Regardez le nombre de personnes qui influencent le reste du monde. C’est incroyable de voir ce que certains font. C’est incroyable, aussi, de voir ce que certains sont… Alors, maintenant, je me dis: Oui, je fais des fautes d’orthographe, oui mes idées ne sont pas toujours très claires, oui je suis loin d’être parfait… Et alors, ce qui compte, je le répète, c’est de le faire et de se sentir bien parce qu’on le fait, et qui sait, cela influencera peut être quelqu’un d’autre qui fera mieux ou pire que moi, mais il le fera et en sera heureux!

    Alors, faites comme moi! Faites ce que vous aimez faire, non pas parce que c’est le moment de le faire, mais bien juste parce que vous avez envie de le faire!

    À bientôt!

    Gilbert.

  • Bonjour tout le monde !

    Bienvenue sur WordPress. Ceci est votre premier article. Modifiez-le ou supprimez-le, puis commencez à écrire !