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

#4891
Programación General / Re: Duda Brainfuck
2 Julio 2015, 13:51 PM
Cita de: Baal_30 en  2 Julio 2015, 13:06 PMLo que no logro entendes es como sólo con 8 instrucciones

Citar"[" - Avanza a la instrucción inmediatamente posterior al ] correspondiente si el byte actualmente apuntado es nulo (si es 0).
"]" - Retrocede a la instrucción inmediatamente posterior al [ correspondiente si el byte actualmente apuntado no es nulo (si es distinto de 0).

Esos son los operadores que hacen posible un loop y simplifican (dentro de lo que cabe) el código para que no sea tan... repetitivo (dentro de lo que cabe también, por que vaya tela con este lenguaje...). Peores cosas se pueden ver cómo un loop en el lenguaje 2L: https://esolangs.org/wiki/2L

En fin, este código asigna 7 celdas de memoria a las que le asigna un valor inicial de 0 a cada una, y con el búcle le va asignando distintos valores a cada celda, valores que corresponden a la tabla de caracteres ASCII.
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

Cuando termina el búcle aquí:
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]

Estas son las celdas y el valor de cada celda:
Celdas :   0   1   2   3   4   5   6
Valores:   0   0  72 104  88  32   8


Despues de eso, el resto del código simplemente va moviendo el puntero de una celda a otra, incrementando o disminuyendo su valor.
>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

La celda 2 contiene un 72, que equivale a una H.
La celda 3 contiene un 104, al que se le substrae 3, dando 101, que equivale a una e. despues, se le incrementa el valor para obtener l, l, y o.



Y ese tipo de operaciones sucesivamente...

Creo que más o menos es algo así la forma en la que trabaja.




Aquí lo explican detalladamente:

https://esolangs.org/wiki/Brainfuck



Saludos.
#4892
Cómo ya te digo, habría que ver el resto del código, por que las modificaciones que comentas en mi caso me funcionan correctamente, el label se actualiza correctamente.

De todas formas que estés utilizando un módulo para operaciones asíncronas, objetos disposables, y eventos, no me convence en absoluto, no debería causarte problemas, pero tampoco hay necesidad de que los miembros definidos en ese modulo sean compartidos con el resto de classes, por ese motivo yo usaría una Class instanciable y liberaría los objetos cuando sea necesario.

Aparte de eso, en otras circunstancias te diría que utilizases un BackgroundWorker, pero en este caso considero que sería practicamente el mismo resultado.

Prueba esto, si no te funciona entonces no sé que decirte a menos que muestres tu código completo para buscar un posible problema que en el código que has mostrado hasta ahora no aparece o no lo puedo detectar.

Así es más o menos cómo yo encapsularía esos datos:

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

Imports System
Imports System.ComponentModel
Imports System.IO
Imports System.Linq
Imports System.Net
Imports System.Windows.Forms
Imports System.Threading.Tasks

#End Region

Public NotInheritable Class FileDownloader : Implements IDisposable

#Region " Disposable Members "

   Private WithEvents wc As WebClient

#End Region

#Region " Properties "

   Public ReadOnly Property IsBusy As Boolean
       Get
           If Me.wc IsNot Nothing Then
               Return Me.wc.IsBusy
           Else
               Return False
           End If
       End Get
   End Property

#End Region

#Region " Events "

   Public Event DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs)
   Public Event DownloadCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs)

#End Region

#Region " Event-Handlers "

   Private Sub WC_DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) _
   Handles wc.DownloadProgressChanged

       If (Me.DownloadProgressChangedEvent IsNot Nothing) AndAlso (e.ProgressPercentage <> 100) Then
           RaiseEvent DownloadProgressChanged(sender, e)
       End If

   End Sub

   Private Sub WC_DownloadFileCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) _
   Handles wc.DownloadFileCompleted

       If (Me.DownloadCompletedEvent IsNot Nothing) Then
           RaiseEvent DownloadCompleted(sender, e)
       End If

   End Sub

#End Region

