How good of a scripter are you? - SLUniverse Forums
Navigation » SLUniverse Forums > Development Discussion and Support > Scripting » How good of a scripter are you?


Scripting Discuss scripting and programming for SL and other platforms

 
Reply
 
LinkBack Thread Tools Display Modes
Old 08-28-2013, 05:01 AM   #1 (permalink)
Member
 
Rex Cronon's Avatar
 
Join Date: Apr 2010
Posts: 70
SL Join Date: 09/09/06
How good of a scripter are you?

Lets see how good r u at scripting
Following is an obfuscated lsl code(is actually a public script by Dale Innis):
Code:
//----------------------------------------------------------
//obfuscated by RCO(Rex Cronon's Obfuscator) on Wed Aug 28 01:3:39 PDT 2013//don't remove this line
string Ox01010001(string Ox11001110){return llBase64ToString(Ox11001110);}Ox01111101(integer Ox11001101){llListenRemove(Ox11001101);}integer Ox10111000(integer Ox11111000, string Ox10110101, key Ox10001011, string Ox10001010){return llListen(Ox11111000, Ox10110101, Ox10001011, Ox10001010);}key Ox01110010(){return llGetOwner();}Ox11001011(integer Ox11110000){llTargetRemove(Ox11110000);}Ox01000101(){llStopMoveToTarget();}Ox11100100(float Ox11010000){llSetTimerEvent(Ox11010000);}Ox01110000(string Ox01010111){llOwnerSay(Ox01010111);}string Ox11111001(string Ox11010111){return llUnescapeURL(Ox11010111);}Ox01010011(string Ox11000011, key Ox01001111, integer Ox01011000, float Ox10111110, float Ox00001001){llSensor(Ox11000011, Ox01001111, Ox01011000, Ox10111110, Ox00001001);}list Ox01011110(key Ox10001111, list Ox01100100){return llGetObjectDetails(Ox10001111, Ox01100100);}integer Ox11110010(list Ox10101001){return llGetListLength(Ox10101001);}vector Ox00110101(list Ox10100100, integer Ox00010011){return llList2Vector(Ox10100100, Ox00010011);}float Ox01000110(vector Ox10000001, vector Ox01101101){return llVecDist(Ox10000001, Ox01101101);}vector Ox00101111(){return llGetPos();}integer Ox10110100(vector Ox11001111, float Ox01001100){return llTarget(Ox11001111, Ox01001100);}vector Ox11111111(vector Ox01010110){return llVecNorm(Ox01010110);}Ox10100010(vector Ox01100011, float Ox10000100){llMoveToTarget(Ox01100011, Ox10000100);}Ox01000100(){llResetScript();}key Ox11010001(integer Ox11001111){return llDetectedKey(Ox11001111);}string Ox01101011(string Ox01101011){if(Ox01101011=="") Ox01101011 = Ox01010001("Q29weXJpZ2h0IEAgMjAxMyBSZXggQ3Jvbm9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg==");return Ox01101011;}string Ox10101110;integer Ox00100011;float Ox01010000;float Ox01111011;float Ox10001100;float Ox00101001;integer Ox11111101;integer Ox00111101;string Ox11100000;key Ox01010100;integer Ox11011111;Ox11110100(){Ox01111101(Ox11111101);Ox11111101=Ox10111000(Ox00100011,"",Ox01110010(),"");}Ox11111010(){Ox11001011(Ox00111101);Ox01000101();Ox11100100(((0x0000000005fa4a7a - 0x0000000005fa4a7a) + (0.3 - 0.3)));Ox01110000(Ox11111001("%4E%6F%20%6C%6F%6E%67%65%72%20%66%6F%6C%6C%6F%77%69%6E%67%2E"));}Ox11001001(string Ox01010010){Ox11100000=Ox01010010;Ox01010011(Ox11100000,Ox11111001("%30%30%30%30%30%30%30%30%2D%30%30%30%30%2D%30%30%30%30%2D%30%30%30%30%2D%30%30%30%30%30%30%30%30%30%30%30%30"),(0x0000000068eac96a - 0x0000000068eac969),((0x00000000363bd79a - 0x00000000363bd73a) + (0.3 - 0.3)),((0x000000006f114b5b - 0x000000006f114b58) + (0.657146 - 0.515553)));}Ox00011010(key Ox00001100){Ox01010100=Ox00001100;Ox01110000(Ox11111001("%4E%6F%77%20%66%6F%6C%6C%6F%77%69%6E%67%20")+Ox11100000);Ox00110011();Ox11100100(Ox01010000);}Ox00110011(){Ox11001011(Ox00111101);Ox01000101();list Ox01110111=Ox01011110(Ox01010100,[(0x0000000062181702 - 0x00000000621816ff)]);if(Ox11110010(Ox01110111)==(0x000000006ddf49b5 - 0x000000006ddf49b5)){if(!Ox11011111)Ox01110000(Ox11100000+Ox01010001("IHNlZW1zIHRvIGJlIG91dCBvZiByYW5nZS4gIFdhaXRpbmcgZm9yIHJldHVybi4uLg=="));Ox11011111=(0x000000005626e662 - 0x000000005626e661);}else{Ox11011111=(0x00000000057383da - 0x00000000057383da);vector Ox00010101=Ox00110101(Ox01110111,(0x000000001ce69947 - 0x000000001ce69947));float Ox11011101=Ox01000110(Ox00010101,Ox00101111());if(Ox11011101>Ox01111011){Ox00111101=Ox10110100(Ox00010101,Ox01111011);if(Ox11011101>Ox00101001){Ox00010101=Ox00101111()+Ox00101001*Ox11111111(Ox00010101-Ox00101111());}Ox10100010(Ox00010101,Ox10001100);}}}default{state_entry(){string Ox01001011 = Ox01101011(Ox01010001("T3gwMTEwMTAxMQ=="));if(Ox10101110=="") {Ox10101110=Ox11111001("%4F%78%30%30%31%30");Ox00100011=(0x0000000015956671 - 0x0000000015956662);Ox01010000=((0x000000006799facc - 0x000000006799facc) + (0.8 - 0.3));Ox01111011=((0x00000000034e0b7b - 0x00000000034e0b78) + (0.9 - 0.9));Ox10001100=((0x000000005b3a3289 - 0x000000005b3a3288) + (0.8 - 0.8));Ox00101001=((0x00000000260329a8 - 0x000000002603296c) + (0.6 - 0.6));Ox11111101=(0x000000003bb52ff1 - 0x000000003bb52ff1);Ox00111101=(0x0000000009fa7e66 - 0x0000000009fa7e66);Ox11100000="";Ox01010100=Ox01010001("MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw");Ox11011111=(0x00000000740794e6 - 0x00000000740794e6);}Ox01110000(Ox11111001("%2F")+(string)Ox00100011+Ox01010001("IFtuYW1lIG9mIHBlcnNvbiB0byBtYWdpY2FsbHkgZm9sbG93XQ=="));Ox11110100();}on_rez(integer Ox10101100){Ox01000100();}listen(integer Ox10111111,string Ox10001000,key Ox00001100,string Ox01011011){if(Ox01011011==Ox01010001("b2Zm")){Ox11111010();}else{Ox11001001(Ox01011011);}}no_sensor(){Ox01110000(Ox11111001("%44%69%64%20%6E%6F%74%20%66%69%6E%64%20%61%6E%79%6F%6E%65%20%6E%61%6D%65%64%20")+Ox11100000);}sensor(integer Ox10001000){Ox00011010(Ox11010001((0x0000000004fe9f7a - 0x0000000004fe9f7a)));}timer(){Ox00110011();}at_target(integer Ox11010011,vector Ox10100100,vector Ox10101111){Ox11001011(Ox11010011);Ox01000101();}}
//----------------------------------------------------------
Just copy-paste the above code into a script and compile.
Can u find out what it does without running it first?
How long did it take u to make it humanly readable?
Can u make it humanly readable?
How long did it take u to make it humanly readable?
What tools did u use to do it?
Do u recognize the script?
Why don't u leave your opinions?
p.s.
u can obfuscate any lsl code with this java applet: lslo
for a reasonable price
-----------------------------------------------
just because chalice did it first that doesn't mean that others can't try it.
that is if they can stop themselves from reading the solution first
__________________
rcds.nfshost.com

