Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
1 / 1 / 2
Регистрация: 12.07.2013
Сообщений: 146

Как распараллелить выполнение процессов в консоли

11.11.2015, 08:16. Показов 1105. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такая вот консоль:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Timers;
using System.Diagnostics;
 
namespace ConsoleApplication4
{
    class Program
    {
 
        static void Main(string[] args)
        {
 
            Stopwatch sW = new Stopwatch();
            sW.Start();
 
            int retCode = -1;
            string arg, curpass;
            
            StreamReader SR = File.OpenText("DICT.txt");
 
            ProcessStartInfo startInfo = new ProcessStartInfo();
            startInfo.CreateNoWindow = false;
            startInfo.UseShellExecute = false;
            startInfo.FileName = "MyTool.exe";
            startInfo.WindowStyle = ProcessWindowStyle.Hidden;
 
 
            while (!SR.EndOfStream)
            {
                sW.Reset();
                sW.Start();
                curpass = SR.ReadLine();
                arg = String.Format("{0} {1} {2}", "11", curpass, "out.xml");
 
                startInfo.Arguments = arg;
 
                try
                {           
                    using (Process exeProcess = Process.Start(startInfo))
                    {
                        exeProcess.WaitForExit();
                        retCode = exeProcess.ExitCode;
                    }
                }
                catch
                {
                    // Log error.
                }
 
                if (retCode == 0)
                {
                    Console.WriteLine("PASSWORD: {0}", curpass);
                    Console.ReadKey();
                    return;
                }
                else Console.WriteLine("WRONG PASSWORD: {0}", curpass);
 
                sW.Stop();
                Console.WriteLine("TimeElapsed: {0}\n", sW.ElapsedMilliseconds.ToString());
            }
        }
    }
}
Все работает как положено,
задача перебрать 10^256(ну может и в ^62 (A,a,1)) вариантов ASCII паролей...т.е нужно распаралелить выполнение, как в данном случае лучше это сделать? Один пароль в один поток - 500-800мс; желательно с примером.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.11.2015, 08:16
Ответы с готовыми решениями:

Распараллелить выполнение цикла на все ядра процессора
Есть цикл for с очень большим количеством итераций, его выполнение отнимает кучу времени, хочу его ускорить с помощью потоков - создать...

Выполнение команд в консоли. Как выполните вход в определенный каталог
подскажите пожалуйста, как выполните вход в определенный каталог... Использую код для запуска консоли... ProcessStartInfo psi = new...

Паралельное выполнение процессов
Добрый день! Подскажите пожалуйста: Есть два потока и есть какой то объект, как сделать так, что бы если один поток занят работой с...

10
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
11.11.2015, 08:25
sabrus, что этот код, который вы представили, должен вообще делать?
0
1 / 1 / 2
Регистрация: 12.07.2013
Сообщений: 146
11.11.2015, 08:34  [ТС]
подобрать пароль ))) утилита MyTool.exe(все имена являются вымышленными, совпадения случайны - код рабочий, проверено на подсадных утках и одноразовых горшках ) вернет 0 только в случае если пароль верный
0
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
11.11.2015, 08:37
sabrus, к чему? Тут кроме запуска процесса "MyTool.exe" и "анализа" его кода завершения ничего такого даже нет...
0
1 / 1 / 2
Регистрация: 12.07.2013
Сообщений: 146
11.11.2015, 08:46  [ТС]
Все есть. Если пароль подходит тулза работает иначе вернет 1. Естественно я переписал строчку аргументов и название процесса - это никакого отношения к делу не имеет.
MyTool.exe - консоль, выполняющая команду Arg,
11 - имя запароленного файла, out.xml - результат работы тулзы(расшифровка) если пароль верный.
задача в том чтобы на потребительском железе перебрать реально большую кучу вариантов.
Щас на работе пустил...вот такой

камень один вариант смотрит 1100-1800мс...Дома AMD 6-ядерный 2,8Ггц...510-780мс.
0
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
11.11.2015, 08:49
sabrus, вы используете словарь, а вам нужно брутфорсом подобрать? Или чего? Т.е. нужно написать функцию генерации возможных строк? Или проблема с производительностью? (скорее всего из-за запуска процесса)
0
1 / 1 / 2
Регистрация: 12.07.2013
Сообщений: 146
11.11.2015, 08:59  [ТС]
Код MyTool недоступен, это сторонняя разработка, как и файлы которые запаролены(они шифрованы, ни о каких попытках найти смещения или секции нет и речи).
MyTool позволяет перевести(расшифровать) эти файлы в формат Xml, это произойдет если ключ шифрования(пароль) верный. Есть запароленный файл - "11", и есть словарь DICT с вариантами паролей. Ни о длине пароля ни о входящих в него символах ничего не известно. Отталкиваюсь от максимальной длины в 10 символов и набора символов - английские строчные/прописные, и цифры, т.е 62 символа, при длине в 10симв. вариантов (62^10)*(11байт на строку)/1024^3 - порядка 8598242909 Гб весил бы текстовик с таким количеством паролей, поэтому планируется последовательная генерация паролей, наверно при помощи Itertools, на питоне, в файлы приемлемых размеров...(500мб-1гб),это все я знаю как сделать, сейчас вопрос о другом, как распаралелить работу с этими (500мб-1гб) файлами...
0
484 / 397 / 68
Регистрация: 14.02.2014
Сообщений: 1,930
11.11.2015, 09:52
Цитата Сообщение от sabrus Посмотреть сообщение
нужно распаралелить выполнение
У тебя выполнение идёт в MyTool.exe. Вот там и надо распараллеливать.
0
1 / 1 / 2
Регистрация: 12.07.2013
Сообщений: 146
11.11.2015, 12:13  [ТС]
да, я с этим согласен.
К сожалению так сделать не получится. Может еще варианты?
0
 Аватар для Sigin
226 / 225 / 112
Регистрация: 20.10.2013
Сообщений: 808
11.11.2015, 12:17
sabrus, написать свою "MyTool.exe"
0
1 / 1 / 2
Регистрация: 12.07.2013
Сообщений: 146
11.11.2015, 12:19  [ТС]
как говорится и на том спасибо. )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.11.2015, 12:19
Помогаю со студенческими работами здесь

Последовательное выполнение процессов с ожиданием завершения каждого
Имеется 2 процесса, которые должны выполняться один за другим. Первый - объединение нескольких файлов .odt в один: Process cat = new...

Как правильно распараллелить выполнение DoWork, чтобы не было взаимоисключающих ситуаций
Так вот, пишу клиент-серверную вещь, что-то вроде переборщика паролей. Количество потоков для перебора пользователь выбирает сам. Далее при...

Распараллелить выполнение
Нужна помощь в распареллиливании синхронного когда. Суть задачи: 1. Читаем построчно файл в котором каждая строка - url; 2. Посылаем...

«Распараллелить» выполнение функции
Есть функция, как сделать, чтобы она выполнялась параллельно? import requests from weblib.text import normalize_space from lxml...

Как прервать выполнение всех процессов ?
Собственно сабж. Есть программа чтения записи из одного чайлда в другой по кругу. После того как круг завершен нужно прервать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru