Upgrade to Pro — share decks privately, control downloads, hide ads and more …

HH.js – September 2019

Martin Kleppe
September 23, 2019

HH.js – September 2019

How to write JavaScript with 6, 5, … 2, 1 different characters?

Martin Kleppe

September 23, 2019
Tweet

More Decks by Martin Kleppe

Other Decks in Technology

Transcript

  1. Ubilabs, Hamburg
    aem1k.com
    @aemkei
    Martin Kleppe
    make difficult to understand
    "obfuscare" = "to darken"
    from Latin
    Obfuscation
    +-------------+
    | +---------+ |
    | | +-----+ | |
    | | | +-+ | | |
    | | + | + | | |
    | +---+---+ | |
    +---+ | +---+ |
    +-------+

    View full-size slide

  2. Ubilabs, Hamburg
    aem1k.com
    @aemkei
    Martin Kleppe
    make difficult to understand
    "obfuscare" = "to darken"
    from Latin
    Obfuscation
    +-------------+
    | +---------+ |
    | | +-----+ | |
    | | | +-+ | | |
    | | + | + | | |
    | +---+---+ | |
    +---+ | +---+ |
    +-------+

    View full-size slide

  3. +-------------+
    | +---------+ |
    | | +-----+ | |
    | | | +-+ | | |
    | | + | + | | |
    | +---+---+ | |
    +---+ | +---+ |
    +-------+
    Obfuscation

    View full-size slide

  4. "… is the deliberate act of
    creating source code that is
    difficult for humans
    to understand."

    View full-size slide

  5. function E(a,b,d){this.props=a;this.context=b;this.refs=D;this.updater=d||C
    }E.prototype.isReactComponent={};E.prototype.setState=function(a,b){"object
    "!==typeof a&&"function"!==typeof a&&null!=a?B("85"):void 0;this.updater.en
    queueSetState(this,a,b,"setState")};E.prototype.forceUpdate=function(a){thi
    s.updater.enqueueForceUpdate(this,a,"forceUpdate")};function F(){}F.prototy
    pe=E.prototype;function G(a,b,d){this.props=a;this.context=b;this.refs=D;th
    is.updater=d||C}var H=G.prototype=new F;H.constructor=G;k(H,E.prototype);H.
    isPureReactComponent=!0;var I={current:null},J={current:null},K=Object.prot
    otype.hasOwnProperty,L={key:!0,ref:!0,__self:!0,__source:!0};function M(a,b
    ,d){var c=void 0,e={},g=null,h=null;if(null!=b)for(c in void 0!==b.ref&&(h=
    b.ref),void 0!==b.key&&(g=""+b.key),b)K.call(b,c)&&!L.hasOwnProperty(c)&&(e
    [c]=b[c]);var f=arguments.length-2;if(1===f)e.children=d;else if(1ar l=Array(f),m=0;mrops)for(c in f=a.defaultProps,f)void 0===e[c]&&(e[c]=f[c]);return{$$typeof
    :p,type:a,key:g,ref:h,props:e,_owner:J.current}}function da(a,b){return{$$t
    ypeof:p,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function
    N(a){return"object"===typeof a&&null!==a&&a.$$typeof===p}function escape(a)

    View full-size slide

  6. S="\40\n";M="map";i=991;for(z
    = [ ]
    ; i ; )z[--i]=i%30? 8
    : S [ 1 ] ;
    F=d=> [30,1,-30 , - 1
    ] [ M ] (
    ( f,g,h )=>S[0]= d + 2
    * h[3&g+i]]&&(z[f]=z[(d +
    f ) / 2
    ] = S [ 0],i--,F( f
    ) ) ) ,
    F(32);z+=S[1]//aem1k.com/maze

    View full-size slide

  7. ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,
    ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , , , ,8,
    ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8,8,8, ,8,
    ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, , , ,8,
    ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8,
    ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, , , ,8,
    ,8, ,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8,8,8,8,8, ,8,
    ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, ,8, , , ,8,
    ,8,8,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8, ,8,8,8,
    ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, ,8, , , ,8,
    ,8, ,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8,8,8, ,8,8,8, ,8,
    ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, , , , , ,8, , , ,8,
    ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8, ,8,8,8,
    ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, ,8, , , ,8, , , ,8,
    ,8, ,8,8,8, ,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8, ,8,8,8, ,8,
    ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8,
    ,8,8,8, ,8,8,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8,8,8, ,8,8,8,
    ,8, , , ,8, , , ,8, , , ,8, , , , , , , , , , , ,8, , , ,8,
    ,8, ,8,8,8, ,8,8,8, ,8, ,8, ,8,8,8,8,8,8,8,8,8, ,8,8,8, ,8,
    ,8, , , ,8, , , ,8, ,8, , , ,8, , , , , ,8, , , ,8, , , ,8,
    ,8,8,8, ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8, ,8,8,8,
    ,8, , , ,8, , , ,8, ,8, , , , , , , ,8, ,8, , , ,8, , , ,8,
    ,8, ,8,8,8, ,8,8,8, ,8,8,8,8,8, ,8, ,8, ,8,8,8, ,8,8,8, ,8,
    ,8, , , ,8, , , ,8, , , , , , , ,8, , , , , ,8, ,8, , , ,8,
    ,8,8,8, ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8, ,8,8,8,
    ,8, , , ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, ,8, , , ,8,
    ,8, ,8,8,8, ,8,8,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,8,8, ,8,
    ,8, , , ,8, , , , , , , ,8, , , ,8, , , ,8, , , , , ,8, ,8,
    ,8,8,8, ,8, ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8, ,8,
    ,8, , , ,8, ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, ,8,
    ,8, ,8,8,8,8,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8, ,8,
    ,8, , , , , , , ,8, , , ,8, , , ,8, , , ,8, , , ,8, , , ,8,
    ,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,8,

    View full-size slide

  8. _____ _____ _____ __ __ _____ _____ ___ _____ __ ___ __ ___
    / _ \ ___ \ ___| | | / ___/ __ \ / _ \_ _| | / _ \| \ | |
    | | | | |_/ / |_ | | | \`--.| / \// /_\ \| | | || | | | \| |
    | | | | ___ \ _| | | | |`--. \ | | _|| | | || | | | . ` |
    \ \_/ / |_/ / || \_/ /\__/ / \__/\| | | || | | |\ \_/ / |\ |
    \___/\____/__| \___/ \____/ \____/\_||_/\_/ |_| \___/\_| \_/

    View full-size slide

  9. _____ _____ _____ __ __ _____ _____ ___ _____ __ ___ __ ___
    / _ \ ___ \ ___| | | / ___/ __ \ / _ \_ _| | / _ \| \ | |
    | | | | |_/ / |_ | | | \ `--.| / \// /_\ \| | | || | | | \| |
    | | | | ___ \ _| | | | |`--. \ | | _ || | | || | | | . ` |
    \ \_/ / |_/ / | | \_/ /\__/ / \__/\| | | || | | |\ \_/ / |\ |
    \___/\____/__| \___/\____/ \____/\_| |_/\_/ |_| \___/\_| \_/

    View full-size slide

  10. _____ ______ _____ _ _ _____ _____ _______ __
    / ____| ____/ ___ | | | | __ \|_ _|_ _\ \ / /
    | (___ | |__ | | `-| | | | |__) | | | | | \ \_/ /
    \___ \| __|| | | | | | _ / | | | | \ /
    ,--,_) | |___| |__,-| |__| | | \ \ _| |_ | | | |
    |_____/|______\_____|\____/|_| \_\_____| |_| |___|

    View full-size slide

  11. _____ ______ _____ _ _ _____ _____ _______ __
    / ____| ____/ ___ | | | | __ \|_ _|_ _\ \ / /
    | (___ | |__ | | `-| | | | |__) | | | | | \ \_/ /
    \___ \| __|| | | | | | _ / | | | | \ /
    ,--,_) | |___| |__,-| |__| | | \ \ _| |_ | | | |
    |_____/|______\_____|\____/|_| \_\_____| |_| |___|
    __________________________________________________________
    |__________________________________________________________|
    __________________________________________________________
    |__________________________________________________________|

    View full-size slide

  12. ███████╗██╗ ██╗███╗ ██╗
    ██╔════╝██║ ██║████╗ ██║
    █████╗ ██║ ██║██╔██╗ ██║
    ██╔══╝ ██║ ██║██║╚██╗██║
    ██║ ╚██████╔╝██║ ╚████║
    ╚═╝ ╚═════╝ ╚═╝ ╚═══╝

    View full-size slide

  13. Aurebesh
    Aurebesh

    View full-size slide

  14. č ī ž ķ ā ū ģ ļ d ž

    View full-size slide

  15. č='',ī=!č+č,ž=!ī+č,ķ=č+
    {},ā=ī[č++],ū=ī[ģ=č],ļ=+
    +ģ+č,dž=ķ[ģ+ļ],ī[dž+=ķ[č
    ]+(ī.ž+ķ)[č]+ž[ļ]+ā+ū+ī[
    ģ]+dž+ā+ķ[č]+ū][dž](ž[č]
    +ž[ģ]+ī[ļ]+ū+ā+"(č)")()

    View full-size slide

  16. π='',β=!π+π,ε=!β+π,γ=π+
    {},µ=β[π++],τ=β[φ=π],θ=+
    +φ+π,λ=γ[φ+θ],β[λ+=γ[π]+
    (β.ε+γ)[π]+ε[θ]+µ+τ+β[φ]
    +λ+µ+γ[π]+τ][λ](ε[π]+ε[φ]
    +β[θ]+τ+µ+"(π)")``

    View full-size slide

  17. ᚦ='',ᚢ=!ᚦ+ᚦ,ᚠ=!ᚢ+ᚦ,ᚻ=ᚦ+
    {},ᛉ=ᚢ[ᚦ++],ᛊ=ᚢ[ᛇ=ᚦ],ᛟ=+
    +ᛇ+ᚦ,ᛞ=ᚻ[ᛇ+ᛟ],ᚢ[ᛞ+=ᚻ[ᚦ
    ] + ( ᚢ . ᚠ + ᚻ ) [ ᚦ ] + ᚠ [ ᛟ ]
    +ᛉ+ᛊ+ᚢ[ᛇ]+ᛞ+ᛉ+ᚻ[ᚦ]+ᛊ]
    [ ᛞ ] ( ᚠ [ ᚦ ] + ᚠ [ ᛇ ] + ᚢ [ ᛟ ]
    +ᛊ+ᛉ+"(ᚦ)")()

    View full-size slide

  18. ='', =! + , =! + , = +
    {}, = [ ++], = [ = ], =+
    + + ,బ= [ + ], [బ+= [ ]+
    ( . + )[ ]+ [ ]+ + + [ ]
    +బ+ + [ ]+ ][బ]( [ ]+ [ ]
    + [ ]+ + +"( )")()

    View full-size slide

  19. Ä='',ja=!Ä+Ä,nein=!ja+Ä,ö=Ä+{},Ü=ja[Ä+
    +],sch=ja[Schnitzel=Ä],Bier=+
    +Schnitzel+Ä,ß=ö[Schnitzel+Bier],ja[ß+
    =ö[Ä]+(ja.nein+ö)[Ä]+nein[Bier]
    +Ü+sch+ja[Schnitzel]+ß+Ü+ö[Ä]+sch][ß]
    (nein[Ä]+nein[Schnitzel]+ja[Bier]
    +sch+Ü+"(Ä)")``

    View full-size slide

  20. ロ='',コ=!ロ+ロ,Y=!コ+ロ,Ƙ
    =ロ+{},ᗐ=コ[ロ++],Ξ=コ[Δ=
    ロ],ᐳ=++Δ+ロ,Ɩ=Ƙ[Δ+ᐳ],コ
    [Ɩ+=Ƙ[ロ]+(コ.Y+Ƙ)[ロ]+Y[
    ᐳ]+ᗐ+Ξ+コ[Δ]+Ɩ+ᗐ+Ƙ[ロ]+
    Ξ][Ɩ](Y[ロ]+Y[Δ]+コ[ᐳ]+Ξ
    +ᗐ+"(ロ)")``

    View full-size slide

  21. _='',__=!_+_,___=!__+_,____=_+{},_____=__[_+
    +],______=__[_______=_],________=++_______+
    _,_________=____[_______+________],__[_________+=
    ____[_]+(__.___+____)[_]+___[________]+_____+
    ______+__[_______]+_________+_____+____[_]
    +______][_________](___[_]+___[_______]+
    __[________]+______+_____+'(_)')()

    View full-size slide

  22. ⽌='',⽌⽌=!⽌+⽌,⽌⽌⽌=!⽌⽌+⽌,⽌⽌⽌⽌=⽌+{},⽌⽌⽌
    ⽌⽌=⽌⽌[⽌++],⽌⽌⽌⽌⽌⽌=⽌⽌[⽌⽌⽌⽌⽌⽌⽌=⽌],
    ⽌⽌⽌⽌⽌⽌⽌⽌=++⽌⽌⽌⽌⽌⽌⽌+⽌,⽌⽌⽌⽌⽌⽌⽌
    ⽌⽌=⽌⽌⽌⽌[⽌⽌⽌⽌⽌⽌⽌+⽌⽌⽌⽌⽌⽌⽌⽌],⽌⽌[⽌
    ⽌⽌⽌⽌⽌⽌⽌⽌+=⽌⽌⽌⽌[⽌]+(⽌⽌.⽌⽌⽌+⽌⽌⽌⽌)
    [⽌]+⽌⽌⽌[⽌⽌⽌⽌⽌⽌⽌⽌]+⽌⽌⽌⽌⽌+⽌⽌⽌⽌⽌⽌
    +⽌⽌[⽌⽌⽌⽌⽌⽌⽌]+⽌⽌⽌⽌⽌⽌⽌⽌⽌+⽌⽌⽌⽌⽌
    +⽌⽌⽌⽌[⽌]+⽌⽌⽌⽌⽌⽌][⽌⽌⽌⽌⽌⽌⽌⽌⽌](⽌⽌⽌
    [⽌]+⽌⽌⽌[⽌⽌⽌⽌⽌⽌⽌]+⽌⽌[⽌⽌⽌⽌⽌⽌⽌⽌]+⽌⽌
    ⽌⽌⽌⽌+⽌⽌⽌⽌⽌+"(⽌)")``

    View full-size slide

  23. How it works

    View full-size slide

  24. A='',B=!A+A,C=!B+A,D=A+
    {},E=B[A++],F=B[G=A],H=+
    +G+A,I=D[G+H],B[I+=D[A]+
    (B.C+D)[A]+C[H]+E+F+B[G]
    +I+E+D[A]+F][I](C[A]+C[G]
    +B[H]+F+E+"(A)")``

    View full-size slide

  25. A='',B=!A+A,C=!B+A,D=A+
    {},E=B[A++],F=B[G=A],H=+
    +G+A,I=D[G+H],B[I+=D[A]+
    (B.C+D)[A]+C[H]+E+F+B[G]
    +I+E+D[A]+F][I](C[A]+C[G]
    +B[H]+F+E+"(A)")``

    View full-size slide

  26. A = '' // empty string
    B = !A + A // "true"
    C = !B + A // "false"
    D = A + {} // "[object Object]"
    E = B[A++] // "t" = "true"[0]
    F = B[G = A] // "r" = "true"[1]
    H = ++G + A // 2, 3
    I = D[G + H] // "c"

    View full-size slide

  27. I + // "c"
    D[A] + // "o" = "object"[0]
    (B.C+D)[A] + // "n" = "undefined"[1]
    C[H] + // "s" = "false"[2]
    E + // "t"
    F + // "r"
    B[G] + // "u" = "true"[2]
    I + // "c" = "[object]"[5]
    E + // "t"
    D[A] + // "o" = "[object]"[1]
    F // "r"

    View full-size slide

  28. C[A] + // "a"
    C[G] + // "l"
    B[H] + // "e"
    F + // "r"
    E + // "t"
    "(A)" // "(1)"

    View full-size slide

  29. aem1k.com/aurebesh.js

    View full-size slide

  30. [][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])
    [+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]
    +[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+
    []+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![
    ]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+
    !+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[
    ]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])
    [+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]
    +[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+
    (!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!!
    []+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![
    ]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]
    ]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+
    []+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!!
    []+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][
    []])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!
    +[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])() // alert(1) // 1227 bytes

    View full-size slide

  31. ![] => false
    !![] => true

    View full-size slide

  32. ![] + "" => "false"
    !![] + "" => "true"

    View full-size slide

  33. "true"[0] => "t"
    "true"[1] => "r"
    "true"[2] => "u"
    "true"[3] => "e"

    View full-size slide

  34. "false" [1]
    "false" [2]
    "true" [3]
    "true" [1]
    "true" [0]

    View full-size slide

  35. f a l s e
    f a l s e
    t r u e
    t r u e
    t r u e

    View full-size slide

  36. f a l s e
    f a l s e
    t r u e
    t r u e
    t r u e

    View full-size slide

  37. f a l s e
    o b j e c t
    t r u e
    f a l s e
    o b j e c t
    o b j e c t
    f a l s e
    t r u e

    View full-size slide

  38. o b j e c t
    o b j e c t
    u n d e f i n e d
    f a l s e
    t r u e
    t r u e
    t r u e
    o b j e c t
    t r u e
    o b j e c t
    t r u e

    View full-size slide

  39. []["constructor"]["constructor"]("alert(1)")()

    View full-size slide

  40. []["constructor"]["constructor"]("alert(1)")()

    View full-size slide

  41. function["constructor"]("alert(1)")()

    View full-size slide

  42. function["constructor"]("alert(1)")()

    View full-size slide

  43. Function("alert(1)")()

    View full-size slide

  44. Function("alert(1)")()

    View full-size slide

  45. eval("alert(1)")

    View full-size slide

  46. _______ ___ ___ ___ ___ ___ ___ _______ _______ ______ ___ ___
    / __| V | V | V | ___|_ _| __ \ V |
    |__ |\ /| | | ___| | | | <\ /
    |_______/ |___| |__|_|__|__|_|__|_______| |___| |___|__| |___|
    |__ \ | | | | | | | | | ___| | | | | | | |
    | __|/ \| | | ___|_| |_| __ \
    \_______|___|___|___A___|___A___|_______|_______|_____ /___A___|

    View full-size slide

  47. {(.0-{}-0.)} xXXx =wYYw=
    ([]+!!+[]) [0.**.0] +[([])]+
    (''+!!+'') [0-~+!!+~-0] +([]+[]+[])+
    (8+{}+8) [0|8.**.8|0] +([]||[])+
    (""+(0==0)+"") [0.**.0] +[]+''+[]+
    (0+{}+0) [8-!!-8] +(''||'')+
    ("("+[]+")") [0+~~+0] +""+''+""+
    (["xXXx"]) [0+~~+0] +([""])+
    (')YY(') [""+~~+""] //-!!-\\

    View full-size slide

  48. { }
    "false"
    "false"
    "object"
    "true"
    "object"
    "()"
    ["xXXx"]
    ")("
    =wYYw=
    +""+
    +""+
    +""+
    +""+
    +""+
    +""+
    +""+
    //-!!-\\
    xXXx
    [1]
    [2]
    [3]
    [1]
    [5]
    [0]
    [0]
    [0]

    View full-size slide

  49. "a"+
    "l"+
    "e"+
    "r"+
    "t"+
    "("+
    "xXXx"+
    ")"+

    View full-size slide

  50. aem1k.com/symmetry

    View full-size slide

  51. [$$=[+[]]]+[$$[++[[]][+[]]]=+[]]+[$$=[$$+[]][+[]][++[[]][+[]]]]+[$$$=[$[[[]+[][+[]]][+[]][++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+[[]+[][+[]]][+[]][++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[[]+[][+
    []]][+[]][++[[]][+[]]]+[[]+[][+[]]][+[]][++[++[[]][+[]]][+[]]]]+[]][+[]]]+[$$$$=[$[[[]+[][+[]]][+[]][++[++[[]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+
    []]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]
    [+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[++[++[++[[]][+[]]][+[]]]
    [+[]]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[[]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++
    [++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]][[[]+[][+[]]][+[]][++[++[[]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+
    []]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[[]]
    [+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]]]]][+
    []][+[]]]+[$$$$$=$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[++[[]][+[]]]+$$$[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$
    [+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[[]][+
    []]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[[]]
    [+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[+[]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]
    [+[]]]+[++[[]][+[]]]]]]+[$$$$[$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[+[]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[[]][+[]]]+$$$[+[[++[[]]
    [+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++
    [[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[++[++[++[[]][+[]]][+[]]][+[]]]+$$$[++[[]][+[]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[+
    +[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[[]][+[]]]+$$$[++[++[++[++[[]][+[]]][+
    []]][+[]]][+[]]]][$$$[+[[++[[]][+[]]]+[++[[]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++
    [++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[[]+[][+[]]][+[]][++[++[[]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[[]][+
    []]][+[]]][+[]]][+[]]][+[]]]]]][[[]+[][+[]]][+[]][++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[[]+[][+[]]][+[]][++[[]][+[]]]+[[]+[][+[]]][+[]][++[[]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+
    []]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++
    [++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+
    [[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[+[]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+
    []]][+[]]][+[]]][+[]]][+[]]]+[++[[]][+[]]]]]]+=$$$$[$$$$$][+[]]+[[]+[][+[]]][+[]][++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++
    [++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$
    $$[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[+
    +[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[++[++[[]][+[]]][+[]]][+[]]]+$$$[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]
    [+[]]]+[[]+[][+[]]][+[]][++[[]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++
    [++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$$[$$$$$][++[++[++[++[++[++[++
    [[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$$[$$$$$][++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[+
    +[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+
    []]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[[]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$[$$$[++[++[++[[]][+[]]][+[]]][+[]]]+$$$[++[++[++[++[++[++[[]][+
    []]][+[]]][+[]]][+[]]][+[]]][+[]]]+[[]+[][+[]]][+[]][++[[]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[+
    [[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[[]][+[]]]+$$$[++[++[++[[]][+[]]][+[]]][+[]]]+$$$[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]]
    [+[]]][+[]]][+[]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]][[[]+[][+[]]][+[]][++[[]][+[]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+
    []]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[+
    +[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[++[++
    [++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+
    []]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[[]][+[]]][+[]]]+[+[]]]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]]
    [+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[[]][+[]]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+
    [++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[[]][+[]]][+[]]]+[+[]]]]+$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[[]+[][+[]]][+[]][++[++[[]][+[]]][+[]]]+$$$[+[[++
    [[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+[[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+
    []]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++[[]][+[]]]+[+[]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++
    [[]][+[]]]+[+[]]+[++[[]][+[]]]]][+[]]+$$+[+[[++[[]][+[]]]+[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++[[]][+[]]]+[++[[]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]
    [+[]]]]][+[]]+$$+[+[[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+[+[]]]][+[]]+$$+[+[[++[++[++[[]][+[]]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++[++[++[[]][+[]]][+[]]][+[]]]+[++[++[+
    +[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++[[]][+[]]]+[+[]]+[++[++[[]][+[]]][+[]]]]][+[]]+$$+[+[[++[[]][+[]]]+[+[]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++
    [[]][+[]]]+[++[[]][+[]]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++[[]][+[]]]+[+[]]+[++[[]][+[]]]]][+[]]+$$+[+[[++[++[++[[]][+[]]][+[]]][+[]]]+[++[++[++[++
    [[]][+[]]][+[]]][+[]]][+[]]]]][+[]]+$$+[+[[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+[++[[]][+[]]]]][+[]]][+[]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[+[]]]]+$$$[+[[++[++[++[++[++[[]][+[]]]
    [+[]]][+[]]][+[]]][+[]]]+[+[]]]]+$$$$[$$$$$][++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$$[$$$$$][+[[++[[]][+[]]]+[++[[]][+[]]]+[+[]]]]]

    View full-size slide

  52. ]]]]+$$$[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]
    ]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[
    [++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[++[++[++[++[[]][+
    ]][+[]]][+[]]][+[]]]+$$$[++[++[++[[]][+[]]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[
    ]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[
    [+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+
    [++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]][[[]+[][+[]]][+[]][++[++[[]][+[]]][+[]]]+$$$[+[[++[++[++[++[++
    ++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]
    [+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]
    ++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]
    ++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]]]]]
    +[]]]+[$$$$$=$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[++[[]][+[]]]+$$$[++[++[
    ][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[
    ]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][
    +[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]
    [+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]
    +[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[+
    ++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[+[]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+
    ]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[[]][+[]]]]]]+[$$$$[$$$[++[++[++[++[+
    [+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[+[]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]
    [][+[]]][+[]][++[[]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++
    ]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]
    [+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[

    View full-size slide

  53. 0 === +[]
    1 === ++[[]][+[]]
    2 === ++[++[[]][+[]]][+[]]

    View full-size slide

  54. undefined === [][+[]]
    "undefined" === [][+[]] + []

    View full-size slide

  55. `n` === "undefined"[1]
    `n` === ["undefined"][0][1]
    `n` === [[]+[][+[]]][+[]][++[[]][+[]]]

    View full-size slide

  56. $.find === $["f"+"i"+"n"+"d"]

    View full-size slide

  57. String($.find) === $.find+"" === $.find+[]

    View full-size slide

  58. console.log($.find+[]);
    "function Sizzle( selector, context, results, seed ) {...

    View full-size slide

  59. "alert(1)" === "a"+"l"+"e"+"r"+"t"+"("+"1"+")"

    View full-size slide

  60. document.body === 

    $.datepicker.dpDiv[0].ownerDocument.body

    View full-size slide

  61. window === 

    $.Widget._childConstructors[7]._proto.options.position.of

    View full-size slide

  62. document.body.innerHTML += '';

    View full-size slide

  63. [+[]]][+[]]]]]+$$$[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]
    [+[]]][+[]]]]]+$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]
    +[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++
    ++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[++[++[++[[]][+[]]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[++[
    ++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]
    [+[]]][+[]]]+[++[++[[]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]
    [++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]][[[]+[][+[]]][+[]][++[++[[]][+[]]]
    +$$$[+[[++[++[++[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[
    ++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[+
    [+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[++[++
    []][+[]]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[
    []][+[]]][+[]]][+[]]][+[]]][+[]]]]]]][+[]][+[]]]+[$$$$$=$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][
    [+[]]][+[]]]+$$$[++[[]][+[]]]+$$$[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]+$$$[+[[++[[]][+[]]]+[++[++
    []][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]
    [[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]
    [++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[
    ++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$
    [++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][
    +[+[]]]]+$$$[+[[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++[++[++[++[[]][+[]]][+[]]][
    [+[]]][+[]]][+[]]]+[++[[]][+[]]]]]]+[$$$$[$$$[++[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]][+[
    [+[[++[[]][+[]]]+[+[]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+[[]+[][+[]]][+[]][++[[]][+[]]]+$$$
    [[]][+[]]]+[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]]]]+$$$[+[[++[++[[]][+[]]][+[]]]+[++[++[++[++[[]][
    [+[]]][+[]]][+[]]]]]+$$$[+[[++[[]][+[]]]+[++[++[++[++[++[[]][+[]]][+[]]][+[]]][+[]]][+[]]]+[++[++[++

    View full-size slide

  64. aem1k.com/five

    View full-size slide

  65. [][[][[]] ][[]][[]][[ ][[]] ][[][[]]][[ ][[]]][[]
    [[]]][[]] [[]][[]][[] [[]]] [[]][[]][[] [[]]][[][
    []]][ []][[]][[][ []]][ [][[] ]][[] ][[][
    []]][ []][[ ]][[] ][[]] [[][[
    ]]][[ ][[]]][[]][ [][[] ]][[] ][[]] [[]][
    [][[] ]][[]][[][[ ]]][[ ][[]] ][[][
    []]][ []][[ ][[]] ][[]] [[][[ ]]][[
    ][[]] ][[][ []]][ [][[] ]][[] ][[]] [[][[
    ]]][[ ][[]] ][[][ []]][ []][[ ][[]] ][[]]
    [[][[]]][ []][[][[]]] [[][[ ]]][[[]]][[ ][[]]][[]
    [[]]][[][ []]][[][[]] ][[][ []]][[][[]] ][[][[]]]

    View full-size slide

  66. [C=B=[]].__proto__[C.B]=T=new Proxy(B,{get:(_,N)=>(B+=+!N,B[6]&&

    (+B||eval(C),C+=String.fromCharCode(parseInt(B,2)),B=[]),T)});
    // later in you code …
    [][[][[]]][[]][[]][[][[]]][[][[]]][[][[]]][[][[]]][[]][[]][[]][[][[]]]
    [[]][[]][[][[]]][[][[]]][[]][[]][[][[]]][[][[]]][[]][[][[]]][[]][[]][[
    ]][[]][[][[]]][[][[]]][[]][[][[]]][[]][[]][[]][[][[]]][[]][[][[]]][[][
    []]][[][[]]][[]][[][[]]][[]][[][[]]][[][[]]][[][[]]][[][[]]][[]][[][[]
    ]][[][[]]][[][[]]][[]][[][[]]][[]][[][[]]][[]][[]][[][[]]][[]][[]][[]]
    [[]][[]][[][[]]][[][[]]][[]][[]][[]][[]][[][[]]][[]][[][[]]][[][[]]][[
    ]][[]][[]][[][[]]][[][[]]][[][[]]][[]][[]][[]][[][[]]][[]][[]][[]][[][
    []]][[]][[][[]]][[]][[][[]]][[][[]]][[][[]]][[]][[][[]]][[][[]]][[]][[
    ][[]]][[]][[][[]]][[][[]]][[]][[][[]]][[][[]]][[][[]]][[][[]]][[][[]]]
    [[][[]]][[][[]]]

    View full-size slide

  67. code = 'alert';

    View full-size slide

  68. characters = code.split('')
    // ["a", "l", "e", "r", "t"]

    View full-size slide

  69. ascii = characters.map(c => c.charCodeAt(0));
    // [97, 108, 101, 114, 116]

    View full-size slide

  70. binary = ascii.map(c => c.toString(2));
    // ["1100001", "1101100", "1100101", "1110010", "1110100"]

    View full-size slide

  71. encoded = binary.join('');
    // "11000011101100110010111100101110100"

    View full-size slide

  72. binary = encoded.match(/.{7}/g);
    // ["1100001", "1101100", "1100101", "1110010", "1110100"]

    View full-size slide

  73. ascii = binary.map(b => parseInt(b, 2));
    // [97, 108, 101, 114, 116]

    View full-size slide

  74. characters = ascii.map(String.fromCharCode);
    // ["a", "l", "e", "r", "t"]

    View full-size slide

  75. code = characters.join('');
    // "alert"

    View full-size slide

  76. Get Rid of "Quotes"

    View full-size slide

  77. .x - Property Accessors Dot Notation
    x`` - Tagged Template Literals
    [] - Arrays and Bracket Notation

    View full-size slide

  78. __.__._._._._.__ = "1100001"

    View full-size slide

  79. ___ // Proxy entry
    .__.__._._._._.__ // "a"
    .__.__._.__.__._._ // "l"
    .__.__._._.__._.__ // "e"
    .__.__.__._._.__._ // "r"
    .__.__.__._.__._._ // "t"
    ._.__._.__._._._ // "("
    ._.__.__._._._.__ // "1"
    ._.__._.__._._.__ // ")"
    .___ // eval

    View full-size slide

  80. // obfuscator
    C=B='',_=([l])=>(B+=+!!l,B[6]&&(+B||eval(C),C
    +=String.fromCharCode(parseInt(B,2)),B=[]),_)
    _
    `_``_``````````_``_``_````_``_`````
    `_``_``````_````_``_``_``_``````_```
    `_``_``_````_````````_````_```````
    ```_``_````````_````_````_``````_`
    ``````````````

    View full-size slide

  81. String([]) === ''
    String([][[]]) === 'undefined'

    View full-size slide

  82. [C=B=[]].__proto__[C.B]=T=new Proxy(B,{get:(_,N)=>(B+=+!N,B[6]

    &&(+B||eval(C),C+=String.fromCharCode(parseInt(B,2)),B=[]),T)})

    View full-size slide

  83. [][[][[]]]
    [[]][[]][[][[]]][[][[]]][[][[]]][[][[]]][[]] // a
    [[]][[]][[][[]]][[]][[]][[][[]]][[][[]]] // l
    [[]][[]][[][[]]][[][[]]][[]][[][[]]][[]] // e
    [[]][[]][[]][[][[]]][[][[]]][[]][[][[]]] // r
    [[]][[]][[]][[][[]]][[]][[][[]]][[][[]]] // t
    [[][[]]][[]][[][[]]][[]][[][[]]][[][[]]][[][[]]] // (
    [[][[]]][[]][[]][[][[]]][[][[]]][[][[]]][[]] // 1
    [[][[]]][[]][[][[]]][[]][[][[]]][[][[]]][[]] // )
    [[][[]]][[][[]]][[][[]]][[][[]]][[][[]]][[][[]]][[][[]]]

    View full-size slide

  84. ꝏ - Only One!

    View full-size slide

  85. with (ꝏ())
    // encoded `$()`
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo
    ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooo ...
    // the statement above has a length of 594,985 characters
    function ꝏ(){
    ...

    View full-size slide

  86. 1. convert length to binary
    2. split into 7-bit groups
    3. encode as ASCII text
    4. evaluate

    View full-size slide

  87. 10010001010000101001

    View full-size slide

  88. ['0100100', '0101000', '0101001']

    View full-size slide

  89. [ 36, 40, 41 ]

    View full-size slide

  90. ['$', '(', ')']

    View full-size slide

  91. new Proxy({}, {
    has (target, name) {
    decode(name);
    return true;
    }
    });

    View full-size slide

  92. length = name .length;
    binary = length .toString(2);
    pairs = binary .match(/(\d{7})/g);
    ascii = pairs .map(b => parseInt(b, 2));
    chars = ascii .map(c => String.fromCharCode(c));
    code = chars .join('');
    eval(code);

    View full-size slide

  93. aem1k.com/oo

    View full-size slide

  94. ___ ___ ______ ___ ___
    |\ \ / / __ \|\ \|\ \
    \ \ \/ /|\ \|\ \ \ \\\ \
    \ \ / | \ \\\ \ \ \\\ \
    \ / / / \ \ \\\ \ \ \\\ \
    __/ / / \ \_______\ \_______\
    |\___/ / \|_______|\|_______|
    \|___|/

    View full-size slide

  95. ::::::::::: ::: ::: ::: :::: ::: ::: :::
    :+: :+: :+: :+: :+: :+:+: :+: :+: :+:
    +:+ +:+ +:+ +:+ +:+ :+:+:+ +:+ +:+ +:+
    +#+ +#++:++#++ +#++:++#++: +#+ +:+ +#+ +#++:+
    +#+ +#+ +#+ +#+ +#+ +#+ +#+#+# +#+ +#+
    #+# #+# #+# #+# #+# #+# #+#+# #+# #+#

    View full-size slide

  96. __
    _/\ \
    /' \ \ \
    __ __ ___ ___ /\_, \ \ \/'\
    /'__`\ /'__`\/' __` __`\/_/\ \ \ , <
    ___ /\ \L\.\.\ __//\ \/\ \/\ \ \ \ \ \ \\`\____
    /\___\ \ \__/.\_\\____\ \_\ \_\ \_\ \ \_\ \_\ \____\
    \/___/ \/__/\/_//____/\/_/\/_/\/_/ \/_/\/_/\/____/
    @aemkei @ubilabs

    View full-size slide