The Scripter’s Handbook

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Introductie
Welkom in de wereld van habbo scripting. Zoals je weet is habbohotel een online chat met extra features zoals kleding en meubels die je kan kopen voor credits, die overigens echt geld kosten. Kijk op www.habbo.nl als je hiermee nog niet bekend was. Deze handleiding is gemaakt om nieuwe en gevorderden scripters te helpen. Ons doel is mensen nieuwe dingen te leren en veel algemene vragen te beantwoorden. Na jaren van habbo en inmiddels ook scripten is het ons allemaal gaan vervelen. Al die ervaringen willen we graag doorgeven aan mensen die habbo en scripten op dit moment nog wél leuk vinden en om zo ook te voorkomen dat habbo scripting “dood” gaat. Als je vragen voor ons hebt dan kan je contact opnemen via www.leetzone.us.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Woordenboek
Voordat je begint met de handleiding is het handig om deze lijst met woorden + betekenissen door te nemen. Het zijn belangrijke woorden als je wilt weten waar alles over gaat en waar scripters het over hebben. Sommige dingen zullen we uitgebreider uitleggen in de volgende hoofdstukken. ASCII – American Standard Code for Information Interchange, zie hier een lijst met alle belangrijke ASCII tekens. B64 encoding – een encoding die de lengte aangeeft van een packet, in TFHA X zit een encoder en decoder. Chr(?) / [?] – Als een ASCII teken wordt weergegeven als een blokje kan je op deze manier aangeven welk nummer het is. ( = ASCII 01 = chr(1)/[01]) Clientside / CS – Scripts die alleen jij, de client, ziet. Andere zien jou clientside scripts niet. Client Packets – Packets die (normaal gesproken) door de client naar de server wordt gestuurd. Header – Begin van een packet. De client/server herkent een packet aan zijn header. LV64 encoding – een encoding in wat serverpackets, in TFHA X zit een encoder en decoder. Mutants – Vertaald als: mutanten. Met mutants wordt meestal verwezen naar habbo’s met illegale kleuren, vormen of die habbodelen missen. (dit geldt ook voor de huisdieren) Serverside / SS – Scripts die iedereen, op de server, ziet. Andere kunnen serverside scripts wel zien. Server Packets – Packets die (normaal gesproken) door de server naar de clients wordt gestuurd.

