Coder Social home page Coder Social logo

syvaidya / openstego Goto Github PK

View Code? Open in Web Editor NEW
1.1K 51.0 198.0 5.53 MB

OpenStego is a steganography application that provides two functionalities: a) Data Hiding: It can hide any data within an image file. b) Watermarking: Watermarking image files with an invisible signature. It can be used to detect unauthorized file copying.

Home Page: https://www.openstego.com

License: GNU General Public License v2.0

Java 99.79% Inno Setup 0.21%
digital-watermarking steganography

openstego's Introduction

OpenStego

OpenStego is a steganography application that provides two functionalities:

  1. Data Hiding: It can hide any data within an image file.

  2. Watermarking: Watermarking image files with an invisible signature. It can be used to detect unauthorized file copying.

Usage

For GUI:

Use menu shortcut for OpenStego if you used installer. For zip downloads, use the bundled batch file or shell script to launch the GUI.

openstego.bat                (Windows)
./openstego.sh               (Linux / MacOS)

For command line interface:

Refer to online documentation.

Development

Fork the repository, clone it locally and execute following to build it fully:

gradlew clean dist           (Windows)
./gradlew clean dist         (Linux / MacOS)

Note: Windows installer will be generated only if you execute build on Windows environment. It needs Inno Setup to be installed, and iscc.exe to be on PATH. If you don't want to generate Windows installer, you can skip the same using following command:

./gradlew clean dist -x distWin

Author

Samir Vaidya (samir [at] openstego.com)

Homepage

https://www.openstego.com

License

GNU General Public License 2.0 (GPL) (see LICENSE file)

Acknowledgement

The digital watermarking code in this product is based on the code provided by Peter Meerwald. Refer to his excellent thesis on watermarking: Peter Meerwald, Digital Image Watermarking in the Wavelet Transfer Domain, Master's Thesis, Department of Scientific Computing, University of Salzburg, Austria, January 2001.

openstego's People

Contributors

superzhangzl avatar syvaidya avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openstego's Issues

java.lang.NullPointerException

java.lang.NullPointerException
	at com.openstego.desktop.util.UserPreferences.init(UserPreferences.java:57)
	at com.openstego.desktop.OpenStego.main(OpenStego.java:429)

I just installed it

Watermarking never works

Hello,

I was not able to make any watermarks. It always ended with error messages.

Steps to reproduce:

  1. generate signature file. I used passphrase "Test" and managed to generate it successfully. (attached)
  2. Download image file: http://farm1.staticflickr.com/616/21598757660_12000ec088_o_d.png (if it is not opening I can publish this image in my web server, let me know)
  3. Try to create digital watermark using the image (step 2) and the sig. file (step 1).

Expected outcome: new file with watermark is created

Real outcome: no file is created and the following Java errors are displayed:

