Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <windows.h>
- unsigned char state[11] = {0};
- unsigned char state2[11] = {0};
- unsigned char enc[11] = {0x56, 0x4B, 0x53, 0x2E, 0x38, 0x31, 0x3C, 0x34, 0x47, 0x51, 0};
- //unsigned char dec[11] = {0x57, 0x43, 0x52, 0x2D, 0x31, 0x31, 0x36, 0x36, 0x44, 0x53, 0x00};
- unsigned char dec[11] = {'W','C','R','-','1','1','6','6','D','S', 0};
- unsigned char chk[11] = {0};
- unsigned char dec2[11] = {0};
- void dumpState()
- {
- printf("0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X 0x%02X\n", state2[0], state2[1], state2[2], state2[3], state2[4], state2[5], state2[6], state2[7], state2[8], state2[9], state2[10]);
- }
- void bcrypt_process()
- {
- unsigned long len=11;
- unsigned long state_len = 11;
- unsigned char i, j;
- unsigned long k;
- i = 0;
- j=0;
- for (k = 0; k < len; k++) {
- unsigned char t;
- i = (i + 1) % state_len;
- j = (j + state[i]) % state_len;
- t = state[j];
- state[j] = state[i];
- state[i] = t;
- dec2[k] = enc[k] ^ state[(state[i] + state[j]) % state_len];
- }
- }
- bool check()
- {
- memcpy(state, state2, 11);
- bcrypt_process();
- if(memcmp(dec2, dec, 11)==0)
- {
- dumpState();
- return true;
- }
- return false;
- }
- void allState(int i = 0)
- {
- if(i==11)
- {
- //dumpState();
- if(check())
- {
- //exit(1);
- }
- }
- for(int k=0;k<11;k++)
- {
- if(i==0)
- {
- printf("k = %d\n", k);
- }
- if(chk[k]>0)continue;
- state2[i]=k;
- chk[k]++;
- allState(i+1);
- chk[k]--;
- }
- }
- int main(int argc, char* argv[])
- {
- //dumpState();
- allState();
- printf("%X\n", enc[1]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement