zindosteg 1.0.0 → 1.0.1
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 +4 -4
- data/README.md +14 -5
- data/ext/zindosteg/zindosteg.cpp +2 -1
- data/lib/zindosteg/version.rb +1 -1
- data/zindosteg.gemspec +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da3d49d90deedb647630359804b4e4084cffd09aafd7303ff2a665d4fe8362af
|
4
|
+
data.tar.gz: 9d3a191d8902d02b76a01fb71305d2775182dfde70442ba0587205426e193b17
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3466eb92d860d7313d91ed171c79ee4054c2a96ed3aef6eaa00948516ebfb77ddd3d517c322284f347c4f64d8e134e52d8cad5a51b7272d98c97adc378c34768
|
7
|
+
data.tar.gz: 6babf9e1c764d6d6d67a49be513818f156031360cafb85e6397f6fb2f8391c11097d76c11358e2f72570e8dd1cd8a6eb7452acb2e52dfed807b462996420d906
|
data/README.md
CHANGED
@@ -13,6 +13,7 @@ This gem is a Ruby interface to the Zindosteg C++ library, which uses a variant
|
|
13
13
|
Zindosteg supports JPEG, PNG, and BMP carrier files. PNG files must have at least 8 bit depth, and not be "palette" type. BMP files must be 24-bit.
|
14
14
|
|
15
15
|
## Installation
|
16
|
+
Note: To compile the native extensions, you may need to install JPEG, PNG, and OpenSSL development packages.
|
16
17
|
|
17
18
|
Add this line to your application's Gemfile:
|
18
19
|
|
@@ -28,13 +29,11 @@ Or install it yourself as:
|
|
28
29
|
|
29
30
|
$ gem install zindosteg
|
30
31
|
|
31
|
-
Note: To compile the native extensions, you may need to install JPEG, PNG, and OpenSSL development packages.
|
32
|
-
|
33
32
|
## Usage
|
34
33
|
Zindosteg is designed to mimic Ruby's `File` class as closely as possible. The basic idea is that you get a `Zindosteg` instance by "opening" the carrier file with a password. Then you can read and write to the `Zindosteg` object in the same way you normally would to a `File` object, using the same methods (e.g. `read`, `write`, `readlines`, `eof?`, `seek`, `tell`, etc.). You can even pass the `Zindosteg` instance to functions that expect `File` objects and everything should work.
|
35
34
|
|
36
35
|
### Examples
|
37
|
-
```
|
36
|
+
```ruby
|
38
37
|
# Open a new carrier for writing (overwriting any existing payload)
|
39
38
|
file = ::Zindosteg::File.open("carrier.jpeg", "secretpassword", "w")
|
40
39
|
|
@@ -63,7 +62,7 @@ file.size
|
|
63
62
|
file.eof?
|
64
63
|
# etc
|
65
64
|
|
66
|
-
# Use the
|
65
|
+
# Use the 'capacity' method to see the maximum number of bytes that the carrier file can hide.
|
67
66
|
file.capacity
|
68
67
|
|
69
68
|
# All the standard modes for opening files are supported:
|
@@ -73,8 +72,18 @@ file = ::Zindosteg::File.open("carrier.jpeg", "secretpassword", "a") # Opens for
|
|
73
72
|
|
74
73
|
# etc
|
75
74
|
|
76
|
-
# If you open for reading (or appending) and either
|
75
|
+
# If you open for reading (or appending) and either
|
76
|
+
# (1) an incorrect password is given, or
|
77
|
+
# (2) there is no existing payload, or
|
78
|
+
# (3) the carrier file has been corrupted or tampered with
|
79
|
+
# then a "RuntimeError (HMAC verification failure.)" exception will be thrown.
|
80
|
+
|
81
|
+
# Shortcuts
|
82
|
+
# Insert a payload file into a carrier file in one line:
|
83
|
+
::Zindosteg.insert(carrier_path, password, payload_path)
|
77
84
|
|
85
|
+
# Extract a payload from a carrier in one line:
|
86
|
+
::Zindosteg.extract(carrier_path, password, payload_path)
|
78
87
|
```
|
79
88
|
|
80
89
|
## Development
|
data/ext/zindosteg/zindosteg.cpp
CHANGED
@@ -661,9 +661,10 @@ namespace {
|
|
661
661
|
extern "C" void Init_zindosteg()
|
662
662
|
{
|
663
663
|
Module rb_cModule = define_module("Zindosteg");
|
664
|
+
register_handler<rubyError>(handle_ruby_error);
|
665
|
+
|
664
666
|
Data_Type<device_interface> rb_cZindosteg =
|
665
667
|
define_class_under<device_interface>(rb_cModule, "File")
|
666
|
-
.add_handler<rubyError>(handle_ruby_error)
|
667
668
|
.define_constructor(Constructor<device_interface, std::string, std::string, std::string>(), Arg("carrier"), Arg("password"), Arg("mode") = "r"s)
|
668
669
|
.define_method("<<", &device_interface::write)
|
669
670
|
.define_method("autoclose?", &device_interface::autoclose)
|
data/lib/zindosteg/version.rb
CHANGED
data/zindosteg.gemspec
CHANGED
@@ -7,7 +7,7 @@ Gem::Specification.new do |spec|
|
|
7
7
|
spec.email = ["nephi.allred@gmail.com"]
|
8
8
|
|
9
9
|
spec.summary = %q{Basic steganography}
|
10
|
-
spec.description = %q{
|
10
|
+
spec.description = %q{Use steganography to hide and encrypt data inside JPG, PNG, and BMP files.}
|
11
11
|
spec.homepage = "https://github.com/zindorsky/zindosteg-ruby"
|
12
12
|
spec.license = "MIT"
|
13
13
|
spec.required_ruby_version = Gem::Requirement.new(">= 2.7.0")
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: zindosteg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Nephi Allred
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake-compiler
|
@@ -38,7 +38,7 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '4.0'
|
41
|
-
description:
|
41
|
+
description: Use steganography to hide and encrypt data inside JPG, PNG, and BMP files.
|
42
42
|
email:
|
43
43
|
- nephi.allred@gmail.com
|
44
44
|
executables: []
|
@@ -101,7 +101,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
requirements: []
|
104
|
-
rubygems_version: 3.
|
104
|
+
rubygems_version: 3.4.10
|
105
105
|
signing_key:
|
106
106
|
specification_version: 4
|
107
107
|
summary: Basic steganography
|