Autor
|
Tema: Duda sobre pipes (Leído 1,625 veces)
|
Chief
Desconectado
Mensajes: 232
Ind. Arg.
|
Hola, tengo una duda queria saber si utilizando pipes para interactuar con la shell de windows recibiriamos todas las respuesta, por ejemplo si enviamos un comando y la respuesta es " desea borrar ... ? s/n " recibiriamos la repuesta y podriamos contestar??
Salu2!! PD: si tienen algun code de pipes a mano me lo pueden pasar? sino no importa.
|
|
|
En línea
|
sr. oscuro
|
|
|
Chief
Desconectado
Mensajes: 232
Ind. Arg.
|
Para que no se pierda XDD
|
|
|
En línea
|
sr. oscuro
|
|
|
NYlOn
Desconectado
Mensajes: 842
OOOOHHHHHH, TARAGÜIIII xDDDDDD
|
che Oscuro, no hace falta mandar msgs para que tu thread kede arriva, si nadie lo contesto es pq nadie sabe la respuesta, o pq ya se hablo mucho del tema....
Y te doy un consejo, no te cierres a las respuestas del foro, no te des x vencido si nadie sabe una respuesta, busca x Google, otros foros, en este mismos foro, disitintas paginas... muchas veces se dan respuestas totalmente erroneas y uno se piensa que no su problema no puede ser solucionado, x eso tenes q recurrir a otras fuentes... no te kedes trabado x un simple post no respondido...
un abraz0
G0nz4
PD: no tengo idea lo que hacen las pipes xDDDD
|
|
|
En línea
|
|
|
|
Manibal_man
Desconectado
Mensajes: 528
|
Hola, tengo una duda queria saber si utilizando pipes para interactuar con la shell de windows recibiriamos todas las respuesta, por ejemplo si enviamos un comando y la respuesta es " desea borrar ... ? s/n " recibiriamos la repuesta y podriamos contestar?? ahas, se puede... aca va un code que postearon alguna vez en hackxcrack: 'Crear Tunel Public Declare Function CreatePipe Lib "kernel32" ( _ phReadPipe As Long, _ phWritePipe As Long, _ lpPipeAttributes As Any, _ ByVal nSize As Long) As Long 'Leer Tunel Public Declare Function ReadFile Lib "kernel32" ( _ ByVal hFile As Long, _ ByVal lpBuffer As String, _ ByVal nNumberOfBytesToRead As Long, _ lpNumberOfBytesRead As Long, _ ByVal lpOverlapped As Any) As Long 'Esto lo usa la funcion CreateProcessA Public Type SECURITY_ATTRIBUTES nLength As Long lpSecurityDescriptor As Long bInheritHandle As Long End Type 'Esto lo usa la funcion CreateProcessA Public Type STARTUPINFO
cb As Long lpReserved As Long lpDesktop As Long lpTitle As Long dwX As Long dwY As Long dwXSize As Long dwYSize As Long dwXCountChars As Long dwYCountChars As Long dwFillAttribute As Long dwFlags As Long wShowWindow As Integer cbReserved2 As Integer lpReserved2 As Long hStdInput As Long hStdOutput As Long hStdError As Long End Type 'Esto lo usa la funcion CreateProcessA Public Type PROCESS_INFORMATION hProcess As Long hThread As Long dwProcessId As Long dwThreadID As Long End Type 'Esta funcion lanza el proceso y 'devuelve sus datos a traves de PROCESS_INFORMATION Public Declare Function CreateProcessA Lib "kernel32" ( _ ByVal lpApplicationName As Long, _ ByVal lpCommandLine As String, _ lpProcessAttributes As SECURITY_ATTRIBUTES, _ lpThreadAttributes As SECURITY_ATTRIBUTES, _ ByVal bInheritHandles As Long, _ ByVal dwCreationFlags As Long, _ ByVal lpEnvironment As Long, _ ByVal lpCurrentDirectory As Long, _ lpStartupInfo As STARTUPINFO, _ lpProcessInformation As PROCESS_INFORMATION) As Long 'Cierra el tunel Public Declare Function CloseHandle Lib "kernel32" ( _ ByVal hHandle As Long) As Long 'Constantes necesarias para lo de antes Public Const NORMAL_PRIORITY_CLASS = &H20& Public Const STARTF_USESTDHANDLES = &H100& Public Const STARTF_USESHOWWINDOW = &H1
Public Function Cmdd(ByVal Comando As String) As String On Error GoTo ACAGAR Dim proc As PROCESS_INFORMATION 'Informacion de CreateProcessA Dim ret As Long 'Esto se usa para obtener el retorno de las 'funciones API Dim start As STARTUPINFO 'Informacion de inicio para CreateProcessA Dim sa As SECURITY_ATTRIBUTES 'Atributos de seguridad para 'CreateProcessA Dim hReadPipe As Long 'Lectura de Tunel Dim hWritePipe As Long 'Escritura de Tunel Dim lngBytesread As Long 'Cantidad de Bytes leidos Dim strBuff As String * 256 'Buffer de lectura de tunel 'Creamos el tunel... sa.nLength = Len(sa) sa.bInheritHandle = 1& sa.lpSecurityDescriptor = 0& ret = CreatePipe(hReadPipe, hWritePipe, sa, 0) If ret = 0 Then 'Si falla la creacion del tunel Cmdd = "Fallo de Conexion con Proceso. Error: " & Err.LastDllError Exit Function End If 'Lanzamos el interprete de comandos... start.cb = Len(start) start.dwFlags = STARTF_USESTDHANDLES Or STARTF_USESHOWWINDOW start.hStdOutput = hWritePipe start.hStdError = hWritePipe 'Buscar la ruta del CMD.exe y añadir /c y el comando mCommand = Environ("COMSPEC") + " /c " + Comando 'Creamos el proceso usando la String mCommand de antes... 'y obtenemos RET para saber si se ha ejecutado ret& = CreateProcessA(0&, mCommand, sa, sa, 1&, _ NORMAL_PRIORITY_CLASS, 0&, 0&, start, proc) If ret <> 1 Then 'si no se encuentra el comando... Cmdd = "Archivo o Comando no encontrado" Exit Function End If 'Cerramos el tunel ret = CloseHandle(hWritePipe) mOutputs = "" 'lo leemos Do ret = ReadFile(hReadPipe, strBuff, 256, lngBytesread, 0&) mOutputs = mOutputs & Left(strBuff, lngBytesread) Loop While ret <> 0 'cerramos los Handles (controladores) ret = CloseHandle(proc.hProcess) ret = CloseHandle(proc.hThread) ret = CloseHandle(hReadPipe) 'y hacemos que la funcion devuelva el resultado del comando a traves ' de la string mOutputs Cmdd = mOutputs Exit Function ACAGAR: Cmdd = "Error:" + Err.Description End Function
y se usa asi: response=cmdd("net view") Donde "response" es la respuesta del comando, claro está. Saludos
|
|
|
En línea
|
:: I was born ready motha fucka ::
|
|
|
Chief
Desconectado
Mensajes: 232
Ind. Arg.
|
Gracias Manibal_man y bueno ta bien tenes razon NylOn es que como veia que se les contastaba a todos los otros y ami no y ya estaba en el ultimo mi post, no queria que se pasara a la segunda hoja, ya que diganme, ¿¿¿ Cuantas veces se han pasado, o pegado una vuelta por la hoja 2 ?? Salu2!! y gracias de buelta.
|
|
|
En línea
|
sr. oscuro
|
|
|
|
|