PDA

View Full Version : lowername bypass check


Shin Noir
10-16-2009, 06:44 PM
Someone directed me on how to make a lowercase name, you create e.g. "Ttest", and move the cursor the capital T, and remove it, and now it'll be "test", to be submitted.
Here is a name approval request for lowercase with latest SVN:

[Debug] [WORLD__CLIENT] myloginname: Name approval request. Name=test, race=Barbar
ian, class=Beastlord
[Debug] [WORLD__CLIENT] myloginname: Character creation request from myloginname LS#13
9499 (127.0.0.1:50255) :
[Debug] [WORLD__CLIENT] myloginname: Name: test
[Debug] [WORLD__CLIENT] myloginname: Race: 2 Class: 15 Gender: 1 Deity: 208 Sta
rt zone: 2
[Debug] [WORLD__CLIENT] myloginname: STR STA AGI DEX WIS INT CHA Total
[Debug] [WORLD__CLIENT] myloginname: 103 125 87 70 80 60 60 585
[Debug] [WORLD__CLIENT] myloginname: Face: 1 Eye colors: 0 0
[Debug] [WORLD__CLIENT] myloginname: Hairstyle: 0 Haircolor: 0
[Debug] [WORLD__CLIENT] myloginname: Beard: 0 Beardcolor: 0
[Debug] [WORLD__CLIENT] Validating char creation info...
[Debug] [WORLD__CLIENT] Found 0 errors in character creation request

So I added this patch:
Index: world/client.cpp
================================================== =================
--- world/client.cpp (revision 1014)
+++ world/client.cpp (working copy)
@@ -1092,7 +1092,14 @@

int stats_sum = cc->STR + cc->STA + cc->AGI + cc->DEX +
cc->WIS + cc->INT + cc->CHA;
-
+ //Shin: clean the capitalization of the name BEFORE request check
+ for (i = 0; name[i] && i < 63; i++)
+ {
+ if(!isalpha(name[i]))
+ return false;
+ name[i] = tolower(name[i]);
+ }
+ name[0] = toupper(name[0]);
in.s_addr = GetIP();
clog(WORLD__CLIENT,"Character creation request from %s LS#%d (%s:%d) : ", GetCLE()->LSName(), GetCLE()->LSID(), inet_ntoa(in), GetPort());
clog(WORLD__CLIENT,"Name: %s", name);
@@ -1119,18 +1126,8 @@
InitExtendedProfile(&ext);

strncpy(pp.name, name, 63);
- // clean the capitalization of the name
-#if 0 // on second thought, don't - this will just make the creation fail
-// because the name won't match what was already reserved earlier
- for (i = 0; pp.name[i] && i < 63; i++)
- {
- if(!isalpha(pp.name[i]))
- return false;
- pp.name[i] = tolower(pp.name[i]);
- }
- pp.name[0] = toupper(pp.name[0]);
-#endif

+
pp.race = cc->race;
pp.class_ = cc->class_;
pp.gender = cc->gender;

And here's what it says, when I try to register 'test' again.

[Debug] [WORLD__CLIENT] myloginname: Logged in. Mode=(CharSel)
[Debug] [WORLD__CLIENT] myloginname: LS Account #139499
[Debug] [WORLD__CLIENT] myloginname: Delete character: test
DeleteCharacter: successfully deleted 'test' (id 52)
[Debug] [WORLD__CLIENT] myloginname: Name approval request. Name=test, race=Barbar
ian, class=Beastlord
[Debug] [WORLD__CLIENT] myloginname: Character creation request from myloginname LS#13
9499 (127.0.0.1:62850) :
[Debug] [WORLD__CLIENT] myloginname: Name: Test
[Debug] [WORLD__CLIENT] myloginname: Race: 2 Class: 15 Gender: 1 Deity: 208 Sta
rt zone: 2
[Debug] [WORLD__CLIENT] myloginname: STR STA AGI DEX WIS INT CHA Total
[Debug] [WORLD__CLIENT] myloginname: 103 125 87 70 80 60 60 585
[Debug] [WORLD__CLIENT] myloginname: Face: 2 Eye colors: 0 0
[Debug] [WORLD__CLIENT] myloginname: Hairstyle: 0 Haircolor: 0
[Debug] [WORLD__CLIENT] myloginname: Beard: 0 Beardcolor: 0
[Debug] [WORLD__CLIENT] Validating char creation info...
[Debug] [WORLD__CLIENT] Found 0 errors in character creation request
[Status] Start zone query: SELECT x,y,z,zone_id,bind_id FROM start_zones WHERE p
layer_choice=2 AND player_class=15 AND player_deity=208 AND player_race=2

my char logs in with a capitalized name.

I whipped this out VERY FAST, may have some logical errors or some overlook since I'll admit - I don't understand the character creation process.. But, instead of taking the time of figuring out every possibility, it seems to work, i'll submit, we can go from there. :)

Shin Noir
10-16-2009, 06:59 PM
Things I've tested:
add a name via "test", and it gets created as Test,
Then create another person named "test", and see if rejects due to duplicate name : Rejected name (good)

So_1337
10-19-2009, 06:00 PM
Was it phorest? =P

Lillu
10-20-2009, 03:33 AM
Was it phorest? =P
lol, most probably! but where is he anyways? he bailed for a while now :(
(sry for the offtopic)