Premières investigations pour MSSQL
Je vient donc de commencer à tripatouiller MSSQL.
Coté connexion, ca se passe sur le port 1433 biensure.
Par contre, il faut savoir que MSSQL utilise un protocole fabriqué par Microsoft: Tabular Data Stream.
Son abréviation est donc TDS, et c’est ce que je peux voire dans WireShark quand je sniff une session MSSQL.
Heureusement, Microsoft a ouvert les specs: http://msdn.microsoft.com/en-us/library/cc448435.aspx
Mon but est de réussir à utiliser ce protocol uniquement pour effectuer la connexion, puis la partie Login, mot de passe.
Il y a donc du boulot ! ![]()
Version 0.1.3 disponible !
Et voici la version 0.1.3 !
La suite des opération: Implémentation du MSSQL ! ![]()
Les Threads sont devenus Objet !
Ca y es !
La gestion des threads dans zxScan sont devenu enfin Objet !
Ils sont implémenté dans la version 0.1.3.
Dans les version inférieure à la 0.1.3, les threads étaient géré exactement comme en C.
Une bête boucle For, pthread_create() puis une deuxième boucle For avec pthread_join().
Maintenant, j’ai créé une classe qui permet de gérer tout les threads, mais la méthode executé par les threads se trouve dans le main.cpp
Pour ceux qui utilise simplement zxScan, pas de changements. Mais pour ceux qui s’interesse au code pure, gros changement ! ![]()
Problème Mulicoeur résolut !
Bon enffet tout venais de l’écriture du fichier de log!
Lorsque je lancais zxScan avec l’option -x ( désactiver le fichier de log ), là tout fonctionnait parfaitement.
J’ai donc ajouté un lock Mutex sur la fonction d’écriture de mon fichier de log, et maintenant tout est rentré dans l’ordre !
Je vais devoir sortir une version pour que vous ne soyez pas embêté par ce petit bug !
zxScan n’aime pas trop le Multi thread / coeur
Le week-end dernier, j’ai changer de PC.
Précédemment j’avais un AMD AthlonXP 3800+ Core venice, et maintenant un AMD Athlon 64 X2 Dual Core 6000+.
Quel à été ma surprise en lancant zxScan !
Le programme plante lamentablement !
Tout vient du fait que les threads utilisé utilisent une fonction ShowDebug().
Cette fonction est donc appelé par tout les threads. Et du moment qu’il y avait qu’un coeur, tout allais bien, et maintenant, il arrive que deux threads appellent en même temps un fonction !
Il me faut donc blinder mon code pour empêcher les threads de planter zxScan
J’utilise Subversion et Trac.
Un dernier petit poste pour parler un peu de Svn et Trac !
J’ai passer 1 ou 2 week-end ces dernières semaines pour installer, configurer et comprendre le fonctionnement de SVN (http://subversion.tigris.org) + TRAC ( http://trac.edgewall.org ).
( Donc au boulot je me suis incombé de la tache de faire fonctionner ce couple là: Passer de VSS à SVN. D’ailleur fini et réussi !
).
Donc, j’ai vue avec mon hebergeur pour avoir un système SVN + Trac en ligne ( car actuellement juste hebergé sur ma machine en local ).
Comme ca, je pourrais faire des liens vers du code pour être plus clair, et ca vous permettra ( pour ceux que la programmation intéresse ) de voire les évolutions et participer plus facilement au développement si il y en a qui sont intéressé.
Pour ceux qui ne savent pas, il existe un projet qui es plus complet et integré à GNOME si il y a des gens qui en cherche un bien : NautilusSvn: http://code.google.com/p/nautilussvn/
Réorganisation du code !
Hello,
Ce week-end j’ai travaillé à réorganiser le code.
Cette étape est devenu importante selon moi car vue que le code source est disponible, je ne veux pas que ce soit trop le fouillis !
On peut dire que je range ma chambre
Donc pour commencé, j’ai commencé par standardiser mes objets !
Maintenant ils ont tous les même méthodes pour activer / désactiver le mode verbose, le mode debug, pour afficher les messages.
Ensuite, j’ai retirer des variables qui ne servaient plus, j’ai aussi trouvé un include qui ne servait plus.
J’ai aussi ajouté un tools.cpp au projet qui contient des fonctions de convertion principalement !
Par exemple, j’ai codé des fonctions de convertion de nombre en string (ConvertNumberToString()), de boolean en string (ConvertBooleanToString()), etc …
Ca me permet de retirer plein d’include que je faisais sur sstream, et donc de supprimer tout les objets de cet include pour ne plus en avoir qu’un.
Bref, la version 0.1.2 sera surtout de la réorganisation.
Je croix que c’est important de le faire tant que le code reste petit.
Voila ![]()
Correction de la génération d’adresses IP
Salut à tous.
Je vient de remettre le nez dans mon code depuis la publication de la version 0.1b.
Je me suis fixé pour but de corriger ce bug, que je connaissais à la publication de la 0.1b, de génération d’adresses IP.
Dans la version 0.1b, si on donne pour rang d’ip 192.168.0.1 à 192.168.0.254 par exemple, le programme injectais chaque adresses IP dans une structure en partant bien de l’adresse IP 192.168.0.1, et finissait bien sur l’adresse IP 192.168.0.254.
Par contre, quand un thread appelais la structure pour obtenir une cible, avec la fonction get_target(), elle partait du dernier enregistrement de la structure puis aller chercher l’adresse précédente.
J’ai donc corrigé ca en retirant TOUT le système de structure ( elle ne contait qu’une adresse IP ), et la fonction get_target() se retrouve à générer l’ip en live.
J’ai donc allégé le code, et corrigé le bug.
Voila voila… Bon dimanche ![]()
zxScan version 0.1 Beta disponible !
Je suis heureux de vous annoncer la sortie de la première version de zxScan !
Ici une version Beta donc histoire de corriger les derniers bugs si vous en trouvez ! ![]()
J’espère qu’il vous sera utile et vous aidera.
Dans un premier temps, pour m’envoyer les déclarations de bugs, vous devrez passer par mon email.
Dans le futur je prévoie un Bug Tracker en ligne. ![]()
Vous pouvez aussi m’écrire pour me dire si le programme fonctionne bien et sous quel distribution vous êtes.
Connect() réparé, Beta en vue !
Les derniers gros problèmes sont corrigé désormé !
Les connexions sur les machines sont suivis d’un teste du service (ici ftp) avec getpeername().
Gestion du timeout sur le connect() avec select(), en passant par une socket non bloquant, et une fois getpeername() passé, je repasse la socket en bloquant pour avoir un meilleur fonctionnement de recv().
Le traitement est rapide et efficace.
J’ai commencé à faire tourner le scanner pour essayer de trouver des problèmes, mais ca tourne bien pour le moment. La béta est donc pour dans quelques jours !
J’imagine même là Lundi par exemple !
Donc tout le monde est convié à tester mon programme et à me remonter les problèmes !
J’espère qu’il y aura un peu de participants ![]()