Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Xalos

Pages: 1 [2] 3 4 5 6 7 ... 17
16
General Discussion / Open Code Server
« on: May 14, 2015, 10:37:56 AM »
I am hosting Open Code once again!

    What does "Open Code" mean?
The concept of an open-code server is something I had bouncing around long before I actually started hosting it.  Essentially, the idea is that everyone has near-unlimited access to the console, via eval - anyone can run basically any code.  Certain functions are blocked, such as crash() and quit().

    So the server is stable, right?
Not even close.  Just because I've blocked as many of the trivially-obvious methods of crashing as I can doesn't mean the server is in any way stable.  We're constantly finding new and bizarre ways to break the server, the game, and even TorqueScript itself.  Don't build anything you can't bear to lose here!

    My eval showed up as yellow/red/dark red!  What does this mean?
Yellow means that there's an error that the (unfinished) validity checker didn't realize existed until the end of the code.  This usually means you have an unclosed string or block pair.  Completely red means the code passed the validity checker but was still invalid; partially red means there's a syntax error where the red portion begins.  Dark red means that the code passed the validity checker but was never run; this only happens if there is some code which is not allowed, such as crash(), quit(), echo(), etc.

    Why is [insert piece of code here] blocked?  Unblock it!
Some portion of the code is inherently malicious - this includes things like crash and quit (obvious), echo (can crash the server and only useful for spamming the console), and trying to define a function with the name servercmdEval (would overwrite the existing /eval command).

    I accidentally crashed the server!  Am I going to be banned?
No.  It's my job to try to make the server as stable as possible, not to hide the instabilities from those who might exploit them.  An brown townogous situation would be antivirus software - they don't have the luxury of banning specific people from writing code; they have to instead flag the code as malicious based on the code itself.

    What are some examples of code that I could run?
+%hit.addVelocity("0 0 200");    Sends whatever you're looking at flying upwards!
+%obj.setPlayerScale(5);    Makes your player really large!

    Media from the Depths of Hell
The Soundscape of Open Code
Oaken Code - Jeeps with Tree Tires
Open Code - Spinning Around


Come make craziness and insanity happen!

Credits to Ipqµarx for having no life finding probably all the default functions which expose eval in an exploitable manner!

If you have a line of code that you'd like me to add to the example list, feel free to post it!

17
Suggestions & Requests / Staff Weapon + Zat'nik'tel
« on: April 10, 2015, 06:19:24 PM »
Could someone model for me the staff weapon and zat'nik'tel from Stargate SG-1?

18
General Discussion / Open Code Server
« on: March 14, 2015, 11:07:04 AM »
Essentially, an Open Code server is where everyone has near-direct access to the server's console via eval!  It's exactly as abusive as it sounds; don't build anything you can't bear to lose here!

Unlike these guys, I won't ban you for crashing the server - it's inevitable and unavoidable!  Plus I have a program that just automatically restarts the server when it crashes.


Come make craziness and insanity happen!


Credits to Ipqµarx for having no life finding probably all the default functions which expose eval in an exploitable manner!

19
Modification Help / Emitter with multiple particles?
« on: March 14, 2015, 03:11:08 AM »
The variable for an EmitterData for its particle type is called "particles".  This implies that it can have more than one particle type, and I seem to recall that this is the case, but neither space-delimited nor tab-delimited particle datablock names work.  Can a single EmitterData actually have multiple particle types, or do I have to have multiple EmitterDatas?

20
Off Topic / Xalos gained a level!
« on: March 08, 2015, 01:23:49 PM »
Xalos has reached 365/365 EXP and levelled up to Level 20!

Wait, I already did this joke.


Also I've received the game Besiege! WOOOOOOOOOOOOOOOOOOOOOOOOOOOOO


Discuss my managing to endure the arduous task of surviving twenty years!

21
General Discussion / Helicopters
« on: January 29, 2015, 10:41:10 AM »
So I decided to make a helicopter script for a gamemode I'm working on.
I then decided to make a client mod to allow me to fly said helicopter.

