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 - DtxdF

#461
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

La fuerza bruta es desde lejos el ataque más viable contra AES. Le dejo estas respuestas a su cuestión, y además le agrego un libro que recomendó nuestro compañero que trata sobre criptografía.

Breaking AES with ChipWhisperer - Piece of scake (Side Channel Analysis 100)

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Vídeo y canal recomendable para aprender, aunque este vídeo que se presenta en este momento es muy bueno, hallará de sobra del mismo sujeto y del mismo tema.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Una sencilla pregunta con excelentes respuestas, enlazadas en el mismo post. Lealo, le dotará de más respuestas.

You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#462
ASM / Re:listas en assembler ciclo loop emu8086 [facil]
Diciembre 10, 2020, 03:04:38 AM
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Excelente que tenga deseos por adentrarse en este hermoso mundo. Siga así y no le tiemble el pulso a la hora de seguir compartiendo estos grandiosos aportes, que de seguro, ayudarán a muchos.

Suerte.

~ DtxdF
#463
ASM / Re:listas en assembler ciclo loop emu8086 [facil]
Diciembre 10, 2020, 01:48:52 AM
Genial aporte @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login. Como pequeñas recomendaciones, para no acceder constantemente a la memoria, lo que podría usar es un registro y a su vez, almacenar el resultado en memoria; como nimiedad mía, lo que puede hacer es que en vez (si su ensamblador le permite) de ajustar el registro CX con el valor inmediato, disponer de una constante (es lo mismo, pero no en código) o si prefiere (aunque también depende de lo que haga el programa y sus necesidades), es usar una variable que especifique el número de repeticiones; y por último, usar INC para sumar un solo número y gastar menos bytes.

Aquí le dejo un ejemplo más o menos de lo que dije anteriormente:
Código: asm
; Programa escrito en TASM para sumar todos los números de un arreglo.

MODEL Tiny
DATASEG
lista DB  1,2,3,4 ; es igual a 0A (10, en decimal)
suma  DB  0
NREP  EQU 4

CODESEG
ORG 100h
start:
LEA SI, lista
LEA DI, suma
MOV CX, nrep
XOR DL, DL

repetir:
MOV AL, [SI]
ADD DL, AL
INC SI

LOOP repetir
MOV [DI], DL

END start


~ DtxdF
#464
ASM / Re:modo grafico caracteres emu8086
Diciembre 10, 2020, 12:24:00 AM
Excelente aporte. Muchas gracias por compartir ^-^)

~ DtxdF
#465
Citar...cómo se comprueba que esa clave es o no la correcta?...

Dependiendo del modo que use, y si éste verifica que el mensaje no se haya modificado en transmisión, por lo que le será más sencillo (aunque igual sigue siendo realmente complejo e inviable).

Supongamos que tenemos el siguiente script:

aes_gcm.py:
Código: python
#!/usr/bin/env python

from Crypto.Cipher import AES

def _convert2bytes(s):
return s.encode() if not (isinstance(s, bytes)) else s

def encrypt(plaintext, password):
password = _convert2bytes(password)
plaintext = _convert2bytes(plaintext)

cipher = AES.new(password, AES.MODE_GCM)
nonce = cipher.nonce
ciphertext, tag = cipher.encrypt_and_digest(plaintext)

return nonce+tag+ciphertext

def decrypt(ciphertext, password):
password = _convert2bytes(password)

nonce = ciphertext[:16]
tag = ciphertext[16:32]
ciphertext = ciphertext[32:]

descipher = AES.new(password, AES.MODE_GCM, nonce=nonce)

return descipher.decrypt_and_verify(ciphertext, tag)


Ahora ciframos:

Código: text
>>> import aes_gcm
>>> key = ("1"*32).encode()
>>> plaintext = "Hello world!"
>>> ciphertext = aes_gcm.encrypt(plaintext.encode(), key)
>>> ciphertext
b"{\xf5$'\x08\xc9\xa1\xdb\x0e\xc9D\x1cm#\xf6\x912g@+\xbe\xe1\xce\xc4\xe6\xb9=Q\t\xe5\xbbV\xb6s\xf4\x9c8\xd34\xee\xee\xecP\xed"
>>> decrypted = aes_gcm.decrypt(ciphertext, key)
>>> decrypted
b'Hello world!'
>>> decrypted.decode() == plaintext
True
>>>