Als je de bovenstaande dingen nog niet snapt, maak je geen zorgen. Alles wordt verderop duidelijker uitgelegd.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Wat is scripten?
Het woord scripten heeft buiten habbo een hele andere betekenis. Scripten is eigelijk programmeren, het maken van programma’s. Een programma kan je maken in verschillende talen, scripttalen. Tussen deze scripttalen zijn ook verschillen. Je hebt browserscripttalen, zoals VBscript en Javascript, deze kan je tussen je HTML zetten om ze te laten werken. Naast dat heb je ook Visual Basic, Java, C, C++ en C#. Deze talen gebruik je om echt .exe files te maken. Scripten in habbo heeft een nauw verband met hacken. Hacken is niet alleen, zoals vele wel denken, het stelen van accounts. Het is het laten doen van iets waar het eigelijk niet voor was bedoelt, en daaruit je voordeel halen. In habbo werkt het ongeveer ook zo, alleen hoeft het niet in jou voordeel te werken (zoals gekleurde huisdieren) en geldt het alleen voor habbo.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Client & Server
Om scripten te begrijpen zul je moeten weten hoe habbo is opgebouwd. Jouw computer download (terwijl je habbo laadt) het hele “spel”. De 2 belangrijkste delen zijn: De client - Jouw computer waarop het shockwave spel in je browser loopt. De server – Habbo’s hoofdcomputer die alle data ontvangt en terugstuurt of doorstuurt. Deze computer weet alles over elke habbo en elke kamer. Alle habbo’s die op dat moment zijn ingelogd zijn allemaal clients en zijn verbonden met de server. Tussen de clients en de server vind dataverkeer plaats. Als je op habbo iets doet zoals iets zeggen in een kamer, stuurt je computer (de client) via het internet een packet naar de server om te laten weten wat je zegt. Dan stuurt de server packets waarin staat wat jij zei door naar alle andere clients, de andere habbo’s in de kamer. Die krijgen dan op hun beeldscherm wat jij zojuist gezegd hebt, en dat in fracties van een seconde.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Packet Editor
Op de vorige pagina is uitgelegd hoe de server door middel van packets communiceert met de clients. Scripting is eigenlijk het lezen, bewerken, blokkeren en zelf sturen van packets naar de server of client met een packet editor. Bijna alle scriptprogramma’s zijn packet editor’s, het bekende WPE PRO staat ook voor Winsocket Packet Editor. Zoals je in het plaatje ziet verbindt de client met een scriptprogramma in plaats van direct met de server, de server verbind ook met een scriptprogramma in plaats van direct met de client. Een scriptprogramma stuurt alle packets door zodat zowel de client als de server niet in de gaten hebben dat er iets tussen zit. Je kan met een scriptprogramma elke packet die je maar wilt naar de client sturen maar de effecten ervan zijn alleen voor jouw zichtbaar. (packets naar de server sturen kan wel serverside effecten hebben) Packets die van de client naar de server gaan zijn altijd encrypted, gecodeerd en dus onleesbaar, waarschijnlijk als beveiliging tegen scripters. Gelukkig zijn er mensen (zoals Erik) die de encryptie gekraakt hebben en een functie in hun packet editor hebben gestopt zodat je packets van de client kunt lezen in de packetlog en packets zonder encryptie op kan sturen naar de server. WPE PRO en alle andere in Visual Basic 6 gemaakte scriptprogramma’s zijn in principe packet editors met een ingebouwde browser. We raden aan om Habbo RC4 te gebruiken als scriptprogramma om mee te leren scripten, deze kun je hier downloaden.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Memory Editor
Artmoney is ook een veel gebruikte tool in habbo, dit is eigenlijk vreemd want een memory editor wijzigt geheugen registers in een geselecteerd proces, dat kan eigenlijk alleen maar clientside resulaten opleveren. Toch zijn er veel manieren gevonden om met artmoney serverside scripts uit te voeren, bijvoorbeeld de walldrop script van Hit. Door in het geheugen van je browser de height waarde van de muren in habbo kamers te veranderen met artmoney worden de muren van je kamer uitgerekt. De client laat je alleen posters ophangen op plekken waar muur is om te voorkomen dat je ze buiten de kamer ophangt. Door de muren uit te rekken denkt de client dat je daar een poster mag ophangen. Als je habbo reload zijn de muren weer normaal en hangen de posters serverside in het zwart. Voordat encryptiefuncties voor iedereen beschikbaar waren werd artmoney ook gebruikt om data naar de server te sturen zonder het te hoeven encrypten. Dit werd gedaan door packetheaders in het geheugen van de client te bewerken met artmoney. Zo werden de oude serverside meubel scripts gedaan. Al dat gedoe met packetheaders was best ingewikkeld maar nu nutteloos vanwege de gekraakte encryptie, als de encryptie weer veranderd zullen we onze scripts weer met Artmoney moeten doen. Je kunt artmoney downloaden op www.artmoney.ru

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Server Packets
Om te beginnen zijn er twee soorten packets: Packets bestemd voor de client en packets bestemd voor de server. Als voorbeeld nemen we BKLOL[01]. (Een MOD-bericht) Deze packet wordt normaal gesproken van de server naar de client gestuurd, van moderator naar een habbo. Dit kan je namaken door een scriptprogamma te gebruiken. BK is het begin van de packet, de client kan aan deze eerste twee letters zien om welke packet het gaat. Dat wordt de header genoemd. Je kan ook zelf headers zoeken/bestuderen door in de packetlogs te kijken. In een MOD-bericht zit tekst, in dit geval LOL. (of iets anders naar keuze) Om de packet te eindigen gebruik je chr(01)/[01]. () Met chr(01) wordt bedoelt het ASCII teken met het nummer 01, ASCII is een verzameling van 255 tekens die allemaal een nummer hebben. De hoofdletter A is bijv nummer 41, hoofdletter B is 42 enz. De nummers 0-32 hebben geen teken/letter/cijfer en worden weergegeven als een blokje, we noemen dit blokje bij hun nummer om ze zo uit elkaar te houden. Hier vind je een lijst met alle belangrijke ASCII tekens. Door deze en andere packets naar de client te sturen kan je clientside scripten.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Server Packets II
Laten we eens een moeilijker packet nemen, het furni packet. Als je een kamer binnengaat ontvang je een packet met informatie over welke meubels de client moet laten zien. Om het simpel te houden pak ik als voorbeeld een packet met maar 1 meubel, namelijk een teleporter: @`I5351386doorSAQBIIH0.0kvgFEFALSE Zoals je hopelijk geleerd hebt, zie je dat dit packet begint met een header, @` en eindigt met een chr(01). Deze packet heeft meerdere stukken waarin data staat, deze stukken worden gescheiden door chr(02)’s. Ook zie je dat er een I gelijk achter de header staat. Dit is een 1 gecodeerd in Lv64, dit getal geeft aan hoeveel meubels deze packet bevat. Het nummer “5351386” erna is het ID van de meubel, elk meubel dat gekocht wordt heeft een uniek ID. Daarna staat er een chr(02) om aan te geven dat het volgende stuk informatie komt. Het woord “door” is de sprite code, elk soort meubel heeft een eigen sprite. Als de client het woord “door” ziet weet hij dat hij een teleporter moet laten zien. Nu word het ingewikkelder, omdat dit gedeelte ook in LV64 gecodeerd staat. Ik zal het even vertalen, SA = 7, QB = 9, dit zijn de coördinaten waaraan de client ziet waar de meubels in de kamer moeten komen. Als je dit veranderd verplaats je het meubelstuk. I betekent 1 zoals ik al zei, de dubbele I na de coordinaten geven aan hoe lang en hoe breed de teleporter is, aangezien teleporters 1 bij 1 vakje innemen. De 0.0 is hoe hoog de meubel staat. Dan heb je nog wat vakjes erna waar bijvoorbeeld kleuren, en de status van een meubel instaat. De teleporter heb je maar in 1 kleur, dus dat kan niet veranderd worden. De status is kvgFEFALSE, FALSE betekent dat de deur dicht is. Je kunt deze packet bewerken en naar de client sturen om je eigen meubel clientside te scripten. Vervang de sprite om een andere meubel te krijgen.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Client Packets
Zoals je inmiddels wel weet zijn er packets voor client en server. Een packet wordt herkend aan zijn header, daarom zijn er ook headers voor client en server. Als voorbeeld van een packet voor de server gebruik ik het “pakeendrankje” packet. De header van een drankje is AP gevolgd door de ID van het drankje. Het drankje Cola heeft in habbo ID 19. Wat je naar de server zou moeten sturen is dus AP19. Als je een programma met encryption hebt dan is AP19 het enige wat je hoeft te versturen om het colaflesje te laten verschijnen. Toen er nog geen openbare programma's met encryptie waren moest je de headers nog bewerken met Artmoney. De header om een persoon te kicken is A_. Je script een clientside habbo met de naam 19 in je kamer. (door een userpacket naar de client te sturen) Wil je deze kicken dan verstuur je als je op de "kick" knop klik A_19 naar de server. Maar wat als je de header A_ naar AP met Artmoney? Klik je nu op kick dan verstuur je AP19 naar de server. De clientside habbo verdwijnt niet maar het drankje met ID 19 verschijnt wel serverside in je hand.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Client Packets II
Een ander verschil tussen packets voor de client en server is dat er bij packets die je naar de server wilt sturen een soort beveiling hoort. Als je een packet wilt versturen naar de server dan begint deze met @ gevolgd door de B64 encoding van het aantal tekens die erna komen. B64 werkt zo: @A is 1, @B is 2, @C is 3 enz. Wil je AP19 sturen naar de server dan moet je dit sturen: @@DAP19 @ < altijd als begin @D < betekend 4 (AP19 bestaat uit 4 tekens) AP19 < als packet die je wilt versturen. Als je @@DAP190 stuurt naar de server dan ziet de server dat er iets niet klopt. @D staat voor 4 maar er volgen 5 tekens. Stel je koopt in een online winkel 4 stoelen maar de server ontvangt 40, dan kan de server zien aan de B64 encoding die ervoor staat dat dat niet klopt. Zo weet de server dat er onderweg een teken verloren is gegaan of erbij is gekomen en zal het de client vragen om het packet opnieuw te sturen, een soort beveiliging dus.

Gemaakt door: Leejjon & Kjeld – Leetzone.us

Tot Slot
Als laatst hopen we dat je écht wat hebt geleerd van deze handleiding. We kunnen natuurlijk niet voor elke denkbare vraag een hoofdstuk maken, daarom raden we je ook aan als je nog vragen hebt naar een scriptforum te gaan. Nog wat handige links om meer te weten te komen over scripting: Nederlands Forum: www.leetzone.us Engels Forum: www.krewsforum.net Handige (engelse) tutorials om mee te beginnen: SDBlog Via Leetzone kun je in contact komen met ons, Leejjon en Kjeld. Dit is de BETA versie van The Scripters Handbook, updates volgen binnenkort.

Gemaakt door: Leejjon & Kjeld – Leetzone.us