elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Tutorial básico de Quickjs


  Mostrar Mensajes
Páginas: 1 ... 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 [571] 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 ... 1236
5701  Foros Generales / Dudas Generales / Re: ¿Sacar el texto que muestra de una imagen? en: 4 Marzo 2015, 12:37 pm
También hay que tener en cuenta que un gran porcentaje de aplicaciones recurren al motor OCR Tesseract, que fue y seguramente sigue siendo la solución open-source más extendida universálmente (al ser la mejor opción gratuita), y se basan en los algoritmos que éste utiliza, pero existen otros OCR más sofisticados que puedes encontrar en aplicaciones/librerías comerciales.

EDITO: Y también se debe tener en cuenta que, si el algoritmo OCR y/o aplicación lo permite, se debe especificar el lenguaje de origen del texto a reconocer para aumentar la probabilidad de éxito de la conversión, pues no es lo mismo utilizar los patrones del lenguaje Inglés, que del Castellano.

existe algún método por el cual de por ejemplo , si le saco una foto a la libreta de mi cuaderno , poder pasar todo lo que se visualiza en esa imagen a texto plano , siempre y cuando sea perfectamente visualizable y entendible

Perfectamente visualizable y entendible es altamente improbable, pues hay que comprender que siempre existirá un margen de error en la traducción, margen que aumentará por la cantidad total de texto-en-imagen que quieras convertir a texto plano y otros factores que favorecerán o desfavorecerán al reconocimiento de texto, debido a la propia naturaleza del ser humano por el amplio abanico existente en la escritura a mano (hand-writting) y las variaciones personales de cada individuo, el reconocimiento resulta complejo para "una máquina" que está limitada por la lógica empleada de un algoritmo de reconocimiento óptico de texto (OCR) en concreto.

