Hola a todos, mi nombre es Gastón, hace mucho tiempo me incié con el cracking, ahora de vuelta me enfrento a nuevas cosas. Visual FoxPro jamás lo toqué. Busqué, entre teorías y programas, con el ReFox MMII, decompilé la rutina del serial, calculo yo.
Me gustaría saber si alguien tiene experiencia, para ponernos en contacto, o sugerencias, quién sepa también leer el código mejor. Yo 0.
Les agradezco, saludos desde Argentina.
LPARAMETERS cllave, thisnsemilla, lprint, thisncantidadllaves, ncompararconla
LOCAL lvalido, norig, nmodif, i, j, k, semtemp
LOCAL allaves, acod, u, lmodoidlicencias
LOCAL thisncantidadllaves, thisncantidaddigitos, referencia
cllave = STUFF(cllave, 5, 1, '')
referencia = thisnsemilla
IF VARTYPE(thisnsemilla) == "C"
semtemp = 0
thisnsemilla = STUFF(thisnsemilla, 5, 1, '')
FOR u = 1 TO LEN(thisnsemilla)
semtemp = semtemp + ((ASC(SUBSTR(thisnsemilla, u, 1)) + u) / u)
ENDFOR
thisnsemilla = semtemp
IF VARTYPE(thisncantidadllaves) == "L"
thisncantidadllaves = 50
ENDIF
lmodoidlicencias = .T.
ELSE
thisnsemilla = 10
thisncantidadllaves = 2000
ENDIF
thisncantidaddigitos = 8
lvalido = .F.
norig = 0
nmodif = 0
DIMENSION allaves(thisncantidadllaves)
DIMENSION acod(thisncantidaddigitos)
FOR k = 1 TO thisncantidadllaves
allaves(k) = ""
ENDFOR
norig = ROUND(RAND(thisnsemilla) * 100, 0)
FOR i = 2 TO thisncantidadllaves + 1
j = 2
FOR k = 1 TO 4
acod(k) = 0
ENDFOR
DO WHILE j < thisncantidaddigitos + 2
norig = ROUND(RAND() * 100, 0)
nmodif = norig
IF nmodif < 30
nmodif = MOD(nmodif, 10)
ELSE
DO WHILE nmodif < 65
nmodif = nmodif + ROUND(norig / 2, 0)
ENDDO
ENDIF
IF nmodif > 90
nmodif = MOD(nmodif, 10)
ENDIF
acod(j - 1) = nmodif
j = j + 1
ENDDO
FOR k = 1 TO thisncantidaddigitos
IF acod(k) < 10
allaves(i - 1) = allaves(i - 1) + STR(acod(k), 1, 0)
ELSE
allaves(i - 1) = allaves(i - 1) + CHR(acod(k))
ENDIF
ENDFOR
IF allaves(i - 1) == cllave
EXIT
ENDIF
ENDFOR
IF lprint
IF lmodoidlicencias
SET TEXTMERGE TO (referencia) NOSHOW
ELSE
SET TEXTMERGE TO CUIUI NOSHOW
ENDIF
SET TEXTMERGE ON
\\Generado el : <<DATETIME()>>
IF lmodoidlicencias
\Referido al CUIUI : <<Referencia>>
\nº de ILs : <<THISnCantidadLlaves>>
ELSE
\nº de CUIUIs : <<THISnCantidadLlaves>>
ENDIF
\
FOR i = 1 TO thisncantidadllaves
\<<STUFF(aLlaves(i), 5, 0, '-')>>
ENDFOR
SET TEXTMERGE OFF
SET TEXTMERGE TO
ENDIF
SET EXACT ON
LOCAL nbusqueda
nbusqueda = ASCAN(allaves, cllave)
IF nbusqueda > 0
IF VARTYPE(ncompararconla) == "L"
lvalido = .T.
ELSE
IF nbusqueda = ncompararconla
lvalido = .T.
ENDIF
ENDIF
ENDIF
RETURN lvalido
ENDFUNC
*