Last edited by Rex Cronon; 08-29-2013 at 04:35 AM. Reason: additional data and 2 give credit
Rex Cronon is offline   Reply With Quote
Old 08-28-2013, 05:18 AM   #2 (permalink)
Script Kitty
 
Jahar Aabye's Avatar
 
Join Date: Sep 2008
Location: Between our dreams and actions, lies this world
Posts: 11,142
SL Join Date: 2/16/2007
Business: Black Operations
Client: Singularity
Why would I want to obfscate my code? Bug-hunting, integrating with third-party APIs, and updating existing products with new features (or adding new features halfway through a project) is damned difficult enough as it is. I can't speak for most scriptors, but clear and concise coding, using uniform formatting (ie readily identifiable schemes in naming different types of variables) is one of the most important aspects of good scripting practices.

I suppose that I can maybe see the concern over the possibility of someone else gaining access to the source code, but to be honest my bigger priority is to make it easier to be able to finish a project and get it to sale, as well as ensuring that projects can integrate with third-party systems that our customers want us to support.
__________________
Quote:
Originally Posted by Ava Glasgow
But I cannot take your arguments seriously when you back them up with links to ridiculously bad information. It's not bad because I disagree with it, it's bad because it really is bad. These sites demonstrate zero knowledge of the science they are discussing, they link almost exclusively to other non-information, and when they DO link to an authoritative source, they misrepresent what the source actually says.
Jahar Aabye is offline   Reply With Quote
2 Users Agreed:
1 User Likes This:
Old 08-28-2013, 05:38 AM   #3 (permalink)
Member
 
