Example #1
0
        private void GetPassword()
        {
            StatusChange(WorkerStatus.Start, "Получаю пароль...");

            if (!File.Exists(CommonFunctions.TessCmd))
            {
                StatusChange(WorkerStatus.FatalError, "Не найден tesseract.exe");
                return;
            }

            //получаем HTML-страницу
            StatusChange(WorkerStatus.Process, "Загрузка: " + Settings.PageAddr);
            if (!Downloader.CreateRequest())
            {
                StatusChange(WorkerStatus.FatalError, Downloader.ErrorMessage);
                return;
            }
            else
            {
                if (!Downloader.Send())
                {
                    StatusChange(WorkerStatus.FatalError, Downloader.ErrorMessage);
                    return;
                }
                else
                {
                    StatusChange(WorkerStatus.Complete, "OK");
                }
            }

            StatusChange(WorkerStatus.Process, "Разбираю HTML-файл...");
            MiniParser mp = new MiniParser(Workdir + HTMLPage);

            if (!mp.Load())
            {
                StatusChange(WorkerStatus.FatalError, mp.ErrorMessage);
                return;
            }
            List <string> PassImages = mp.Select("password.php",
                                                 mp.ParseTags("img", "src"));

            if (PassImages.Count < 1)
            {
                StatusChange(WorkerStatus.FatalError,
                             "Ссылка на изображение не найдена!");
                return;
            }

            string imagelink = PassImages[0].Replace(' ', '+');

            StatusChange(WorkerStatus.Process,
                         "Загрузка: " + Settings.PageAddr + imagelink);
            Downloader.URL        = Settings.PageAddr + imagelink;
            Downloader.OutputFile = Workdir + "password.png";
            if (!Downloader.CreateRequest())
            {
                StatusChange(WorkerStatus.FatalError, Downloader.ErrorMessage);
                return;
            }
            else
            {
                if (!Downloader.Send())
                {
                    StatusChange(WorkerStatus.FatalError, Downloader.ErrorMessage);
                    return;
                }
                else
                {
                    StatusChange(WorkerStatus.Complete, "OK");
                }
            }

            StatusChange(WorkerStatus.Process, "Запуск распознавания...");
            if (!RunProcess.OpenProcess(CommonFunctions.TessCmd,
                                        Workdir + "password.png " + Workdir + "password"))
            {
                StatusChange(WorkerStatus.FatalError, RunProcess.ErrorMessage);
                return;
            }
            else
            {
                StatusChange(WorkerStatus.Complete, "Распознавание завершено.");
            }

            //чтение распознанного пароля
            if (!File.Exists(Workdir + "password.txt"))
            {
                StatusChange(WorkerStatus.FatalError,
                             "Файл с результатами распознавания не найден!");
                StatusChange(WorkerStatus.FatalError,
                             "[" + Workdir + "password.txt]");
                return;
            }
            StreamReader sr = null;

            try
            {
                sr             = new StreamReader(Workdir + "password.txt");
                RecognizedPass = sr.ReadLine();
                sr.Close();
            }
            catch (Exception ex)
            {
                if (sr != null)
                {
                    sr.Close();
                }
                StatusChange(WorkerStatus.FatalError, ex.Message);
                return;
            }
            if (string.IsNullOrEmpty(RecognizedPass))
            {
                StatusChange(WorkerStatus.FatalError, "Пароль пустой!");
                return;
            }

            StatusChange(WorkerStatus.Process, "Пароль: " + RecognizedPass);

            StatusChange(WorkerStatus.Wait, "Ожидаю данных от пользователя...",
                         "PASSWORD");
            if (CancelFlag)
            {
                StatusChange(WorkerStatus.FatalError, "Отменено пользователем.");
                return;
            }
            StatusChange(WorkerStatus.Process, "Сохраняемый пароль: " +
                         RecognizedPass);

            StatusChange(WorkerStatus.Process, "Сохраняю в:");
            StatusChange(WorkerStatus.Process, Settings.AuthFile);
            StreamWriter sw = null;

            try
            {
                sw = new StreamWriter(Settings.AuthFile);
                sw.WriteLine("vpnbook");
                sw.WriteLine(RecognizedPass);
                sw.Close();
            }
            catch (Exception ex)
            {
                if (sw != null)
                {
                    sw.Close();
                }
                StatusChange(WorkerStatus.FatalError, ex.Message);
                return;
            }
            StatusChange(WorkerStatus.Complete, "OK");

            StatusChange(WorkerStatus.CompleteAll, "Процесс успешно завершен!");
        }
