Что нового

Генератор пароля

rollex

Новичок
Сообщения
66
Репутация
1
AutoIt: 3.3.6.1
Версия: 0.1
Категория: Вспомогательные функции
Описание: Генератор пароля любой длины, но (пока что) фиксированной сложности. Неиспользуемые аргументы оставил для использования в будущем.
Код:
Код:
Global $password, $nums, $smalls, $larges

	ConsoleWrite(PassGen(8))

	Func PassGen($arg)
		For $i = 1 To $arg
			$res = GenType(1)
			$password = $password & $res
		Next
		Return $password
	EndFunc

	Func PassGenNum($arg)
		$chars = ""
		For $i = 1 To $arg
			$char = Chr(Random(48,57,1))
			$chars = $chars & $char
			$nums = $nums + 1
		Next
		Return $chars
	EndFunc

	Func PassGenSmall($arg)
		$chars = ""
		For $i = 1 To $arg
			$char = Chr(Random(97,122,1))
			$chars = $chars & $char
			$smalls = $smalls + 1
		Next
		Return $chars
	EndFunc

	Func PassGenLarge($arg)
		$chars = ""
		For $i = 1 To $arg
			$char = Chr(Random(65,90,1))
			$chars = $chars & $char
			$larges = $larges + 1
		Next
		Return $chars
	EndFunc

	Func GenType($arg)
		$i = Random(0,2,1)
		Switch $i
			Case 0
				$res = PassGenNum($arg)
			Case 1
				$res = PassGenSmall($arg)
			Case 2
				$res = PassGenLarge($arg)
		EndSwitch
		Return $res
	EndFunc

	ConsoleWrite(@LF&"nums = "&$nums&@LF&"smalls = "&$smalls&@LF&"larges = "&$larges&@LF)
Способы облегчения и урезки кода хочу узреть я. Было бы неплохо. :IL_AutoIt_1:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Писал генератор пароля на PHP. Лежит на сайте у меня. Если интересно, могу тоже выложить код =)
 
Автор
R

rollex

Новичок
Сообщения
66
Репутация
1
Medic84
Выкладывай. У тебя там принцип парсинга, и на него интересно посмотреть. :scratch:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Код:
$Chars = "qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP"
$Lenght = 10
$Count = 10

for $i = 1 to $Count
	ConsoleWrite($i & ". " & _RandPassGen($Lenght,$Chars)& @CR)
Next

Func _RandPassGen($iLenght,$sChars)
Local $sResult = ""
;Лимит пароля 100 символов =) Эт так на всякий пожарный
	
	If $iLenght <= 100 and $iLenght > 0  Then
	$sChars = StringStripWS ($sChars, 8)  ;Удаляем пробелы
	$aSplited = StringSplit($sChars, "")  ;Разделяем побуквенно
		for $i = 1 to $iLenght
			$iRand = Random(0,UBound($aSplited) - 1)
			$sResult &= $aSplited[$iRand]     ;Собираем
		Next
	
	Return $sResult
	
	Else
	
	$sResult = "Лимиты превышены" 
	
	EndIf

Return $cResult

EndFunc   ;==>_RandPassGen


Вот портированный генератор с сайта :D

А вот код на PHP :smile:
Код:
if (!isset($_POST['kolvo'])) { 
	$_POST['kolvo'] = 10; 
			    }
if (!isset($_POST['size'])) { 
	$_POST['size'] = 10; 
			   }
if (!isset($_POST['chars'])) { 
	$_POST['chars'] = "qazxswedcvfrtgbnhyujmkiolp1234567890QAZXSWEDCVFRTGBNHYUJMKIOLP";
			    }
if ((intval($_POST['kolvo']) < 100) AND (intval($_POST['size']) < 81) AND (intval($_POST['kolvo']) > 0) AND (intval($_POST['size']) > 0)){
$chars=$_POST['chars']; 
$kolvo = intval($_POST['kolvo']); 
$size=StrLen($chars)-1; 
$password=""; 
$passw=""; 
for($i=1;$i<=$kolvo;$i++){
    $max = intval($_POST['size']);
    while($max--){
    $passw.= $chars[rand(0,$size)];}
    
    $password.= $i.". ".$passw."
";
    $passw="";    
}
}
echo
'<form method="POST" action="">'.
'<input type="hidden" name="posted" value="true">'.
'Длинна пароля: (max = 80)
'.
'<input name="size" type="text" size="40" value="'.$_POST['size'].'">'.
'
Количество паролей: (max = 99)
'.
'<input name="kolvo" type="text" size="40" value="'.$_POST['kolvo'].'">'.
'
Символы
'.
'<input name="chars" type="text" size="40" value="'.$_POST['chars'].'">'.
'