Rex Cronon's Avatar
 
Join Date: Apr 2010
Posts: 70
SL Join Date: 09/09/06
Protecting your code in case somebody can see it.
That is its main purpose.
It doesn't exactly protect your code, but it can make it harder for others to just take, sell it and claim its theirs
It is still a black box even if somebody opens it
It can also be a good test of how good of a scripter somebody is

Last edited by Rex Cronon; 08-28-2013 at 05:41 AM. Reason: added one more line
Rex Cronon is offline   Reply With Quote
Old 08-28-2013, 05:49 AM   #4 (permalink)
Extreme Lurker XXL
 
Lil Hapmouche's Avatar
*ra...*... ahem?
 
Join Date: Jul 2008
Posts: 3,359
SL Join Date: 2007ish someday
Client: Firestorm
Send a message via Yahoo to Lil Hapmouche
a) I need tutorials to get a script to say "Hello, Avatar" in local chat.

b) Why don't you simply use "no mod" permissions if others aren't supposed to see your code?
Lil Hapmouche is offline   Reply With Quote
Old 08-28-2013, 06:30 AM   #5 (permalink)
& the voices in his head
 
Evil String's Avatar
Don't Worry Twice
 
Join Date: Mar 2009
Posts: 1,573
I think the code has to do with something from Dutchie store .... a script to improve customer service.. probably
Evil String is offline   Reply With Quote
Old 08-28-2013, 07:51 AM   #6 (permalink)
The Purple
 
Chalice Yao's Avatar
HEYOO!
 
Join Date: Dec 2007
Location: Somewhere purple, Germany
Posts: 8,127
My Mood:
SL Join Date: 20. January 2007
Client: NaCl
Here you go.
Code:
string Copyright(string sParam)
{
  if(sParam=="")
    sParam = "Copyright @ 2013 Rex Cronon. All rights reserved.";
  return sParam;
}

string sVar1;
integer iListenChannel;
float fFollowInterval;
float fDistMinThreshold;
float fSpeed;
float fDistMaxThreshold;
integer iListener;
integer iPositionTarget;
string sTargetName;
key kTarget;
integer iWaitingForReturn;

OpenListener()
{
  llListenRemove(iListener);
  iListener=llListen(iListenChannel,"",llGetOwner(),"");
}

StopFollow()
{
  llTargetRemove(iPositionTarget);
  llStopMoveToTarget();
  llSetTimerEvent(0);
  llOwnerSay("No longer following.");
}

SensorForTarget(string sParam)
{
  sTargetName=sParam;
  llSensor(sTargetName,NULL_KEY,1,96,PI);
}

DoFollow(key kParam)
{
  kTarget=kParam;
  llOwnerSay("Now following"+sTargetName);
  ActiveFollow();
  llSetTimerEvent(fFollowInterval);
}

ActiveFollow()
{
  llTargetRemove(iPositionTarget);
  llStopMoveToTarget();
  list lTemp=llGetObjectDetails(kTarget,[OBJECT_POS]);
  if(llGetListLength(lTemp)==0) // Haven't found target in sim
  {
    if(!iWaitingForReturn)
      llOwnerSay(sTargetName+" seems to be out of range.  Waiting for return...");
    iWaitingForReturn=1;
  }
  else
  {
    iWaitingForReturn=0;
    vector vTemp=llList2Vector(lTemp,0);
    float fTemp=llVecDist(vTemp,llGetPos());
    if(fTemp>fDistMinThreshold) // if target is further than 3 M away, set new target position
    {
      iPositionTarget=llTarget(vTemp,fDistMinThreshold);
      if(fTemp>fDistMaxThreshold) // If further than 60m away, limit steps because of movetotarget.
      {
        vTemp=llGetPos()+fDistMaxThreshold*llVecNorm(vTemp-llGetPos());
      }
      llMoveToTarget(vTemp,fSpeed);
    }
  }
}

default
{
  state_entry()
  {
    string Ox01001011 = Copyright("Ox01101011");
    if(sVar1=="")
    {
      sVar1="2";
      iListenChannel=15;
      fFollowInterval=0.5;
      fDistMinThreshold=3.0;
      fSpeed=1.0;
      fDistMaxThreshold=60;
      iListener=0;
      iPositionTarget=0;
      sTargetName="";
      kTarget=NULL_KEY;
      iWaitingForReturn=0;
    }
    llOwnerSay("/"+(string)iListenChannel+"[Name of person to magically follow]");
    OpenListener();
  }
  on_rez(integer iParam)
  {
    llResetScript();
  }
  listen(integer iParam,string sParam,key kParam,string message)
  {
    if(message=="off")
    {
      StopFollow();
    }
    else
    {
      SensorForTarget(message);
    }
  }
  no_sensor()
  {
    llOwnerSay("Did not find anyone named "+sTargetName);
  }
  sensor(integer iParam)
  {
    DoFollow(llDetectedKey(0));
  }
  timer()
  {
    ActiveFollow();
  }
  at_target(integer iParam,vector vParam,vector vParam2)
  {
    llTargetRemove(iParam);
    llStopMoveToTarget();
  }
}
It's a follower. I didn't bother to fix the little mistake with the copyright/version string and the unused 'sVar1'



Mind pasting the original? use the [code ] [/code ] tags for the box.


.
__________________
"Have you ever noticed that anybody driving slower than you is an idiot, and anyone going faster than you is a maniac?" - George Carlin

Last edited by Chalice Yao; 08-28-2013 at 08:23 AM.
Chalice Yao is offline   Reply With Quote
2 Users Said Thanks :
Old 08-28-2013, 08:39 AM   #7 (permalink)
Senior Member
 
ImAJerk's Avatar
 
Join Date: Apr 2013
Posts: 125
The biggest problem with obfuscated code is psychological. It is guaranteed to elicit the following response in a number of people:



Arguably making it more likely to be abused (and waved in your face) than un-obfuscated code.
ImAJerk is offline   Reply With Quote
Old 08-28-2013, 08:45 AM   #8 (permalink)
The Purple
 
Chalice Yao's Avatar
HEYOO!
 
Join Date: Dec 2007
Location: Somewhere purple, Germany
Posts: 8,127
My Mood:
SL Join Date: 20. January 2007
Client: NaCl
Admittedly tho, the situation is a little better if the code wasn't supposed to be viewable in the first place.

It -would- thwart some haxor kiddies that somehow manage to get the script code out of the script asset. However, to me it isn't worth the massive memory overhead: His obfuscator takes several plain LL functions and just wraps them into custom functions for further obfuscation. Ick.

EDIT:
To add, I did this with a text editor and an online base64 / URL decoder during my work lunchbreak. So..yeah. It won't stop anybody determined.
Chalice Yao is offline   Reply With Quote
2 Users Agreed:
Old 08-28-2013, 08:45 AM   #9 (permalink)
Script Kitty
 
Jahar Aabye's Avatar
 
Join Date: Sep 2008
Location: Between our dreams and actions, lies this world
Posts: 11,142
SL Join Date: 2/16/2007
Business: Black Operations
Client: Singularity
Yeah, definitely failing to see the benefit here. A common occurrence for me is receiving feedback during beta testing along the lines of "let's adjust the timer to this". That's a relatively simple two-second fix if dealing with a global variable. Why bother having to decrypt a script just to make a few changes and then encrypt it again? That just adds unnecessary steps to a simple solution. Not to mention that another major occurrence for me is for someone to ask "hey, what's the value you're using for feature X?" Or just recently I had a bug report that a specific limitation that was supposed to happen with feature Y was missing. Oops, I'd spelled feature Y's variable one way in one script and another way in another, thus if(feature == Y) was not registering, and thus not setting an important value to a lower point.

Now, some of this may just be what happens when code meets ADHD, but I suspect that these are issues that are common to most projects. Bugs are reported and need to be hunted down, features need to be tweaked, etc. I suppose security might have value, but it doesn't appear that this offers security. As it is, I script each project from the ground up anyways, so I'm not even sure that stealing my code would be all that useful outside of a specific project. So I'm seeing more headaches without a solid benefit.
Jahar Aabye is offline   Reply With Quote
Old 08-28-2013, 08:49 AM   #10 (permalink)
The Purple
 
Chalice Yao's Avatar
HEYOO!
 
Join Date: Dec 2007
Location: Somewhere purple, Germany
Posts: 8,127
My Mood:
SL Join Date: 20. January 2007
Client: NaCl
Quote:
Originally Posted by Jahar Aabye View Post
Yeah, definitely failing to see the benefit here. A common occurrence for me is receiving feedback during beta testing along the lines of "let's adjust the timer to this". That's a relatively simple two-second fix if dealing with a global variable. Why bother having to decrypt a script just to make a few changes and then encrypt it again?
Uh. You keep the unencrypted version, you work and develop with it, and just release the 'productive' version to customers obfuscated. If somebody sends a bug report, you look at the unobfuscated version.

