jeudi 29 décembre 2016

UCheckSophos : MAJ vers 1.4.3

Ajouté : Style visuel Aero (effet de transparence sur la fenêtre) pour Windows Vista et 7 à condition de ne pas désactiver le service UxSms (gestionnaire de fenêtrage)
Ajouté : Possibilité d'arrêter l'analyse en cours d'exécution
- Ajouté : Animation de progression du scan.
Modifié : Optimisation du code source.




Projet sous licence Creative Commons : 




Lien du binairehttps://bitbucket.org/3dotdev/uchecksophos/downloads/UCheckSophos.exe
Lien du projet : https://bitbucket.org/3dotdev/uchecksophos

Bon codage à tous.

Createur Station Blanche : MAJ vers 1.3.4.4

Corrigé : Fermeture de session de l'utilisateur sélectionné.
Corrigé : Remplacement de la référence "Interop.TaskScheduler.dll" en version x86 pour une compatibilité x86 et x64.
- Modifié : Optimisation du code source.

Projet sous licence Creative Commons : 




Lien du binaire : https://bitbucket.org/3dotdev/createurstationblanche/downloads/CreateurStationBlanche.exe
Projet Open Source : https://bitbucket.org/3dotdev/createurstationblanche

Bon codage à tous.

jeudi 22 décembre 2016

UCheckSophos : MAJ vers 1.4.1

Corrigé : Force l'inscription des GPO sur le compte utilisateur car Sophos les supprime lors de la détection de Malwares (https://community.sophos.com/kb/en-us/118583)
Corrigé : Gestion complète des codes erreurs (http://sophos.usask.ca/sophos/current/WIN32/I386/SAV32CLI/readcli.txt)
Corrigé : Journalisation des erreurs et infections.
Corrigé : Rafraîchissement des boutons de l'interface.
Modifié : Affichage en temps réel du nombre d'erreurs et d'infections.
Modifié : Visualisation des résultats des scans par code couleur (rouge, vert,orange) dans la fenêtre des fichiers journaux.
Ajouté : Affiche le nombre de fichiers journaux sur le bouton "Tous les Logs".
Ajouté : Le bouton de la barre des taches permettant d'afficher/masquer es fenêtres du bureau est désormais caché.- Ajouté : Fermeture automatique de la fenêtre explorateur que sophos affiche à l'issu d'une suppression de Malware.

Lien du binaire : https://bitbucket.org/3dotdev/uchecksophos/downloads/UCheckSophos.exe
Lien du projet : https://bitbucket.org/3dotdev/uchecksophos

Bon codage à tous.

dimanche 18 décembre 2016

Createur Station Blanche : MAJ vers 1.3.4.3

Corrigé : Possibilité de créer des comptes avec un nom contenant des espaces.
Corrigé : Pas de fermeture de session possible si CSB exécute une tache !
Corrigé : Suppression du profil résiduel dans le registre.
- Modifié : Optimisation du code source.

Projet sous licence Creative Commons : 



Lien du binaire : https://bitbucket.org/3dotdev/createurstationblanche/downloads/CreateurStationBlanche.exe
Projet Open Source : https://bitbucket.org/3dotdev/createurstationblanche

Bon codage à tous.

dimanche 11 décembre 2016

UCheckSophos : Détection d'insertion/retrait de périphériques USB et scan antivirus


[DESCRIPTION]


Cet outil de détection/d'insertion de supports amovibles scan, journalise et notifie toutes détections virales. Il requiert l'installation du logiciel Sophos Endpoint Security and Control.

[SCREENSHOTS]



 [FONCTIONNALITES]


- Détection d'insertion/retrait de périphériques amovibles
- Demande de saisi de nom avant lancement du scan antivirus
- Journalisation des détections avec informations du support amovible (N° série si existant, Capacité, - Nombre de patitions, Modèle)
- Visualisation des journaux du périphérique USB connecté ou tous les fichiers logs
- Gestion d'arrachement de périphériques amovibles
- Scan à l'aide de Sophos Endpoint Security and Control


[PREREQUIS]

- Windows Vista, 7
- DotNet Framework 3.5
- Requiert que Sophos Endpoint Security and Control soit installé sur l'ordinateur qui exécute UCheckSophos.
- Logiciel portable, ne requiert pas d'installation !
- Createur Station Blanche
[REMERCIEMENTS]

mercredi 23 novembre 2016

Createur Station Blanche : MAJ vers 1.3.2.1

Corrigé : Ferme le registre lors de la fermeture de session ou l'extinction du PC
Corrigé : N'affiche pas le compte SophosSAU
Ajouté : Désactiver les évènemetns de lecture automatique (ex : réparation du disque)

Lien du binaire : https://bitbucket.org/3dotdev/createurstationblanche/downloads/CreateurStationBlanche.exe
Projet Open Source : https://bitbucket.org/3dotdev/createurstationblanche

Bon codage à tous.

samedi 12 novembre 2016

Createur Station Blanche : MAJ vers 1.3.1

- Corrigé : Le compte Invité (Guest BUILTIN) ne peut être supprimé
Corrigé : L'application ne pourra pas être exécutée depuis un ordinateur intégré dans un domaine
Corrigé : Détection automatique de l'existence du répertoire des profils utilisateurs, le cas échéant on définit %SystemDrive%\Users par défaut.
Corrigé : Les informations du compte Super-Administrateur sont désormais modifiables
Modifié : Meilleure gestion des listes des lecteurs à afficher/Masquer et autoriser/interdire l'accès
Ajouté : Affichage du répertoire de profil de l'utilisateur sélectionné

Lien du binaire : https://bitbucket.org/3dotdev/createurstationblanche/downloads/CreateurStationBlanche.exe
Projet Open Source : https://bitbucket.org/3dotdev/createurstationblanche

Bon codage à tous.

mardi 1 novembre 2016

Createur Station Blanche : MAJ vers 1.3

Modifié : CSB doit impérativelement être exécuté depuis un compte membre du groupe administrateurs ! Aucune élévation ne sera accordée.
Modifié : Nettoyage des espaces de noms

Lien du binaire : https://bitbucket.org/3dotdev/createurstationblanche/downloads/CreateurStationBlanche.exe
Projet Open Source : https://bitbucket.org/3dotdev/createurstationblanche

Bon codage à tous.

lundi 31 octobre 2016

Right-Clic Context Menu : MAJ vers 3.1

BugFix : Erreur causée par un clic droit dans la liste sur une zone vide (invalid argument)
BugFix : L'ajout d'items en cascade ou simple n'était pas opérationnelle (command path)
Modifié : Rendu des images des menus pas terribles sous Windows 7 (Pinvoke)

vendredi 28 octobre 2016

Righ-Clic Context Menu : Gestion de menus contextuels sous Windows

[DESCRIPTION]

Right-Clic Context Menu (RCCM) est le successeur de My 7 Context menu et My 8 Context Menu.
Ce petit utilitaire facilite la gestion des menus contextuels sur Windows Vista, Windows 7, Windows 8, 8.1 et Windows 10 (NT 6). Il permet d'afficher, de créer, de modifier, de supprimer des items des différentes catégories des menus contextuels :

- de l'ordinateur
- des lecteurs
- du bureau
- des dossiers
- des fichiers


[SCREENSHOT]



[FONCTIONNALITES]

- afficher les items des différentes catégories des menus contextuels.
- éditer certains items modifiables.
- supprimer l'item sélectionné.
- créer un menu contextuel simple ou bien en cascade avec autant de commandes que vous le souhaitez (selon les limites imposées par le système d'exploitation bien entendu !!).
- ajouter un programme et ou/un fichier de commande (.bat,.exe).
- ajouter une icône depuis un fichier exécutable ou bien en sélectionnant une icône directement.
- ajouter un lien URL depuis vos favoris ou bien en simple copier/coller.
- sélectionner l'endroit ou vous voulez voir apparaître votre item dans votre menu contextuel (haut, centre, bas).
- possibilité d'étendre le menu contextuel avec la combinaison des touches "SHIFT+Clic-droit".
- restauration des clés de registre avant modification (état des clés de registre avant ouverture du soft).
- ajout de menus contextuels simples ou en cascade personnalisable avec des items prédéfinis au choix.
- possibilité d'exporter les menus contextuels créés en fichier ".reg".
- ne prends pas en charge les marques-pages de Mozilla FireFox


[PREREQUIS]

- Système d'exploitation Windows Vista, 7, 8, 8.1, 10
- Le DotNet Framework 4.0 minimum.
- Ne nécessite pas d'installation


[REMERCIEMENTS]

- La librairie SetACL pour la gestion des permissions du registre en 32 et 64 Bits.

dimanche 9 octobre 2016

UCheck - Détection d'insertion/retrait de supports amovibles puis scan antivirus


[DESCRIPTION]


Cet outil de détection/d'insertion de supports amovibles scan, journalise et notifie toutes détections virales. Il requiert l'installation du logiciel McAfee Entreprise 8.8.

[SCREENSHOT]



 [FONCTIONNALITES]

- Détection d'insertion/retrait de périphériques amovibles
- Demande de saisi de nom avant lancement du scan antivirus
- Journalisation des détections avec informations du support amovible (N° série si existant, Capacité, Nombre de patitions, Modèle)
- Gestion d'arrachement de périphériques amovibles
- Scan à l'aide de Mcafee Entreprise 8.8 Pro ou Standard


[PREREQUIS]


- Windows Vista, 7, 8, 8.1, 10
- DotNet Framework 3.5
- Requiert que Mcafee Entreprise 8.8 Pro ou Standard soit installé sur l'ordinateur qui exécute UCheck.
- Logiciel portable, ne requiert pas d'installation !

[REMERCIEMENTS]

mercredi 5 octobre 2016

Createur Station Blanche - MAJ vers 1.2.9

Modifié : Compatible uniquement avec : Windows 7, 8, 8.1, 10
Modifié : Les programmes ajoutés au démarrage sont désormais exécutés avec des privilèges administrateurs grâce à la mise en place d'un job dans le planificateur de taches (pour chaque programme ajouté).

Lien du binaire : https://bitbucket.org/3dotdev/createurstationblanche/downloads/CreateurStationBlanche.exe
Projet Open Source : https://bitbucket.org/3dotdev/createurstationblanche

A NOTER : CSB est compatible avec le logiciel UCheck disponible ici : https://bitbucket.org/3dotdev/ucheck/downloads/UCheck.exe

Pour rappel UCheck est un logiciel de détection d'insertion/retrait de supports amovibles. Il scan (à l'aide du logiciel McAfee qui est installé sur le poste duquel est exécuté CSB) et log tous les résultats d'analyse et prévient lors de détections virales.

Bon codage à tous.

mardi 19 juillet 2016

Compétition : Gestion de courses, participants et groupe avec classement chronométré imprimable


[DESCRIPTION]


Cet outil permet de gérer des courses, des partcipants et des groupes afin d'établir un classsement chronométré imprimable.

[SCREENSHOT]



 [FONCTIONNALITES]


- Affichage des courses existantes
- Création/suppression/modification de courses
- Création/suppression/modification de particpants
- Création/suppression/modification de groupes personnalisables
- Départ/arrêt du chronométre
- Arrêt du chronomètre selon le nombre de particpant pointé par numéro de dossard
- Affichage du classement définitif
- Affichage des personnes non pointés (en fin de course) selon la liste des particpants
- Paramétrage de l'affichage de l'impression : redimensionnement puis affichage/masquage et/ou filtrage croissant/décroissant des colonnes.


[PREREQUIS]

- Système d'exploitation Windows Vista, Windows 7, 8, 10
- Le DotNet Framework 4 minimum
- Ne nécessite pas d'installation

[REMERCIEMENTS]

jeudi 2 juin 2016

Createur Station Blanche

Salut à tous,

Ce programme optimisé pour Windows 7, permet de créer/modifier/supprimer des profils utilisateurs à la volée. Ces derniers peuvent être paramétrés au moyen de stratégies locales de sécurité sans affecter pour autant le compte d'administration qui exécute l'application.
Il peut être très pratique lorsqu'on veut créer un ordinateur de type Station Blanche (station antivirus standalone) avec des comptes (ou profiles) paramétrables afin de verrouiller certaines fonctionnalités, un peu comme Windows Steady State.




Disponible ici : https://bitbucket.org/3dotdev/createurstationblanche


Bon codage à tous.

samedi 20 février 2016

SMART HDD/SSD : Obtenir les infos SMART d'un disque dur

Travaillant actuellement sur un projet d'optimisation HDD/SSD, cela a nécessité de récupérer les informations SMART d'un disque dur de type SSD ou HDD en s'appuyant sur les objets WMI :

Voilà à quoi pourrait ressembler une telle librairie avec l'espace de nom "Smart" (en c#) :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
 
namespace Smart
{
    public class Infos
    {
 
        public byte[] VendorSpecByte { get; set; }
        public string InstanceN { get; set; }
        public List Datas { get; set; }
 
        public Infos()
        {
            Datas = new List();
            LoadInfos();
        }
 
        private void LoadInfos()
        {
            using (ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", "SELECT VendorSpecific, InstanceName FROM MSStorageDriver_FailurePredictData"))
            {
                foreach (ManagementObject data in searcher.Get())
                {
                    try
                    {
                        this.VendorSpecByte = (byte[])data.GetPropertyValue("VendorSpecific");
                        this.InstanceN = (string)data.GetPropertyValue("InstanceName");
                        for (int i = 0; i <= 29; i++)
                        {
                            int id = VendorSpecByte[i * 12 + 2];
                            int flags = VendorSpecByte[i * 12 + 4];
                            bool failureImminent = (flags & 0x1) == 0x1;
                            UInt32 vendordata = BitConverter.ToUInt32(VendorSpecByte, i * 12 + 7);
                            if (!(id == 0))
                            {
                                PropertyContent pInfos = new PropertyContent();
                                pInfos.Id = id;
                                pInfos.Value = Convert.ToString(vendordata);
                                pInfos.IsOk = (failureImminent == false);
                                this.Datas.Add(pInfos);
                            }
                        }
                    }
                    catch (ManagementException ex)
                    {
                        throw new ManagementException("Erreur WMI", ex);
                    }
                }
            }
        }
 
        public string FormatToString()
        {
            string str = String.Empty;
            foreach (PropertyContent d in Datas)
            {
                str += ("ID:"
                             + (d.Id + ("\r\n" + ("PropertyName:"
                             + (d.PropertyName + ("\r\n" + ("PropertyValue:"
                             + (d.Value + ("\r\n" + ("PropertyState:"
                             + (Convert.ToString(d.IsOk) + "\r\n")))))))))));
            }
 
            return str;
        }
 
    }
 
    public class PropertyContent
    {
 
        private int m_Id;
        public int Id
        {
            get { return m_Id; }
            set
            {
                m_Id = value;
                switch (m_Id)
                {
                    case 1:
                        m_PropertyName = PropertyNames.RawReadErrorRate;
                        break;
                    case 2:
                        m_PropertyName = PropertyNames.ThroughputPerformance;
                        break;
                    case 3:
                        m_PropertyName = PropertyNames.SpinUpTime;
                        break;
                    case 4:
                        m_PropertyName = PropertyNames.StartStopCount;
                        break;
                    case 5:
                        m_PropertyName = PropertyNames.ReallocatedSectorCount;
                        break;
                    case 6:
                        m_PropertyName = PropertyNames.ReadChannelMargin;
                        break;
                    case 7:
                        m_PropertyName = PropertyNames.SeekErrorRate;
                        break;
                    case 8:
                        m_PropertyName = PropertyNames.SeekTimePerformance;
                        break;
                    case 9:
                        m_PropertyName = PropertyNames.PowerOnHours;
                        break;
                    case 10:
                        m_PropertyName = PropertyNames.SpinRetryCount;
                        break;
                    case 11:
                        m_PropertyName = PropertyNames.CalibrationRetryCount;
                        break;
                    case 12:
                        m_PropertyName = PropertyNames.PowerCycleCount;
                        break;
                    case 171:
                        m_PropertyName = PropertyNames.ProgramFailBlockCount;
                        break;
                    case 172:
                        m_PropertyName = PropertyNames.EraseFailBlockCount;
                        break;
                    case 173:
                        m_PropertyName = PropertyNames.UnknownAttribute;
                        break;
                    case 174:
                        m_PropertyName = PropertyNames.UnexpectedPowerLossCount;
                        break;
                    case 187:
                        m_PropertyName = PropertyNames.ReportedUncorrectableErrors;
                        break;
                    case 192:
                        m_PropertyName = PropertyNames.PoweroffRetractCount;
                        break;
                    case 193:
                        m_PropertyName = PropertyNames.LoadCycleCount;
                        break;
                    case 194:
                        m_PropertyName = PropertyNames.Temperature;
                        break;
                    case 196:
                        m_PropertyName = PropertyNames.ReallocationEventCount;
                        break;
                    case 197:
                        m_PropertyName = PropertyNames.CurrentPendingSectorCount;
                        break;
                    case 198:
                        m_PropertyName = PropertyNames.OfflineScanUncorrectableSectorCount;
                        break;
                    case 199:
                        m_PropertyName = PropertyNames.UltraDMACRCErrorCount;
                        break;
                    case 201:
                        m_PropertyName = PropertyNames.SoftReadErrorRate;
                        break;
                    case 220:
                        m_PropertyName = PropertyNames.DiskShift;
                        break;
                    case 230:
                        m_PropertyName = PropertyNames.LifeCurveStatus;
                        break;
                    case 232:
                        m_PropertyName = PropertyNames.AvailableReservedSpace;
                        break;
                    case 234:
                        m_PropertyName = PropertyNames.Reserved;
                        break;
                    case 241:
                        m_PropertyName = PropertyNames.LifetimeWritesFromHost;
                        break;
                    case 242:
                        m_PropertyName = PropertyNames.LifetimeReadsFromHost;
                        break;
                }
            }
        }
 
        private string m_PropertyName;
        public string PropertyName
        {
            get { return m_PropertyName; }
        }
 
        public string Value { get; set; }
        public bool IsOk { get; set; }
 
        private struct PropertyNames
        {
            public const string RawReadErrorRate = "Raw Read Error Rate";
            public const string ThroughputPerformance = "Throughput Performance";
            public const string SpinUpTime = "Spin Up Time";
            public const string StartStopCount = "Start/Stop Count";
            public const string ReallocatedSectorCount = "Reallocated Sector Count";
            public const string ReadChannelMargin = "Read Channel Margin";
            public const string SeekErrorRate = "Seek Error Rate";
            public const string SeekTimePerformance = "Seek Time Performance";
            public const string PowerOnHours = "Power-On Hours";
            public const string SpinRetryCount = "Spin Retry Count";
            public const string CalibrationRetryCount = "Calibration Retry Count";
            public const string PowerCycleCount = "Power Cycle Count";
            public const string ProgramFailBlockCount = "Program Fail Block Count";
            public const string EraseFailBlockCount = "Erase Fail Block Count";
            public const string UnknownAttribute = "Unknown Attribute";
            public const string UnexpectedPowerLossCount = "Unexpected Power Loss Count";
            public const string ReportedUncorrectableErrors = "Reported Uncorrectable Errors";
            public const string PoweroffRetractCount = "Power-off Retract Count";
            public const string LoadCycleCount = "Load Cycle Count";
            public const string Temperature = "Temperature";
            public const string ReallocationEventCount = "Reallocation Event Count";
            public const string CurrentPendingSectorCount = "Current Pending Sector Count";
            public const string OfflineScanUncorrectableSectorCount = "Off-line Scan Uncorrectable Sector Count";
            public const string UltraDMACRCErrorCount = "Ultra DMA CRC Error Count";
            public const string SoftReadErrorRate = "Soft Read Error Rate";
            public const string DiskShift = "Disk Shift";
            public const string LifeCurveStatus = "Life Curve Status";
            public const string AvailableReservedSpace = "Available Reserved Space";
            public const string Reserved = "Reserved";
            public const string LifetimeWritesFromHost = "Lifetime Writes From Host";
            public const string LifetimeReadsFromHost = "Lifetime Reads From Host";
        }
    }
}


J'ai volontairement créer une méthode ToString afin de pouvoir deboguer le rendu :

SmartInfos infos = new Smart.Infos();
MessageBox.Show(Convert.ToString(infos));

PS : Je me suis inspiré de ce billet pour obtenir les données de retour :
SMART

Bon codage à tous.

dimanche 7 février 2016

SSD Detector - Outil en ligne de commande

Salut à tous,

Cet outil en ligne de commande permet de savoir si un lecteur spécifié est situé sur un disque SSD. Il est également possible de lister tous les lecteurs de votre système afin de savoir s'ils sont situés sur un disque SSD.

Ce projet repose sur essentiellement 2 librairies :




Disponible ici : https://bitbucket.org/3dotdev/ssddetector


Bon codage à tous.