If anyone would like to join and try to fly a helicopter, please download the mod and then join the server!
Here's my failed attempt to land on a helipad.

Note: I'll probably mostly be working on the city, so you'll be on your own with figuring out how to fly, but here are the basics for controlling the helicopters:
  • The mouse controls the cyclic, which causes you to roll and move in that direction.
  • Both W/S and jump/crouch control the collective, which causes your overall lift to increase.  Jump and crouch are for more coarse adjustments.
  • A/D control the tail rotor, which causes you to rotate around the vertical axis (yaw).

22
Just short of two weeks ago, I got this personal message from a user named Thebloxer123.  Apparently, he wants to know what I was doing on October 26th, 2011.


This image has been edited to a smaller size for the convenience of anyone who still uses the 640x480 monitor resolution.


Here's my counter-question for you, Thebloxer123: Who are you, and why do you need to know what I was doing on October 26th, 2011?  Even presupposing you have a legitimate reason to ask what I was doing on that particular date, it happened slightly over three years ago.  I don't keep detailed logs of my day-to-day activities, and I doubt anyone I know does.

Even more bizarre is that you address that the query is creepy in the message itself, yet still send it.  If you had a reason to ask, you likely would have sent it in the message itself.  So are you just going around asking people what they were doing on random dates?  What are your motivations, and what do you expect to gain from my informing you of what I was doing on that date?  Are you mining for personal information or something similar?


As a follow-up to the last several questions, I'd like to ask a personal query of my own - has anyone else here received a message from Thebloxer123 asking what they were doing at a particular date or time, or some other bizarrely creepy personal message from him or any other forumer?

23
This is pissing me off.  I've "fixed" this issue over twenty times now, with no signs of it getting any better.
Whenever anyone disconnects the server, everyone else experiences moderate to debilitating lag.

Code: [Select]
function RSC_UpdatePlayerMarkers()
{
// unrelated code omitted
for(%i=0;%i<RSC_PlayerList.players;%i++)
{
if(!%updatedMarker[%i])
{
if($RSC::TargetIndex !$= "" && %i == $RSC::TargetIndex) $RSC::TargetIndex = "";
RSC_PlayerList.indexOf[RSC_PlayerList.playerName[%i]] = ""; %shift++;

// If I delete this line, the debilitating-lag-on-disconnect problem goes away, but the player's indicator is never cleaned up.
RSC_UpdateDirMarker("Player_"@RSC_PlayerList.markerIndex[%i], "DELETE");
}
else
{
// unrelated code omitted
}
}
RSC_PlayerList.players -= %shift;
}

function RSC_UpdateDirMarker(%name, %pos, %color, %text, %ang, %echo)
{
%marker = $RSC_DirMarker_[%name];
if(!isObject(%marker) && %pos !$= "DELETE")
%marker = ($RSC_DirMarker_[%name] = new GuiBitmapCtrl() { bitmap = Crosshair.bitmap; position = "-32 -32"; extent = "32 32"; });
if(%pos $= "DELETE")
{
if(isObject(%marker))
{
if(isObject(%textObj = %marker.textObj))
{
PlayGUI.remove(%textObj);
%textObj.delete();
}
if(PlayGUI.isMember(%marker)) PlayGUI.remove(%marker);
%marker.delete();
}

// Yeah, that didn't work either.  If I add echoes everywhere, the lag stops happening, making debugging a righteous pain in the ass.
// But if I try to stop the lag by adding an echo, it does loving nothing.  Thanks, Torque.
//echo("This has to be here to stop Blockland from crashing for reasons I cannot discern -_-");
return -1;
}
// unrelated code omitted
}

24
Games / Creative Terraria Server
« on: December 02, 2014, 05:38:49 PM »
I am currently hosting a free-form Terraria server where you can do whatever you feel like, such as building, killing mobs, or killing bosses!

