From 9b11341ffdac7f364659b8906f7cd1e308ba6683 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=A1=D0=B5=D1=80=D0=B3=D0=B5=D0=B9=20=D0=9F=D1=80=D0=BE?= =?UTF-8?q?=D1=85=D0=BE=D1=80=D0=BE=D0=B2?= Date: Wed, 3 Oct 2018 22:04:15 +0200 Subject: [PATCH] Simplify obfuscated handshake parsing --- src/mtp_obfuscated.erl | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/mtp_obfuscated.erl b/src/mtp_obfuscated.erl index 740af94..8a136be 100644 --- a/src/mtp_obfuscated.erl +++ b/src/mtp_obfuscated.erl @@ -66,17 +66,15 @@ from_header(Header, Secret) when byte_size(Header) == 64 -> {DecKey, DecIV} = init_up_decrypt(Header, Secret), St = new(EncKey, EncIV, DecKey, DecIV), {<<_:56/binary, Bin1:8/binary, _/binary>>, St1} = decrypt(Header, St), - <> = Header, - NewHeader = <>, - case NewHeader of - <<_:56/binary, 16#ef, 16#ef, 16#ef, 16#ef, _/binary>> -> - DcId = get_dc(NewHeader), + case Bin1 of + <<16#ef, 16#ef, 16#ef, 16#ef, _/binary>> -> + DcId = get_dc(Bin1), {ok, DcId, mtp_abridged, St1}; - <<_:56/binary, 16#ee, 16#ee, 16#ee, 16#ee, _/binary>> -> - DcId = get_dc(NewHeader), + <<16#ee, 16#ee, 16#ee, 16#ee, _/binary>> -> + DcId = get_dc(Bin1), {ok, DcId, mtp_intermediate, St1}; - <<_:56/binary, 16#dd, 16#dd, 16#dd, 16#dd, _/binary>> -> - DcId = get_dc(NewHeader), + <<16#dd, 16#dd, 16#dd, 16#dd, _/binary>> -> + DcId = get_dc(Bin1), {ok, DcId, mtp_secure, St1}; _ -> metric:count_inc([?APP, protocol_error, total], 1, #{labels => [unknown]}), @@ -96,7 +94,7 @@ init_up_decrypt(Bin, Secret) -> KeyHash = crypto:hash('sha256', <>), {KeyHash, IV}. -get_dc(<<_:60/binary, DcId:16/signed-little-integer, _/binary>>) -> +get_dc(<<_:4/binary, DcId:16/signed-little-integer, _/binary>>) -> DcId.