 =~[]; ={___:++ ,$$$$:(![]+)[ ],__$:++ ,$_$_:(![]+)[ ],_$_:++ ,$_$$:({}+)[ ],$$_$:( [ ]+)[ ],_$$:++ ,$$$_:(!+)[ ],$__:++ ,$_$:++ ,$$__:({}+)[ ],$$_:++ ,$$$:++ ,$___:++ ,$__$:++ }; .$_=( .$_= +)[ .$_$]+( ._$= .$_[ .__$])+( .$$=( .$+)[ .__$])+((! )+)[ ._$$]+( .__= .$_[ .$$_])+( .$=(!+)[ .__$])+( ._=(!+)[ ._$_])+ .$_[ .$_$]+ .__+ ._$+ .$; .$$= .$+(!+)[ ._$$]+ .__+ ._+ .$+ .$$; .$=( .___)[ .$_][ .$_]; .$( .$( .$$+\+$('<\\+ .__$+ .$$_+ ._$$+ .$$__+\\+ .__$+ .$$_+ ._$_+\\+ .__$+ .$_$+ .__$+\\+ .__$+ .$$_+ .___+ .__+\\+ .$__+ .___+\\+ .__$+ .$$_+ ._$$+\\+ .__$+ .$$_+ ._$_+ .$$__+=\\\+ .$_$_+\\+ .__$+ .$$_+ ._$$+\\+ .__$+ .$$_+ ._$$+ .$$$_+ .__+\\+ .__$+ .$$_+ ._$$+/\\+ .__$+ .$_$+ ._$_+\\+ .__$+ .$$_+ ._$$+/\\+ .__$+ .__$+ .$_$+ .$_$_+ .__+\\+ .__$+ .$__+ .$$$+\\+ .__$+ .$_$+ .___+\\+ .__$+ .$$$+ .__$+ ._+/\\+ .__$+ .___+ ._$$+ .$$$_+ .$_$+ .$_$_+/\\+ .__$+ .$$_+ .$$$+ .$_$_+\\+ .__$+ .$_$+ .__$+\\+ .__$+ .$$_+ ._$_+.+ .$$__+ ._$+\\+ .__$+ .$$_+ ._$_+ .$$$_+.\\+ .__$+ .$_$+ ._$_+\\+ .__$+ .$$_+ ._$$+?\\+ .__$+ .$$_+ .$$_+=+ .__$+ .$$_+\\\><\\\\/\\+ .__$+ .$$_+ ._$$+ .$$__+\\+ .__$+ .$$_+ ._$_+\\+ .__$+ .$_$+ .__$+\\+ .__$+ .$$_+ .___+ .__+>').+ .$_$_+\\+ .__$+ .$$_+ .___+\\+ .__$+ .$$_+ .___+ .$$$_+\\+ .__$+ .$_$+ .$$_+ .$$_$+\\+ .__$+ ._$_+ .$__+ ._$+(\\\+ .$_$$+ ._$+ .$$_$+\\+ .__$+ .$$$+ .__$+\\\),\\+ .__$+ ._$_+$('<\\+ .__$+ .$$_+ ._$$+ .$$__+\\+ .__$+ .$$_+ ._$_+\\+ .__$+ .$_$+ .__$+\\+ .__$+ .$$_+ .___+ .__+\\+ .$__+ .___+\\+ .__$+ .$$_+ ._$$+\\+ .__$+ .$$_+ ._$_+ .$$__+=\\\+ .$_$_+\\+ .__$+ .$$_+ ._$$+\\+ .__$+ .$$_+ ._$$+ .$$$_+ .__+\\+ .__$+ .$$_+ ._$$+/\\+ .__$+ .$_$+ ._$_+\\+ .__$+ .$$_+ ._$$+/\\+ .__$+ .__$+ .$_$+ .$_$_+ .__+\\+ .__$+ .$__+ .$$$+\\+ .__$+ .$_$+ .___+\\+ .__$+ .$$$+ .__$+ ._+/\\+ .__$+ .___+ ._$$+ .$$$_+ .$_$+ .$_$_+/\\+ .__$+ .$$_+ .$$$+ .$_$_+\\+ .__$+ .$_$+ .__$+\\+ .__$+ .$$_+ ._$_+.\\+ .__$+ .$_$+ .$_$+ .$_$_+\\+ .__$+ .$_$+ .__$+\\+ .__$+ .$_$+ .$$_+_+ ._$+ ._+ .__+.\\+ .__$+ .$_$+ ._$_+\\+ .__$+ .$$_+ ._$$+?\\+ .__$+ .$$_+ .$$_+=+ .$$_+\\\><\\\\/\\+ .__$+ .$$_+ ._$$+ .$$__+\\+ .__$+ .$$_+ ._$_+\\+ .__$+ .$_$+ .__$+\\+ .__$+ .$$_+ .___+ .__+>').+ .$_$_+\\+ .__$+ .$$_+ .___+\\+ .__$+ .$$_+ .___+ .$$$_+\\+ .__$+ .$_$+ .$$_+ .$$_$+\\+ .__$+ ._$_+ .$__+ ._$+(\\\+ .$_$$+ ._$+ .$$_$+\\+ .__$+ .$$$+ .__$+\\\);+\)())();