The server is being hosted on IP 65.190.30.81, port 25565.
To spawn an item, say in chat (without quotes): "!item namegoeshere" - for a Legendary Terra Blade, you would say "!item legendary terra blade".


Have fun and happy building!


Derp.

25
Off Topic / Creative Terraria Server
« on: December 02, 2014, 05:34:10 PM »
I am currently hosting a free-form Terraria server where you can do whatever you feel like, such as building, killing mobs, or killing bosses!

The server is being hosted on IP 65.190.30.81, port 25565.
To spawn an item, say in chat (without quotes): "!item namegoeshere" - for a Legendary Terra Blade, you would say "!item legendary terra blade".


Have fun and happy building!

27
General Discussion / The current key.dat format is insecure.
« on: November 08, 2014, 03:32:16 PM »
I kept wavering between posting this and not posting it, and ultimately I decided that it's better to show the exploit than to allow it to have any chance of potentially flying under the radar.  The reason is simple.  While trying to help a friend recover his previously lost key, I realized that this attack existed, but decided that it was worthless as an avenue of recovery because there would never be enough keys generated by one machine for it to be useful.  Specifically, I knew that this attack existed a good two weeks before Computermix exploited it, and decided to not alert Badspot because I thought it would never be a problem.  I also have a more personal interest in solving this issue, since one of the keys leaked was my brother's.  Anyway, about the exploit itself:


If you haven't been living under some form of large rock, you're probably at least vaguely aware that 41 individual key.dat files were leaked.  They were subsequently cracked through a fundamental flaw in the key.dat format's encryption.  It only takes about ten individual keys to go from essentially unbreakable to easily breakable.