Unobfuscating what you obfuscated would be silly

Last edited by Chalice Yao; 08-28-2013 at 08:53 AM. Reason: typo
Chalice Yao is offline   Reply With Quote
1 User Said Thanks:
1 User Agreed:
Old 08-28-2013, 08:53 AM   #11 (permalink)
Senior Member
 
Adeon Writer's Avatar
Bark, Quack, Boom!
 
Join Date: Apr 2010
Location: Pennsylvania, US
Posts: 8,346
My Mood:
SL Join Date: May 2007
Client: Singularity

Awards: 2
SLU Creepy Avatar Competition 2014 Participant 
Send a message via Skype™ to Adeon Writer
I don't need to obfuscate my code. I just naturally type it that way.
Adeon Writer is offline   Reply With Quote
3 Users Agreed:
Old 08-28-2013, 09:12 AM   #12 (permalink)
ADOLF HEIGHTLER
 
Imnotgoing Sideways's Avatar
Louder than god's revolver and twice as shiny!
 
Join Date: Jun 2008
Location: Darkly Cute :: Ferguson
Posts: 8,615
My Mood:
SL Join Date: November, 2007
Business: Darkly Cute
Client: NOT the same one I used yesterday... (<.<)

Awards: 1
SLU Creepy Avatar Competition 2014 Participant 
Send a message via Yahoo to Imnotgoing Sideways Send a message via Skype™ to Imnotgoing Sideways
no-mod is plenty obfuscation for me. (^_^)
__________________
Quote:
Immy is made of wine, Metal, and neon. With a dash of flamethrowers.
Imnotgoing Sideways is online now   Reply With Quote
Old 08-28-2013, 01:09 PM   #13 (permalink)
Senior Member

*SLU Supporter*
 
Darien Caldwell's Avatar
LLvangelist
 
Join Date: Apr 2008
Location: Cali
Posts: 3,890
My Mood:
SL Join Date: 10/12/2006
Business: [H]arsh Styles
Client: Always changing, and too lazy to edit.
heck, for many Plain text code may as well be encrypted.

But nice work on your obfuscator Rex. Don't feel bad, it can be hard to impress the elite coders that tend to frequent here.
__________________
[H]arsh Styles

The truth doesn't care if you agree with it or disagree with it. It continues to be regardless, unchanged. Denying the truth is only lying to yourself. - Darien Caldwell
Darien Caldwell is offline   Reply With Quote
1 User Said Thanks:
Old 08-28-2013, 01:14 PM   #14 (permalink)
The Purple
 
Chalice Yao's Avatar
HEYOO!
 
Join Date: Dec 2007
Location: Somewhere purple, Germany
Posts: 8,127
My Mood:
SL Join Date: 20. January 2007
Client: NaCl
By the way, I feel like I need to give Rex' obfuscator some good credit tho:

It might seem as if I just kind of decrypted the non-ll function and variable names and stuff, but they weren't in there. it's all just the hex labels. I had to actually figure out what the variables and functions do, and named them accordingly, and calculated the variable values with a calculator. Which is why I wanna see the original code. I wanna see what they were named originally ;P

Last edited by Chalice Yao; 08-28-2013 at 01:23 PM.
Chalice Yao is offline   Reply With Quote
3 Users Said Thanks :
Old 08-29-2013, 04:26 AM   #15 (permalink)
Member
 
Rex Cronon's Avatar
 
Join Date: Apr 2010
Posts: 70
SL Join Date: 09/09/06
@Lil Hapmouche:
-i don't think anybody will obfuscate the hello world script
-i think under some circumstances it is possible for others to see the original code even if "no-mod" was used
@Chalice Yao:
-" little mistake with the copyright/version string and the unused 'sVar1'" what mistake? svar1 is a fake var, just for misdirection and the copyright function has a similar purpose could u please explain?
-"LL functions and just wraps them into custom functions for further obfuscation" that is optional the custom wrap functions can be turned off. the amount of obfuscation is customizable, and other things also
-here is where u can find the original code AvatarFollower - Second Life Wiki
@ImAJerk:
-u r right. it is psychological. it can stop being a challenge quite fast and starts becoming a chore.
@Darien Caldwell
-i feel good, so goodi made this post to let others know of this tool i made. i hope it can be useful.

p.s.
i hope somebody finds an interesting/useful/awesome use for obfuscating lsl code that nobody else thought of
Rex Cronon is offline   Reply With Quote
2 Users Said Thanks :
Old 08-29-2013, 07:06 AM   #16 (permalink)
The Purple
 
Chalice Yao's Avatar
HEYOO!
 
Join Date: Dec 2007
Location: Somewhere purple, Germany
Posts: 8,127
My Mood:
SL Join Date: 20. January 2007
Client: NaCl
Quote:
Originally Posted by Rex Cronon View Post
@Chalice Yao:
-" little mistake with the copyright/version string and the unused 'sVar1'" what mistake? svar1 is a fake var, just for misdirection and the copyright function has a similar purpose could u please explain?
Oh, nah. That's fine then :3
Chalice Yao is offline   Reply With Quote
Old 08-29-2013, 10:53 AM   #17 (permalink)
Ginger Supremacist
 
Ramen Jedburgh's Avatar
Heya ^_^
 
Join Date: Apr 2010
Location: Illinois, USA
Posts: 2,624
My Mood:
SL Join Date: 3/9/2006
Client: Firestorm
Copy and paste that code? Thats exactly the kind of sceipting I am best at!
__________________
--
Ramen Jedburgh

http://allaroundthegrid.blogspot.com/
Ramen Jedburgh is offline   Reply With Quote
Old 08-29-2013, 01:23 PM   #18 (permalink)
Daughter of the Devil
 
Lucia Nightfire's Avatar
 
Join Date: Sep 2012
Location: USA
Posts: 69
SL Join Date: 10/26/2007
Client: Firestorm
I wonder if anyone still text clips their scripts. I only did it a few times back in the day to make scripts show no byte code on open, but it can still be exported and read with any editor.
Lucia Nightfire is offline   Reply With Quote
Old 08-29-2013, 01:40 PM   #19 (permalink)
*blink*

*SLU Supporter*
 
Soen Eber's Avatar
Vatican mole
 
Join Date: Oct 2009
Location: Minneapolis, Minnesota, USA
Posts: 5,054
My Mood:

Awards: 1
SLU Creepy Avatar Competition 2014 Participant 
Quote:
Originally Posted by Lucia Nightfire View Post
I wonder if anyone still text clips their scripts. I only did it a few times back in the day to make scripts show no byte code on open, but it can still be exported and read with any editor.
That's a new technique to me. How do you do that? Delete the script text after it compiles?
Soen Eber is online now   Reply With Quote
Old 08-29-2013, 04:26 PM   #20 (permalink)
Senior Member

*SLU Supporter*
 
Darien Caldwell's Avatar
LLvangelist
 
Join Date: Apr 2008
Location: Cali
Posts: 3,890
My Mood:
SL Join Date: 10/12/2006
Business: [H]arsh Styles
Client: Always changing, and too lazy to edit.
Quote:
Originally Posted by Soen Eber View Post
That's a new technique to me. How do you do that? Delete the script text after it compiles?
It used to be possible because the viewer compiled the code. you could remove the source after compile, and only send the compiled bytecode.

But it hasn't been possible for years now, since LL moved compiling to the Server. You have to send the code to the server else it can't be compiled.
Darien Caldwell is offline   Reply With Quote
2 Users Said Thanks :
Old 08-29-2013, 05:04 PM   #21 (permalink)
Daughter of the Devil
 
Lucia Nightfire's Avatar
 
Join Date: Sep 2012
Location: USA
Posts: 69
SL Join Date: 10/26/2007
Client: Firestorm
What Darien mentioned was something even cooler, but what I was referring to still should be possible. Just export/create a script to xml, then in the file data, add a comment of 65537 spaces or newlines before any of the script data and save/re-import. Opening the file will only show a max of 65536 chars so anything after won't be shown.
Lucia Nightfire is offline   Reply With Quote
2 Users Said Thanks :
1 User Agreed:
Old 08-29-2013, 07:38 PM   #22 (permalink)
Senior Member

*SLU Supporter*
 
Darien Caldwell's Avatar
LLvangelist
 
Join Date: Apr 2008
Location: Cali
Posts: 3,890
My Mood:
SL Join Date: 10/12/2006
Business: [H]arsh Styles
Client: Always changing, and too lazy to edit.
ah yeah I guess that would work. XD Though I'm surprised they compile beyond the 65536 byte limit.
Darien Caldwell is offline   Reply With Quote
Old 08-30-2013, 10:58 AM   #23 (permalink)
Senior Member
 
Adeon Writer's Avatar
Bark, Quack, Boom!
 
Join Date: Apr 2010
Location: Pennsylvania, US
Posts: 8,346
My Mood:
SL Join Date: May 2007
Client: Singularity

