objc-obfuscator 0.1.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 (3) hide show
  1. checksums.yaml +15 -0
  2. data/lib/obfuscator.rb +46 -0
  3. metadata +44 -0
checksums.yaml ADDED
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ NTE2ZmNmOTAzOWQ2NDMzNDljYThiN2I0NWM1NDRiYWEyM2EwYzdiMw==
5
+ data.tar.gz: !binary |-
6
+ NDg1YjVlZGZmNDg1YTJkOGZjNDk5ZGVlODk2NWUzYmI5MTg1ODU0Mg==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YWU4YzIzYmQ2ZDRlODRjMzJlYzY1OGVhNTZmYWJmYmI1YjVjYWVhYWUwNmQw
10
+ M2E3ZGU5NjM0ZDEwNzAzZjllZDg5ZmY5NDNjZTU3OTQ4ZTg1ZWZkMmQxZmU4
11
+ MmI1NTQ0ZWQ5YWI5YWRkZTE4MzQ5NjI1MDJmN2RkYWVjZTRlYjU=
12
+ data.tar.gz: !binary |-
13
+ ZmY3ZjQ4MjJkZGVlN2MwZGVmMjU1YTU0MzZhNmU4NGVhNzQ1ZmU0NGY2NGQz
14
+ ODY4ZmY3NDY2OTUxNWVmNmNkNDhjYzg5MTk0ZTBiYTRmMjIwODljMGY1MmY3
15
+ NjYzMDIzYTY2YWNjMDJhYTZiMWYzZmMwZmZmZDYwYzkwZGVkZjQ=
data/lib/obfuscator.rb ADDED
@@ -0,0 +1,46 @@
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
+
metadata ADDED
@@ -0,0 +1,44 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: objc-obfuscator
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Fabio Gallonetto
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-01-23 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple obfuscator that encrypts strings in source files
14
+ email: fabio@futureworkshops.com
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/obfuscator.rb
20
+ homepage: http://github.com/FutureWorkshops/Obfuscator-ruby
21
+ licenses:
22
+ - BSD
23
+ metadata: {}
24
+ post_install_message:
25
+ rdoc_options: []
26
+ require_paths:
27
+ - lib
28
+ required_ruby_version: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ required_rubygems_version: !ruby/object:Gem::Requirement
34
+ requirements:
35
+ - - ! '>='
36
+ - !ruby/object:Gem::Version
37
+ version: '0'
38
+ requirements: []
39
+ rubyforge_project:
40
+ rubygems_version: 2.0.7
41
+ signing_key:
42
+ specification_version: 4
43
+ summary: A simple obfuscator that encrypts strings in source files
44
+ test_files: []