jsobfu 0.4.1 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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��-