martes, 7 de octubre de 2014

Subir Archivo a Ftp Mediante FtpPutFile de wininet.dll [ Visual Basic 6 ]

Interactuar con un ftp tiene muchas variantes, hoy veremos solamente 3 pasos: 
-Detectar conexion a internet 
-Conectar al Ftp 
-Subir Archivo, si existe reemplazar. 
Para seguir una logica, intentar conectar al Ftp sin internet es evidente que no se podra, esto es solo para dejar un codigo simple de aplicar a cualquier software y ademas efectivo. Para establecer una resolucion de que si hay o no internet usamos:
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent$, ByVal lAccessType&, ByVal sProxyName$, ByVal sProxyBypass$, ByVal lFlags&) As Long
Luego para realizar la conexion con el Ftp usamos:
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession&, ByVal sServerName$, ByVal nServerPort%, ByVal sUserName$, ByVal sPassword$, ByVal lService&, ByVal lFlags&, ByVal lContext&) As Long
Por ultimo para subir el archivo utilizaremos la ya mencionada:
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect&, ByVal lpszLocalFile$, ByVal lpszNewRemoteFile$, ByVal dwFlags&, ByVal dwContext&) As Boolean
En un modulo que tengo llamado mdlFunciones tengo el siguiente codigo que lo dejo comentado a continuacion:
Option Explicit
Private Declare Function FtpPutFile Lib "wininet.dll" Alias "FtpPutFileA" (ByVal hConnect&, ByVal lpszLocalFile$, ByVal lpszNewRemoteFile$, ByVal dwFlags&, ByVal dwContext&) As Boolean
Private Declare Function InternetConnect Lib "wininet.dll" Alias "InternetConnectA" (ByVal hInternetSession&, ByVal sServerName$, ByVal nServerPort%, ByVal sUserName$, ByVal sPassword$, ByVal lService&, ByVal lFlags&, ByVal lContext&) As Long
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent$, ByVal lAccessType&, ByVal sProxyName$, ByVal sProxyBypass$, ByVal lFlags&) As Long
Type ConnData 'estructura de datos para conectar
    User As String
    Pass As String
    NameFTP As String ' ejemplo "ftp.microsoft.com"
End Type
Public Function IniConex(Usuario$, Password$, NombreServer$) As Boolean 'funcion que si da true es que hay internet y se logro
IniConex = False 'conectar al Ftp con exito
TestConexion = InternetOpen(vbNullString, 0, vbNullString, vbNullString, 0)
If TestConexion = 0 Then
   MsgBox "No hay conexion a internet", vbOKOnly + vbCritical, "Atencion: Error"
   Exit Function
Else
   IniConex = True
   reConFtp = InternetConnect(TestConexion, NombreServer, 21, Usuario, Password, 1, IIf(True, &H8000000, 0), 0)
   If reConFtp Then
   Else
   MsgBox "datos erroneos, verifique pass, user y nombre de ftp", vbOKOnly + vbCritical, "Error"
   IniConex = False
   End If
End If
End Function
Public Sub ArchivoSub(unaRutaArchivo$, ArchivoRemm$) 'sube el archivo especificado en la variable unaRutaArchivo
Dim UpFtp As Boolean
UpFtp = FtpPutFile(reConFtp, unaRutaArchivo, ArchivoRemm, 1, 0)
If UpFtp Then
   MsgBox "archivo subido correctamente", vbOKOnly + vbInformation, "Finalizado"
Else
   MsgBox "error al subir", vbOKOnly + vbCritical, "Atencion: Error"
End If
End Sub
Luego en otro modulo llamado mdlVariables tengo este codigo:
Option Explicit
Public TestConexion&
Public reConFtp&
Public DatosConexion As ConnData
En el formulario principal, que contiene los siguientes controles: -5 cajas de texto (textBox) -2 botones de comando (commandbutton) Con el siguiente codigo:
Option Explicit
Private Sub cmdConectar_Click()
With DatosConexion
     .User = txtUser.Text
     .Pass = txtPass.Text
     .NameFTP = txtNombreFTP.Text
     If IniConex(.User, .Pass, .NameFTP) = True Then
        MsgBox "conecto xD"
     Else
        MsgBox "revise los datos de conexion, no se pudo conectar", vbOKOnly + vbCritical, "Atencion: Error"
     End If
End With
End Sub
Private Sub cmdSubir_Click()
On Error GoTo errsub
ArchivoSub txtOrigen.Text, txtDestinoFTP
Exit Sub
errsub:
If Err.Number = 32755 Then Exit Sub
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
El proyecto es sencillo, se "llama" de manera simple, y es eficaz por ejemplo cuando queremos salvar informacion sin tener que proceder a realizar acciones extras para el guardado de datos. Este ejemplo fue proporcionado y programado con exclusividad para un colega de elhacker.net en la realizacion de un keyylogger, se mostro este codigo como base y entendimiento sobre el guardado de un archivo de texto basico en un servidor Ftp. Espero sea de utilidad, con los permisos necesarios de lararich(nickname de elhacker.net) se expuso el codigo en el blog. Descarga desde media fire del codigo fuente:
Enlace compartido de el foro de el hacker.net:
Saludos a todos. 

viernes, 26 de septiembre de 2014

Mover Label y abrir otro form al finalizar con un Sub [VB.Net]

Este codigo estaba escrito en Visual Basic 6, por el colega Novato_Xp.
Se modifico para que realize la misma funcion en .NET, el codigo no es tan distinto al original pero tiene algunos cambios interesantes.
Se coloca un label, 2 timer's y dos formularios.
Todos con nombre por default.

Al llegar al valor establecido en :

If Label1.Left >= 200 Then


Comenzara el proceso de cierre.

Acá el codigo reescrito en Visual Basic.NET (Version 2012)

Public Class Form1
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Timer1.Interval = 100 'establecemos intervalo del timer
        Label1.Text = Year(Now) 'aplicamos el año actual segun el sistema al label
    End Sub
    Private Sub Comprobar()
        Form2.Show() 'abrimos form 2
        Me.Close() ' cerramos
        Me.Dispose() ' descargamos form 1
    End Sub
    Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        If Label1.Left >= 200 Then 'comprueba posicion
            Timer1.Stop() 'detenemos
            Timer2.Start() 'iniciamos timer 2
        End If
        Label1.Left = Label1.Left + 10 ' corre label
    End Sub
    Private Sub Timer2_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer2.Tick
        Call Comprobar() 'llamamos sub que realize cierre y apertura del form
    End Sub
End Class



Espero sirva, saludos.

domingo, 14 de septiembre de 2014

Descargar Videos Ask.fm [ Version 1.2 - Update Setiembre/2014 ]

Luego de un largo periodo, de que ask agregara videos en formato Mp4 a su servidor y modificara su manera de interpretarlos hacia los usuarios, dejo inservible nuestra version anterior, si bien sigue funcionando con los videos anteriores, los nuevos no es posible descargarlos por un "type-mismatch" (entre otros) debido al cambio de path's y de interpretacion del navegador con ask.fm. La version fue actualizada y se mantiene la posibilidad de bajar los videos "antiguos" y los nuevos, siempre y cuando se seleccione la opcion "video nuevo" en la pestaña "Perfil", sino se le indica al programa esta opcion el mismo intentara descargar al estilo antiguo y si es un video nuevo tendran error en la descarga. Las librerias que actualmente se usan son las siguientes, cabe destacar que en esta version se utilizan mas que en la pasada:  

shdocvw.dll 
msinet.ocx 
richtx32.ocx 
tabctl32.ocx 
mscomctl.ocx  

Las mismas tienen que estar correctamente registradas sino no funcionara la aplicacion de un modo adecuado. Fue probado en Windows Xp Sp3 y en Windows 7 32 & 64 bits y no hubo problema ninguno en su funcionamiento. Sino saben como registrar librerias tenemos en el blog una guia que es sobre windows Xp (si la deseean en Windows 7, pueden buscar en la red o solicitar una que la hacemos) Registrar Librerias en TodoWinXP La aplicacion trae una nueva opcion de "vista previa" que esta a modo de prueba, facilitado por el colega Un-NameD de elhacker.net, donde al momento de inyectar el codigo para obtener la descarga, se puede visualizar debajo una imagen del video a descargar

Por aca unas imagenes de la aplicacion:

