giovedì 28 marzo 2013

How To: BinaryReader BinaryWriter

Guardando fra le statistiche ho notato che qualcuno ha visitato il mio blog per individuare un metodo anche banale per mascherare quello che si scrive...

Va da se che l'utilità di questo gesto può essere legittima sempre ed in qualsiasi momento, il più è organizzarsi bene.

L'idea di utilizzare un BinaryReader e BinaryWriter può essere un inizio ma non è detto che assolva a quanto si desidere fare..

Tanto più è complesso l'algoritmo di "criptografia ..." perchè al nocciolo è di questo che si sta parlando tanto più complesso sarà per i "curiosoni" beccare quello che stiamo scrivendo..

Il mio consiglio, è di utilizzare più livelli, e logiche differenti, e soprattutto di non utilizzare mai la stessa.  Va da se che se qualcuno trova l'eseguibile che crea lo stream.. ha anche in mano il processo per cui leggere quello che state "criptando".



using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;


namespace BinaryTextFile
{
    class Program
    {
        static void Main(string[] args)
        {
            //
            // esempio di scrittura binaria
            //
            FileStream fs = new FileStream(@"c:\demo.txt", FileMode.Create);
            BinaryWriter bw = new BinaryWriter(fs);
            bw.Write("numeri\r\n");
            bw.Write(123);
            bw.Write(123.4);
            bw.Write("\r\nTesto\r\n");
            bw.Write("io sarò in chiaro");
            bw.Write("\r\nBolean\r\n");
            bw.Write(false);
            bw.Close();

            //
            // questo esempio tuttavia non 
            // ci consente di nascondere del tutto il 
            // contenuto del nostro file
            // tuttavia ci consente di scoprire 
            // che i numeri puf vengono 
            // convertiti...
            //

            FileStream fs2 = new FileStream(@"c:\demo2.txt", 
                    FileMode.Create);
            BinaryWriter bw2 = new BinaryWriter(fs2);

            string s = "questa è una splendida demo";

            for (int i = 0; i < s.Length; i++)
            {
                bw2.Write(Convert.ToByte(s[i]));
            }

            bw2.Close();

            FileStream fs3 = new FileStream(@"c:\demo2.txt", 
                    FileMode.Open);
            BinaryReader br = new BinaryReader(fs3);
            string s1 = "";
            int p = 0;

            while (p < br.BaseStream.Length)
            {
                s1 += Convert.ToChar(br.ReadByte()).ToString();
                p++;
            }
            br.Close();

            //
            // tuttavia questo implica che 
            // si deve sapere che cosa si 
            // sta leggendo
            //

            Console.WriteLine(s1);

            Console.ReadLine();
        }
    }

} 
Questo esempio pur limitato in quello che avviene da un minimo di garazia... ma naturalmente è solo un banale esempio...


Nessun commento: