Foro de elhacker.net

Programación => Ingeniería Inversa => Mensaje iniciado por: gastonlopez en 14 Julio 2009, 18:10 pm



Título: Ayuda con Visual FoxPro
Publicado por: gastonlopez en 14 Julio 2009, 18:10 pm
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
*