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 - @XSStringManolo

#71
Foro Libre / Re: quiero practicar karate
13 Agosto 2021, 03:29 AM
Yo hice kárate varios años y si que recibes golpes. Forma parte imprescindible del entrenamiento a pesar de que tenga otras partes como las katas y las exibiciones en donde no se golpea, si se realizan combates similares al kickboxing.

Si quieres no recibir golpes el único arte marcial de verdad que existe en el que no se golpea es el jujitsu. Y a demás es de los artes marciales mas eficaces que existen. Se trata de tumbarse en el suelo y hacer submisiones, ni siquiera hay derribos como en judo. Te recomiendo ver videos de como entrenan. Es muy divertido y útil.
#72
Cita de: kub0x en 11 Agosto 2021, 18:05 PM
Estaría bien que subieras un challenge cuando lo termines.  :rolleyes:
Ya he subido varios pero participan 1 o 2 personas y 2 minutos y lo dejan :(
#73
Cita de: kub0x en 11 Agosto 2021, 15:20 PM
Buenas @XSStringManolo,

¿tu algoritmo hace lo siguiente?

Separo el plaintext en K bloques de N, es decir una colección (B1, ..., BK)
El primer bloque cifrado C1 es C1 = IV + B1
El segundo C2 = (C1 + B2) + K = IV + B1 + B2 + K
... Cn = IV + (B1 + ... + Bn) + (n-1)*K

Un atacante averigua un triplet (IV, plaintext, ciphertext) pero desconoce la clave K.
Coge el segundo bloque C2 y como sabe los bloques (porque sabe el plaintext) hace:
C2 - B1 - B2 - IV = K
y así puede averiguar la clave, asociada a dicho triplet.

No sé si estaré en lo cierto. Si pudieras comprobar si encaja esta descipción en tu algoritmo.

Saludos.
Sí es inseguro, aún lo estoy desarrollando :P

#74
Con el comando 7z es muy sencillo.

Pon que tengo 6 archivos en una carpeta:
archivo1.txt  archivo3.txt  archivo5.txt
archivo2.txt  archivo4.txt  archivo6.txt

Creo el primer backup con los 3 primeros archivos:
7z a archivos.7z archivo1.txt archivo2.txt archivo3.txt

Ahora tengo en la carpeta:
archivo1.txt  archivo3.txt  archivo5.txt  archivos.7z
archivo2.txt  archivo4.txt  archivo6.txt

Dentro de un mes quiero agregar los archivos 4 5 y 6:
7z a archivos.7z archivo4.txt archivo5.txt archivo6.txt

Sigo teniendo los mismos archivos en la carpeta, solo que ahora archivos.7z tiene dentro los 6 archivos comprimidos.

Para descomprimirlos:
mkdir archivosExtraidos
7z x archivos.7z -o"./archivosExtraidos"

Ya tienes los 6 archivos descomprimidos en la carpeta archivosExtraidos.

PD: En el manual de 7z tienen un aviso importante, que entiendo que también se aplica a winzip, winrar y desmás utilidades de compresióm que no están diseñadas explícitamente para copias de seguridad.

Cita de: man 7zBackup and limitations
      DO NOT USE the 7-zip format for backup purpose on Linux/Unix because :
       - 7-zip does not store the owner/group of the file.

      On Linux/Unix, in order to backup directories you must use tar :
       - to backup a directory  : tar cf - directory | 7za a -si
      directory.tar.7z
       - to restore your backup : 7za x -so directory.tar.7z | tar xf -

      If you want to send files and directories (not the owner of file) to
      others Unix/MacOS/Windows users, you can use the 7-zip format.

        example : 7za a directory.7z  directory

      Do not use "-r" because this flag does not do what you think.

      Do not use directory/* because of ".*" files (example : "directory/*"
      does not match "directory/.profile")

Cita de: traducidoRespaldos y límites
      NO USES el formato 7z para respaldos en Linux/Unix porque :
       - 7z no almacena el owner/group del archivo.

      En Linux/Unix, para respaldar carpetas debes usar tar :
       - para respaldar una carpeta  : tar cf - carpeta | 7za a -si
      carpeta.tar.7z
       - para restaurar la carpeta : 7za x -so carpeta.tar.7z | tar xf -

      Si quieres enviar archivos y carpetas (sin el owner del archivo) a otros usuarios Unix/MacOS/Windows, puedes usar el formato 7z.
        ejemplo : 7za a carpeta.7z  carpeta

      No utilices "-r" porque este argumento no hace lo que piensas.

      No utilices carpeta/* por los archivos ".*" (ejemplo: "carpeta/*" no encuentra
      "carpeta/.profile")
#75
Cita de: RayR en 10 Agosto 2021, 03:01 AM
No probé el programa, pero tienes un error en la línea 62:

   GENERATED_IV = IV;

IV es local a la función cipherBlock, por lo que sólo existe dentro de ella (de hecho, dentro del bloque if donde fue declarada) de manera que al retornar de esa función, GENERATED_IV apunta a una dirección inválida. Es de esas cosas que a veces funcionan por casualidad pero son un error. Probablemente eso es lo que te ocasiona el problema. También por ahí reservas memoria sin liberarla pero eso aquí sólo gasta memoria y no es la causa del error.

Añado: lo más simple sería que hagas GENERATED_IV un arreglo de tamaño fijo.

Creo que al modificar lo que comentas no me vuelve a surgir el error. Comentaré si me vuelve a aparecer y es casualidad que no vuelva a surgir. Muchas gracias, no me di cuenta que estaba guardando un puntero a memoria del stack xD

#76
En mi opinión lo mas rápido y sencillo sería hacer un sitio nuevo absolutamente desde 0 y que ambos coexistan mientras en el nuevo sitio no se vayan creando temas, secciones, entradas, usuarios y comentarios.

Hay un montón de modelos distintos que están funcionando muy bien como Stackoverflow o Quora. A mi personalmente me gusta mas el estilo del foro y soy usuario 100% móvil.
#77
Estoy haciendo un cifrado CBC y añado 1024 bytes generados de forma pseudoaleatoria al final del archivo que el usuario eliga cifrar. Por motivos de debug, estos 1024 bytes a parte de añadirlos al archivo, también creo un archivo llamado lastIV.txt con estos 1024 bytes.

Estoy programando la parte que descifra y el primer paso que estoy haciendo es obtener esos últimos 1024 bytes del final del archivo cifrado que corresponden al IV generado aleatoriamente. Para ver el resultado, escribo estos 1024 bytes en un archivo externo al que llamo extractedIV.txt

Al comparar ambos archivos, que deberían ser exactamente iguales, algunos bytes no coinciden y no tengo ni idea de porque ambos archivos no son iguales.

Aquí adjunto sus hex creados con xxd:

lastIV.txt
00000000: 5dcf c46c d3d7 561f 5b23 2c8c d252 c5c9  ]..l..V.[#,..R..
00000010: 8cf5 8070 706e df2b 2fe8 5d2b f3ff f2d8  ...ppn.+/.]+....
00000020: bd7e 8c99 edc4 a87a 26f1 077f 5d2f 132b  .~.....z&...]/.+
00000030: 2b83 1319 4e76 0e0f 0822 0d9b f686 071d  +...Nv..."......
00000040: 0ea2 b106 5cf6 1401 48a8 a95e f9b7 2ade  ....\...H..^..*.
00000050: 194e 5e80 c744 1fac 81c3 af2b ae30 2ba9  .N^..D.....+.0+.
00000060: 3f56 7b6c c413 e4af c24b 2cc4 001e b74f  ?V{l.....K,....O
00000070: f1a2 1a2b 8881 20fc b41f 12bd 14e0 9017  ...+.. .........
00000080: d8ee 866e cea9 6759 36a6 6c7d c55c b389  ...n..gY6.l}.\..
00000090: ae80 d81f 2c2b 8049 826c b9df 071b d5cd  ....,+.I.l......
000000a0: 943f acd7 0f20 4f13 1956 5c23 0b89 81c4  .?... O..V\#....
000000b0: 95e2 f3f2 7b90 f174 bdc9 0df4 ec81 6ea9  ....{..t......n.
000000c0: 132a 5e42 93e0 0d5e a4ca 13ec d013 63dc  .*^B...^......c.
000000d0: a218 5dca c54e 2ea9 0607 d53c b022 2781  ..]..N.....<."'.
000000e0: 0b7e 7142 135b de22 c5de df6d 825d 755c  .~qB.[."...m.]u\
000000f0: 6c81 1a53 6c1b 2e2b d32a fdd0 0bd6 d629  l..Sl..+.*.....)
00000100: 816e 5780 4e0b bde1 13c9 1159 4950 5c88  .nW.N......YIP\.
00000110: 927d 235c c9e8 e83c 0b9e 7fbd 959f 830d  .}#\...<........
00000120: 3b8c d7ca d7ef c3a2 2e8e ff5e dae2 f494  ;..........^....
00000130: 9fbd 5be1 a65d abe8 d8d5 862d 42b7 0ba9  ..[..].....-B...
00000140: e6ed 3ccc 2ca8 30f2 a950 883b 6722 225d  ..<.,.0..P.;g""]
00000150: 3c5c 1907 f2f7 9ab7 01b3 2cd5 98da 4080  <\........,...@.
00000160: 2319 9859 1a1a 22e8 2f21 f5c2 363d c918  #..Y.."./!..6=..
00000170: 9990 e842 ef1b efab 5e3d a2bd 2b1f 2b2a  ...B....^=..+.+*
00000180: 922f 80f5 4b36 e636 aba6 5d17 c375 8095  ./..K6.6..]..u..
00000190: 8de8 e813 aef4 ce04 33d8 f221 e8c5 d801  ........3..!....
000001a0: 93b7 ed1b 9a95 bf3d b72b 08da a4bf b165  .......=.+.....e
000001b0: bd71 c77d ee2b a853 79c0 9e52 2092 c5d8  .q.}.+.Sy..R ...
000001c0: 19e8 4052 1fde 83a1 4e8c 30b3 e619 361e  ..@R....N.0...6.
000001d0: 6cd0 9248 13d8 7bae 9536 5d44 d5e4 131b  l..H..{..6]D....
000001e0: 8c40 49f3 c38d 5d26 c3ec f790 131f f95b  .@I...]&.......[
000001f0: 635c e679 75f3 42e8 a41e 52b4 8852 2bfd  c\.yu.B...R..R+.
00000200: 7a87 d759 f43d c988 537d 6380 cfa4 b7f4  z..Y.=..S}c.....
00000210: b41b ecc7 ccfd 825c e46e 6eb4 e4c9 e83d  .......\.nn....=
00000220: 2ad1 f2a2 1fd7 7df1 843f 01f1 9664 185c  *.....}..?...d.\
00000230: 0000 0000 0000 0000 8776 ec75 5ba2 4052  .........v.u[.@R
00000240: 0004 0000 0000 0000 2010 61f9 7c00 0000  ........ .a.|...
00000250: 0000 0000 0000 0000 2010 61f9 7c00 0000  ........ .a.|...
00000260: 0010 0000 0000 0000 0010 0000 0000 0000  ................
00000270: d0d0 53d5 7f00 0000 5453 55f9 7c00 0000  ..S.....TSU.|...
00000280: 4841 01f9 7c00 0000 5417 2ce1 2c13 3c04  HA..|...T.,.,.<.
00000290: 90d1 53d5 7f00 0000 54da 5cf9 7c00 0000  ..S.....T.\.|...
000002a0: 0d17 da1a 2220 1f18 47b3 0000 0000 0000  ...." ..G.......
000002b0: 9fcc 1400 0000 0000 8081 0000 0100 0000  ................
000002c0: 8f27 0000 8f27 0000 0000 0000 0000 0000  .'...'..........
000002d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002e0: 0010 0000 0000 0000 0000 0000 0000 0000  ................
000002f0: 3a9e 1161 0000 0000 0092 fe1e 0000 0000  :..a............
00000300: 3a9e 1161 0000 0000 0092 fe1e 0000 0000  :..a............
00000310: 3a9e 1161 0000 0000 0092 fe1e 0000 0000  :..a............
00000320: 0000 0000 0000 0000 843f 01f1 9664 185c  .........?...d.\
00000330: 40ce 53d5 7f00 0000 0100 0000 0000 0000  @.S.............
00000340: 20d2 53d5 7f00 0000 4841 01f9 7c00 0000   .S.....HA..|...
00000350: b0d1 53d5 7f00 0000 08f4 5cf9 7c00 0000  ..S.......\.|...
00000360: 4841 01f9 7c00 0000 0004 0000 0004 0000  HA..|...........
00000370: 10d2 53d5 7f00 0000 28d3 5cf9 7c00 0000  ..S.....(.\.|...
00000380: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000390: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000003a0: 0004 0000 0000 0000 2010 61f9 7c00 0000  ........ .a.|...
000003b0: 40ce 53d5 7f00 0000 0100 0000 0000 0000  @.S.............
000003c0: 0004 0000 0000 0000 4841 01f9 7c00 0000  ........HA..|...
000003d0: 80d2 53d5 7f00 0000 f410 5ef9 7c00 0000  ..S.......^.|...
000003e0: 38d2 53d5 7f00 0000 0100 0000 7c00 0000  8.S.........|...
000003f0: 0004 0000 0000 0000 40ce 53d5 7f00 0000  ........@.S.....


extractedIV.txt
00000000: 5dcf c46c d3d7 561f 5b23 2c8c d252 c5c9  ]..l..V.[#,..R..
00000010: 8cf5 8070 706e df2b 2fe8 5d2b f3ff f2d8  ...ppn.+/.]+....
00000020: bd7e 8c99 edc4 a87a 26f1 077f 5d2f 132b  .~.....z&...]/.+
00000030: 2b83 1319 4e76 0e0f 0822 0d9b f686 071d  +...Nv..."......
00000040: 0ea2 b106 5cf6 1401 48a8 a95e f9b7 2ade  ....\...H..^..*.
00000050: 194e 5e80 c744 1fac 81c3 af2b ae30 2ba9  .N^..D.....+.0+.
00000060: 3f56 7b6c c413 e4af c24b 2cc4 001e b74f  ?V{l.....K,....O
00000070: f1a2 1a2b 8881 20fc b41f 12bd 14e0 9017  ...+.. .........
00000080: d8ee 866e cea9 6759 36a6 6c7d c55c b389  ...n..gY6.l}.\..
00000090: ae80 d81f 2c2b 8049 826c b9df 071b d5cd  ....,+.I.l......
000000a0: 943f acd7 0f20 4f13 1956 5c23 0b89 81c4  .?... O..V\#....
000000b0: 95e2 f3f2 7b90 f174 bdc9 0df4 ec81 6ea9  ....{..t......n.
000000c0: 132a 5e42 93e0 0d5e a4ca 13ec d013 63dc  .*^B...^......c.
000000d0: a218 5dca c54e 2ea9 0607 d53c b022 2781  ..]..N.....<."'.
000000e0: 0b7e 7142 135b de22 c5de df6d 825d 755c  .~qB.[."...m.]u\
000000f0: 6c81 1a53 6c1b 2e2b d32a fdd0 0bd6 d629  l..Sl..+.*.....)
00000100: 816e 5780 4e0b bde1 13c9 1159 4950 5c88  .nW.N......YIP\.
00000110: 927d 235c c9e8 e83c 0b9e 7fbd 959f 830d  .}#\...<........
00000120: 3b8c d7ca d7ef c3a2 2e8e ff5e dae2 f494  ;..........^....
00000130: 9fbd 5be1 a65d abe8 d8d5 862d 42b7 0ba9  ..[..].....-B...
00000140: e6ed 3ccc 2ca8 30f2 a950 883b 6722 225d  ..<.,.0..P.;g""]
00000150: 3c5c 1907 f2f7 9ab7 01b3 2cd5 98da 4080  <\........,...@.
00000160: 2319 9859 1a1a 22e8 2f21 f5c2 363d c918  #..Y.."./!..6=..
00000170: 9990 e842 ef1b efab 5e3d a2bd 2b1f 2b2a  ...B....^=..+.+*
00000180: 922f 80f5 4b36 e636 aba6 5d17 c375 8095  ./..K6.6..]..u..
00000190: 8de8 e813 aef4 ce04 33d8 f221 e8c5 d801  ........3..!....
000001a0: 93b7 ed1b 9a95 bf3d b72b 08da a4bf b165  .......=.+.....e
000001b0: bd71 c77d ee2b a853 79c0 9e52 2092 c5d8  .q.}.+.Sy..R ...
000001c0: 19e8 4052 1fde 83a1 4e8c 30b3 e619 361e  ..@R....N.0...6.
000001d0: 6cd0 9248 13d8 7bae 9536 5d44 d5e4 131b  l..H..{..6]D....
000001e0: 8c40 49f3 c38d 5d26 c3ec f790 131f f95b  .@I...]&.......[
000001f0: 635c e679 75f3 42e8 a41e 52b4 8852 2bfd  c\.yu.B...R..R+.
00000200: 7a87 d759 f43d c988 537d 6380 cfa4 b7f4  z..Y.=..S}c.....
00000210: b41b ecc7 ccfd 825c e46e 6eb4 e4c9 e83d  .......\.nn....=
00000220: 2ad1 f2a2 1fd7 7df1 843f 01f1 9664 185c  *.....}..?...d.\
00000230: 0000 0000 0000 0000 8776 ec75 5ba2 4052  .........v.u[.@R
00000240: 0004 0000 0000 0000 2010 61f9 7c00 0000  ........ .a.|...
00000250: 0000 0000 0000 0000 2010 61f9 7c00 0000  ........ .a.|...
00000260: 0010 0000 0000 0000 0010 0000 0000 0000  ................
00000270: d0d0 53d5 7f00 0000 5453 55f9 7c00 0000  ..S.....TSU.|...
00000280: b040 01f9 7c00 0000 5417 2ce1 2c13 3c04  .@..|...T.,.,.<.
00000290: 90d1 53d5 7f00 0000 54da 5cf9 7c00 0000  ..S.....T.\.|...
000002a0: 0d17 da1a 2220 1f18 47b3 0000 0000 0000  ...." ..G.......
000002b0: 3b78 0c00 0000 0000 8081 0000 0100 0000  ;x..............
000002c0: 8f27 0000 8f27 0000 0000 0000 0000 0000  .'...'..........
000002d0: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000002e0: 0010 0000 0000 0000 0000 0000 0000 0000  ................
000002f0: ed8d 1161 0000 0000 00a0 2526 0000 0000  ...a......%&....
00000300: 3a9e 1161 0000 0000 0092 fe1e 0000 0000  :..a............
00000310: 3a9e 1161 0000 0000 0092 fe1e 0000 0000  :..a............
00000320: 0000 0000 0000 0000 843f 01f1 9664 185c  .........?...d.\
00000330: 2ce7 53d5 7f00 0000 0100 0000 0000 0000  ,.S.............
00000340: 20d2 53d5 7f00 0000 b040 01f9 7c00 0000   .S......@..|...
00000350: b0d1 53d5 7f00 0000 08f4 5cf9 7c00 0000  ..S.......\.|...
00000360: b040 01f9 7c00 0000 ee39 806d 2bd7 3d50  .@..|....9.m+.=P
00000370: 10d2 53d5 7f00 0000 843f 01f1 9664 185c  ..S......?...d.\
00000380: 0000 0000 0000 0000 0000 0000 0000 0000  ................
00000390: 0000 0000 0000 0000 0000 0000 0000 0000  ................
000003a0: 0004 0000 0000 0000 2010 61f9 7c00 0000  ........ .a.|...
000003b0: 40ce 53d5 7f00 0000 0100 0000 0000 0000  @.S.............
000003c0: 0004 0000 0000 0000 b040 01f9 7c00 0000  .........@..|...
000003d0: 80d2 53d5 7f00 0000 f410 5ef9 7c00 0000  ..S.......^.|...
000003e0: 38d2 53d5 7f00 0000 0100 0000 0000 0000  8.S.............
000003f0: 0004 0000 0000 0000 40ce 53d5 7f00 0000  ........@.S.....


Aquí el código:
Código (cpp) [Seleccionar]
#include<stdio.h>
#include<stdlib.h>
#include<time.h>

// add operation between 2 buffers
void addBuffers(char * buf1, char * buf2, int bufSize) {
 for(int i = 0; i < bufSize; ++i) {
   buf1[i] = (buf1[i] + buf2[i]);
 }
}

// substract operation between 2 buffers
void substractBuffers(char * buf1, char * buf2, int bufSize) {
 for(int i = 0; i < bufSize; ++i) {
   buf1[i] = (buf1[i] - buf2[i]);
 }
}

// make key match the block size
void securizeKey(char * keyBuf, char * key, int keySize, int chunkSize) {
 for (int i = 0, j = 0; i < chunkSize; ++i, ++j) {
   if (j > keySize) {
     j = 0;
   }
   keyBuf[i] = key[j];
 }
}

// generate pseudorandom buffer
char *allocate_random_heap_buffer(size_t size) {
 time_t current_time = time(NULL);
 srandom((unsigned int) current_time);
 char* allocatedMemory = (char *) malloc(size);

 for (int bufferIndex = 0; bufferIndex < size; bufferIndex++) {
   uint8_t randomNumber = (uint8_t) random();
   allocatedMemory[bufferIndex] = randomNumber;
 }

 return allocatedMemory;
}

// generate a pseudorandom IV
void generateIV(char * ivBuf, int chunkSize) {
 char * random = allocate_random_heap_buffer(chunkSize);
 for (int i = 0; i < chunkSize; ++i) {
   if (random[i] < chunkSize) {
     ivBuf[i] = random[random[i]];
   } else {
     ivBuf[i] = random[i];
   }
 }
}

char * GENERATED_IV;
// block cipher encryption
void cipherBlock(char * bufferBlock, char * bufferBlock2, char * key, int blockSize, int round) {
 if (round == 1) { // add IV to first block
   char IV[blockSize];
   generateIV(IV, blockSize);
   addBuffers(bufferBlock, IV, blockSize);
   GENERATED_IV = IV;
 } else { // add Last Block to Current Block
   addBuffers(bufferBlock, bufferBlock2, blockSize);
   addBuffers(bufferBlock, key, blockSize);
 }
}


// reverse


int main(int argc, char *argv[]) {
 /*** Fetch CLI Arguments */
 char * filename; int filenameSet = 0; // file to work on
 char * mode;     int modeSet = 0; // encrypt or decrypt
 char * key;      int keySet = 0; // simmetric key
 char * output;   int outputSet = 0; // file to output results on
 for(int i = 0; i < argc; ++i) {
   // -f or --file
   if (strcmp(argv[i], "-f") == 0 || strcmp(argv[i], "--file") == 0) {
     filename = argv[i + 1];
     filenameSet = 1;
   // -m or --mode
   } else if (strcmp(argv[i], "-m") == 0 || strcmp(argv[i], "--mode") == 0) {
     mode = argv[i + 1];
     modeSet = 1;
   // -k or --key
   } else if (strcmp(argv[i], "-k") == 0 || strcmp(argv[i], "--key") == 0) {
     key = argv[i + 1];
     keySet = 1;
   } else if (strcmp(argv[i], "-o") == 0 || strcmp(argv[i], "--output") == 0) {
     output = argv[i + 1];
     outputSet = 1;
   }
 }
 
 // Check if mandatory arguments are set
 if (filenameSet != 1) {
   printf("Missing filename argument, use -f ./myFile");
   return 0;
 }

 if (modeSet != 1) {
   printf("Please select a mode, use -m cipher or use -m reverse");
   return 0;
 }

 if (keySet != 1) {
   printf("Missing key argument, use -k mySecretKey");
   return 0;
 }

 if (outputSet != 1) {
   printf("Missing output argument, use -o ./newFile");
   return 0;
 }
 /* Fetch CLI Arguments ***/


 #define BLOCK_SIZE 1024
 const int keySize = strlen(key);
 char keyBuf[BLOCK_SIZE];
 securizeKey(keyBuf, key, keySize, BLOCK_SIZE);


 if (strcmp(mode, "cipher") == 0) { // user selected encryption mode
   char buf[BLOCK_SIZE];
   char lastBuf[BLOCK_SIZE];
   FILE *file;
   size_t nread;

   file = fopen(filename, "r");
   FILE * encrypted = fopen(output, "w"); // file to output the encrypted file
   if (file) {
     int i = 0;
     while ((nread = fread(buf, 1, sizeof buf, file)) > 0) {
       cipherBlock(buf, lastBuf, keyBuf, BLOCK_SIZE, ++i);
       memcpy(lastBuf, buf, BLOCK_SIZE);
       fwrite(buf, 1, nread, encrypted);
     }
     fwrite(GENERATED_IV, 1, BLOCK_SIZE, encrypted);
     
     FILE * lastIV = fopen("./lastIV.txt", "w");
     fwrite(GENERATED_IV, 1, BLOCK_SIZE, lastIV); // debug IV

     if (ferror(file)) {
       // deal with error
     }
     fclose(file);
   }
 } else if (strcmp(mode, "reverse") == 0) {
   /* TODO: READ REVERSE IN CHUNKS */
   char buf[BLOCK_SIZE];
   char lastBuf[BLOCK_SIZE];
   FILE *file;
   size_t nread;

   file = fopen(filename, "r");
   FILE * decrypted = fopen(output, "w"); // file to output the decrypted file
   
   if (file) {
     int i = 0;
     fseek(file, 0, SEEK_END);
     int sz = ftell(file); // file size
     char IV[BLOCK_SIZE];

     char aux[BLOCK_SIZE];


     for (int j = sz - BLOCK_SIZE; /* j > 0 */; j -= BLOCK_SIZE, ++i) {
       fseek(file, j, SEEK_SET);
fread(aux, 1, BLOCK_SIZE, file);
       if (i == 0) {
         memcpy(IV, aux, BLOCK_SIZE);
         FILE * extractedIV = fopen("./extractedIV.txt", "w");
         fwrite(IV, 1, BLOCK_SIZE, extractedIV); // debug IV
         fclose(extractedIV);
         return 0;
       }

if (j <= 0) {
         break;
}
     }
     fclose(file);
   }
   
 } else {
   printf("Select -m cipher or -m reverse");
   return 0;
 }
 return 0;
}