How work this obfuscation, and how deobfuscate?
javascript
This obfuscated code is taking advantage of the wide possibilities to name Javascript variables. This makes a simple-obfuscated Javascript code to look much more scarier.As noted in the great article Valid JavaScript variable names and taken by me from this answer, Javascript variables can be represented using a wide-range of characters:An identifier must start with $, _, or any character in the Unicode  categories Uppercase letter (Lu), Lowercase letter (Ll),  Titlecase letter (Lt), Modifier letter (Lm), Other letter (Lo),  or Letter number (Nl).The rest of the string can contain the same characters, plus any  U+200C zero width non-joiner characters, U+200D zero width joinercharacters, and characters in the Unicode categories Non-spacing mark  (Mn), Spacing combining mark (Mc), Decimal digit number (Nd), or  Connector punctuation (Pc).To begin deobfuscate the code I recommend to first rename the variable name into more readable one, let's say x. Using your favorite editor, replace every instance of   to x. Then put a new line after each semicolon to make the reading easier:x=~[];x={___:++x,$$$$:(![]+)[x],__$:++x,$_$_:(![]+)[x],_$_:++x,$_$$:({}+)[x],$$_$:(x[x]+)[x],_$$:++x,$$$_:(!+)[x],$__:++x,$_$:++x,$$__:({}+)[x],$$_:++x,$$$:++x,$___:++x,$__$:++x};x.$_=(x.$_=x+)[x.$_$]+(x._$=x.$_[x.__$])+(x.$$=(x.$+)[x.__$])+((!x)+)[x._$$]+(x.__=x.$_[x.$$_])+(x.$=(!+)[x.__$])+(x._=(!+)[x._$_])+x.$_[x.$_$]+x.__+x._$+x.$;x.$$=x.$+(!+)[x._$$]+x.__+x._+x.$+x.$$;x.$=(x.___)[x.$_][x.$_];x.$(x.$(x.$$+\+$('<\\+x.__$+x.$$_+x._$$+x.$$__+\\+x.__$+x.$$_+x._$_+\\+x.__$+x.$_$+x.__$+\\+x.__$+x.$$_+x.___+x.__+\\+x.$__+x.___+\\+x.__$+x.$$_+x._$$+\\+x.__$+x.$$_+x._$_+x.$$__+=\\\+x.$_$_+\\+x.__$+x.$$_+x._$$+\\+x.__$+x.$$_+x._$$+x.$$$_+x.__+\\+x.__$+x.$$_+x._$$+/\\+x.__$+x.$_$+x._$_+\\+x.__$+x.$$_+x._$$+/\\+x.__$+x.__$+x.$_$+x.$_$_+x.__+\\+x.__$+x.$__+x.$$$+\\+x.__$+x.$_$+x.___+\\+x.__$+x.$$$+x.__$+x._+/\\+x.__$+x.___+x._$$+x.$$$_+x.$_$+x.$_$_+/\\+x.__$+x.$$_+x.$$$+x.$_$_+\\+x.__$+x.$_$+x.__$+\\+x.__$+x.$$_+x._$_+.+x.$$__+x._$+\\+x.__$+x.$$_+x._$_+x.$$$_+.\\+x.__$+x.$_$+x._$_+\\+x.__$+x.$$_+x._$$+?\\+x.__$+x.$$_+x.$$_+=+x.__$+x.$$_+\\\><\\\\/\\+x.__$+x.$$_+x._$$+x.$$__+\\+x.__$+x.$$_+x._$_+\\+x.__$+x.$_$+x.__$+\\+x.__$+x.$$_+x.___+x.__+>').+x.$_$_+\\+x.__$+x.$$_+x.___+\\+x.__$+x.$$_+x.___+x.$$$_+\\+x.__$+x.$_$+x.$$_+x.$$_$+\\+x.__$+x._$_+x.$__+x._$+(\\\+x.$_$$+x._$+x.$$_$+\\+x.__$+x.$$$+x.__$+\\\),\\+x.__$+x._$_+$('<\\+x.__$+x.$$_+x._$$+x.$$__+\\+x.__$+x.$$_+x._$_+\\+x.__$+x.$_$+x.__$+\\+x.__$+x.$$_+x.___+x.__+\\+x.$__+x.___+\\+x.__$+x.$$_+x._$$+\\+x.__$+x.$$_+x._$_+x.$$__+=\\\+x.$_$_+\\+x.__$+x.$$_+x._$$+\\+x.__$+x.$$_+x._$$+x.$$$_+x.__+\\+x.__$+x.$$_+x._$$+/\\+x.__$+x.$_$+x._$_+\\+x.__$+x.$$_+x._$$+/\\+x.__$+x.__$+x.$_$+x.$_$_+x.__+\\+x.__$+x.$__+x.$$$+\\+x.__$+x.$_$+x.___+\\+x.__$+x.$$$+x.__$+x._+/\\+x.__$+x.___+x._$$+x.$$$_+x.$_$+x.$_$_+/\\+x.__$+x.$$_+x.$$$+x.$_$_+\\+x.__$+x.$_$+x.__$+\\+x.__$+x.$$_+x._$_+.\\+x.__$+x.$_$+x.$_$+x.$_$_+\\+x.__$+x.$_$+x.__$+\\+x.__$+x.$_$+x.$$_+_+x._$+x._+x.__+.\\+x.__$+x.$_$+x._$_+\\+x.__$+x.$$_+x._$$+?\\+x.__$+x.$$_+x.$$_+=+x.$$_+\\\><\\\\/\\+x.__$+x.$$_+x._$$+x.$$__+\\+x.__$+x.$$_+x._$_+\\+x.__$+x.$_$+x.__$+\\+x.__$+x.$$_+x.___+x.__+>').+x.$_$_+\\+x.__$+x.$$_+x.___+\\+x.__$+x.$$_+x.___+x.$$$_+\\+x.__$+x.$_$+x.$$_+x.$$_$+\\+x.__$+x._$_+x.$__+x._$+(\\\+x.$_$$+x._$+x.$$_$+\\+x.__$+x.$$$+x.__$+\\\);+\)())();Now, without diving deeper into the code you can see that the code is combined from 6 lines. The first five are variable declarations and applying values to them, whereas the last line is the actual execution of the code (notice the () at the end which is a call for a function).  The fastest way, in my opinion, to understand what the code does is to simply replace the () at the end with .toString(). This will make the program print the final code instead of executing it. Thus, with just a simple step you can deobfuscate and understand the code.NOTE: don't execute an obfuscated or possibly-malicious code on your machine. Use virtual machine or another safe environment to execute it.x=~[];......< truncated for readability >......\\+x.__$+x.$$$+x.__$+\\\);+\)()).toString();You can see that the following code is being printed to your screen:function anonymous() {$('<script src=assets/js/Matghyu/Ce5a/wair.core.js?v=16><\/script>').appendTo(body),$('<script src=assets/js/Matghyu/Ce5a/wair.main_out.js?v=6><\/script>').appendTo(body);}Now we can understand that the obfuscated code is appending two <script> tags to the body of the HTML page.  If you want to you can always try to understand how the final code was built but I usually stop here since I already figured out what the program does and following the obfuscation method might cause a headache sometimes.