storycraft / node-kakao

Loco protocol compatible library
MIT License
405 stars 115 forks source link

Unknown X-VC value #5

Closed delta-kor closed 4 years ago

delta-kor commented 4 years ago

Thank you very much for your selfless dedication, can you provide detail documentation for the X-VC value?

client.login('email', 'password', 'device id', 'xvc' /* this */);

Tried to find the X-VC value by capturing connection but it was blocked by kakao client. Where can I find the X-VC value?

Thank you again for your hard work.

storycraft commented 4 years ago

X-VC value is security related thing that made with email, password, user-agent and device id as far as I know. If you put wrong X-VC value here, your login request will be rejected. I extracted them by dumping memory of official client program.

Note: Currently I'm not maintaining this project unless there are major bug which affects my bot.

delta-kor commented 4 years ago

I am so pleased to hear from you. I think I got the proper X-VC value but it still doesn't work.

I got error Error 30. Someof field values are wrong , but I rarely got Received wrong response: Access login ERR 12.

new TalkClient('NAME' /* here! */);

Does the TalkClient name should be device's name ( DESKTOP-XXXXXXX ) ?

Also, is the deviceUUID value from login method base64-like-string from registry?

I am very thankful that you're considering my problem. Thank you for your attention to this matter and look forward to hearing from you again soon.

storycraft commented 4 years ago

X-VC value is security related thing that made with email, password, user-agent and device id as far as I know.

Most error 30 is caused by X-VC value mismatch. Current node-kakao's A header for auth is "KT/3.0.6 Wd/10.0 ko". Current official client is 3.1.1 so it is outdated.

You have to match version string in kakao-api.ts in kakao-api.ts

static get Version() {
    return '3.0.6';
}

static get InternalAppVersion() {
    return `${this.Version}.${this.InternalAppSubVersion}`;
}

static get InternalAppSubVersion() {
    return '2319';
}

static get OSVersion() {
    return '10.0';
}

static get Language() {
    return 'ko';
}

static get AuthUserAgent() {
    return `KT/${KakaoAPI.Version} Wd/${KakaoAPI.OSVersion} ${KakaoAPI.Language}`;
}

^ this

junhyukso commented 4 years ago

I also think I got the right X-VC header (and above version code), but ERROR 30 keeps happening. Can you tell me exactly where i can find device_UUID ? Is this HKEY_CURRENT_USER\SOFTWARE\Kakao\KakaoTalk\DeviceInfo\2020~XXX\dev_id in pc registry ? ---------SOLVED----------- found it in client memory dump

delta-kor commented 4 years ago

Thank you @storycraft . It worked for me. I got a proper X-VC value by memory dumping and it worked. Thank you again for taking the trouble to help me. I do appreciate it. Good luck in everything

storycraft commented 4 years ago

Good to hear it worked well from you. There is device uuid thing in registry but It's not complete key. You need to extract it like x-vc value.

Closing this issue.