objc-obfuscator 0.1.0 → 0.2.0

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.
Files changed (29) hide show
  1. checksums.yaml +6 -14
  2. data/bin/objc-obfuscator +5 -0
  3. data/lib/objc-obfuscator.rb +6 -0
  4. data/lib/objc-obfuscator/cli.rb +64 -0
  5. data/lib/objc-obfuscator/integrator.rb +59 -0
  6. data/lib/objc-obfuscator/obfuscator.rb +52 -0
  7. data/lib/objc-obfuscator/stringencryptor.rb +33 -0
  8. data/spec/encryptor_spec.rb +0 -0
  9. data/spec/integrator_spec.rb +17 -0
  10. data/spec/string_encryptor_spec.rb +36 -0
  11. data/spec/support/sample_project/Podfile +1 -0
  12. data/spec/support/sample_project/TestProject/TestProject.xcodeproj/project.pbxproj +459 -0
  13. data/spec/support/sample_project/TestProject/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata +7 -0
  14. data/spec/support/sample_project/TestProject/TestProject.xcodeproj/project.xcworkspace/xcuserdata/dune.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  15. data/spec/support/sample_project/TestProject/TestProject.xcodeproj/xcuserdata/dune.xcuserdatad/xcschemes/TestProject.xcscheme +96 -0
  16. data/spec/support/sample_project/TestProject/TestProject.xcodeproj/xcuserdata/dune.xcuserdatad/xcschemes/xcschememanagement.plist +27 -0
  17. data/spec/support/sample_project/TestProject/TestProject/FWTAppDelegate.h +15 -0
  18. data/spec/support/sample_project/TestProject/TestProject/FWTAppDelegate.m +49 -0
  19. data/spec/support/sample_project/TestProject/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json +53 -0
  20. data/spec/support/sample_project/TestProject/TestProject/Images.xcassets/LaunchImage.launchimage/Contents.json +51 -0
  21. data/spec/support/sample_project/TestProject/TestProject/TestProject-Info.plist +45 -0
  22. data/spec/support/sample_project/TestProject/TestProject/TestProject-Prefix.pch +16 -0
  23. data/spec/support/sample_project/TestProject/TestProject/en.lproj/InfoPlist.strings +2 -0
  24. data/spec/support/sample_project/TestProject/TestProject/main.m +18 -0
  25. data/spec/support/sample_project/TestProject/TestProjectTests/TestProjectTests-Info.plist +22 -0
  26. data/spec/support/sample_project/TestProject/TestProjectTests/TestProjectTests.m +34 -0
  27. data/spec/support/sample_project/TestProject/TestProjectTests/en.lproj/InfoPlist.strings +2 -0
  28. metadata +124 -8
  29. data/lib/obfuscator.rb +0 -46
@@ -0,0 +1,2 @@
1
+ /* Localized versions of Info.plist keys */
2
+
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: objc-obfuscator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabio Gallonetto
@@ -9,14 +9,110 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-01-23 00:00:00.000000000 Z
12
- dependencies: []
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: encryptor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: thor
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 0.18.1
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 0.18.1
41
+ - !ruby/object:Gem::Dependency
42
+ name: xcodeproj
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 0.14.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 0.14.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 2.13.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 2.13.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 10.0.3
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: 10.0.3
13
83
  description: A simple obfuscator that encrypts strings in source files
14
84
  email: fabio@futureworkshops.com
15
- executables: []
85
+ executables:
86
+ - objc-obfuscator
16
87
  extensions: []
17
88
  extra_rdoc_files: []
18
89
  files:
19
- - lib/obfuscator.rb
90
+ - bin/objc-obfuscator
91
+ - lib/objc-obfuscator.rb
92
+ - lib/objc-obfuscator/cli.rb
93
+ - lib/objc-obfuscator/integrator.rb
94
+ - lib/objc-obfuscator/obfuscator.rb
95
+ - lib/objc-obfuscator/stringencryptor.rb
96
+ - spec/encryptor_spec.rb
97
+ - spec/integrator_spec.rb
98
+ - spec/string_encryptor_spec.rb
99
+ - spec/support/sample_project/Podfile
100
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/project.pbxproj
101
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata
102
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/project.xcworkspace/xcuserdata/dune.xcuserdatad/UserInterfaceState.xcuserstate
103
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/xcuserdata/dune.xcuserdatad/xcschemes/TestProject.xcscheme
104
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/xcuserdata/dune.xcuserdatad/xcschemes/xcschememanagement.plist
105
+ - spec/support/sample_project/TestProject/TestProject/FWTAppDelegate.h
106
+ - spec/support/sample_project/TestProject/TestProject/FWTAppDelegate.m
107
+ - spec/support/sample_project/TestProject/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json
108
+ - spec/support/sample_project/TestProject/TestProject/Images.xcassets/LaunchImage.launchimage/Contents.json
109
+ - spec/support/sample_project/TestProject/TestProject/TestProject-Info.plist
110
+ - spec/support/sample_project/TestProject/TestProject/TestProject-Prefix.pch
111
+ - spec/support/sample_project/TestProject/TestProject/en.lproj/InfoPlist.strings
112
+ - spec/support/sample_project/TestProject/TestProject/main.m
113
+ - spec/support/sample_project/TestProject/TestProjectTests/TestProjectTests-Info.plist
114
+ - spec/support/sample_project/TestProject/TestProjectTests/TestProjectTests.m
115
+ - spec/support/sample_project/TestProject/TestProjectTests/en.lproj/InfoPlist.strings
20
116
  homepage: http://github.com/FutureWorkshops/Obfuscator-ruby
