1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463
| dseg:0000 dseg segment para public 'DATA' use16 dseg:0000 assume cs:dseg dseg:0000 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0010 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0020 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0030 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0040 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0050 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0060 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0070 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0080 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0090 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:00A0 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:00B0 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:00C0 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:00D0 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:00E0 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:00F0 db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 dseg:0100 aShowMeYourFlag db 0Dh,0Ah dseg:0102 db 'Show me your flag: $' dseg:0116 aCongradulatuon db 0Dh,0Ah dseg:0118 db 'Congradulatuons! $' dseg:012A aWrong db 0Dh,0Ah dseg:012C db 'Wrong! $' dseg:0134 aNctf2024nctf db 0Ch,'NCTf2024nctF' dseg:0141 db 26h, 7Ch, 3Eh, 0Dh, 3Ch, 88h, 54h, 83h, 0Eh, 3Bh,0B8h, 99h, 1Bh dseg:014E db 9Bh,0E5h, 23h, 43h,0C5h, 80h, 45h, 5Bh, 9Ah, 29h, 24h, 38h,0A9h dseg:015B db 5Ch,0CBh, 7Ah,0E5h, 93h, 73h, 0Eh, 70h, 6Dh, 7Ch, 31h, 2Bh, 8Ch dseg:0168 input db 40h, 0, 24h, 24h, 24h, 24h, 24h, 24h dseg:0168 dseg:0168 dseg:0170 db 24h, 24h, 24h, 24h, 24h, 24h, 24h, 24h dseg:0178 db 24h, 24h, 24h, 24h, 24h, 24h, 24h, 24h dseg:0180 db 24h, 24h, 24h, 24h, 24h, 24h, 24h, 24h dseg:0188 db 24h, 24h, 24h, 24h, 24h, 24h, 24h, 24h dseg:0190 db 24h, 24h, 24h, 24h, 24h, 24h, 24h, 24h dseg:0198 db 24h, 24h, 24h, 24h, 24h, 24h, 24h, 24h dseg:01A0 db 24h, 24h, 24h, 24h, 24h, 24h, 24h, 24h dseg:01A8 db 24h, 24h, 0, 0, 0, 0, 0, 0 dseg:01A8 dseg ends dseg:01A8 seg001:0000 seg001:0000 seg001:0000 seg001:0000 seg001 segment byte stack 'STACK' use16 seg001:0000 assume cs:seg001 seg001:0000 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing seg001:0000 db 300h dup(0) seg001:0000 seg001 ends seg001:0000 seg002:0000 seg002:0000 seg002:0000 seg002:0000 seg002:0000 seg002 segment byte public 'CODE' use16 seg002:0000 assume cs:seg002 seg002:0000 assume es:nothing, ss:seg001, ds:nothing, fs:nothing, gs:nothing seg002:0000 seg002:0000 public start seg002:0000 start: seg002:0000 mov ax, seg dseg seg002:0003 mov ds, ax seg002:0005 assume ds:dseg seg002:0005 mov es, ax seg002:0007 assume es:dseg seg002:0007 xor ax, ax seg002:0009 test ax, ax seg002:000B jnz short near ptr unk_104BF seg002:000D jz short loc_104C0 seg002:000D seg002:000F unk_104BF db 0E8h seg002:0010 seg002:0010 seg002:0010 loc_104C0: seg002:0010 mov ah, 9 seg002:0012 lea dx, aShowMeYourFlag seg002:0016 int 21h seg002:0016 seg002:0018 mov ah, 0Ah seg002:001A lea dx, input seg002:001E int 21h seg002:001E seg002:0020 call addr1 seg002:0025 lea bx, input seg002:0029 inc bx seg002:002A cmp byte ptr [bx], 26h seg002:002D jz short loc_104E2 seg002:002F jmp loc_105B7 seg002:0032 seg002:0032 seg002:0032 loc_104E2: seg002:0032 xor si, si seg002:0034 xor di, di seg002:0036 xor cx, cx seg002:0038 mov cx, 100h seg002:003B seg002:003B loc_104EB: seg002:003B push di seg002:003C inc di seg002:003D loop loc_104EB seg002:003F seg002:003F loc_104EF: seg002:003F pop bx seg002:0040 call addr3 seg002:0045 mov bx, si seg002:0047 mov [si+0], bl seg002:004B inc si seg002:004C cmp si, 100h seg002:0050 jnb short loc_10504 seg002:0052 jmp short loc_104EF seg002:0054 seg002:0054 seg002:0054 loc_10504: seg002:0054 xor si, si seg002:0056 xor di, di seg002:0058 mov bx, 134h seg002:005B mov cl, [bx] seg002:005D seg002:005D loc_1050D: seg002:005D mov dl, [si+0] seg002:0061 add di, dx seg002:0063 mov ax, si seg002:0065 div cl seg002:0067 mov al, ah seg002:0069 xor ah, ah seg002:006B mov bx, 135h seg002:006E add bx, ax seg002:0070 mov al, [bx] seg002:0072 push ax seg002:0073 call addr5 seg002:0078 shl ax, 1 seg002:007A shl ax, 1 seg002:007C shl ax, 1 seg002:007E shl ax, 1 seg002:0080 shl ax, 1 seg002:0082 shl ax, 1 seg002:0084 mov dx, ax seg002:0086 pop ax seg002:0087 push dx seg002:0088 call addr4 seg002:008D shr ax, 1 seg002:008F shr ax, 1 seg002:0091 shr ax, 1 seg002:0093 shr ax, 1 seg002:0095 shr ax, 1 seg002:0097 shr ax, 1 seg002:0099 pop dx seg002:009A or al, dl seg002:009C add di, ax seg002:009E and di, 0FFh seg002:00A2 mov al, [si+0] seg002:00A6 mov dl, [di+0] seg002:00AA xchg al, dl seg002:00AC mov [di+0], dl seg002:00B0 mov [si+0], al seg002:00B4 inc si seg002:00B5 cmp si, 100h seg002:00B9 jb short loc_1050D seg002:00BB xor cx, cx seg002:00BD mov bx, 169h seg002:00C0 mov cl, [bx] seg002:00C2 inc bx seg002:00C3 mov si, bx seg002:00C5 xor bx, bx seg002:00C7 xor dx, dx seg002:00C9 xor ax, ax seg002:00CB test ax, ax seg002:00CD jnz short near ptr unk_10581 seg002:00CF jz short loc_10582 seg002:00CF seg002:00D1 unk_10581 db 0E8h seg002:00D2 seg002:00D2 seg002:00D2 loc_10582: seg002:00D2 seg002:00D2 inc bl seg002:00D4 mov al, [bx+0] seg002:00D8 add dl, al seg002:00DA push dx seg002:00DB mov di, dx seg002:00DD mov al, [bx+0] seg002:00E1 xchg al, [di+0] seg002:00E5 mov [bx+0], al seg002:00E9 add al, [di+0] seg002:00ED mov di, ax seg002:00EF mov al, [di+0] seg002:00F3 call addr2 seg002:00F8 inc ax seg002:00F9 inc ax seg002:00FA xor [si], al seg002:00FC pop dx seg002:00FD inc si seg002:00FE loop loc_10582 seg002:0100 jmp short loc_105C1 seg002:0102 seg002:0102 seg002:0102 loc_105B2: seg002:0102 seg002:0102 mov ax, 4C00h seg002:0105 int 21h seg002:0105 seg002:0107 seg002:0107 seg002:0107 loc_105B7: seg002:0107 seg002:0107 mov ah, 9 seg002:0109 lea dx, aWrong seg002:010D int 21h seg002:010D seg002:010F jmp short loc_105B2 seg002:0111 seg002:0111 seg002:0111 loc_105C1: seg002:0111 xor cx, cx seg002:0113 xor di, di seg002:0115 xor si, si seg002:0117 mov di, 141h seg002:011A mov si, 168h seg002:011D test cl, cl seg002:011F jnz short near ptr unk_105D3 seg002:0121 jz short loc_105D4 seg002:0121 seg002:0123 unk_105D3 db 0E8h seg002:0124 seg002:0124 seg002:0124 loc_105D4: seg002:0124 add si, 2 seg002:0127 mov cl, [di] seg002:0129 inc di seg002:012A seg002:012A loc_105DA: seg002:012A mov al, [si] seg002:012C mov dl, [di] seg002:012E cmp al, dl seg002:0130 jnz short loc_105B7 seg002:0132 loop loc_105DA seg002:0134 mov ah, 9 seg002:0136 lea dx, aCongradulatuon seg002:013A int 21h seg002:013A seg002:013C jmp short loc_105B2 seg002:013E seg002:013E push cx seg002:013F mov cl, 4 seg002:0141 shr al, cl seg002:0143 cmp al, 0Ah seg002:0145 jl short loc_105FB seg002:0147 add al, 37h seg002:0149 jmp short loc_105FD seg002:014B seg002:014B seg002:014B loc_105FB: seg002:014B add al, 30h seg002:014D seg002:014D loc_105FD: seg002:014D mov [di], al seg002:014F inc di seg002:0150 mov al, ah seg002:0152 and al, 0Fh seg002:0154 cmp al, 0Ah seg002:0156 jl short loc_1060C seg002:0158 add al, 37h seg002:015A jmp short loc_1060E seg002:015C seg002:015C seg002:015C loc_1060C: seg002:015C add al, 30h seg002:015E seg002:015E loc_1060E: seg002:015E mov [di], al seg002:0160 inc di seg002:0161 pop cx seg002:0162 retn seg002:0163 seg002:0163 mov ah, 2 seg002:0165 seg002:0165 loc_10615: seg002:0165 lodsb seg002:0166 cmp al, 24h seg002:0168 jz short locret_10620 seg002:016A mov dl, al seg002:016C int 21h seg002:016C seg002:016E jmp short loc_10615 seg002:0170 seg002:0170 seg002:0170 locret_10620: seg002:0170 retn seg002:0170 seg002:0171 align 10h seg002:0171 seg002 ends seg002:0171 seg003:0000 seg003:0000 seg003:0000 seg003:0000 seg003 segment byte public 'CODE' use16 seg003:0000 assume cs:seg003 seg003:0000 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing seg003:0000 seg003:0000 seg003:0000 seg003:0000 seg003:0000 addr1 proc far seg003:0000 pop dx seg003:0001 push ax seg003:0002 xor ax, ax seg003:0004 add dl, al seg003:0006 pop ax seg003:0007 push dx seg003:0008 retf seg003:0008 addr1 endp seg003:0008 seg003:0008 seg003:0009 align 8 seg003:0009 seg003 ends seg003:0009 seg004:0000 seg004:0000 seg004:0000 seg004:0000 seg004 segment byte public 'CODE' use16 seg004:0000 assume cs:seg004 seg004:0000 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing seg004:0000 seg004:0000 seg004:0000 seg004:0000 seg004:0000 addr2 proc far seg004:0000 pop dx seg004:0001 push ax seg004:0002 xor ax, ax seg004:0004 mov ah, 1Dh seg004:0006 not ah seg004:0008 shr ah, 1 seg004:000A shr ah, 1 seg004:000C add ax, 0Fh seg004:000F and al, 7 seg004:0011 xor al, 0Eh seg004:0013 shl al, 1 seg004:0015 or al, ah seg004:0017 dec ah seg004:0019 sub al, ah seg004:001B add al, 2 seg004:001D and al, 11h seg004:001F add dl, al seg004:0021 pop ax seg004:0022 push dx seg004:0023 retf seg004:0023 addr2 endp seg004:0023 seg004:0023 seg004:0024 align 10h seg004:0024 seg004 ends seg004:0024 seg005:0000 seg005:0000 seg005:0000 seg005:0000 seg005 segment byte public 'CODE' use16 seg005:0000 assume cs:seg005 seg005:0000 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing seg005:0000 seg005:0000 seg005:0000 seg005:0000 seg005:0000 addr3 proc far seg005:0000 pop dx seg005:0001 push ax seg005:0002 xor ax, ax seg005:0004 mov ax, 0Fh seg005:0007 and ax, 7 seg005:000A shl ax, 1 seg005:000C shl ax, 1 seg005:000E mov ah, 1Ah seg005:0010 not ah seg005:0012 shr ah, 1 seg005:0014 shr ah, 1 seg005:0016 xor al, ah seg005:0018 sub ah, 1Eh seg005:001B and al, ah seg005:001D inc al seg005:001F add dl, al seg005:0021 pop ax seg005:0022 push dx seg005:0023 retf seg005:0023 addr3 endp seg005:0023 seg005:0023 seg005:0024 align 10h seg005:0024 seg005 ends seg005:0024 seg006:0000 seg006:0000 seg006:0000 seg006:0000 seg006 segment byte public 'CODE' use16 seg006:0000 assume cs:seg006 seg006:0000 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing seg006:0000 seg006:0000 seg006:0000 seg006:0000 seg006:0000 addr4 proc far seg006:0000 pop dx seg006:0001 push ax seg006:0002 xor ax, ax seg006:0004 shl ax, 1 seg006:0006 add ax, 3 seg006:0009 and ax, 1Fh seg006:000C mov ah, 1Ch seg006:000E not ah seg006:0010 shr ah, 1 seg006:0012 shr ah, 1 seg006:0014 or al, ah seg006:0016 mov ah, 0Eh seg006:0018 shl ah, 1 seg006:001A shl ah, 1 seg006:001C add ah, 1 seg006:001F xor al, ah seg006:0021 add dl, al seg006:0023 pop ax seg006:0024 push dx seg006:0025 retf seg006:0025 addr4 endp seg006:0025 seg006:0025 seg006:0026 align 10h seg006:0026 seg006 ends seg006:0026 seg007:0000 seg007:0000 seg007:0000 seg007:0000 seg007 segment byte public 'CODE' use16 seg007:0000 assume cs:seg007 seg007:0000 assume es:nothing, ss:nothing, ds:dseg, fs:nothing, gs:nothing seg007:0000 seg007:0000 seg007:0000 seg007:0000 seg007:0000 addr5 proc far seg007:0000 pop dx seg007:0001 push ax seg007:0002 xor ax, ax seg007:0004 mov ax, 0Fh seg007:0007 and ax, 7 seg007:000A xor ax, 0Eh seg007:000D shl ax, 1 seg007:000F mov ah, 3 seg007:0011 or ah, 1 seg007:0014 and ah, 2 seg007:0017 sub al, ah seg007:0019 shr al, 1 seg007:001B mov ah, 4 seg007:001D shr ah, 1 seg007:001F sub al, 5 seg007:0021 mul ah seg007:0023 add dl, al seg007:0025 pop ax seg007:0026 push dx seg007:0027 retf seg007:0027 addr5 endp seg007:0027 seg007:0027 seg007 ends seg007:0027 seg007:0027 seg007:0027 end start
|