cript 0.0.2 → 0.0.3
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.
- data/.rspec +2 -0
- data/README.md +9 -18
- data/lib/cript.rb +0 -1
- data/lib/cript/version.rb +1 -1
- metadata +3 -10
- data/bin/hidr +0 -6
- data/lib/cript/hidr.rb +0 -38
- data/lib/cript/hidr_command.rb +0 -136
- data/spec/hidr_command_spec.rb +0 -37
- data/spec/hidr_spec.rb +0 -43
data/.rspec
ADDED
data/README.md
CHANGED
@@ -2,6 +2,7 @@
|
|
2
2
|
|
3
3
|
Simple Encryption Tools for Ruby
|
4
4
|
|
5
|
+
[](http://badge.fury.io/rb/cript)
|
5
6
|
[](https://travis-ci.org/atongen/cript)
|
6
7
|
|
7
8
|
## Installation
|
@@ -69,25 +70,15 @@ encrypted = c.encrypt("More secret stuff!")
|
|
69
70
|
You can use Cript::Simple from bash with the `cript` executable.
|
70
71
|
Type `cript --help` after gem installation for usage.
|
71
72
|
|
72
|
-
|
73
|
+
## TODO
|
73
74
|
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
result = h.hide('Wow!')
|
82
|
-
```
|
83
|
-
|
84
|
-
After running this code, result will contain "zzzazazazzzzazzazzzazzzazaaaazaa".
|
85
|
-
|
86
|
-
It comes with a few commonly used mappings already setup: ascii, unicode, orly.
|
87
|
-
Call the class method of the same name to get these hidrs.
|
88
|
-
|
89
|
-
You can use Cript::Hidr from bash with the `hidr` executable.
|
90
|
-
Type `hidr --help` after gem installation for usage.
|
75
|
+
[ ] plugable encryption
|
76
|
+
[ ] gpg encryption
|
77
|
+
[ ] plugable storage
|
78
|
+
[ ] ssh storage
|
79
|
+
[ ] s3 storage
|
80
|
+
[ ] google drive storage
|
81
|
+
[ ] drb storage
|
91
82
|
|
92
83
|
## Contributing
|
93
84
|
|
data/lib/cript.rb
CHANGED
data/lib/cript/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cript
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-12-08 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -64,33 +64,28 @@ email:
|
|
64
64
|
- atongen@gmail.com
|
65
65
|
executables:
|
66
66
|
- cript
|
67
|
-
- hidr
|
68
67
|
extensions: []
|
69
68
|
extra_rdoc_files: []
|
70
69
|
files:
|
71
70
|
- .gitignore
|
71
|
+
- .rspec
|
72
72
|
- .travis.yml
|
73
73
|
- Gemfile
|
74
74
|
- LICENSE.txt
|
75
75
|
- README.md
|
76
76
|
- Rakefile
|
77
77
|
- bin/cript
|
78
|
-
- bin/hidr
|
79
78
|
- cript.gemspec
|
80
79
|
- lib/cript.rb
|
81
80
|
- lib/cript/cript_command.rb
|
82
81
|
- lib/cript/cripter.rb
|
83
82
|
- lib/cript/ehash.rb
|
84
|
-
- lib/cript/hidr.rb
|
85
|
-
- lib/cript/hidr_command.rb
|
86
83
|
- lib/cript/naive.rb
|
87
84
|
- lib/cript/simple.rb
|
88
85
|
- lib/cript/store.rb
|
89
86
|
- lib/cript/version.rb
|
90
87
|
- spec/cript_command_spec.rb
|
91
88
|
- spec/ehash_spec.rb
|
92
|
-
- spec/hidr_command_spec.rb
|
93
|
-
- spec/hidr_spec.rb
|
94
89
|
- spec/naive_spec.rb
|
95
90
|
- spec/simple_spec.rb
|
96
91
|
- spec/spec_helper.rb
|
@@ -122,8 +117,6 @@ summary: Simple Encryption Tools for Ruby
|
|
122
117
|
test_files:
|
123
118
|
- spec/cript_command_spec.rb
|
124
119
|
- spec/ehash_spec.rb
|
125
|
-
- spec/hidr_command_spec.rb
|
126
|
-
- spec/hidr_spec.rb
|
127
120
|
- spec/naive_spec.rb
|
128
121
|
- spec/simple_spec.rb
|
129
122
|
- spec/spec_helper.rb
|
data/bin/hidr
DELETED
data/lib/cript/hidr.rb
DELETED
@@ -1,38 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
#
|
3
|
-
# Cript::Hidr
|
4
|
-
#
|
5
|
-
module Cript
|
6
|
-
# Hidr can be used to obscure strings in other utf-8 strings.
|
7
|
-
# This is not encryption, and it's not secure!
|
8
|
-
class Hidr
|
9
|
-
|
10
|
-
CHARS = {
|
11
|
-
binary: ["0", "1"],
|
12
|
-
ascii: ["\s","\t"],
|
13
|
-
unicode: ["\u200B","\uFEFF"],
|
14
|
-
orly: ["\u0CA0", "\u005F"],
|
15
|
-
niceday: ["\s", "\u263A"]
|
16
|
-
}
|
17
|
-
|
18
|
-
class << self
|
19
|
-
def build(type)
|
20
|
-
if CHARS.has_key?(type)
|
21
|
-
new(b0: CHARS[type].first, b1: CHARS[type].last)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
CHARS.keys.each { |key| class_eval("def #{key}; build(:#{key}); end") }
|
25
|
-
end
|
26
|
-
|
27
|
-
def initialize(*o)
|
28
|
-
@o = o.last.is_a?(Hash) ? o.pop : {}
|
29
|
-
@o[:b0] ||= CHARS[:ascii].first
|
30
|
-
@o[:b1] ||= CHARS[:ascii].last
|
31
|
-
end
|
32
|
-
|
33
|
-
def h(m);m.unpack('b*').first.split("").map{|v|v=='0'?@o[:b0]:@o[:b1]}.join;end
|
34
|
-
def s(n);[n.chars.to_a.map{|y|y==@o[:b0]?'0':'1'}.join].pack('b*');end
|
35
|
-
def e(o);s(h(o));end
|
36
|
-
{ hide: :h, show: :s, echo: :e }.each { |k,v| alias_method k, v }
|
37
|
-
end
|
38
|
-
end
|
data/lib/cript/hidr_command.rb
DELETED
@@ -1,136 +0,0 @@
|
|
1
|
-
require 'cript'
|
2
|
-
require 'optparse'
|
3
|
-
|
4
|
-
module Cript
|
5
|
-
class HidrCommand
|
6
|
-
|
7
|
-
attr_reader :options
|
8
|
-
|
9
|
-
def initialize(argv)
|
10
|
-
@argv = argv.dup
|
11
|
-
|
12
|
-
@options = {
|
13
|
-
mode: nil,
|
14
|
-
infile: '-',
|
15
|
-
outfile: '-',
|
16
|
-
force: false,
|
17
|
-
b0: '0',
|
18
|
-
b1: '1',
|
19
|
-
debug: false
|
20
|
-
}
|
21
|
-
|
22
|
-
parse!
|
23
|
-
end
|
24
|
-
|
25
|
-
def run!
|
26
|
-
validate_mode
|
27
|
-
hidr = build_hidr
|
28
|
-
data = read_data
|
29
|
-
get_writer do |writer|
|
30
|
-
if @options[:mode] == 'hide'
|
31
|
-
writer.print hidr.hide(data)
|
32
|
-
else
|
33
|
-
writer.print hidr.show(data)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
private
|
39
|
-
|
40
|
-
def parser
|
41
|
-
@parser ||= OptionParser.new do |opts|
|
42
|
-
opts.banner = "Usage: hidr [options]"
|
43
|
-
|
44
|
-
opts.separator ""
|
45
|
-
opts.separator "Mode:"
|
46
|
-
opts.on("-h", "--hide", "hide mode") { @options[:mode] = 'hide' }
|
47
|
-
opts.on("-s", "--show", "show mode") { @options[:mode] = 'show' }
|
48
|
-
|
49
|
-
opts.separator ""
|
50
|
-
opts.separator "Bits:"
|
51
|
-
opts.on("-0", "--zero CHAR", "zero char (default: '#{@options[:b0]}')") { |char| @options[:b0] = char }
|
52
|
-
opts.on("-1", "--one CHAR", "one char (default: '#{@options[:b1]}')") { |char| @options[:b1] = char }
|
53
|
-
opts.on("-b", "--builtin BUILTIN", "built-in binary set (overrides zero and one, options: #{Cript::Hidr::CHARS.keys.join(', ')})") { |builtin| @options[:builtin] = builtin.to_s.strip.to_sym }
|
54
|
-
|
55
|
-
opts.separator ""
|
56
|
-
opts.separator "Files:"
|
57
|
-
opts.on("-i", "--infile FILE", "infile (default: '#{@options[:infile]}')") { |file| @options[:infile] = file }
|
58
|
-
opts.on("-o", "--outfile FILE", "outfile (default: '#{@options[:outfile]}')") { |file| @options[:outfile] = file }
|
59
|
-
opts.on("-f", "--force", "force overwrite outfile (default: #{@options[:force]})") { @options[:force] = true }
|
60
|
-
|
61
|
-
opts.separator ""
|
62
|
-
opts.separator "Common options:"
|
63
|
-
|
64
|
-
opts.on_tail("-D", "--debug", "Set debugging on") { @options[:debug] = true }
|
65
|
-
opts.on_tail("-H", "--help", "Show this message") { puts opts; exit }
|
66
|
-
opts.on_tail('-v', '--version', "Show version") { puts Cript::VERSION; exit }
|
67
|
-
end
|
68
|
-
end
|
69
|
-
|
70
|
-
def parse!
|
71
|
-
parser.parse!(@argv)
|
72
|
-
end
|
73
|
-
|
74
|
-
# run methods
|
75
|
-
|
76
|
-
def validate_mode
|
77
|
-
unless %w{ hide show }.include?(@options[:mode])
|
78
|
-
STDERR.puts "Mode (show or hide) is required."
|
79
|
-
exit 1
|
80
|
-
end
|
81
|
-
end
|
82
|
-
|
83
|
-
def build_hidr
|
84
|
-
if @options[:builtin]
|
85
|
-
if Cript::Hidr::CHARS.keys.include?(@options[:builtin])
|
86
|
-
Cript::Hidr.send(@options[:builtin])
|
87
|
-
else
|
88
|
-
STDERR.puts "Invalid builtin: #{@options[:builtin]}"
|
89
|
-
exit 1
|
90
|
-
end
|
91
|
-
else
|
92
|
-
Cript::Hidr.new(b0: @options[:b0], b1: @options[:b1])
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def read_data
|
97
|
-
if @options[:infile] == '-'
|
98
|
-
# requires ARGV clear
|
99
|
-
STDIN.read
|
100
|
-
elsif File.file?(@options[:infile])
|
101
|
-
File.read(@options[:infile])
|
102
|
-
else
|
103
|
-
STDERR.puts "Invalid infile: #{@options[:infile]}"
|
104
|
-
exit 1
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
def get_writer
|
109
|
-
begin
|
110
|
-
if @options[:outfile] == '-'
|
111
|
-
writer = STDOUT
|
112
|
-
elsif File.file?(@options[:outfile])
|
113
|
-
if @options[:force]
|
114
|
-
writer = File.open(@options[:outfile], 'wb')
|
115
|
-
else
|
116
|
-
STDERR.puts "Not overwriting file without force"
|
117
|
-
exit 1
|
118
|
-
end
|
119
|
-
else
|
120
|
-
writer = File.open(@options[:outfile], 'wb')
|
121
|
-
end
|
122
|
-
|
123
|
-
yield(writer)
|
124
|
-
rescue => e
|
125
|
-
STDERR.puts "Error writing data: #{e}"
|
126
|
-
exit 1
|
127
|
-
ensure
|
128
|
-
# clean-up
|
129
|
-
if writer && @options[:outfile] != '-'
|
130
|
-
writer.close
|
131
|
-
end
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
end
|
136
|
-
end
|
data/spec/hidr_command_spec.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'cript/hidr_command'
|
3
|
-
|
4
|
-
describe Cript::HidrCommand do
|
5
|
-
|
6
|
-
context 'parse' do
|
7
|
-
it 'should parse hide options' do
|
8
|
-
c = Cript::HidrCommand.new("-h -0 a -1 b -i /tmp/in.txt -o /tmp/out.txt -f -D".split(" "))
|
9
|
-
c.options[:mode].should eql('hide')
|
10
|
-
c.options[:b0].should eql('a')
|
11
|
-
c.options[:b1].should eql('b')
|
12
|
-
c.options[:infile].should eql('/tmp/in.txt')
|
13
|
-
c.options[:outfile].should eql('/tmp/out.txt')
|
14
|
-
c.options[:force].should be_true
|
15
|
-
c.options[:debug].should be_true
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'should parse show options' do
|
19
|
-
c = Cript::HidrCommand.new("-s -0 a -1 b -i /tmp/in.txt -o /tmp/out.txt -f -D".split(" "))
|
20
|
-
c.options[:mode].should eql('show')
|
21
|
-
c.options[:b0].should eql('a')
|
22
|
-
c.options[:b1].should eql('b')
|
23
|
-
c.options[:infile].should eql('/tmp/in.txt')
|
24
|
-
c.options[:outfile].should eql('/tmp/out.txt')
|
25
|
-
c.options[:force].should be_true
|
26
|
-
c.options[:debug].should be_true
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should recognize built-in hidrs' do
|
30
|
-
c = Cript::HidrCommand.new("-s -b orly -i /tmp/in.txt -o /tmp/out.txt -f -D".split(" "))
|
31
|
-
hidr = c.send(:build_hidr)
|
32
|
-
opts = hidr.instance_variable_get(:@o)
|
33
|
-
opts[:b0].should eql("\u0CA0")
|
34
|
-
opts[:b1].should eql("\u005F")
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
data/spec/hidr_spec.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
require 'spec_helper'
|
3
|
-
|
4
|
-
describe Cript::Hidr do
|
5
|
-
let(:ascii) { SecureRandom.base64(10240) }
|
6
|
-
let(:bytes) { SecureRandom.random_bytes(10240) }
|
7
|
-
|
8
|
-
context "ascii out" do
|
9
|
-
let(:hidr) { Cript::Hidr.ascii }
|
10
|
-
|
11
|
-
it 'should echo ascii' do
|
12
|
-
hidr.e(ascii).should eql(ascii)
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should echo bytes' do
|
16
|
-
hidr.e(bytes).should eql(bytes)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
context "unicode out" do
|
21
|
-
let(:hidr) { Cript::Hidr.unicode }
|
22
|
-
|
23
|
-
it 'should echo ascii' do
|
24
|
-
hidr.e(ascii).should eql(ascii)
|
25
|
-
end
|
26
|
-
|
27
|
-
it 'should echo bytes' do
|
28
|
-
hidr.e(bytes).should eql(bytes)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context "orly out" do
|
33
|
-
let(:hidr) { Cript::Hidr.orly }
|
34
|
-
|
35
|
-
it 'should echo ascii' do
|
36
|
-
hidr.e(ascii).should eql(ascii)
|
37
|
-
end
|
38
|
-
|
39
|
-
it 'should echo bytes' do
|
40
|
-
hidr.e(bytes).should eql(bytes)
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|