Muy bien. Este modo, con el diligente uso, te permite verificar si el mensaje ha sido corrompido o si ha habido un cambio incongruente. Como por ejemplo:

Código: text
>>> key = b'0' + key[1:]
>>> key
b'01111111111111111111111111111111'
>>> decrypted = aes_gcm.decrypt(ciphertext, key)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/aes_gcm.py", line 27, in decrypt
    return descipher.decrypt_and_verify(ciphertext, tag)
  File "/home/dtxdf/.local/lib/python3.8/site-packages/Crypto/Cipher/_mode_gcm.py", line 567, in decrypt_and_verify
    self.verify(received_mac_tag)
  File "/home/dtxdf/.local/lib/python3.8/site-packages/Crypto/Cipher/_mode_gcm.py", line 508, in verify
    raise ValueError("MAC check failed")
ValueError: MAC check failed
>>>


Si se nota, simplemente cambié una cifra en la contraseña y generó un error; por supuesto que esto depende de la implantación, pero por lo general, generaría una excepción sin importar la librería.

En caso de que los datos cifrados no sean parte del You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login se complicaría un poco más. Incluso de podría decir que ya no es inviable, sino que está llegando a lo imposible, pero podría hacer lo siguiente:

aes_cbc.py:

Código: python
#!/usr/bin/env python

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad

def _convert2bytes(s):
return s.encode() if not (isinstance(s, bytes)) else s

def encrypt(plaintext, password):
password = _convert2bytes(password)
plaintext = _convert2bytes(plaintext)

cipher = AES.new(password, AES.MODE_CBC)
ciphertext = cipher.encrypt(pad(plaintext, AES.block_size))

return cipher.iv + ciphertext

def decrypt(ciphertext, password):
password = _convert2bytes(password)

iv = ciphertext[:16]
ciphertext = ciphertext[16:]

descipher = AES.new(password, AES.MODE_CBC, iv=iv)

return unpad(descipher.decrypt(ciphertext), AES.block_size)


Código: text
>>> import aes_cbc
>>> key = ("1"*32).encode()
>>> plaintext = "Hello world!"
>>> ciphertext = aes_cbc.encrypt(plaintext, key)
>>> ciphertext
b';\xa4\xd5\xffgd\xe5\x98\x06i\xab\xbal\x19\xb2\xeai\xa8\x07\xca\xbe\x17U\\)\xc1\x1d\xfc\x03\xb9\xc7\x06'
>>> aes_cbc.decrypt(ciphertext, key)
b'Hello world!'
>>> key = b'0' + key[1:]
>>> aes_cbc.decrypt(ciphertext, key)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/tmp/aes_cbc.py", line 26, in decrypt
    return unpad(descipher.decrypt(ciphertext), AES.block_size)
  File "/home/dtxdf/.local/lib/python3.8/site-packages/Crypto/Util/Padding.py", line 93, in unpad
    raise ValueError("PKCS#7 padding is incorrect.")
ValueError: PKCS#7 padding is incorrect.
>>>


Esta vez, el caballero que nos ayudó fue el You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, que por su naturaleza detectó una anomalía. Pero no siempre éste será el que nos ayudará y como mencioné, depende de la implantación. Entones lo que sí podría aliviar un poco la tensión es detectar si los caracteres son o no, imprimibles, pero claro, esto es con caracteres que mayormente usamos los humanos y no son procesados de una forma especial (como \n, \r, \t, etc.) y también puede ser que desencriptemos el mensaje, pero sea un archivo, y como un archivo puede ser cualquier cosa (incluyendo caracteres no imprimibles) puede que lo que le digo no sea del todo correcto, pero puede probar el siguiente script para ver si le guía por un camino correcto: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Manualmente el script puede posarse de la siguiente manera (eliminando el relleno):

aes_cbc.py (sin relleno):
Código: python
#!/usr/bin/env python

from Crypto.Cipher import AES

def _convert2bytes(s):
return s.encode() if not (isinstance(s, bytes)) else s

def encrypt(plaintext, password):
password = _convert2bytes(password)
plaintext = _convert2bytes(plaintext)

cipher = AES.new(password, AES.MODE_CBC)
ciphertext = cipher.encrypt(plaintext)

return cipher.iv + ciphertext

def decrypt(ciphertext, password):
password = _convert2bytes(password)

iv = ciphertext[:16]
ciphertext = ciphertext[16:]

descipher = AES.new(password, AES.MODE_CBC, iv=iv)

return descipher.decrypt(ciphertext)


Código: text
>>> import aes_cbc
>>> plaintext = "Buen día mundo.".encode()
>>> len(plaintext)
16
>>> key = ("1"*32).encode()
>>> ciphertext = aes_cbc.encrypt(plaintext, key)
>>> ciphertext
b'\xbb\xf4\x016\xd4\xea\xde\x9f\x92\xc7*\xb2]\xc2\xe8\xb4\xeegt\x9dy\xd9\x14\xa8\xb1\xee\x87\x93{&`\xfa'
>>> aes_cbc.decrypt(ciphertext, key)
b'Buen d\xc3\xada mundo.'
>>> key = b'0' + key[1:]
>>> decrypted = aes_cbc.decrypt(ciphertext, key)
>>> decrypted
b'\x05\xa0?IL!\x8dW\xf1<\x97\x85\x7f\xe7\xa98'
>>> decrypted.decode()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xa0 in position 1: invalid start byte
>>>



También es realmente útil indagar sobre algunos modos, que se podrían decir como clásicos, y que están en desuso, como:

* You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
* You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Puede que lo siguiente también sea igual de útil:

* You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#466
CitarUn titular muy atractivo, "HACKEAR CUALQUIER ANDROID ES MUY FÁCIL CON ESTAS HERRAMIENTAS", pero a mi entender: es engañoso.

No creo que sea engañoso...

Hubo una época en donde las aplicaciones You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login y You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login predominaban tanto a usuarios avanzados y a usuarios que deseaban aprender por una que otra cuestión, pero éstos no disponían de tantos conocimientos, sin embargo estudiaban tanto como para usar un programa, sí, un programa CLI/TUI, antes considerado un programa de usuario... de usuario común. Eran fáciles y aunque no eran las únicas, eran una de las aceptadas por usuarios que no sentían tanto interés por la informática.

Son fáciles pero requiere de más estudio que solo dar click, click, clack. Ya el hacking, lastimosamente... se está usando como sinónimo (en muchas partes, pero no es lo absoluto) de aprender a usar aplicaciones de... digamos... usuarios comunes, pero de la época, por lo que la curva de aprendizaje, y el interés por esforzarse en cosas avanzadas ya sólo, aunque muy poco a poco, será parte de una minoría. Así que ¡sí!, esos programas que aparecen en el You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login son muy facilones para un médico, un psicólogo, un abogado, un padre que quiera espiar a su hijo. Vamos que sólo necesitas de un tutorial y ya estás, ya eres una máquina.

Tal vez sea por el concepto excusa de No reinventar la rueda que ha sido muy llamativo para mucho flojillos, pero que en realidad es aplicado solo a algunas carreras y situaciones en las que, aunque se tengan los conocimientos suficientemente avanzados como para reinventarla, por cuestiones, no se aplica; ¿pero aplicarlo al aprendizaje?, yo no lo veo ni en juego, factible.

P.D.: Aunque haya mencionado y hecho énfasis en las interfaces TUI/CLI, me refiero a las aplicaciones orientadas al hacking en general (sin importar qué interfaz usen).

Citar¿Es el user la verdadera herramienta de hacking  y las tools (me refiero a las que aparecen detalladas en el sitio web que enlacé) solo hacen lo suyo –complementan- después del clic, como un instrumento al servicio de la ingeniería social?

El ser humano es muy maleable, pero si un atacante tiene la forma de no interactuar con la víctima, sin dudarlo escogerá este camino por ser más facilón.

~ DtxdF
#467
Dudas y pedidos generales / Re:No puedo conectarme
Diciembre 02, 2020, 05:48:15 PM
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Podría ser cualquier cosa, pero jugando al juego de la supocisión: tal vez debería revisar la configuración del teclado y verificar que esté ingresando correctamente la contraseña, por supuesto, como usted hace énfasis, no resulta positivo el ingresar en cualquier red, pero analizando sus palabras, ¿cuáles y cuántas redes son? ¿las que están cerca en el momento que notó esa incongruencia?, porque también debería probar con una red que verdaderamente conozca y tenga el control, y por supuesto, que sepa la contraseña con el fin de descartar cualquier motivo; pero si es satisfactoria esta imaginativa prueba que le menciono, entonces debe ser alguna configuración que no es posible determinar de cierta forma convencional, en el enrutador que desea conectarse, y siendo público sumando a no conocer nada práctico de él, podría ser cualquier cosa.

~ DtxdF
#468
No es aconsejable mantener un servidor que sea usado por millones de personas de manera gratuita; gastos y gastos que podrían afectar seriamente, por lo que si hay alguno que sea gratuito, las limitaciones no deberían ser inesperadas. Aquí algunas alternativas, quizás alguna que cumpla con su objetivo: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#469
Dudas y pedidos generales / Re:generar diccionario
Noviembre 30, 2020, 06:51:39 PM
Como le dije, es posible. La sintaxis básica de crunch es bastante intuitiva, aunque mayormente no cambia de usuario a usuario. Se podría expresar como lo siguiente:

Código: bash
crunch <min> <max> [options]


<min> es para indicar la longitud mínima de la cadena a generar;
<max> es para indiciar la longitud máxima de la cadena a generar;
[options] es para indiciar opciones que no son requeridas, pero como ya viene observando mi anterior comentario, puede deducir que lo que se usa es una cadena (aunque podría ser otra cosa) por lo que el siguiente ejemplo puede esclarecer mejor su cuestión.

Código: bash
crunch 1 4 hola


Pero como al principio de su comentario indicó que debe generar un diccionario alfanúmerico, entonces con la simple adición de números donde está el hola del anterior ejemplo, generaría la conclusión que desea. Además hay que tener presente que el hola podría ser cualquier cosa; desde un abecedario, hasta las mismas vocales junto con números en desorden, pero sumando a esas facilidades que provee la herramienta será a su vez la longitud y el número de líneas del archivo o la salida, o en caso contrario que se incluya entre las opciones el parámetro -c LINES indicando limitación en el número de líneas del resultado. Como por ejemplo:

Código: bash
crunch 1 4 hola123 -c 10



Ya ejecutado los simplones ejemplos puede a su vez ejecutar el script que le escribí usando You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login para que el programa le adhiera un número al resultado de cada palabra.

Código: bash
crunch 1 7 abc | python add_digit.py


Veáse también:

  • You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#470
Dudas y pedidos generales / Re:generar diccionario
Noviembre 29, 2020, 06:50:12 PM
Usando un pequeño script que cumpla el agregar un solo digito al texto, sumando a nuestro lado crunch, será posible lo que desea en un abrir y cerrar de ojos.

add_digit.py
Código: python
#!/usr/bin/env python3

import random
import sys

while (True):
    text = sys.stdin.readline()
   
    if not (text):
        break

    index = random.randint(0, len(text))
    rnumber = random.randint(0, 9) # Mencionaste sólo un digito
    array = ' '.join(text).split()
    array.insert(index, str(rnumber))

    print(''.join(array))


Este pequeño script escrito en Python "lee" cada línea de un texto y le agrega un solo digito aleatorio comprendido entre 0 y 9, aunque es posible, si el deseo es evocado, cambiar el rango.


Ahora para concluir este mini-tutorial vamos a usar una herramienta llamada crunch que se encarga de generar diccionarios alfanuméricos.

Código: bash
crunch 1 4 abcd | python add_digit.py


~ DtxdF
#471
Tal vez este le sea de utilidad:
*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Quizá le interese:
*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#472
Excelente @You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login, muchísimas gracias por tu aporte; ya esperaba con ansias desde que nos lo comentaste, y espero que más y más personas comiencen a tomarse en serio su privacidad y a lo sumo, su seguridad.

~ DtxdF
#473

Muy poco a poco "El Gran Hermano" nos vigilará detenidamente, incluso en nuestros sueños... Pensarlo provoca presionar el botón power off ¡De una buena vez!.

Ref.: Orwell, George (1947-1948). 1984.

~ DtxdF
#474
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

También es interesante que el investigador haya dicho eso, pero rebuscando el nombre de la vulnerabilidad, pude toparme con esto: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login; que indica que posiblemente también la vulnerabilidad puede estar presente en otros derivados o la misma madre de ubuntu (debian), y puede que sí, ya que el factor determinante es gdm3.

~ DtxdF
#475
Vaya, excelente post AXCESS, y genial que haya hecho el tutorial, además de dejar la información.

~ DtxdF
#476
Hacking / Re:NAT Slipstreaming
Noviembre 17, 2020, 11:18:30 AM
Vaya, no había visto el post, y está muy bueno. Gracias por compartir ^-^

~ DtxdF
#477
Dudas y pedidos generales / Re:bspwm y las screenshot
Noviembre 13, 2020, 11:18:58 AM
No puedes usar las combinaciones de teclas que naturalmente usan los Escritorios (como XFCE, Plasma, MATE, etc), tienes que agregarla en el fichero '~/.config/sxhkd/sxhkdrc' y usar un programa que haga la función de capturar la pantalla, como scrot. Por ejemplo (usando el paquete imagemagick):

~/.config/sxhkd/sxhkdrc
Código: bash
shift + Print
        import -window root /tmp/screenshot.png


Le recomiendo esta lectura: You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

~ DtxdF
#478
Dudas y pedidos generales / Re:bspwm y las screenshot
Noviembre 13, 2020, 12:49:34 AM
Hola, bienvenido ^-^

Estaría genial que dejara más información de su caso, como por ejemplo, qué ha intentado para llegar a esa conclusión, y si es posible, dejar información como una captura de pantalla o el mismo texto de salida.

~ DtxdF
#479
@You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Gracias amigo =D, espero te ayude.

PD: Acabo de leer de nuevo el post y me di cuenta que coloqué el mismo código de polish.c y calculator.c :OOO, aunque ya lo corregí (pero muy tarde :/).

~ DtxdF
#480
Agregando un poco de lo que mencionó el compañero. Le recomiendo también que indague sobre distintos proyectos además de los mencionados, tales como: Django (hecho), Tornado, Twisted, entre otros; no eliga uno u otro sin antes saber de qué va a tratar su proyecto, qué tan complejo, y demás, aunque lo común de ellos es que manejan múltiples peticiones, también lo que debe saber es la forma en que lo hacen y qué tan configurable son.

Si desea el más minimalista de los que mencioné, Tornado es ideal, tiene buena documentación y aunque esté mejor documentado para HTTP también puede con lo necesario documentado, crear un servidor TCP cualquiera, además que sí cuenta con medidas de seguridad y actualizaciones. Le dejo por acá estos enlaces:

*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Tornado explota la asincronía que proporciona Python, además cuenta con clientes que hacen uso del núcleo de Tornado, pero si desea indagar mucho más, le recomiendo los siguientes enlaces:

*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login
*- You are not allowed to view links. You are not allowed to view links. Register or Login or You are not allowed to view links. Register or Login

Twisted también es excelente, pero de verdad eliga el que se adapte a su proyecto y explote cada uno para comprobarlo, es lo mejor que podría hacer.

~ DtxdF