Leaderboard
Popular Content
Showing content with the highest reputation on 16/08/2015 in all areas
-
Le forum est actuellement en cours d'amélioration : nous réimplantons tout les plugins manquant, les personnalisation du thème se fera au fur et à mesure, en attendant de trouver LE thème adéquat.1 point
-
Rien n'empêche de mettre à jour le hash de l'image après la corrompre. Le code PHP contenu dans une image n'est pas interprété si on l'affiche dans un contexte statique. A moins que le serveur soit configuré pour exécuter les images comme du PHP mais dans ce cas autant donner les clés root ce sera plus rapide ^^ Pour exécuter le code contenu dans ton image vérolé, il faut l’exécuter dynamiquement avec un "require/include". Inclure un fichier externe comme ceci est passible de peine de mort est en effet très dangereux car on demande explicitement d’exécuter du code externe ... Il y a des librairies tel que gd ou imagick qui permettent de manipuler les images sans les exécuter. On peut également utiliser readfile pour servir l'image comme une image. Ou si on veut afficher le contenu (pas le lien) directement dans une balise img l'utilisation de base64encode est aussi safe. J'édite pour synthétiser (et corriger mes fautes d'aurttaugraf) : - finfo_open permettra surtout de vérifier que le type de fichier upload est cohérent avec le type de fichier que vous souhaitez utiliser. (pas de docx renommé en pdf si un pdf est attendu). - Recueillir des données externe est toujours source de faille de sécurité (même avec un antivirus). Il faut l'accepter et faire avec :-) La sécurité se passe à la sortie : ne pas exécuter / intérepreté un fichier externe dans votre environnement d’exécution (PHP). Desservez vos media dans un contexte statique (url/img.jpg). Dynamiquement, envoyez le contenu au navigateur sans l’interpréter.1 point
-
Chouette, un de mes sujets préféré !!! - Pour les failles d'injection SQL, attention car la librairie mysql est déprécié et sera supprimé très probablement dans la futur version majeur de PHP. PDO et mysqli pour ceux qui ne souhaitent pas sortir l'artillerie lourde, fournit une meilleure protection grâce aux requêtes préparées. - Pour les failles XSS vous pouvez aussi utiliser la fonction filter_var. Cette fonction possède un tas d'options pour filtrer et vérifier vos données. Pour se protéger des failles xss : filter_var($data, FILTER_SANITIZE_STRING) Remarque : Ne pas inclure ce filtre automatiquement sur tous vos paramètres HTTP. La faille XSS est une faille qui agit en sortie, pas en entrée. Ne filtrer donc que les variables que vous utilisez. Sinon on peut s'amuser à envoyer des requètes HTTP avec de très nombreux paramètres POST pour essouffler votre serveur qui va tout filtrer à chaque page :-) Et si vous vous attendez à un int, bool, float. Un simple cast fera l'affaire !!! - Ensuite il y a les failles CSRF (soumission de formulaire non contrôlé) : Vous pouvez créer un système de clé publique, clé privé (identifiant de la session) avec password_verify et password_hash. Vous collez la clé privée en session et la clé publique dans un input hidden de tous vos formulaires. Lors du traitement du formulaire, vous pourrez alors tester si la cohérence des clés pour vérifier que le formulaire est appelé depuis une page de votre site et non pas d'un bot. - Pour les formulaires d'upload : ne pas faire confiance à l'extension du nom de fichier ou du type contenu dans la superglobale $_FILE. Voir : finfo_open(FILEINFO_MIME_TYPE);1 point
-
Bonjour a tous ! Tous d'abord qu'est ce que le GOAP ? C'est l'abréviation de Goal Oriented Action Planning, ce qui pour les non anglophone, veut dire la planification des actions en fonction de tes buts, ou de tes souhaits. C'est un type d'IA qui a pour but de remplacer les FSMs (Finite State Machine), les automates a états finis en gros. (Le mot anglais est plus classe et plus court a écrire donc c'est celui là que je vais utiliser maintenant). En effet, les FSMs sont bêtes et méchantes, bien que facile a réaliser. Mais dès qu'il s'agit d'un comportement où il faut que l'IA ai l'air de réfléchir, les FSMs sont inadaptées. Ainsi les GOAPs sont utilisés principalement dans les FPS, et aussi dans le mondialement connu Starcraft. Cette IA a pour but d'offrir plus de challenge au joueur. Mais rien ne vous empêche de faire une IA bien plus intelligente dans les autres types de jeu comme les RPG, ou les rogues like. Le principe des GOAP maintenant : Un pnj a différents but, comme manger, dormir, travailler etc... chaque but a un niveau d'importance plus ou moins grand. schéma : but : importance dormir : 4 manger : 2 travailler : 1 Ici par exemple le pnj a très envie de dormir. Les niveaux d'importance sont mis a jour au fil du temps et les actions les plus importantes sont exécutées en premier. En code : typedef struct t_state { unsigned char id; unsigned char importance; }t_state; t_state but[nombre_de_but_different]; /* on initialise le tout int i; for( i = 0 ; i < nombre_de_but_different ; i++ ) { but[i].id = i; but[i].importance = 0; } L'id sert a savoir le but ( par exemple dormir c'est 0, manger c'est 1 et travailler c'est 3) parce qu’à chaque fois que l'importance d'un but change, il faut retrier le tableau. Regardez du coté des algorithme de tri, et n'oubliez pas que le tableau est presque trier, seul un élément est a sa mauvaise place. Une fonction de tri en exemple (oui c'est utile de faire cela) void tri(t_state but[], int nb_but) { /* Il s'agit ici d'un tri à bulle qui marche, mais qui est le plus lent possible c'est pour vous forcer à regarder du côté des algo de tri*/ int changement = 1; int i; t_state transition; while(changement) { changement = 0; for(i = 0 ; i < nb_but - 1 ; i++) { if(but[i].importance < but[i+1].importance) { transition.importance = but[i].importance; transition.id = but[i].id; but[i].importance = but[i+1].importance; but[i].id = but[i+1].id; but[i+1].importance = transition.importance; but[i+1].id = transition.id; changement = 1; } } } } On regarde donc le premier élément du tableau, qui est le plus important, et on exécute l'action associé. Et la vous allez me dire : "mais alors c'est la même chose que les FSMs non ?" Et bah non : les état ne sont plus reliés entre eux, donc l’insertion d'un nouveau but ne nécessite pas de tout revoir, mais en contre partie, cela nécessite plus de temps de processeur pour faire cela. Et aussi, une grande nouveauté : pourquoi ce contenter d'UNE action par but ? Si vous avez faim, vous pouvez vous faire vous même à manger, aller chez quelqu'un, ou encore aller dans un fast-food. il y a donc plusieurs solutions possibles. Pour chaque action, il suffit de déterminer son poids : Celui-ci peut varier en fonction de plusieurs facteurs, comme le temps mis à faire l'action, le prix que cela va nous coûter etc... Et il faut aussi déterminer l'importance que vont perdre les but. Par exemple : fastfood : manger - 2 maison : manger - 4 On peut aussi choisir une des deux actions en fonction du poids en utilisant le principe des algorithmes de Dijkstra (parcours de graphe), qui est le même principe que le pathfinding. L'avantage, c'est de pouvoir avoir une plus grande flexibilité. Il faut alors voir les actions comme un enchaînement d'actions, et plusieurs actions peuvent menées a la même suivante. Le poid peut être en fonction de plusieurs choses, comme le temps, et l'importance que cela va perdre. Par exemple, si l'on a très peu de temps et on est juste à coté du fast-food, alors on va y allez, et si on a tous notre temps, et juste à coté de chez soi, autant allez à sa maison. Le poid peut aussi être influencer par l'argent dépensé etc... exemple : /*on calcule le poid de chaque action*/ poid[nb_action_differentes]; int i; for ( i = 0 ; i < nb_action_differente ; i++) { poid[i] = (temps * 0,5) /* plus le temps est court, mieux c'est. 50% d'importance pour le temps*/ + (diminution_de_l_importance * 0,5); } je suis parfaitement conscient que le temps a un poid totalement aléatoire en fonction de l'unité utilisé. C'est à vous de calibrer correctement le calcul du poid. il ne s'agit ici que du principe général. Dans ce cas, plus le poid est grand, plus le temps pris est long. Attention, la variable diminution_de_l'importance est négative (-2, -4 etc...) ! int meilleur_poid; int meilleur_poid = poid[0];/*C'est très important d'initialiser !*/ int meilleure_action; for ( i = 0 ; i < nb_action_differente ; i++) { if(poid[i] < meilleur_poid) { meilleur_poid = poid[i]; meilleure_action = i; } } et on fait l'action : action[meilleure_action](); Je considère ici, que l'on envoie rien a la fonction, mais vous pouvez facilement le faire. Le tableau est un tableau de pointeur de fonctions (voir le tutoriel d'AlexMog à ce sujet). Pensez à updater ce tableau régulièrement tout les X secondes ou millisecondes, car une action peut à un moment être plus utile que celle que vous voulez faire, alors qu'avant, elle ne servait à rien. Vous avez donc maintenant réussi a faire un pnj qui pourra avoir des buts et faire des actions en conséquence. N'oubliez pas pas que plus vous augmenter le nombres de buts et d'actions, plus le pnj sera réaliste, et plus cela prendra de temps pour "réfléchir"(pas beaucoup non plus mais sur des milliers de pnjs, cela se ressent). Par exemple, le FPS F.E.A.R (j’insiste sur le mot FPS là !) possède 67 buts différents (pas un seul où il le but est de tuer l’ennemi ) et 197 actions différentes.1 point
-
Bonjour, aujourd'hui j'aimerais vous parler des crypto-monnaies, lesquelles seront sans doute le futur forum dans Melinyel J'ai trouvé un excellent guide sur le forum de Korben.info, celui-ci reprends avec brillo les bases des crypto-monnaies, donc je vous le copie/colle. Je n'en suis donc pas le créateur, je laisse la source en bas de page et également les adresses pour faire des dons à l'auteur. 1) Définition La première fut le Bitcoin (2009) et elle reste la crypto-monnaie la + sûre et la + utilisée dans le Monde. D’autres monnaies ont été créees ensuite avec plus ou moins de différences et variations avec la monnaie de référence le BitCoin. Il y a 2 solutions pour posséder ces monnaies : Le trading ou achat sur des places d’échanges (1 bitcoin = 515,9 euros au 09/02/2014) Le minage 2) Le minage Le minage est le procédé d'utiliser du matériel informatique pour effectuer des calculs mathématiques pour le réseau afin de confirmer des transactions et augmenter la sécurité. Comme récompense pour leurs services, les mineurs obtiennent des Coins. Le minage de Bitcoin est devenu impossible car sa difficulté est trop élevée (1 789 546 951,05320). Je vais donc vous expliquer comment miner du LiteCoin et DogeCoin les 2 monnaies « à la mode ». Pour miner d’autres monnaies, la méthode est la même. a - choix carte graphique Le minage se base sur la puissance de calcul. Plus votre machine est puissante, plus votre khash/s est élevé (vitesse de calcul) et donc plus vous obtiendrez de Coins. Les cartes graphiques sont actuellement les matériels informatiques qui permettent d’obtenir un Khash/s élevé pour un moindre coût. Les cartes graphiques de la marque AMD/Ati ont un ratio vitesse de calcul / Prix imbattable. Voici un lien à consulter pour choisir votre carte graphique si vous souhaitez investir : https://litecoin.inf...ware_comparison Il vous donne les khash/s obtenus par différents utilisateurs avec différentes cartes graphiques. Si vous avez un khash/s inférieur à 200, je ne suis pas sûr que ce soit très rentable de se lancer. b - Logiciels Il existe de nombreux logiciels pour miner. J’en utilise deux qui selon moi sont les plus efficaces. Selon la marque de votre carte graphique, il faut télécharger la bonne version : Ati/AMD : http://ck.kolivas.org/apps/cgminer/ (Cgminer) Nvidia : https://bitcointalk....?topic=167229.0 (Cudaminer) Pour les cartes AMD, il vous faut également ce SDK : http://developer.amd...essing-app-sdk/ Il faut bien sûr aussi que votre driver de carte graphique soit à jour. Il existe également un logiciel pour CPU mais avec un ratio conso électrique/Gain très faible. Vous pouvez également utiliser CgWatcher qui propose plus d’options et surtout une interface graphique pour gérer le minage. http://manotechnolog.../cgwatcher.html 3) Pool Comme vu au-dessus, le minage consiste à utiliser la puissance de votre machine pour valider une transaction. En fait, il s’agit de valider un « block » de transactions pour certifier celles-ci et fournir une preuve de travail au réseau pour ensuite recevoir une « récompense ». Malheureusement, valider un block peut-être long si vous avez une faible vitesse de calcul. Comme le dit l’expression, « l’union fait la force » et donc une pool consiste à répartir les calculs pour valider un block plus facilement. Exemple fictif : Il vous faut 12H pour résoudre un block qui va vous récompenser de 1 litecoin. En minant en pool, votre groupe de 10 personnes va mettre seulement 30mn pour certifier le block et après répartition, vous obtiendrez 0.07 litecoin toutes les 30mn soit 1,68 Litecoin sur 12H. Il existe des milliers de pool qui permettent de miner des centaines de monnaie. Moi je mine majoritairement sur LTCRabbit : https://www.ltcrabbit.com/#afc07h Les gains sont réguliers et les serveurs ne plantent pas toutes les heures comme sur certaines pools. 4) ligne de commande Pour miner, il faut lancer le logiciel téléchargé au-dessus avec une ligne de commande. Nvidia : cudaminer.exe -o url:port -O votre_identifiant.votre_worker:votre_mot_de_passe Ati/Amd : cgminer.exe --scrypt -o url :port -u votre_identifiant.votre_worker -p votre_mot_de_passe L'url vous est donnée par le site de la pool choisie. Un worker est une unité de travail pour le minage. Vous devez creer autant de worker que vous avez de machines de minage. Pour optimiser votre minage, vous pouvez aller sur ce site qui regroupe les réglages d’autres utilisateurs pour obtenir un meilleur khash/s. L’overclokage permet parfois de booster son khash/s avec des modifications minimes. https://litecoin.inf...ware_comparison 5) Réception et stockage de vos monnaies Qui dit monnaie dit porte-monnaie. Pour stocker l’argent gagné, échangé, reçu, il vous faut un porte-monnaie. Il en existe 3 types : a - porte-monnaie local Il s’agit d’un logiciel à installer sur votre ordinateur et qui permet de stocker votre argent sur votre disque dur. Vous êtes chargé de sa sécurisation et vous faites ce que vous voulez avec. C’est comme mettre ses billets dans une boite de chaussures sous son lit. On ne paie pas de carte de crédit, frais bancaire, … mais si votre maison prend feu, vous perdez tout. (anecdote : vous vous souvenez sans doute de la mésaventure qui est arrivée à une personne qui a jeté par erreur un disque dur remplir de BitCoin.) Wallet BitCoin : http://bitcoin.org/f...e-porte-monnaie Wallet LiteCoin : https://litecoin.org/ Wallet DogeCoin : http://dogecoin.com/ b - porte-monnaie mobile Il s’agit d’app mobile qui est disponible sur toutes les plateformes et qui permet de payer par NFC ou QrCode dans les magasins physiques qui acceptent les monnaies virtuelles. c - banque virtuelle Il s’agit de site internet qui permettent de stocker son argent sur des sites internet. J’utilise pour ma part Cryptsy qui accepte beaucoup de monnaies différentes et surtout qui est sécurisé en double authentification. https://www.cryptsy....er?refid=106226 Tous ces porte-monnaie ont une adresse unique qu’il faut donner pour pouvoir recevoir les coins obtenus sur les pools ou qu’on vous donne. Voici mes adresses si vous voulez me faire un don : 6) Achat Très bien, vous avez miné comme un fou, vous êtes maintenant millionnaire en Bitcoin mais que faire maintenant avec toute cet argent virtuel ? Soit vous allez sur des sites qui vous achètent ces coins au prix du marché en échange de Dollars ou Euros (avec commission) ou alors vous pouvez acheter directement sur des sites internet ou dans des magasins physiques qui acceptent ces monnaies. C’est d’ailleurs ce nombre en augmentation de plateformes acceptant la monnaie virtuelle qui fait que cette monnaie prend de la valeur. Sa rareté au fil du minage est aussi un facteur essentiel de la hausse de sa valeur. Le nombre de coin étant limité, plus vous en gagnez, moins il en reste à gagner et donc la monnaie est très convoitée et prend de la valeur. Voici une liste des endroits acceptant le bitcoin comme monnaie virtuelle : http://www.bitcoin.f...ec-mes-bitcoins Comme pour les Bourses mondiales, le but est de miner une monnaie qui a une faible difficulté pour en miner beaucoup puis de la revendre lorsque sa valeur est haute. Pour suivre les cours des monnaies : http://coinmarketcap.com/ Pour suivre la difficulté du LiteCoin : http://bitcoinwisdom...coin/difficulty Et comme pour les Bourses Mondiales, les monnaies virtuelles sont des valeurs très volatiles et donc du jour au lendemain, vous pouvez tout perdre si vous n'avez pas échanger assez vite vos coins ou alors la monnaie peut prendre 400% et donc c'est le Jackpot pour vous. Pour info, en février 2011, 1 BitCoin = 4,15 €. En février 2014, 1 BitCoin = 589.58€ Si vous avez un pc qui ne sert à rien, pourquoi ne pas tenter de le laisser tourner pendant une semaine pour voir combien vous pouvez gagner. Ensuite, si vous trouvez ça sympa, vous pourrez investir dans des cartes graphiques + cher et gagner de l'argent pour arrondir les fins de mois. Expérience personnelle : J’ai 2 pc qui tournent quasiment 24h/24. 1 avec une carte Nvidia Geforce GTX 560Ti et un khash/s de 110. (prix : 40 euros) 1 avec une carte Ati Radeon HD 6950 et un khash/s de 500. (prix 80 euros) En moyenne, selon les stats de LTCRabbit, je gagne selon la difficulté du Litecoin 0.17LTC par jour. Donc en extrapolant un peu, je gagne : 0.17*30 = 5.1 LTC par mois. En prenant un cours moyen de 22 dollars pour 1 LTC, cela fait 112.2 dollars en laissant tourner 2 pc (hors frais l’électricité) Je vais donc rembourser mes 2 cartes graphiques en 1 mois et ensuite c'est tout benef' sans avoir fait de gros investissements. N'hésitez pas à partager votre expérience, vos astuces et sites à ne pas louper sur ce sujet. Edit : La prise en compte des frais d'électricité n'est pas à négliger. Voici donc un lien qui explique l'undervolting, c'est à dire baisser le voltage de votre carte graphique pour réduire les coûts d'électricité et connaitre combien vous consommez exactement : http://bitcoin-gratu...aphique-mining/ Voilà, ce guide a été rédigé par Nicolas42, sur ce sujet, membre de Korben.info. N'hésitez pas à réagir ou poser des questions sur ces nouvelles monnaies montantes.1 point