Example #2
0
        private void GetConfigs()
        {
            StatusChange(WorkerStatus.Start, "Получаю файлы конфигурации...");
            //получаем HTML-страницу
            StatusChange(WorkerStatus.Process, "Загрузка: " + Settings.PageAddr);
            if (!Downloader.CreateRequest())
            {
                StatusChange(WorkerStatus.FatalError, Downloader.ErrorMessage);
                return;
            }
            else
            {
                if (!Downloader.Send())
                {
                    StatusChange(WorkerStatus.FatalError, Downloader.ErrorMessage);
                    return;
                }
                else
                {
                    StatusChange(WorkerStatus.Complete, "OK");
                }
            }

            StatusChange(WorkerStatus.Process, "Разбираю HTML-файл...");
            MiniParser mp = new MiniParser(Workdir + HTMLPage);

            if (!mp.Load())
            {
                StatusChange(WorkerStatus.FatalError, mp.ErrorMessage);
                return;
            }

            List <string> ZIPFiles = mp.Select(".zip", mp.ParseTags("a", "href"));

            if (ZIPFiles.Count == 0)
            {
                StatusChange(WorkerStatus.FatalError, "ZIP-файлы не найдены!");
                return;
            }
            foreach (string ZIPFile in ZIPFiles)
            {
                StatusChange(WorkerStatus.Process, "Обнаружен файл: " + ZIPFile);
            }

            StatusChange(WorkerStatus.Process, "Загрузка файлов: ");
            foreach (string ZIPFile in ZIPFiles)
            {
                string filename = GetUnixFilename(ZIPFile);
                StatusChange(WorkerStatus.Process, "Загрузка: " + filename);

                Downloader.URL        = Settings.PageAddr + ZIPFile;
                Downloader.OutputFile = Workdir + filename;
                if (!Downloader.CreateRequest())
                {
                    StatusChange(WorkerStatus.NotComplete, Downloader.ErrorMessage);
                    continue;
                }

                if (!Downloader.Send())
                {
                    StatusChange(WorkerStatus.NotComplete, Downloader.ErrorMessage);
                    continue;
                }
                else
                {
                    StatusChange(WorkerStatus.Complete, "OK");
                }
            }

            StatusChange(WorkerStatus.Process, "Распаковка файлов: ");
            List <string> ZIPList = GetFilesList(Workdir, "*.zip");

            if (ZIPList == null)
            {
                StatusChange(WorkerStatus.FatalError, ErrorMessage);
                return;
            }
            if (ZIPList.Count == 0)
            {
                StatusChange(WorkerStatus.FatalError,
                             "ZIP-файлы для распаковки не найдены!");
                return;
            }

            foreach (string filename in ZIPList)
            {
                StatusChange(WorkerStatus.Process, "Распаковка: " + filename);
                if (!Unzip.UnzipToDir(Workdir + filename, Unpdir))
                {
                    StatusChange(WorkerStatus.NotComplete, Unzip.ErrorMessage);
                }
                else
                {
                    StatusChange(WorkerStatus.Complete, "OK");
                }
            }

            StatusChange(WorkerStatus.Wait, "Ожидаю данных от пользователя...",
                         "OPTIONS");
            if (CancelFlag)
            {
                StatusChange(WorkerStatus.FatalError, "Отменено пользователем.");
                return;
            }

            OVPNList = GetFilesList(Unpdir, "*.ovpn");
            if (OVPNList.Count == 0)
            {
                StatusChange(WorkerStatus.FatalError,
                             "Файлы конфигурации *.ovpn не найдены!");
                return;
            }

            StatusChange(WorkerStatus.Process, "Добавляю опции...");
            foreach (string filename in OVPNList)
            {
                StatusChange(WorkerStatus.Process, filename);
                if (!AddOptions(Unpdir + filename))
                {
                    StatusChange(WorkerStatus.NotComplete, ErrorMessage);
                }
                else
                {
                    StatusChange(WorkerStatus.Complete, "OK");
                }
            }

            CancelFlag = false;
            StatusChange(WorkerStatus.Wait, "Ожидаю данных от пользователя...",
                         "FILES");
            if (CancelFlag)
            {
                StatusChange(WorkerStatus.FatalError, "Отменено пользователем.");
                return;
            }

            StatusChange(WorkerStatus.Process, "Копирование файлов...");
            StatusChange(WorkerStatus.Process, "Целевой каталог: " + Settings.OutputDir);
            foreach (string s in SelectedFiles)
            {
                StatusChange(WorkerStatus.Process, s);

                try
                {
                    File.Copy(Unpdir + s, Settings.OutputDir + s, true);
                    StatusChange(WorkerStatus.Complete, "OK");
                }
                catch (Exception ex)
                {
                    StatusChange(WorkerStatus.NotComplete, ex.Message);
                }
            }

            StatusChange(WorkerStatus.CompleteAll, "Процесс успешно завершен!");
        }