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

 

 


Tema destacado: Introducción a Git (Primera Parte)


  Mostrar Mensajes
Páginas: 1 ... 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 [125] 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 ... 431
1241  Foros Generales / Foro Libre / Re: "¡No seremos silenciados!": Trump tuitea desde una cuenta gubernamental tras ser suspendido en Twitter (y las public en: 10 Enero 2021, 02:51 am
... Porque veo cada

Hmmmm... leo , que es muy distinto de veo

...comentario en Internet en foros o a pié de noticias en la sección de comentarios que alucino; misoginia, racismo, xenofobia, homofobia,  delitos de odio, bulos, entre otras cosas. Por ejemplo una noticia en la que se muestra una fotografía de una menor que había desaparecido y que la encontraron en no se donde y luego leer comentarios de gente diciendo que es una pu... una guarr... y cosas de ese tipo. O leer que a los negros habría que exterminarlos y cosas bastante fuertes que parece quedan totalmente impunes, que yo a veces he denunciado.
Las palabras son y serán sólo palabras. La gente es irritantemente ofendidita.
A mi lo que me preocupan son los hechos, no las palabras. Da igual que alguien se desgañite escribiendo textos diciendo lo que le venga en gana... ninguna palabra, ni miles de ellas pueden siquiera levantar un solo pelo...

El problema radica en que se da demasiada importancia a lo que no la tiene y se pasan por alto, las que sí lo tienen.

Trump por ejemplo es imposible que ese individuo que cada vez que hable, lo haga sin soltar una mentira, un insulto o un desprecio... Pero ni las 4.000 mentiras que le han sumado, valen nada contra el simple hecho de por ejemplo despedir a un trabajador por su color, su religión o sus ideas políticas...

Todas las gilipolleces que ha soltado en estos años no son nada con el hecho patente de que ha sembrado la discordia en su país a una cota de la que no se tenía constancia desde la guerra de secesión...

Pero ahí están los idiotas ofendiditos con sus palabras (o con las de cualquiera), pasándolas por el tamiz de "a ver como logro que me ofenda y cómo logro que me apoyen 100.000 idiotas más", pero sobre todo lo que ha hecho nada de nada, parece que no importa.

Si yo hubiera sido juez, a más de un presidente de gobierno (incluídos el de Brasil y España con Trump) los tendría en la cárcel,  por su estupidez (por hechos y no palabras). Han muerto cientos de miles de personas de un virus por la incompetente gestión de los líderes políticos que supera la negligencia. No veo prácticamente a nadie quejándose de ello, pero a diario oigo y leo a demasiados quejicas sentirse ofendidos por palabras que hacen menos daño que una mísera gota de lluvia que te cae encima... En fin...
1242  Seguridad Informática / Hacking / Re: Aprende Hacking desde cero completamente gratis en: 10 Enero 2021, 02:10 am
... Sobre el curso, solo 2 comentarios...
- Es aceptable una introducción breve, pero si pretendes hacer un curso de cualquier cosa con vídeos de 2 minutos de duración, no genera confianza. Qué menos que 20 minutos y yendo al grano, no balanceándose por las ramas.
- Cualquier curso que se precie tiene un índice de materias... Índice que debiera figurar en los títulos para que quien quiera seguirlo, pueda hacerlo en orden.. enumera tus vídeos, si haces un curso si no, será un caos...

Algo de importancia no menor es hablar con calma (se te oye acelerado) para que quien escuche, tenga tiempo de procesarlo...
1243  Seguridad Informática / Hacking / Re: Aprende Hacking desde cero completamente gratis en: 10 Enero 2021, 01:58 am
A mi si me parece spam.

Si solo es el enlace a YouTube, tiene su pase... Luego allí, puedes poner el resto de enlaces.
1244  Foros Generales / Noticias / Re: WhatsApp borrará nuestra cuenta si no aceptamos que comparta nuestros datos con Facebook en: 9 Enero 2021, 08:20 am
Citar
Compartimos información de todos los usuarios de WhatsApp que opten por usar nuestros Servicios. Esto puede incluir a aquellos usuarios de WhatsApp que no sean también usuarios de Facebook, ya que, en caso de que sea necesario, debemos poder compartir datos de todos nuestros usuarios para recibir los valiosos servicios de las empresas de Facebook y cumplir los importantes objetivos que se detallan en nuestra Política de privacidad y en este artículo.
Al final... lo he leído y da igual, tengas o no cuenta de Facebook, verterán tus datos en Facebook, tal y como se menciona en el párrafo anterior...
1245  Foros Generales / Noticias / Re: WhatsApp borrará nuestra cuenta si no aceptamos que comparta nuestros datos con Facebook en: 9 Enero 2021, 05:33 am
Mañana leeré la noticia y los detalles...
A falta de los mismos y si alguien lo ha leído ya, pregunto...
¿Queda claro qué sucede, si no se tiene cuenta en Facebook, si no solo en WhatsApp?
1246  Foros Generales / Sugerencias y dudas sobre el Foro / Re: Renovarse o morir: 20º aniversario de elhacker.NET 2.0 (Febrero 2021) en: 7 Enero 2021, 23:55 pm
Concretamente, no me refería a enlaces de descarga de libros... sino simplemente a comentar, aconsejar, citar, listar, inclsuo alguna captura puntual sobre algo muy específico (que no debe suponer ningún problema), etc...
Sobre enlaces de descarga soy más bien de que es algo particular que cada uno debe buscarse la vida...
1247  Foros Generales / Foro Libre / Re: Sus gestores de arranque o Bootloaders en: 6 Enero 2021, 22:50 pm
...Y aunque esto casi excluye a los usuarios exclusivos de Windows...
No. Realmente no es el caso. La posibilidad existe, si bien rara vez alguien que tiene wndows, acaba por instalar otro S.O.

Y la mayor parte de cuando es el caso, acaban instalando Linux. A falta de alojarse debidamente en el arranque, requiere que el arranque lo maneje uno de Linux (windows, solo 'prevee' que se instale otro windows, no cualquier otro S.O.)... lo que por supuesto, acaba con la posibilidad de recuperar windows ante ciertos tipos de corrupción del sistema.

Más de una vez he instalado dos 'windowses', típicamente cuando venía una nueva versión y quería probarla, antes de decidirme si comprarla o esperar...

Aquí una imagen típica donde (si tienes instalado más de un S.O.) decides cuál arranca (esos 0,0,0,1 varían cuando tienes más particiones con S.O. instalado u otros discos, etc):
1248  Sistemas Operativos / GNU/Linux / Re: Linux y su retorcido sentido del borrado de archivos en: 6 Enero 2021, 22:28 pm
...Pero siempre me pasa que cuando envío archivos a la papelera muy muy muy grandes de 2,1TB desaparecen porque lo he borrado, pero tampoco estan en la papelera...
Vaya, inncialmente creí haber leído 2'1Gb. si no es por la respuesta de EdePC, no recalco en lo de 2'1Tb.

Me temo que la papelera de tu sistema, no es tan grande como ese tamaño.
Típicamente cuando se elimina un fichero cuyo tamaño es mayor que el de la papelera, es forzado a ser eliminado al instante, eso sí avisando (windows lo hace).

Incluso aunque tuviera (pongamos) un disco de 16Tb. qué sentido tendría tener una papelera de 2Tb. ???. El tamaño d ela papelera exige reservar ese espacio para sí... evitando así que si el disco se va llenando, ocupen espacio que supuestamente 'es' para la papelera y luego la papelera se encuentre con una 'promesa que nu puede cumplir'...

Si el espacio libre no se refleja de inmediato e sporque posiblemente el propio sistema no esté preparado para borrar un fichero de tal tamaño o lo mantenga pero apartado. Una última instancia es avisar a los desarrolladore sobre el asunto, puede ser que hayas encontrado un bug, un error 'inesperado' (hoy por hoy, no se espera que alguien tenga un fichero de 2Tb. aunque técnicamente sea posible, resulta inútl a todas luces el manejo del mismo).

Prueba un reinicio y si no un chequeo del disco duro, indicándole que revise el espacio libre, para asegurarse que se libera el espacio que tuviera ocupado dicho fichero. Si no solucionas el problema contacta con los desarroladores...
1249  Programación / Programación Visual Basic / Re: leer user y password en archivos aleatorios en: 6 Enero 2021, 21:34 pm
muchas gracias EdePC

justo lo que necesitaba

tema resuelto
El tema no está bien resuelto.

Es muy mala idea (y eso que este foro tiene un nombre muy específico), dejar user y password en texto plano en un fichero.

Como mínimo, en el fichero se deberían guardar el hash de ello, concatenados en el orden que prefieras.
tu en tu código trar leer sendos datos d elos textbox, deberías crear el hash de cada dato y concatenarlos en el mismo orden y forma que se hizo para guardarlo al fichero, solo si coincide es cuando debes dar por válido la concordancia.

Por supuesto, no lo hagas tan simple, aquí un ejemplo desde el que partir:
Código
  1. Private Const MAX           As Integer = 63
  2. Private Const XYZ           As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZ+0123456789-abcdefghijklmnopqrstuvwxyz" ' A-Z, +-, 0-9, a-z = 26+2+10+26 = 64 caracteres.
  3. Private XYZToArray()        As Byte
  4. Private Const MAX_INTENTOS      As Byte = 5
  5. Private p_Intentos              As Byte
  6. '
  7. Private Validado                 As Boolean          ' Pasó o no la validación?...
  8. Private Ruta                     As String           ' Ruta del fichero que contiene las identidades contra las que se va a evaluar.
  9.  
  10.  
  11. private sub command1_click()
  12.    If (Validar(TxtAlias.Text, TxtPassword.Text, Ruta) = True) Then
  13.        Validado = True
  14.        ' AQUI: Haces lo que necesites hacer ...
  15.        Call Salir
  16.    Else                                        
  17.        p_Intentos = (p_Intentos + 1)
  18.        If (p_Intentos < MAX_INTENTOS) Then
  19.            MsgBox "Error... falla el usuario y/o contraseña."
  20.        Else
  21.            call Salir
  22.        End If
  23.  
  24.        TimEspera.Enabled = True
  25.        Do While (TimEspera.Enabled = True): Loop           ' Exige cumplir la espera impuesta.
  26.    End If
  27. end sub
  28.  
  29. sub form_load
  30.    Ruta = App.Path & "\Login.txt"            ' cambiar al gusto
  31.    XYZToArray = StrConv(XYZ, vbFromUnicode)
  32.    TimEspera.Interval = 1000       ' Impide que pueda hacerse más de 1 intento por segundo (caso de listos que cierren la ventana)...
  33.    TimEspera.Enabled = True
  34.    Do While (TimEspera.Enabled = True): Loop
  35. end sub
  36.  
  37. Private Sub Salir()
  38.    TimEspera.Enabled = False
  39.    Unload Me
  40. End Sub
  41.  
  42. Private Function Validar(ByRef Alias As String, ByRef Password As String, ByRef Ruta As String)
  43.    Dim UserHash As String, PaswordHash As String, Hash As String
  44.  
  45.    UserHash = Hashing(Trim$(Alias))                                ' los hashes deben devolver no más de 32 caracteres.
  46.    PasswordHash = Hashing(Trim$(Password))             '              "                 "               "                "
  47.  
  48.    Hash = Codificar(UserHash, PasswordHash)                        
  49.    Validar = VerificarIdentidad(Hash, Ruta)
  50. End Function
  51.  
  52. ' Es muy útil un temporizador para generar esperas y así hacer fracasar la fuerza bruta (por sí sola).
  53. Private Sub TimEspera_Timer()
  54.    TimEspera.Enabled = False
  55.  
  56.    ' Con cada fallo se incrementa la espera en 2 segundos... El valor máximo de interval es 65.535 (algo más de 1 minuto).
  57.    TimEspera.Interval = (TimEspera.Interval + 2000)
  58. End Sub
  59.  

En la línea: "Hash = Codificar(UserHash, PasswordHash)", es para complicar el caso un algo más que:
la simple concatenación como en: "hash = userHash & PasswordHash", conviene hacer algo más, para complicar una fácil intrusión...
'Codificar' debería ser una función (más o menos compleja)  que devuelve un string.
Finalmente en tu fichero, una sola línea debería contener dicho valor devuelto como 'hash',  por tanto puede tener un largo distinto, pués ocupa una sola línea.
Con 'Line Input' se puede leer línea a línea un fichero... igualmente siempre considera eliminar espacios a ambos lados de un string leído de fichero.

Date cuenta que incluso aunque el fichero solo precisa tener 1 única identificación, el fichero podría contener (por ejemplo), 200 identificaciones generadas aleatoriamente, de modo que cualquier intento de intrusión en principio es más complicado que 'solo' abrir un fichero de texto plano, o abrir un texto plano y encontrar 'lo que es'.
Como se verifica la identidad con todas las posibles (supuestas identidades) contenidas en el fichero, si existe acaba por encontrarla y piensa que verificar 200 ni 2000 identidades es lento, además justamente las verificaciones de identidad son precisamente los algoritmos donde no interesa optimizar al máximo en velocidad, por asunto de no facilitar la tarea a estrategias de fuerza bruta.

Código
  1. Private Function VerificarIdentidad(ByRef Id As String, ByRef Ruta As String) As Boolean
  2.    Dim k As Long, ff As Integer
  3.    Dim idFile As String, Verificado As Boolean, OK As Boolean
  4.  
  5.    ff = FreeFile
  6.    Open Ruta For Input Lock Read Write As #ff          ' no se considera el caso de fallos de apertura de fichero
  7.  
  8.    Do While Not EOF(ff)
  9.        Line Input #ff, idFile
  10.        If (Id = Trim$(ifFile)) Then                    ' nota que hay dferencia de capitalización 'corlo' es distinto de 'Corlo' y distinto de 'cOrlO', generan hashes diferentes.
  11.            If (OK = False) Then                        ' *** (Ver comentario más abajo)
  12.                Verificado = True: OK = True
  13.            End If
  14.        End If
  15.    Loop
  16.    Close #ff
  17.  
  18.    On Error Resume Next
  19.    Id = Left$(XYZ, Len(Id)): Id = XYZ                  ' Borramos el contenido provisional de dichos valores.
  20.    idFile = Left$(XYZ, Len(idFile)): idFile = XYZ      '       "          "        "               "        .
  21.    On Error GoTo 0                                     ' desactiva el manejador de errores activado en la funcion.
  22.    VerificarIdentidad = Verificado
  23. End Function
  24.  


No añado más código... con lo siguiente ya debe debe darte idea, para tu hacer modificaciones a tu antojo y elegancia:
Código
  1. ' Realiza una modificación 'particularizada' donde concatena  mitades de ambos hashes (donde al menos uno es previamente modificado) y añade alguna cosa más, finalmente s ele calcula el hash a este codificado  que es lo que se devuelve.
  2. '  Esto impide que baste saber el tipo de hash aplicado para romper la identidad. Lo complica...
  3. ' Dado que en principio se desconoce por completo el tamaño del alias y de la cotraseña añade una capa de complejidad.
  4. Private Function Codificar(ByRef H1 As String, ByRef H2 As String) As String
  5.    Dim h As String, k As Integer, j As Integer, i As Integer, n1 As Integer, n2 As Integer, v As Integer
  6.  
  7.    n1 = Len(H1): n2 = Len(H2)      ' tomamos el tamaño de cada cadena.
  8.    k = (n1 \ 2): j = (n2 \ 2)
  9.    v = (((k * j) + k) Mod MAX)
  10.    i = Sgn(n1 - n2)                ' restamos ambos valores y nos quedamos con el signo.
  11.  
  12.    Select Case i
  13.        Case 1                      ' Hash de Alias es más largo que Hash de Password.
  14.            H1 = Xoring(H1, v)
  15.            h = Left$(H1, k) & Left$(n2, j) & Mid$(XYZ, j, k) & Right$(H1, n1 - k) & Right$(H2, n2 - j)
  16.        Case 0                      ' Hash de Alias e sigual de largo que Hash de Password
  17.            H1 = Xoring(H1, v): H2 = Xoring(H2, v)
  18.            h = Left$(H1, k) & Left$(n2, j) & Mid$(XYZ, j, k) & Right$(H2, n2 - j) & Right$(H1, n1 - k)
  19.        Case -1                     ' Hash de Alias es más corto que Hash de Password
  20.            H2 = Xoring(H2, v)
  21.            h = Left$(n2, j) & Left$(H1, k) & Mid$(XYZ, k, j) & Right$(H2, n2 - j) & Right$(H1, n1 - k)
  22.    End Select
  23.  
  24.    Codificar = Hashing(h)
  25. End Function
  26.  
  27. ' Es una (no tan simple) codificación XOR, pero limitado a la elección de uno de los '64 caracteres', disponibles.
  28. Private Function Xoring(ByRef Txt As String, ByVal Index As Integer) As String
  29.    Dim k As Integer, j As Integer
  30.    Dim X() As Byte, id() As Byte
  31.    '
  32.  
  33.    id = StrConv(Txt, vbFromUnicode)
  34.  
  35.    For k = 0 To UBound(id)
  36.        j = ((Index + k) Mod MAX)
  37.        id(k) = XYZToArray((XYZToArray(j) Xor id(k)) Mod MAX)
  38.    Next
  39.  
  40.    Xoring = StrConv(id, vbUnicode)
  41.  
  42.    For k = 0 To UBound(id)                         ' borrar contenido de array id (lo sobrescribimos con el contenido de XYZ.
  43.        id(k) = X(k)
  44.    Next
  45. End Function
  46.  

La funcion 'Hashing()' podría ser una llamada a un algotimo  de resumen como 'Md5', 'RC4', o cualquier otro disponible, incluso una codificacón 'Base64', sería preferible a un text plano, la función ' Codificar' interpuesta entre los datos de origen y el dato final, lo complica lo suficiente como para que tareas de fuerza bruta, fracasen...


*** Esto supone que siempre se verifiquen todas las entradas del fichero, aún cuando ya la haya encontrado, y no que devuelva cuando la encuentre... el tiempo que tarda en encontrarlo, podría arrojar pistas sobre si está al comienzo o al final. De este modo, tarda lo mismo sea la primera o la última entrada. Es fácil demostrarlo y localizar la identidad concreta.

Imagina que el fichero tiene 100 entradas y yo añado entre cada línea del fichero 10.000 más.
Puedo hacer un bucle para hacer lo siguiente:
   verificaridentidad, calcular tiempo utilizado y anotar tiempo y ciclo.
   mover las primeras 10.001 lineas al final del fichero.
Tras los 100 ciclos (una por cada entrada), tendré 100 tiempos anotados, las diferencias de 'salir' cuando se encuentre una identificación válida queda reflejado en las respuestas que arroja dicho bucle, luego así es deducible cual es la identificación válida. Imagina (por simplicidad para comprenderlo), que la identidad correcta e sla primera línea... en el bucle uno tarda 1, luego como baja al final del fichero, el tiempo que marca será 100, en el siguiente ciclo, 99,98, 97...
Imaginemos que es la línea 50 la que contiene la identidad... en el primer ciclo tarda 50, en el segundo 49, en el 3º 48... lega un punto que es el menor de todos (cuando sea la línea 1ª como se describe en el parráfo anterior), cmo justo cuando tarda menos (es la primera y s epasa al final) coincide que será la última y tardará más, luego... la respuesta correcta se haya en el cclo cuya tiempo  es el menor de todos y al que le sigue el ciclo cuyo tiempo es el mayor de todos (o casi en ambos casos, ya que posibles interrupcciones  hardware (por ejemplo), pueden variar un poco el caso...
En cambio si siempre analiza todas las entradas, el tiempo es básicamente el mismo cada vez (inapreciable a efectos prácticos).
Otra forma es no leer las líneas en orden, si no crear un array con tantas entradas como líneas tenga el fichero y barajarlo 'desordenar el array' con una función aleatoria, luego se lee cada línea en el orden que marca el array... ahí si exige acceso aleatorio (para que la lectura de cada línea tenga un tiempo sin dependencia del orden que ocupa en el fichero), por lo que en tal caso 'Line Input', no sería el modo de lectura adecuado al caso.


Todavía incluso ocultando una identidad entre otras 200, es factible de ser descubierta, en un 'tiempo' equivalente al de una búsqueda binaria. Eso sí se requiere saber en todo momento que la cuenta que hace el login es la misma cada vez... si son varias cuentas las que se loguean, resultará más complicado (tiempo en el sentido de intentos).
Veamos, si abro el fichero y elimino la mitad primera de las líneas y guardo el fichero. Cuando intente loguearse ocurrirá una d edos cosas: logra identificarse, no logra identificarse.
Si logra identificarse, señala que la identidad está en la mitad que dejaste en el fichero, y si no logra identificarse (o bien se equivocó a introducir sus datos o bien) consta la identidad en la mitad retirada del fichero (por ello falla, no la encuentra).
Ahora contmaos solo con la mitad de líneas que sabemos que es correcta el resto son elimiandas... nuevamente de estas copiamos y cortamos la mitad, y se sigue el proceso hasta que el fichero solo contenga una única línea que es la que arroja la identidad correcta.
Una errada solución a la que cabría que se llegue sería comprobar antes de nada que el tamaño del fichero es el que se espera... pero esto puede también falsificarse, si tras eliminar la mitad del contenido interesado, lo remplazo con contenido aleatorio, el tamaño del fichero permanece invariable, pero básicamente sabe uno que en ese contenido aleatorio (o no aleatorio), no está la identifidad...
La solución para solventar este caso, consiste en hashear todo el fichero y ver que el mismo no ha sido modificado desde la última vez que se modificó. Esto es cuando se añade un login al mismo se hashea el fichero y se guarda dicho hash (preferiblemente en otro destino distinto al equipo). La desventaja es tener que guardar dicho dato fuera dle equipo, lo que le leva a uno a preguntarse, y por que nó guardar la identidad también fuera del equipo?. Si solo es uno, es igualmente válido pero si ha de tener muchas, la solución resultará engorrrosa (para un entorno no profesional que asumo es el caso).

Básicamente una solución infalible solo existe en dos situaciones:
- El hardware colabora: Si hay partes dle hardware del euipo que apoyan soluciones d eidentificación, pero deslocalizadas del S.O. (es decir como si poseyera un segundo procesador con un mini S.O. dedicado solo a mantener cuestiones seguridad y por tanto inaccesible e inalterable desde el otro procesador... y una conmutación en el equipo (un botón tecla, etc...), que permita saltar entre uno y otro S.O.
- El sistema de identificación se guarda fuera del equipo, de odo que cualquier intrusión ni siquiera tenga posibilidad de saber dónde o cómo localizarlo... por lo tanto no podrá probar ninguna técnica (aparte del pishing).
...pués el factor humano es y seguirá siendo un punto débil, antes se consideraba el punto más débil, pero a causa de la enorme cantidad de fallos descubierta en los diseños, se puede considerar que como trasl el diseño, está el ser humano, hereda el 'punto débil'... y por tanto es razonable considerar que están a la par.

No obstante considera que si hay demasiadas 'puertas' en cuanto a la seguridad es fácil que dado el valor del 'cebo' tras la puerta, se pierda fácilment el interés en intentar la intrusión... pero incluso aunque el valor del 'cebo' sea nulo, no conviene nunca dejar un texto plano... no es propio de programadores solo de idiotas.

(nota: No he probado el código, lo he escrito al vuelo (después de enviar he corregido algo rápido de sintaxis, cono nombres de variables o constantes, etc..), puede que precise alguna corrección que queda a tu esfuerzo).
1250  Programación / Scripting / Re: help.! en: 6 Enero 2021, 16:27 pm
Yo no sé Python, tu problema tiene pinta de ser algo...

Parece lo mismo que una condición.
Las precondiciones y postcondiciones, no son una característica específica de Python, de éste o aquél lenguaje.
Son comunes a la descripción de la semántica estática de un lenguaje.
Donde un lenguaje interpretado, puede encontrar un nicho de optimización incluso descubriendo errores. Hay varias formas por las que un compilador (o intérprete) maneja la semántica del lenguaje. Éste es uno de ellos. En contra tiene que determinadas estructuras pueden resultar demasiado complejas, por lo que no es un tema para tratar en profundidad por novatos.

Y se lo debemos a Dijkstra que lo sacó a la luz hace unos 45 años.
Páginas: 1 ... 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 [125] 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 ... 431
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines