Devenir membre club
Connectez vous
Aide & règlement
Votre 1ère visite
Le règlement
Contacter les admins
Contacter le webmaster
Questions & réponses
Comment soutenir CodeS-SourceS
Comment faire un lien vers CodeS-SourceS
Autres questions
A propos & don
A propos du réseau
Les modérateurs
Remerciements
Faire un don
Le livre d'or
Tous les livres
Les dernières parutions
Les plus consultés
Les critiques
Le top des ventes
Le top favoris des membres
Recevoir des livres blancs
Tous les thèmes
Les derniers messages
Les nouveaux messages
Poser une question
Le Chat - IRC
Tous les tutoriels
Ajouter un tutoriel
Les tutoriels en vidéo
Les formations vidéos
Tous les codes
Ajouter un code
Filtrer par catégorie
Filtrer par date
Les plus récents
Les mis à jour
Les codes par jour
Filtrer par niveau
Niveau débutant
Niveau initié
Niveau expert
Filtrer par type
Les codes avec capture
Les codes avec zip
Les codes .Net
Filtrer par qualité
Les plus populaires
Les plus populaires du mois
Les plus téléchargés
Les mieux notés
Top par catégorie
Top des favoris
Filtrer par auteur
Tous les auteurs
Le top des membres
Les snippets
Déposer votre CV
Consulter les offres d'emploi ou de stage
Consulter les CVs
Déposer une offre d'emploi ou de stage
Modèles de CV et lettres
Trouver une convention collective
Les écoles d'informatique
Toutes les écoles
Ajouter une école
Les outils
Outils pour développeurs
Trouver des ressources
Base de données de CodeS-SourceS
Télécharger les meilleurs logiciels
Comparer les prix
Envoyer des ecards
Création de bannières
Annuaire de la prog
Tous les sites
Ajouter votre site
Le dico de la prog
Toutes les définitions
Ajouter une définition
Les évènements
Tous les évènements
Les évènements à venir
Ajouter un évènement
Téléchargements
CodeS-SourceS Toolbox
CodeS-SourceS Toolbar
Toolbar pour FireFox
Fonds d'écran
Les compil's
Nos partenaires
Magazine Programmez
Frontier.fr
Xiti
ProgOnline
Winwise
Editions Eyrolles
Toute la liste
Les RFC
CS
VB, VB.NET
ASP.NET,ASP
C, C++
ColdFusion
PHP
Javascript
Delphi
Flash
Java
Graphisme
Irc
Assembleur
C#
Mobilité
SQL
Foxpro
Python
Regex
Flex
Windev
Ce site au démarrage
begin process at 2012 02 11 07:38:54
Accueil
Codes
Tutoriels
Forum
Livres
Emploi
Services
Connexion
Trouver un code source :
dans
Tout le site
Codes
Tutoriels
Forum
Blogs
Livres
RFC
Icones
News .NET
Boutique
[ Dernières recherches ]
Veuillez saisir votre recherche... Ex: smtp, lire un fichier, rs232
Options de recherche :
Tous les codes
Tous les codes en .Net
Tous les codes sauf .Net
Langages disponibles :
Tous les langages
ASP / ASP.NET
Assembleur
C / C++ / C++.NET
C# / C#.NET
ColdFusion
Delphi
Flash
Flex, Air, ActionScript
Foxpro
Graphisme
IRC
JAVA / J2EE
Javascript / Ajax / DHTML
PDA / PocketPC
PHP
Python
Regex, Regular Expression, Expression régulière
SQL
Visual Basic, VB6, VB.NET, VB 2005, VB
116 commentaire(s) de verdy_p
sur des sources sur tout
CodeS-SourceS
Déposé sur
Bill checker: un vérificateur de validité de billets européens
oups! mettre "valide = isValid(numero)" entre parenthèses avant le "?"
Posté le :
18/04/2011 14:47:10
Déposé sur
Bill checker: un vérificateur de validité de billets européens
@CptPingu: la fonction atol() ne peut pas marcher pour convertir un si grand nombre (elle retourne un "long" qui sur un système 32-bits est identique à un "int" limité à 32-bits signé).
Ma version corrigée est plus proche de ta première version, mais n'utilise aucun tampon interne supplémentaire, ni les couteuses et dangereuses sprintf(), atol():
#include <stdio.h>
int isValid(const char* code)
{
if (strlen(code) != 12)
return 0; // mauvaise longueur !
int somme = code[0] - 'A' + 2; // rang de la lettre, +1 pour le test du modulo 9 final égal à 8.
//note : dans un modulo 9, il est inutile de décomposer unités et dizaines de la somme ci-dessus.
if (somme < 2 || somme > 27)
return 0; // ce n'est pas une lettre de 'A' à 'Z'
// traiter les 11 chiffres après la lettre
for (int i = 11 ; i > 0; i--) {
const int chiffre = code[i] - 0;
if (chiffre < 0 || chiffre > 9)
return 0; // ce n'est pas un chiffre de '0' à '9'
somme += chiffre;
}
return somme % 9 == 0; // et non 8, car on a déjà ajouté 1 ci-dessus à la somme.
}
int main(int argc, char** argv)
{
char tampon[14]; // + 1 pour un caractère excédentaire, et +1 pour le caractère nul de fin de chaîne
char* numero;
int valide;
printf("Numéro de série du billet : ");
if (argc > 1)
printf("%s\n", numero = argv[1]); // prendre le numéro depuis la ligne de commande
else // permettre de lire jusqu'à un caractère de trop en plus (afin de tester les numéros trop longs)
scanf("%13s", numero = tampon); // tampon doit donc avoir au moins 14 positions (y compris le nul final).
printf("Ce numéro %s\n",
valide = isValid(numero) ? "semble correct." : "est invalide !");
// Permet de tester aussi le statut en sortie du programme (IF ERRORLEVEL 1 ...)
return !valide;
// Convention la plus courante (DOS/Windows/Unix/Mac...) :
// statut = 0 si résultat OK, 1 si résultat faux (>1 ou <0 si exception ou abandon prématuré)
// Note: sous VMS, la convention de statut est inversée :
// statut = 1 si résultat OK, 0 si résultat faux (>1 ou <0 si exception ou abandon prématuré)
}
Posté le :
18/04/2011 14:45:33
Déposé sur
Bill checker: un vérificateur de validité de billets européens
Pour les lettres valides (premier caractère du code billet), il semble qu'actuellement on n'ait que l'une des 12 lettres suivantes: LMNPRSTUVXYZ (donc moins que les 17 pays membres : à vérifier si depuis on a des séries imprimées à Chypre, Malte, Estonie, Slovaquie, Slovénie).
Note: Même si le Vatican, Saint-Marin et Monaco ont été autorisé officiellement à utiliser l'euro et même à émettre des pièces en euros, ils n'émettent pas de billets car ils ne sont pas membres.
Le Kosovo utilise encore officiellement l'euro uniquement dans le cadre provisoire des accords de Dayton (traité de paix international dans lequel l'Union européenne est garante), mais le Kosovo n'est pas encore reconnu comme un pays et ne peut pas être membre. Les euros servent uniquement pour l'administration du territoire par l'ONU puis maintenant par un représentant de l'Union européenne, mais est encore reconnu comme partie de la Serbie. Le Monténégro a choisi unilatéralement d'utiliser l'euro, de même qu'Andorre : ils ne peuvent par émettre de billets (d'ailleurs ni l'un ni l'autre n'a encore de banque centrale nationale, uniquement un établissement national titulaire des garanties d'emprunts d'Etat dans n'importe quelle autre devise inernationale négociable sur les marchés financiers).
Andorre toutefois a été autorisé à émettre des pièces commémoratives libellés en euros, mais sans valeur marchande (des pièces commémoratives en euros, avec un design distinct, sont également autorisées dans les membres, y compris la France).
----
La Suisse n'a pas d'euros mais une association privée de banques émet des "euros WIR" sur les marchés financiers et transactions commerciales de gré à gré (sans pièces ni billets), et sans garantie du gouvernement suisse. Ce sont essentiellement des lignes de compte que peuvent détenir et s'échanger en Suisse entreprises et particuliers pour faciliter les échanges de liquidité sans avoir besoin de recourir au change avec le franc suisse.
(un peu aussi comme les "eurodollars" en Europe, dans certaines banques privées qui autorisent la tenue de compte dans cette devise, sans avoir au préalable à signer une déclaration fiscale aux Etats-Unis, comme on le fait quand on dispose d'un compte titre sur des valeurs cotées en dollars sur les marchés américains: NYSE, DASDAQ, et certaines valeurs EuroNext).
Cependant la liquidité de ces devises "bis" (dont la valeur est presque alignée sur celle de la devise première, avec un léger décalage dans le temps pouvant prendre plusieurs jours) n'est pas assurée sur tous les marchés internationaux (donc le négoce peut prendre plus de temps en cas de change, et nécessite toutefois que quelqu'un dispose de la devise originale et l'accepte en échange de la devise "bis").
----
Le franc CFA, le franc Pacifique, l'escudo du Cap-Vert sont émis avec une valeur fixe par rapport à la valeur équivalente en l'euro du franc français ou de l'escudo portugais, mais selon un accord spécial ayant permis de conserver les accords monétaires pendant l'adoption de l'euro. Mais leur cours peut être révisé sur décision des pays engagés dans ces accords monétaires. Pour le franc Pacifique, seule la France peut fixer la parité avec l'euro. Pour le franc CFA, cela se fait dans deux organisations internationales différentes ayant chacune leur banque centrale (il y a deux devises) : la France en est membre et apporte des garantie financières mais elles sont limitées ce qui a déjà conduit plusieurs fois à des révisions de leur parité par rapport au franc français et maintenant l'euro. La BCE n'apporte aucune garantie à ces devises où la France et le Portugal sont engagés.
Pour le florin des Antilles en fait sa valeur est appuyée sur un panier de devises comprenant le dollar américain (et selon des décisions d'ajustement de ce panier par les Etats antillais des Pays-Bas et l'Etat métropolitain), et pas seulement l'euro (de fait il n'y a pas de parité fixe avec l'euro).
Il en serait de même si le Royaume-Uni rejoignait l'euro pour sa livre sterling (GBP), et sa parité par rapport à la livre de Gibraltar, la livre de Jersey, la livre de Guernesey, et la livre des Falklands, avec leur propre billets et leur propre institut d'émission monétaire, même si la livre sterling y est aussi couramment échangée (à parité sous réserve des contrôles de change locaux) ; certains autres territoires britanniques utilisent soit le dollar américain, soit le dollar Caraïbes (dont la valeur est actuellement à valeur fixe par rapport au dollar américain). Ces territoires d'outre-mer britanniques (ainsi que les 3 possessions de la Couronne, en Manche et en mer d'Irlande) qui utilisent d'autres devises que la livre sterling ne sont toutefois pas dans l'union européenne, ni même formellement dans le Royaume-Uni qui assure leur défense et sécurité en accord avec les parlements locaux (pas même non plus l'île de Man qui pourtant utilise la livre sterling car cette île n'a pas d'institut monétaire local).
Les seuls territoires d'outre-mer britanniques qui utilisent la livre sterling et non une devise locale sont:
- ceux des bases de souveraineté à Chypre (il est question que ces territoires passent à l'euro pour des raisons pratiques avec la population locale, qui compte de nombreux personnels ayant la citoyenneté d'une des deux républiques ; comme c'est aussi déjà le cas pour la zone tampon gérée par l'ONU et qui joint ces deux bases, l'ensemble séparant les deux républiques qui formellement font partie toutes deux de l'Union européenne, y compris en terme de citoyenneté : à Chypre du Nord, l'euro est de plus en plus utilisé à la place de la nouvelle livre turque, ces deux devises étant utilisées de facto).
- la base militaire américaine de Diego Garcia, qui fait formellement partie du Territoire britannique de l'océan Indien (mais a été concédé aux Etats-Unis qui peuvent l'administrer contre un bail de location, mais après que dans les années 1960 dans les années 1960 la population locale y ait été évacuée de force, celle-ci poursuit aujourd'hui le gouvernement britannique devant des cours européennes) : dans cette île, qui ne fait pas non plus formellement partie du Royaume-Uni, c'est le dollar américain qui est utilisé (de même que la base américaine de Guantanamo à Cuba).
Les îles Åland sont une dépendance de la Finlande en mer Baltique mais à proximité immédiate de la Suède : on y parle le suédois et non le finnois et on n'y utilise pas l'euro comme le reste de la Finlande, mais encore la couronne suédoise (qui aurait déjà dû rejoindre l'euro mais la Suède s'est arrangée pour bloquer le processus automatique d'entrée par des dispositions techniques afin de repousser l'échéance). Ces îles finlandaises sont bien dans l'union européenne (de même que la Finlande et la Suède) même si elles un statut d'autonomie spécial au sein de la Finlande. En pratique toutefois, l'euro y circule facilement (d'autant que la couronne suédoise a stabilisé son cours par rapport à l'euro). Il n'y a pas de devise spéciale donc pas d'émissions spécifiques de pièces et billets en euros.
Posté le :
18/04/2011 14:02:14
Déposé sur
Bill checker: un vérificateur de validité de billets européens
Grosse erreur à ne jamais faire dans un programme:
{
char code[12] = "";
scanf("%s", &code);
//...
}
Le "%s" dans scanf ne donne absolument aucune limite à la longueur de chaine qu'il va vouloir stocker dans le tampon pointé ici par code. Ce tampon étant TRES court (12 caractères Y COMPRIS la place pour l'octet nul final), et en plus alloué en pile, si on saisit plus de 11 caractères, scanf() va provoquer un débordement de tampon, et va donc écraser d'autres éléments de la pile (autres variables locales déclarées dans la fonction courante, adresse du cadre de pile de la fonction appelante, adresse d'exécution au retour de la fonction, n'importe quel gestionnaire d'exceptions). Comme la pile est située à un emplacement à peu près à un emplacement fixe en mémoire virtuelle, c'est facile d'écraser la pile pour que l'adresse de retour tombe à un emplacement situé au début de la pile qu'on aura écrasé volontairement en y copiant du code binaire arbitraire.
Au mieux, si on dispose d'un processeur prenant en charge la protection contre l'exécution, la pile sera dans un emplacement non exécutable, ce qui assurera un crash, mais pas forcément la récupération de l'erreur, ni nécessairement un abandon immédiat du programme par les protections installées par le système.
Quand on utilise scanf() depuis une source dont on n'est pas assuré de connaitre le format des données qui y seront lues, ne JAMAIS utiliser "%s" sans indiquer une limite de longueur.
Autre erreur ici : un numéro de billet bien formé contient 12 caractères (une lettre initiale correspondant au pays ayant émis le billet, en fait plutôt l'imprimerie nationale correspondante qui peut travailler parfois pour plusieurs pays, et transformé en un chiffre de contrôle, mais pas n'importe quelle lettre; cette lettre est suivie de 10 chiffres, plus un chiffre final ajouté uniquement comme contrôle contre les erreurs de lecture/saisie) il faut donc réserver au moins 13 caractères pour le stocker dans une chaîne en comptant l'octet nul final. D'autre part ce code oublie de vérifier la longueur de la chaîne effectivement saisie: un test sur strlen() au début fera l'affaire (sinon le code va trop facilement dire OK dans 95% des cas).
Enfin, à quoi sert le tampon intermédiaire dans le code ? On peut tout faire dans une seule boucle et avec une seule variable de totalisation.
Note: comme pour le contrôle des numéros de cartes bancaires, ce code n'indique pas la validité. En fait même les billets contrefaits vérifient cette formule simple. Le vrai contrôle nécessite la liste complète (gardée secrète) des numéros de série, nécessite de savoir la date d'émission. Il y a d'autres codes en plus sur les billets (ne cherchez pas avec vos yeux, ils sont invisibles à l'½il nu). D'autres codes sont codés sous forme de gravures de type code barre ultrafines, certaines lisibles uniquement sous un rayonnement particulier. Il y a aussi des marques et gravures spécifiques à certaines séries, de légers déplacements d'objets selon les séries, des différences chromatiques (révélables uniquement par traitement chimique dont certains ne peuvent être faits que par la banque centrale puisque cela rend le billet impropre à sa remise en circulation puisque ceal a effacé aussi d'autres éléments de vérification mis à la disposition du public). Il y a enfin une piste magnétique contenant une signature numérique longue (les banques centrales nationales peuvent vérifier ces signatures numériques qui utilisent un cryptage de qualité militaire, et des données relatives au cycle de vie et de distribution du billet).
Le numéro de série visible n'est qu'une partie des données (tout de même utile car les banques ne remettent jamais en circulation immédiatement les billets qu'elles collectent, mais les envoie à la banque de France en échange d'autres billets neufs ou reconditionnés, la BdF assurant le contrôle complet en liaison avec les autres BCN de la BCE). On ne peut pas conclure qu'un billet est véritable avec ce seul code, qui ne sert que dans les systèmes de gestion de caisse et de gestion des billets à vérifier que les numéros enregistrés ont été correctement saisis.
Malgré tous ces points de contrôle, il y a toujours de nombreux faux billets qui circulent, tout bonnement car la plupart des gens et commerces ne peuvent les vérifier tous (même avec un bon équipement). Mais là où on trouve le plus de faux euros, c'est justement hors de l'union européenne, car les banques centrales nationales ne font pas ce contrôle (sauf en cas d'enquête via des agences de la BCE dans certains pays), et les banques commerciales remettent en circulation les billets qu'elles collectent sans les contrôler complètement. Il se passe la même chose avec les faux dollars en Europe et en Asie. Il y a plein de faux euros en Afrique.
Posté le :
18/04/2011 05:15:59
Déposé sur
Validation de la force d'un mot de passe
Si le site accepte autre chose que les caractères ASCII, et accepte l'Unicode, pensez par exemple à charger dans la barre de langues un clavier non latin (si possible non alphabétique et non basé sur une translitération du latin: arabe, hébreu, hindi), et tapez votre mot de passe en changeant temporairement la disposition du clavier, pour que cela génère des séquences illisibles qui ne sont pas de simples translitérations: testez la frappe de votre phrase dans le bloc-notes, assurez-vous que ce ne soit pas non plus une véritable gymnastique sinon le risque d'erreur sera important et vous aurez toujours à reconsulter vos notes secrètes, ou bien on pourra lire ce que vous frappez.
Autre idée: vous pouvez aussi utiliser MSKLC pour modifier votre clavier standard afin d'y ajouter un ou deux "jolis" caractères symboliques (Wingdings, signes typographiques rares), sans avoir à basculer de langue temporairement avec la barre de langue (des signes que vous pourrez alors inclure dans vos mots de passe Unicode). Recherchez ces caractères avec Charmap et une police "riche" (comme 'Segoe UI', ou Arial Unicode si vous avez Office). Testez ces caractères d'abord en essayant de vous les envoyez par email via un compte webmail (par exemple Gmail), afin de vous assurer que votre clavier fonctionne de façon correcte avec des sites connus et raisonnablement fiables, mais aussi avec les réglages de votre/vois navigateurs (y compris sur votre smartphone si vous voulez recevoir les mots de passe par SMS en cas d'oubli).
N'hésitez pas non plus sur un nouveau site à tester les possibilités de mots de passe autorisés et fonctions de renvoi de mots de passe oublié avant d'y confier vos données sensibles : passez un peu de temps dans vos préférences en ligne, et vérifiez plusieurs fois vos options de confidentialité (notamment sur FaceBook, qui veut tout partager avec un nombre d'amis et d'amis d'amis beaucoup trop important ; Facebook est le PIRE de tous les sites que j'ai jamais vu pour la confidentialité : une horreur à paramétrer, ses options de partage par défaut sont très mauvaises, les options de visibilité par "seulement moi-même" sont accessibles et disponibles uniquement en mode avancé dans un sous-dialogue, à rechercher pour chacune de ses nombreuses fonctions, et il faut constamment retourner dans les préférences pour voir si de nouveaux partages d'infos ont été activés sans que vous en ayez conscience, d'autant plus qu'il veut absolument que vous soyez y identifié avec votre nom réel, et toutes sortes d'indices sur vous que tout le monde n'a pas à connaitre !).
Posté le :
12/03/2010 00:26:11
Déposé sur
Validation de la force d'un mot de passe
Les bons mots de passe, assez longs mais encore mnémotechniques sont en général définis comme des "pass phrases", c'est-à-dire composés de phrases ayant un sens pour l'utilisateur et pouvant éventuellement fournir la question à une réponse donnée, ou bien étant une réponse figurée/imagée à une question posée (mais où la réponse est connue de l'utilisateur, et imagée selon une analogie, une maxime, un élément culturel, que comprend l'utilisateur et qui est alors associée intimement aux mots. Ce peut être par exemple la réponse en trois mots qui n'ont rien à voir entre eux, à trois questions posées comme des définitions de mot croisés, ces questions étant un peu habilement posées comme si c'était une phrase un peu étrange mais signifiante pour l'utilisateur (de sorte que les autres ne verront pas l'image et chercheront une réponse littérale).
À cela, l'utilisateur peut aussi ajouter quelques caractères ou conventions ne figurant pas dans la question posée, mais définie habituellement dans ses mots de passe. La langue (ou l'orthographe) utilisée peut aussi aider: penser à inclure un mot dans un style Leets, ou SMS (pas forcément dans tous les mots de la réponse), et à créer un moyen permettant de varier les mots de passe en fonction du site demandeur (ne pas mettre son mot de passe personnel identique entre tous les sites, notamment les sites hautement ciblés par les attaques comme Gmail, Yahoo, Facebook, MSN/Live.
Pour vos comptes bancaires en ligne, utilisez les mots de passe recommandés par votre banque, et gardez-les en lieu sûr en supprimant le document à l'entête de la banque et en le notant ailleurs dans un agenda de l'année passée, au milieu de notes, sous une forme déguisée dans des pages déjà bien remplies (si le mot de passe est numérique, par exemple piochez un nom au hasard dans l'annuaire, d'une personne que vous ne connaissez pas et saurez reconnaitre facilement parmi les autres nombreux noms, et notez la comme si c'était certains chiffres d'un numéro de téléphone mobile, d'un code de porte d'entrée, une date ou heure de rendez-vous, un prix réaliste pour un produit courant du marché qui ne vous intéresse habituellement pas...
Ne planquez pas trop ce calepin, mettez le plutôt parmi vos "paperasses" d'usage courant ou restant à classer, et pas dans un endroit saugrenu (dans le frigo par exemple) où il risquerait en plus d'être détruit pas accident. Pour les étudiants, pensez à vos notes de cours de l'an passé vous aurez bien un cahier bien rempli avec des tas de gribouillis, et notes persos, ou autres exercices, mais pas trop encombrant pour que vous puissiez le garder en relativement bon état, rappelez-vous juste du sujet du cours, trouvez un gribouillis sur une page que vous aimez bien... Petit à petit vous retiendrez une bonne méthode pour retrouver plus facilement le mot de passe par un raisonnement cohérent, en vous passant même de ces notes, que vous pourrez sécuriser davantage, tout en augmentant raisonnablement la complexité de vos mots de passe.
Ne vous précipitez pas tout de suite vers un mot de passe compliqué que vous ne retiendrez pas. Augmentez en la complexité après avoir bien mémorisé celui de base. Vous pouvez aussi utiliser un mot de passe connu par coeur complété d'un mot de passe spécifique pour le site que vous noterez (ne noter que cette seconde partie). Mais ne réutilisez jamais vos mots de passe très sensibles (et d'usage plus rare et strictement personnel) avec ceux de sites sociaux en ligne (notamment les forums). Si un nouveau site vous propose la connexion avec OpenID, utilisez la: ça évite de fournir un mot de passe connu directement à ce site dont vous ne connaissez pas encore le niveau de confiance, mais n'utilisez pas non plus le mot de passe de votre compte email principal (celui que vous utilisez pour vos communications les plus privées avec des sites importants).
Posté le :
11/03/2010 23:58:19
Déposé sur
Validation de la force d'un mot de passe
Bogue dans la fonction:
Function IllegalChar(avar) As String
'**********************************************************************************************************************
'Fonction IllegalChar
'Vérifie s'il y a des caractères hors normes (33 à 126) dans la cellule sélectionnée.
'**********************************************************************************************************************
For N = 1 To Len(avar)
If Asc(Mid(avar, N, 1)) >= 33 And Asc(Mid(avar, N, 1)) <= 126 Then IllegalChar = "Caractères légaux" Else IllegalChar = "Caractères illégaux"
Next
End Function
En effet, elle retourne dans IllegalChar uniquement le statut du DERNIER caractère dans le paramètre, et ne positionne pas la variable si le mot de passe est vide...
La fonction devrait être :
Function IllegalChar(avar) As String
'**********************************************************************************************************************
'Fonction IllegalChar
'Vérifie s'il y a des caractères hors normes (33 à 126) dans la cellule sélectionnée.
'**********************************************************************************************************************
IllegalChar = "Caractères légaux"
For N = 1 To Len(avar)
If Asc(Mid(avar, N, 1)) < 33 Or Asc(Mid(avar, N, 1)) > 126 Then IllegalChar = "Caractères illégaux"
Next
End Function
Et d'une façon générale, il y a trop de variables globales dans tout ce programme, les variables locales (de contrôle de boucles par exemple) devraient être toutes locales dans les fonctions.
Trop de fonctions également, qui parcourent cent fois la chaine, et emploient Mid() avec trop de répétition pour scanner la chaine et allouer et copier des nouvelles sous-chaines de 1 caractère pour finalement utiliser Asc() encore pour en extraire le code. Toutes ces boucles qui parcourent la chaine du début à la fin devraient être factorisées dans la même boucle "For N = 1 To Len(avar) ... Next", alors qu'il suffirait de déclarer un seul objet contenant les différents compteurs d'évaluation en tant que membre, avec une fonction contructeur prenant le mot de passe et effectuant l'analyse une fois avec une méthode statique publique référençant l'instance d'objet en paramètre qui sera mise à jour, puis consultée avec des méthodes d'instance publiques retournant la valeur du type d'évaluation demandée: même écrit comme ça, le code serait beaucoup moins long, et plus propre à réutiliser.
D'autres évaluations manquent, comme une fonction vérifiant certaines valeurs connues de mots de passe par défaut, depuis une ébauche de dictionnaire (par exemple "admin", "root", "pass", "password", "0000", "1234" sont détectés comme faibles, mais il y en a plein d'autres à considérer, en ignorant aussi les différences de casse et d'accents avec une collation de niveau 1 pour les mots courants de cette langue pour cette recherche), en ajoutant aussi ceux qui sont fonction de la locale courante de l'utilisateur (sa langue, et l'anglais souvent en fallback) ou celle du projet su site, de son nom ou pseudonyme sur le projet, et du nom du projet ou site pour lequel un mot de passe est demandé.
Il n'est pas inutile de consulter les codes sources de certains Password-crackers pour savoir comment ils peuvent trouver un mot de passe en quelques millisecondes. A mon avis, l'évaluation devrait consister plutôt à utiliser un de ces password-crackers connus (dont les sources sont largement disponibles sur Linux/Unix et Windows), en analysant le nombre de combinaisons (ou le temps) qu'ils ont essayé avant de trouver le mot de passe.
C'est ce que Google a fait sur son site pour renseigner les utilisateurs sur la sécurité relative du mot de passe de leur compte personnel pour Gmail, iGoogle, Google Docs, Google Groups, Google Gears, au moment où ils définissent leur mot de passe sur ce compte; cette évaluation devrait aussi être réeffectuée avec le temps et si le site stockant les mots de passe change de politique et décide de renforcer les seuils ou doit palier à des attaques en prévenant les utilisateurs d'un problème potentiel sur un mot de passe moyen devenu faible ou la cible d'attaques...
Posté le :
11/03/2010 23:19:34
Déposé sur
Mise sous forme fnn d'une notation polonaise
Tu as toujours partout la même faute irritante: tu écris "-uer" au lieu de "-eur".
et "EQUIVALANCE" au lieu de "EQUIVALENCE".
Et pourquoi diable n'as-tu pas séparé le code gérant l'interface du code transformant les expressions dans des classes séparées ? (je parle de Form1.cs) Tout mélanger est une très mauvaise idée, le code contruisant les formulaires devrait juste pouvoir instancier une classe séparée pour faire le calcul et obtenir le ou les résultats.
Et faire ça avec des expressions régulières et des concaténations de chaines, je ne pense pas que ce soit très sûr comme méthode, ni très efficace. Avec une représentation en arbre tu aurais pu séparer l'analyse lexicale de la chaine entrée pour contrsuire l'arbre, faire toutes les transformations avec des branches d'arbes au lieu de chaines, et permettre d'autres représentations en résultat, notamment les notations infixes (formules classiques parenthésée) et postfixes (polonaise inversée). Et utiliser des opérateurs notés de façon plus conventionnelle que "v" (une lettre pour "ou") et "|" (pour "non", vraiment confondu avec "ou").
Note que les notations "mathématiques" du "ou" et du "et" n'utilise pas un "v", ce sont des coins d'angles. En suivant ta logique, il aurait fallu utiliser de façon homogène "^" pour noter le "et", mais tu as utilisé "&"; si tu utilises juste les caractères de l'ASCII, autant prendre les opérateurs classiques du C/C++/C#, jamais les lettres simples. Sinon, ouvre Charmap, sélectionne une police Unicode, et va chercher les vrais caractères opérateurs mathématiques, pour les coins d'angles, et les flèches)
Ok ton programme marche, mais il n'y a pas grand chose à en faire d'autre dans l'état, et dans cet état il ne servira pas à grand monde.
Ton prof de TP te redira les mêmes choses si tu lui montres ce programme dans l'état: et il ne pardonnera pas l'absence de séparation de l'interface et du traitement, et les fautes d'orthographe répétées qui sautent aux yeux aussi bien dans le code que dans l'interface.
Posté le :
08/03/2010 23:10:09
Déposé sur
Mise sous forme fnn d'une notation polonaise
Télécharge le fichier que tu as versé ici, tu verras que ce n'est pas ce que tu crois, et pas ce que tu as en ce moment sur ton PC.
Attention à la virtualisation des fichiers sur Windows Vista et Seven: quand sur ton PC tes applis travaillent localement, elles ne modifient pas forcément le fichier à l'endroit que tu crois, mais une copie virtuelle, si tu as créé initialement ton fichier ZIP dans un dossier protégé du système, mais ton navigateur transmettra uniquement la première version (non virtualisée).
Regarde d'ailleurs le source sur ce site même, c'est évident: le fichier "Operator.cs" ne fait qu'afficher ses très variables, et n'a aucune autre méthode utile, le fichier "Program.cs" ne fait que grouper l'initialisation des composants, et le reste c'est le code construisant le formulaire et il n'y a aucun gestionnaire d'évènement.
Comme ton fichier ZIP ne contient aucun binaire exécutable non plus (peut-être a-t-il été filtré automatiquement par le site qui ne veut que du source), on n'a rien à se mettre sous la dent. Le reste ce sont des ressources et manifestes, ainsi que les fichiers ".sln" pour la construction du projet sous Visual Studio.
Tel qu'il est, ton ZIP ne fait rien d'autre que d'afficher une fenêtre avec un bouton et quelques éléments statiques.
Et je ne vois pas quel est l'intérêt des sous-dossiers et fichiers temporaires.
Posté le :
08/03/2010 15:19:58
Déposé sur
Mise sous forme fnn d'une notation polonaise
Non ton code ne fonctionne pas du tout puisqu'il ne fait rien du tout à ce sujet, juste construie l'interface graphique. Ce que tu as envoyé ne contient pas ce que tu crois.
Et j'avais déjà compris le principe de la transformation de formules en notation polonaise.
Mais il était sans doûte plus utile d'utiliser les symboles plus conventionnels pour les opérateurs :
- "|" (ou "||" comme en C/C++/Java/C#...) au lieu de la lettre "v"
- "!" au lieu de "|" (qui prête à confusion)
Et de fournir une conversion entre les représentation en infixe (classique), préfixe (polonaise), et postfixe (polonaise inversée)
Mais il n'y a pas non plus le code réalisant la transformation des opérateurs "=>" (NOT OR) et "<=>" (NOT XOR) en opérateurs booléens classiques (AND, OR, NOT), il manque aussi le "^" (XOR).
Et il n'y a pas non plus le code transformat dans une des deux formes canoniques (d'ailleurs tu as choisi la forme la moins commmune, celle des sous-expressions liés par des "ou" uniquement, les sous expressions comprenant des termes simples liés par des "et", alors qu'en général on choisit plutôt l'autre forme).
La notation polonaise inversée est aussi en général plus facile à lire pour beaucoup, alors que la notation polonaise normale (préfixe) est plus adaptée à la programmation fonctionnelle.
En général on passe d'une forme à l'autre en construisant l'arbre syntaxique d'où on tire toutes les formes et dans lequel on peut effectuer toutes les transformations directement en parcourant l'arbre. Sans même transofmer l'arbre, toutes les notations peuvent être obtenues directement en parcourant l'arbre (y compris la notation infixe même si elle peut imposer d'ajouter des parenthèses pour respecter les priorités opératoires).
Mais dans l'état, ton programme ne fait pas ce qui est dit. Je le répète: c'est une conquille vide, et tu as du te tromper de fichier.
Posté le :
08/03/2010 14:33:34
1
2
3
4
5
6
7
8
9
10
11
12
Nos sponsors
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.
par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article
par Patrick Guimonet
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3
par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article
par ROMELARD Fabrice
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !
par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article
par Vko
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
[FRAMEWORK 4] LES TASKS ET LE THREAD UI
par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article
par fathi
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE
WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE
par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article
par JeremyJeanson
La suite
RSS
Côté IT
Utiliser Office 365 pour un projet d?équipe - PART 2
Utiliser Office 365 pour un projet d?équipe - PART 1
SharePoint 2007 : Installation du Service Pack 3 de MOSS
SharePoint 2007 : Installation du Service Pack 3 de WSS V3
Installation de SQL Server DENALI CTP3
Mise à jour de Windows 2003 R2 vers Windows 2008 R2
Upgrade de SQL Server 2005 vers SQL Server 2008 R2
La suite
RSS
Offres d'emploi
Recherche Recherche développeur web ASP et ASP.Net
Recherche Analyste Programmeur Adélia
Recherche Développeur eZ Publish confirmé
Recherche AP (H/F) ACCESS EXCEL VBA
Recherche SUPPORT INFORMATIQUE / DEVELOPPEUR
Recherche Developpeur web
Recherche développeur Web
Déposer une offre
La suite
RSS
Formations Video
Coffret : Ateliers sur la mode
Atelier sur la mode : Motifs et matières
Atelier sur la mode : La planche tendance
Atelier sur la mode : De retour de pige et repérage
Corel Painter 12 : Les fondamentaux
Coffret : Microsoft Office 2010 de A à Z
De Microsoft Office 2003 à 2007 et 2010
La suite
RSS
Appels d'offres
Passerelle Pericles sur site Joomla 17
Budget :
499€
Infogerance Serveur Debian Linux
Budget :
2 400€
Developpeur applications iphone - ipad - android
Budget :
800€
La suite
RSS
Logiciels
Academy System (17.2.1.0)
ACADEMY SYSTEM (17.2.1.0)
Logiciel de gestion des établissements. - élèves/étudiants (inscription, dossier, absence...) -...
Cliquez pour télécharger Academy System
Easy-Planning (1.0.0.1)
EASY-PLANNING (1.0.0.1)
Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ...
Cliquez pour télécharger Easy-Planning
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS (3.00B)
COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par : - L...
Cliquez pour télécharger COLLECTOR PLUS
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)
PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)
PONAMEDIA TV DEVIENS HELLLOOO FLASH LA TV SUR VOTRE ORDINATEUR. Toute une plateforme Multi...
Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO
LettresFaciles 2011 (8.0.0.1)
LETTRESFACILES 2011 (8.0.0.1)
LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types. Son inte...
Cliquez pour télécharger LettresFaciles 2011
+ de logiciels à télécharger
Vidéos drôles
Halloween Party
Terry Tate Office Linebacker Superbowl 2003
Jeu vidéo instructif
C'est un véritable vol !
Banana Song
Comment attraper la grippe A
Parodie Pub Window 7
La suite
RSS
Sondage...
Votre navigateur n'utilise pas le javascript, pour
voter aux sondages de ce site, cliquez ici
Statistiques
1 873 496
membres
30
nouveaux aujourd'hui
16 151
membres club
Comparez les prix
Apple iPhone 4 Noir (16 Go)
Entre 0€ et 0€
Visiter le guide achat
CalendriCode
Février
2012
L
M
M
J
V
S
D
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
Consulter la suite du CalendriCode
Photothèque
Visiter la photothèque
CS Tool Box