The current key.dat format is "KEYDAT_V1", followed by a newline and 17 bytes of encoded key data.  The encoding formula looks something like this (although this code is in C#, not TorqueScript).

Code: (EncryptKey) [Select]
static byte[] EncryptKey(string Key, string CPU, string MACAddress)
{
    byte[] bKey = Encoding.ASCII.GetBytes(Key.Replace("-", ""));
    byte[] bCPU = Encoding.ASCII.GetBytes(CPU);
    byte[] bHex = Encoding.ASCII.GetBytes("XXXXX" + MACAddress);
    byte[] Result = new byte[17];
    for (int I = 0; I < 17; I++)
        Result[I] = (byte)(bKey[I] ^ ((bHex[I] + bCPU[I]) % 256));
    return Result;
}

The part we're interested in is the fact that the encryption key stays the same on any given computer.  Since keys are Base32 data, there is a very limited range of valid final bytes we can get upon decryption.  If a given cypher byte doesn't give us a valid final byte for every single encrypted key, we can discard it completely.  As the sample size of keys increases, the likelyhood of having more than one valid final byte per byte position decreases. Get one key, and you (should) have 85 bits of uncertainty. Get ten, and you'll usually have about 8 bits of uncertainty. Get 41, and you'll have about 0 bits of uncertainty.


The problem is with the deterministic nature of the encryption key.  For any given computer, the encryption key is ALWAYS identical.  This is simply unacceptable.  Just directly adding a bunch of random noise to the encryption key doesn't work, however - either you save it with the encrypted data, in which case it's useless; or you don't, in which case it's undecryptable.

Luckily, there is a solution.  In fact, there are many - the one linked is just my own personal solution.

Below is what the key.dat of a wholly fictional scenario would look like - the key "ABCDE-FGHJ-KLMN-PQRS", encrypted on a computer with a Generic CPU and a MAC address of 0123456789ab.




This is what Blockland will always generate under those circumstances.  That deterministic nature is why the attack works.
However, if Badspot implemented the linked solution, Blockland would give us a file that looks more like the following:




To break it down, I have highlighted the relevant parts here.



The yellow portion is the header, and will never change.  The light blue portion is the salt, 48 bytes of CSPRNG data, and will never be dependant on the computer.  The green portion is the key, encrypted with a combination of data unique to the computer and the salt.  The result is a file which can be decrypted on the original computer, but which does not always have the same encryption key.

Compare the above image with the two below.  These are all the exact same hypothetical key, on the exact same hypothetical computer.  The only difference is the salt.






Now that I have systematically detailed both the attack and one possible solution, hopefully we'll soon see KEYDAT_V2.

28
Modification Help / [RESOURCE] Script_Compressor
« on: October 13, 2014, 10:51:51 AM »
A script I wrote which contains functions to compress or obfuscate code.

List of functions:
ObcompFolderTo(); - Copies, obfuscates, and compresses one folder to another.
ObcompFileTo(); - Copies, obfuscates, and compresses one file to another.
ObcompCode(); - Returns an obfuscated and compressed copy of the code.
CompressFolderTo(); - Copies and compresses one folder to another.
CompressFileTo(); - Copies and compresses one file to another.
CompressCode(); - Returns a compressed copy of the code.
ObfuscateFolderTo(); - Copies and obfuscates one folder to another.
ObfuscateFileTo(); - Copies and obfuscates one file to another.
ObfuscateCode(); - Returns an obfuscated copy of the code.

Script_Compressor.zip


I also need some help testing it for issues.  The specific criteria it needs to meet are as follows.
  • Valid code must always be turned into valid, equivalent, code.
  • Invalid code must never be turned into valid code.
  • For valid code, the following properties must hold true:
    • The output of the main three functions1 must always be the same length or shorter than its input. strLen(%code) >= strLen(CompressCode(%code))
    • If fed their own output, the main three functions must produce the same result. CompressCode(%code) $= CompressCode(CompressCode(%code))
    • The CompressCode(); function must remove all whitespace which is not necessary for the code to remain valid.

1CompressCode();, ObfuscateCode();, and ObcompCode();.


If you find any code which fails one of the above criteria, please post the criterion, the functions which fail, the original code, and output code.

Also, if you have any suggestions for additional criteria, please post them.

29
Off Topic / 5x8 Character Map
« on: October 11, 2014, 01:01:41 PM »
I'm trying to create a low-resolution character map/font for a project of mine.  The problem therein is that I suck at pixel art.  Thus, I've attempted to create the best character map I could in the span of about three hours.  Since I didn't want to spend five days revising and redrawing every character until I felt it was perfect before asking for the advise of people better than myself at pixel art, I set myself a deadline for release (2:00 EST).  Each space is color-coded based on how I feel about its quality.  Below is the table of quality, from best to worst.

Cyan: This character is very definitely finished.  There are only two of these in the entire character map - the space and the no-break space.
Green: This character is finished in my mind.  I'll still change it if someone posts a better version.
Yellow: This character should probably be improved.  If you're good at pixel art, please post improved versions of these characters.
Orange: This character needs revision.  Please post improved versions for these characters.
Red: This character is in need of some serious pixel art magic.  These are the ones that are unrecognizable.
Magenta: This character has not yet been made.  This is reserved for characters I genuinely had no idea how to draw.
Blue: This character either has no textual representation, or I have not been able to find one.



Only pixels which are RGB {0, 0, 0} are considered part of the character.  All other pixels are considered to be background.  If you decide to only post one character, please post what character it's supposed to be, even if you feel it's obvious.  If I adopt your rendition of a character, you'll be listed in the credits below.

Current list of credits (character codes are in hexadecimal):
Xalos: 20-80, 82-88, 8A-8C, 8E, 91-9C, 9E-FF

30
These are the mods that never genuinely made the jump from unstable to stable.  The mods here are considered unfinished for various reasons, and I make no guarantees that they are stable or safe for servers.  Run these at your own risk.

Gamemode_Civilization - an absurdly old and poorly-written mod.  Abandan all hope, ye who enter here.
Server_Dimensions - a mod which allows for the creation of pocket dimensions.  Does not save properly.

Pages: 1 [2] 3 4 5 6 7 ... 17