cobreaktws 1.0.4

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 1a1000df1c655580f07fc0b8d0e552472d1bf8ed61237f1586f61db496dd1e39
4
+ data.tar.gz: 6a39de6bfbcac26983322fa42ec2bc5ec6fbe1b9f7c9d9be0fed48dcf287158c
5
+ SHA512:
6
+ metadata.gz: df08b6a634312072473b69ee522a3af98bc9a4623370ef7d79ad766984eca1e33bf77a2a170f0d1c8edc90dbce94b4d454a2c70638130dbe5201cb2ea6619000
7
+ data.tar.gz: 2dbcbd15ca642b8309a5a07a5a1c42fd5c5767c3184c3e9df48d8ddd9c8b47e093c40ea974246472cce221fff4c121b358d13bc5c98fee5d54227b555b4e75ae
@@ -0,0 +1,10 @@
1
+ {
2
+ "files.associations": {
3
+ "cobreak_base32.h": "c",
4
+ "cobreak_ruby.h": "c",
5
+ "cobreak_openssl.h": "c",
6
+ "md4.h": "c",
7
+ "cobreak_ascii85.h": "c",
8
+ "cobreak_binary.h": "c"
9
+ }
10
+ }
data/Gemfile ADDED
@@ -0,0 +1,18 @@
1
+ #source 'https://rubygems.org'
2
+ source 'http://127.0.0.1:9292'
3
+ gem "cobreak"
4
+ =begin
5
+ group :code do
6
+ gem 'base16'
7
+ gem 'base32'
8
+ gem 'base64'
9
+ gem 'Ascii85'
10
+ end
11
+ group :crypt do
12
+ gem 'openssl'
13
+ end
14
+ group :database do
15
+ gem 'sqlite3'
16
+ gem 'sequel'
17
+ end
18
+ =end
data/README.md ADDED
@@ -0,0 +1,72 @@
1
+ # CoBreak
2
+
3
+ [`CoBreak.com`](https://github.com/BreakingTWS/CoBreak.git)
4
+
5
+ This script was made by [`Breaker`](https://github.com/BreakingTWS/CoBreak.git)
6
+
7
+ CoBreak is a password security audit and recovery tool available for many operating systems. CoBreak supports various types of cipher and hashing for the purpose of facilitating data encryption or other
8
+
9
+ # GitHub Stats
10
+
11
+ ![BreakerBox GitHub Stats](https://github-readme-stats.vercel.app/api?username=BreakingTWS&show_icons=true&theme=midnight-purple)
12
+
13
+ <h1> Installation</h2>
14
+
15
+ <h3> Cipher</h3>
16
+
17
+ - Base64
18
+ - Base32
19
+ - Base16
20
+ - Ascii85
21
+ - Cesar
22
+ - Binaries
23
+
24
+ <h3> Raw-Hash</h3>
25
+
26
+ - MD4
27
+ - MD5
28
+ - Half-MD5
29
+ - SHA-1
30
+ - Double-SHA1
31
+ - SHA2-224
32
+ - SHA2-256
33
+ - SHA2-384
34
+ - SHA2-512
35
+ - SHA3-224
36
+ - SHA3-256
37
+ - SHA3-384
38
+ - SHA3-512
39
+ - Ripemd-160
40
+ - Tiger-160
41
+ - Blake2s-128
42
+ - Blake2s-160
43
+ - Blake2s-256
44
+ - Blake2b-160
45
+ - Blake2b-256
46
+ - Blake2b-384
47
+ - Blake2b-512
48
+ - GOST R 34.11-2012 (Streebog) 256-bit, big-endian
49
+ - GOST R 34.11-2012 (Streebog) 512-bit, big-endian
50
+
51
+ <h1> Setup</h3>
52
+ ---
53
+ <h2>Execute in your terminal for build ruby gem and installation:</h2>
54
+
55
+ <h3>Build ruby gem:</h3>
56
+
57
+ > $ **gem build cobreak.gemspec**
58
+
59
+ <h3>And after install ruby gem:</h3>
60
+
61
+ > $ **sudo gem install ./cobreak-1.0.4.gem**
62
+
63
+ ---
64
+ # Version
65
+ ## CoBreak
66
+
67
+ ![CoBreak](https://img.shields.io/badge/CoBreak-1.0.4-blueviolet)
68
+
69
+ # License
70
+
71
+ This project is licensed under the (GNU GENERAL PUBLIC LICENSE) - see the [LICENSE](LICENSE) file for details
72
+ # CoBreak
data/bin/cbrdb ADDED
@@ -0,0 +1,95 @@
1
+ #!/bin/env ruby
2
+ require 'ostruct'
3
+ require 'fileutils'
4
+ require 'cobreak/version'
5
+ options = OpenStruct.new
6
+ ARGV.each {|opt|
7
+ path_hash = File.join(Gem.path[1], "gems","cobreak-#{CoBreak.version}" , "lib", "cobreak", "hash", "hash.db")
8
+ path_chr = File.join(Gem.path[1], "gems","cobreak-#{CoBreak.version}" , "lib", "cobreak", "show")
9
+ path_bool = File.join(Gem.path[1], "gems","cobreak-#{CoBreak.version}" , "lib", "cobreak", "config", "database.db")
10
+ #dat = ['md4', 'md5', 'sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'ripemd160']
11
+ dat = %w[MD4 MD5 HALF-MD5 SHA1 SHA2-224 SHA2-256 SHA2-384 SHA2-512 SHA3-224 SHA3-256 SHA3-384 SHA3-512 RIPEMD-160 TIGER-160 DOUBLE-SHA1 BLAKE2S-128 BLAKE2S-160 BLAKE2B-160 BLAKE2S-224 BLAKE2S-256 BLAKE2B-256 BLAKE2B-384 BLAKE2B-512 WHIRLPOOL GOST-STREEBOG-256 GOST-STREEBOG-512 SHAKE-128]
12
+ case opt
13
+ when 'start'
14
+ begin
15
+ File.open(path_bool, mode: 'w'){|line|
16
+ line.write 'true'
17
+ }
18
+ puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m The Database was activated"
19
+ rescue Errno::EACCES
20
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m Access Denied"
21
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m root privileges needed"
22
+ end
23
+ when 'stop'
24
+ begin
25
+ File.open(path_bool, mode: 'w'){|line|
26
+ line.puts false
27
+ }
28
+ puts "\e[1;33m[i]\e[37m Database already stopped"
29
+ rescue Errno::EACCES
30
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m Access Denied"
31
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m root privileges needed"
32
+ end
33
+ when 'reinit'
34
+ begin
35
+ File.foreach(path_bool){|line|
36
+ line.chomp!
37
+ if (line == 'false')
38
+ abort "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m Database Not Started"
39
+ end
40
+ }
41
+ File.open(path_hash, mode: 'w'){|line|
42
+ line.puts nil
43
+ }
44
+ for dbreinit in dat
45
+ File.open(path_chr + "/#{dbreinit}.db", mode: 'w'){|line|
46
+ line.puts nil
47
+ }
48
+ end
49
+ puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m Reinitializing The Database"
50
+ rescue Errno::EACCES
51
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m Access Denied"
52
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m root privileges needed"
53
+ end
54
+ when 'delete'
55
+ begin
56
+ for dbdelete in dat
57
+ FileUtils.rm(path_chr + "/#{dbdelete}.db")
58
+ end
59
+ FileUtils.rm(path_hash)
60
+ File.open(path_bool, mode: 'w'){|line|
61
+ line.puts false
62
+ }
63
+ puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m Database Deleted Successfully"
64
+ rescue Errno::ENOENT
65
+ puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m Database Deleted Successfully"
66
+ rescue Errno::EACCES
67
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m Access Denied"
68
+ puts "\e[1;31m[\e[1;37m✘\e[1;31m]\e[1;37m root privileges needed"
69
+ end
70
+ when 'status'
71
+ puts "\e[37mCoBreak Database Status"
72
+ File.foreach(path_bool){|line|
73
+ line.chomp!
74
+ if (line.eql?('true'))
75
+ puts "\e[1;32m[\e[1;37m+\e[1;32m]\e[1;37m The Database Is Activated"
76
+ exit
77
+ end
78
+ }
79
+ if true
80
+ puts "\e[1;33m[i]\e[1;37m The Database Is Deactivated"
81
+ end
82
+ when 'help'
83
+ puts "Manage the CoBreak database"
84
+ puts
85
+ puts "Examples: cbrdb start"
86
+ puts
87
+ puts "cbrdb start # start the database"
88
+ puts "cbrdb stop # stop the database"
89
+ puts "cbrdb reinit # delete and reinitialize the database"
90
+ puts "cbrdb delete # delete database and stop using it"
91
+ puts "cbrdb status # check database status"
92
+ else
93
+ puts "parameter not found, run cbrdb help"
94
+ end
95
+ }
data/bin/cobreak ADDED
@@ -0,0 +1,11 @@
1
+ #!/bin/env ruby
2
+ require 'ostruct'
3
+ require 'optparse'
4
+ require 'cobreak/run'
5
+ options = OpenStruct.new
6
+ begin
7
+ CoBreakOPT::Runner.runner(options)
8
+ rescue OptionParser::InvalidOption, OptionParser::InvalidArgument => error
9
+ puts error.message
10
+ exit(1)
11
+ end
data/cobreak.gemspec ADDED
@@ -0,0 +1,28 @@
1
+ Gem::Specification.new do |info|
2
+ info.name = 'cobreaktws'
3
+ info.version = '1.0.4'
4
+ info.executables << "cobreak"
5
+ info.executables << "cbrdb"
6
+ info.description = "The CoBreak script is an cipher and cryptography tool"
7
+ info.add_development_dependency "bundler", "~> 1.5"
8
+ info.add_development_dependency "openssl", "~> 2.2.0"
9
+ info.add_development_dependency "sequel", "~> 5.44.0"
10
+ info.add_development_dependency "sqlite3", '~> 1.4', '>= 1.4.0'
11
+ # info.add_runtime_dependency "sequel", '~> 2.0', '>= 2.0.0'
12
+ info.add_runtime_dependency "sqlite3", '~> 1.4', '>= 1.4.0'
13
+ info.add_runtime_dependency "Ascii85", '~> 1.0', '>= 1.0.0'
14
+ # info.add_runtime_dependency "ruby_figlet", "=> 0"
15
+ info.authors = ["BreakerTW"]
16
+ info.email = 'breaker@gmail.com'
17
+ info.summary = "Force Brute, Cipher, Cryptography"
18
+
19
+ info.extensions = %w[ext/cobreak/extconf.rb]
20
+
21
+ info.files = `git ls-files -z`.split("\x0").reject do |f|
22
+ f.match(/^.gitignore/)
23
+ end
24
+
25
+ info.homepage = 'https://github.com/BreakingTWS/CoBreak'
26
+ info.license = 'MIT'
27
+ info.post_install_message = "thanks for installing my gem"
28
+ end
@@ -0,0 +1,17 @@
1
+ #include<cobreak_ruby.h>
2
+
3
+ VALUE mCoBreak;
4
+
5
+ void Init_cobreak(){
6
+
7
+ mCoBreak = rb_define_module("CoBreak");
8
+
9
+
10
+
11
+
12
+
13
+
14
+ init_cobreak_openssl();
15
+ init_cobreak_gcrypt();
16
+ init_cobreak_cipher();
17
+ }
@@ -0,0 +1,341 @@
1
+ #include<cobreak_cipher.h>
2
+
3
+ VALUE mCoBreakCipher;
4
+ VALUE cCoBreakBase16;
5
+ VALUE cCoBreakBase32;
6
+ VALUE cCoBreakBase64;
7
+ VALUE cCoBreakCesar;
8
+ VALUE cCoBreakBinary;
9
+
10
+ char b32[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
11
+ char b64[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
12
+
13
+ //Base16
14
+ void decodeblock16(const char bl[], char *blstr, size_t length) {
15
+ for (size_t i = 0; i < length / 2; i++) {
16
+ int byte = 0;
17
+ if (sscanf(bl + (i * 2), "%2x", &byte) != 1) {
18
+ // Manejar error: entrada hex inválida
19
+ rb_raise(rb_eArgError, "Invalid hex input");
20
+ return; // Esto no se alcanzará, pero es una buena práctica
21
+ }
22
+ blstr[i] = (unsigned char)byte;
23
+ }
24
+ blstr[length / 2] = '\0'; // Terminar correctamente la cadena
25
+ }
26
+
27
+ VALUE b16_decode(VALUE self, VALUE full) {
28
+ char *myb16 = RSTRING_PTR(full);
29
+ char strb16[1024];
30
+ size_t length = strlen(myb16);
31
+
32
+ // Validar longitud
33
+ if (length % 2 != 0) {
34
+ rb_raise(rb_eArgError, "Hex string must have an even length");
35
+ }
36
+
37
+ // Decodificación
38
+ decodeblock16(myb16, strb16, length);
39
+ return rb_str_new2(strb16);
40
+ }
41
+
42
+ void encodeblock16(const char bl[], size_t length, char b16str[]) {
43
+ const char *hexDigits = "0123456789ABCDEF";
44
+ for (size_t i = 0; i < length; i++) {
45
+ b16str[i * 2] = hexDigits[(bl[i] >> 4) & 0x0F]; // Primer dígito
46
+ b16str[i * 2 + 1] = hexDigits[bl[i] & 0x0F]; // Segundo dígito
47
+ }
48
+ b16str[length * 2] = '\0'; // Agregar el terminador de cadena
49
+ }
50
+
51
+ VALUE b16_encode(VALUE self, VALUE full) {
52
+ char *strb16 = RSTRING_PTR(full);
53
+ char myb16[1024 * 2 + 1]; // Buffer para la codificación
54
+ size_t length = strlen(strb16);
55
+
56
+ // Codificación
57
+ encodeblock16(strb16, length, myb16);
58
+ return rb_str_new2(myb16);
59
+ }
60
+
61
+ //Base32
62
+ int decodeblock32(const char bl[], char *blstr){
63
+ int buffer = 0;
64
+ int bits_left = 0;
65
+ size_t output_length = 0;
66
+
67
+ for (size_t i = 0; i < strlen(bl); i++) {
68
+ if (bl[i] == '=') {
69
+ break; // Fin del mensaje
70
+ }
71
+
72
+ int value = strchr(b32, bl[i]) - b32;
73
+ if (value < 0 || value >= 32) {
74
+ break; // Carácter inválido
75
+ }
76
+
77
+ buffer = (buffer << 5) | value;
78
+ bits_left += 5;
79
+
80
+ if (bits_left >= 8) {
81
+ blstr[output_length++] = (buffer >> (bits_left - 8)) & 0xFF;
82
+ bits_left -= 8;
83
+ }
84
+ }
85
+ return output_length;
86
+ }
87
+
88
+ VALUE b32_decode(VALUE self, VALUE full) {
89
+ char *myb32 = RSTRING_PTR(full);
90
+ char strb32[1024] = "";
91
+ char *clrdst = strb32;
92
+
93
+ // Decodificar
94
+ int decoded_length = decodeblock32(myb32, clrdst);
95
+ clrdst[decoded_length] = '\0'; // Asegurar que la cadena esté terminada
96
+
97
+ return rb_str_new2(strb32);
98
+ }
99
+
100
+
101
+ void encodeblock32(const char bl[], int len, char b32str[]){
102
+ int buffer = 0;
103
+ int bits_left = 0;
104
+ size_t output_length = 0;
105
+
106
+ for (size_t i = 0; i < len; i++) {
107
+ buffer = (buffer << 8) | bl[i];
108
+ bits_left += 8;
109
+
110
+ while (bits_left >= 5) {
111
+ b32str[output_length++] = b32[(buffer >> (bits_left - 5)) & 0x1F];
112
+ bits_left -= 5;
113
+ }
114
+ }
115
+
116
+ if (bits_left > 0) {
117
+ b32str[output_length++] = b32[(buffer << (5 - bits_left)) & 0x1F];
118
+ }
119
+
120
+ // Añadir padding
121
+ while (output_length % 8 != 0) {
122
+ b32str[output_length++] = '=';
123
+ }
124
+
125
+ b32str[output_length] = '\0';
126
+ }
127
+
128
+ VALUE b32_encode(VALUE self, VALUE full) {
129
+ char *strb32 = RSTRING_PTR(full);
130
+ char myb32[1024] = "";
131
+ char *clrdst = myb32;
132
+
133
+ encodeblock32(strb32, strlen(strb32), clrdst);
134
+
135
+ return rb_str_new2(myb32);
136
+ }
137
+
138
+
139
+ //Base64
140
+ void decodeblock64(unsigned char in[], char *clrstr) {
141
+ unsigned char out[4];
142
+ out[0] = in[0] << 2 | in[1] >> 4;
143
+ out[1] = in[1] << 4 | in[2] >> 2;
144
+ out[2] = in[2] << 6 | in[3] >> 0;
145
+ out[3] = '\0';
146
+ strncat(clrstr, out, sizeof(out));
147
+ }
148
+
149
+ VALUE b64_decode(VALUE self, VALUE full){
150
+ // check_Type(full, T_STRING);
151
+ int c, phase, i;
152
+ unsigned char in[4];
153
+ char *p;
154
+
155
+ char *myb64 = RSTRING_PTR(full);
156
+ char strb64[1024] = "";
157
+ char *clrdst = strb64;
158
+ clrdst[0] = '\0';
159
+ phase = 0; i=0;
160
+ while(myb64[i]){
161
+ c = (int) myb64[i];
162
+ if(c == '='){
163
+ decodeblock64(in, clrdst);
164
+ break;
165
+ }
166
+ p = strchr(b64, c);
167
+ if(p){
168
+ in[phase] = p - b64;
169
+ phase = (phase + 1) % 4;
170
+ if(phase == 0){
171
+ decodeblock64(in, clrdst);
172
+ in[0]=in[1]=in[2]=in[3]=0;
173
+ }
174
+ }
175
+ i++;
176
+ }
177
+ return rb_str_new2(strb64);
178
+ }
179
+
180
+ void encodeblock64(unsigned char bl[], char b64str[], int len){
181
+ unsigned char out[5];
182
+ out[0] = b64[ bl[0] >> 2 ];
183
+ out[1] = b64[ ((bl[0] & 0x03) << 4) | ((bl[1] & 0xf0) >> 4) ];
184
+ out[2] = (unsigned char) (len > 1 ? b64[ ((bl[1] & 0x0f) << 2) | ((bl[2] & 0xc0) >> 6) ] : '=');
185
+ out[3] = (unsigned char) (len > 2 ? b64[ bl[2] & 0x3f ] : '=');
186
+ out[4] = '\0';
187
+ strncat(b64str, out, sizeof(out));
188
+ }
189
+
190
+ VALUE b64_encode(VALUE self, VALUE full){
191
+ // check_Type(full, T_STRING);
192
+ unsigned char in[3];
193
+ int i, len = 0;
194
+ int j = 0;
195
+ //char b64dst[1024];
196
+ char *strb64 = RSTRING_PTR(full);
197
+ char myb64[1024] = "";
198
+ char *b64dst = myb64;
199
+ b64dst[0] = '\0';
200
+ while(strb64[j]){
201
+ len = 0;
202
+ for(i=0; i<3; i++){
203
+ in[i] = (unsigned char) strb64[j];
204
+ if(strb64[j]) {
205
+ len++; j++;
206
+ }
207
+ else in[i] = 0;
208
+ }
209
+ if(len){
210
+ encodeblock64(in, b64dst, len);
211
+ }
212
+ }
213
+ return rb_str_new2(b64dst);
214
+ }
215
+
216
+ //Define Cesar
217
+ void encodeblock_cesar(const char *input, char *output, int shift){
218
+ for (size_t i = 0; i < strlen(input); i++) {
219
+ char c = input[i];
220
+
221
+ if (c >= 'A' && c <= 'Z') {
222
+ output[i] = (c - 'A' + shift) % 26 + 'A';
223
+ } else if (c >= 'a' && c <= 'z') {
224
+ output[i] = (c - 'a' + shift) % 26 + 'a';
225
+ } else {
226
+ output[i] = c;
227
+ }
228
+ }
229
+ output[strlen(input)] = '\0';
230
+ }
231
+
232
+
233
+ void decodeblock_cesar(const char *input, char *output, int shift){
234
+
235
+ encodeblock_cesar(input, output, 26 - (shift % 26));
236
+ }
237
+
238
+ VALUE cesar_encode(VALUE self, VALUE str, VALUE shift) {
239
+ char *input = RSTRING_PTR(str);
240
+ char output[1024]; // Buffer para la salida
241
+ int shift_value = NUM2INT(shift);
242
+
243
+
244
+ encodeblock_cesar(input, output, shift_value);
245
+ return rb_str_new2(output);
246
+ }
247
+
248
+
249
+ VALUE cesar_decode(VALUE self, VALUE str, VALUE shift) {
250
+ char *input = RSTRING_PTR(str);
251
+ char output[1024]; // Buffer para la salida
252
+ int shift_value = NUM2INT(shift);
253
+
254
+
255
+ decodeblock_cesar(input, output, shift_value);
256
+ return rb_str_new2(output);
257
+ }
258
+
259
+ //Define Binary
260
+ void encodeblock_binary(const char bl[], char *blstr, size_t length) {
261
+ for (size_t i = 0; i < length; i++) {
262
+ for (int j = 7; j >= 0; j--) {
263
+ blstr[i * 8 + (7 - j)] = ((bl[i] >> j) & 1) ? '1' : '0';
264
+ }
265
+ }
266
+ blstr[length * 8] = '\0';
267
+ }
268
+
269
+ void decodeblock_binary(const char bl[], char *blstr, size_t length) {
270
+ for (size_t i = 0; i < length / 8; i++) {
271
+ char byte = 0;
272
+ for (int j = 0; j < 8; j++) {
273
+ byte = (byte << 1) | (bl[i * 8 + j] - '0');
274
+ }
275
+ blstr[i] = byte;
276
+ }
277
+ blstr[length / 8] = '\0';
278
+ }
279
+
280
+ VALUE binary_encode(VALUE self, VALUE full) {
281
+ char *strb = RSTRING_PTR(full);
282
+ char mybinary[1024 * 8 + 1];
283
+ size_t length = strlen(strb);
284
+
285
+ encodeblock_binary(strb, mybinary, length);
286
+ return rb_str_new2(mybinary);
287
+ }
288
+
289
+
290
+ VALUE binary_decode(VALUE self, VALUE full) {
291
+ char *mybinary = RSTRING_PTR(full);
292
+ char strb[1024];
293
+ size_t length = strlen(mybinary);
294
+
295
+ if (length % 8 != 0) {
296
+ rb_raise(rb_eArgError, "Binary string must have a length that is a multiple of 8");
297
+ }
298
+
299
+ decodeblock_binary(mybinary, strb, length);
300
+ return rb_str_new2(strb);
301
+ }
302
+
303
+ void init_cobreak_cipher() {
304
+ //Define module Cipher in mCoBreak
305
+ mCoBreakCipher = rb_define_module_under(mCoBreak, "Cipher");
306
+
307
+ //Define class Base16 in module mCoBreakCipher
308
+ cCoBreakBase16 = rb_define_class_under(mCoBreakCipher, "Base16", rb_cObject);
309
+
310
+ //Define method for class Base16
311
+ rb_define_singleton_method(cCoBreakBase16, "encode", b16_encode, 1);
312
+ rb_define_singleton_method(cCoBreakBase16, "decode", b16_decode, 1);
313
+
314
+ //Define class Base32 in module mCoBreakCipher
315
+ cCoBreakBase32 = rb_define_class_under(mCoBreakCipher, "Base32", rb_cObject);
316
+
317
+ //Define method for class Base32
318
+ rb_define_singleton_method(cCoBreakBase32, "encode", b32_encode, 1);
319
+ rb_define_singleton_method(cCoBreakBase32, "decode", b32_decode, 1);
320
+
321
+ //Define class Base64 in module mCoBreakCipher
322
+ cCoBreakBase64 = rb_define_class_under(mCoBreakCipher, "Base64", rb_cObject);
323
+
324
+ //Define method for class Base64
325
+ rb_define_singleton_method(cCoBreakBase64, "encode", b64_encode, 1);
326
+ rb_define_singleton_method(cCoBreakBase64, "decode", b64_decode, 1);
327
+
328
+ //Define class Cesar in module mCoBreakCipher
329
+ cCoBreakCesar = rb_define_class_under(mCoBreakCipher, "Cesar", rb_cObject);
330
+
331
+ //Define method for class Cesar
332
+ rb_define_singleton_method(cCoBreakCesar, "encode", cesar_encode, 2);
333
+ rb_define_singleton_method(cCoBreakCesar, "decode", cesar_decode, 2);
334
+
335
+ //Define class Cesar in module mCoBreakCipher
336
+ cCoBreakBinary = rb_define_class_under(mCoBreakCipher, "Binary", rb_cObject);
337
+
338
+ //Define method for class Binary
339
+ rb_define_singleton_method(cCoBreakBinary, "encode", binary_encode, 1);
340
+ rb_define_singleton_method(cCoBreakBinary, "decode", binary_decode, 1);
341
+ }
@@ -0,0 +1,10 @@
1
+ #ifndef COBREAK_CIPHER_RUBY
2
+ #define COBREAK_CIPHER_RUBY
3
+
4
+ //include library <cobreak_ruby.h> for project
5
+ #include<cobreak_ruby.h>
6
+
7
+ //initialize function
8
+ void init_cobreak_cipher();
9
+
10
+ #endif