--crear un proc almacenado que hará ping a canarytokens CREATE proc ping_canarytoken AS BEGIN declare
@username varchar(max), @base64 varchar(max), @tokendomain varchar(128), @unc varchar(128), @size int, @done int,
@Random varchar(3); --configure el conjunto de variables @tokendomain = 'ya956chjqyu996i3m81mo0ih6.canarytokens.com'; conjunto @size = 128; conjunto @done = 0; conjunto
@Random = cast(round(rand()*100,0) como varchar(2)); set
@Random = concat(@random, '.'); conjunto
@username = SUSER_SNAME(); --loop se ejecuta hasta que la ruta UNC es de 128 caracteres o menos mientras @done <= 0 begin --convert username into base64 select @base64 = (SELECT CAST(N'' AS XML).value( 'xs:base64Binary(xs:hexBinary(sql:column("bin")))'' , 'VARCHAR(MAX)' ) Base64Encoding FROM ( SELECT CAST(@username AS VARBINARY(MAX)) AS bin ) AS bin_sql_server_temp); --replace base64 padding as dns will choke on = select @base64 = replace(@base64,'=','-') --construct the UNC path select @unc = concat('\\',@base64,'.',@random,@tokendomain,'\a') -- si es demasiado grande, recorte el nombre de usuario e inténtelo de nuevo si len(@unc) <= @size establecer @done = 1 else --recortar desde el frente, para mantener el nombre de usuario y perder los detalles del dominio seleccione
@username = subcadena(@username, 2, len(@username)-1) final ejecutivo master.dbo.xp_fileexist @unc; END --add a trigger if data is altered CREATE TRIGGER Rishi Nikam ON TABLE1 AFTER INSERT AS BEGIN exec ping_canarytoken end