Esta actualizacion tiene como fin el poder descargar las videorespuestas con pocos clics, estamos abiertos a sugerencias por si acaso, para el colega "Rulo7" la pagina asker.us me da offline y la de askbook la mire y es posible que cuando tenga tiempo realize alguna aplicacion, pero no te prometo nada por la falta de tiempo mas que nada. Les dejo enlaces en distintos servidores, debido a que multiupload ya esta "muerto" colocaremos distintos servidores para que puedan bajarlo, aqui adjunto las descargas:

Descargar desde Media Fire
Descargar desde 4Shared
Descarga desde FireDrive (Ex PutLocker)
Descarga desde Mega  

Cualquier enlace invalido haganmelo saber y a la brevedad lo reparare. 
Los errores por librerias mal registradas no son problemas del programa, son problemas de SU ordenador que no tiene correctamente instaladas las mismas.
Quiero aclarar que para usar/descargar esta aplicacion NO ES OBLIGACION DESACTIVAR EL ANTI VIRUS, no puede detectarles nada porque no tiene codigo malicioso, he visto que en ocaciones la gente mal intenciona el Software y aplica "keygen's" y esas cosas, es totalmente falso, no pide claves de activacion, no tiene expiracion ninguna, es 100 % libre.
Saludos a todos.

sábado, 13 de septiembre de 2014

Primera letra mayuscula [VB .NET]

El manejo de string's siempre es bueno tener en cuenta la mayor cantidad de posibles formas de manipulacion de los mismos porque reslulta extremadamente útil en todo aspecto. Cuando se recibe una cadena y se quiere que la misma sea reconstruida toda en minuscula o mayuscula(LCase/UCase, por ejemplo) tenemos diversas opciones, pero que sucede si queremos que solo el primer caracter sea mayuscula? El codigo no interpreta numeros al inicio pero si caracteres extraños:
               
For Each Trozo In Split(LCase(Cadena), " ")
     Buff = Buff & UCase(Trozo.Substring(0, 1)) & Mid(Trozo, 2) & " "
Next Trozo
Mensaje = Buff
La variable "Trozo" seria cada palabra, "Cadena" nuestro string completo, que sera separado cada Trozo por un espacio en blanco. Nuestra variable temporal llamada "buff" almacenarala cadena completa ya transformada para luego ser trasladada a la variable principal "Mensaje" Este code transforma nuestro primer caracter en mayuscula:
UCase(Trozo.Substring(0, 1))
El ejemplo es sencillo y se puede adaptar a cualquier funcion, ya sea en modulo o en un formulario. Cabe destacar que la variable "Trozo" (en su defecto) debe ser de tipo String (En Visual 6 deberia ser Variant) para validar el For Each. Espero sea de utilidad. Saludos.

lunes, 8 de septiembre de 2014

Archivo Existente [Aporte de Ezequiel - Visual Basic 6 -]

Hemos retomado el blog para continuar compartiendo, codigos, informacion,noticias entre otras cosas relacionadas a la programacion, la red y Windows Xp.

Hoy traemos un codigo implementado por un colega de elhacker.net, el cual es sencillo pero util para verificar la existencia de archivos x en un x lugar.

El ejemplo utiliza 4 archivos de texto en la misma ubicacion que su proyecto/ejecutable, 4 labels,  4 timers y 4 botones de comando.

La idea del proyecto es que al presionar en cada boton, ejecute una funcion - o instruccion - que verifique la veracidad de existencia de un archivo (en este caso un txt) y lo muestre en un label a modo de informacion.

Option Explicit
Private Sub Timer1_Timer()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(App.Path & "/" & "documento1.txt") = True Then
   Label1.BackColor = &HFF0000
Else
  Label1.BackColor = &HFF&
End If
End Sub
Private Sub Timer2_Timer()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(App.Path & "/" & "documento2.txt") = True Then
   Label2.BackColor = &HFF0000
Else
   Label2.BackColor = &HFF&
End If
End Sub
Private Sub Timer3_Timer()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(App.Path & "/" & "documento3.txt") = True Then
   Label3.BackColor = &HFF0000
Else
   Label3.BackColor = &HFF&
End If
End Sub
Private Sub Timer4_Timer()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
If fso.FileExists(App.Path & "/" & "documento4.txt") = True Then
   Label4.BackColor = &HFF0000
Else
   Label4.BackColor = &HFF&
End If
End Sub


El codigo es sencillo y se puede aplicar a otras necesidades, gracias por compartirlo.

Saludos!