PD: Adjunto output de radiff2 de los bytes que son transformados:
0x00000280 4841 => b040 0x00000280
0x000002b0 9fcc14 => 3b780c 0x000002b0
0x000002f0 3a9e => ed8d 0x000002f0
0x000002f9 92fe1e => a02526 0x000002f9
0x00000330 40ce => 2ce7 0x00000330
0x00000348 4841 => b040 0x00000348
0x00000360 4841 => b040 0x00000360
0x00000368 0004000000040000 => ee39806d2bd73d50 0x00000368
0x00000378 28d35cf97c000000 => 843f01f19664185c 0x00000378
0x000003c8 4841 => b040 0x000003c8
0x000003ec 7c => 00 0x000003ec
#78
Yo intenté echar un cable en su día pero no manejaba las tecnologías que se estaban utilizando. Asique no logré ni hacer una aportación pequeña.

Quizas ahora pueda aportar, que estuve aprendiendo React y estoy mas familiarizado.

El principal problema que veo es el mismo que comenta MinusFour, no hay una serie de directrices claras, entonces a la hora de toma de decisiones no tienes claro que hacer.

A parte en el repositorio, desarrolladores que programen web no sé si somos solo 3 o 4. Yo tengo 0 conocimiento del backend del foro, asique ni la menor idea de como se va a integrar o como siquiera te puedes plantear el desarrollo del front si no sabes de donde vas a sacar el código del backend. Tampoco manejo de consultas sql, por lo que todo el backend si se toca (que entiendo que es necesario al estar seriamente integrado con el front) yo no aportaría nada.

Sobre todo, faltan decisiones sobre que es exactamente lo que se quiere hacer. Que tecnologías se van a utilizar. Etc.

#79
Aquí lo único que importa es quien tiene el dinero. Que en este caso son las farmaceuticas.

Van regando a políticos, medios, youtubers y empresas para crear el nuevo establishment. Donde si simplemente no te quieres vacunar porque en tu franja de edad y sin patologías previas consideras que los riesgos de muerte por una reacción potente del sistema inmune contra la vacuna o por un trombo son mas elevadas que la probabilidad de muerte por covid, pasas a ser inmediatamente un negacionista antivacunas al que hay que quemar vivo porque está poniendo en riesgo a la humanidad. Cuando la mayoría de los estudios promocionados por el propio establishment certifican que la inmunidad natural contra el covid es mas duradera que la de las vacunas.

Hay cientos de científicos y médicos informando de que se están ocultando los datos de muertes reales que se producen en las 2 semanas posteriores a la vacunación y que las cifras de los porcentajes reales que revelan las autopsias que están realizando son extramadamente superiores a los que se están dando.

Se ataca y censura a todos los científicos que no siguen la corriente de opinión establecida de forma dictatorial eliminando todo debate posible sobre la seguridad de las vacunas.

Se ha optado por una estrategia de "vivir con el virus", que también puede ser denominada como "vacunarse todos los años de forma obligatoria".

#80
Gente que no se iba a morir por covid, se ha muerto por la vacuna. Vacuna que aún no se ha demostrado que reduzca los contagios por estudios independiente que no sean sospechoso de tener intereses.

Tildan de negacionistas a todo aquel que no abra el culo ante la millonada que son las vacunas. Silencian a científicos que hablan de forma o objetiva y solo difunden aquellos que apoyan las vacunas y a pseudodoctores y paranoicos pasa restar crédito a cualquier opinión razonable que se les escape.

Al Macrón solo hay que verlo con que aires se dirige a la población cuando tiene ocasión. Así se ha llevado ya unos cuantos guantazos.