Интересный вопрос ХЭШ в 2005 Логины

vip80
Дата: 13.09.2006 15:52:52
Вопрос 1
Можно создать Логин используя команду

CREATE LOGIN test
WITH PASSWORD = 0xB081DBE85E1EC3FFC3D4E7D0227400CD
HASHED


Вопрос как получить ХЭШ ?

Функция HashBytes не помогает...

Получается создавать такие логины можно только если есть готовый хэш с другой БД ?


Вопрос 2 Как подключаться используя ХЭШ вроде в 2005 это реализовано.
BugsBunny
Дата: 13.09.2006 16:28:20
1: ?
2: I really doubt that - it would be big security hole
Гавриленко Сергей Алексеевич
Дата: 13.09.2006 16:49:04
2: Да, скоро будут утверждать, что в Connection String есть параметр Bypass Password Check = true
vip80
Дата: 13.09.2006 16:58:54
Спасибо первый вопрос снят.

Второй как использовать?
Гавриленко Сергей Алексеевич
Дата: 13.09.2006 17:10:15
vip80
Спасибо первый вопрос снят.
Второй как использовать?

Как использовать что?
BugsBunny
Дата: 13.09.2006 17:20:04
Гавриленко Сергей Алексеевич
vip80
Спасибо первый вопрос снят.
Второй как использовать?

Как использовать что?


"параметр Bypass Password Check = true", of course :)
vip80
Дата: 13.09.2006 18:04:31
Где почитать то можно про этот параметр?
Гавриленко Сергей Алексеевич
Дата: 13.09.2006 22:18:55
vip80
Где почитать то можно про этот параметр?

А смайлы ни на какую мысль не наводят, нет?
BugsBunny
Дата: 13.09.2006 22:47:03
уже пожеванное:
CREATE PROCEDURE #sp_hexadecimal --taken from 2000
    @binvalue varbinary(256),
    @hexvalue varchar(256) OUTPUT
AS
DECLARE @charvalue varchar(256)
DECLARE @i int
DECLARE @length int
DECLARE @hexstring char(16)
SELECT @charvalue = '0x'
SELECT @i = 1
SELECT @length = DATALENGTH (@binvalue)
SELECT @hexstring = '0123456789ABCDEF' 
WHILE (@i <= @length) 
BEGIN
  DECLARE @tempint int
  DECLARE @firstint int
  DECLARE @secondint int
  SELECT @tempint = CONVERT(int, SUBSTRING(@binvalue,@i,1))
  SELECT @firstint = FLOOR(@tempint/16)
  SELECT @secondint = @tempint - (@firstint*16)
  SELECT @charvalue = @charvalue +
    SUBSTRING(@hexstring, @firstint+1, 1) +
    SUBSTRING(@hexstring, @secondint+1, 1)
  SELECT @i = @i + 1
END
SELECT @hexvalue = @charvalue
go

declare @hash varbinary (255); set @hash = pwdencrypt('P@ssw0rd')
declare @sql varchar(4000); exec #sp_hexadecimal @binvalue = @hash, @hexvalue = @sql OUTPUT
set @sql = 'CREATE LOGIN test WITH PASSWORD = ' + @sql + ' HASHED'
print @sql
exec (@sql)
select loginname,createdate from master.dbo.syslogins where pwdcompare('P@ssw0rd',[password]) = 1
go
drop login test
drop procedure #sp_hexadecimal
SanyL
Дата: 08.02.2007 16:25:52
Тоже наткнулся на такую ситуацию, но вопрос немного другой:

мне нужно изменить пасс (ALTER LOGIN [Тестим10] WITH PASSWORD...) и в качестве нового пароля я должен передать его хэш, как разрешить подобную проблему? Конечно возможно делетить пользователя и логин, а потом создать с новым паролем - но на мой взгляд это не очень интересное решение... Других вариантов пока не знаю