exploit the possibilities
Home Files News &[SERVICES_TAB]About Contact Add New

ref.c

ref.c
Posted Dec 21, 1999

ref.c

tags | encryption
SHA-256 | 4343eb80fad7535a33ed5433e955117757dfa4b026b7af73950b9d74a8d5b9b5

ref.c

Change Mirror Download
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#include <string.h>
#include "des.h"
#include "misc.h"

#define CLOCKS_PER_DES 18

int plaintextMatch(unsigned char plaintextVector[32], unsigned char m[8],
unsigned char plaintextByteMask, int ciphertext, unsigned char key[7]);
void checkKey(unsigned char key[7], unsigned char plaintextVector[32],
unsigned char plaintextXorMask[8],
unsigned char ciphertext0[8], unsigned char ciphertext1[8],
unsigned char plaintextByteMask, int useCBC, int extraXor);

void main(void) {
unsigned char startKey[7], plaintextVector[32];
unsigned char plaintextXorMask[8];
unsigned char ciphertext0[8];
unsigned char ciphertext1[8];
unsigned char plaintextByteMask;
int useCBC, extraXor, quickStart;
int i,j;
long numClocks;
unsigned char key[7];

GetUserInfo(plaintextVector, plaintextXorMask, ciphertext0, ciphertext1,
&plaintextByteMask, &useCBC, &extraXor, &quickStart, startKey,
&numClocks);

for (i = 0; i < numClocks; i += CLOCKS_PER_DES) {
for (j = 0; j < 24; j++) {
memcpy(key, startKey, 8);
key[0] += j;
checkKey(key, plaintextVector, plaintextXorMask, ciphertext0,
ciphertext1, plaintextByteMask, useCBC, extraXor);
}
increment32(startKey+3);
}
}


void checkKey(unsigned char key[7], unsigned char plaintextVector[32],
unsigned char plaintextXorMask[8],
unsigned char ciphertext0[8], unsigned char ciphertext1[8],
unsigned char plaintextByteMask, int useCBC, int extraXor) {
unsigned char m[8];
int i;

desDecrypt(m, ciphertext0, key);
printf("DES_decrypt(K="); for (i = 0; i < 7; i++) printf("%02X", key[i]);
printf(", C0="); for (i = 0; i < 8; i++) printf("%02X", ciphertext0[i]);
printf(") -> "); for (i = 0; i < 8; i++) printf("%02X", m[i]); printf("\n");
if (extraXor) {
m[0] ^= m[4];
m[1] ^= m[5];
m[2] ^= m[6];
m[3] ^= m[7];
}
for (i = 0; i < 8; i++)
m[i] ^= plaintextXorMask[i];

if (plaintextMatch(plaintextVector, m, plaintextByteMask, 0, key)) {
desDecrypt(m, ciphertext1, key);
printf("DES_decrypt(K="); for (i = 0; i < 7; i++) printf("%02X", key[i]);
printf(", C1="); for (i = 0; i < 8; i++) printf("%02X", ciphertext1[i]);
printf(") -> "); for (i = 0; i < 8; i++) printf("%02X", m[i]); printf("\n");
if (extraXor) {
m[0] ^= m[4];
m[1] ^= m[5];
m[2] ^= m[6];
m[3] ^= m[7];
}
if (useCBC) {
for (i = 0; i < 8; i++)
m[i] ^= ciphertext0[i];
}
if (plaintextMatch(plaintextVector, m, plaintextByteMask, 1, key)) {
printf("------- VALID MATCH--------\n");
fprintf(stderr, "Match found at key =");
for (i = 0; i < 7; i++)
fprintf(stderr, "%02X", key[i]);
fprintf(stderr, "\n");
}
}
}


int plaintextMatch(unsigned char plaintextVector[32], unsigned char m[8],
unsigned char plaintextByteMask, int ciphertext, unsigned char key[7]) {
int i;

for (i = 0; i < 8; i++) {
if ((plaintextByteMask & (128>>i)) == 1)
continue; /* this byte is skipped */
if (plaintextVector[m[i]/8] & (128 >> (m[i]%8)))
continue;
return (0); /* no match */
}

printf("Match of C%d with key ", ciphertext);
for (i = 0; i < 7; i++)
printf("%02X", key[i]);
printf(" = ");
for (i = 0; i < 8; i++)
printf("%02X", m[i]);
printf("\n");

fprintf(stderr, "Match of C%d with key ", ciphertext);
for (i = 0; i < 7; i++)
fprintf(stderr, "%02X", key[i]);
fprintf(stderr, " = ");
for (i = 0; i < 8; i++)
fprintf(stderr, "%02X", m[i]);
fprintf(stderr, "\n");

return (1);
}


Login or Register to add favorites

File Archive:

March 2024

  • Su
  • Mo
  • Tu
  • We
  • Th
  • Fr
  • Sa
  • 1
    Mar 1st
    16 Files
  • 2
    Mar 2nd
    0 Files
  • 3
    Mar 3rd
    0 Files
  • 4
    Mar 4th
    32 Files
  • 5
    Mar 5th
    28 Files
  • 6
    Mar 6th
    42 Files
  • 7
    Mar 7th
    17 Files
  • 8
    Mar 8th
    13 Files
  • 9
    Mar 9th
    0 Files
  • 10
    Mar 10th
    0 Files
  • 11
    Mar 11th
    15 Files
  • 12
    Mar 12th
    19 Files
  • 13
    Mar 13th
    21 Files
  • 14
    Mar 14th
    38 Files
  • 15
    Mar 15th
    15 Files
  • 16
    Mar 16th
    0 Files
  • 17
    Mar 17th
    0 Files
  • 18
    Mar 18th
    10 Files
  • 19
    Mar 19th
    32 Files
  • 20
    Mar 20th
    46 Files
  • 21
    Mar 21st
    16 Files
  • 22
    Mar 22nd
    13 Files
  • 23
    Mar 23rd
    0 Files
  • 24
    Mar 24th
    0 Files
  • 25
    Mar 25th
    12 Files
  • 26
    Mar 26th
    31 Files
  • 27
    Mar 27th
    19 Files
  • 28
    Mar 28th
    42 Files
  • 29
    Mar 29th
    0 Files
  • 30
    Mar 30th
    0 Files
  • 31
    Mar 31st
    0 Files

Top Authors In Last 30 Days

File Tags

Systems

packet storm

© 2022 Packet Storm. All rights reserved.

Services
Security Services
Hosting By
Rokasec
close