从隐写数据中提取消息
(self, stego_data: bytes,
stego_filename: Optional[str])
| 45 | return gzip.compress(data) |
| 46 | |
| 47 | def extract_data(self, stego_data: bytes, |
| 48 | stego_filename: Optional[str]) -> List: |
| 49 | """从隐写数据中提取消息""" |
| 50 | if Purpose.DATA_HIDING not in self.plugin.get_purposes(): |
| 51 | raise StegaPyException( |
| 52 | "插件不支持数据隐藏", |
| 53 | StegaPyErrors.PLUGIN_DOES_NOT_SUPPORT_DH, |
| 54 | self.NAMESPACE |
| 55 | ) |
| 56 | |
| 57 | try: |
| 58 | # 提取数据 |
| 59 | msg_filename = self.plugin.extract_msg_filename(stego_data, stego_filename) |
| 60 | msg = self.plugin.extract_data(stego_data, stego_filename, None) |
| 61 | |
| 62 | # 解密数据(如果启用) |
| 63 | if self.config.is_use_encryption(): |
| 64 | if not self.config.get_password(): |
| 65 | raise StegaPyException( |
| 66 | "解密需要密码", |
| 67 | StegaPyErrors.INVALID_PASSWORD, |
| 68 | self.NAMESPACE |
| 69 | ) |
| 70 | crypto = CryptoUtil(self.config.get_password(), |
| 71 | self.config.get_encryption_algorithm()) |
| 72 | msg = crypto.decrypt(msg) |
| 73 | |
| 74 | # 解压数据(如果启用) |
| 75 | if self.config.is_use_compression(): |
| 76 | msg = self._decompress_data(msg) |
| 77 | |
| 78 | return [msg_filename, msg] |
| 79 | except StegaPyException: |
| 80 | raise |
| 81 | except Exception as e: |
| 82 | raise StegaPyException(str(e), StegaPyErrors.UNHANDLED_EXCEPTION, self.NAMESPACE) |
| 83 |
nothing calls this directly
no test coverage detected