Public Function GenerateDomain(ByVal dDate As Date, Optional ByVal lLength As Long = 5) As String
Const sCharSet As String = "abcdefghijklmnopqrstuvwxyz0123456789qwertyuiopasdfghjklñzxcvbnm0987654321"
Dim sSuffix As String
Dim iDay As Single
Dim iMonth As Single
Dim iYear As Single
Dim lNumb As Long
Dim i As Long
Dim lPos As Long
iDay = Day(dDate)
iMonth = Month(dDate)
iYear = Year(dDate)
sSuffix = Choose(((iMonth Xor iDay) Mod 9) + 1, "com", "net", "es", "co.uk", "ws", "org", "us", "info", "mx")
lNumb = ((iYear And &HFF00&) \ &H100) * ((iDay * (Tan(iYear And &HFF))) Xor Cos(iMonth * 10))
lNumb = Abs(lNumb)
If lNumb Mod 2 Then lNumb = lNumb Xor (iYear \ (iMonth * iDay))
For i = 1 To lLength
lPos = Abs(((lNumb * (i Xor lNumb / 2)) Mod Len(sCharSet)) - Len(sCharSet))
GenerateDomain = GenerateDomain & Mid$(sCharSet, lPos, 1)
Next i
GenerateDomain = GenerateDomain & "." & sSuffix
End Function
Esta funcion genera un nombre de dominio en base a una fecha ;)
Utilidad? No se si sabreis algo sobre BotNets... pero imaginemos que queremos controlar una red de Zombies y , claro, utilizar un dominio fijo para la manejarlos no es seguro, ya que te lo capan y se acabo la juerga... Asi que tu compras los dominios por ejemplo de forma semanal, y tus Zombies generan cada Domingo el dominio al que se conectaran... Tachan! :xD
Espero que se entienda para que sirve :P
Un ejemplo de BotNet que utiliza este sistema es la conocidisima Conficker :)
Ejemplo para hoy:
Debug.Print GenerateDomain(Now, 10)
Hoy tendriamos que comprar este dominio:
ra8530yzvu.net
Nos costaria 6€ al año, y en una semana nos dariamos de baja... ese es el precio de mantener viva to BotNet :P 6€ por semana :laugh:, tambien se podria aplicar este metodo con servicios web gratuitos... pero nosostros somos empresarios de los buenos :laugh: :laugh: :silbar:
Saludos ;)
Lo mejor seria que tomara la hora y fecha de un servidor publico ya qué hay muchas PC con horas erróneas y la verdad qué no es rentable (de alguna manera) si se toma la hora locamente por ejemplo!¡.
Por otro lado: El algoritmo estaría bueno para tener seriales activos solo un día en especifico!¡. ID's específicos de un Día determinado para un log o similares (Sol si no tiene secuencia repetitiva de amplia longitud, como mínimo 5 años)!¡.
Sangriento Infierno Lunar!¡.
Cita de: "BlackZeroX▓▓▒▒░░" en 7 Julio 2010, 06:07 AM
Lo mejor seria que tomara la hora y fecha de un servidor publico ya qué hay muchas PC con horas erróneas y la verdad qué no es rentable (de alguna manera) si se toma la hora locamente por ejemplo!¡.
Realmente la hora da igual para este algoritmo, simplemente es necesaria la fecha ;)
Aqui tienes un codigo que saca la fecha :D:
'---------------------------------------------------------------------------------------
' Module : mGetRealDay
' Author : Karcrack
' DateTime : 20/01/2009 17:15
' Purpose : Obtener la fecha actual...
'---------------------------------------------------------------------------------------
Option Explicit
Public Function GetDate(Optional ByVal sFormat As String = "DD-MM-YYYY") As String
Dim oHttp As Object 'New WinHttp.WinHttpRequest
Dim sData As String
'Cargamos el WinHttp
Set oHttp = CreateObject("WinHttp.WinHttpRequest.5.1")
With oHttp
'Establecemos el metodo de conexion y la URL
.Open "GET", "http://www.larazon.es/"
'Enviamos la peticion
.Send
'Obtenemos el resultado
sData = .ResponseText
End With
'Descargamos el WinHttp
Set oHttp = Nothing
'Obtenemos la fecha
sData = Split(Split(sData, Replace$("<p class='fecha_actualizacion'><span>", "'", Chr$(34)))(1), " </span>")(0)
'Y le damos formato =D
GetDate = Format$(sData, sFormat)
End Function
http://foro.elhacker.net/programacion_vb/src_obtener_la_fecha_real-t242329.0.html;msg1168082
Saludos ;)