mirror of
https://github.com/stulle123/kakaotalk_analysis.git
synced 2025-02-06 06:55:29 +00:00
Add tests
This commit is contained in:
parent
a372afb1b0
commit
6167927dd9
8
scripts/mitmproxy/pyproject.toml
Normal file
8
scripts/mitmproxy/pyproject.toml
Normal file
|
@ -0,0 +1,8 @@
|
|||
# pyproject.toml
|
||||
[tool.pytest.ini_options]
|
||||
pythonpath = [
|
||||
".", "lib",
|
||||
]
|
||||
testpaths = [
|
||||
"tests",
|
||||
]
|
BIN
scripts/mitmproxy/tests/data/blsync_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/blsync_packet_client.raw
Normal file
Binary file not shown.
6
scripts/mitmproxy/tests/data/blsync_packet_client.yaml
Normal file
6
scripts/mitmproxy/tests/data/blsync_packet_client.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
body_length: 20
|
||||
body_payload: {pr: 1, r: 1}
|
||||
body_type: 0
|
||||
id: 10006
|
||||
loco_command: BLSYNC
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/chatonroom_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/chatonroom_packet_client.raw
Normal file
Binary file not shown.
|
@ -0,0 +1,6 @@
|
|||
body_length: 60
|
||||
body_payload: {chatId: 9388759392670092, sc: 0, st: 0, token: 1693554522}
|
||||
body_type: 0
|
||||
id: 10016
|
||||
loco_command: CHATONROOM
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/chatonroom_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/chatonroom_packet_server.raw
Normal file
Binary file not shown.
23
scripts/mitmproxy/tests/data/chatonroom_packet_server.yaml
Normal file
23
scripts/mitmproxy/tests/data/chatonroom_packet_server.yaml
Normal file
|
@ -0,0 +1,23 @@
|
|||
body_length: 677
|
||||
body_payload:
|
||||
a: [405368327, 405368740]
|
||||
c: 9388759392670092
|
||||
f: true
|
||||
l: 0
|
||||
m: []
|
||||
o: 1693554522
|
||||
pct: null
|
||||
pi:
|
||||
- {cs: '', ek:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAykBFu1jEsa4PW2keOTSAELXE/VCJqGqiYmc9J0NiYAGFZO5R1vcziBg957PJAGL6U3Ut8Y+iNpDyEk8310pswQVZL1r/AJEJL/WPUgyVT0xk40VC72xYGasi/Cao7Cq3ZJo+rk3tCQx7RCGA0GtyosoEvj0yCNI4/NH9TJhkaKXmFgWwp9d42m75TmGHFFbvEkPyFXtcwmNhJH3cgVHAMlMCaspedPHlK8FAdl0jt20VqaScN4VSx7E//9VX2tcMpM/9R80QX/42lD/62r2eC8tO+9jGuJWl0SKOidDXGF4061SleosWZMy2TyS5sk+/Bb777I9GSoJ0bge5wXyaGwIDAQAB,
|
||||
pt: 3124392943946588704, sk: 0PahpeVCuIzcuIYql9HbFGc4J7Tl9CNTsRqj4ByvvCY=, u: 405368327}
|
||||
r: null
|
||||
sc: 3125740649914852441
|
||||
status: 0
|
||||
sui: 0
|
||||
t: SDirectChat
|
||||
w: [3125740641498169344, 3125740641498169344]
|
||||
body_type: 0
|
||||
id: 10016
|
||||
loco_command: CHATONROOM
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/checkin_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/checkin_packet_client.raw
Normal file
Binary file not shown.
7
scripts/mitmproxy/tests/data/checkin_packet_client.yaml
Normal file
7
scripts/mitmproxy/tests/data/checkin_packet_client.yaml
Normal file
|
@ -0,0 +1,7 @@
|
|||
body_length: 99
|
||||
body_payload: {MCCMNC: '310260', appVer: 10.3.3, lang: en, ntype: 3, os: android,
|
||||
userId: 405368740}
|
||||
body_type: 0
|
||||
id: 10002
|
||||
loco_command: CHECKIN
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/empty_loco_packet.raw
Normal file
BIN
scripts/mitmproxy/tests/data/empty_loco_packet.raw
Normal file
Binary file not shown.
6
scripts/mitmproxy/tests/data/empty_loco_packet.yaml
Normal file
6
scripts/mitmproxy/tests/data/empty_loco_packet.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
body_length: 0
|
||||
body_payload: !!binary |
|
||||
body_type: 0
|
||||
id: 0
|
||||
loco_command: ''
|
||||
status_code: 0
|
Binary file not shown.
BIN
scripts/mitmproxy/tests/data/encrypted_setsk_packet.raw
Normal file
BIN
scripts/mitmproxy/tests/data/encrypted_setsk_packet.raw
Normal file
Binary file not shown.
BIN
scripts/mitmproxy/tests/data/getlpk_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/getlpk_packet_client.raw
Normal file
Binary file not shown.
8
scripts/mitmproxy/tests/data/getlpk_packet_client.yaml
Normal file
8
scripts/mitmproxy/tests/data/getlpk_packet_client.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
body_length: 30
|
||||
body_payload:
|
||||
mi: [405368327]
|
||||
mu: false
|
||||
body_type: 0
|
||||
id: 10013
|
||||
loco_command: GETLPK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/getlpk_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/getlpk_packet_server.raw
Normal file
Binary file not shown.
11
scripts/mitmproxy/tests/data/getlpk_packet_server.yaml
Normal file
11
scripts/mitmproxy/tests/data/getlpk_packet_server.yaml
Normal file
|
@ -0,0 +1,11 @@
|
|||
body_length: 520
|
||||
body_payload:
|
||||
pi:
|
||||
- {cs: '', ek:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAykBFu1jEsa4PW2keOTSAELXE/VCJqGqiYmc9J0NiYAGFZO5R1vcziBg957PJAGL6U3Ut8Y+iNpDyEk8310pswQVZL1r/AJEJL/WPUgyVT0xk40VC72xYGasi/Cao7Cq3ZJo+rk3tCQx7RCGA0GtyosoEvj0yCNI4/NH9TJhkaKXmFgWwp9d42m75TmGHFFbvEkPyFXtcwmNhJH3cgVHAMlMCaspedPHlK8FAdl0jt20VqaScN4VSx7E//9VX2tcMpM/9R80QX/42lD/62r2eC8tO+9jGuJWl0SKOidDXGF4061SleosWZMy2TyS5sk+/Bb777I9GSoJ0bge5wXyaGwIDAQAB,
|
||||
pt: 3124392943946588704, sk: 0PahpeVCuIzcuIYql9HbFGc4J7Tl9CNTsRqj4ByvvCY=, u: 405368327}
|
||||
status: 0
|
||||
body_type: 0
|
||||
id: 10013
|
||||
loco_command: GETLPK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/getmem_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/getmem_packet_client.raw
Normal file
Binary file not shown.
6
scripts/mitmproxy/tests/data/getmem_packet_client.yaml
Normal file
6
scripts/mitmproxy/tests/data/getmem_packet_client.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
body_length: 21
|
||||
body_payload: {chatId: 4884554736017431}
|
||||
body_type: 0
|
||||
id: 10007
|
||||
loco_command: GETMEM
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/getmem_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/getmem_packet_server.raw
Normal file
Binary file not shown.
19
scripts/mitmproxy/tests/data/getmem_packet_server.yaml
Normal file
19
scripts/mitmproxy/tests/data/getmem_packet_server.yaml
Normal file
|
@ -0,0 +1,19 @@
|
|||
body_length: 715
|
||||
body_payload:
|
||||
members:
|
||||
- {accountId: 262855419, fullProfileImageUrl: '', linkedServices: '', nickName: furztrocken,
|
||||
originalProfileImageUrl: '', profileImageUrl: '', statusMessage: '', type: -999999,
|
||||
userId: 405368740, ut: 0}
|
||||
- {accountId: 0, fullProfileImageUrl:
|
||||
https://p.kakaocdn.net/th/talkp/wkvq5HO4yw/K2H6hBZUBidOkF4i5yu1p0/pu5dpg_640x640_s.jpg,
|
||||
linkedServices: '', nickName: KakaoTalk, originalProfileImageUrl:
|
||||
https://p.kakaocdn.net/th/talkp/wkvq5HO4yw/K2H6hBZUBidOkF4i5yu1p0/pu5dpg_640x640_s.jpg,
|
||||
profileImageUrl:
|
||||
https://p.kakaocdn.net/th/talkp/wkvq5HO4yw/K2H6hBZUBidOkF4i5yu1p0/pu5dpg_110x110_c.jpg,
|
||||
statusMessage: KakaoTeam, type: -999999, userId: 69758567, ut: 1}
|
||||
status: 0
|
||||
token: 1693552382
|
||||
body_type: 0
|
||||
id: 10007
|
||||
loco_command: GETMEM
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/getpk_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/getpk_packet_client.raw
Normal file
Binary file not shown.
8
scripts/mitmproxy/tests/data/getpk_packet_client.yaml
Normal file
8
scripts/mitmproxy/tests/data/getpk_packet_client.yaml
Normal file
|
@ -0,0 +1,8 @@
|
|||
body_length: 45
|
||||
body_payload:
|
||||
mi: [405368327]
|
||||
pt: [3124319739752240031]
|
||||
body_type: 0
|
||||
id: 10014
|
||||
loco_command: GETPK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/getpk_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/getpk_packet_server.raw
Normal file
Binary file not shown.
14
scripts/mitmproxy/tests/data/getpk_packet_server.yaml
Normal file
14
scripts/mitmproxy/tests/data/getpk_packet_server.yaml
Normal file
|
@ -0,0 +1,14 @@
|
|||
body_length: 1014
|
||||
body_payload:
|
||||
pi:
|
||||
- {cs: '', ek:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAo1v7+3uOUiAJboG0rVrcoKDi31CuGWPS5h0aKCOwFxY+Epd7MLsCar1FY7tpaz4E0eDse3J60FfRmohDky30f4jVpjTVF4U18VRJY6ex8yAR80/ZLVPbzcOnEwWOYsD+6WzY7UipoQn6osx+0rsTy86WndlSouKXm3cJmFFoIXFupTXMlvU44gQOhXlYOXs+jNnL7eL+6pJS76/mYXoLX1vEtCi3HfdXm3jw5aQMIjCCIRNE375xZz8ZwVyFXMu3A780uWbLPPs/5uPyYZnBCFdunqq/mWDjMeYnia2ncUyN7Il18EGQ8dxQqA26bEZ8A5DV5PEzzUDRIPkxWg2pGwIDAQAB,
|
||||
pt: 3124319739752240031, sk: x6yH7enPDewXgW+pI4gUTO1n9Yw2M6hTI9jQgl8goLU=, u: 405368327}
|
||||
- {cs: '', ek:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAykBFu1jEsa4PW2keOTSAELXE/VCJqGqiYmc9J0NiYAGFZO5R1vcziBg957PJAGL6U3Ut8Y+iNpDyEk8310pswQVZL1r/AJEJL/WPUgyVT0xk40VC72xYGasi/Cao7Cq3ZJo+rk3tCQx7RCGA0GtyosoEvj0yCNI4/NH9TJhkaKXmFgWwp9d42m75TmGHFFbvEkPyFXtcwmNhJH3cgVHAMlMCaspedPHlK8FAdl0jt20VqaScN4VSx7E//9VX2tcMpM/9R80QX/42lD/62r2eC8tO+9jGuJWl0SKOidDXGF4061SleosWZMy2TyS5sk+/Bb777I9GSoJ0bge5wXyaGwIDAQAB,
|
||||
pt: 3124392943946588704, sk: 0PahpeVCuIzcuIYql9HbFGc4J7Tl9CNTsRqj4ByvvCY=, u: 405368327}
|
||||
status: 0
|
||||
body_type: 0
|
||||
id: 10014
|
||||
loco_command: GETPK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/gettoken_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/gettoken_packet_client.raw
Normal file
Binary file not shown.
7
scripts/mitmproxy/tests/data/gettoken_packet_client.yaml
Normal file
7
scripts/mitmproxy/tests/data/gettoken_packet_client.yaml
Normal file
|
@ -0,0 +1,7 @@
|
|||
body_length: 70
|
||||
body_payload:
|
||||
ts: [2, 3, 11, 12, 4, 9, 10, 15]
|
||||
body_type: 0
|
||||
id: 10005
|
||||
loco_command: GETTOKEN
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/gettoken_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/gettoken_packet_server.raw
Normal file
Binary file not shown.
9
scripts/mitmproxy/tests/data/gettoken_packet_server.yaml
Normal file
9
scripts/mitmproxy/tests/data/gettoken_packet_server.yaml
Normal file
|
@ -0,0 +1,9 @@
|
|||
body_length: 179
|
||||
body_payload:
|
||||
os: [0, 0, 0, 1, 0, 0, 0, 0]
|
||||
status: 0
|
||||
ts: [2, 3, 11, 12, 4, 9, 10, 15]
|
||||
body_type: 0
|
||||
id: 10005
|
||||
loco_command: GETTOKEN
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/loginlist_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/loginlist_packet_client.raw
Normal file
Binary file not shown.
22
scripts/mitmproxy/tests/data/loginlist_packet_client.yaml
Normal file
22
scripts/mitmproxy/tests/data/loginlist_packet_client.yaml
Normal file
|
@ -0,0 +1,22 @@
|
|||
body_length: 346
|
||||
body_payload:
|
||||
MCCMNC: '310260'
|
||||
appVer: 10.3.3
|
||||
bg: false
|
||||
chatIds: []
|
||||
duuid: 295c990ec4b3470b9df03827b4a9e38b5caf17cfc010bb18abab9aee622ec5f8
|
||||
lang: en
|
||||
lastTokenId: 0
|
||||
lbk: 0
|
||||
maxIds: []
|
||||
ntype: 3
|
||||
oauthToken: 55027f93d571437fb5c602a526a77ee300000016935523756660010yGWgXyzccO
|
||||
os: android
|
||||
prtVer: '1'
|
||||
revision: 0
|
||||
rp: !!binary |
|
||||
AAD//wAA
|
||||
body_type: 0
|
||||
id: 10003
|
||||
loco_command: LOGINLIST
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/loginlist_packet_client_0.raw
Normal file
BIN
scripts/mitmproxy/tests/data/loginlist_packet_client_0.raw
Normal file
Binary file not shown.
22
scripts/mitmproxy/tests/data/loginlist_packet_client_0.yaml
Normal file
22
scripts/mitmproxy/tests/data/loginlist_packet_client_0.yaml
Normal file
|
@ -0,0 +1,22 @@
|
|||
body_length: 346
|
||||
body_payload:
|
||||
MCCMNC: '310260'
|
||||
appVer: 10.3.3
|
||||
bg: false
|
||||
chatIds: []
|
||||
duuid: 295c990ec4b3470b9df03827b4a9e38b5caf17cfc010bb18abab9aee622ec5f8
|
||||
lang: en
|
||||
lastTokenId: 3125722688938653164
|
||||
lbk: 1693552381
|
||||
maxIds: []
|
||||
ntype: 3
|
||||
oauthToken: 55027f93d571437fb5c602a526a77ee300000016935523756660010yGWgXyzccO
|
||||
os: android
|
||||
prtVer: '1'
|
||||
revision: 28
|
||||
rp: !!binary |
|
||||
AQD//wEA
|
||||
body_type: 0
|
||||
id: 10011
|
||||
loco_command: LOGINLIST
|
||||
status_code: 0
|
49
scripts/mitmproxy/tests/data/loginlist_packet_server_0.raw
Normal file
49
scripts/mitmproxy/tests/data/loginlist_packet_server_0.raw
Normal file
|
@ -0,0 +1,49 @@
|
|||
body_length: 1499
|
||||
body_payload:
|
||||
chatDatas:
|
||||
- a: 2
|
||||
c: 4884554736017431
|
||||
i: [69758567]
|
||||
k: [KakaoTalk]
|
||||
l: {attachment: "{\"P\":{\"TP\":\"Feed\",\"ME\":\"KakaoTalk Login Attempt\",\"\
|
||||
SID\":\"plusfriend_tms\",\"DID\":\"https://auth.kakao.com/fa/main.html?close_on_back=true&close_on_completion=true&page=block_try_talk_login&token=%2FdGRqWvV%2F5kbRw%2B%2FD1MEE8DtZEr7AEABKCrv3piI8us%3D\"\
|
||||
,\"SDID\":\"69758567\",\"FW\":false,\"KV\":true,\"AD\":false,\"A\":{\"version\"\
|
||||
:1,\"code\":\"34O1972BXONLsjAcpwrH1ivompzIKPpkfJP8Chtqu7k=\",\"createdAt\"\
|
||||
:1693552120617}},\"C\":{\"TI\":{\"FT\":true,\"TD\":{\"T\":\"KakaoTalk Login
|
||||
Attempt\",\"D\":\"KakaoTalk Login Attempt\\n\\n-Date : Fri Sep 1 16:08 (Korea
|
||||
Standard Time/UTC+9)\\n-Device : SDK_GPHONE_ARM64\\n-IP : 83.171.160.13\\
|
||||
n\\nIf you don't recognize this activity, you may temporarily lock your account
|
||||
to protect it.\\n\\n\"}},\"BUL\":[{\"BU\":{\"T\":\"Lock My Account\",\"HL\"\
|
||||
:null},\"L\":{\"LMO\":\"https://auth.kakao.com/fa/main.html?close_on_back=true&close_on_completion=true&page=block_try_talk_login&token=%2FdGRqWvV%2F5kbRw%2B%2FD1MEE8DtZEr7AEABKCrv3piI8us%3D\"\
|
||||
}}],\"BUT\":1}}", authorId: 69758567, chatId: 4884554736017431, logId: 3125720503930142720,
|
||||
message: KakaoTalk Login Attempt, msgId: 1693552192251, prevId: 3124400535045228544,
|
||||
referer: 0, sendAt: 1693552121, type: 71}
|
||||
ll: 3125720503930142720
|
||||
m: null
|
||||
ml: 3123783401472000000
|
||||
mmr: 0
|
||||
n: 2
|
||||
o: 0
|
||||
p: true
|
||||
s: 3122239915491457024
|
||||
t: PlusChat
|
||||
delChatIds: [4503599627370497]
|
||||
eof: true
|
||||
kc: []
|
||||
lastTokenId: 3125740458250115451
|
||||
lbk: 1693552381
|
||||
ltk: 0
|
||||
mcmRevision: 0
|
||||
minLogId: 3123783401472000000
|
||||
pkToken: 3125722692958571562
|
||||
revision: 28
|
||||
revisionInfo: '[]'
|
||||
rp: !!binary |
|
||||
AQABAAEA
|
||||
sb: 1
|
||||
status: 0
|
||||
userId: 405368740
|
||||
body_type: 0
|
||||
id: 10011
|
||||
loco_command: LOGINLIST
|
||||
status_code: 0
|
34
scripts/mitmproxy/tests/data/screate_loco_packet.yaml
Normal file
34
scripts/mitmproxy/tests/data/screate_loco_packet.yaml
Normal file
|
@ -0,0 +1,34 @@
|
|||
body_length: 1249
|
||||
body_payload:
|
||||
c: 9388354540351878
|
||||
nc: true
|
||||
pi:
|
||||
- {cs: '', ek:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyfkeppzP/qOIUXRqzHt+KjE/sz5tMCwf3Y7Xz+SoDU2kYVTjZS1NWtNMT4gFhiVVsX+uwdwEU0ijgg07zX9GM45HZJoj+Wrb58pNHBUqfksR/oXcX5jBASDh3Oks7Naw2FLdtFdqh1uISzYKA7Ubo0C8ep4N7PVYJdJvsa83nFYbfVi7WTCZJqixla4of+yVaj+XNq/+n8hew8pJEW2hx1szJjqfZSskTTUwASiWBTSdHktnv6y7N8Ls32buAfZu+Oqzw5DRJrWL8iLLx9hkM1T5dPTrc2RcabuG/YiamPaVN9P1iGz2HM9b0fUBFvH8e8REaujlOQVr3cyl/rezdQIDAQAB,
|
||||
pt: 3122418946040168677, sk: odgQ7ds/Pz9AlC7kNSVCLFHZAvRCMUVPzc3R3FZlqAI=, u: 405368327}
|
||||
r:
|
||||
activeMemberIds: [405368740, 405368327]
|
||||
chatId: 9388354540351878
|
||||
lastLogId: 0
|
||||
lastMessage: null
|
||||
lastUpdatedAt: null
|
||||
members:
|
||||
- {accountId: 262855419, countryIso: DE, fullProfileImageUrl: '', linkedServices: '',
|
||||
nickName: furztrocken, originalProfileImageUrl: '', profileImageUrl: '', statusMessage: '',
|
||||
suspended: false, type: -999999, userId: 405368740}
|
||||
- {accountId: 256190398, countryIso: DE, fullProfileImageUrl: '', linkedServices: '',
|
||||
nickName: peterplan, originalProfileImageUrl: '', profileImageUrl: '', statusMessage: '',
|
||||
suspended: false, type: -999999, userId: 405368327}
|
||||
metaRevisions: null
|
||||
newMessageCount: -1
|
||||
o: 1693159158
|
||||
pct: null
|
||||
pushAlert: null
|
||||
type: SDirectChat
|
||||
watermarks: [3122424091315798016, 3122424091315798016]
|
||||
sc: 3122424099724080067
|
||||
status: 0
|
||||
body_type: 0
|
||||
id: 10291
|
||||
loco_command: SCREATE
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/screate_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/screate_packet_client.raw
Normal file
Binary file not shown.
7
scripts/mitmproxy/tests/data/screate_packet_client.yaml
Normal file
7
scripts/mitmproxy/tests/data/screate_packet_client.yaml
Normal file
|
@ -0,0 +1,7 @@
|
|||
body_length: 25
|
||||
body_payload:
|
||||
mi: [405368327]
|
||||
body_type: 0
|
||||
id: 10015
|
||||
loco_command: SCREATE
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/screate_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/screate_packet_server.raw
Normal file
Binary file not shown.
34
scripts/mitmproxy/tests/data/screate_packet_server.yaml
Normal file
34
scripts/mitmproxy/tests/data/screate_packet_server.yaml
Normal file
|
@ -0,0 +1,34 @@
|
|||
body_length: 1249
|
||||
body_payload:
|
||||
c: 9388759392670092
|
||||
nc: true
|
||||
pi:
|
||||
- {cs: '', ek:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAykBFu1jEsa4PW2keOTSAELXE/VCJqGqiYmc9J0NiYAGFZO5R1vcziBg957PJAGL6U3Ut8Y+iNpDyEk8310pswQVZL1r/AJEJL/WPUgyVT0xk40VC72xYGasi/Cao7Cq3ZJo+rk3tCQx7RCGA0GtyosoEvj0yCNI4/NH9TJhkaKXmFgWwp9d42m75TmGHFFbvEkPyFXtcwmNhJH3cgVHAMlMCaspedPHlK8FAdl0jt20VqaScN4VSx7E//9VX2tcMpM/9R80QX/42lD/62r2eC8tO+9jGuJWl0SKOidDXGF4061SleosWZMy2TyS5sk+/Bb777I9GSoJ0bge5wXyaGwIDAQAB,
|
||||
pt: 3124392943946588704, sk: 0PahpeVCuIzcuIYql9HbFGc4J7Tl9CNTsRqj4ByvvCY=, u: 405368327}
|
||||
r:
|
||||
activeMemberIds: [405368740, 405368327]
|
||||
chatId: 9388759392670092
|
||||
lastLogId: 0
|
||||
lastMessage: null
|
||||
lastUpdatedAt: null
|
||||
members:
|
||||
- {accountId: 262855419, countryIso: DE, fullProfileImageUrl: '', linkedServices: '',
|
||||
nickName: furztrocken, originalProfileImageUrl: '', profileImageUrl: '', statusMessage: '',
|
||||
suspended: false, type: -999999, userId: 405368740}
|
||||
- {accountId: 256190398, countryIso: DE, fullProfileImageUrl: '', linkedServices: '',
|
||||
nickName: peterplan, originalProfileImageUrl: '', profileImageUrl: '', statusMessage: '',
|
||||
suspended: false, type: -999999, userId: 405368327}
|
||||
metaRevisions: null
|
||||
newMessageCount: -1
|
||||
o: 1693554522
|
||||
pct: null
|
||||
pushAlert: null
|
||||
type: SDirectChat
|
||||
watermarks: [3125740641498169344, 3125740641498169344]
|
||||
sc: 3125740649914852441
|
||||
status: 0
|
||||
body_type: 0
|
||||
id: 10015
|
||||
loco_command: SCREATE
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/setpk_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/setpk_packet_client.raw
Normal file
Binary file not shown.
13
scripts/mitmproxy/tests/data/setpk_packet_client.yaml
Normal file
13
scripts/mitmproxy/tests/data/setpk_packet_client.yaml
Normal file
|
@ -0,0 +1,13 @@
|
|||
body_length: 1006
|
||||
body_payload: {cs:
|
||||
GT8Z+D5U4FNWyD3EDrJw+udvhP4F27EgP6D7Cx7x4Qqxr9f4ghnHFNURIyZfWtMMfY/9HuNrn1YjAhrcVayoAQ==,
|
||||
ek:
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsfQxCfx1vkzioz8UtBR/YfWaUGHKZUuXyg1Bhbi8fAtUORvX4tDOc5wb+zYfq/Vb3kywuJsnQo8RHQ6pBTcxHNc7Vcl1RDAynnysFdJNqjXgKRN/egcPQXYb0Hi3r1VI4bWH8TGEJm8AEKzq5PtSo46X1SR/e6wOa3IxRv2hFTKT7zdp7ThwuhpVx9GxuqyEcKSHHTTk+z5V10JuO9EKZR8ybuDv9FyxIVR5BVO+RSC4dCpjSZf1h/j6frft4/TfYkr1KlycqWW04fFiEUmADWAsV7BMB+kEofxIQUpCVO8X7Eo3lrKA3neetLZ7rX/e5RS4LbrkGK4AzcNBsSLKawIDAQAB,
|
||||
sd:
|
||||
0ed8pkaGnT1Iy+xFMz0wO0zsqwlb/PkMWA8AyNO0gC1bqLDifdj3KFDtwPksXd6sGo5JyoZKFnR6ffnmCGNUBg==,
|
||||
sk: ZZ5eu1z1LSETep51/j2F31uRpqYh7cJISSs0SHhcpfI=, sr:
|
||||
Cz42sP8mM8FFReM9J7c/BqXjo7FiJcDkLwoQ9I9F9gIrzIUoxohmz8L2pCqB2Hcb4sTG/xkAHnvgMn3Xvou/PhDBh7X0e4ew4oU9rGP+MAkOLL2UqXJy+oI+N/Tw25J1yddZkNrFrC2+HtVyLJjsWgenoKDVKOk/qJo1TBYVLaWiIuQz560hzhv7t+z0807Pj0NihvegLx5EE0B9pGa4jJQL7jtYWPEa4/PxeeE5OIbWes71RqD6PzEecIj9r/DZ8xYoaHwqodQbcmv972CWNh3MJPZhJxuRquxTI1BhF9t0/TVMPp4GzR/s+AM8341lwDRoIdC9ANNk/xMs/0Y6Pg==}
|
||||
body_type: 0
|
||||
id: 10004
|
||||
loco_command: SETPK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/setpk_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/setpk_packet_server.raw
Normal file
Binary file not shown.
6
scripts/mitmproxy/tests/data/setpk_packet_server.yaml
Normal file
6
scripts/mitmproxy/tests/data/setpk_packet_server.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
body_length: 33
|
||||
body_payload: {pt: 3125722692958571562, r: true, status: 0}
|
||||
body_type: 0
|
||||
id: 10004
|
||||
loco_command: SETPK
|
||||
status_code: 0
|
|
@ -0,0 +1,16 @@
|
|||
body_length: 911
|
||||
body_payload:
|
||||
c: 9388354540351878
|
||||
mi: [405368327, 405368740]
|
||||
mp: [3122418946040168677, 3122241999402188784]
|
||||
pt: 3122241999402188784
|
||||
s:
|
||||
QjlDPq44qpmfBcO6+B4H99S6kpwV+Ih7KmoYCd7Y7nXLpWrGG34IYEVgg05RAxA3quwsNskiodMtePciZQ+RAw==
|
||||
sc: 3122424099724080067
|
||||
sk: [
|
||||
XEnm14ddEydSisfjnb8LUO5vUmBd8EGWss6D0XACcgFKhOQ4370KQy+jDWszAjnJYeToKkBlPbToGjRk6efA4QtBqQeXCRoEpH+Z3bwtFjxcLwGRK22L2qOlxF8fjaJUswBkonLv9M2DeyZp7So2EsLQELrdwgggmry1uxnZqblXOG+6vnq3sYsR2ef7L45Ui2gaIUobEq4HgJJQrE8zp61muexPOMv3Nbj1pRduStBhy9MQ3ZZEuNPSg/6/4lpww8blIDT0HJxrOmXMt+rboaq3hSUfTR/fMIA/Xsxk7PM+nRtDhIsAib8EO5Uwl2L+fWv7QO8DQKM/5ivfgp9fXw==,
|
||||
Gxh/DpE4+OozxtQmEbmc3Io/Gq+Ynoqpf4IxhSKYdINdePYR0pgggMRUSgJDUe9AkBd5ZiaconSC3CPA9uHdTSvzmHSvHWZJY6po6SbnPnTrSljdQmb6wcVVKKzPXMokp2p4AghGO+U/fIB5O9c0JDnkqgHgkGjsXbgXCZhaaNZpYAypjL8GZwFqnLBKKjJnWsWISD5LUO/78rD++uOvUCg5r+1cxkLH6+BNiU8pGuuCNMnwuowWwG4a8Q0lJjOSKJkV7wtaGEcYmQ0GDYi6n618N168v9VQvLT7P0Mdxaxvl3/KnkupD0IzZENF0odsWMLyNUcSIMfhrM0J7q4A3A==]
|
||||
body_type: 0
|
||||
id: 10293
|
||||
loco_command: SETSK
|
||||
status_code: 0
|
|
@ -0,0 +1,16 @@
|
|||
body_length: 911
|
||||
body_payload:
|
||||
c: 9388354540351878
|
||||
mi: [405368327, 405368740]
|
||||
mp: [3122418946040168677, 3122241999402188784]
|
||||
pt: 3122241999402188784
|
||||
s:
|
||||
QjlDPq44qpmfBcO6+B4H99S6kpwV+Ih7KmoYCd7Y7nXLpWrGG34IYEVgg05RAxA3quwsNskiodMtePciZQ+RAw==
|
||||
sc: 3122424099724080067
|
||||
sk: [
|
||||
rmf4zi9VAlvp8YpAECfArw2AdQOg4srpQqNr33TQG2O121NBuZMQV5mrj2ZzIgK3gbPcY8RG7mkt2QNxpe/f9cvJ4BapVMvzmzd/F9TqMhQCpR1c2xNa9zIs7+V7uzTNaRp5mLTMfhb1nvIf5DroHJk+ODyXGH+FTDCrpj1sVpW/p2sJvDuGXRWKYQUCFcXf3/6XdJe9uRaKgPvrfVaW1u4IewhtyvzWZamG0yu6zui3xidQ4eLkZN7L6OJ12tyoeUCVSTB3082BM9Kl4jRg49T1l7EMp3eC/Y6Co+H692//As4+WYbpxZaPn3EzvWnKi7Bd/aWiwKaQBA9eNtxGVQ==,
|
||||
Gxh/DpE4+OozxtQmEbmc3Io/Gq+Ynoqpf4IxhSKYdINdePYR0pgggMRUSgJDUe9AkBd5ZiaconSC3CPA9uHdTSvzmHSvHWZJY6po6SbnPnTrSljdQmb6wcVVKKzPXMokp2p4AghGO+U/fIB5O9c0JDnkqgHgkGjsXbgXCZhaaNZpYAypjL8GZwFqnLBKKjJnWsWISD5LUO/78rD++uOvUCg5r+1cxkLH6+BNiU8pGuuCNMnwuowWwG4a8Q0lJjOSKJkV7wtaGEcYmQ0GDYi6n618N168v9VQvLT7P0Mdxaxvl3/KnkupD0IzZENF0odsWMLyNUcSIMfhrM0J7q4A3A==]
|
||||
body_type: 0
|
||||
id: 10293
|
||||
loco_command: SETSK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/setsk_packet_client_0.raw
Normal file
BIN
scripts/mitmproxy/tests/data/setsk_packet_client_0.raw
Normal file
Binary file not shown.
16
scripts/mitmproxy/tests/data/setsk_packet_client_0.yaml
Normal file
16
scripts/mitmproxy/tests/data/setsk_packet_client_0.yaml
Normal file
|
@ -0,0 +1,16 @@
|
|||
body_length: 911
|
||||
body_payload:
|
||||
c: 9388759392670092
|
||||
mi: [405368327, 405368740]
|
||||
mp: [3124392943946588704, 3125722692958571562]
|
||||
pt: 3125722692958571562
|
||||
s:
|
||||
rIX8Be5HIKVLNxIUVvCvW0Lt3EZb7NATRksklDRZicAUbJLNfsCaN7wNtSw9dr4g+A1+04lUOqGSpcPSxRWECQ==
|
||||
sc: 3125740649914852441
|
||||
sk: [
|
||||
ozfnEbdrd0618APqMVe26HG6rcbdULhgUSLt46QE9kzuyIPHxYjH2so0fqjkwt3AYGCENeYuPNxFo3NgGFtDNGMxaMcbbidRd/qpwhX6F6Y5gdf1FSGrhn5l5zTEcx6CRhvyz89WlxV/2lFfujaM2qy3tpSTL1NcUqOW2GWyNpLrFSMSIPOd1O4Ad/+1iHiN9ngRVjZWj2XPoXiaiPHh2RE74k9+n5u+2eVqnMKt5lYpX2K6RUNIr5rPnh0JzNruIA0CLbNTpakkIu0BBKkkAy0JHb9ccDWntCAzfxh3KF9lLy2xX9YxViAh1rkcl2Fysh2SAj69pXlZWdb4LRR6Sg==,
|
||||
LbGCBNct8F2hv6JkGH+VvCPYCgVjaBs8SCHPqtjd4QJsrlA20rZng81hSL5FhcY+BO8bCzfPzWzK9iPLexDA4BT0TLls8Lt7awP7sz0hK62/HDHDit5ln911+x57Y361eQ2lcJqeOF3Qsa58jyAPfEiiNe6unchcWjZv8Ir5HKos7uEKCCynxmwu9i2Cl91ZVNUeIp7DOchZbg5/XS9tbyxUzf4cRVXmRXlQRePqXPuMy1ClmYX3cectY2waPanfDQxtLtHfESIEgkonyvdvndVRIERNI3ZOiKphHkRGiEJwYJ440j6n2pTvchRkmu4VlrziBxcJiYJvodQveWuHJg==]
|
||||
body_type: 0
|
||||
id: 10017
|
||||
loco_command: SETSK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/setsk_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/setsk_packet_server.raw
Normal file
Binary file not shown.
6
scripts/mitmproxy/tests/data/setsk_packet_server.yaml
Normal file
6
scripts/mitmproxy/tests/data/setsk_packet_server.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
body_length: 17
|
||||
body_payload: {status: 0}
|
||||
body_type: 0
|
||||
id: 10017
|
||||
loco_command: SETSK
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/swrite_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/swrite_packet_client.raw
Normal file
Binary file not shown.
9
scripts/mitmproxy/tests/data/swrite_packet_client.yaml
Normal file
9
scripts/mitmproxy/tests/data/swrite_packet_client.yaml
Normal file
|
@ -0,0 +1,9 @@
|
|||
body_length: 196
|
||||
body_payload: {c: 9388759392670092, e: g8M=, m: rNu7YQ==, mid: 1337486070, pt: 3125722692958571562,
|
||||
s:
|
||||
2/V7NhvGlBOJJdnqT9rWB3oTVmNVJeC8k3dKe72Vax2DMneXc43fUmM6xSJme4Kp4WyL1wcjIovZ4t1IbaNhCg==,
|
||||
sc: 3125740649914852441, st: 3125740649914852441, t: 268435457}
|
||||
body_type: 0
|
||||
id: 10018
|
||||
loco_command: SWRITE
|
||||
status_code: 0
|
7
scripts/mitmproxy/tests/data/swrite_packet_server.raw
Normal file
7
scripts/mitmproxy/tests/data/swrite_packet_server.raw
Normal file
|
@ -0,0 +1,7 @@
|
|||
body_length: 73
|
||||
body_payload: {c: 9388759392670092, l: 3125740656103546881, m: 1337486070, prevId: 0,
|
||||
s: 1693554522, status: 0}
|
||||
body_type: 0
|
||||
id: 10018
|
||||
loco_command: SWRITE
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/syncmsg_packet_client.raw
Normal file
BIN
scripts/mitmproxy/tests/data/syncmsg_packet_client.raw
Normal file
Binary file not shown.
6
scripts/mitmproxy/tests/data/syncmsg_packet_client.yaml
Normal file
6
scripts/mitmproxy/tests/data/syncmsg_packet_client.yaml
Normal file
|
@ -0,0 +1,6 @@
|
|||
body_length: 56
|
||||
body_payload: {chatId: 9388759392670092, cnt: 1, cur: 0, max: 3125740656103546881}
|
||||
body_type: 0
|
||||
id: 10019
|
||||
loco_command: SYNCMSG
|
||||
status_code: 0
|
BIN
scripts/mitmproxy/tests/data/syncmsg_packet_server.raw
Normal file
BIN
scripts/mitmproxy/tests/data/syncmsg_packet_server.raw
Normal file
Binary file not shown.
15
scripts/mitmproxy/tests/data/syncmsg_packet_server.yaml
Normal file
15
scripts/mitmproxy/tests/data/syncmsg_packet_server.yaml
Normal file
|
@ -0,0 +1,15 @@
|
|||
body_length: 402
|
||||
body_payload:
|
||||
chatLogs:
|
||||
- {attachment: g8M=, authorId: 405368740, chatId: 9388759392670092, logId: 3125740656103546881,
|
||||
message: rNu7YQ==, msgId: 1337486070, prevId: 0, sInfo: '{"s":"2/V7NhvGlBOJJdnqT9rWB3oTVmNVJeC8k3dKe72Vax2DMneXc43fUmM6xSJme4Kp4WyL1wcjIovZ4t1IbaNhCg==","st":3125740649914852441,"pt":3125722692958571562}',
|
||||
sendAt: 1693554523, type: 268435457}
|
||||
isOK: false
|
||||
jsi: 3125740641498169344
|
||||
lastTokenId: 3125740663907061601
|
||||
minLogId: 3123783401472000000
|
||||
status: 0
|
||||
body_type: 0
|
||||
id: 10019
|
||||
loco_command: SYNCMSG
|
||||
status_code: 0
|
219
scripts/mitmproxy/tests/test_loco_parser.py
Normal file
219
scripts/mitmproxy/tests/test_loco_parser.py
Normal file
|
@ -0,0 +1,219 @@
|
|||
import base64
|
||||
from pathlib import Path
|
||||
from typing import Final
|
||||
|
||||
import pytest
|
||||
import ruamel.yaml
|
||||
from cryptography.hazmat.primitives import hashes, serialization
|
||||
from cryptography.hazmat.primitives.asymmetric import padding
|
||||
from lib.crypto_utils import get_rsa_public_key_pem, rsa_decrypt, rsa_encrypt
|
||||
from lib.loco_parser import LocoEncryptedPacket, LocoPacket, LocoParser
|
||||
|
||||
yaml = ruamel.yaml.YAML(typ="safe", pure=True)
|
||||
|
||||
_LOCO_ENYCRYPTED_PACKETS_RAW: Final = [
|
||||
"blsync_packet_client.raw",
|
||||
"chatonroom_packet_client.raw",
|
||||
"chatonroom_packet_server.raw",
|
||||
"checkin_packet_client.raw",
|
||||
"empty_loco_packet.raw",
|
||||
"getlpk_packet_client.raw",
|
||||
"getlpk_packet_server.raw",
|
||||
"getmem_packet_client.raw",
|
||||
"getmem_packet_server.raw",
|
||||
"getpk_packet_client.raw",
|
||||
"getpk_packet_server.raw",
|
||||
"gettoken_packet_client.raw",
|
||||
"gettoken_packet_server.raw",
|
||||
"loginlist_packet_client.raw",
|
||||
"loginlist_packet_client_0.raw",
|
||||
"screate_packet_client.raw",
|
||||
"screate_packet_server.raw",
|
||||
"setpk_packet_client.raw",
|
||||
"setpk_packet_server.raw",
|
||||
"setsk_packet_client_0.raw",
|
||||
"setsk_packet_server.raw",
|
||||
"swrite_packet_client.raw",
|
||||
"syncmsg_packet_client.raw",
|
||||
"syncmsg_packet_server.raw",
|
||||
]
|
||||
_LOCO_PACKETS_YAML: Final = [
|
||||
"blsync_packet_client.yaml",
|
||||
"chatonroom_packet_client.yaml",
|
||||
"chatonroom_packet_server.yaml",
|
||||
"checkin_packet_client.yaml",
|
||||
"empty_loco_packet.yaml",
|
||||
"getlpk_packet_client.yaml",
|
||||
"getlpk_packet_server.yaml",
|
||||
"getmem_packet_client.yaml",
|
||||
"getmem_packet_server.yaml",
|
||||
"getpk_packet_client.yaml",
|
||||
"getpk_packet_server.yaml",
|
||||
"gettoken_packet_client.yaml",
|
||||
"gettoken_packet_server.yaml",
|
||||
"loginlist_packet_client.yaml",
|
||||
"loginlist_packet_client_0.yaml",
|
||||
"screate_packet_client.yaml",
|
||||
"screate_packet_server.yaml",
|
||||
"setpk_packet_client.yaml",
|
||||
"setpk_packet_server.yaml",
|
||||
"setsk_packet_client_0.yaml",
|
||||
"setsk_packet_server.yaml",
|
||||
"swrite_packet_client.yaml",
|
||||
"syncmsg_packet_client.yaml",
|
||||
"syncmsg_packet_server.yaml",
|
||||
]
|
||||
_IV: Final = 16 * b"\x00"
|
||||
_KAKAOTALK_RSA_PUBLIC_KEY: Final = b"MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA9itiCdmMHYWJXq4GE0Xm\ncYy2/ifVv7lYZgPkqw2hjhhhPRYBGchuWUrWynqK0lQODvRIOyM3Q9khv8CPKss2\nipkBbQ4HHRSmpR346TbMQrTUjUCDSSfyY8Awy+DjGzWfn46uY0sHutP6wbGNhlmq\nc8mLP1mjAePYXE3QL1o1oWxhMqyRNY/RSrYMnqowt4u1/Fb3TVQ99uq6q7GkSWJC\nW+ALzx8eTHqnDUl7VqIS0EfNrHsExaR8m5HubWjfg8ZGX4+NNd9kNEINXTVfAcGH\nZ6XuMT1bdeW/F3IbAslbfH7Uj3LRTQhZ8iDzG19DIQy73s/IajPmQllFJaDdIr/w\nFQIDAQAB"
|
||||
_SHARED_SECRET: Final = b"SHARED_SECRET"
|
||||
|
||||
|
||||
def get_rsa_2048_key_pair():
|
||||
key_pair_pem = b"-----BEGIN PRIVATE KEY-----\nMIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQD2K2IJ2YwdhYle\nrgYTReZxjLb+J9W/uVhmA+SrDaGOGGE9FgEZyG5ZStbKeorSVA4O9Eg7IzdD2SG/\nwI8qyzaKmQFtDgcdFKalHfjpNsxCtNSNQINJJ/JjwDDL4OMbNZ+fjq5jSwe60/rB\nsY2GWapzyYs/WaMB49hcTdAvWjWhbGEyrJE1j9FKtgyeqjC3i7X8VvdNVD326rqr\nsaRJYkJb4AvPHx5MeqcNSXtWohLQR82sewTFpHybke5taN+DxkZfj40132Q0Qg1d\nNV8BwYdnpe4xPVt15b8XchsCyVt8ftSPctFNCFnyIPMbX0MhDLvez8hqM+ZCWUUl\noN0iv/AVAgMBAAECggEAMUOqWZVHZKsSPDfwcE/3V7cU8hUPwlA54CScUR0nvTOk\n1iA+tSW267i99oSCnqgCrjx17hvUlgfwqJrFLAfCEQeg0O3TP58f4IB4jVeRljHx\nLZmBDJVpfUv7l/mYCZx4JurbfHSKBfohPz0kuQPdyFFHxDRQmnK6HHLYHHndrMGK\nzmuH+DigjPy2WIJvuWnMQE6kMnIdncHu6PpuZb8syryYQSWEgXUeUL96CHdhNwNk\nayXWRli6uqVM9yBYPUHU11V7LrZYoFp3T1P81Gd+SVSUfMumS37l18q7fZXbrRr8\nsRWes75cwulp5KZsmsQVBaMbl4Dm3iClDJ5nSqpPIQKBgQD/FnftIGnKuiSX382J\nJdGHzR2XkYHiiL/zZEkLAT+5NjJRS6UNeK5o/M1L6boPycvytzJmH0jV0sC3X4SY\n7XOGXnmJmnzG2zxDrdge+j+KGJ3i0eTdQBE8+kC1NUCZHSEYRN4MZEzHfAHop5NF\nIaHBbDnqHOudomrb4DrIow6/5QKBgQD3DL/1jK4qIrryWuPzN7cpWft6vwHG7t+q\nnf9a9tjZ5gec/I6TvbM0Qj4ok005NjwUI1BhR2OGoSd/Axd59Xx4P+Q4mNPiysRi\n+ItmQlnV3U6l1m2A2iznF1/2127pQT7NUfaDoX9MNSOzLCCGBWqSktP+FhLD8csU\nHWLNelyMcQKBgA1LxoR9pAYFHdMsvzHe3sUNU/WKiBKeviKZn5ULQ58LzCOgpcHG\nAJFIXAsQ67nW8uJ72gyopMtAaPsl52txNQxT8FHT050p4EJG1XUH5jf0gIZKGnvN\n0xgykxze4bcZZZg2Pry2nanoNNFDqtF3p07FrV8ekslspdVAItBCb4phAoGAO9Ta\nqJ1pkMrYe9mHW2Ai++DPBus7gvJXOPsK3Pzrh9ot/dcssJtAy2c/ppQGH9UCt93V\nmbmwYOqmphwZk2/gtT7EBvD8X/C7nzyShjGLkEAIzCEiZBJyzYTbuOxz8AndK9yt\n1zNFoS89dic5uTuWk+j7bo3p/YqRpE15oEoCIAECgYEA6Sj9AJKKdtdhY1xRTJvh\n6r85iW24EVN1K4eZqNLKiu6l7N1zofxfwXlZPOwE5YYN965xVKGHocwL0dk3Js5C\nw5+hHfxWLomnz+c2tv7kkTJTZzKfSR/6gzsdR4kX9hS2bntQdH137RpobvdGcJGe\nh5FwC5Myfu2oxAqtvX6ii9g=\n-----END PRIVATE KEY-----\n"
|
||||
return serialization.load_pem_private_key(key_pair_pem, password=None)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def parser():
|
||||
return LocoParser()
|
||||
|
||||
|
||||
@pytest.fixture(params=_LOCO_PACKETS_YAML)
|
||||
def loco_packet_packet(request):
|
||||
with open(Path(request.param), encoding="utf-8") as packet_yaml:
|
||||
loco_packet_dict = yaml.load(packet_yaml)
|
||||
|
||||
return LocoPacket(
|
||||
loco_packet_dict.get("id"),
|
||||
loco_packet_dict.get("status_code"),
|
||||
loco_packet_dict.get("loco_command"),
|
||||
loco_packet_dict.get("body_type"),
|
||||
loco_packet_dict.get("body_length"),
|
||||
loco_packet_dict.get("body_payload"),
|
||||
)
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def loco_encrypted_packet():
|
||||
return LocoEncryptedPacket(length=0, iv=_IV, payload=b"")
|
||||
|
||||
|
||||
@pytest.fixture(params=zip(_LOCO_ENYCRYPTED_PACKETS_RAW, _LOCO_PACKETS_YAML))
|
||||
def loco_zip(request):
|
||||
return request.param
|
||||
|
||||
|
||||
def test_parse(parser, loco_zip):
|
||||
encrypted_loco_packet_path, loco_packet_yaml_path = loco_zip
|
||||
|
||||
with open(encrypted_loco_packet_path, "rb") as packet_raw, open(
|
||||
loco_packet_yaml_path, encoding="utf-8"
|
||||
) as packet_yaml:
|
||||
encrypted_loco_packet = packet_raw.read()
|
||||
loco_packet_dict = yaml.load(packet_yaml)
|
||||
|
||||
parser.parse(encrypted_loco_packet)
|
||||
|
||||
packet = LocoPacket(
|
||||
loco_packet_dict.get("id"),
|
||||
loco_packet_dict.get("status_code"),
|
||||
loco_packet_dict.get("loco_command"),
|
||||
loco_packet_dict.get("body_type"),
|
||||
loco_packet_dict.get("body_length"),
|
||||
loco_packet_dict.get("body_payload"),
|
||||
)
|
||||
|
||||
assert parser.loco_packet.get_packet_as_dict() == packet.get_packet_as_dict()
|
||||
|
||||
|
||||
def test_inject_public_key(parser, loco_encrypted_packet):
|
||||
rsa_key_pair = get_rsa_2048_key_pair()
|
||||
|
||||
with open(Path("encrypted_screate_packet_with_mitm_key.raw"), "rb") as packet_raw:
|
||||
encrypted_screate_packet_with_mitm_key = packet_raw.read()
|
||||
|
||||
with open(Path("screate_loco_packet.yaml"), encoding="utf-8") as packet_yaml:
|
||||
screate_dict = yaml.load(packet_yaml)
|
||||
|
||||
original_public_key = screate_dict.get("body_payload").get("pi")[0].get("ek")
|
||||
assert original_public_key
|
||||
|
||||
screate_packet = LocoPacket(
|
||||
screate_dict.get("id"),
|
||||
screate_dict.get("status_code"),
|
||||
screate_dict.get("loco_command"),
|
||||
screate_dict.get("body_type"),
|
||||
screate_dict.get("body_length"),
|
||||
screate_dict.get("body_payload"),
|
||||
)
|
||||
|
||||
parser.loco_packet = screate_packet
|
||||
assert parser.loco_packet
|
||||
|
||||
parser.loco_encrypted_packet = loco_encrypted_packet
|
||||
assert parser.loco_encrypted_packet
|
||||
|
||||
assert parser.inject_public_key(rsa_key_pair) == (
|
||||
original_public_key.encode(),
|
||||
encrypted_screate_packet_with_mitm_key,
|
||||
)
|
||||
|
||||
|
||||
def test_get_shared_secret(parser):
|
||||
rsa_key_pair = get_rsa_2048_key_pair()
|
||||
|
||||
with open(
|
||||
Path("setsk_loco_packet_sk_enc_with_mitm_key.yaml"), encoding="utf-8"
|
||||
) as packet_yaml:
|
||||
setsk_dict = yaml.load(packet_yaml)
|
||||
|
||||
encrypted_shared_secret = setsk_dict.get("body_payload").get("sk")[0]
|
||||
decrypted_shared_secret = rsa_decrypt(
|
||||
base64.b64decode(encrypted_shared_secret), rsa_key_pair
|
||||
)
|
||||
|
||||
assert decrypted_shared_secret == _SHARED_SECRET
|
||||
|
||||
setsk_packet = LocoPacket(
|
||||
setsk_dict.get("id"),
|
||||
setsk_dict.get("status_code"),
|
||||
setsk_dict.get("loco_command"),
|
||||
setsk_dict.get("body_type"),
|
||||
setsk_dict.get("body_length"),
|
||||
setsk_dict.get("body_payload"),
|
||||
)
|
||||
|
||||
parser.loco_packet = setsk_packet
|
||||
assert parser.loco_packet
|
||||
|
||||
assert parser.get_shared_secret(rsa_key_pair) == decrypted_shared_secret
|
||||
|
||||
|
||||
def test_encrypt_shared_secret(parser, loco_encrypted_packet):
|
||||
with open(Path("encrypted_setsk_packet.raw"), "rb") as packet_raw:
|
||||
encrypted_setsk_packet = packet_raw.read()
|
||||
|
||||
with open(
|
||||
Path("setsk_loco_packet_sk_enc_with_mitm_key.yaml"), encoding="utf-8"
|
||||
) as packet_yaml:
|
||||
setsk_dict = yaml.load(packet_yaml)
|
||||
|
||||
setsk_packet = LocoPacket(
|
||||
setsk_dict.get("id"),
|
||||
setsk_dict.get("status_code"),
|
||||
setsk_dict.get("loco_command"),
|
||||
setsk_dict.get("body_type"),
|
||||
setsk_dict.get("body_length"),
|
||||
setsk_dict.get("body_payload"),
|
||||
)
|
||||
|
||||
parser.loco_packet = setsk_packet
|
||||
assert parser.loco_packet
|
||||
|
||||
parser.loco_encrypted_packet = loco_encrypted_packet
|
||||
assert parser.loco_encrypted_packet
|
||||
|
||||
assert (
|
||||
parser.encrypt_shared_secret(_SHARED_SECRET, _KAKAOTALK_RSA_PUBLIC_KEY)
|
||||
== encrypted_setsk_packet
|
||||
)
|
Loading…
Reference in New Issue
Block a user