21
117
  licenses:
22
118
  - BSD
@@ -27,18 +123,38 @@ require_paths:
27
123
  - lib
28
124
  required_ruby_version: !ruby/object:Gem::Requirement
29
125
  requirements:
30
- - - ! '>='
126
+ - - '>='
31
127
  - !ruby/object:Gem::Version
32
128
  version: '0'
33
129
  required_rubygems_version: !ruby/object:Gem::Requirement
34
130
  requirements:
35
- - - ! '>='
131
+ - - '>='
36
132
  - !ruby/object:Gem::Version
37
133
  version: '0'
38
134
  requirements: []
39
135
  rubyforge_project:
40
- rubygems_version: 2.0.7
136
+ rubygems_version: 2.0.6
41
137
  signing_key:
42
138
  specification_version: 4
43
139
  summary: A simple obfuscator that encrypts strings in source files
44
- test_files: []
140
+ test_files:
141
+ - spec/encryptor_spec.rb
142
+ - spec/integrator_spec.rb
143
+ - spec/string_encryptor_spec.rb
144
+ - spec/support/sample_project/Podfile
145
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/project.pbxproj
146
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/project.xcworkspace/contents.xcworkspacedata
147
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/project.xcworkspace/xcuserdata/dune.xcuserdatad/UserInterfaceState.xcuserstate
148
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/xcuserdata/dune.xcuserdatad/xcschemes/TestProject.xcscheme
149
+ - spec/support/sample_project/TestProject/TestProject.xcodeproj/xcuserdata/dune.xcuserdatad/xcschemes/xcschememanagement.plist
150
+ - spec/support/sample_project/TestProject/TestProject/FWTAppDelegate.h
151
+ - spec/support/sample_project/TestProject/TestProject/FWTAppDelegate.m
152
+ - spec/support/sample_project/TestProject/TestProject/Images.xcassets/AppIcon.appiconset/Contents.json
153
+ - spec/support/sample_project/TestProject/TestProject/Images.xcassets/LaunchImage.launchimage/Contents.json
154
+ - spec/support/sample_project/TestProject/TestProject/TestProject-Info.plist
155
+ - spec/support/sample_project/TestProject/TestProject/TestProject-Prefix.pch
156
+ - spec/support/sample_project/TestProject/TestProject/en.lproj/InfoPlist.strings
157
+ - spec/support/sample_project/TestProject/TestProject/main.m
158
+ - spec/support/sample_project/TestProject/TestProjectTests/TestProjectTests-Info.plist
159
+ - spec/support/sample_project/TestProject/TestProjectTests/TestProjectTests.m
160
+ - spec/support/sample_project/TestProject/TestProjectTests/en.lproj/InfoPlist.strings
data/lib/obfuscator.rb DELETED
@@ -1,46 +0,0 @@
1
- require 'fileutils'
2
- require 'encryptor'
3
- require 'digest/sha2'
4
- require 'base64'
5
-
6
- abort "USAGE: obfuscator [encryption_key] [filename]" if(ARGV.size < 2)
7
-
8
- key = ARGV[0]
9
-
10
- salt = Time.now.to_i.to_s
11
- iv = OpenSSL::Cipher::Cipher.new('aes-256-cbc').random_iv
12
- Encryptor.default_options.merge!(:key => key, :iv => iv, :salt => salt)
13
-
14
- keyword = '__obfuscated'
15
-
16
- source_file_path = ARGV[1]
17
- temp_file_path = "#{source_file_path}.tmp"
18
- abort "FATAL: File #{source_file_path} not found!" unless File.exist? source_file_path
19
- File.delete(temp_file_path) if File.exist?(temp_file_path)
20
-
21
- source_file = File.open(source_file_path, 'r')
22
- dest_file = File.open(temp_file_path, 'w')
23
-
24
- while !source_file.eof?
25
- line = source_file.readline
26
- if line.include? keyword
27
- unencrypted_string = line.scan(/@"(.*)"\s*;/).last.first
28
- if unencrypted_string.empty?
29
- puts "ERROR: Found occurence of __obfuscated string but can't replace!!!"
30
- else
31
- puts "INFO: File: #{source_file_path}"
32
- puts "INFO: Found occurence of __obfuscated string: '#{unencrypted_string}'. Replacing..."
33
- end
34
- encrypted = "#{Base64.strict_encode64(unencrypted_string.encrypt)}-#{Base64.strict_encode64(iv)}-#{Base64.strict_encode64(salt)}"
35
- line.slice! keyword
36
- line = line.gsub(unencrypted_string, encrypted)
37
- end
38
- dest_file.puts line
39
- end
40
- source_file.close
41
- dest_file.close
42
-
43
- FileUtils.mv source_file_path, "#{source_file_path}.bak"
44
- FileUtils.mv temp_file_path, source_file_path
45
-
46
-