• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 923
  • Last Modified:

How do I obfuscate literal strings like urls

I know I could buy a programme to encrypt my swf-files, but Im really only interested in obfuscating the urls of my movies. Particularly the loadMovieNum-url in my loading-movie.
I have no idea how, but Im hopng for someting like this if the swf is decompiled:
Original url:
loadMovieNum("http://www.mysite.com/my1folder/my2folder/my3folder/myfile.swf",1);
Obfuscated url:
loadMovieNum(kj,-78,372,??/hl884-334,1)
meaning something completely nonsense that will take forever to figure out even if you have acces to see the function.
0
petersego
Asked:
petersego
1 Solution
 
ccareyCommented:
You could design a simple encryption to make the value initially unreadable. There are some complex methods around (http://labs.boulevart.be/index.php/2007/05/23/encryption-in-as2-and-as3/) but it sounds like you're more interested in just making it hard to read.

Have a go at the snippet below. Your loadMovie call would turn into this:

loadMovieNum(unObfuscate("104,116,116,112,58,47,47,119,119,119,46,109,121,115,105,116,101,46,99,111,109,47,109,121,49,102,111,108,100,101,114,47,109,121,50,102,111,108,100,101,114,47,109,121,51,102,111,108,100,101,114,47,109,121,102,105,108,101,46,115,119,102"), 1)

That should work in AS2 or AS3. You would need to obfuscate your string prior to using it, and keep a local reference (notepad) to which string goes with what obfuscated equivalent.

function obfuscate(str:String) : String {
	var result:Array = [];
	for(var i=0;i<str.length;i++){
		result.push( str.charCodeAt(i) );
	}
	return result.join(",");
}
 
function unObfuscate(str:String) : String {
	var ob:Array = str.split(",");
	var result:String = "";
	var c:Number;
	for(var i=0;i<ob.length;i++) {
		c = parseInt(ob[i]);
		if(isNaN(c)) continue;
		result += String.fromCharCode(c);
	}
	return result;
}
 
var obfuscatedURL:String = obfuscate("http://www.mysite.com/my1folder/my2folder/my3folder/myfile.swf");
// result is 
// 104,116,116,112,58,47,47,119,119,119,46,109,121,115,105,116,101,46,99,111,109,47,109,121,49,102,111,108,100,101,114,47,109,121,50,102,111,108,100,101,114,47,109,121,51,102,111,108,100,101,114,47,109,121,102,105,108,101,46,115,119,102
trace("--- OBFUSCATED ---");
trace(obfuscatedURL);
 
trace("--- UNOBFUSCATED ---")
trace(unObfuscate(obfuscatedURL));

Open in new window

0
 
petersegoAuthor Commented:
Thanks. Maybe not unbreakable, but works fine for me as a startingpoint..
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Subnet Calculator

The subnet calculator helps you design networks by taking an IP address and network mask and returning information such as network, broadcast address, and host range.

One of a set of tools we're offering as a way of saying thank you for being a part of the community.

Tackle projects and never again get stuck behind a technical roadblock.
Join Now