'.
'<input type="submit" value="Сгенерировать">'.
'</form>';
if (isset($_POST['posted'])) {
if($password <> ""){
echo 
"
<b>Сгенерированный пароль: </b>


<div style='background: #FAFAFA; border: 2px dashed #469EBF; padding: 7px; font-family: monospace; font-size: 12px'><b>".$password."</b></div>";
} else {
echo 
"
<b>Превышены лимиты </b>";
}
}
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
Можно еще так попробовать:
Код:
For $i = 4 To 20
	ConsoleWrite($i - 3 & '. ' & _Generate_Password($i) & ' (символов: ' & $i & ')' & @CR)
Next

Func _Generate_Password($i_Len = 10)
	;длина от 4 до 20 символов
	Local $s_Password, $i_Chr
	If $i_Len < 4 Or $i_Len > 20 Then $i_Len = 10
	For $i = 1 To $i_Len
		Switch Random(1, 3, 1)
			Case 1
				$i_Chr = Chr(Random(48, 57));0-9
			Case 2
				$i_Chr = Chr(Random(65, 90));A-Z
			Case 3
				$i_Chr = Chr(Random(97, 122));a-z
		EndSwitch
		$s_Password &= $i_Chr
	Next
	Return $s_Password
EndFunc   ;==>_Generate_Password
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
Вообще написать генератор паролей кажется самая простая задача :smile: И есть очень много способов ее написания :smile:
И каждый ее может написать по своему :D
 
Автор
R

rollex

Новичок
Сообщения
66
Репутация
1
Medic84
Ну на PHP в любом случае проще ;)

А если нужно генерировать "минимально допустимое" количество определенных символов.. Поэтому я и создал столько функций - будет проще. :smile:
 

amel27

Продвинутый
Сообщения
146
Репутация
55
для информации: http://forum.oszone.net/showthread.php?p=1163091
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
rollex
Я не страдаю паранойей, для безопасности я просто создаю 17 значный пароль. Если этого недостаточно, то Вас уже ничего не спасет...
 
Автор
R

rollex

Новичок
Сообщения
66
Репутация
1
Medic84
Я тоже не параноик, все зависит от того, как будет применен сгенерированный пароль. Если для личного использования - так перегенерировать можно, а если для автоматической операции... Но Ты прав, в длинном в таком длинном пароле в 99% случаев будет минимум по два символа разного "типа". :ok:
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
dwerf
Это бред. От брута пароля существуют капчи, блокировки в конце концов. Канал будет забита при переборе => это будет похоже на DDoS. А значит администраторы буду уведомлены о атаке и заблокируют в любом случае.
 

dwerf

Использует ArchLinux
Сообщения
478
Репутация
219
Medic84 [?]
Это бред. От брута пароля существуют капчи, блокировки в конце концов. Канал будет забита при переборе => это будет похоже на DDoS. А значит администраторы буду уведомлены о атаке и заблокируют в любом случае.

А мы о бруте паролей сетевых ресурсов?
Ну да, там скорее про локальные данные.
 

amel27

Продвинутый
Сообщения
146
Репутация
55
Medic84 [?]
Я не страдаю паранойей, для безопасности я просто создаю 17 значный пароль.
ты не понял, RANDOM() - ПСЕВДОслучайная величина, т.е. длина не играет роли, достаточно одного значения + знание алгоритма (который известен) чтобы раскрыть всю последовательность
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
amel27
Насколько мне известно этот самый random() генерируется на основе внутренних часов компьютера. Просчитать алгоритм как то сложно...
 

amel27

Продвинутый
Сообщения
146
Репутация
55
Medic84
вроде только первое, аглгоритм какой-то стандартный, когда был в теме знал, щас не помню
 
Верх