Beispiel #1
0
 public NLSBSteganographerDecoder(FileInDecodingStream audioFileStream, Stream dataFileStreamOut, byte[] key)
 {
     AudioFileStream   = audioFileStream;
     DataFileStreamOut = dataFileStreamOut;
     Rng = new KeyedRng(key);
     AudioFileStream.MetadataCallback = MetadataCallback;
 }
 private void CleanupDecoder()
 {
     dataFileStream.Close();
     AudioFileInStream.Close();
     AudioFileInStream = null;
     dataFileStream    = null;
     AudioFileName     = null;
     DataFileName      = null;
     DisplayAudioFileBox.Invoke((Action <object>)(unused => DisplayAudioFileBox.Text = ""), 0);
     DisplayDataFileBox.Invoke((Action <object>)(unused => DisplayDataFileBox.Text   = ""), 0);
     Decoder = null;
 }
 private void SetupAudioStreams(int dataFileSize)
 {
     AudioFileInStream = new FileInDecodingStream();
     //AudioFileInStream.InfoOutFile = InfoFileWriter;
     AudioFileInStream.Initialize(AudioFileName);
     AudioFileInStream.ProcessSingle();
     AudioFileInStream.ClearReadData();
     SetupOutputStream(dataFileSize);
     AudioFileInStream.Reset();
     AudioFileInStream.MetadataCallback = NLSBSteganographerEncoder.MetadataCallback;
     AudioFileInStream.Initialize(AudioFileName);
     AudioFileInStream.ProgressCallback = ProgressCallback;
     MainWorkerThread = new Thread(new ParameterizedThreadStart(x => { Encoder.ProcessFile(WriteCallback); CleanupEncoder(); }));
 }
Beispiel #4
0
 /**
  * <summary>audioFileStream must be initialized prior to passing
  * dataFileStream must be open prior to passing</summary>
  */
 public NLSBSteganographerEncoder(FileInDecodingStream audioFileStream, Stream dataFileStream, byte[] key, int dataFileSize)
 {
     if ((audioFileStream.GetTotalSamples() * audioFileStream.GetChannels()) < ((uint)dataFileSize * 8))
     {
         throw new InsufficientAudioException();
     }
     AudioFileStream = audioFileStream;
     AudioFileStream.MetadataCallback = MetadataCallback;
     DataFileStream = dataFileStream;
     for (int i = 0; i < dataFileSize * 8; i++)
     {
         BitPermutationIndices.Add(i);
     }
     Rng = new KeyedRng(key);
 }
        private void SetupDecoder(out Stream dataFileStream)
        {
            AudioFileInStream             = new FileInDecodingStream();
            AudioFileInStream.InfoOutFile = InfoFileWriter;
            AudioFileInStream.SetMetadataRespond(MetadataType.VorbisComment);
            SaveFileDialog dlg = new SaveFileDialog();

            dlg.Filter = "All Files (*.*)|*.*";
            dlg.ShowDialog();
            if (dlg.FileName == "")
            {
                dataFileStream = null;
                return;
            }
            dataFileStream = new StreamWriter(dlg.FileName).BaseStream;
            Decoder        = new NLSBSteganographerDecoder(
                AudioFileInStream,
                dataFileStream,
                KeyHelper.GenerateKeyFromUserInput()
                );
            AudioFileInStream.Initialize(AudioFileName);
            AudioFileInStream.ProgressCallback = ProgressCallback;
            MainWorkerThread = new Thread(new ParameterizedThreadStart(x => { Decoder.ProcessFile(); CleanupDecoder(); }));
        }