Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 82
Branch analysis from position: 82
1 jumps found. (Code = 42) Position 1 = 130
Branch analysis from position: 130
1 jumps found. (Code = 62) Position 1 = -2
Found catch point at position: 66
Branch analysis from position: 66
2 jumps found. (Code = 107) Position 1 = 67, Position 2 = -2
Branch analysis from position: 67
2 jumps found. (Code = 43) Position 1 = 79, Position 2 = 82
Branch analysis from position: 79
1 jumps found. (Code = 42) Position 1 = 130
Branch analysis from position: 130
Branch analysis from position: 82
Found catch point at position: 114
Branch analysis from position: 114
2 jumps found. (Code = 107) Position 1 = 115, Position 2 = -2
Branch analysis from position: 115
2 jumps found. (Code = 43) Position 1 = 127, Position 2 = 130
Branch analysis from position: 127
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 130
filename: /in/k4c0tj
function name: (null)
number of ops: 132
compiled vars: !0 = $private_key, !1 = $public_key, !2 = $in, !3 = $C, !4 = $D, !5 = $start, !6 = $end, !7 = $out, !8 = $Corig, !9 = $ex, !10 = $Dorig
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
98 0 E > ASSIGN !0, '-----BEGIN+RSA+PRIVATE+KEY-----%0AMIIEowIBAAKCAQEAyaTgTt53ph3p5GHgwoGWwz5hRfWXSQA08NCOwe0FEgALWos9%0AGCjNFCd723nCHxBtN1qd74MSh%2FuN88JPIbwxKheDp4kxo4YMN5trPaF0e9G6Bj1N%0A02HnanxFLW%2BgmLbgYO%2FSZYfWF%2FM8yLBcu5Y1Ot0ZxDDDXS9wIQTtBE0ne3YbxgZJ%0AAZTU5XqyQ1DxdzYyC5lF6yBaR5UQtCYTnXAApVRuUI2Sd6L1E2vl9bSBumZ5IpNx%0AkRnAwIMjeTJB%2F0AIELh0mE5vwdihOCbdV6alUyhKC1%2B1w%2FFW6HWcp%2FJG1kKC8DPI%0AidZ78Bbqv9YFzkAbNni5eSBOsXVBKG78Zsc8owIDAQABAoIBAF22jLDa34yKdns3%0Aqfd7to%2BC3D5hRzAcMn6Azvf9qc%2BVybEI6RnjTHxDZWK5EajSP4%2FsQ15e8ivUk0Jo%0AWdJ53feL%2BhnQvwsab28gghSghrxM2kGwGA1XgO%2BSVawqJt8SjvE%2BQ%2B%2F%2F01ZKK0Oy%0AA0cDJjX3L9RoPUN%2FmoMeAPFw0hqkFEhm72GSVCEY1eY%2BcOXmL3icxnsnlUD%2F%2FSS9%0Aq33RxF2y5oiW1edqcRqhW%2F7L1yYMbxHFUcxWh8WUwjn1AAhoCOUzF8ZB%2B0X%2FPPh%2B%0A1nYoq6xwqL0ZKDwrQ8SDhW%2FrNDLeO9gic5rl7EetRQRbFvsZ40AdsX2wU%2BlWFUkB%0A42AjuoECgYEA5z%2FCXqDFfZ8MXCPAOeui8y5HNDtu30aR%2BHOXsBDnRI8huXsGND04%0AFfmXR7nkghr08fFVDmE4PeKUk810YJb%2BIAJo8wrOZ0682n6yEMO58omqKin%2BiIUV%0ArPXLSLo5CChrqw2J4vgzolzPw3N5I8FJdLomb9FkrV84H%2BIviPIylyECgYEA3znw%0AAG29QX6ATEfFpGVOcogorHCntd4niaWCq5ne5sFL%2BEwLeVc1zD9yj1axcDelICDZ%0AxCZynU7kDnrQcFkT0bjH%2FgC8Jk3v7XT9l1UDDqC1b7rm%2FX5wFIZ%2FrmNa1rVZhL1o%0A%2FtKx5tvM2syJ1q95v7NdygFIEIW%2BqbIKbc6Wz0MCgYBsUZdQD%2Bqx%2FxAhELX364I2%0AepTryHMUrs%2BtGygQVrqdiJX5dcDgM1TUJkdQV6jLsKjPs4Vt6OgZRMrnuLMsk02R%0A3M8gGQ25ok4f4nyyEZxGGWnVujn55KzUiYWhGWmhgp18UCkoYa59%2FQ9ss%2BgocV9h%0AB9j9Q43vD80QUjiF4z0DQQKBgC7XQX1VibkMim93QAnXGDcAS0ij%2Bw02qKVBjcHk%0Ab9mMBhz8GAxGOIu7ZJafYmxhwMyVGB0I1FQeEczYCJUKnBYN6Clsjg6bnBT%2Fz5bJ%0Ax%2FJx1qCzX3Uh6vLjpjc5sf4L39Tyye1u2NXQmZPwB5x9BdcsFConSq%2Fs4K1LJtUT%0A3KFxAoGBANGcQ8nObi3m4wROyKrkCWcWxFFMnpwxv0pW727Hn9wuaOs4UbesCnwm%0ApcMTfzGUDuzYXCtAq2pJl64HG6wsdkWmjBTJEpm6b9ibOBN3qFV2zQ0HyyKlMWxI%0AuVSj9gOo61hF7UH9XB6R4HRdlpBOuIbgAWZ46dkj9%2FHM9ovdP0Iy%0A-----END+RSA+PRIVATE+KEY-----'
126 1 ASSIGN !1, '-----BEGIN+PUBLIC+KEY-----%0AMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyaTgTt53ph3p5GHgwoGW%0Awz5hRfWXSQA08NCOwe0FEgALWos9GCjNFCd723nCHxBtN1qd74MSh%2FuN88JPIbwx%0AKheDp4kxo4YMN5trPaF0e9G6Bj1N02HnanxFLW%2BgmLbgYO%2FSZYfWF%2FM8yLBcu5Y1%0AOt0ZxDDDXS9wIQTtBE0ne3YbxgZJAZTU5XqyQ1DxdzYyC5lF6yBaR5UQtCYTnXAA%0ApVRuUI2Sd6L1E2vl9bSBumZ5IpNxkRnAwIMjeTJB%2F0AIELh0mE5vwdihOCbdV6al%0AUyhKC1%2B1w%2FFW6HWcp%2FJG1kKC8DPIidZ78Bbqv9YFzkAbNni5eSBOsXVBKG78Zsc8%0AowIDAQAB%0A-----END+PUBLIC+KEY-----'
136 2 ASSIGN !2, 'This+is+a+test+message%21'
137 3 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'encrypt'
4 SEND_VAR !2
5 SEND_VAR !1
6 DO_FCALL 0 $14
7 FETCH_LIST_R $15 $14, 0
8 ASSIGN !3, $15
9 FETCH_LIST_R $17 $14, 1
10 ASSIGN !4, $17
11 FREE $14
138 12 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cmicrotime'
13 SEND_VAL_EX <true>
14 DO_FCALL 0 $19
15 ASSIGN ~20 !6, $19
16 ASSIGN !5, ~20
139 17 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'decrypt'
18 SEND_VAR !3
19 SEND_VAR !4
20 SEND_VAR !0
21 DO_FCALL 0 $22
22 ASSIGN !7, $22
140 23 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cmicrotime'
24 SEND_VAL_EX <true>
25 DO_FCALL 0 $24
26 ASSIGN !6, $24
142 27 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cvar_dump'
28 SEND_VAR_EX !2
29 SEND_VAR_EX !7
30 DO_FCALL 0
143 31 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cvar_dump'
32 SUB ~27 !6, !5
33 SEND_VAL_EX ~27
34 DO_FCALL 0
146 35 ASSIGN !8, !4
147 36 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Chex2bin'
37 SEND_VAR_EX !3
38 DO_FCALL 0 $30
39 ASSIGN !3, $30
148 40 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'intToChr'
149 41 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'chrToInt'
42 FETCH_DIM_R ~33 !3, 0
43 SEND_VAL ~33
44 DO_FCALL 0 $34
45 BW_XOR ~35 $34, 255
46 SEND_VAL ~35
148 47 DO_FCALL 0 $36
48 ASSIGN_DIM !3, 0
149 49 OP_DATA $36
151 50 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cbin2hex'
51 SEND_VAR_EX !3
52 DO_FCALL 0 $37
53 ASSIGN !3, $37
153 54 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cmicrotime'
55 SEND_VAL_EX <true>
56 DO_FCALL 0 $39
57 ASSIGN ~40 !6, $39
58 ASSIGN !5, ~40
155 59 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'decrypt'
60 SEND_VAR !3
61 SEND_VAR !4
62 SEND_VAR !0
63 DO_FCALL 0 $42
64 ASSIGN !7, $42
65 > JMP ->82
156 66 E > > CATCH last 'Exception'
157 67 > INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cmicrotime'
68 SEND_VAL_EX <true>
69 DO_FCALL 0 $44
70 ASSIGN !6, $44
158 71 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cvar_dump'
72 SUB ~46 !6, !5
73 SEND_VAL_EX ~46
74 DO_FCALL 0
159 75 INIT_METHOD_CALL !9, 'getMessage'
76 DO_FCALL 0 $48
77 IS_IDENTICAL $48, 'Invalid+MAC'
78 > JMPZ ~49, ->82
160 79 > ECHO 'Got+the+expected+error+message.+No+RSA+hints+given.'
80 FETCH_CONSTANT ~50 'ParagonIE%5CBlogExampleCode%5CPHP_EOL'
81 ECHO ~50
163 82 > ASSIGN !3, !8
166 83 ASSIGN !10, !4
167 84 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Chex2bin'
85 SEND_VAR_EX !4
86 DO_FCALL 0 $53
87 ASSIGN !4, $53
168 88 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'intToChr'
169 89 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'chrToInt'
90 FETCH_DIM_R ~56 !4, 0
91 SEND_VAL ~56
92 DO_FCALL 0 $57
93 BW_XOR ~58 $57, 255
94 SEND_VAL ~58
168 95 DO_FCALL 0 $59
96 ASSIGN_DIM !4, 0
169 97 OP_DATA $59
171 98 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cbin2hex'
99 SEND_VAR_EX !4
100 DO_FCALL 0 $60
101 ASSIGN !4, $60
173 102 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cmicrotime'
103 SEND_VAL_EX <true>
104 DO_FCALL 0 $62
105 ASSIGN ~63 !6, $62
106 ASSIGN !5, ~63
175 107 INIT_STATIC_METHOD_CALL 'ParagonIE%5CBlogExampleCode%5CRSAPKCS1v15', 'decrypt'
108 SEND_VAR !3
109 SEND_VAR !4
110 SEND_VAR !0
111 DO_FCALL 0 $65
112 ASSIGN !7, $65
113 > JMP ->130
176 114 E > > CATCH last 'Exception'
177 115 > INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cmicrotime'
116 SEND_VAL_EX <true>
117 DO_FCALL 0 $67
118 ASSIGN !6, $67
178 119 INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cvar_dump'
120 SUB ~69 !6, !5
121 SEND_VAL_EX ~69
122 DO_FCALL 0
179 123 INIT_METHOD_CALL !9, 'getMessage'
124 DO_FCALL 0 $71
125 IS_IDENTICAL $71, 'Invalid+MAC'
126 > JMPZ ~72, ->130
180 127 > ECHO 'Got+the+expected+error+message.+No+RSA+hints+given.'
128 FETCH_CONSTANT ~73 'ParagonIE%5CBlogExampleCode%5CPHP_EOL'
129 ECHO ~73
183 130 > ASSIGN !4, !10
184 131 > RETURN 1
Class ParagonIE\BlogExampleCode\RSAPKCS1v15:
Function encrypt:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/k4c0tj
function name: encrypt
number of ops: 48
compiled vars: !0 = $message, !1 = $publicKey, !2 = $key, !3 = $C, !4 = $iv, !5 = $cipher, !6 = $mac, !7 = $D
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
13 0 E > RECV !0
1 RECV !1
15 2 INIT_FCALL 'random_bytes'
3 SEND_VAL 32
4 DO_ICALL $8
5 ASSIGN !2, $8
16 6 ASSIGN !3, ''
19 7 INIT_FCALL_BY_NAME 'openssl_public_encrypt'
8 SEND_VAR_EX !2
9 SEND_VAR_EX !3
10 SEND_VAR_EX !1
11 DO_FCALL 0
21 12 INIT_FCALL 'random_bytes'
13 SEND_VAL 16
14 DO_ICALL $12
15 ASSIGN !4, $12
22 16 INIT_FCALL_BY_NAME 'openssl_encrypt'
23 17 SEND_VAR_EX !0
24 18 SEND_VAL_EX 'aes-256-ctr'
23 19 SEND_VAR_EX !2
26 20 FETCH_CONSTANT ~14 'ParagonIE%5CBlogExampleCode%5COPENSSL_RAW_DATA'
21 SEND_VAL_EX ~14
23 22 SEND_VAR_EX !4
22 23 DO_FCALL 0 $15
24 ASSIGN !5, $15
29 25 INIT_FCALL 'hash_hmac'
26 SEND_VAL 'sha256'
27 CONCAT ~17 !4, !5
28 SEND_VAL ~17
29 SEND_VAR !2
30 SEND_VAL <true>
31 DO_ICALL $18
32 ASSIGN !6, $18
30 33 CONCAT ~20 !6, !4
34 CONCAT ~21 ~20, !5
35 ASSIGN !7, ~21
31 36 INIT_FCALL 'bin2hex'
37 SEND_VAR !3
38 DO_ICALL $23
39 INIT_ARRAY ~24 $23
40 INIT_FCALL 'bin2hex'
41 SEND_VAR !7
42 DO_ICALL $25
43 ADD_ARRAY_ELEMENT ~24 $25
44 VERIFY_RETURN_TYPE ~24
45 > RETURN ~24
32 46* VERIFY_RETURN_TYPE
47* > RETURN null
End of function encrypt
Function decrypt:
Finding entry points
Branch analysis from position: 0
2 jumps found. (Code = 43) Position 1 = 64, Position 2 = 68
Branch analysis from position: 64
1 jumps found. (Code = 108) Position 1 = -2
Branch analysis from position: 68
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/k4c0tj
function name: decrypt
number of ops: 80
compiled vars: !0 = $CHex, !1 = $DHex, !2 = $privateKey, !3 = $kPrime, !4 = $C, !5 = $D, !6 = $k, !7 = $success, !8 = $key, !9 = $mac, !10 = $iv, !11 = $cipher, !12 = $recalc
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
34 0 E > RECV !0
1 RECV !1
2 RECV !2
36 3 INIT_FCALL 'random_bytes'
4 SEND_VAL 32
5 DO_ICALL $13
6 ASSIGN !3, $13
37 7 INIT_FCALL 'hex2bin'
8 SEND_VAR !0
9 DO_ICALL $15
10 ASSIGN !4, $15
38 11 INIT_FCALL 'hex2bin'
12 SEND_VAR !1
13 DO_ICALL $17
14 ASSIGN !5, $17
39 15 ASSIGN !6, ''
40 16 INIT_FCALL_BY_NAME 'openssl_private_decrypt'
17 SEND_VAR_EX !4
18 SEND_VAR_EX !6
19 SEND_VAR_EX !2
20 DO_FCALL 0 $20
21 ASSIGN !7, $20
43 22 INIT_STATIC_METHOD_CALL 'cswap32'
23 SEND_VAR_EX !6
24 CAST 6 ~22 !3
25 SEND_VAL_EX ~22
26 SEND_VAR_EX !7
27 DO_FCALL 0 $23
28 ASSIGN !8, $23
45 29 INIT_FCALL 'mb_substr'
30 SEND_VAR !5
31 SEND_VAL 0
32 SEND_VAL 32
33 SEND_VAL '8bit'
34 DO_ICALL $25
35 ASSIGN !9, $25
46 36 INIT_FCALL 'mb_substr'
37 SEND_VAR !5
38 SEND_VAL 32
39 SEND_VAL 16
40 SEND_VAL '8bit'
41 DO_ICALL $27
42 ASSIGN !10, $27
47 43 INIT_FCALL 'mb_substr'
44 SEND_VAR !5
45 SEND_VAL 48
46 SEND_VAL null
47 SEND_VAL '8bit'
48 DO_ICALL $29
49 ASSIGN !11, $29
48 50 INIT_FCALL 'hash_hmac'
51 SEND_VAL 'sha256'
52 CONCAT ~31 !10, !11
53 SEND_VAL ~31
54 SEND_VAR !8
55 SEND_VAL <true>
56 DO_ICALL $32
57 ASSIGN !12, $32
49 58 INIT_FCALL 'hash_equals'
59 SEND_VAR !12
60 SEND_VAR !9
61 DO_ICALL $34
62 BOOL_NOT ~35 $34
63 > JMPZ ~35, ->68
50 64 > NEW $36 'Exception'
65 SEND_VAL_EX 'Invalid+MAC'
66 DO_FCALL 0
67 > THROW 0 $36
52 68 > INIT_FCALL_BY_NAME 'openssl_decrypt'
53 69 SEND_VAR_EX !11
54 70 SEND_VAL_EX 'aes-256-ctr'
53 71 SEND_VAR_EX !8
56 72 FETCH_CONSTANT ~38 'ParagonIE%5CBlogExampleCode%5COPENSSL_RAW_DATA'
73 SEND_VAL_EX ~38
53 74 SEND_VAR_EX !10
52 75 DO_FCALL 0 $39
53 76 VERIFY_RETURN_TYPE $39
77 > RETURN $39
59 78* VERIFY_RETURN_TYPE
79* > RETURN null
End of function decrypt
Function cswap32:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 42) Position 1 = 37
Branch analysis from position: 37
2 jumps found. (Code = 44) Position 1 = 39, Position 2 = 20
Branch analysis from position: 39
1 jumps found. (Code = 62) Position 1 = -2
Branch analysis from position: 20
2 jumps found. (Code = 44) Position 1 = 39, Position 2 = 20
Branch analysis from position: 39
Branch analysis from position: 20
filename: /in/k4c0tj
function name: cswap32
number of ops: 51
compiled vars: !0 = $A, !1 = $B, !2 = $success, !3 = $mask, !4 = $C, !5 = $i
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
70 0 E > RECV !0
1 RECV !1
2 RECV !2
72 3 INIT_FCALL 'str_repeat'
4 SEND_VAL '%00'
5 SEND_VAL 32
6 DO_ICALL $6
7 ASSIGN_OP 8 !0, $6
73 8 INIT_FCALL 'str_repeat'
9 SEND_VAL '%00'
10 SEND_VAL 32
11 DO_ICALL $8
12 ASSIGN_OP 8 !1, $8
75 13 CAST 4 ~10 !2
14 SUB ~11 ~10, 1
15 BW_AND ~12 ~11, 255
16 ASSIGN !3, ~12
77 17 ASSIGN !4, ''
78 18 ASSIGN !5, 0
19 > JMP ->37
79 20 > INIT_STATIC_METHOD_CALL 'intToChr'
80 21 INIT_STATIC_METHOD_CALL 'chrToInt'
22 CHECK_FUNC_ARG
23 FETCH_DIM_FUNC_ARG $16 !0, !5
24 SEND_FUNC_ARG $16
25 DO_FCALL 0 $17
26 INIT_STATIC_METHOD_CALL 'chrToInt'
27 CHECK_FUNC_ARG
28 FETCH_DIM_FUNC_ARG $18 !1, !5
29 SEND_FUNC_ARG $18
30 DO_FCALL 0 $19
31 BW_XOR ~20 $17, $19
32 BW_AND ~21 !3, ~20
33 SEND_VAL_EX ~21
79 34 DO_FCALL 0 $22
80 35 ASSIGN_OP 8 !4, $22
78 36 PRE_INC !5
37 > IS_SMALLER !5, 32
38 > JMPNZ ~25, ->20
83 39 > INIT_NS_FCALL_BY_NAME 'ParagonIE%5CBlogExampleCode%5Cmb_substr'
40 BW_XOR ~26 !0, !4
41 SEND_VAL_EX ~26
42 SEND_VAL_EX 0
43 SEND_VAL_EX 32
44 SEND_VAL_EX '8bit'
45 DO_FCALL 0 $27
46 CAST 6 ~28 $27
47 VERIFY_RETURN_TYPE ~28
48 > RETURN ~28
84 49* VERIFY_RETURN_TYPE
50* > RETURN null
End of function cswap32
Function chrtoint:
Finding entry points
Branch analysis from position: 0
1 jumps found. (Code = 62) Position 1 = -2
filename: /in/k4c0tj
function name: chrToInt
number of ops: 12
compiled vars: !0 = $chr, !1 = $chunk
line #* E I O op fetch ext return operands
-------------------------------------------------------------------------------------
86 0 E > RECV !0
88 1 INIT_FCALL Generated using Vulcan Logic Dumper, using php 8.0.0