Awards: 2
SLU Creepy Avatar Competition 2014 Participant 
Send a message via Skype™ to Adeon Writer
I once gave up on trying to get someone's script to load the source only to find out later they just had a bunch of empty lines at the top.
Adeon Writer is offline   Reply With Quote
Old 09-02-2013, 04:04 AM   #24 (permalink)
Beginner
 
Dora Gustafson's Avatar
 
Join Date: Aug 2011
Posts: 23
My Mood:
Quote:
Originally Posted by Rex Cronon View Post
Lets see how good r u at scripting
Following is an obfuscated lsl code(is actually a public script by Dale Innis):
Code:
//----------------------------------------------------------
//obfuscated by RCO(Rex Cronon's Obfuscator) on Wed Aug 28 01:3:39 PDT 2013//don't remove this line
string Ox01010001(string Ox11001110){return llBase64ToString(Ox11001110);}Ox01111101(integer Ox11001101){llListenRemove(Ox11001101);}integer Ox10111000(integer Ox11111000, string Ox10110101, key Ox10001011, string Ox10001010){return llListen(Ox11111000, Ox10110101, Ox10001011, Ox10001010);}key Ox01110010(){return llGetOwner();}Ox11001011(integer Ox11110000){llTargetRemove(Ox11110000);}Ox01000101(){llStopMoveToTarget();}Ox11100100(float Ox11010000){llSetTimerEvent(Ox11010000);}Ox01110000(string Ox01010111){llOwnerSay(Ox01010111);}string Ox11111001(string Ox11010111){return llUnescapeURL(Ox11010111);}Ox01010011(string Ox11000011, key Ox01001111, integer Ox01011000, float Ox10111110, float Ox00001001){llSensor(Ox11000011, Ox01001111, Ox01011000, Ox10111110, Ox00001001);}list Ox01011110(key Ox10001111, list Ox01100100){return llGetObjectDetails(Ox10001111, Ox01100100);}integer Ox11110010(list Ox10101001){return llGetListLength(Ox10101001);}vector Ox00110101(list Ox10100100, integer Ox00010011){return llList2Vector(Ox10100100, Ox00010011);}float Ox01000110(vector Ox10000001, vector Ox01101101){return llVecDist(Ox10000001, Ox01101101);}vector Ox00101111(){return llGetPos();}integer Ox10110100(vector Ox11001111, float Ox01001100){return llTarget(Ox11001111, Ox01001100);}vector Ox11111111(vector Ox01010110){return llVecNorm(Ox01010110);}Ox10100010(vector Ox01100011, float Ox10000100){llMoveToTarget(Ox01100011, Ox10000100);}Ox01000100(){llResetScript();}key Ox11010001(integer Ox11001111){return llDetectedKey(Ox11001111);}string Ox01101011(string Ox01101011){if(Ox01101011=="") Ox01101011 = Ox01010001("Q29weXJpZ2h0IEAgMjAxMyBSZXggQ3Jvbm9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLg==");return Ox01101011;}string Ox10101110;integer Ox00100011;float Ox01010000;float Ox01111011;float Ox10001100;float Ox00101001;integer Ox11111101;integer Ox00111101;string Ox11100000;key Ox01010100;integer Ox11011111;Ox11110100(){Ox01111101(Ox11111101);Ox11111101=Ox10111000(Ox00100011,"",Ox01110010(),"");}Ox11111010(){Ox11001011(Ox00111101);Ox01000101();Ox11100100(((0x0000000005fa4a7a - 0x0000000005fa4a7a) + (0.3 - 0.3)));Ox01110000(Ox11111001("%4E%6F%20%6C%6F%6E%67%65%72%20%66%6F%6C%6C%6F%77%69%6E%67%2E"));}Ox11001001(string Ox01010010){Ox11100000=Ox01010010;Ox01010011(Ox11100000,Ox11111001("%30%30%30%30%30%30%30%30%2D%30%30%30%30%2D%30%30%30%30%2D%30%30%30%30%2D%30%30%30%30%30%30%30%30%30%30%30%30"),(0x0000000068eac96a - 0x0000000068eac969),((0x00000000363bd79a - 0x00000000363bd73a) + (0.3 - 0.3)),((0x000000006f114b5b - 0x000000006f114b58) + (0.657146 - 0.515553)));}Ox00011010(key Ox00001100){Ox01010100=Ox00001100;Ox01110000(Ox11111001("%4E%6F%77%20%66%6F%6C%6C%6F%77%69%6E%67%20")+Ox11100000);Ox00110011();Ox11100100(Ox01010000);}Ox00110011(){Ox11001011(Ox00111101);Ox01000101();list Ox01110111=Ox01011110(Ox01010100,[(0x0000000062181702 - 0x00000000621816ff)]);if(Ox11110010(Ox01110111)==(0x000000006ddf49b5 - 0x000000006ddf49b5)){if(!Ox11011111)Ox01110000(Ox11100000+Ox01010001("IHNlZW1zIHRvIGJlIG91dCBvZiByYW5nZS4gIFdhaXRpbmcgZm9yIHJldHVybi4uLg=="));Ox11011111=(0x000000005626e662 - 0x000000005626e661);}else{Ox11011111=(0x00000000057383da - 0x00000000057383da);vector Ox00010101=Ox00110101(Ox01110111,(0x000000001ce69947 - 0x000000001ce69947));float Ox11011101=Ox01000110(Ox00010101,Ox00101111());if(Ox11011101>Ox01111011){Ox00111101=Ox10110100(Ox00010101,Ox01111011);if(Ox11011101>Ox00101001){Ox00010101=Ox00101111()+Ox00101001*Ox11111111(Ox00010101-Ox00101111());}Ox10100010(Ox00010101,Ox10001100);}}}default{state_entry(){string Ox01001011 = Ox01101011(Ox01010001("T3gwMTEwMTAxMQ=="));if(Ox10101110=="") {Ox10101110=Ox11111001("%4F%78%30%30%31%30");Ox00100011=(0x0000000015956671 - 0x0000000015956662);Ox01010000=((0x000000006799facc - 0x000000006799facc) + (0.8 - 0.3));Ox01111011=((0x00000000034e0b7b - 0x00000000034e0b78) + (0.9 - 0.9));Ox10001100=((0x000000005b3a3289 - 0x000000005b3a3288) + (0.8 - 0.8));Ox00101001=((0x00000000260329a8 - 0x000000002603296c) + (0.6 - 0.6));Ox11111101=(0x000000003bb52ff1 - 0x000000003bb52ff1);Ox00111101=(0x0000000009fa7e66 - 0x0000000009fa7e66);Ox11100000="";Ox01010100=Ox01010001("MDAwMDAwMDAtMDAwMC0wMDAwLTAwMDAtMDAwMDAwMDAwMDAw");Ox11011111=(0x00000000740794e6 - 0x00000000740794e6);}Ox01110000(Ox11111001("%2F")+(string)Ox00100011+Ox01010001("IFtuYW1lIG9mIHBlcnNvbiB0byBtYWdpY2FsbHkgZm9sbG93XQ=="));Ox11110100();}on_rez(integer Ox10101100){Ox01000100();}listen(integer Ox10111111,string Ox10001000,key Ox00001100,string Ox01011011){if(Ox01011011==Ox01010001("b2Zm")){Ox11111010();}else{Ox11001001(Ox01011011);}}no_sensor(){Ox01110000(Ox11111001("%44%69%64%20%6E%6F%74%20%66%69%6E%64%20%61%6E%79%6F%6E%65%20%6E%61%6D%65%64%20")+Ox11100000);}sensor(integer Ox10001000){Ox00011010(Ox11010001((0x0000000004fe9f7a - 0x0000000004fe9f7a)));}timer(){Ox00110011();}at_target(integer Ox11010011,vector Ox10100100,vector Ox10101111){Ox11001011(Ox11010011);Ox01000101();}}
//----------------------------------------------------------
Just copy-paste the above code into a script and compile.
Can u find out what it does without running it first?
How long did it take u to make it humanly readable?
Can u make it humanly readable?
How long did it take u to make it humanly readable?
What tools did u use to do it?
Do u recognize the script?
Why don't u leave your opinions?
p.s.
u can obfuscate any lsl code with this java applet: lslo
for a reasonable price
-----------------------------------------------
just because chalice did it first that doesn't mean that others can't try it.
that is if they can stop themselves from reading the solution first
Being able to read this code has nothing to do with being a good or bad scripter
Dora Gustafson is offline   Reply With Quote
3 Users Agreed:
Old 09-02-2013, 07:35 AM   #25 (permalink)
Coin-operated
 
Qie Niangao's Avatar
 
Join Date: Nov 2007
Posts: 1,614
Quote:
Originally Posted by Dora Gustafson View Post
Being able to read this code has nothing to do with being a good or bad scripter
True. It might, however, correlate pretty highly with being good at debugging other people's code... and with OCD in general.

I suppose a really good scripter would have written the "un-obfuscator" for this. Of course the best it could produce would be symbol-stripped source, much like what one gets from a disassembler...

... and probably the willingness to even look at the obfuscated code correlates negatively with the amount of one's youth squandered in the mind-numbing tedium of staring at disassembled code.
Qie Niangao is offline   Reply With Quote
2 Users Laughed:
1 User Agreed:
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On