Commit 873557f901b56f2451ff498774680aad98e39f52
1 parent
09268ae3
Exists in
master
staged.
Showing
8 changed files
with
40 additions
and
20 deletions
Show diff stats
mjpeg/__init__.py
| @@ -56,7 +56,7 @@ class Jpeg(Jsteg): | @@ -56,7 +56,7 @@ class Jpeg(Jsteg): | ||
| 56 | Jsteg.__init__(self, file, **kw) | 56 | Jsteg.__init__(self, file, **kw) |
| 57 | self.verbosity = verbosity | 57 | self.verbosity = verbosity |
| 58 | if verbosity > 0: | 58 | if verbosity > 0: |
| 59 | - print "[Jpeg.__init__] Image size %ix%i" % (self.image_width, self.image_height) | 59 | + print "[Jpeg] %s (%ix%i)" % (self.filename, self.image_width, self.image_height) |
| 60 | if key != None: | 60 | if key != None: |
| 61 | self.key = key | 61 | self.key = key |
| 62 | elif rndkey: | 62 | elif rndkey: |
| @@ -310,7 +310,8 @@ class Jpeg(Jsteg): | @@ -310,7 +310,8 @@ class Jpeg(Jsteg): | ||
| 310 | if sum0 != None: | 310 | if sum0 != None: |
| 311 | if sum1 != None: | 311 | if sum1 != None: |
| 312 | sum = sum0 + sum1 | 312 | sum = sum0 + sum1 |
| 313 | - qvalue = self.quant_tables[0].ravel()[2] + self.quant_tables[0].ravel()[53] + self.quant_tables[1].ravel()[0] + self.quant_tables[1].ravel()[-1] | 313 | + qvalue = self.quant_tables[0].ravel()[2] + self.quant_tables[0].ravel()[53] + \ |
| 314 | + self.quant_tables[1].ravel()[0] + self.quant_tables[1].ravel()[-1] | ||
| 314 | hashtable = bi_hash | 315 | hashtable = bi_hash |
| 315 | sumtable = bi_sum | 316 | sumtable = bi_sum |
| 316 | else: | 317 | else: |
mjpeg/__init__.pyc
No preview for this file type
msteg/__init__.py
| @@ -72,12 +72,14 @@ class StegBase(object): | @@ -72,12 +72,14 @@ class StegBase(object): | ||
| 72 | self.cov_jpeg.setCoefBlocks(cov_data) | 72 | self.cov_jpeg.setCoefBlocks(cov_data) |
| 73 | self.cov_jpeg.Jwrite(tgt_stego) | 73 | self.cov_jpeg.Jwrite(tgt_stego) |
| 74 | 74 | ||
| 75 | - # size_cov = os.path.getsize(tgt_stego) | ||
| 76 | - size_cov = np.size(cov_data) / 8 | ||
| 77 | - size_embedded = np.size(hid_data) | 75 | + cov_bits = np.sum(cov_data != 0) - cov_data.size / 64 |
| 76 | + self._display_rate(cov_bits, bits_cnt) | ||
| 78 | 77 | ||
| 79 | - self._display_stats("embedded", size_cov, size_embedded, | ||
| 80 | - time.time() - self.t0) | 78 | + # # size_cov = os.path.getsize(tgt_stego) |
| 79 | + # size_cov = np.size(cov_data) / 8 | ||
| 80 | + # size_embedded = np.size(hid_data) | ||
| 81 | + # self._display_stats("embedded", size_cov, size_embedded, | ||
| 82 | + # time.time() - self.t0) | ||
| 81 | 83 | ||
| 82 | except TypeError as e: | 84 | except TypeError as e: |
| 83 | raise e | 85 | raise e |
| @@ -140,27 +142,37 @@ class StegBase(object): | @@ -140,27 +142,37 @@ class StegBase(object): | ||
| 140 | 142 | ||
| 141 | def _display_stats(self, verb, cov_size, emb_size, duration): | 143 | def _display_stats(self, verb, cov_size, emb_size, duration): |
| 142 | print( | 144 | print( |
| 143 | - "%dB %s in %.2fs (%.2f kBps), embedding ratio: %.4f" % | 145 | + "%dB %s in %.2fs (%.2f kBps), embedding ratio: %.4f bpc" % |
| 144 | (emb_size, verb, duration, (emb_size / duration) / 1000., | 146 | (emb_size, verb, duration, (emb_size / duration) / 1000., |
| 145 | float(emb_size) / cov_size)) | 147 | float(emb_size) / cov_size)) |
| 146 | 148 | ||
| 147 | - # set & get | 149 | + def _display_rate(self, cov_bits, emb_bits): |
| 150 | + print "embedding rate: %.4f bpc" % (float(emb_bits) / cov_bits) | ||
| 151 | + | ||
| 152 | + # set & get | ||
| 153 | + | ||
| 154 | + | ||
| 148 | def set_key(self, key): | 155 | def set_key(self, key): |
| 149 | assert key != None | 156 | assert key != None |
| 150 | self.key = key | 157 | self.key = key |
| 151 | 158 | ||
| 159 | + | ||
| 152 | def get_key(self): | 160 | def get_key(self): |
| 153 | return self.key | 161 | return self.key |
| 154 | 162 | ||
| 163 | + | ||
| 155 | # dummy functions to please pylint | 164 | # dummy functions to please pylint |
| 156 | def _raw_embed(self, cov_data, hid_data): | 165 | def _raw_embed(self, cov_data, hid_data): |
| 157 | pass | 166 | pass |
| 158 | 167 | ||
| 168 | + | ||
| 159 | def _raw_extract(self, steg_data, num_bits): | 169 | def _raw_extract(self, steg_data, num_bits): |
| 160 | pass | 170 | pass |
| 161 | 171 | ||
| 172 | + | ||
| 162 | def _dummy_embed_hook(self, cov_data, hid_data): | 173 | def _dummy_embed_hook(self, cov_data, hid_data): |
| 163 | pass | 174 | pass |
| 164 | 175 | ||
| 176 | + | ||
| 165 | def _dummy_extract_hook(self, steg_data, num_bits): | 177 | def _dummy_extract_hook(self, steg_data, num_bits): |
| 166 | pass | 178 | pass |
msteg/__init__.pyc
No preview for this file type
msteg/steganography/F4.py
| @@ -46,12 +46,15 @@ class F4(StegBase): | @@ -46,12 +46,15 @@ class F4(StegBase): | ||
| 46 | self.cov_jpeg.setsignal(cov_data, channel='Y') | 46 | self.cov_jpeg.setsignal(cov_data, channel='Y') |
| 47 | self.cov_jpeg.Jwrite(tgt_stego) | 47 | self.cov_jpeg.Jwrite(tgt_stego) |
| 48 | 48 | ||
| 49 | - # size_cov = os.path.getsize(tgt_stego) | ||
| 50 | - size_cov = np.size(cov_data) / 8 | ||
| 51 | - size_embedded = np.size(hid_data) | ||
| 52 | - | ||
| 53 | - self._display_stats("embedded", size_cov, size_embedded, | ||
| 54 | - time.time() - self.t0) | 49 | + cov_bits = np.sum(cov_data != 0) - cov_data.size / 64 |
| 50 | + self._display_rate(cov_bits, bits_cnt) | ||
| 51 | + | ||
| 52 | + # # size_cov = os.path.getsize(tgt_stego) | ||
| 53 | + # size_cov = np.size(cov_data) / 8 | ||
| 54 | + # size_embedded = np.size(hid_data) | ||
| 55 | + # | ||
| 56 | + # self._display_stats("embedded", size_cov, size_embedded, | ||
| 57 | + # time.time() - self.t0) | ||
| 55 | 58 | ||
| 56 | except TypeError as e: | 59 | except TypeError as e: |
| 57 | raise e | 60 | raise e |
msteg/steganography/F4.pyc
No preview for this file type
msteg/steganography/F5.py
| @@ -96,12 +96,16 @@ class F5(StegBase): | @@ -96,12 +96,16 @@ class F5(StegBase): | ||
| 96 | self.cov_jpeg.setsignal(cov_data, channel='Y') | 96 | self.cov_jpeg.setsignal(cov_data, channel='Y') |
| 97 | self.cov_jpeg.Jwrite(tgt_stego) | 97 | self.cov_jpeg.Jwrite(tgt_stego) |
| 98 | 98 | ||
| 99 | - # size_cov = os.path.getsize(tgt_stego) | ||
| 100 | - size_cov = np.size(cov_data) / 8 | ||
| 101 | - size_embedded = np.size(hid_data) | 99 | + cov_bits = np.sum(cov_data != 0) - cov_data.size / 64 |
| 100 | + self._display_rate(cov_bits, bits_cnt) | ||
| 102 | 101 | ||
| 103 | - self._display_stats("embedded", size_cov, size_embedded, | ||
| 104 | - time.time() - self.t0) | 102 | + |
| 103 | + # # size_cov = os.path.getsize(tgt_stego) | ||
| 104 | + # size_cov = np.size(cov_data) / 8 | ||
| 105 | + # size_embedded = np.size(hid_data) | ||
| 106 | + # | ||
| 107 | + # self._display_stats("embedded", size_cov, size_embedded, | ||
| 108 | + # time.time() - self.t0) | ||
| 105 | 109 | ||
| 106 | except TypeError as e: | 110 | except TypeError as e: |
| 107 | raise e | 111 | raise e |
msteg/steganography/F5.pyc
No preview for this file type