Caused by: java.lang.OutOfMemoryError: Java heap space
at net.sourceforge.openstego.util.dwt.Image.(Image.java:37)
at net.sourceforge.openstego.util.dwt.DWT.forwardDWT(DWT.java:99)
at net.sourceforge.openstego.plugin.dwtdugad.DWTDugadPlugin.embedData(DWTDugadPlugin.java:126)
at net.sourceforge.openstego.OpenStego.embedMark(OpenStego.java:213)
at net.sourceforge.openstego.OpenStego.embedMark(OpenStego.java:257)
at net.sourceforge.openstego.ui.OpenStegoUI$3.doInBackground(OpenStegoUI.java:604)
at javax.swing.SwingWorker$1.call(SwingWorker.java:296)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at javax.swing.SwingWorker.run(SwingWorker.java:335)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at net.sourceforge.openstego.ui.OpenStegoUI$3.done(OpenStegoUI.java:635)
at javax.swing.SwingWorker$5.run(SwingWorker.java:737)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(SwingWorker.java:832)
at sun.swing.AccumulativeRunnable.run(AccumulativeRunnable.java:112)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(SwingWorker.java:842)
at javax.swing.Timer.fireActionPerformed(Timer.java:312)
at javax.swing.Timer$DoPostEvent.run(Timer.java:244)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:312)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:745)
at java.awt.EventQueue.access$300(EventQueue.java:103)
at java.awt.EventQueue$3.run(EventQueue.java:706)
at java.awt.EventQueue$3.run(EventQueue.java:704)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:715)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Any idea how can it be fixed? I was not able to find an image in my collection which I can sign :-( Always out-of-memory errors. I have tried jpg also.

OpenStego v0.6.1 was used.

Command "Errors"

Just installed the RPM and extraction worked normally, but there are a couple of commandline errors:

$ rpm -q -i openstego
Name        : openstego
Epoch       : 0
Version     : 0.8.2
Release     : 1
Architecture: noarch
Install Date: Sat 11 Dec 2021 03:44:44 AM CET
Group       : utils
Size        : 213839
License     : GPLv2
Signature   : (none)
Source RPM  : openstego-0.8.2-1-src.rpm
Build Date  : Sat 27 Nov 2021 10:08:13 AM CET
Build Host  : 
Packager    : Samir Vaidya ([email protected])
Vendor      : 
URL         : https://www.openstego.com
Summary     : OpenStego
Description :

$ openstego readformats
No plugin specified
$ openstego writeformats
No plugin specified

$ java --version
openjdk 11.0.11 2021-04-20
OpenJDK Runtime Environment 18.9 (build 11.0.11+9)
OpenJDK 64-Bit Server VM 18.9 (build 11.0.11+9, mixed mode, sharing)

java.lang.NullPointerException in com.openstego.desktop.util.UserPreferences.init

java.lang.NullPointerException
	at com.openstego.desktop.util.UserPreferences.init(UserPreferences.java:57)
	at com.openstego.desktop.OpenStego.main(OpenStego.java:429)
aep@stark: ~ java -version 
openjdk version "1.8.0_222"
OpenJDK Runtime Environment (build 1.8.0_222-b05)
OpenJDK 64-Bit Server VM (build 25.222-b05, mixed mode)

Error: Illegal key size

I get this error when trying to encrypt with AES-256. I used the latest Java runtime environment.

Detected As Malicious

Is this false positive detection?
Scan by Hybrid Analysis.
Hybrid Analysis Link - HERE
Scan by Virus Total.
Virus Total Link - HERE

Hybrid Analysis Image
image

Virus Total Image
image

-p not working

-p "123456" doesn't work, the cmd or powershell doesn't recognizes and request a password

example: java -jar openstego.jar extract -sf "a.bmp" -p "123456"

heap overflow

Hi,
running Arch Linux.

[knezi@holly ~]$ java -version
java version "1.7.0_101"
OpenJDK Runtime Environment (IcedTea 2.6.6) (Arch Linux build 7.u101_2.6.6-1-x86_64)
OpenJDK 64-Bit Server VM (build 24.95-b01, mixed mode)

If I try to hide a file (82 bytes) into a 9MB image, the both cores of cpu are at 100% and after a while I get:

[knezi@holly ~]$  openstego embed -mf pas -cf CIMG3020.JPG 
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
        at net.sourceforge.openstego.plugin.randlsb.RandomLSBOutputStream.writeHeader(RandomLSBOutputStream.java:157)
        at net.sourceforge.openstego.plugin.randlsb.RandomLSBOutputStream.<init>(RandomLSBOutputStream.java:116)
        at net.sourceforge.openstego.plugin.randlsb.RandomLSBPlugin.embedData(RandomLSBPlugin.java:95)
        at net.sourceforge.openstego.OpenStego.embedData(OpenStego.java:137)
        at net.sourceforge.openstego.OpenStego.embedData(OpenStego.java:181)
        at net.sourceforge.openstego.OpenStegoCmd.execute(OpenStegoCmd.java:181)
        at net.sourceforge.openstego.OpenStego.main(OpenStego.java:516)

Consistently receiving Java Out of Memory Errors

I saw this program and thought I would give it a try. I have run a number of tests. The first test ran fine.

Test 1. The image I used to hide my data was 474x296 pixels with a bit depth of 24. Using AES 128 encryption. Test completed.

Test 2. The image I used to hide my data was 9004x11590 pixels with a bit depth of 36. Using AES 256 encryption. Test never completed. I received the following error: java.lang.outofmemoryerror:java heap space.

Test 3. The image I used to hide my data was 2529x3522 pixels with a bit depth of 24. Using AES 128 encryption. Test never completed. I received the following error: java.lang.outofmemoryerror: GC overhead limit exceeded.

It seems to me there is a limit to the size of the image one uses to hide data within.

Also, it would be nice if the documentation included the fact you need Java installed to run the program. The wiki here on Github makes no mention of needing the Java runtime environment.

Thanks

Unable to see/find extracted txt file.

I hid some data within a picture. Operation showed that it exceeded, but when I went to extract the data message says successful but had a (null) in the successful message. And there was no extractd file.
Says: Message successfully extracted from the cover file: null
Environment: Windows 10
Password Used: Yes.

Java Errors Found in Window:
java.util.concurrent.ExecutionException: net.sourceforge.openstego.OpenStegoException: java.io.FileNotFoundException: C:\Temp\Extracted.txt\Boot Time Errors.txt (The system cannot find the path specified)
at java.util.concurrent.FutureTask.report(Unknown Source)
at java.util.concurrent.FutureTask.get(Unknown Source)
at javax.swing.SwingWorker.get(Unknown Source)
at net.sourceforge.openstego.ui.OpenStegoUI$2.done(OpenStegoUI.java:395)
at javax.swing.SwingWorker$5.run(Unknown Source)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.run(Unknown Source)
at sun.swing.AccumulativeRunnable.run(Unknown Source)
at javax.swing.SwingWorker$DoSubmitAccumulativeRunnable.actionPerformed(Unknown Source)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEventImpl(Unknown Source)
at java.awt.EventQueue.access$500(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.awt.EventQueue$3.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
Caused by: net.sourceforge.openstego.OpenStegoException: java.io.FileNotFoundException: C:\Temp\Extracted.txt\Boot Time Errors.txt (The system cannot find the path specified)
at net.sourceforge.openstego.util.CommonUtil.writeFile(CommonUtil.java:138)
at net.sourceforge.openstego.util.CommonUtil.writeFile(CommonUtil.java:108)
at net.sourceforge.openstego.ui.OpenStegoUI$2.doInBackground(OpenStegoUI.java:379)
at javax.swing.SwingWorker$1.call(Unknown Source)
at java.util.concurrent.FutureTask.run(Unknown Source)
at javax.swing.SwingWorker.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.FileNotFoundException: C:\Temp\Extracted.txt\Boot Time Errors.txt (The system cannot find the path specified)
at java.io.FileOutputStream.open0(Native Method)
at java.io.FileOutputStream.open(Unknown Source)
at java.io.FileOutputStream.(Unknown Source)
at java.io.FileOutputStream.(Unknown Source)
at net.sourceforge.openstego.util.CommonUtil.writeFile(CommonUtil.java:131)
... 8 more

Problem with .bat file on windows

Hello all,

I wanted to run Openstego and then ran into the JAVA_HOME is not set. So I went to set it up in env settings.
After that, the message changed for JAVA_HOME is set to an invalid directory even if it was set to the good one.

So after investigating a bit I found out that a line is at the wrong place in the .bat file so I replaced this :

if defined JAVA_HOME goto findJavaFromJavaHome

set JAVA_EXE=java
if "%1"=="" set JAVA_EXE=javaw

by this :

set JAVA_EXE=java

if defined JAVA_HOME goto findJavaFromJavaHome

if "%1"=="" set JAVA_EXE=javaw

and it worked. I think it's because, JAVA_HOME was defined and then the program was executing this line :

set JAVA_EXE=%JAVA_HOME%\bin\%JAVA_EXE%.exe

but as the JAVA_EXE was never set because it was placed after the "if defined" instruction, then this line was producing an error.

I think this should be fixed as shown. Sorry if my english is not accurate, not my native language tho.

javax.imageio.IIOException: Missing Huffman code table entry

When I try to embed a watermark from a jpeg image it will work if I don't specify the file extension but it will output the original image to bmp. If I try to save the image into a jpeg file it will throw an error:

javax.imageio.IIOException: Missing Huffman code table entry

See screenshot

Output Stego File as a .JPEG

Is it possible to output the hidden message file as a .JPEG? The .PNG file format doesn't support metadata fields. Well, not as many fields. .PNG is omitting some of my metadata info and it's critical that the information be found in the file. This issue is throwing off my workflow too.

NO openstego.jar file

whenever I try to run the application using the commands, it returns an error
UNABLE TO ACCESS openstego.jar
also this .jar file is not available in the cloned folder

-p not working

i have the same problem that the other user. the command to embed and extract with password seems that it is not working. embed with -p generate a image without password and extract always ask for a password (it doesnt use the given password). to try to debugging i use the gui to generate a image with password and extract with the command line.

Increase the usage of compound assignment operators

๐Ÿ‘€ Some source code analysis tools can help to find opportunities for improving software components.
๐Ÿ’ญ I propose to increase the usage of compound operators accordingly.

diff --git a/src/main/java/com/openstego/desktop/plugin/dctlsb/DctLSBInputStream.java b/src/main/java/com/openstego/desktop/plugin/dctlsb/DctLSBInputStream.java
index f061a95..58f9905 100644
--- a/src/main/java/com/openstego/desktop/plugin/dctlsb/DctLSBInputStream.java
+++ b/src/main/java/com/openstego/desktop/plugin/dctlsb/DctLSBInputStream.java
@@ -90,8 +90,8 @@ public class DctLSBInputStream extends InputStream {
         this.imgHeight = imgData.getHeight();
 
         // Calculate widht and height rounded to 8
-        this.imgWidth = this.imgWidth - (this.imgWidth % DCT.NJPEG);
-        this.imgHeight = this.imgHeight - (this.imgHeight % DCT.NJPEG);
+        this.imgWidth -= (this.imgWidth % DCT.NJPEG);
+        this.imgHeight -= (this.imgHeight % DCT.NJPEG);
 
         this.y = ImageUtil.getYuvFromImage(imgData).get(0);
 
diff --git a/src/main/java/com/openstego/desktop/plugin/dwtkim/DWTKimPlugin.java b/src/main/java/com/openstego/desktop/plugin/dwtkim/DWTKimPlugin.java
index 813ec5c..b68c9f5 100644
--- a/src/main/java/com/openstego/desktop/plugin/dwtkim/DWTKimPlugin.java
+++ b/src/main/java/com/openstego/desktop/plugin/dwtkim/DWTKimPlugin.java
@@ -362,7 +362,7 @@ public class DWTKimPlugin extends WMImagePluginTemplate {
             double r;
 
             this.watermark = new double[this.watermarkLength];
-            for (int cnt = 0; cnt < (this.watermarkLength >> 1); cnt = cnt + 2) {
+            for (int cnt = 0; cnt < (this.watermarkLength >> 1); cnt += 2) {
                 do {
                     x1 = 2.0 * ((rand.nextInt() & Integer.MAX_VALUE) / (Integer.MAX_VALUE + 1.0)) - 1.0;
                     x2 = 2.0 * ((rand.nextInt() & Integer.MAX_VALUE) / (Integer.MAX_VALUE + 1.0)) - 1.0;
diff --git a/src/main/java/com/openstego/desktop/ui/OpenStegoUI.java b/src/main/java/com/openstego/desktop/ui/OpenStegoUI.java
index f9b52e3..fa97863 100644
--- a/src/main/java/com/openstego/desktop/ui/OpenStegoUI.java
+++ b/src/main/java/com/openstego/desktop/ui/OpenStegoUI.java
@@ -249,7 +249,7 @@ public class OpenStegoUI extends OpenStegoFrame {
                     // If the output filename extension is not supported for writing, then change the same
                     if (!dhPlugin.getWritableFileExtensions()
                             .contains(outputFileName.substring(outputFileName.lastIndexOf('.') + 1).toLowerCase())) {
-                        outputFileName = outputFileName + "." + dhPlugin.getWritableFileExtensions().get(0);
+                        outputFileName += "." + dhPlugin.getWritableFileExtensions().get(0);
                     }
 
                     if ((new File(outputFileName)).exists()) {
@@ -512,7 +512,7 @@ public class OpenStegoUI extends OpenStegoFrame {
 
                     // If the output filename extension is not supported for writing, then change the same
                     if (!wmPlugin.getWritableFileExtensions().contains(outputFileName.substring(outputFileName.lastIndexOf('.') + 1).toLowerCase())) {
-                        outputFileName = outputFileName + "." + wmPlugin.getWritableFileExtensions().get(0);
+                        outputFileName += "." + wmPlugin.getWritableFileExtensions().get(0);
                     }
 
                     if ((new File(outputFileName)).exists()) {
@@ -792,13 +792,13 @@ public class OpenStegoUI extends OpenStegoFrame {
             if ((action.equals(OpenStegoFrame.ActionCommands.BROWSE_DH_EMB_STGFILE) && (coverFileListSize <= 1))
                     || (action.equals(OpenStegoFrame.ActionCommands.BROWSE_WM_EMB_OUTFILE) && (wmInputFileListSize <= 1))) {
                 if (!plugin.getWritableFileExtensions().contains(fileName.substring(fileName.lastIndexOf('.') + 1).toLowerCase())) {
-                    fileName = fileName + "." + plugin.getWritableFileExtensions().get(0);
+                    fileName += "." + plugin.getWritableFileExtensions().get(0);
                 }
             }
             // Check for valid extension for signature file
             if (action.equals(OpenStegoFrame.ActionCommands.BROWSE_WM_GSG_SIGFILE)) {
                 if (!fileName.toLowerCase().endsWith(SIG_FILE_EXTENSION)) {
-                    fileName = fileName + SIG_FILE_EXTENSION;
+                    fileName += SIG_FILE_EXTENSION;
                 }
             }
             textField.setText(fileName);
diff --git a/src/main/java/com/openstego/desktop/util/CommonUtil.java b/src/main/java/com/openstego/desktop/util/CommonUtil.java
index eff9ce4..236c90a 100644
--- a/src/main/java/com/openstego/desktop/util/CommonUtil.java
+++ b/src/main/java/com/openstego/desktop/util/CommonUtil.java
@@ -167,7 +167,7 @@ public class CommonUtil {
     public static int byteToInt(int b) {
         int i = b;
         if (i < 0) {
-            i = i + 256;
+            i += 256;
         }
         return i;
     }
diff --git a/src/main/java/com/openstego/desktop/util/dct/DCT.java b/src/main/java/com/openstego/desktop/util/dct/DCT.java
index 5672941..1c7701d 100644
--- a/src/main/java/com/openstego/desktop/util/dct/DCT.java
+++ b/src/main/java/com/openstego/desktop/util/dct/DCT.java
@@ -679,10 +679,10 @@ public class DCT {
 
             m = len >> 1;
             while (j > m) {
-                j = j - m;
+                j -= m;
                 m = (m + 1) >> 1;
             }
-            j = j + m;
+            j += m;
         }
     }
 
@@ -803,7 +803,7 @@ public class DCT {
                     ii2 = ii1 + wingspan;
                     T = Cfac * f[ii2];
                     f[ii2] = f[ii1] - T;
-                    f[ii1] = f[ii1] + T;
+                    f[ii1] += T;
                     baseptr += increment;
                 }
             }
@@ -835,7 +835,7 @@ public class DCT {
                     ii2 = ii1 + wingspan;
                     T = f[ii2];
                     f[ii2] = Cfac * (f[ii1] - T);
-                    f[ii1] = f[ii1] + T;
+                    f[ii1] += T;
                     baseptr += increment;
                 }
             }
diff --git a/src/main/java/com/openstego/desktop/util/dwt/DWTUtil.java b/src/main/java/com/openstego/desktop/util/dwt/DWTUtil.java
index cb4ecbf..e97f801 100644
--- a/src/main/java/com/openstego/desktop/util/dwt/DWTUtil.java
+++ b/src/main/java/com/openstego/desktop/util/dwt/DWTUtil.java
@@ -549,8 +549,8 @@ public class DWTUtil {
         int h = height;
 
         while ((w % 2 == 0) && (h % 2 == 0)) {
-            w = w / 2;
-            h = h / 2;
+            w /= 2;
+            h /= 2;
             level++;
         }
 

Image quality decreased drastically

Hi,
I realized the output images of digital watermarking are much smaller than the input images with worse JPG quality. It would be great to preserve image quality. At least keeping JPG quality similar to input image.

Best,
SarenT

Deb package install fails

Hello,

I am having trouble installing Open Stego on Debian 9.3 (Stretch).

I downloaded openstego_0.7.2-1_amd64.deb from https://github.com/syvaidya/openstego/releases and installed it using the following:

$ sudo dpkg -i openstego_0.7.2-1_amd64.deb 
[sudo] password for aaron: 
Selecting previously unselected package openstego.
(Reading database ... 126107 files and directories currently installed.)
Preparing to unpack openstego_0.7.2-1_amd64.deb ...
Unpacking openstego (0.7.2-1) ...
Setting up openstego (0.7.2-1) ...
Processing triggers for desktop-file-utils (0.23-1) ...
Processing triggers for mime-support (3.60) ...

$ sudo apt-get install -f
Reading package lists... Done
Building dependency tree       
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

It created the folder /usr/share/openstego and created a link in my Applications dock. When I click the link to open it, I see this error

screenshot_2018-01-02_11-07-28

I tried to run the script manually and cannot.

$ ls /usr/share/openstego/
lib  openstego  openstego.png

$ /usr/share/openstego/openstego 
bash: /usr/share/openstego/openstego: /bin/sh^M: bad interpreter: No such file or directory

I looked at the contents of the script

$ cat /usr/share/openstego/openstego
#!/bin/sh
DIR=$( (cd -P $(dirname $0) && pwd) )
java -Xmx1024m -jar ${DIR}/lib/openstego.jar $*

and decided to try to open the jar file manually

$ java -Xmx1024m -jar openstego.jar 
java.lang.NullPointerException
	at com.openstego.desktop.util.UserPreferences.init(UserPreferences.java:57)
	at com.openstego.desktop.OpenStego.main(OpenStego.java:429)

I'm sure the problem is that I'm doing something wrong, but I'm not sure what it could be. I find it very odd that the files all seem to be there but none of them seem to work.

Do you think it's a problem with my environment or the deb file?

Thanks,

Aaron

Support of 16bit color depth

Hey,
I am freaking amazed by this tool.
And I would like to use it for a Creative Commons project.
But due to quality of the images I need them to still be at 16bit color depth after "watermarking" them.

Is that a possibility or would that take to much efford to develope?

Error Message After Install

Am using Xubuntu 14.04.5 and installed openstego. Received following message when attempting to start if from the menu item (found under Graphics):

Failed to execute command "/usr/share/openstego/openstego".
Failed to execute child process "/usr/share/openstego/openstego" (No such file or directory)

What should be done to correct this problem?

Thank you.

missing openstego.jar file

The /lib dir has no openstego.jar file. Cannot get the .sh to function. It seems the file exists in .71 but not .72 & master

Watermarking breaks JPG images (horizontal color bands)

Hello!

I am trying to watermark my photos with openstego v0.7.2 under the Linux command-line. However about 80-90% of the JPG images show light to strong distortions such as horizontal color bands. Here is an example:

After watermarking:
https://www.flickr.com/photos/turbopunsch/40801625282/in/photostream/
https://c1.staticflickr.com/5/4777/40801625282_a9b662bfab_b.jpg

Before:
https://www.flickr.com/photos/turbopunsch/40801624302/in/photostream/
https://c1.staticflickr.com/5/4782/40801624302_8d704b0168_b.jpg

Only about 10% of my images are OK and have 100% signature strength. The other images show either visible image distortions or the signature strength is anywhere between 0% and 100%. I tried different images sizes and JPG compression ratios, but can not see any difference. Am I doing something wrong?

PS: I tried to increase the maximum memory allocation for Java with the option -Xmx2048m, but that does not make any difference.

no file extracted

"message file successfully extracted from cover file: null"

correct password, win10.

i see this was reported before, and im pretty sure i did a test extraction after i made the file originally.

file not found

According to openstego.sh, file lib/openstego.jar not found. there are ant-deb-0.0.1.jar and nsisant-1.3.jar.
Did you forget to delete lib/openstego.jar from .gitignore?

java.lang.OutOfMemoryError: Java heap space

Having an issue in v0.7.3 where I am getting a java.lang.OutOfMemoryError. This happens in Data Hiding and Digital Watermarking. I am running Java Version 1.8.0_241. Running 16GB of Ram, OpenStego fully utilizes the CPU and takes about 1200 MB of ram before erroring out.
Capture

Blind detection

You're using Dugad's algorithm to embed a watermark into images, as far as I can read your source. Dugad is a blind watermarking technique. I shouldn't need the signature file to read the watermark from the image IMO. Can you adjust the GUI/command line options towards optional signature files?

ERROR: JAVA_HOME

Hi,

I can start 0.8.0 but not following versions (0.8.2 and 0.8.3) on 1 boot W10 and no one on another boot W10.

I updated Java runtime, uninstalled, cleaned, reinstalled, but nothing. I did on 2 Windows 10 (dual boot).

cscript_2022-01-30_15-13-12
cscript_2022-01-30_15-19-40
javaw_2022-01-30_15-33-55

Change jpeg output file quality (currently set to default = 75)

Is there a way to change jpeg quality setting?

I tried to update the const QUALITY in DCT.java (from 75 to 95) and regenerate the .jar using build.xml, but when I use "Digital Watermarking" the output file sizes are still the same (very little size compared to my original files encoded with quality=95).

It would be nice to be able to configure the wanted jped output files quality, from OpenStego user interface.

Feedback : Digital watermarking (Beta)

Hi, thanks for this nice tool, and:

(I have read issues #17 #11 #10 and This:"If a digital watermark distorts the carrier signal in a way that it becomes perceivable, it is of no use." there:https://www.openstego.com/concepts.html

Here is some feedback :
1/ it is clearly visible that the jpg image file has been modified, especially when picture has large plain surfaces
2/ openstego.ini is created in the user folder but file is empty (why ?)
3/ can't change jpeg quality (consequence of 2/ , may solve 1/) how to ?
4/ metadatas are gone (there is a workaround = put them after, but the convenient way would be that just the picture data is modified, enhancement?)
5/ on one png file, transparency is gone after watermarking
6/ enhancement : select allowed zones on the image to be watermarked, when some big part can easily be cropped, one can skip this zone.

Config=
OpenStego v0.7.2
Java VM v8
Windows v8.1 64b

How resilient is the embedding of message into image ?

I wonder if it's possible to extract the embedded message even if the image has been scaled down and/or cropped... and if yes, how much an image can be resized and cropped before the message can't be extracted anymore ?

Fail in Ubuntu

After downloading openstego_0.7.3-1_amd64.deb and install it, when i try to open it i get this error:


Exception in thread "main" java.awt.AWTError: Assistive Technology not found: org.GNOME.Accessibility.AtkWrapper
	at java.desktop/java.awt.Toolkit.newAWTError(Toolkit.java:472)
	at java.desktop/java.awt.Toolkit.fallbackToLoadClassForAT(Toolkit.java:488)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:183)
	at java.base/java.util.stream.ReferencePipeline$2$1.accept(ReferencePipeline.java:177)
	at java.base/java.util.HashMap$KeySpliterator.forEachRemaining(HashMap.java:1608)
	at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:484)
	at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:474)
	at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
	at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)
	at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
	at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:497)
	at java.desktop/java.awt.Toolkit.loadAssistiveTechnologies(Toolkit.java:532)
	at java.desktop/java.awt.Toolkit.getDefaultToolkit(Toolkit.java:613)
	at java.desktop/javax.swing.UIManager.getSystemLookAndFeelClassName(UIManager.java:660)
	at com.openstego.desktop.OpenStego.main(OpenStego.java:433)
Caused by: java.lang.ClassNotFoundException: org.GNOME.Accessibility.AtkWrapper
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:190)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:499)
	at java.base/java.lang.Class.forName0(Native Method)
	at java.base/java.lang.Class.forName(Class.java:374)
	at java.desktop/java.awt.Toolkit.fallbackToLoadClassForAT(Toolkit.java:485)
	... 13 more


I tried the command dos2unix in path /usr/share/openstego/openstego
But I get the same result

`LSB` plugin not available from RPM?

I see the LSB plugin in the source, but it doesn't seem to be available from the RPM install. Is this intended/expected?

$ openstego algorithms
RandomLSB (Purpose: Data Hiding) - Image based steganography plugin using Random Least Significant Bit algorithm
DWTDugad (Purpose: Watermarking) - Digital watermarking plugin using DWT (Discrete Wavelet Transforms) based on algorithm by Dugad

Fatal error when running on Ubuntu 16.04.2 (64-bit) and Java 9

Installed OpenStego using the deb from the 0.7.1 release in a desktop running an Ubuntu 16.04.2 LTS (64-bit). It did not run when using the GUI (.desktop file), so I tried using the CLI, and it gave the following error:

$ java -jar /usr/share/openstego/lib/openstego.jar 
net.sourceforge.openstego.OpenStegoException: java.lang.NullPointerException
	at net.sourceforge.openstego.util.PluginManager.loadPlugins(PluginManager.java:65)
	at net.sourceforge.openstego.OpenStego.main(OpenStego.java:427)
Caused by: java.lang.NullPointerException
	at net.sourceforge.openstego.util.CommonUtil.getStreamBytes(CommonUtil.java:54)
	at net.sourceforge.openstego.util.PluginManager.loadPlugins(PluginManager.java:51)
	... 1 more

As a reference:

$ java  -version
java version "9"
Java(TM) SE Runtime Environment (build 9+175)
Java HotSpot(TM) 64-Bit Server VM (build 9+175, mixed mode)
$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.2 LTS
Release:	16.04
Codename:	xenial

FYI - It does work when using Java 8 on the same machine.

Compatibility with previous versions

I have a task for my university module that requires I find hidden files. I have tried using the version they provided of openstego (6.1) but I get java errors and with 7.3 it tells me the version is incompatible. My assumption is the removal of DES Encryption.
Would it be possible to allow this type, for example a check box to choose this but just make it not the default? Surely more options is better?
I'm using Kali if that helps with any of the above.

Heap out of memory error

Hi,
I try Openstego to hide a message in JPEG file of 9 Mbytes. The process hang up with an error message "java.lang.OutOfMemoryError".
I try to raise the size of the heap in the .bat file Xmx2048m or Xmx2g. The application does not start up anymore.

The application processes acurately small jpeg files.

Best regards

Linux - Windows versions not cross compatible?

Just stumbled onto this tool to hide sensitive information.

For security reasons I want to use an air-gapped Linux machine to create the files with hidden data, which runs Linux Lite 5.4 from the live USB image. Using OpenStego v0.8.0 on both Windows and Linux.
Testing multiple possibilities to extract the data reliably I found that trying to extract the Linux-created hidden file on Windows 10 (build 10.0.19042.985, 20H2), always results in an error after multiple tries with different image files:

Extract on Windows error

The (same) file can be created and extracted on Linux without issues:

Create on linux

Extract on linux

Below is the Linux-created .png file with hidden data, the password is test123 and the embedded data is a file named "New File" which can be opened in a text editor to reveal "test 1 2 3 4 5 6 7 8 9 0".
https://drive.google.com/file/d/1V-np_zQBlDpuMTIqfjsN3Io41txlLg5j/view?usp=sharing

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.