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 - Eleкtro

#9611
Scripting / Re: [src]batch-virus]f_to
17 Enero 2013, 18:56 PM
Cita de: 0x3c en 17 Enero 2013, 16:32 PMles pido de ante mano que si tienen alguna recomendacion o encuentran algun error me lo hagan saber..

1. En la primera ejecución del bat, creas la carpeta placenta
2. Si la carpeta "placenta" está creada, el script termina su ejecución.
2. Si la fecha es mayor que... intentas ejecutar de nuevo el bat en un búcle infinito.

Pregunta: ¿Que sentido le das ejecutar de nuevo el bat en un búcle infinito, si cuando la carpeta "placenta" ya está creada, el propio bat se cierra?.






cd\
El comando no sirve para saltar a la raíz de "C:\", sirve para saltar a la raíz del dispositivo actual, es decir, si el """"virus"""" se ejecuta desde la unidad "D:\", buscará por "D:\placenta".






Código (DOS) [Seleccionar]
goto _eof
Código (DOS) [Seleccionar]
:_eofexit /B

Esto que haces es totálmente innecesario, aparte de que no es necesario llamar a ninguna etiqueta, para algo existe el "EOF":
Código (DOS) [Seleccionar]
GOTO:EOF
Y así sales del bat actual.
EDITO: Siempre que no te encuentres dentro de una subrutina.






Código (DOS) [Seleccionar]
if exist placenta (Exit /B) & REm aquí llamas a 2 etiquetas innecesarias.





Código (DOS) [Seleccionar]
if %date% GEQ 13-12-13 (
Esto es imposible que te funcione:
- el símbolo es "/", y tu estás comparando el guión "-".
- la variable DATE contiene 8 dígitos, no 6.
- no estás usando un orden de comparación correcto:

Tu estás haciendo esto
Código (DOS) [Seleccionar]
if %date% GEQ 13-12-13

Si date fuese esto, daría positivo:
Código (DOS) [Seleccionar]
if 14-01-01 GEQ 13-12-13






Código (DOS) [Seleccionar]
Assoc           ".bat"="avifile"
Esto es muy incorrecto,
para tocar cosas dle registro hay que estudiar lo básico de él.

En muchos PC's funcionará como lo has dejado, pero desde luego no en todos,

el identificador "avifile" puede estar vacío, es decir, "avifile" no tiene porque estar asociado a ningún programa que reproduzca vídeos, por ponerte un ejemplo, cuando instalas un reproductor multimedia de terceros, puede modificar los identificadores por defecto, y eliminarlos.

En mi caso el identificador para los Avi es "UMPLAYER.AVI", si yo quisiera que tu bat me funcionase , debería hacer:
Código (DOS) [Seleccionar]
Assoc ".bat"="UMPLAYER.AVI"

Ya que si lo associo a "AVIFILE" obtengo como resultado algo muy distinto,
así que si lo quieres hacer bien, primero tienes que obtener el valor del identificador de los AVI.






Código (DOS) [Seleccionar]
Reg ADD  "HKLM\..."
No te recomiendo que uses la raíz Hkey_Local_Machine por los permisos del usuario, sería mejor que escribas en la raíz de la sesión del usuario local "HKCU", además, no fuerzas la escritura de la clave, y eso es muy importante.

Deberías escribir en las dos raizes para asegurarte mejor.






Código (DOS) [Seleccionar]
for /R %%i in (*.bat) do copy %0 %%i
for /R %%i in (*.bat) do attrib +s +h %%i


Esas ordenes no se llegan a procesar en ninguno de los casos ya que antes de llegar al FOR, o llamas a una etiqueta, o sales del código, pero el código no sigue,
pregunto, ¿Has probado tu script?.






Código (DOS) [Seleccionar]
::busca archivos .bat y los infecta
for /R %%i in (*.bat) do copy %0 %%i
for /R %%i in (*.bat) do attrib +s +h %%i


Estás haciendo dos pasadas en el disco duro, eso puede tardar siglos usando batch, cuando puedes concatenar los dos comandos en el mismo FOR.






Código (DOS) [Seleccionar]
copy %0 %%i
attrib +s +h %%i


¿Que pasa si la variable %%i contiene un archivo con espacios en el nombre? (KABOOM!)
¿Que pasa si intentas copiar un archivo cuando el archivo de destino ya existe? (KABOOM!)

2 razones por las que ese FOR no pueden funcionar, sin mencionar los permisos que el usuario tenga.






Y como crítica constructiva te diré que usas demasiados saltos de etiquetas y deberías aprender a indentar un código para hacer legible tus scripts, tu código está muy embrutecido.
#9612
Tus respuestas son alucinantes Kubox (y dificiles),
pero de poco me va a servir, porque lo que quiero ejecutar es el Winrar y el 7zip, que no son ensamblados .NET... xD

A ver, lo voy a explicar de otra manera...

Hice una función para ejecutar procesos, con argumentos:

Código (vbnet) [Seleccionar]
   Private Function Run_Process(ByVal Process_Name As String, Optional Process_Arguments As String = Nothing, Optional Read_Output As Boolean = False, Optional Process_Hide As Boolean = False)
           Dim My_Process As New Process()
           Dim My_Process_Info As New ProcessStartInfo()
           bla bla bla
           bla bla
           My_Process.Start() ' Run the process NOW
   end function


Y entonces en el código hago por ejemplo esto:
Código (vbnet) [Seleccionar]
Run_Process(".\Apps\Splitty_winrar.exe", argumentos, false)

Como ves uso la ruta ".\apps\" así que la estructura del directorio de mi programa debe ser así:

.\Mi_Programa.exe
.\apps
.\apps\splitty_winrar.exe


Yo lo que quiero es embedir el "splitty_winrar.exe" dentro de "mi_programa.exe", para poder usar la función sin depender de la carpeta "apps", llamando al "splitty_winrar.exe" que está embedido dentro de mi programa.así:
Código (vbnet) [Seleccionar]
Run_Process("Splitty_winrar.exe", argumentos, false)

Es decir, quiero que todo quede en un solo ejecutable distribuible, sin la carpeta "apps", y pudiendo usar la función.

Eso ya lo he intentado, el EXE queda dentro de mi programa, como un recurso más, pero no funciona la orden, no encuentra el executable "splitty_winrar.exe".

Ni siquiera sé si esto es posible hacerlo...

¿Alguna otra ayuda?
#9613
Cita de: Novlucker en 17 Enero 2013, 01:27 AMYa veremos >:D

Ahora si que sí, he resubido el maldito archivo a mi server, ya es descargable pa todos.

PD: Aviso en el evento DragEnter y DragDrop repito bastante código, lo sé, ya lo optimizaré xD.
#9614
Tengo 4 recursos en mi APP:
Splitty_WinRar.exe
Splitty_7zip.exe
Default.SFX
rarreg.key


Al compilar el proyecto, los recursos se copian a la carpeta:
...\Debug\Resources\APPS\*
Y para ejecutar los exe debo usar un:
process.Start(".\Resources\APPS\Programa.exe")

* Lo que quiero es no depender de esa carpeta llena de recursos.

He intentado cambiar el tipo de recurso a "Resource", "Embeded resource", "Content", pero al hacerlo no encuentro la forma de ejecutar los EXE porque no encuentra la ruta (Están embedidos dentro del EXE) La ruta que utilizo en la CMD es la del directorio de trabajo principal:
process.Start(".\Programa.exe")

Y también he probado a juntar los recursos con .NET Shrink e ILMerge, pero solo me permite juntar recursos en formato DLL...

¿Alguna ayuda?

EDITO: Sería factible usar un Joiner para esto? :-/
#9615
Cita de: submarino_02 en 17 Enero 2013, 03:07 AMEN DEFINITIVA:
cual seria el codigo para controlar el raton y el teclado en batch???

Desgraciadamente, no existe tál código.

Batch es muy distinto (Inferior) a cualquier otro lenguaje de programación, todo son comandos internos o externos y no existe un comando interno para hacer lo que pides,
así que tienes dos opciones:

- Recurrir a utilidades CommandLine de terceros para tu propósito (NirCMD) y usarlas desde un archivo Bat.

- Aprender cualquier otro lenguaje de scripting que no séa Batch, por ejemplo VisualBasicScript, Ruby, Python...

Aquí tienes ejemplos para las dos opciones:
http://foro.elhacker.net/scripting/programa_que_simula_la_presion_de_teclas-t380710.0.html
http://foro.elhacker.net/empty-t357086.0.html
http://foro.elhacker.net/empty-t378038.0.html
http://foro.elhacker.net/empty-t370372.0.html

PD: Usa el buscador del foro para más ejemplos.

Saludos
#9616
Cita de: Novlucker en 16 Enero 2013, 20:20 PM
Tienes que intentar mejorar tus conceptos  :¬¬ es algo bastante básico

Pues el que hizo la función original es un pedazo de Coder de CodeProject que ha hecho unos 10 controles extendido... así que quizás si usa ByVal es por algo... no sé, no me culpeis a mí xD.

PD: Cuanto más me adentro en .NET más me doy cuenta que es imposible saberlo todo al milímetro!

Saludos!
#9617
Cita de: ABDERRAMAH en 16 Enero 2013, 06:45 AMPodrías también, si quieres, pasar la imágen por referencia, como hago yo. Ésto es para no duplicarla, así trabajamos sobre la misma imágen de entrada. Ahorra memoria aunque realizará el cambio aunque no hagamos:

No conocía esos beneficios de ByRef, gracias!
#9618
He actualizado el programa con unos pequeños cambios...

El código fuente quizás no es muy bonito (Aviso xD), pero está todo ordenado por regiones...

Un saludo!
#9619
Nov lo que pasa es que el backgroundworker me da mucho palo usarlo para hilos pequeños de menos de 50 líneas, porque si uso el BGW tengo que usar todos los subs que provee el BGW para que no me vengan posibles errores, dowork, reportprogress, y el resto, en fín son bastantes y es un coñazo xD.

En otra aplicación si que uso el backgroundworker porque el thread as grandísimo, pero aquí no me vale la pena, no lo domino y luego me acabo liando con tanta cosa.

Saludos!

#9620
EDITO:

Ya lo he arreglado, era culpa de la maldita barra de progreso extendida y su propiedad "textshow",si le sumaba un valor sin que hubiera ningún valor que mostrar, da error".

Saludos!







Pues no, con lo de antes no me equivocaba, me salta error hasta por esto!:

Código (vbnet) [Seleccionar]
  Thread_Split.Start()
       MsgBox("a")


El msgbox me salta error de operación aritmética, juas!!!! no lo entiendo...

Ahora mismo me encuentro tocando todo el thread para intentar solucionarlo, lo siento si no es muy bonito ni uso técnicas tán avanzadas como la que ha comentado Kubox xD...


Este es el botón que llama al thread, bueno, es un botón para llamarlo, y otro para abortarlo.
Código (vbnet) [Seleccionar]
#Region " Button Split "

   ' Button SPLIT
   Private Sub Button_Split_ClickButtonArea(Sender As Object, e As MouseEventArgs) Handles Button_Split.ClickButtonArea

       'Try : Thread_Split.Abort() : Catch : End Try

       Thread_is_completed = False
       Thread_Split = New Threading.Thread(AddressOf Split_Thread)
       Thread_Split.IsBackground = True

       Thread_Split.Start()

       MsgBox("a") ' esto da error cuando inicio el thread por segunda vez....juas...

       While Not Thread_is_completed = True
           Application.DoEvents()
       End While

       'Thread_is_completed = True
       Want_to_cancel_thread = False

   End Sub


   ' Button STOP
   Private Sub Button_Stop_ClickButtonArea(Sender As Object, e As MouseEventArgs) Handles Button_Stop.ClickButtonArea
       Want_to_cancel_thread = True
       ' Try : Thread_Split.Abort() : Catch : End Try
       ' Thread_is_completed = True
       Kill_Process("7z")
       Kill_Process("rar")
   End Sub

#End Region



el thread:


Código (vbnet) [Seleccionar]
#Region " Split Thread "

   Sub Split_Thread()
       TotalFiles_Number = 0

       If Copy_Mode = "Copy" Or Copy_Mode = "Move" And Not Want_to_cancel_thread = True Then
           If Not Want_to_cancel_thread = True Then
               Get_All_Files(New IO.DirectoryInfo(Selected_Directory))

               ' ProgressBar
               InvokeControl(ProgBarPlus, Sub(x) x.Max = TotalFiles_Number)
               If Copy_Mode = "Copy" Then : InvokeControl(ProgBarPlus, Sub(x) x.TextFormat = "Copying {0} of {2} files")
               ElseIf Copy_Mode = "Move" Then : InvokeControl(ProgBarPlus, Sub(x) x.TextFormat = "Moving {0} of {2} files")
               End If
               InvokeControl(ProgBarPlus, Sub(x) x.TextShow = ProgBar.ProgBarPlus.eTextShow.FormatString)

               ' Copy /Move
               Dim FolderNum As Integer = 1
               For Each File In Files_List
                   If Not Want_to_cancel_thread = True Then
                       Cached_Size += File.Split("|")(2)
                       If Not Cached_Size >= Selected_Disc_Bytes Then
                           If Copy_Mode = "Copy" Then Copy_File(File.Split("|")(0) & "\" & File.Split("|")(1), Selected_Output_Directory & "\Disc " & FolderNum & Get_File_Info(File.Split("|")(0) & "\" & File.Split("|")(1), DirectoryName).ToString.Split(":")(1), True, True)
                           'If Copy_Mode = "Move" Then Move_File(File.Split("|")(0) & "\" & File.Split("|")(1), Selected_Output_Directory & "\Disc " & FolderNum & Get_File_Info(File.Split("|")(0) & "\" & File.Split("|")(1), DirectoryName).ToString.Split(":")(1), True, True)
                       Else
                           Cached_Size = Nothing
                           FolderNum += 1
                           If Copy_Mode = "Copy" Then Copy_File(File.Split("|")(0) & "\" & File.Split("|")(1), Selected_Output_Directory & "\Disc " & FolderNum & Get_File_Info(File.Split("|")(0) & "\" & File.Split("|")(1), DirectoryName).ToString.Split(":")(1), True, True)
                           'If Copy_Mode = "Move" Then Move_File(File.Split("|")(0) & "\" & File.Split("|")(1), Selected_Output_Directory & "\Disc " & FolderNum & Get_File_Info(File.Split("|")(0) & "\" & File.Split("|")(1), DirectoryName).ToString.Split(":")(1), True, True)
                       End If
                       InvokeControl(ProgBarPlus, Sub(x) x.Value += 1)
                   Else
                       Want_to_cancel_thread = False
                       Thread_is_completed = True
                       'Try : Thread_Split.Abort() : Catch : End Try
                       Exit For
                   End If
               Next
           End If

       ElseIf Copy_Mode = "7Zip" And Not Want_to_cancel_thread = True Then
           InvokeControl(ProgBarPlus, Sub(x) x.TextFormat = "Progress is not avaliable for 7Zip")
           InvokeControl(ProgBarPlus, Sub(x) x.TextShow = ProgBar.ProgBarPlus.eTextShow.FormatString)
           Run_Process("7z.exe", " a " & """" & Selected_Output_Directory & "\Disc.7z" & """" & " " & """" & Selected_Directory & """" & " -v" & Selected_Disc_Bytes.ToString & "b " & " -m0=BCJ -bd -y", False, True)
           
       ElseIf Copy_Mode = "Rar" And Not Want_to_cancel_thread = True Then
           InvokeControl(ProgBarPlus, Sub(x) x.TextFormat = "Progress is not avaliable for Rar")
           InvokeControl(ProgBarPlus, Sub(x) x.TextShow = ProgBar.ProgBarPlus.eTextShow.FormatString)
           Run_Process("RAR.exe", " a " & """" & Selected_Output_Directory & "\Disc.rar" & """" & " " & """" & Selected_Directory & """" & " -v" & Selected_Disc_Bytes.ToString & "b " & " -m0  -ibck -o+", False, True)
           
       ElseIf Copy_Mode = "Exe" And Not Want_to_cancel_thread = True Then
           InvokeControl(ProgBarPlus, Sub(x) x.TextFormat = "Progress is not avaliable for Exe")
           InvokeControl(ProgBarPlus, Sub(x) x.TextShow = ProgBar.ProgBarPlus.eTextShow.FormatString)
           Run_Process("RAR.exe", " a -sfx " & """" & Selected_Output_Directory & "\Disc.exe" & """" & " " & """" & Selected_Directory & """" & " -v" & Selected_Disc_Bytes.ToString & "b " & " -m0  -ibck -o+", False, True)

       End If

       MessageBox.Show("All files compressed", "Splitty 1.2", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1)
       Want_to_cancel_thread = False
       Thread_is_completed = True
       'Try : Thread_Split.Abort() : Catch : End Try
       'Exit Sub
   End Sub

#End Region