Class OpenStegoPlugin

  • Direct Known Subclasses:
    DataHidingPlugin, WatermarkingPlugin

    public abstract class OpenStegoPlugin
    extends Object
    Abstract class for stego plugins for OpenStego. Abstract methods need to be implemented to add support for more steganographic algorithms
    • Field Detail

      • config

        protected OpenStegoConfig config
        Configuration data to be used while embedding / extracting data
    • Constructor Detail

      • OpenStegoPlugin

        public OpenStegoPlugin()
    • Method Detail

      • getName

        public abstract String getName()
        Gives the name of the plugin
        Returns:
        Name of the plugin
      • getPurposes

        public abstract List<OpenStegoPlugin.Purpose> getPurposes()
        Gives the purpose(s) of the plugin
        Returns:
        Purpose(s) of the plugin
      • getDescription

        public abstract String getDescription()
        Gives a short description of the plugin
        Returns:
        Short description of the plugin
      • getPurposesLabel

        public final String getPurposesLabel()
        Gives the display label for purpose(s) of the plugin
        Returns:
        Display lable for purpose(s) of the plugin
      • embedData

        public abstract byte[] embedData​(byte[] msg,
                                         String msgFileName,
                                         byte[] cover,
                                         String coverFileName,
                                         String stegoFileName)
                                  throws OpenStegoException
        Method to embed the message into the cover data
        Parameters:
        msg - Message to be embedded
        msgFileName - Name of the message file. If this value is provided, then the filename should be embedded in the cover data
        cover - Cover data into which message needs to be embedded
        coverFileName - Name of the cover file
        stegoFileName - Name of the output stego file
        Returns:
        Stego data containing the message
        Throws:
        OpenStegoException
      • extractMsgFileName

        public abstract String extractMsgFileName​(byte[] stegoData,
                                                  String stegoFileName)
                                           throws OpenStegoException
        Method to extract the message file name from the stego data
        Parameters:
        stegoData - Stego data containing the message
        stegoFileName - Name of the stego file
        Returns:
        Message file name
        Throws:
        OpenStegoException
      • extractData

        public abstract byte[] extractData​(byte[] stegoData,
                                           String stegoFileName,
                                           byte[] origSigData)
                                    throws OpenStegoException
        Method to extract the message from the stego data
        Parameters:
        stegoData - Stego data containing the message
        stegoFileName - Name of the stego file
        origSigData - Optional signature data file for watermark
        Returns:
        Extracted message
        Throws:
        OpenStegoException
      • generateSignature

        public abstract byte[] generateSignature()
                                          throws OpenStegoException
        Method to generate the signature data. This method needs to be implemented only if the purpose of the plugin is Watermarking
        Returns:
        Signature data
        Throws:
        OpenStegoException
      • checkMark

        public final double checkMark​(byte[] stegoData,
                                      String stegoFileName,
                                      byte[] origSigData)
                               throws OpenStegoException
        Method to check the correlation for the given image and the original signature
        Parameters:
        stegoData - Stego data containing the watermark
        stegoFileName - Name of the stego file
        origSigData - Original signature data
        Returns:
        Correlation
        Throws:
        OpenStegoException
      • getWatermarkCorrelation

        public abstract double getWatermarkCorrelation​(byte[] origSigData,
                                                       byte[] watermarkData)
                                                throws OpenStegoException
        Method to check the correlation between original signature and the extracted watermark
        Parameters:
        origSigData - Original signature data
        watermarkData - Extracted watermark data
        Returns:
        Correlation
        Throws:
        OpenStegoException
      • getHighWatermarkLevel

        public abstract double getHighWatermarkLevel()
                                              throws OpenStegoException
        Method to get correlation value which above which it can be considered that watermark strength is high
        Returns:
        High watermark
        Throws:
        OpenStegoException
      • getLowWatermarkLevel

        public abstract double getLowWatermarkLevel()
                                             throws OpenStegoException
        Method to get correlation value which below which it can be considered that watermark strength is low
        Returns:
        Low watermark
        Throws:
        OpenStegoException
      • getDiff

        public abstract byte[] getDiff​(byte[] stegoData,
                                       String stegoFileName,
                                       byte[] coverData,
                                       String coverFileName,
                                       String diffFileName)
                                throws OpenStegoException
        Method to get difference between original cover file and the stegged file
        Parameters:
        stegoData - Stego data containing the embedded data
        stegoFileName - Name of the stego file
        coverData - Original cover data
        coverFileName - Name of the cover file
        diffFileName - Name of the output difference file
        Returns:
        Difference data
        Throws:
        OpenStegoException
      • canHandle

        public abstract boolean canHandle​(byte[] stegoData)
        Method to find out whether given stego data can be handled by this plugin or not
        Parameters:
        stegoData - Stego data containing the message
        Returns:
        Boolean indicating whether the stego data can be handled by this plugin or not
      • getReadableFileExtensions

        public abstract List<String> getReadableFileExtensions()
                                                        throws OpenStegoException
        Method to get the list of supported file extensions for reading
        Returns:
        List of supported file extensions for reading
        Throws:
        OpenStegoException
      • getWritableFileExtensions

        public abstract List<String> getWritableFileExtensions()
                                                        throws OpenStegoException
        Method to get the list of supported file extensions for writing
        Returns:
        List of supported file extensions for writing
        Throws:
        OpenStegoException
      • populateStdCmdLineOptions

        public abstract void populateStdCmdLineOptions​(CmdLineOptions options)
                                                throws OpenStegoException
        Method to populate the standard command-line options used by this plugin
        Parameters:
        options - Existing command-line options. Plugin-specific options will get added to this list
        Throws:
        OpenStegoException
      • getEmbedOptionsUI

        public abstract PluginEmbedOptionsUI getEmbedOptionsUI​(OpenStegoUI stegoUI)
                                                        throws OpenStegoException
        Method to get the UI object for "Embed" action specific to this plugin. This UI object will be embedded inside the main OpenStego GUI
        Parameters:
        stegoUI - Reference to the parent OpenStegoUI object
        Returns:
        UI object specific to this plugin for "Embed" action
        Throws:
        OpenStegoException
      • getConfigClass

        public abstract Class<? extends OpenStegoConfig> getConfigClass()
        Method to get the configuration class specific to this plugin
        Returns:
        Configuration class specific to this plugin
      • getConfig

        public final OpenStegoConfig getConfig()
        Get method for config
        Returns:
        Configuration data