Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Тяпничный 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 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38810818&tid=2019107]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 165ms |

| 0 / 0 |
