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


Tema destacado: Security Series.XSS. [Cross Site Scripting]


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 235
71  Seguridad Informática / Criptografía / shared secret en bitcoin en: 27 Febrero 2022, 12:56 pm
Acabo de publicar una pequeña herramienta (Prueba de concepto) para calcular un secreto compartido entre Alice y Bob utilizando su llaves de bitcoin.

sharedsecret

Alicia (Tu) quiere enviar un archivo cifrado a Bob (Otra persona) Alicia tiene su propia llave privada y ademas conoce la llave Publica de Bob

Alicia utiliza esta herramienta de para caluclar el secreto compartido entre ambos y utilizar ese mismo secreto como llave

LLaves de Alicia para el ejemplo:

Código:
Private key: 18f619c4d16057d362ddfce772f551d46a2390517698226cff6e5bf67ac4b324 (Desconocida para Bob y para todo el mundo)
Public key : 03af6e50db92ce378c29df0ed9a04d3431bc06762aa37ec3ab42af147083630596 (Publica)

Llaves de Bob para el ejemplo:
Código:
Private key: bc9e78f140a76cbdcdbecc5ab0ec38b4db710edfa40dea342712c8a695fe8b22 (Desconocida for Alicia y para todo el mundo)
Public key : 022c8191049a3f2816bc95077b91caed87900d0cd2af3757004531face9c3b6082 (Publica)

Alicia ejecuta el programa:

Código:
./sharedsecret
A: private key (hex): 18f619c4d16057d362ddfce772f551d46a2390517698226cff6e5bf67ac4b324
B: public key : 022c8191049a3f2816bc95077b91caed87900d0cd2af3757004531face9c3b6082
Secret between A and B: 22fb667f3bc1a2153e3cef75df0ce757a1c86051c07ace6b0c30dc87f3358511 (DON'T SHARE, THIS IS SECRET)

Bob ejecuta el programa

Código:
./sharedsecret
A: private key (hex): bc9e78f140a76cbdcdbecc5ab0ec38b4db710edfa40dea342712c8a695fe8b22
B: public key : 03af6e50db92ce378c29df0ed9a04d3431bc06762aa37ec3ab42af147083630596
Secret between A and B: 22fb667f3bc1a2153e3cef75df0ce757a1c86051c07ace6b0c30dc87f3358511 (DON'T SHARE, THIS IS SECRET)

Alicia y Bob obtienen el mismo secreto, compartiendo unicamente sus llaves PUBLICAS

Alice procede a cifrar el archivo secreto input.txt with the password 22fb667f3bc1a2153e3cef75df0ce757a1c86051c07ace6b0c30dc87f3358511

Código:
openssl aes-256-cbc -salt -pbkdf2 -in input.txt -out input.txt.enc

Bob decifra el archivo secreto utilizando el mismo password: 22fb667f3bc1a2153e3cef75df0ce757a1c86051c07ace6b0c30dc87f3358511:

Código:
openssl aes-256-cbc -d -salt -pbkdf2 -in input.txt.enc -out message.txt



Como funciona esto?

En criptografia asimetrica cada usuario tiene su llave privada y su llave publica.

En curvas elipticas la llave privada es un numero cualquiera, menor que el Orden de la Curva.

Existe un punto generado G(x,y) el cual es la base para todas las llaves publicas de los usurios.

Si tu llave privada es K, tu llave Publica es K*G

Es virtualmente imposible obtener o calcular la llave privada K utilizando la llave Publica K*G, esto es asi por que la multiplicacion en Curvas elipticas no es como la multiplicacion que conocemos.

Alicia tiene su llave Publica: A*G

Bob tiene su llave Publica: B*G

Alicia calcula el secreto compartido entre ella y Bob, multiplicando la llave publica de Bob por su propia Llave Privada obteniendo el nuevo valor: A*B*G
Bob calcula el secreto compartido entre el y Alicia, multiplicando la llave publica de Alicia por su propia Llave Privada obteniendo el  nuevo valor: B*A*G

En este caso A*B*G es igual a B*A*G


No es comun que se utilize de la forma que mostre, pero de igual forma funciona, para ejercicio entre personas que estan iniciando en la criptografia viene bastante bien, ademas personalmente creo que las criptomonedas estan llevando la criptografia mas cerca a las personas, aunque muchos no se den cuenta de ello.

Quires probarlo? genera un par de llaves de bitcoin con el programa keygen que tengo en ese mismo repositorio en github y enviame un adjunto cifrado con el secreto compartido, mi publickey de bitcoin esta en mi firma.

Saludos!
72  Seguridad Informática / Criptografía / Re: ¿Es posible cifrado cascada en el disco duro usando GNU/Linux? en: 27 Febrero 2022, 12:19 pm
Siempre se puede hacer un cifrado completo pero dado que es algo avanzado y muchos usuarios son dados a perder sus passwords o sus USB de arraque. No es muy recomendable para usuarios novatos.

La mayoria de los instaladores tienen una shell disponible en alguna de las terminales secundarias Ctrl-F4 o alguna combinacion de teclas similar.

Desde ahi se se pueden hacer configuraciones manuales.

Yo en linux no lo he hecho, pero si me a tocado hacerlo en FreeBSD con geli el cifrado es AES en su mode XTS es pecial para discos duros, que te da authenticacion y Integridad el el disco.

Publique algo de ello hace tiempo: https://oldblog.albertobsd.dev/2017/09/recomendacion-para-disco-duro-cifrado.html

Y tambien escribi una herramienta en C para extraer informacion acerca del cifrado en el disco:

https://foro.elhacker.net/criptografia/extraer_informacion_de_cifrado_en_discoduro_de_freebsd-t474262.0.html
73  Programación / Programación C/C++ / Re: C++ no se mucho de programación, y tengo varios errores en mi código, indiquenme en que estoy mal, en: 27 Febrero 2022, 06:03 am
Si realmente quieres aprender C, deja de utilizar todas esas instrucciones de Conio.h, de hecho no lo incluyas no es una libreria estandar.

Mi recomendaciones que quites todas esas instrucciones de system("Color XX") ya que solo hacen que tu codigo sea mas dificil de leer, tambien no utilizes esos Gotoxy.... No sirven de nada si no sabes lo basico de programacion concentrate en aprender las estructuras basicas del lenguaje como los ciclos, los if, switch y demas estructuras de datos. Una vez que domines todo lo basico ahora si adorna tu programa como quieras pero te daras cuenta de que no son necesarios.

74  Programación / Programación C/C++ / Re: duda sobre punteros en c++ en: 27 Febrero 2022, 05:58 am


Código
  1. char *variable;
Aqui se declara que variable es un apuntador.

En tu codigo:
Código:
struct empleados{
char nombre[40];
int edad;
float salario;
}empleado[3],*punteroemp=empleado;

Estas declarando una estrucutura con X cantidad de datos y a su vez estas declarando la variable empleado que es un arreglo de longitud 3, Tambien estas declarando la variable punteroemp y lo estas apuntado al primer arreglo que creaste.

Puntero empleado ahora se puede utilizar como un array:

punteroemp[0] seria tendra el mismo valor que empleado[0]
punteroemp[1] seria tendra el mismo valor que empleado[1] etc...

Ahora:

Código:
cin>>(punteroemp+i)->nombre

seria lo mismo que hacer punteroemp.nombre existen varias maneras de jugar con los apuntadores.

El * solo se utiliza para declar a la variable como apuntador.

Saludos!






75  Programación / Programación C/C++ / Re: Programa contar palabras de una frase en C en: 16 Febrero 2022, 06:07 am
no, en serio

Si, es cierto que existen un sin fin de librerias que te pueden hacer la vida mas facil... pero cuando estan estudiando creo que lo que se busca es enseñarles la logica de programacion que puedan aplicar a cualquier problema en general.

Lo que comento MAFUS sobre strtok fue acertado tambien, pero el problema con este tipo de usuarios que solo abren su cuenta para pedir su tarea ya hacha es que no quieren o no saben leer, quieren todo ya hecho listo para copia, pegar y decirle al maestro que se esforzaron mucho y que por poco no lo logran.

Aunque se les quiera enserñar a hacerlo desde cero ese tipo de alumnos/usuarios no aprenden.
76  Programación / Programación C/C++ / Re: Multiplicacion de expreciones algebraicas en C++ polinomio por polinomio en: 1 Febrero 2022, 16:11 pm
como se escribiría esta expresión en C++

Que quieres decir por "escribiria", tienes que ser mas claro cuando preguntes este tipo de cosas que quieres hacer?

  • Ingresar un valor de X y que el programa calcule el resultado con esa ecuacion?
  • Ingresar una expresion algrabraica como esa y realizar la la multiplicacion de polinomios?

Si es el punto numero uno esta muy facil, si es el numero dos esta complitado necestias un arbol, mini analizador sintactico posiblemente con un automata y quien sabe cuantos detalles mas.

Mi pregunta es que tanto sabes de lo anterior?
77  Programación / Programación General / Evitar multiples for en incrementos variables Base58 Fuerza bruta en: 21 Enero 2022, 18:19 pm
Aunque creo que es una pregunta Noob, he buscado y no encuentro un ejemplo usable, la verdad no quiero codear tanto pero si he de hacerlo*quiero encontrar la forma mas eficiente.

Tengo un cadena donde faltan caraceteres Unos son totalmente desconocidos "*" y hay que hacerles fuerza bruta (Esta parte ya la tengo hecha)
Pero la misma cadena tiene algunos caraceters que son Probables "?" con ciertos caracteres posibles que no se alcanzan a ver ejemplos 8 y B. X, K y k, S y 5, Esta parte la manejo cada caracter "?"  con su lista individual de caraceters posibles y no es la misma para cada simbolo "?"

Ejemplo:

Código:
sV***??c8NSs1X85ws9Er?z9FwtdJ

Cada caracter "*" puede ser uno de los 58 caraceteres del base58 Esta parte la manejo mas o menos asi

Código
  1. do{
  2. //CODIGO
  3. }while(increment_base58(string,aux));

La solucion anterior es general para cualquier numero de * en el string dado

Pero la parte de los "?" es variable, para este ejemplo vamos a decir que los los ? pueden ser alguno de los siguientes caraceteres respectivamente:

Código
  1. const char *doubt_possibles[3] = {"ec","B28","XKk"};

Significa que el primer caracter "?" de Izquierda a Derecha puede ser e o c el segundo "?" puede ser  B, 2 u 8 (Imagen muy distorcionada) y el ultimo Signo "?" podria ser "X, K o k"

Esta solucion esta hardcodeada de la siguiente manera:

Código
  1. for(contadores[0] = 0; contadores[0] < strlen(doubt_possibles[0]) ; contadores[0]++) {
  2. current_string[doubt_locations[0]] = doubt_possibles[0][contadores[0]];
  3. for(contadores[1] = 0; contadores[1] < strlen(doubt_possibles[1]) ; contadores[1]++) {
  4. current_string[doubt_locations[1]] = doubt_possibles[1][contadores[1]];
  5. for(contadores[2] = 0; contadores[2] < strlen(doubt_possibles[2]) ; contadores[2]++) {
  6. current_string[doubt_locations[2]] = doubt_possibles[2][contadores[2]];
  7. //Otro Codigo
  8. do{
  9. //CODIGO
  10. }while(increment_base58(current_string,aux));
  11. }
  12. }
  13. }
  14.  

El problema con lo anterior es que si me mandan otra cadena diferente o cambia la cantidad de caracteres tengo que editar la mitad del codigo actual.

Mas o menos tengo un leve idea de como hacerlo de forma general, cualquier numero de ? y cualquier longitud de posibles, pero me pregunto cual seria su forma de abordar este problema sin utilizar tanto for, quedando algo asi:

Código
  1. do{ //Do para los "?" en lugar de tanto for....
  2. do{ // Do para los "*"
  3. //CODIGO
  4. }while(increment_base58(current_string,aux));
  5. }while(magic_function(current_string,aux2));
  6.  

Es decir como codificarian "magic_function"

Código
  1. bool magic_function(char *current_string,int aux2){
  2. // Que hay aqui?
  3. }
  4.  
78  Programación / Programación C/C++ / Re: ¿Alguien sabe de alguna funcion "gets" que no imprima el salto de linea final? en: 25 Noviembre 2021, 12:08 pm
Si, como te recomiendan es mejor utilizar fgets y quitar el retorno de linea manualmente.

Yo lo hago utilizando una funcion trim.

Código
  1. char *ltrim(char *str, const char *seps) {
  2. size_t totrim;
  3. if (seps == NULL) {
  4. seps = "\t\n\v\f\r ";
  5. }
  6. totrim = strspn(str, seps);
  7. if (totrim > 0) {
  8. size_t len = strlen(str);
  9. if (totrim == len) {
  10. str[0] = '\0';
  11. }
  12. else {
  13. memmove(str, str + totrim, len + 1 - totrim);
  14. }
  15. }
  16. return str;
  17. }
  18.  
  19. char *rtrim(char *str, const char *seps) {
  20. int i;
  21. if (seps == NULL) {
  22. seps = "\t\n\v\f\r ";
  23. }
  24. i = strlen(str) - 1;
  25. while (i >= 0 && strchr(seps, str[i]) != NULL) {
  26. str[i] = '\0';
  27. i--;
  28. }
  29. return str;
  30. }
  31.  
  32. char *trim(char *str, const char *seps) {
  33. return ltrim(rtrim(str, seps), seps);
  34. }
79  Seguridad Informática / Seguridad / Re: Relay de elhacker.net en TOR en: 24 Noviembre 2021, 00:29 am
Excelente aportacion  la comunidad.

Quizás también pongamos el foro o la web en un dominio .onion próximamente.

Gustas que te busque un dominio tipo elhacker11jhoiefhsoidjflid.onion ?

Actualmente no estoy muy familiarizado con los dominios onions pero tengo entendido que es muy similar a la creacion de address de bitcoin lo cual ya tengo automatizado.

Saludos!
80  Sistemas Operativos / GNU/Linux / Re: Usuario Debian en: 29 Octubre 2021, 20:45 pm
Yo utilizo debian en un servidor rentado, funciona de maravilla.

Saludos!
Páginas: 1 2 3 4 5 6 7 [8] 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 ... 235
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines