jsobfu 0.4.1 → 0.4.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02ab4e590ee0515b73b6718ba4838be52ad7ec6c
4
- data.tar.gz: 2f5bb34601d29758f1daa867b375fb71187c20ea
3
+ metadata.gz: 550f2de308e84c1e85fc9f6a8f5d18534d43acf5
4
+ data.tar.gz: a7dc9acd17fd65bb7a16416aa05eca4b37de8eec
5
5
  SHA512:
6
- metadata.gz: 0a6084669d93cddfed800d737ecb36b407722bdef8bed16cbedafd083e56f92ed40e9247170d3f54101cc4a85f15718f86d7578e11edfc0847396d57311f399f
7
- data.tar.gz: 6820da4bbda826d5699a51eaff1537979192a85d0c3dc1e47e29364876434404134e45f0f569650c823f241019db7e900ef393f309321bf17495c91085046171
6
+ metadata.gz: 386cb2e03ff53a8539b6688e5028b4fd4ac2df389032fe7ea295fa883c1e58a1616f3f14be5c70346f2f2a6afd14aec0d491d7ca0a72e8db7290ed5d9e3b700a
7
+ data.tar.gz: 7906a8236b78ee34819c87e4d5c54911e94fe85e2d7c30e7a2c1b8b5e06b14042287caa1eadbec7e25d54c54ba8b7410ead8eaf0c3cfd8d1a48e7149a1eed7f7
Binary file
Binary file
@@ -58,7 +58,8 @@ class JSObfu::Obfuscator < JSObfu::ECMANoWhitespaceVisitor
58
58
 
59
59
  ret = super
60
60
 
61
- scope.pop!
61
+ # maintain a single top-level scope
62
+ scope.pop!(retain: scope.depth == 0)
62
63
 
63
64
  ret
64
65
  end
@@ -24,13 +24,16 @@ class JSObfu::Scope < Hash
24
24
  parent opener event frameElement Error TypeError setTimeout setInterval
25
25
  top arguments Array Date
26
26
  )
27
-
27
+
28
28
  # @return [JSObfu::Scope] parent that spawned this scope
29
29
  attr_accessor :parent
30
30
 
31
31
  # @return [Hash] mapping old var names to random ones
32
32
  attr_accessor :renames
33
33
 
34
+ # @return [Number] the 0-indexed depth of the scope stack
35
+ attr_accessor :depth
36
+
34
37
  # @param [Hash] opts the options hash
35
38
  # @option opts [Rex::Exploitation::JSObfu::Scope] :parent an optional parent scope,
36
39
  # sometimes necessary to prevent needless var shadowing
@@ -41,6 +44,7 @@ class JSObfu::Scope < Hash
41
44
  @char_set = opts[:first_char_set] || @first_char_set + [*'0'..'9']
42
45
  @min_len = opts[:min_len] || 1
43
46
  @renames = {}
47
+ @depth = -1
44
48
  end
45
49
 
46
50
  # Generates a unique, "safe" random variable
@@ -60,7 +64,6 @@ class JSObfu::Scope < Hash
60
64
  len += 1
61
65
  end
62
66
  end
63
-
64
67
  # Re-maps your +var_name+ to a unique, random
65
68
  # names in the current scope
66
69
  #
@@ -122,6 +125,7 @@ class JSObfu::Scope < Hash
122
125
  # empties current scope, and returns. Essentially an in-place
123
126
  # push operation
124
127
  def push!
128
+ @depth += 1
125
129
  replacement = dup
126
130
  replacement.parent = @parent
127
131
  replacement.renames = @renames
@@ -131,8 +135,10 @@ class JSObfu::Scope < Hash
131
135
  end
132
136
 
133
137
  # "Consumes" the parent and replaces self with it
134
- def pop!
135
- clear
138
+ def pop!(opts={})
139
+ retain = opts.fetch(:retain, false)
140
+ @depth -= 1
141
+ clear unless retain
136
142
  if @parent
137
143
  merge! @parent
138
144
  @renames = @parent.renames
@@ -136,7 +136,7 @@ module JSObfu::Utils
136
136
  #
137
137
  def self.transform_number(num)
138
138
  case num
139
- when Fixnum
139
+ when Integer
140
140
  if num == 0
141
141
  r = rand(10) + 1
142
142
  transformed = "('#{JSObfu::Utils.rand_text_alpha(r)}'.length-#{r})"
@@ -0,0 +1,3 @@
1
+ class JSObfu
2
+ VERSION = "0.4.2"
3
+ end
metadata CHANGED
@@ -1,44 +1,124 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jsobfu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Lee
8
8
  - Joe Vennix
9
9
  autorequire:
10
10
  bindir: bin
11
- cert_chain: []
12
- date: 2016-01-28 00:00:00.000000000 Z
11
+ cert_chain:
12
+ - |
13
+ -----BEGIN CERTIFICATE-----
14
+ MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4G
15
+ A1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNp
16
+ Z24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4
17
+ MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxTaWduIFJvb3QgQ0EgLSBSMzETMBEG
18
+ A1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2lnbjCCASIwDQYJKoZI
19
+ hvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWtiHL8
20
+ RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsT
21
+ gHeMCOFJ0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmm
22
+ KPZpO/bLyCiR5Z2KYVc3rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zd
23
+ QQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjlOCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZ
24
+ XriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2xmmFghcCAwEAAaNCMEAw
25
+ DgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFI/wS3+o
26
+ LkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZU
27
+ RUm7lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMp
28
+ jjM5RcOO5LlXbKr8EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK
29
+ 6fBdRoyV3XpYKBovHd7NADdBj+1EbddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQX
30
+ mcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18YIvDQVETI53O9zJrlAGomecs
31
+ Mx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7rkpeDMdmztcpH
32
+ WD9f
33
+ -----END CERTIFICATE-----
34
+ - |
35
+ -----BEGIN CERTIFICATE-----
36
+ MIIElDCCA3ygAwIBAgIOSBtqBybS6D8mAtSCWs0wDQYJKoZIhvcNAQELBQAwTDEg
37
+ MB4GA1UECxMXR2xvYmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2Jh
38
+ bFNpZ24xEzARBgNVBAMTCkdsb2JhbFNpZ24wHhcNMTYwNjE1MDAwMDAwWhcNMjQw
39
+ NjE1MDAwMDAwWjBaMQswCQYDVQQGEwJCRTEZMBcGA1UEChMQR2xvYmFsU2lnbiBu
40
+ di1zYTEwMC4GA1UEAxMnR2xvYmFsU2lnbiBDb2RlU2lnbmluZyBDQSAtIFNIQTI1
41
+ NiAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjYVVI6kfU6/J
42
+ 7TbCKbVu2PlC9SGLh/BDoS/AP5fjGEfUlk6Iq8Zj6bZJFYXx2Zt7G/3YSsxtToZA
43
+ F817ukcotdYUQAyG7h5LM/MsVe4hjNq2wf6wTjquUZ+lFOMQ5pPK+vldsZCH7/g1
44
+ LfyiXCbuexWLH9nDoZc1QbMw/XITrZGXOs5ynQYKdTwfmOPLGC+MnwhKkQrZ2TXZ
45
+ g5J2Yl7fg67k1gFOzPM8cGFYNx8U42qgr2v02dJsLBkwXaBvUt/RnMngDdl1EWWW
46
+ 2UO0p5A5rkccVMuxlW4l3o7xEhzw127nFE2zGmXWhEpX7gSvYjjFEJtDjlK4Prau
47
+ niyX/4507wIDAQABo4IBZDCCAWAwDgYDVR0PAQH/BAQDAgEGMB0GA1UdJQQWMBQG
48
+ CCsGAQUFBwMDBggrBgEFBQcDCTASBgNVHRMBAf8ECDAGAQH/AgEAMB0GA1UdDgQW
49
+ BBQPOueslJF0LZYCc4OtnC5JPxmqVDAfBgNVHSMEGDAWgBSP8Et/qC5FJK5NUPpj
50
+ move4t0bvDA+BggrBgEFBQcBAQQyMDAwLgYIKwYBBQUHMAGGImh0dHA6Ly9vY3Nw
51
+ Mi5nbG9iYWxzaWduLmNvbS9yb290cjMwNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDov
52
+ L2NybC5nbG9iYWxzaWduLmNvbS9yb290LXIzLmNybDBjBgNVHSAEXDBaMAsGCSsG
53
+ AQQBoDIBMjAIBgZngQwBBAEwQQYJKwYBBAGgMgFfMDQwMgYIKwYBBQUHAgEWJmh0
54
+ dHBzOi8vd3d3Lmdsb2JhbHNpZ24uY29tL3JlcG9zaXRvcnkvMA0GCSqGSIb3DQEB
55
+ CwUAA4IBAQAVhCgM7aHDGYLbYydB18xjfda8zzabz9JdTAKLWBoWCHqxmJl/2DOK
56
+ XJ5iCprqkMLFYwQL6IdYBgAHglnDqJQy2eAUTaDVI+DH3brwaeJKRWUtTUmQeGYy
57
+ DrBowLCIsI7tXAb4XBBIPyNzujtThFKAzfCzFcgRCosFeEZZCNS+t/9L9ZxqTJx2
58
+ ohGFRYzUN+5Q3eEzNKmhHzoL8VZEim+zM9CxjtEMYAfuMsLwJG+/r/uBAXZnxKPo
59
+ 4KvcM1Uo42dHPOtqpN+U6fSmwIHRUphRptYCtzzqSu/QumXSN4NTS35nfIxA9gcc
60
+ sK8EBtz4bEaIcpzrTp3DsLlUo7lOl8oU
61
+ -----END CERTIFICATE-----
62
+ - |
63
+ -----BEGIN CERTIFICATE-----
64
+ MIIE5jCCA86gAwIBAgIMKDuO03uv6RWXR1uAMA0GCSqGSIb3DQEBCwUAMFoxCzAJ
65
+ BgNVBAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMTAwLgYDVQQDEydH
66
+ bG9iYWxTaWduIENvZGVTaWduaW5nIENBIC0gU0hBMjU2IC0gRzMwHhcNMTYwOTEz
67
+ MTgxMDIyWhcNMTkxMTExMTUxNTM4WjBgMQswCQYDVQQGEwJVUzEWMBQGA1UECBMN
68
+ TWFzc2FjaHVzZXR0czEPMA0GA1UEBxMGQm9zdG9uMRMwEQYDVQQKEwpSYXBpZDcg
69
+ TExDMRMwEQYDVQQDEwpSYXBpZDcgTExDMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A
70
+ MIIBCgKCAQEAl0HeC0FzN1BJ4nQkxsBng3peS9Bdi9rpSGx+g0Ximd+M/7twmund
71
+ bzn2JPbNK/Gp/rq/SytrNSLcUzcbH/0z5Ltyw1/jQsGtRBrns0NZSRXqupQDW5R6
72
+ HFpaIAl3OdsesmIQc/fm0uhh8dkfHVo7UsZO/TeCPoy0uHXTI6aFBPzMMsdz+gf3
73
+ cCCLsnNKQh/T2Q/jwBs3NTPoyza/pPZcvGogKcWCeNihTO5Rn1Fc71sMHSjQsDtn
74
+ 1fWGKYGi0qjvZ4lpGM9IFZMTbySKHbPLhhHnBOoV7avGemdky3AEsUeiT+6DY0P1
75
+ IydBy24uVNhGATglME1ttlT4Eme/to0M6wIDAQABo4IBpDCCAaAwDgYDVR0PAQH/
76
+ BAQDAgeAMIGUBggrBgEFBQcBAQSBhzCBhDBIBggrBgEFBQcwAoY8aHR0cDovL3Nl
77
+ Y3VyZS5nbG9iYWxzaWduLmNvbS9jYWNlcnQvZ3Njb2Rlc2lnbnNoYTJnM29jc3Au
78
+ Y3J0MDgGCCsGAQUFBzABhixodHRwOi8vb2NzcDIuZ2xvYmFsc2lnbi5jb20vZ3Nj
79
+ b2Rlc2lnbnNoYTJnMzBWBgNVHSAETzBNMEEGCSsGAQQBoDIBMjA0MDIGCCsGAQUF
80
+ BwIBFiZodHRwczovL3d3dy5nbG9iYWxzaWduLmNvbS9yZXBvc2l0b3J5LzAIBgZn
81
+ gQwBBAEwCQYDVR0TBAIwADA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmds
82
+ b2JhbHNpZ24uY29tL2dzY29kZXNpZ25zaGEyZzMuY3JsMBMGA1UdJQQMMAoGCCsG
83
+ AQUFBwMDMB0GA1UdDgQWBBSm8RBpBC/cK9VmxzO2+RWnacN8CTAfBgNVHSMEGDAW
84
+ gBQPOueslJF0LZYCc4OtnC5JPxmqVDANBgkqhkiG9w0BAQsFAAOCAQEANVO3uYQl
85
+ h8iicbaXE3odrL+kXXmeeNgt4BD3x7GKAVIVixtwBS6pvrshjc1LN0tm3ruiv8oy
86
+ cq4FiEmVUXZejSRvVVtABeWdZWo+lJ8NxCBUEYYmnMrjgFIbGiEbBsg7PGtyeQsA
87
+ 5Wbg7Lx889mS1tKfQBcPif8EjpTiXNfMiywmpaMYmvm+yQgzrRLDbjz6JV0Rc5Ga
88
+ WChka+LTPnMtsWJuFM8ka8icMeS28/nAGERdewxWvz+DeAPMORdTJ7aqb6+Y9xuz
89
+ G+Hmcg1v810agasPdoydE0RTVZgEOOMoQ07qu7JFXVWZ9ZQpHT7qJATWL/b2csFG
90
+ 8mVuTXnyJOKRJA==
91
+ -----END CERTIFICATE-----
92
+ date: 2017-01-18 00:00:00.000000000 Z
13
93
  dependencies:
14
94
  - !ruby/object:Gem::Dependency
15
95
  name: rkelly-remix
16
96
  requirement: !ruby/object:Gem::Requirement
17
97
  requirements:
18
- - - '='
98
+ - - ">="
19
99
  - !ruby/object:Gem::Version
20
- version: 0.0.6
100
+ version: '0'
21
101
  type: :runtime
22
102
  prerelease: false
23
103
  version_requirements: !ruby/object:Gem::Requirement
24
104
  requirements:
25
- - - '='
105
+ - - ">="
26
106
  - !ruby/object:Gem::Version
27
- version: 0.0.6
107
+ version: '0'
28
108
  - !ruby/object:Gem::Dependency
29
109
  name: rspec
30
110
  requirement: !ruby/object:Gem::Requirement
31
111
  requirements:
32
- - - "~>"
112
+ - - ">="
33
113
  - !ruby/object:Gem::Version
34
- version: '3.1'
114
+ version: '0'
35
115
  type: :development
36
116
  prerelease: false
37
117
  version_requirements: !ruby/object:Gem::Requirement
38
118
  requirements:
39
- - - "~>"
119
+ - - ">="
40
120
  - !ruby/object:Gem::Version
41
- version: '3.1'
121
+ version: '0'
42
122
  - !ruby/object:Gem::Dependency
43
123
  name: simplecov
44
124
  requirement: !ruby/object:Gem::Requirement
@@ -110,6 +190,7 @@ files:
110
190
  - lib/jsobfu/obfuscator.rb
111
191
  - lib/jsobfu/scope.rb
112
192
  - lib/jsobfu/utils.rb
193
+ - lib/jsobfu/version.rb
113
194
  - samples/basic.rb
114
195
  - spec/integration_spec.rb
115
196
  - spec/jsobfu/disable_spec.rb
@@ -133,7 +214,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
133
214
  requirements:
134
215
  - - ">="
135
216
  - !ruby/object:Gem::Version
136
- version: '0'
217
+ version: 2.0.0
137
218
  required_rubygems_version: !ruby/object:Gem::Requirement
138
219
  requirements:
139
220
  - - ">="
@@ -146,4 +227,3 @@ signing_key:
146
227
  specification_version: 4
147
228
  summary: A Javascript code obfuscator
148
229
  test_files: []
149
- has_rdoc:
@@ -0,0 +1 @@
1
+ F� ����������y�|��6��-