Saludos!
5702  Programación / .NET (C#, VB.NET, ASP) / Re: Error de Compilacion (No me toma SelectedItem de DropDownList) en: 4 Marzo 2015, 09:59 am
Unable to cast object of type 'System.Web.UI.WebControls.ListItem' to type 'System.IConvertible'.

Aquí, en:

ViewState["idNombre"] = Convert.ToInt32(currentItem);

en (currentItem), el valor del mismo es (con punto de interrupcion) el Nombre propiamente dicho (o sea, la palabra del Nombre) y no su Id en la Tabla de donde es llamado, que es lo que quiero obtener para que me cargue en el ViewState (el Id de la Tabla de ese Ítem seleccionado).......

Creo que entendí mal lo que dijiste, pensé que el valor del item (currentItem) contendría un dígito, y no una cadena con "un nombre" (obviamente por eso no funciona la conversión a Integer, por que no es un número), pero tú lo que quieres obtener es el índice de ese item, no el contenido del item, bien, me queda claro.

Cómo ya te dije, no manejo ASP.Net, pero los controles de Framework suelen tener métodos/propiedades para facilitar tareas de indexación cómo esa y no es dificil averiguar el cómo,
lee la documentación de la propiedad 'SelectedIndex', que devuelve el índice del item seleccionado:
https://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.dropdownlist.selectedindex%28v=vs.110%29.aspx

Por ende, esto debería funcionarte:

Código
  1. // ListItem currentItem = ((DropDownList)sender).SelectedItem;
  2. ListItem currentIndex = ((DropDownList)sender).SelectedIndex;
  3.  
  4. ViewState["idNombre"] = currentIndex;

Saludos
5703  Programación / .NET (C#, VB.NET, ASP) / Re: Otra de las mias jejje traspasar datos condicionados de una variable a otras en: 4 Marzo 2015, 09:43 am
Si no he entendido mal, tienes una colección de números cómo esta:
Código
  1. Dim collection As IEnumerable(Of Integer) = Enumerable.Range(1, 99)

Y quieres partirlo en colecciones de 4 elementos cada una:
Código
  1. Dim parts As Integer = 4

Pues, cómo siempre te digo, usa LINQ:
Código
  1. Dim result As IEnumerable(Of IEnumerable(Of Integer)) =
  2.    From index As Integer
  3.    In Enumerable.Range(0, CInt(Math.Ceiling(collection.Count() / parts)))
  4.    Select collection.Skip(index * parts).Take(parts)

Saludos
5704  Programación / Scripting / Re: Duda script BATCH en: 4 Marzo 2015, 06:04 am
Como podría hacerlo?

Utilizando los modificadores de las variables de For.

Ejemplo:
Código:
@Echo OFF & SetLocal EnableDelayedExpansion

For /D /R "C:\Directorio" %%# in ("*") Do (

Set /A "count+=1"
Set "dirName!count!=%%~n#"
Set "dirPath!count!=%%#"

Call Echo [dirName!count!] %%dirName!count!%%
Call Echo [dirPath!count!] %%dirPath!count!%%
Echo+

)

Pause&Exit /B 0

Output:
Código:
[dirName1] Carpeta 1
[dirPath1] C:\Directorio\Carpeta 1

[dirName2] Carpeta 2
[dirPath2] C:\Directorio\Carpeta 2

[dirName3] Carpeta 3
[dirPath3] C:\Directorio\Carpeta 3

Presione una tecla para continuar . . .

Saludos
5705  Programación / Scripting / Re: [BATCH] Duda sobre recursividad en directorio y permisos de usuarios en: 4 Marzo 2015, 05:40 am
La lista de directorios que itera el For /D /R se va actualizando por cada nuevo directorio que encuentra (es decir, por cada subdirectorio que creas) y resulta en una recursividad indeseada, debes utilizar otro tipo de búcle For /F o ForFiles.

El tema de la herencia de permisos para ser sinceros no lo tengo claro, pero si no recuerdo mal Windows trabaja esos aspectos de forma automatizada, tanto el propietario cómo los permisos de un sub-directorio se heredan por si solos al crear dicho sub-directorio sin necesidad de llevar a cabo asignaciones manuales, de todas formas si me estoy equivocando puedes asignarle los permisos que quieras a las carpetas creadas, claro está.

Código
  1. @Echo OFF
  2.  
  3. Set "folderName=Nueva Carpeta"
  4.  
  5. For /F "Tokens=* Delims=" %%# in ('Dir /B /S /AD "*"') Do (
  6. Echo %%~#
  7. Echo    [+] %%~#\%folderName%
  8. (MKDir "%%~#\%folderName%")2>NUL
  9. )
  10.  
  11. Pause&Exit /B 0

Saludos
5706  Foros Generales / Dudas Generales / Re: Capturas de pantalla de plataforma java en: 4 Marzo 2015, 05:15 am
dice disponer de tecnología para detectar usos indebidos, y dado que accedo con mi nombre de usuario y mis datos personales a la plataforma, no he querido hacer esto por si acaso. ¿Qué me recomendáis? Gracias

la cuestión es si pueden tener un programa o algo que detecte que hago las capturas... quisiera hacerlas sin que me digan nada claro...

Estoy seguro que con "detectar usos indebidos" no se están refiriendo a capturas de pantalla,
no temas, de todas formas no pueden detectarlo.

Supongo que estás bajo Windows, y la única 'tecnología para detectar usos indebidos' que podría tener dicha aplicación para 'detectar' capturas de pantalla sería un hook para escuchar las llamadas a las funciones de la API de Windows que se suelen utilizar para capturar regiones de la pantalla (CreateDC, etc...), pero eso sería una inmensa tontería por que miles de aplicaciones de distintas temáticas usan dichas funciones de la WinAPI y no siempre es con fines de crear capturas de pantalla, por ende a parte de ser algo muy tedioso no creo que puedan saberlo con certeza y solo por intentar detectarlo con algun procedimiento de monitoreo en el lado del end-user creo que ya estarían violando tu intimidad y la ley, cómo ya dije estoy seguro que con "detectar usos indebidos" no se están refiriendo a capturas de pantalla, ellos pueden avisarte de que no está permitido hacer capturas de pantalla y te pueden decir que no hagas, pero de ahí a detectarlo...

Saludos!
5707  Programación / .NET (C#, VB.NET, ASP) / Re: problema con split y webrequest en: 3 Marzo 2015, 18:07 pm
gracias amigo es bueno ver criticas a mi codigo
si nadie me critica o me aconseja nunca podre cambiar rapido
definitivamente estructuraste mejor el codigo que como yo lo tenia

a veces puedo resultar un poco borde o cascarabias (inconscientemente pretendo que todo el mundo haga las cosas dentro de un margen que yo considere 'bien hecho' xD) pero no me lo tengas muy en cuenta, espero que darte cuenta de esos pequeños fallos en el source te ayude a optimizar el código y/o aprender algo más que no supieras.


igual yo veo que te la rifas bien fuerte programando yo me pregunto si en una empresa te exigen programar tan rapido como tu?

claro para una empresa mientras mas rapido mejor (se ahorran dinero y les das mas productividad)

pero realmente eso exige una empresa?
asi de rapido programa el programador promedio? o masomenos

yo supongo que alguien recien salido de la universidad no programa tan rapido

he visto videos de las practicas que hacen los que estan estudiando en la universidad y apenas saben que hacer (no todos aclaro)

¿A que te refieres con "rápido"?, si te parecí rápido en analizar el source y escribir unas cuantas lineas de código fue simplemente porque estoy habituado a manejar el lenguaje, y cuando estás habituado la comprensión y el desarrollo de cosas básicas es tan rápido como parpadear, no soy el único al que le pasa, vaya xD.

Por si te sirve de algo saberlo, conocer y saber manejar adecuadamente las características de la IDE de VisualStudio (ej: auto-completado) aumenta considerablemente el rendimiento (disminuye el tiempo de escritura),
y si el código lo hubiese elaborado para el desarrollo de una aplicación mía, entonces me habría tomado más tiempo, porque cuidaría mucho más ciertos detalles que no tengo en cuenta a la hora de publicar códigos que son solo para resolver problemas o dudas especificas.

Sobre los requisitos de las empresas, no puedo resolver tu duda con certeza porque en las empresas que he trabajado mi oficio no era desarrollar software ni tampoco estaban relacionadas con eso, no he tenido esa suerte ya que mi aprendizaje fue auto-didacta (y sigue siendo, que en .Net cada día se aprende algo nuevo), pero obviamente imagino que en las empresas dedicadas a esto, evaluarán y tendrán muy en cuenta el rendimiento de sus trabajadores, cómo el tiempo de entrega de los proyectos, del mismo modo que los detalles de elaboración del código.

Un saludo!
5708  Informática / Software / Re: 16 razones para no usar Chrome en: 3 Marzo 2015, 15:30 pm
Uso Firefox Nightly porque es de 64 bits. Se rompe cada tanto (no cosas graves, hasta ahora), pero avisas y lo fixean en el día.

La última release que instalé de FF-Nightly hará hace 2 años, pero no me gustó porque carecía de compatibilidad con la mayoría de extensiones que yo utilizaba (y sigo utilizando) en el Firefox normal, pero no se, quizás hayan mejorado mucho en ese aspecto desde entonces, tú que estás utilizando una versión actual lo sabrás mejor que yo :P, si es full-compatible con las extensiones de Firefox normal me lo volvería a instalar ya mismo xD.

Saludos!
5709  Informática / Software / Re: 16 razones para no usar Chrome en: 3 Marzo 2015, 15:18 pm
Yo más bien diría que lo de tu imagen son 16 razones por las que SI usar Chrome (y lo digo como un firefox-lover que soy, no utilizo chrome solo porque estoy mal acostumbrado a la zorrita).

Chrome trabaja practicamente todas las características de la aplicación, en paralelo, creando un proceso separado por cada extensión y pestaña activa (de diferentes dominios) y el renderizador, para aumentar el tiempo de respuesta y de paso evitar cuelgues en la UI de Chrome debido a un mal funcionamiento en cualquiera de sus características primarias o de terceros.

Si la aplicación está desarrollada de esa manera es por esas buenas razones, porque seguramente sea la manera más eficiente de exprimir el potencial y el rendimiento de un navegador (Google sabe lo que se hace), por desgracia a mi querido firefox de 32 Bits aun le queda mucho que aprender.

¿Qué consume muchos recursos de memória?, pues si, pero las características más avanzadas siempre requerirán un potencial mayor igual que por ejemplo instalar una nueva versión de Windows, sabemos que hay que pagar un precio justificado,
de todas formas, puedes iniciar el proceso de chrome utilizando el parámetro “–process-per-site”, lo que reducirá la cantidad de procesos a 1 por página web (dentro de un mismo dominio) y esí evitarás que se generen procesos adicionales que requieran más RAM (en su totalidad).

Saludos!
5710  Programación / .NET (C#, VB.NET, ASP) / Re: problema con split y webrequest en: 3 Marzo 2015, 09:53 am
Hay muchas, pero muchísimas cosas inapropiadas en el código fuente que has compartido.





1.
El textbox de tu aplicación está limitado a 32.767 caracteres (Int16), no sirve de mucho si intentas cargar una lista de passwords personalizada.

De hecho no es ninguna buena idea intentar mostrar una lista entera de passwords en el layout de un control, por que se hace muy pesado con listas largas, y esto limitará mucho tu aplicación, pero bueno, puedes aumentar el límite al máximo permitido de esta manera:
Código
  1. Me.TextBox1.MaxLength = Integer.MaxValue





2.
Citar
Código
  1.    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  2.        Dim fic As String = System.AppDomain.CurrentDomain.BaseDirectory.ToString & "diccionario.lst"
  3.        Dim sr1 As New System.IO.StreamReader(fic)
  4.        Dim texto As String
  5.  
  6.        TextBox3.Text = fic
  7.        Label1.Text = ""
  8.        texto = sr1.ReadToEnd()
  9.        sr1.Close()
  10.        TextBox1.Text = texto
  11.  
  12.    End Sub

Primero lees el archivo que almacena las combinaciones en la variable texto, luego pasas el valor de la variable a la lógica de un textbox, y por último, en otra parte del código, interactuas con el texto contenido en el TextBox para procesar cada linea de passwords.

¿te das cuenta de lo inapropiado que resulta hacer todo eso, si por ejemplo la lista de passwords fuese de +100.000?, supone una disminuición de rendimiento tanto por la sobre-carga/saturación del textbox como por el tiempo de ejecución que consumes al partir el texto del textbox por cada uno de los passwords que haya escrito, no hay necesidad de realizar tantas operaciones ni hacerlo de esa manera.

He modificado el código para estructuarlo mejor y otras mejoras de rendimiento:

Código
  1.    Private passFilepath As String = Path.Combine(Application.StartupPath, "diccionario.lst")
  2.    Private passwordList As IEnumerable(Of String)
  3.  
  4.    Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) _
  5.    Handles MyBase.Load
  6.  
  7.        Me.LoadDefaults()
  8.  
  9.    End Sub
  10.  
  11.    Private Sub LoadDefaults()
  12.  
  13.        Me.Label1.ResetText()
  14.        Me.tb_PassFilepath.Text = Me.passFilepath
  15.  
  16.        Try
  17.            Me.passwordList = Me.GetPasswordList(Me.passFilepath)
  18.  
  19.        Catch ex As Exception
  20.            Throw
  21.  
  22.        End Try
  23.  
  24.        With Me.tb_PasswordList
  25.            .MaxLength = Integer.MaxValue
  26.            .SuspendLayout()
  27.            .Text = String.Join(ControlChars.NewLine, Me.passwordList)
  28.            .ResumeLayout()
  29.        End With
  30.  
  31.    End Sub
  32.  
  33.    ''' <summary>
  34.    ''' Gets the password list.
  35.    ''' </summary>
  36.    ''' <param name="passFilepath">The passwords filepath.</param>
  37.    ''' <returns>IEnumerable(Of System.String).</returns>
  38.    Private Iterator Function GetPasswordList(ByVal passFilepath As String) As IEnumerable(Of String)
  39.  
  40.        Using sr As New StreamReader(passFilepath, Encoding.Default)
  41.  
  42.            Do Until sr.EndOfStream
  43.                Yield sr.ReadLine
  44.            Loop
  45.  
  46.        End Using
  47.  
  48.    End Function

Nota: te recuerdo que el textbox está LIMITADO, así que en la práctica real no sirve con niguna lista de passwords de las que se suelen utilizar para un ataque de este tipo, utiliza la variable de la colección de passwords, que tiene una muy mayor capacidad.





3.
El método Application.DoEvents() no cumple la misma funcionalidad que en VB6, y en VB.Net se suele utilizar (o mejor dicho se suele recurrir cómo último recurso a su utilización) para evitar cuelgues (detenciones) en el hilo del Form debido a un mal diseño de la aplicación por parte del programador, pero en tu caso ni siquiera necesitas recurrir a su utilización por que no estás desarrollando una aplicación multi-threading, ¿por qué lo utilizas?, no lo hagas, sea por el motivo que sea, puedes solucionarlo debidamente.





4.
Saca todas las requests fuera de los event-handlers, TODAS, sacalas, y añadelas en distintos métodos que cumplan sus distintas funcionalidades, es horrible tal y cómo está.
Además estás accediendo continuamente a las propiedades .Text de los contorles, no lo hagas, inicializa las variables necesarias para asignar esos valores y usa esas variables.

Hay que intentar separar los Datos, de la UI, pero los programadores de WinForms no solemos hacernos una idea muy clara de este concepto debido a la propia naturaleza de la tecnología WinForms y los malos hábitos de programación que ello supone.





5.
Elimina las importaciones de estos namespaces, no los estás utilizando:
Código
  1. Imports System.ComponentModel
  2. Imports System.Data




6.
Cita de: Source-code
Código
  1.    Public Sub button1_Click(sender As Object, e As EventArgs) Handles button1.Click
  2.  
  3.        If File.Exists(tb_PassFilepath.Text) Then
  4.            ' ...
  5.            sText = Split(tb_PasswordList.Text, vbCrLf)
  6.            textBox_pass.Text = sText(i)
  7.            ' ...
  8.            Dim request As HttpWebRequest = DirectCast(WebRequest.Create(URL), HttpWebRequest)
  9.            ' ...
  10.            If DirectCast(response, HttpWebResponse).StatusCode = HttpStatusCode.Redirect Then
  11.                ' ...
  12.            Else
  13.                i += 1
  14.                ' ...
  15.                button1.PerformClick()
  16.            End If
  17.  
  18.        Else
  19.            ' ...
  20.        End If
  21.  
  22.    End Sub
  23.  

Esa es la parte más problemática del código y por la que has formulado tu duda.

Al leer y analizar esa parte del código simplemente no podia creerme lo que estaba viendo, si no recuerdo mal vienes de VB6 y eso significa que sabes perfectamente como desarrollar un búcle normal y corriente para iterar la colección de passwords, pero en lugar de eso has preferido recurrir a la manera más rebuscada que yo he visto para llevar a cabo una operación repetitiva, interactuando innecesariamente con la UI (con el botón) y partiendo el texto del textbox de manera continua, ¡muy mal!.

Realmente tienes que tratar de modificar (mejorar) toda la lógica que estás empleando en el desarrollo de la aplicación, de todo el código.

Te muestro un ejemplo de cómo podrías estructurarlo:

Código
  1.    Public Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) _
  2.    Handles button1.Click
  3.  
  4.        Me.TestPasswordList(Me.passwordList)
  5.  
  6.    End Sub
  7.  
  8.    Private Sub TestPasswordList(ByVal passwordList As IEnumerable(Of String))
  9.  
  10.        Dim cookies As CookieContainer = Nothing
  11.  
  12.        For Each password As String In passwordList
  13.  
  14.            If Me.TestPassword(password, cookies) Then
  15.                Me.ReportSuccessPassword(password)
  16.                Exit Sub
  17.            End If
  18.  
  19.        Next password
  20.  
  21.        Me.ReportFailedPassword()
  22.  
  23.    End Sub
  24.  
  25.    ''' <summary>
  26.    ''' Tests the current password.
  27.    ''' </summary>
  28.    ''' <param name="password">The password.</param>
  29.    ''' <param name="cookies">The byreferred cookie container.</param>
  30.    ''' <returns><c>true</c> if password successful, <c>false</c> otherwise.</returns>
  31.    Private Function TestPassword(ByVal password As String,
  32.                                  ByRef cookies As CookieContainer) As Boolean
  33.  
  34.        ' tus llamadas a los métodos de las querys para testear el password actual, aquí.
  35.        Me.SetCookies(cookies)
  36.        Dim response As HttpWebResponse = Me.GetLoginResponse(cookies)
  37.        ' etc...
  38.  
  39.        Return (response.StatusCode = HttpStatusCode.Redirect)
  40.  
  41.    End Function
  42.  
  43.    Private Sub SetCookies(ByRef cookies As CookieContainer)
  44.  
  45.        If cookies Is Nothing Then
  46.            cookies = New CookieContainer
  47.            ' tu query para setear el contenedor de cookies aquí.
  48.        Else
  49.            ' salgo, dando por hecho que la sesión de la cookie no haya expirado.
  50.            Exit Sub
  51.        End If
  52.  
  53.    End Sub
  54.  
  55.    Private Function GetLoginResponse(ByVal cookies As CookieContainer) As HttpWebResponse
  56.  
  57.        ' tu query POST de login aquí.
  58.        Return DirectCast(response, HttpWebResponse)
  59.  
  60.    End Function
  61.  
  62.    Private Sub ReportSuccessPassword(ByVal password As String)
  63.  
  64.        MessageBox.Show(String.Format("Contraseña aceptada: ""{0}""", password), Me.Text,
  65.                        MessageBoxButtons.OK, MessageBoxIcon.Information)
  66.  
  67.    End Sub
  68.  
  69.    Private Sub ReportFailedPassword()
  70.  
  71.        MessageBox.Show("Ninguna contraseña aceptada.", Me.Text,
  72.                        MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
  73.  
  74.    End Sub





7.
Me pregunto si las peticiones que haces realmente servirán para algo puesto que FaceBook, al igual que cualquier otro servicio tan popular, tiene un límite de intentos de login y suelen hacer bloqueos del usuario (no basados en la ip que efectua el intento).

Por ende, si no me equivoco, yo imagino (no lo he testeado) que en algún momento el "ataque" no servirá practicamente para nada, puesto que a partir de aquí, desgraciadamente todo dejaría de ser útil tras llegar al límite de intentos del servicio:
Código
  1. Dim loginURL As String = "https://www.facebook.com/login.php?login_attempt=1"
  2. request...
  3. response...

PD: Hay bastantes cosas más en el source que necesitarían un arreglo, pero me ahorro los comentarios porque no quiero abusar xD y también por que son fallos menos relevantes que no afectan al core.

Saludos!
Páginas: 1 ... 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 [571] 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 ... 1236
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines