Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вот так вот надо чтобы было. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И чтоб букв было много. Не 3 а вобщем много. Давайте. Кидайте идеи и сорцы. На сях. С++ тоже приветствуется (как ни странно P.S. С++11 ну это ваще респект будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 16:16 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
$ python -c "import string;import random;print ''.join(random.choice(string.ascii_lowercase) for _ in range(random.choice([2, 3])))" rkm ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 17:00 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Чорт. На сях давай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 17:29 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, Парсить аргументы лень. Вот с прошитыми в коде параметрами. С++ :) Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2014, 19:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Здравствуйте. Пришёл только, я бы так делал // help_Mark.cpp: определяет точку входа для консольного приложения. // Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2014, 16:51 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
неправильно делаю, что каждый раз считаю длину строки, надо передавать её. Один раз посчитать, а затем передавать. писал в полной темноте, и у меня пол экрана не работает ( Потому и алгоритм Анатолия не понял, в понедельник прочитаю нормально. Доброго времени суток :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2014, 16:55 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryписал в полной темноте, и у меня пол экрана не работает Напомнило мне, как у меня 20 лет назад на ноуте в шине диска переломился проводник, и в каждом 16-битном слове считанном с жесткого диска один из битов был установлен в 1. Поскольку денег на ремонт не было, а руки слишком кривы для паяльника, пришлось написать загрузчик,который не использовал этот бит в машинных инструкциях, и драйвер диска который переупаковывал биты отображая диск в виртуальный диск меньшего размера. Ничего, нас ##ут, а мы крепчаем :) ЗЫ. А где mayton? Свой вариант кто будет приводить? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 05:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
У меня щас вообще нет варианта. Но думаю сейчас сделаем гибрид из того что уже опубликовано. Если сообщество не против Чистить будем. У Толика - СТЛ. У Сашки - куча каких-то memcpy. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 12:13 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonИ чтоб букв было много. Не 3 а вобщем много. Ты прикинул сколько комбинаций получается? Если только малые английские буквы то 26^N, где N количество символов. Например для 8 символов уже 208 миллиардов комбинаций. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 13:38 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonИ чтоб букв было много. Не 3 а вобщем много. Ты прикинул сколько комбинаций получается? Если только малые английские буквы то 26^N, где N количество символов. Например для 8 символов уже 208 миллиардов комбинаций. Да. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 13:40 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, Вот без СТЛ, на чистом С :) Код: plaintext 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. Без вывода сгенерированных паролей и с выводом в /dev/null получаются такие скорости: С++: 120 Мп/сек / 2.2 Мп/сек С (моя): 375 Мп/сек /19 Мп/сек С (Саши): 40 Мп/сек / 5.5 Мп/сек (подозреваю что strlen и printf тормозят) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 13:51 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, круть! Спс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 13:57 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вот тебе мой вариант Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 14:17 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky Код: plaintext 1. 2. 3. 4. 5. 6. Без вывода сгенерированных паролей и с выводом в /dev/null получаются такие скорости: ... realloc() тоже тормозит, можно сразу выделить необходимый кусок памяти. Для комбинации N штук из M видов символов надо N*M^N байт, т.е. малые английские буквы 2-3 штуки = 2*26^2 + 3*26^3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 14:27 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima T, В моем алгоритме realloc вызывается с десяток раз максимум (макс размер пароля). Поэтому тормозит ли он совершенно неважно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 14:51 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
nik_x, Тут немного другое требуется. Вместо того чтобы сгенерировать ровно один случайный пароль, как делает эта программа (и однострочник в первом ответе), надо сгенерировать ВСЕ пароли из заданного множества. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2014, 19:18 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, вот вариант исключающий ту ошибку, о которой я писал ранее Код: plaintext 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. но тут ещё можно оптимизировать. Сейчас ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 02:18 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вот так можно. Код: plaintext 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. Анатолий, вы можете ещё раз пожалуйста проверить на скорость ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 02:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Объединил стартовое значение и условие выхода в одну строку, чтобы операций аллоцирования и освобождения памяти было меньше. Всё, больше оптимизировать не буду, осталось одно узкое место, очевидно strcmp. Думаю, нужно это вопрос по другому решать, т.е. запускать программу, но проверку на завершение программы не делать, а проверять например размер файла, каждую секунду (нужно провести оценку размера файла, от диапазона). Только как это сделать, я не знаю. А вот функцию вполне могу составить. Как вы считаете, такое предложение имеет место быть ? Код: plaintext 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. Займусь наконец алгоритмами Анатолий и Дмитрия C: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 02:50 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SSА вот функцию вполне могу составить которая будет определять размер файла, в зависимости от диапазона. SSЗаймусь наконец алгоритмами Анатолия и Дмитрия ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 02:53 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima T Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. такая операция законна ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 04:35 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, теперь я понял почему вы использовали частные случаи fputs и putc, они быстрее чем fprintf ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 06:54 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryтакая операция законна ? Что незаконного? Сравнение значений двух указателей. Без разницы как перебирать массив: от начала к концу и проверять выход за конец или наоборот, он конца к началу и проверять выход перед началом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 07:13 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima T, мне показалось, что это выражение будет истинным, когда cur не будет принадлежать массиву buf. Потому я и спросил, законно ли сравнивать указатели принадлежащие разным кускам памяти ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 07:40 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЗаймусь наконец алгоритмами Анатолий и Дмитрия C: Раз уж изучать собрался, то замени в моем коде perebor(int N) Код: plaintext 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. Небольшие косметические изменения, для улучшения читабильности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 07:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Дмитрий ваш код я уже изучил, и уже использовал вашу идею в оптимизированном алгоритме :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 07:51 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima T, мне показалось, что это выражение будет истинным, когда cur не будет принадлежать массиву buf. все верно, именно это и проверяется SashaMercuryПотому я и спросил, законно ли сравнивать указатели принадлежащие разным кускам памяти Нельзя сравнивать указатели на элементы разных массивов. В данном случае массив один, т.е. один кусок памяти. В принципе можно это Код: plaintext 1. 2. 3. заменить на Код: plaintext 1. 2. 3. perebor(int N) целиком Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 08:03 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima_TНельзя сравнивать указатели на элементы разных массивов. В данном случае массив один, т.е. один кусок памяти. но если cur будет меньше начала массива buf, то cur не будет принадлежать этому массиву, значит сравниваются начало массива, и элемент не принадлежащий ему. Разве не так ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 08:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
А вот конечный вариант, с использованием идеи Дмитрия по окончанию всех вариантов(только модифицированная идея, выделил желтым), и предложения Анатолия использовать fputs вместо printf. Осталось избавить от аллоцирования, нужно делать так, чтобы стартовая строка появлялась с использованием макроса, если это возможно. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 08:17 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima T В принципе можно это Код: plaintext 1. 2. 3. заменить на Код: plaintext 1. 2. 3. вот, в первом участке кода, вы сравниваете адреса памяти не из одного буфера (если подразумевается истина), а второй участок кода полностью мне нравится. Я знаю что могу указывать на участок памяти(1 адрес) сразу после массива, но про то я могу указывать на участок памяти до массива, не слышал, потому и спросил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 08:22 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryDima_TНельзя сравнивать указатели на элементы разных массивов. В данном случае массив один, т.е. один кусок памяти. но если cur будет меньше начала массива buf, то cur не будет принадлежать этому массиву, значит сравниваются начало массива, и элемент не принадлежащий ему. Разве не так ? У тебя путаница в голове: cur это не элемент массива, а указатель на элемент массива (адрес в памяти), т.е. сравниваются адрес записанный в cur и адрес начала массива. Обращение к памяти по этим адресам не происходит. cur это переменная хранящая адрес в памяти, который (по условиям алгоритма) должен указывать на элемент массива (проверяется что он не указывает). При этом cur может указывать за пределы массива - это не криминал, криминал прочитать/записать по адресу за пределами массива, т.е. нельзя использовать *cur когда cur указывает за пределы массива, но при этом можно использовать содержимое переменной cur. Понятно или с картинками объяснить? Это надо четко понимать при работе с указателями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 08:43 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryпропущено... но если cur будет меньше начала массива buf, то cur не будет принадлежать этому массиву, значит сравниваются начало массива, и элемент не принадлежащий ему. Разве не так ? У тебя путаница в голове: cur это не элемент массива, а указатель на элемент массива (адрес в памяти), т.е. сравниваются адрес записанный в cur и адрес начала массива. Обращение к памяти по этим адресам не происходит. cur это переменная хранящая адрес в памяти, который (по условиям алгоритма) должен указывать на элемент массива (проверяется что он не указывает). При этом cur может указывать за пределы массива - это не криминал, криминал прочитать/записать по адресу за пределами массива, т.е. нельзя использовать *cur когда cur указывает за пределы массива, но при этом можно использовать содержимое переменной cur. Понятно или с картинками объяснить? Это надо четко понимать при работе с указателями. Такой участок кода имеет место быть ? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 08:52 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima_TПонятно или с картинками объяснить? Это надо четко понимать при работе с указателями. Дмитрий, я всё это прекрасно понимаю, Сообщество, и вы в том числе этому меня научили :) K&R p.104Если P и Q указывают на элементы одного и того же массива, то такие отношения, как <, >= и т.д., работают надлежащим образом. Например, P < Q истинно, если P указывает на более ранний элемент массива, чем Q. Отношения == и != тоже работают. Любой указатель можно осмысленным образом сравнить на равенство или неравенство с NULL. Но ни за что нельзя ручаться, если вы используете сравнения при работе с указателями, указывающими на разные массивы. Если вам повезет, то на всех машинах вы получите очевидную бессмыслицу. Если же нет, то ваша программа будет правильно работать на одной машине и давать непостижимые результаты на другой. Diomidis Spinellis Code Reading: The Open Source PerspectiveNote that, although it is illegal to access elements outside those prescribed by an array's limits, ANSI C and C++ allow the calculation of the address of the element immediately after the array's end. Calculating the address of any other element outside the array limits is illegal and can lead to undefined behavior in some architectures even if no actual access takes place. The address of the element beyond the end is used as an indicator for marking the end of the range and iterating through it. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 09:04 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryТакой участок кода имеет место быть ? Код: plaintext 1. 2. Теоретически да, но практически это потенциальная трудноотлавливаемая ошибка, если далее ошибочно будет использовано *temp и по этому адресу окажется реальная память. При инициализации лучше использовать NULL, чтобы при ошибочном обращении гарантированно была ошибка обращения к несуществующей памяти. Код: plaintext 1. Если много вычесть, могут проблемы возникнуть. Запусти Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 09:30 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Мне кажется, что вы говорите следующее. Пусть x имеет тим size_t, тогда для следующего участка кода Код: plaintext 1. 2. 3. 4. строчки 1 и 2 будут корректны если x будет в диапазоне от 1 до 5, а если x>1000 то строчки 1 и 2 некорректны и мы можем наблюдать undefined behaviour. Я вам говорю, что в любом случае мы наблюдаем undefined behaviour, и привожу ссылки на K&R и Спинеллиса. Не говорю, что вы не правы, но пока я с вами не согласен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 10:21 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Ого сколько тут читать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 12:35 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryОсталось избавить от аллоцирования Надо понимать, где остановиться оптимизируя код. Данная оптимизация не даст никакого прироста скорости, потому что на 100 млрд итераций несколько аллокаций никак не повлияют, а код наверняка будет хуже читаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 12:41 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercury Код: plaintext 1. 2. Я-бы так никогда не делал. Это за пределами аллоцированной памяти. Разные среды ведут себя по разному в таком кейсе при попытке чтения/записи по указателю temp. В хорошем варианте мы получит немедленный лопух с сообщением типа Segfault или "Программа выполнила недопустимую...". В плохом варианте мы будем очень долго и глючно работать пока разработчика не накажут коллеги за лень и глупость или проклянёт заказчик, или будет пробита карма, или всемогущий покарает болезнями и смертью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 12:43 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вот ключевая мысль твоей цитаты: SashaMercuryK&R p.104... Но ни за что нельзя ручаться, если вы используете сравнения при работе с указателями, указывающими на разные массивы. ... Она про другое. В данном случае проверка выхода за пределы массива. И это не означает что там другой массив (там неизвестно что), это просто выход за пределы, не более того. SashaMercuryМне кажется, что вы говорите следующее. Пусть x имеет тим size_t, тогда для следующего участка кода Код: plaintext 1. 2. 3. 4. строчки 1 и 2 будут корректны если x будет в диапазоне от 1 до 5, а если x>1000 то строчки 1 и 2 некорректны и мы можем наблюдать undefined behaviour. В данном случае (если x любое число) для 100% уверенности можно проверять обе границы, т.е. temp за пределами массива buf[10] проверяется так Код: plaintext 1. адрес buf гарантированно больше 0, т.к. по адресу 0 (он же NULL) нет реальной памяти, сделано специально чтобы инициализировать указатели "в никуда" значением NULL, для виндовса это адреса 0 - 65535 (для линукса 0-16777215 если не путаю), т.е. в твоем примере можно получить неопределенность при x>65535 (это минимум, реально еще больше). т.е. при x < 65535 можно упростить проверку до if(temp < buf) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 13:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercury Код: plaintext 1. 2. Я-бы так никогда не делал. это родилось для обобщения правомерности применения конструкции Код: plaintext 1. читай сначала :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 13:40 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima Tmaytonпропущено... Я-бы так никогда не делал. это родилось для обобщения правомерности применения конструкции Код: plaintext 1. читай сначала :) Это неважно. Про связь массивов и указателей все знают. Значит делать можно сравнения в диапазоне аллоцированной памяти элементов массива. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 14:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, я рад что вы меня поняли. У нас есть участок кода: Код: plaintext 1. 2. 3. Дмитрий, я вас правильно понимаю, вы говорите, buf можно сравнить с a1, но если сравнивать с a2, мы имеем undefined behaviour ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:26 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonЭто неважно. Про связь массивов и указателей все знают. Значит делать можно сравнения в диапазоне аллоцированной памяти элементов массива. см. выше, речь о такой конструкции Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. после break следующая } закрывает область видимости cur, т.е. обращение к *cur невозможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:28 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskySashaMercuryОсталось избавить от аллоцирования Надо понимать, где остановиться оптимизируя код. Данная оптимизация не даст никакого прироста скорости, потому что на 100 млрд итераций несколько аллокаций никак не повлияют, а код наверняка будет хуже читаться. Догадался ) Последний код в моем последнем сообщении с кодом. Вы можете проверить его на скорость пожалуйста ? код Код: plaintext 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. PS По вашему алгоритму у меня остались вопросы, но я ещё подумаю. Кстати, а как вам идея "выключать" программу через определенное время, или когда файл будет определенного размера ? Мы исключили бы постоянную проверку, и проверяли бы размер файла, каждые 5 минут например(это сгодится при размере пароля более 10 символов, например) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
речь идёт о такой конструкции . SashaMercuryDima T Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. такая операция законна ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:36 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вообщем ладно, не хватало чтобы мы ещё тут поругались. Я подумаю, над вашими идеями, возможно я их просто не понимаю . Ваша идея хорошая, и мне понятна, я её использовал в конечной версии программы. Спасибо C: и спасибо за код, мне было интересно его читать(я даже пил компот, и разбирал его) :) PS Код Анатолия ещё не разобрал, как писал раньше, потому отпишу позже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:42 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SSВаша идея хорошая идея, как понять, что дальше не нужно двигать стрелку, она очевидно лучше и быстрее(в общем случае) постоянного сравнения через strcmp. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:44 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymayton, я рад что вы меня поняли. У нас есть участок кода: Код: plaintext 1. 2. 3. Дмитрий, я вас правильно понимаю, вы говорите, buf можно сравнить с a1, но если сравнивать с a2, мы имеем undefined behaviour ? Неправильно. Это проверка на выход за пределы массива. Полная проверка выглядит так Код: plaintext 1. но если заранее известно что шаги короткие, то можно упростить сравнение до Код: plaintext 1. При большом смещении упрощать нельзя, т.к. указатель это не что иное как адрес с типом беззнаковое целое, т.е. твое вычитание вызывает переполнение, равносильно такому Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:44 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Коллеги. Почему-то напомнился сабж о выделении массивов с "хвостиками". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 15:51 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima T, SashaMercury Согласно стандарту, указатель может указывать либо в аллоцированный объект, либо сразу за (в следующий за объектом байт). (Если платформа не позволяет хранить указатели за пределы выделенной памяти, то имплементация должна выделять на 1 байт больше) Все операции, в результате которых получаются указатели за пределами какого либо выделенного объекта (перед либо более 1 байта после) - это UB. Как и сравнение <, > с такими указателями SashaMercuryВы можете проверить его на скорость пожалуйста ? Не, мне уже некогда. Разрешаю вам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 17:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВообщем ладно, не хватало чтобы мы ещё тут поругались. Не будем мы ругаться, не переживай :) Я тебя к другому пытаюсь подвести. У меня такое впечатление что ты сам себе поставил ограничение "указатель = массив" и пользуешься указателями только как альтернативным синтаксисом массивов. Но указатель это больше чем массив. Например твой код выше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. По сути нормально писать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Согласись что так лучше читается. Дополнительно заменил cur на start, т.к. название должно соответствовать смыслу. cur от current. Это уже так, придирки, суть в том что этот код и твой скомпилируются в одно и тоже, т.е. с кучей лишних вычислений. С указателями можно сделать тоже самое, но меньшим количеством операций: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. заметь на сколько меньше разных + - по сравнению с твоим кодом. Можно еще переделать чтобы в параметрах был указатель на конец строки (start + size - 1), тогда его не надо будет считать каждый раз. В данном случае еще нет лишних умножений, т.к. sizeof(char) = 1, если тип будет не char, а, например, int, то в реальности будет следующее, например код: Код: plaintext 1. 2. 3. 4. Реальные вычисления на каждом проходе цикла: 1. уменьшение i 2. вычисление адреса (a + i). Происходит так: адрес a + i * 4 байта (4 это sizeof(int)) если переписать указателями, то будет так Код: plaintext 1. 2. 3. тут только i-- что в реале произойдет как i -= 4 байта Вот в чем одно из основных преимуществ указателей над массивами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 17:57 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercury, у тебя ошибка в коде set_next_string(), в т.ч. в моих реинкарнациях. Запусти этот код и подумай как исправить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Нехорошая ошибка, т.к. будет происходить очень редко, поэтому ловить такие ошибки очень тяжело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 19:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Фух бротва. Сори что задержался. Пока неасилил свои пожелания по диапазонам n-m. Вот что есть на данный момент. Можете править Just For Fun. Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2014, 23:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, а чё ты с юникодом задумал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:04 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Некоторые пассажиры колотят национальные буквочки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:07 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonНекоторые пассажиры колотят национальные буквочки. не беспокоит, что их несколько десятков тысяч? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Ладно бох с ним. Не надо Юникод. Прошу потестить у кого под рукой есть Пингвин и Чорт в кедах. А я пока на Windows7+GCC на ноуте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 00:48 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 07:58 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonВот что есть на данный момент. Можете править Just For Fun. Сам правь, не компилируется. ИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 10:57 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Сразу под "main" лишняя буковка. Ладно хрен с ним. Допилю еще два alphabet - выложу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 11:36 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Хех... запилил алфавиты. Взял названия из POSIX-like шаблонов регулярок. Теперь мысль - комбинировать наборы. Пунктуации + Цифирки. Или наоборот. Или обеспечить начало с альфа-символа а потом цифирки. Вобщем тестируйте. Предлагайте. Код: plaintext 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:02 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyDima T, SashaMercury Согласно стандарту, указатель может указывать либо в аллоцированный объект, либо сразу за (в следующий за объектом байт). (Если платформа не позволяет хранить указатели за пределы выделенной памяти, то имплементация должна выделять на 1 байт больше) Все операции, в результате которых получаются указатели за пределами какого либо выделенного объекта (перед либо более 1 байта после) - это UB. Как и сравнение <, > с такими указателями SashaMercuryВы можете проверить его на скорость пожалуйста ? Не, мне уже некогда. Разрешаю вам по сути, то что я и говорил. Сегодня думал, а возможно ли вообще написать функцию, которая определяет принадлежит ли данный адрес, адресам выделенного участка памяти. Вероятно нельзя(возможно только полным перебором всех адресов, и то не факт) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:25 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryвозможно ли вообще написать функцию, которая определяет принадлежит ли данный адрес, адресам выделенного участка памятипамять линейна, вообще то. Берёшь в руки операторы сравнения, начало и конец выделенного участка и тестируемый указатель, и вуаля! - функция написана за 4 секунды ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:31 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercuryВообщем ладно, не хватало чтобы мы ещё тут поругались. Не будем мы ругаться, не переживай :) Я тебя к другому пытаюсь подвести. У меня такое впечатление что ты сам себе поставил ограничение "указатель = массив" и пользуешься указателями только как альтернативным синтаксисом массивов. Но указатель это больше чем массив. Например твой код выше Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. По сути нормально писать так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Согласись что так лучше читается. Дополнительно заменил cur на start, т.к. название должно соответствовать смыслу. cur от current. Это уже так, придирки, суть в том что этот код и твой скомпилируются в одно и тоже, т.е. с кучей лишних вычислений. мне мой вариант больше нравится. Тем более size не самое хорошее название, ибо у нас сливается указатель(длинный идентификатор) и его длина. Длину лучше обозначать одним символом (это я для себя решил) Dima TС указателями можно сделать тоже самое, но меньшим количеством операций: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. заметь на сколько меньше разных + - по сравнению с твоим кодом. Можно еще переделать чтобы в параметрах был указатель на конец строки (start + size - 1), тогда его не надо будет считать каждый раз. Согласен, тут ваш код лучше. Спасибо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:34 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
egorych, не думаю так. Вы же видели, что Anatoly Moskovsky подтвердил мои рассуждения, причём сослался на стандарт. Если адрес не принадлежит тем адресам, по которым выделена память, то мы получаем undefined behaviour, потому, если мы получаем истинный результат, не факт что он действительно истинный. Хотя если получаем ложный, то наверняка знаем что он ложный. Интересное свойство. Как оно правильно называется в IT ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:37 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TSashaMercury, у тебя ошибка в коде set_next_string(), в т.ч. в моих реинкарнациях. Запусти этот код и подумай как исправить. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Нехорошая ошибка, т.к. будет происходить очень редко, поэтому ловить такие ошибки очень тяжело. завтра на нормальном мониторе проверю уже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 13:52 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryegorych, не думаю так. Вы же видели, что Anatoly Moskovsky подтвердил мои рассуждения, причём сослался на стандарт. Если адрес не принадлежит тем адресам, по которым выделена память, то мы получаем undefined behaviour, потому, если мы получаем истинный результат, не факт что он действительно истинный. Хотя если получаем ложный, то наверняка знаем что он ложный. Интересное свойство. Как оно правильно называется в IT ? Наука есть такая. Fuzzy logic. Нечёткая логика. В ней обычно оперируют понятиями истин с вероятностью. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 14:14 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. При следующем старте с указанием опции --continue процесс должен возобновиться не с нуля а с этого состояния. Причём небольшой "нахлёст" допускается. Для pwdgen это не страшно. Главное - поскипать миллиарды уже отработанных состояний и не потерять работу двух-трех суток. Для варианта с рукотворным Stack или Queue я знаю как это сделать. Правда придётся полностью переколбасить алгоритм и рекуррентную процедуру pa(processAlphabet) развернуть в FSM. Мне это не улыбается. Мне нравится рекурсия и скорость работы пока устраивает. Другое дело что инстанциировать "рекурсию в определённом" состоянии я пока не знаю как. Вобщем это пока предмет основных моих размышлений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 14:22 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, изучил немного ваш код. А где перебор то ?) или пока ещё нет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 14:59 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonDima TИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. речь идёт о том что варианты будут генерироваться не все сразу, а за несколько запусков ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:02 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonпропущено... Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. речь идёт о том что варианты будут генерироваться не все сразу, а за несколько запусков ? Речь в том что это не просто утилита. А это скорее всего процесс. Который будет работать долго. Не один день. И не неделю. Вот я и думаю наперёд о сохранении расчётов. Такой уж у меня пунктик. Думаю наперёд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:10 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymayton, изучил немного ваш код. А где перебор то ?) или пока ещё нет Там всё уже есть. Это рабочий код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:10 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Значить любилям гонять бенчмарки и прочим кто в танке. Первое. Не запускать вывод на экран. Он физически тормозит. Второе . Запускать с выводом в файл или с выводом в пустое устройство NULL. Счастливые обладатели Толтого Тукса или Чёрта в кедах юзают /dev/null. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:22 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Если задача сводится к тому что надо гонять генератор по кругу и иногда получать от него текущее состояние, то можно так Код: plaintext 1. 2. 3. 4. Далее при выводе считаем что i это N-ричное число, где N это количество символов в алфавите отображения, далее переводим значение в нужную систему счисления и выводим. Например: при алфавите a-z это 26-ричная система счисления, тогда значение 1234 будет "avm" Как вариант: можно снимать текущее значение другим потоком. Можно несколько потоков запустить, а результат склеивать. По поводу промежуточного хранения: может не заморачиваться и брать для старта какой-нибудь хэш от текущей даты/времени? PS Только паузу надо добавить чтоб проц не спалить такой считалкой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:28 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Время, требуемое на выполнение можно рассчитать, и вывести общую формулу.Мне кажется что потребуется минимум несколько лет, или столетий в крайних случаях. С кодом тоже завтра буду разбираться..засыпаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:29 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryЕсли адрес не принадлежит тем адресам, по которым выделена память, то мы получаем undefined behaviour, потому, если мы получаем истинный результат, не факт что он действительно истинный. Хотя если получаем ложный, то наверняка знаем что он ложный. Интересное свойствоUB будет, если _читать_ данные из указателя, который не принадлежит к выделенному куску памяти. Для сравнения чтение не требуется. И, конечно, если мы получили истинный результат, то это факт, что он действительно истинный, из этого адреса можно читать без всяких там UB. Иначе программирование в принципе не возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TЕсли задача сводится к тому что надо гонять генератор по кругу и иногда получать от него текущее состояние, то можно так Код: plaintext 1. 2. 3. 4. Далее при выводе считаем что i это N-ричное число, где N это количество символов в алфавите отображения, далее переводим значение в нужную систему счисления и выводим. Например: при алфавите a-z это 26-ричная система счисления, тогда значение 1234 будет "avm" Я подумаю над этим. Но мне нужно реализовать развитую систему правил. Например. Чайник неосилил свой pwd от .zip архива и пришёл ко мне. Говорит. "- Я помню что pwd начинался с моего имени TheChainik в разных регистрах (theChainik,THECHAINIK) и содержал дату вида 19## и еще 2 символа верхнего ряда клавиатуры. Пунктуация. С шифтом короче. Я ему грю - не сцы. Ща. Делаю магические страшные колдунства. Код: plaintext 1. И вуаля. Средиземноморье спасено от зла! Profit. Может не сразу. Может через день. Или через недельку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:43 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TКак вариант: можно снимать текущее значение другим потоком. Можно несколько потоков запустить, а результат склеивать. По поводу промежуточного хранения: может не заморачиваться и брать для старта какой-нибудь хэш от текущей даты/времени? PS Только паузу надо добавить чтоб проц не спалить такой считалкой Вот здесь я не совсем понял какая связь между хешем от текущей даты/времени и моей задачей. P.S. Проц достойно охлаждается и даже стоит на балконе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:45 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryВремя, требуемое на выполнение можно рассчитать, и вывести общую формулу.Мне кажется что потребуется минимум несколько лет, или столетий в крайних случаях. С кодом тоже завтра буду разбираться..засыпаю. pwd из 20 символов - это маргинальный пример которого я надеюсь никогда не будет. P.S. Что у тебя за часовой пояс? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 15:52 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonP.S. Что у тебя за часовой пояс?в Москве 15:00, во Владивостоке - полночь )) оч. похоже на правду, кмк ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:00 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Эк вас разнесло по земному шарику... Ну ладно. Пойду фиксить баги. Работа зовёт. До вечера по GMT+2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:06 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonDima TИМХУ Рекурсия тут хорошо подходит, но накладных расходов у нее много, не производительно это. Два дня думаю над сохранением состояния. В случае если юзер нажал Ctrl+C или тикнул таймер (раз в минуту) приложение должно писать состояние своей FSM в какой-нить файл типа /var/run/pwdgen.fsm. При следующем старте с указанием опции --continue процесс должен возобновиться не с нуля а с этого состояния. Причём небольшой "нахлёст" допускается. Для pwdgen это не страшно. Главное - поскипать миллиарды уже отработанных состояний и не потерять работу двух-трех суток. Для варианта с рукотворным Stack или Queue я знаю как это сделать. Правда придётся полностью переколбасить алгоритм и рекуррентную процедуру pa(processAlphabet) развернуть в FSM. Мне это не улыбается. Мне нравится рекурсия и скорость работы пока устраивает. Другое дело что инстанциировать "рекурсию в определённом" состоянии я пока не знаю как. Вобщем это пока предмет основных моих размышлений. Смотри мой вариант выше. Для повышения быстродействия переписал вывод: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Dima TЕсли задача сводится к тому что надо гонять генератор по кругу и иногда получать от него текущее состояние, то можно так Код: plaintext 1. 2. 3. 4. Далее при выводе считаем что i это N-ричное число, где N это количество символов в алфавите отображения, далее переводим значение в нужную систему счисления и выводим. Например: при алфавите a-z это 26-ричная система счисления, тогда значение 1234 будет "avm" ...у меня так и сделано ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:38 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Sla, понимаешь... как-то оно... слишком негибко получается. Крутить 64х битное число для решения перебора в дереве... А собсно почему в дереве? А потому. Здесь больше тако подход. В исходных данных мы описываем некий паттерн вроде регекспа. Он описывает порождающий генератор. Например паттерн: Код: plaintext 1. Описывает: Код: plaintext 1. 2. 3. 4. 5. Я легко себе представляю его в виде рекурсии. Разложение-же такого дерева в множители 64-х битного числа во первых само по себе задача нетривиальная. Во вторых при некотором количестве делений их сложность уже будет сопоставима с накладными на рекурсию. Тоесть я прогнозирую провал в производительности на шаблоне чуть более сложном чем буквы латиницы. А в плане сохранения состояния - да. Очень удобно. Не спорю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:48 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, в этом случае имеем 8 "букв": 1,2,3,4,5,Pwd,Password,Passw. Итого перебираем восьмеричные числа. Для: 0 выведем '1' 7 выведем 'Passw' ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 16:56 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Нет бро. Ты будешь флудить запрещёнными комбинациями. Код: plaintext 1. ? У тебя это допускается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:03 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, тогда необходимо "хитрое" число, каждый разряд которого будет в своей системе счисления со своим "алфавитом". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:23 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slaу меня так и сделано Не совсем. Я вот про что: Код: plaintext 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. Это решение исходной задачи. Правда с небольшим исключением, нет "aa" и "aaa" т.к. это ноль и пишется он как "a". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slamayton, тогда необходимо "хитрое" число, каждый разряд которого будет в своей системе счисления со своим "алфавитом".как-то так: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:40 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonВот здесь я не совсем понял какая связь между хешем от текущей даты/времени и моей задачей. Я пофантазировал и предположил что возможно начинать крутить счетчик со случайного места, для паролей допустимо. Хэш от даты-времени иногда использую для генерации больших случайных чисел, вместо rand(). Но если последовательность надо соблюдать - тогда надо хранить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:40 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slamayton, тогда необходимо "хитрое" число, каждый разряд которого будет в своей системе счисления со своим "алфавитом". Думаю да. Но я не знаю как придумать такое "хитрое" число. Пока не знаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:43 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima Tm_Slaу меня так и сделано Не совсем. Я вот про что: Код: plaintext 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. Это решение исходной задачи. Правда с небольшим исключением, нет "aa" и "aaa" т.к. это ноль и пишется он как "a".у меня так и сделано только число num у меня сразу хранится в N-ной системе счисления, т.к. операция перевода дорогая в цикле увеличиваю число num, потом вывожу цикл немного другой, но смысл именно такой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:44 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TmaytonВот здесь я не совсем понял какая связь между хешем от текущей даты/времени и моей задачей. Я пофантазировал и предположил что возможно начинать крутить счетчик со случайного места, для паролей допустимо. Хэш от даты-времени иногда использую для генерации больших случайных чисел, вместо rand(). Но если последовательность надо соблюдать - тогда надо хранить. Ну... если честно то я искал также псевдослучайный алгоритм выбрасывания паролей из порождающего генератора. Трудность была в том чтобы 100% элементов были извлечены из генератора и чтобы не было повторов. Сами понимаете что класть это всё в массив или в базу данных нельзя. Нет у нас таких ресурсов да и не танцует такая постановка. Всё таки "утилиту" делаю а не облачный сторедж. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вобщем.... для инстанциирования думаю надо 0 заменить на некую уже обсчитанную величину. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. По сути функция pa(..) должна видеть некий глобальный вектор инициализации. Как-то так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 17:56 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. 69. 70. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:14 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonНапример. Чайник неосилил свой pwd от .zip архива и пришёл ко мне. Говорит. "- Я помню что pwd начинался с моего имени TheChainik в разных регистрах (theChainik,THECHAINIK) и содержал дату вида 19## и еще 2 символа верхнего ряда клавиатуры. Пунктуация. С шифтом короче. Я ему грю - не сцы. Ща. Делаю магические страшные колдунства. Код: plaintext 1. Мести чайников юзеров не боишься? Пока давишь кнопки типа "ThEcHaInIkd45g%r18112014" много непечатных слов произнесешь в адрес изобретателя этого чудо-пароля. Может проще в архив зашить кодовое слово, по которому ты найдешь пароль с первого раза? Т.е. генеришь пару паролей, один пишешь в архив, в камменты, вторым шифруешь. Пару пишешь в лог. Потеряли - спрашиваешь первый и по нему ищешь. Тогда длинный пароль не надо. И насчет длины: при использовании алфавита из 70 символов и пароля в 7 символов = 8 триллионов комбинаций, устанешь подбирать. Подумай, надо ли над юзерами издеваться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:34 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Sla, ОК. Пожалуй сделаю бранч утилиты. Будет два направления. Рекурсивное и Tricky-численное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:37 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TМожет проще в архив зашить кодовое слово, по которому ты найдешь пароль с первого раза? Т.е. генеришь пару паролей, один пишешь в архив, в камменты, вторым шифруешь. Пару пишешь в лог. Потеряли - спрашиваешь первый и по нему ищешь. Тогда длинный пароль не надо. И насчет длины: при использовании алфавита из 70 символов и пароля в 7 символов = 8 триллионов комбинаций, устанешь подбирать. Подумай, надо ли над юзерами издеваться? Да нету у меня такой власти. И не админ я вовсе. Да и никто не соблюдает такие условности. Как говорил Дзюбей Кибогами - куда-бы ты ни пошёл - всюду земля как земля. Небо - как небо. Люди - как люди. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:41 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonНу... если честно то я искал также псевдослучайный алгоритм выбрасывания паролей из порождающего генератора. Трудность была в том чтобы 100% элементов были извлечены из генератора и чтобы не было повторов. Сами понимаете что класть это всё в массив или в базу данных нельзя. Нет у нас таких ресурсов да и не танцует такая постановка. Всё таки "утилиту" делаю а не облачный сторедж. Вопрос возникает: сгенерил ты последовательность из триллиона триллионов паролей, но они последовательно идут, т.е. узнал сегодняшний - быстро подобрал вчерашний. Надо перемешивать или выбирать случайный, т.е. надо хранить все и удалять использованные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:50 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Еще один коммит на сегодня. Добавил поли-алфавитность. Теперь можно комбинировать множества символов, цифирок и пунктуаций. Типа: Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 18:53 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TВопрос возникает: сгенерил ты последовательность из триллиона триллионов паролей, но они последовательно идут, т.е. узнал сегодняшний - быстро подобрал вчерашний. Надо перемешивать или выбирать случайный, т.е. надо хранить все и удалять использованные. Стандартный когруэнтный генератор rand() который мы используем повсеместно практически обеспечивает то что мне надо. Компактный. Его состояние - это суть целое число. Для инстанциирования достаточно сделать ему seed(..), или srand(..) и он побежит от этого числа дальше по кругу. Единственное требование - неповторяемость значений в него не заложены. Что-ж. Можно создать свой собственный. Например взяв обычный счётчик и поменяв местами в нём все биты. Получим циклическую уникальную последовательность? Ответ - да. Получим. Вопрос насколько она будет хороша с точки зрения случайности - пока открыт. Я не знаю. Но возможно для данной задачи и сойдет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 19:00 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Устал постить простыни. Вот сорц . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 19:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonDima TВопрос возникает: сгенерил ты последовательность из триллиона триллионов паролей, но они последовательно идут, т.е. узнал сегодняшний - быстро подобрал вчерашний. Надо перемешивать или выбирать случайный, т.е. надо хранить все и удалять использованные. Стандартный когруэнтный генератор rand() который мы используем повсеместно практически обеспечивает то что мне надо. Компактный. Его состояние - это суть целое число. Для инстанциирования достаточно сделать ему seed(..), или srand(..) и он побежит от этого числа дальше по кругу. т.е. сгенерить, сохранить, а потом выбирать рандомно. Отлично, но от "сохранить" не избавились. maytonЕдинственное требование - неповторяемость значений в него не заложены. Что-ж. Можно создать свой собственный. Например взяв обычный счётчик и поменяв местами в нём все биты. Получим циклическую уникальную последовательность? Ответ - да. Получим. Вопрос насколько она будет хороша с точки зрения случайности - пока открыт. Я не знаю. Но возможно для данной задачи и сойдет. Совсем нехорошо, взлом немного усложняет, надо дополнительно разгадать алгоритм перестановки. Это несложно если есть десяток последовательно сгенеренных паролей. А как такую мысль оценишь: метод от обратного, раз уж ты хранишь использованные пароли, то может просто генерить рандомно, а потом проверять что пароль раньше не использовался? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 19:23 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TСовсем нехорошо, взлом немного усложняет, надо дополнительно разгадать алгоритм перестановки. Это несложно если есть десяток последовательно сгенеренных паролей. На счет десятка погорячился, посложнее, сходу не придумаю как, но интуиция подсказывает что кому надо этот ребус разгадает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 19:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TСовсем нехорошо, взлом немного усложняет, надо дополнительно разгадать алгоритм перестановки. Это несложно если есть десяток последовательно сгенеренных паролей. А как такую мысль оценишь: метод от обратного, раз уж ты хранишь использованные пароли, то может просто генерить рандомно, а потом проверять что пароль раньше не использовался? На самом деле и не усложняет и не упрощает. Просто если перебирать их последовательно то велика вероятность что первые фазы работы переборщика будут холостые. Ну просто нет паролей из нулей 0000000 или букв aaaaaa. Тут есть еще другая тема. Если есть возможность подбирать "близость" пароля то уж точно надо бить его рандомно. Как в генентических алгоритмах. Кидать случайно хромосомы и смотреть какая лучше пригодилась. Впрочем это фантазии. По поводу хранения. Да нет. Не храню я их нигде. Они уходят в другую тулзу. Которая их проверяет на пригодность. Как - это уже другой вопрос в другой топик. И та тулза тоже не хранит. Не ее это функции. По сути как я себе представлял хранение. Запускаем параллельный Thread/Process который хотя-бы раз в минуту сбрасывает *buf в файлик /var/pwdgen/state. И всё чики-пики. Случайный пьяный электрик мне не страшен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2014, 19:37 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, я понял ваш код. каждый раз после формирования новой комбинации, происходит проверка Код: plaintext 1. . Учитывая то, сколько этих комбинаций планируется, мне показалось это слишком затратно. В этом участке кода Код: plaintext 1. 2. в дальнейшем, вы ни разу не используете i, потому лучше заменить этот участок на следующий(мне так показалось, вам виднее) Код: plaintext 1. У вас произойдёт 1 лишний realloc. несмотря на всё это, ваш алгоритм имеет более общий характер чем мой. Единственно что не понял, эти строчки. Зачем они ? Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 02:45 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
egorychSashaMercuryЕсли адрес не принадлежит тем адресам, по которым выделена память, то мы получаем undefined behaviour, потому, если мы получаем истинный результат, не факт что он действительно истинный. Хотя если получаем ложный, то наверняка знаем что он ложный. Интересное свойствоUB будет, если _читать_ данные из указателя, который не принадлежит к выделенному куску памяти. Для сравнения чтение не требуется. И, конечно, если мы получили истинный результат, то это факт, что он действительно истинный, из этого адреса можно читать без всяких там UB. Иначе программирование в принципе не возможно. простите, но это не так Anatoly Moskovsky Dima T, SashaMercury Согласно стандарту, указатель может указывать либо в аллоцированный объект, либо сразу за (в следующий за объектом байт). (Если платформа не позволяет хранить указатели за пределы выделенной памяти, то имплементация должна выделять на 1 байт больше) Все операции, в результате которых получаются указатели за пределами какого либо выделенного объекта (перед либо более 1 байта после) - это UB. Как и сравнение <, > с такими указателями ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 02:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercuryВремя, требуемое на выполнение можно рассчитать, и вывести общую формулу.Мне кажется что потребуется минимум несколько лет, или столетий в крайних случаях. С кодом тоже завтра буду разбираться..засыпаю. pwd из 20 символов - это маргинальный пример которого я надеюсь никогда не будет. P.S. Что у тебя за часовой пояс? Если 20 не будет никогда, то значит будет 19. Если x количество вариантов на одну позицию, то мы получаем вариантов. Пусть 1 символ занимает y Байт, тогда мы имеем Байт информации. Пусть, x=26,y=1, тогда имеем Байт=Байт >4ЙБ. Поправьте, если я где-то ошибся. PS GMT+10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 03:46 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonпропущено... pwd из 20 символов - это маргинальный пример которого я надеюсь никогда не будет. P.S. Что у тебя за часовой пояс? Если 20 не будет никогда, то значит будет 19. Если x количество вариантов на одну позицию, то мы получаем вариантов. Пусть 1 символ занимает y Байт, тогда мы имеем Байт информации. Пусть, x=26,y=1, тогда имеем Байт=Байт >4ЙБ. Поправьте, если я где-то ошибся. PS GMT+10 немного ошибся. При максимальное длине строки в 19 символов, x-количество вариантов, y-количество Байт одного символа, получаем поток в Пересчитаю для случаев, когда пароль равен 12 символам, и x=26,y=1 тогда имеем поток в . Это чуть менее 1 Эиб, или около ТБ. Сколько времени будет формироваться такой поток?(не говорю о том что его нужно хранить) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 06:16 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Посчитал, если за 1 секунду будет обрабатываться 1 Гб информации, то для случая из 12 символов, и 26 вариантов для каждого символа, мы получим 34 года ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 06:33 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonЕдинственное требование - неповторяемость значений в него не заложены. Что-ж. Можно создать свой собственный. Например взяв обычный счётчик и поменяв местами в нём все биты. Получим циклическую уникальную последовательность? Ответ - да. Получим. Вопрос насколько она будет хороша с точки зрения случайности - пока открыт. Я не знаю. Но возможно для данной задачи и сойдет. С точки зрения случайности не очень, т.к. половина соседних значений будут отличаться одним битом, четверть двумя и т.д. Вот если придумать такую функцию которая изменит хотя бы треть битов у соседних значений, тогда со случайностью будет получше. Но и это не панацея, т.к. достаточно расковырять твой EXE, понять алгоритм и готово. ИМХУ для паролей все-таки лучше ГСЧ и пусть повторы будут. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 08:57 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСколько времени будет формироваться такой поток?(не говорю о том что его нужно хранить) Вот блин опять двадцать пять. Мои ответы никто не читает. Никто этот поток не хранит! И не будет хранить. И 19 символов - это крайность. Общий случай с паролем из префикса и двух цифр я описал выше. Ох уж эти часовые пояса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 10:03 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, всё читаю ) так и не говорю, что они должны храниться, очевидно не должны, а говорю только про то время, что они будут формироваться. Если за секунду вы будете обрабатывать 1 Гб информации, то на все возможные варианты из 12 символов (26 вариантов на каждый), уйдёт 34 года ). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 10:13 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryпростите, но это не так Anatoly Moskovsky Как и сравнение <, > с такими указателямив нашем случае сравнение обратное. Тестируемый указатель сравнивается с заведомо правильными, поэтому никакого UB. Если он лежит в допустимых пределах, то из него можно читать, если нет - то нельзя. И в чём же заключается твоё "не так"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 10:14 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryкаждый раз после формирования новой комбинации, происходит проверка Код: plaintext 1. . Учитывая то, сколько этих комбинаций планируется, мне показалось это слишком затратно. Да, можно легко убрать это сравнение, если вычислять пароли отдельно для каждой длины . Но мне было лень :) SashaMercuryВ этом участке кода Код: plaintext 1. 2. в дальнейшем, вы ни разу не используете i, потому лучше заменить этот участок на следующий(мне так показалось, вам виднее) Код: plaintext 1. Второй вариант некорректный, т.к. size_t беззнаковый и условие выхода никогда не выполнится. Правильно так: Код: plaintext 1. или так Код: plaintext 1. Но оба эти варианта для меня не сильно читаемы. Я лично не вижу никаких проблем с тем что i используется только для условия цикла. Такой вариант как у меня мне больше нравится с точки зрения читаемости. А с точки зрения дублирования кода - компилятор такие конструкции вполне успешно оптимизирует. После оптимизации получится что-то типа: Код: plaintext 1. 2. 3. 4. Я иногда и сам так пишу обратный цикл :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 10:15 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, скажите пожалуйста, какая предполагается реальная максимальная длина строки, и количество вариантов на каждую позицию ? Сколько времени максимум вы предполагаете на полный перебор всех вариантов при заданных ограничениях? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 10:24 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryСколько времени максимум вы предполагаете на полный перебор Копать от меня и до обеда :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 10:31 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonm_Sla, ОК. Пожалуй сделаю бранч утилиты. Будет два направления. Рекурсивное и Tricky-численное.на с++ накидал черновой вариант умеет работать в несколько потоков, пишет сразу в файлы: Код: plaintext 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. вечером попробую дома на 8 потоках запустить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 10:54 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymayton, скажите пожалуйста, какая предполагается реальная максимальная длина строки, и количество вариантов на каждую позицию ? Сколько времени максимум вы предполагаете на полный перебор всех вариантов при заданных ограничениях? Я предлагаю сейчас не обсуждать этот вопрос. Пятничный хакатон который я предложил вобщем-то не имел такого глубокого исследовательского смысла. Любой из вас знает какой длины пароли требуются для соц-сетей и корпоративных доменов. Тут речи нет. И любой из вас знает как вы сами генерируете пароли когда нет ограничений. И какие пароли вы придумываете для .zip архивов. Я предложил тему и дал ей возможность развиваться. Про 19 и 20 символов и про хранение гигабайтов вы уже додумали сами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 11:55 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slaпри работе в 2 потока примерно в 2 раза медленнее твоего варианта (надо оптимизировать) вечером попробую дома на 8 потоках запустить Запускай из консоли с опциями Код: plaintext 1. 2. Данная задача удобна тем что в ней почти нет синхронизации. Есть порции задач которые можно делать независимо. Идеальный хадуп. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 12:04 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonSashaMercurymayton, скажите пожалуйста, какая предполагается реальная максимальная длина строки, и количество вариантов на каждую позицию ? Сколько времени максимум вы предполагаете на полный перебор всех вариантов при заданных ограничениях? Я предлагаю сейчас не обсуждать этот вопрос. Пятничный хакатон который я предложил вобщем-то не имел такого глубокого исследовательского смысла. Любой из вас знает какой длины пароли требуются для соц-сетей и корпоративных доменов. Тут речи нет. И любой из вас знает как вы сами генерируете пароли когда нет ограничений. И какие пароли вы придумываете для .zip архивов. Я предложил тему и дал ей возможность развиваться. Про 19 и 20 символов и про хранение гигабайтов вы уже додумали сами. меня нет в соцсетях нет, потому не знаю. А в организациях известно какие пароли Зима@2014, Лето@2014 и т.д. Вот для zip пожалуй пойдет. Я недавно книжку скачал, но чтобы её распаковать нужен пароль. Тема хорошая, не спорю :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:45 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Ну вот видишь. Зима... Летто.. @ и четыре цифирки. Я знавал одного админа который IP в пароль трансформировал. Хитрец блин... Но я-то об этом тоже знал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:49 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky, может быть это стандартная конструкция, дублирования переменной типа size_t в цикле, но человеку приходится тратить больше времени чтобы понять зачем эта новая переменная. Потому и спросил. Буду знать, если ещё раз встречу цикл по size_t переменной ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 14:55 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
egorychSashaMercuryпростите, но это не так пропущено... в нашем случае сравнение обратное. Тестируемый указатель сравнивается с заведомо правильными, поэтому никакого UB. Если он лежит в допустимых пределах, то из него можно читать, если нет - то нельзя. И в чём же заключается твоё "не так"? Нельзя сравнивать один некорректный адрес памяти и один корректный..Позже я составлю отдельный топик.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 15:00 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryНельзя сравнивать один некорректный адрес памяти и один корректный.круто ))) пока мы не сравнили, мы не знаем, корректный ли у нас адрес. SashaMercury.Позже я составлю отдельный топик.ок, здесь это явный офф-топ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 17:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Как говорил Кристофер Уокен - Оки доки артишоки. Подкину инфы на вентиллятор. Допустим у нас есть файлик зашифрованный DES-ом. Для тех кто в танке. Это метод при котором файл (условно) бъётся а блоки по 64бит. И к каждому блоку применяется некая формула преобразования после которой мы получаем новый уникальный блок. Совершенно не похожий на исходный. Аргументами в этом отображении являются ключ(Key) и вектор инициализации (IV). Это такие себе два байтовых массивчика. Для введения некого усложнения к такой схеме добавляется еще и несколько способов введения обратной связи с предыдущим блоком. Это чтобы избежать повторов при однородном файле. IV - вшивается в софт (обычно). А Key формируется на базе парольной фразы. Есть более сложные схемы формирования Key с использованием внешнего источника энтропии (часы), координаты мышки на экране e.t.c. Есть попытки усложнения парольной фразы путём подмешивания к ней Salt. Это для устранения тривиальных pwd. Salt как и IV обычно вшивается в софт. Чаще всего ключ генерируется на основе парольной фразы. key=F(pwd + 'Salt...'); Это 90% случаев. Далее вопрос. Если мы знаем ПО которое выполнило des-преобразование и знаем IV, Salt, и функцию F которая обеспечила генерацию key, И знаем априорно что пользователь использовал короткий pwd. порядка 3-4 символа и знаем также априорно что пользователь шифровал набор стандартных часто-употребимых файлов (jpg, pdf, doc, xml). Можем-ли мы восстановить оригинальный key? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 18:28 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Однократный DES, вроде, без проблем ломается полным перебором. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 18:47 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Самый главный вопрос остался за кадром. В какой момент вы остановите перебор? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 18:51 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Могу вернуть вопрос: в какой момент поймёте, что пароль правильный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 18:53 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Поправка. Мы ищем ключ а не пароль. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 18:54 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Т.е. перебрать ~40^4 вариантов дольше, чем искать ~56 битный ключ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 19:03 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovТ.е. перебрать ~40^4 вариантов дольше, чем искать ~56 битный ключ??? Ты пока не ответил на мой самый каверзный вопрос. Как ты себе представляешь алгоритм т.н. "перебора" ? Что у тебя будет являться критерием останова? В скобках замечу что дешифрование блока никогда не выдаёт ошибки. Оно всегда говорит - ОК! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 19:06 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
В условиях вброса предполагается, что в расшифрованном тексте есть общеизвестные куски. "По моему так". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 19:36 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Теплее вобщем. Метод открытого текста называется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 21:01 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Коллеги. Давайте в топике оперировать фразами "алгоритм", "сопоставление". "вектор ключа", "вектор инициализации". Прошу не использовать некоторые слова и термины которые могут быть истолкованы ... ну кхм... слишком уж радикально и против правил. Мы - бескорыстно. С позиции обучения инфо-безопасности изучаем разные вопросы. Вот как то в таком аспекте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 21:18 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Dima TТы серьезно или троллишь?Абсолютно. Вне зависимости от того, что ищется, тестирование результата расшифровки требует каких-то априорных знаний о зашифрованном тексте. Если, дополнительно, указывается, что пароль заведомо слабый, то идея перебирать относительно длинный (двоичный) ключ вместо короткого (текстового) пароля - странная, мягко говоря. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 21:28 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonПоправка. Мы ищем ключ а не пароль. Стоп-стоп. Дима. Василий. Я понял. Вы неправильно истолковали мою фразу. Мы действительно ищем ключ. Но алгоритм генерации ключа на основе pwd фразы - проприетарен. Как генерит его WinRar или WinZip - я не знаю. Но почти 100% они генерят ключи по своему. Конечно никто не будет перебирать DES ключи. Я ставлю акценты на следующем. 1) Мощность множества ключей которые используют люди в рамках конкретного проприетарного ПО во много крат меньше паспортной номинальной мощности крипто-алгоритма. 2) Любой анализ на сопоставление ключей возможен только в том случае когда мы имеем КРИТЕРИЙ успеха. Если мы ищем ключ для файла содержащего белый шум - то наша затея обречена на провал. Невозможно написать правильный тест на успех. Поэтому мы будем рассматривать только http://www.garykessler.net/library/file_sigs.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 21:35 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Дима. ОК! Удалил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 21:36 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Всё, я понял, свою (логическую) ошибку Тогда, если есть достаточно (дискового) пространства и (исходный) блок, содержимое которого полностью известно, будет классическая атака по словарю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2014, 21:43 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Похоже что можем. Но нам нужно наверняка знать, какой набор байт будет содержаться в дешифрованном сообщении. Дешифровали, проверили содержатся ли определенная информация в памяти, и т.д., когда она будет содержаться, цикл можно остановить Для данного конкретного кейса - DES (одинарный) можно декодировать первые 64 бита из трафика и уже на основании их принять решение - есть-ли стандартная сигнатура или нет. Это справедливо для PNG, RAR 5.0 первые 8 байт жёстко заданы стандартом. Это удачное стечение обстоятельств. Но вот что делать с JPEG, PDF, GIF ? Не знаю. Вот в этом направлении я сейчас думаю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 01:52 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вообще если криптоалгоритм сильный, то открытый текст не нужен для проверки ключа. По идее можно считать энтропию декодированного блока (или нескольких блоков). Правильный ключ должен давать существенно более низкую энтропию. Но это так, моя гипотеза. Я не в курсе насколько это применимо на практике. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 03:20 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, переписал на С, выкинул всё лишнее. Перебирает диапазон n-m, остальные опции аналогичны твоему варианту. Код: plaintext 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 08:00 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Скорости твоего и моего варианта примерно равны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 08:05 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyНо это так, моя гипотеза. Я не в курсе насколько это применимо на практике.Если криптографическое ПО - сильное, то перед шифрованием оно упаковывает данные и убирает заголовки, если таковые имеются. Именно для того, чтобы затруднить статистический анализ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 12:01 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Sla, svn-ом умеешь пользоваться? Давай добавлю тебя в разработчики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 12:49 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_SlaСкорости твоего и моего варианта примерно равны. О. Круть. На выходных подниму нормальный Linux с человеческим лицом и погоняю бенчмарки. Правда железяка старая. Celeron 32bit. Вчера пропатчил на ноуте Windows MinGW до 4.10.0 дак он теперь язык "C" не понимает. Каких то либ не хватает. Подниму отдельным топиком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 12:52 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovAnatoly MoskovskyНо это так, моя гипотеза. Я не в курсе насколько это применимо на практике.Если криптографическое ПО - сильное, то перед шифрованием оно упаковывает данные и убирает заголовки, если таковые имеются. Именно для того, чтобы затруднить статистический анализ. Да. Такой факт возможен. Но я такого ПО не знаю. И кроме того... старый пьяница Керхгофс нам что-то талдычил про абсолютную информированность злоумышленника в плане ПО. Ему неизвестен только ключик. Всё остальное - известно. P.S. Просто чтобы не уходить в дебри... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 12:54 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Здесь - возможно баг. Или поведение отличается от моего сорца. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. В идеале я могу указывать набор чар-сетов. Например: Код: plaintext 1. Но здесь мы возможно получим дублирование символов 0..9 и как следствие - лишние холостые обороты алгоритма. Just IMHO. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 13:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonДа. Такой факт возможен. Но я такого ПО не знаю.PGP, вообще-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 13:49 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton, да, поведение отличается. Не уверен, что нужно исправлять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 13:50 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonm_Sla, svn-ом умеешь пользоваться? Давай добавлю тебя в разработчики.Не надо. Пишу пока интересно и пока время есть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 14:03 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Ну... старина Циммерман слил его исходнички в своей книге. Так ште... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 14:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slamayton, да, поведение отличается. Не уверен, что нужно исправлять. Можно и оставить так. Только в help поставить варнинг об этой фиче. А что с сериализацией? Получилось делать --continue? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 14:13 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton... А что с сериализацией? Получилось делать --continue?По какому условию сохранять текущее состояние? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 14:20 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonНу... старина Циммерман слил его исходнички в своей книге. Так ште...Речь не об открытии исходников, а о предварительной упаковке шифруемого материала. Вы сказали, что не знаете софта, который это делает, я указал на общеизвестный пример. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 14:23 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Sla, у вас проверяется длина текста каждый раз после вывода сообщения, я правильно понял ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 15:23 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Очень похоже на алгоритм Анатолия, и мы с ним уже обсуждали этот момент. Если мой вывод выше правильный ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 15:24 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercuryОчень похоже на алгоритм Анатолия, и мы с ним уже обсуждали этот момент. Если мой вывод выше правильныйАга алгоритм одинаковый. Разница в реализации. У меня вывод наоборот. Перевод числа в строку у Анатолия по другому сделан. Надо подумать и у себя так сделать. Хотя для "алфавита" переменной ширины (постановка по словарю), не так просто будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 16:29 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_Slamayton... А что с сериализацией? Получилось делать --continue?По какому условию сохранять текущее состояние? Ну.... по сигналу SIGINT например. https://ru.wikipedia.org/wiki/SIGINT Как это сейчас реализовать на сях я еще нечитал... но в бытность на Борландах вроде делал. Так что 99% должно срабоать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 17:53 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Вот до кучи. Экземпл. http://www.thegeekstuff.com/2012/03/catch-signals-sample-c-code/ P.S. Чортов интерфейс IDE. Не могу найти DVD-привод. Без этого Пингвин Тухс мне не брат. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 17:58 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 18:02 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovskynik_x, Тут немного другое требуется. Вместо того чтобы сгенерировать ровно один случайный пароль, как делает эта программа (и однострочник в первом ответе), надо сгенерировать ВСЕ пароли из заданного множества. Собирать пробовали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 19:01 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
nik_x, чё такое pwxgen? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 19:04 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonnik_x, чё такое pwxgen? Чё такое "Тяпничный pwdgen"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 19:09 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Просто ты заскриншотил неизвестный софт. Вот я и спрашиваю. Что это? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 19:15 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Пофиксил С++ - compatibility. Терь собирается плюсами. Добавил константный префикс. Теперь можно так. Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 19:34 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
nik_xСобирать пробовали? Боже упаси :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2014, 20:50 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Добавил параметры запуска prefix=, suffix=, save=, continue=. pwdgen 1 6 - Состояние сохраняется в файл pwdgen.sav pwdgen 1 6 save=123.sav - Состояние сохраняется в файл 123.sav pwdgen continue - Считываем состояние из pwdgen.sav и продолжаем работу pwdgen continue=123.sav - Считываем состояние из 123.sav и продолжаем работу Код: plaintext 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 08:15 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Круть. Pwdgen практически готов. Далее - будет более сложная задача. Ждите новых тяпничных хакатонов. Мне нужно провести кое-какие исследования DES-кодера. В частности уйти от дискретности и подойти к непрерывности. Без этого невозможно решать поиск DES-key для большинства типовых файловых заголовков. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:06 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonВ частности уйти от дискретности и подойти к непрерывности Как заговорили на CPP :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 09:46 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercury, Это понты :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 12:08 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Верно. Это пятничные понты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 12:11 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
maytonКруть. Pwdgen практически готов. Далее - будет более сложная задача жду последнюю версию(до более сложной задачи), надеюсь вы её покажете :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 13:23 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 14:13 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
SashaMercurymaytonКруть. Pwdgen практически готов. Далее - будет более сложная задача жду последнюю версию(до более сложной задачи), надеюсь вы её покажете :) Коллеги. Я ухожу в хибернейт на выходные. Буду долго думать над DES-encoder-ом И нечёткой логикой. Буду ставить этот чортов Пингвин на 32-битный сарай с IDE диском. Буду собирать статистику по сигнатурам. Буду есть яблоки и печеньки. А вы не скучайте. Вот вам обещаный пятничный хакатон. http://www.sql.ru/forum/1128071/tyapnichnyy-animated-gif-chessplayer Удачи. P.S. Возможно я и появлюсь здесь если появятся новости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 14:58 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
mayton Буду ставить этот чортов Пингвин на 32-битный сарай с IDE диском. Оно тебе надо? Сначала нудное шаманство с дровами, потом будет жужжать дряхлыми вентиляторами и винтом хрустеть :) Не проще в виртуалке запустить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 16:00 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Посмотрим. Может и не надо. Часик два потрачу на него - потом плюну. Ноут тоже слабоват для виртуалок. По диску слабоват. 2.5-inch HDD. При том что уменя вечно открыта среда разработки с дебагом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 16:03 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Поставишь, затести производительность, бенчмарки позапускай какие-нибудь. Я так понял у тебя там какой-то селерон времен мамонтов. Если так, то виртуалка в современном смартфоне и та быстрее может оказаться. Народ виндовс на часы ставит в эмулятор x86 (считай программная эмуляция проца) http://geektimes.ru/post/239317/ PS Нашел тут год назад в завалах ноут Pentium-M 1,5 ГГц 512 памяти, пыль сдул, поставил туда пингвина (не без шаманства с дровами), грузится, работает, по инету можно еще полазить, а примитивные флэш игры томозят как пошаговые стратегии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 16:22 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
+1. Я уже много раз ворчал что ноуты и планшеты покупают не под задачи а под современный браузер и кино в H.264. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2014, 16:34 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Погонял тесты, тормозит puts. Для вывода сделал буфер: Код: plaintext 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. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. 301. 302. 303. 304. 305. 306. 307. 308. 309. 310. 311. 312. 313. 314. 315. 316. 317. 318. 319. 320. 321. 322. 323. 324. 325. 326. 327. 328. 329. 330. 331. 332. 333. 334. 335. 336. 337. 338. 339. 340. 341. 342. 343. 344. 345. 346. 347. 348. 349. 350. 351. 352. 353. 354. 355. 356. 357. 358. 359. 360. 361. 362. Средняя скорость получилась 189 Мбайт/сек. Надо более быстрый ssd ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 16:38 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
m_SlaВ итоге с "pwdgen 6 6 prefix=_Passsssssssssssssss suffix=_Passsssssssssssssss > 123.lst" мой ssd не справился Средняя скорость получилась 189 Мбайт/сек. Круть. Закоммитил. Думаю на этом можно остановиться. В конвейере с генерацией ключа и прочими процедурами pwdgen уже не будет являться bottleneck-ом. P.S. Щас занимаюсь FuzzyLogic. Для вентилей AND/OR/NOT всё успешно. Но для XOR есть трудности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 18:26 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Надо более быстрый ssd Не стоит. Нужен обычный хард с файловой системой расчитанной на огромное количество мелких файлов. Возможно ReizerFS... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2014, 18:27 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Я собрал статистику по 25 тысячам jpeg файлам что у меня нашлись локально. Точнее по их заголовкам (первые 512 бит). Цифру 512 я взял из расчёта возможной полезности при анализе блочных шифров. Следующая биткарта показывает заголовок. Биты идут в порядке старшинства. Знаком ? отмечены шумящие поля. Код: plaintext 1. 2. 3. 4. Более подробная гистограмма (для экономии места привожу первые 64 бит). Под спойлер. Код: plaintext 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. Как видим для блочного DES-анализа JPEG является трудной мишенью. Биты шумят и уменя пока нет аппарата который позволил-бы делать обратную операцию для протаскивания шумящей характеристики через все раунды DES. А вот PNG более удачен. Его сигнатура фиксирована и выглядит так. 89 50 4E 47 0D 0A 1A 0A Собраны также характеристики еще по 5 други популярным форматам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.11.2014, 00:32 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Мне так и не удалось сформировать алгебру нечеткой логики для операции XOR. Я для себя выяснил что probability A XOR B нельзя расчитать зная просто prob(A), prob(B) как в случаях с NOT/OR/AND. prob(A XOR B) возможно удастся выразить через корреляцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2014, 21:34 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Борхес. Этот чортов старик учУдил офигенскую формулу. Все книги мира. Даже еще не написанные. Код: plaintext 1. По его версии 410 страниц отпечатанных на латыни (английский) в формате 80 на 40 знаков - это офигенский универсум. И как-бе включает в себя и Библию и Коран и дофигища еретических учений. Кириллицу и всё остальное он поскипал. Ну да ладно. Допилим потом. P.S. Правда Борхес требует вместо символа _ поставивить пробел. Но я допилю это чуть позже. И чтобы не создавать весьма унылую картину монотонной последовательности обязательно нужна опция shuffle=yes. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.12.2014, 10:10 |
|
||
|
Тяпничный pwdgen
|
|||
|---|---|---|---|
|
#18+
Артур Кларк. 9 000 000 000 имён Бога. Правда внешний вид символа Писатель не упоминает. Пускай будут буквы от 'a' до 'i' Код: plaintext 1. классик - Назовите это культом, если хотите, но речь идет о важной составной части нашего вероисповедания. Употребляемые нами имена Высшего Существа - Бог, Иегова, Аллах и так далее - всего-навсего придуманные человеком ярлыки. Тут возникает довольно сложная философская проблема, не стоит сейчас ее обсуждать, но среди всех возможных комбинаций букв кроются, так сказать, действительные имена бога. Вот мы и пытаемся выявить их, систематически переставляя буквы. - Понимаю. Вы начали с комбинации ААААААА... и будете продолжать, пока не дойдете до ЯЯЯЯЯЯЯ... - Вот именно. С той разницей, что мы пользуемся азбукой, которую изобрели сами. Заменить литеры в пишущем устройстве, разумеется, проще всего. Гораздо сложнее создать схему, которая позволит исключить заведомо нелепые комбинации. Например, ни одна буква не должна повторяться более трех раз подряд. - Трех? Вы, конечно, хотели, сказать - двух. - Нет, именно трех. Боюсь, что объяснение займет слишком много времени, даже если бы вы знали наш язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.12.2014, 12:49 |
|
||
|
|

start [/forum/topic.php?all=1&fid=57&tid=2019107]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
153ms |
get tp. blocked users: |
2ms |
| others: | 11ms |
| total: | 256ms |

| 0 / 0 |