#Region " Public Methods "

   Public Sub DownloadAsync(ByVal url As String,
                            Optional ByVal targetFilepath As String = "")

       If String.IsNullOrWhiteSpace(url) Then
           Throw New ArgumentNullException(paramName:="url")

       Else

           If (Me.wc IsNot Nothing) AndAlso (Me.wc.IsBusy) Then
               Throw New Exception(message:="Another download is in progress.")

           Else
               Me.wc = New WebClient With
                {
                    .UseDefaultCredentials = True
                }

               If String.IsNullOrWhiteSpace(targetFilepath) Then
                   targetFilepath = Path.GetFileName(url)
               End If

               Task.Factory.StartNew(Sub() wc.DownloadFileAsync(New Uri(url), targetFilepath))

           End If

       End If

   End Sub

   ''' <summary>
   ''' Cancels the current asynchronous download.
   ''' </summary>
   Public Sub Cancel()

       If Me.wc Is Nothing Then
           Throw New NullReferenceException(message:="", innerException:=New ObjectDisposedException(objectName:="wc"))

       ElseIf Me.wc.IsBusy Then
           Me.wc.CancelAsync()

       End If

   End Sub

#End Region

#Region "IDisposable Support"

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' To detect redundant calls when disposing.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Private isDisposed As Boolean = False

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   Public Sub Dispose() Implements IDisposable.Dispose
       Me.Dispose(isDisposing:=True)
       GC.SuppressFinalize(obj:=Me)
   End Sub

   ''' ----------------------------------------------------------------------------------------------------
   ''' <summary>
   ''' Releases unmanaged and - optionally - managed resources.
   ''' </summary>
   ''' ----------------------------------------------------------------------------------------------------
   ''' <param name="isDisposing">
   ''' <c>True</c> to release both managed and unmanaged resources;
   ''' <c>False</c> to release only unmanaged resources.
   ''' </param>
   ''' ----------------------------------------------------------------------------------------------------
   Protected Sub Dispose(ByVal isDisposing As Boolean)

       If Not Me.isDisposed Then

           If isDisposing Then

               If Me.wc IsNot Nothing Then
                   Me.wc.Dispose()
               End If

           End If

       End If

       Me.isDisposed = True

   End Sub

#End Region

End Class


Y el uso que le daría ...más o menos también:

Código (vbnet) [Seleccionar]
Imports System.ComponentModel
Imports System.Threading.Tasks

Public NotInheritable Class Form1 : Inherits Form

   Dim WithEvents downloader As New FileDownloader

   Private Sub Test() Handles MyBase.Shown

       Me.downloader.DownloadAsync("http://download.thinkbroadband.com/10MB.zip")

   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) _
   Handles Button1.Click

       If Me.downloader.IsBusy Then
           Me.downloader.Cancel()
       End If

   End Sub

   Private Sub Downloader_DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) _
   Handles downloader.DownloadProgressChanged

       Dim progress As Double = (e.BytesReceived / e.TotalBytesToReceive) * 100.0R

       If Me.Label1.InvokeRequired Then
           Me.Label1.Invoke(Sub() Me.Label1.Text = progress.ToString(format:="00.00 \%"))

       Else
           Me.Label1.Text = progress.ToString(format:="00.00 \%")

       End If

   End Sub

   Private Sub Downloader_DownloadCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) _
   Handles downloader.DownloadCompleted

       If e.Cancelled Then
           Exit Sub
       End If

       If Me.Label1.InvokeRequired Then
           Me.Label1.Invoke(Sub() Me.Label1.Text = 100.0R.ToString(format:="00.00 \%"))

       Else
           Me.Label1.Text = 100.0R.ToString(format:="00.00 \%")

       End If

   End Sub

End Class


Saludos.
#4893
Tal vez puedas utilizar los miembros del namespace System.Net.NetworkInformation para ese propósito.

Con el método NetworkInterface.GetAllNetworkInterfaces enumeras los adaptadores de red, y con la propiedad NetworkInterface.NetworkInterfaceType determinas el tipo de red, cuyo valor será uno de la siguiente enumeración:
NetworkInterfaceType Enumeration - MSDN

Con otros miembros puedes determinar si la red está operativa, y muchas cosas más.

Saludos
#4894
Habría que analizar lo que haces con el Control de tipo Label, por que el código que has mostrado funciona.

De todas formas lo he simplificado (un poco) y he corregido varios conflictos de convención o estándares de VB.Net en los nombres que le diste a los miembros del código.

Esto te debería funcionar. Adapta el código a tus necesidades.

Código (vbnet) [Seleccionar]
DownLoadAsynchronously("http://download.thinkbroadband.com/5MB.zip")

Código (vbnet) [Seleccionar]
Module ModDownloadUrl

   Private WithEvents wc As WebClient

   Private Sub WC_DownloadProgressChanged(ByVal sender As Object, ByVal e As DownloadProgressChangedEventArgs) _
   Handles wc.DownloadProgressChanged

       If Not e.ProgressPercentage = 100 Then
           Trace.WriteLine(String.Format("Progress: {0}", ((e.BytesReceived / e.TotalBytesToReceive) * 100.0R).ToString(format:="00.00 \%")))
       End If

   End Sub

   Private Sub WC_DownloadFileCompleted(ByVal sender As Object, ByVal e As AsyncCompletedEventArgs) _
   Handles wc.DownloadFileCompleted

       wc.Dispose()
       Trace.WriteLine(String.Format("Progress: {0}", 100.0R.ToString(format:="00.00 \%")))
       MessageBox.Show("Download Complete.", "", MessageBoxButtons.OK, MessageBoxIcon.Information)

   End Sub

   Public Sub DownLoadAsynchronously(ByVal url As String,
                                     Optional ByVal targetFilepath As String = "",
                                     Optional ByVal ctrl As Control = Nothing)

       If String.IsNullOrWhiteSpace(targetFilepath) Then
           targetFilepath = Path.GetFileName(url)
       End If

       wc = New WebClient
       wc.DownloadFileAsync(New Uri(url), targetFilepath)

   End Sub

End Module


Saludos
#4895
Cita de: elvera_02 en  1 Julio 2015, 17:20 PM" CommandType " no existe en el contexto actual.... Necesito saber a que se debe esto!

Ese tipo de error se debe a que no se puede localizar ningún miembro con el nombre 'CommandType', en algunos casos suele ser por un error de escritura, y en otros casos cómo este por que falta el namespace donde se encuentra dicho miembro.

Escribe el namespace completo:
Código (csharp) [Seleccionar]
cmd.CommandType = System.Data.CommandType.StoredProcedure;
                   
O importa el namespace con la directiva using.
Código (csharp) [Seleccionar]
using System.Data;

Así te debería funcionar.

Saludos
#4896
Trata de publicar tu código la próxima vez para poder corregirte los errores que hayas tenido, piensa que aprender de tus errores te serviría de más ayuda.




Una manera de hacerlo sería suscribirte al evento RichTextBox.TextChanged para actualizar el TextBox especificado cuando este evento se dispare, reflejando así las modificaciones realizadas en la linea 0 del RichTextBox, recurriendo a la propiedad RichTextBox.Lines, la cual es una colección de strings que contiene las lineas de texto del RichTextBox.

Ejemplo en Vb.Net:
Código (vbnet) [Seleccionar]
Private Sub RichTextBox1_TextChanged(ByVal sender As Object, ByVal e As EventArgs) _
Handles RichTextBox1.TextChanged

   Me.TextBox1.Text = DirectCast(sender, RichTextBox).Lines.FirstOrDefault

End Sub


C#:
Código (csharp) [Seleccionar]
private void RichTextBox1_TextChanged(object sender, EventArgs e)
{
   this.TextBox1.Text = ((RichTextBox)sender).Lines.FirstOrDefault;
}


Si prefieres utilizar un botón para actualizar arbitrariamente el texto del TextBox, entonces solo tienes que hacer pequeñisimos cambios en el código que te acabo de mostrar para adaptarlo a ese tipo de comportamiento que mencionas, vamos, con esto quiero decir que creo que serás capaz de hacerlo tu solo sin ayuda xD :P.

Saludos
#4898
...

Por favor, no empieces con los típicos posts chorra y trolls.

El contenido de un post debe tener un mínimo de sentido, un propósito general, un argumento justificable, esto ya te lo comentó un compañero moderador en otra de tus "preguntas" de otra de las cuentas de usuario que tienes registradas en el foro, pero todo lo que publicas parece carecer de sentido.

Muevo el tema a un lugar más acorde, a falta de un subforo dedicado a divagaciones y cosas sin sentido en general...

Saludos!
#4899
Cita de: x64Core en 30 Junio 2015, 14:53 PM2) En este caso ya que es una aplicación con interface botones y demás controles, no es posible saber con exactitud con simpemente ejecutar y esperar, se debe ejecutar todas las funcionabilidades que tenga la aplicación al usar los controles. En el caso del Loader que mencione en el punto 1, tambien es posible enviar mensajes a los controles de la aplicación desde el Loader para ejecutar las funcionabilidades, enviar todos los mensajes posibles incluso algunos como WM_MOUSEMOVE que podría ser usado para detectar si realmente está siendo usada por un usuario o manipulada por algun otro programa, hay muchisimos mensajes.

4) Las aplicaciones puede tener funciones que se ejecutarán en un futuro, algunos les llaman bombas logicas: por ahora no muestran ningun comportamiento extraño pero luego quien sabe.

5) La única manera de saber con exactitud todas las acciones de una aplicación es teniendo el código fuente o haciendo un analisis muy extenso usando tecnologia avanzada para analisis como un Hipervisor, estoy actualmente terminando uno espero tenerlo en unos meses.

Totalmente de acuerdo, bueno, creo que es algo que resulta obvio para cualquiera, aunque de todas formas en la V.M probé casi todas las características de la app (todos los botones, haciendo escaneos y modificando opciones), pero tal vez no debí decir "Está totalmente limpio" ya que cómo tu has comentado, solamente observando ese código fuente que nunca se llegó a compartir podriamos salir de dudas sobre si realmente está infectado o no... ya que el autor del programa podría ejecutar un código malicioso al cumplirse "X" condición en la aplicación, quien sabe lo que realmente hará...

A mi sinceramente me da igual la reputación que una persona tenga si esa persona hace las cosas de esta manera tan... (prefiero no decir nada más), pero es que me mosqueo, estás cosas me mosquean mucho de verdad, por que, para mi, publicar programas gratuitos sin compartir el código fuente no es nada respetable, en absoluto, solo genera negatividad y más cuando se trata de un programa de esta temática.




Cita de: x64Core en 30 Junio 2015, 14:53 PM3) Servicios de Sandbox como Anubis son extremadamente faciles de detectar, solo en el caso de Anubis es posible detectarlo por medio de información del hardware, procesos, modulos o una combinación de ellos, este punto incluye programas como Process monitor ( Por medio de nombre de clases de ventana, controles, etc ) de esta manera es posible que al detectar este tipo de herramientas un programa puede ocultar sus acciones maliciosas y no mostrar algún comportamiento extraño.

Cabe mencionar que además es facilísimo encontrar snippets de diversos anti-sandboxes para muchos lenguajes de programación, esto quiere decir que si el autor del programa quisiera entonces no tendría más que googlear un poco y hacer un copy/paste (o desarrollarlo por si mismo) para añadirle ese tipo de protección o evasión de detección, pero que le vamos a hacer...

De todas formas, también cabe mencionar que generalmente un código anti-sandbox (o packers con características anti-sandbox) se utilizan directamente para denegar la ejecución de la aplicación (para que no corra la app en una V.M), no se suele utilizar arbitrariamente "en mitad de la aplicación", pero bien podría ser, ya que dependería de las intenciones del autor.




Me parece genial la información que has aportado para dar a conocer varios detalles importantes a los usuarios, y así hacer saber también que mi análisis no es del todo fiel, probablemente ningún análisis de nadie sería concluyente al 100%, estas cosas nunca parecen serlo.

PD: Y que no hayas sido ofensivo, se agradece todavía más si cabe. Sin sarcasmo.

Saludos!
#4900
Yo directamente propongo de nuevo que se añada la regla de "Al publicar un programa que sea de tu propiedad, debes compartir también el código fuente.", en el CAREN, o en su defecto al foro de Análisis y diseño de Malware.

Por el sentido común, y el bien estar global de los usuarios más inexpertos o más inocentes.

Saludos!