squirrel terminal

problem

image

see ./xterm_fun.bin

solution

we can see that the xterm_fun.bin is comprised of

quasar@quasar098:~/Downloads$ cat xterm_fun.bin | xxd
00000000: 1b5b 3c30 3b31 323b 324d 1b5b 3c30 3b35  .[<0;12;2M.[<0;5
00000010: 3b38 6d1b 5b3c 303b 333b 324d 1b5b 3c30  ;8m.[<0;3;2M.[<0
00000020: 3b31 323b 376d 1b5b 3c30 3b31 393b 334d  ;12;7m.[<0;19;3M
00000030: 1b5b 3c30 3b32 323b 376d 1b5b 3c30 3b32  .[<0;22;7m.[<0;2
00000040: 323b 384d 1b5b 3c30 3b32 373b 336d 1b5b  2;8M.[<0;27;3m.[
00000050: 3c30 3b32 363b 334d 1b5b 3c30 3b33 303b  <0;26;3M.[<0;30;
00000060: 376d 1b5b 3c30 3b33 323b 384d 1b5b 3c30  7m.[<0;32;8M.[<0
00000070: 3b33 353b 336d 1b5b 3c30 3b34 323b 384d  ;35;3m.[<0;42;8M
00000080: 1b5b 3c30 3b34 323b 336d 1b5b 3c30 3b34  .[<0;42;3m.[<0;4
00000090: 313b 334d 1b5b 3c30 3b34 363b 336d 1b5b  1;3M.[<0;46;3m.[
000000a0: 3c30 3b35 353b 344d 1b5b 3c30 3b36 303b  <0;55;4M.[<0;60;
000000b0: 326d 1b5b 3c30 3b36 303b 324d 1b5b 3c30  2m.[<0;60;2M.[<0
000000c0: 3b36 303b 396d 1b5b 3c30 3b35 363b 394d  ;60;9m.[<0;56;9M
000000d0: 1b5b 3c30 3b36 333b 396d 1b5b 3c30 3b37  .[<0;63;9m.[<0;7
000000e0: 353b 314d 1b5b 3c30 3b37 343b 376d 1b5b  5;1M.[<0;74;7m.[
000000f0: 3c30 3b37 323b 344d 1b5b 3c30 3b37 363b  <0;72;4M.[<0;76;
00000100: 346d 1b5b 3c30 3b38 383b 334d 1b5b 3c30  4m.[<0;88;3M.[<0
00000110: 3b39 313b 316d 1b5b 3c30 3b39 313b 314d  ;91;1m.[<0;91;1M
00000120: 1b5b 3c30 3b39 303b 376d 1b5b 3c30 3b38  .[<0;90;7m.[<0;8
00000130: 373b 374d 1b5b 3c30 3b39 353b 376d 1b5b  7;7M.[<0;95;7m.[
00000140: 3c30 3b31 3035 3b37 4d1b 5b3c 303b 3130  <0;105;7M.[<0;10
00000150: 353b 336d 1b5b 3c30 3b31 3035 3b33 4d1b  5;3m.[<0;105;3M.
00000160: 5b3c 303b 3131 313b 336d 1b5b 3c30 3b31  [<0;111;3m.[<0;1
00000170: 3131 3b33 4d1b 5b3c 303b 3131 313b 396d  11;3M.[<0;111;9m
00000180: 1b5b 3c30 3b31 3237 3b33 4d1b 5b3c 303b  .[<0;127;3M.[<0;
00000190: 3132 313b 346d 1b5b 3c30 3b31 3230 3b34  121;4m.[<0;120;4
000001a0: 4d1b 5b3c 303b 3131 393b 386d 1b5b 3c30  M.[<0;119;8m.[<0
000001b0: 3b31 3139 3b39 4d1b 5b3c 303b 3132 343b  ;119;9M.[<0;124;
000001c0: 396d 1b5b 3c30 3b31 3234 3b35 4d1b 5b3c  9m.[<0;124;5M.[<
000001d0: 303b 3132 343b 3132 6d1b 5b3c 303b 3132  0;124;12m.[<0;12
000001e0: 343b 3132 4d1b 5b3c 303b 3131 383b 3132  4;12M.[<0;118;12
000001f0: 6d1b 5b3c 303b 3133 303b 384d 1b5b 3c30  m.[<0;130;8M.[<0
00000200: 3b31 3335 3b38 6d1b 5b3c 303b 3134 343b  ;135;8m.[<0;144;
00000210: 344d 1b5b 3c30 3b31 3430 3b37 6d1b 5b3c  4M.[<0;140;7m.[<
00000220: 303b 3133 383b 344d 1b5b 3c30 3b31 3433  0;138;4M.[<0;143
00000230: 3b37 6d1b 5b3c 303b 3134 383b 344d 1b5b  ;7m.[<0;148;4M.[
00000240: 3c30 3b31 3531 3b32 6d1b 5b3c 303b 3135  <0;151;2m.[<0;15
00000250: 323b 324d 1b5b 3c30 3b31 3532 3b37 6d1b  2;2M.[<0;152;7m.
00000260: 5b3c 303b 3134 383b 374d 1b5b 3c30 3b31  [<0;148;7M.[<0;1
00000270: 3534 3b37 6d1b 5b3c 303b 3136 343b 334d  54;7m.[<0;164;3M
00000280: 1b5b 3c30 3b31 3539 3b33 6d1b 5b3c 303b  .[<0;159;3m.[<0;
00000290: 3135 383b 334d 1b5b 3c30 3b31 3538 3b36  158;3M.[<0;158;6
000002a0: 6d1b 5b3c 303b 3135 383b 364d 1b5b 3c30  m.[<0;158;6M.[<0
000002b0: 3b31 3633 3b36 6d1b 5b3c 303b 3136 343b  ;163;6m.[<0;164;
000002c0: 364d 1b5b 3c30 3b31 3633 3b38 6d1b 5b3c  6M.[<0;163;8m.[<
000002d0: 303b 3136 323b 384d 1b5b 3c30 3b31 3537  0;162;8M.[<0;157
000002e0: 3b39 6d1b 5b3c 303b 3137 353b 364d 1b5b  ;9m.[<0;175;6M.[
000002f0: 3c30 3b31 3739 3b36 6d1b 5b3c 303b 3139  <0;179;6m.[<0;19
00000300: 313b 334d 1b5b 3c30 3b31 3836 3b37 6d1b  1;3M.[<0;186;7m.
00000310: 5b3c 303b 3138 333b 334d 1b5b 3c30 3b31  [<0;183;3M.[<0;1
00000320: 3931 3b38 6d1b 5b3c 303b 343b 3136 4d1b  91;8m.[<0;4;16M.
00000330: 5b3c 303b 353b 3232 6d1b 5b3c 303b 353b  [<0;5;22m.[<0;5;
00000340: 3139 4d1b 5b3c 303b 3134 3b31 396d 1b5b  19M.[<0;14;19m.[
00000350: 3c30 3b31 343b 3135 4d1b 5b3c 303b 3135  <0;14;15M.[<0;15
00000360: 3b32 356d 1b5b 3c30 3b32 393b 3234 4d1b  ;25m.[<0;29;24M.
00000370: 5b3c 303b 3238 3b31 366d 1b5b 3c30 3b32  [<0;28;16m.[<0;2
00000380: 373b 3136 4d1b 5b3c 303b 3232 3b32 316d  7;16M.[<0;22;21m
00000390: 1b5b 3c30 3b32 313b 3231 4d1b 5b3c 303b  .[<0;21;21M.[<0;
000003a0: 3333 3b32 316d 1b5b 3c30 3b34 323b 3234  33;21m.[<0;42;24
000003b0: 4d1b 5b3c 303b 3430 3b31 396d 1b5b 3c30  M.[<0;40;19m.[<0
000003c0: 3b34 303b 3138 4d1b 5b3c 303b 3436 3b31  ;40;18M.[<0;46;1
000003d0: 386d 1b5b 3c30 3b35 353b 3231 4d1b 5b3c  8m.[<0;55;21M.[<
000003e0: 303b 3530 3b32 326d 1b5b 3c30 3b34 393b  0;50;22m.[<0;49;
000003f0: 3232 4d1b 5b3c 303b 3530 3b32 356d 1b5b  22M.[<0;50;25m.[
00000400: 3c30 3b35 303b 3235 4d1b 5b3c 303b 3535  <0;50;25M.[<0;55
00000410: 3b32 356d 1b5b 3c30 3b35 363b 3235 4d1b  ;25m.[<0;56;25M.
00000420: 5b3c 303b 3535 3b31 366d 1b5b 3c30 3b36  [<0;55;16m.[<0;6
00000430: 323b 3235 4d1b 5b3c 303b 3636 3b32 346d  2;25M.[<0;66;24m
00000440: 1b5b 3c30 3b37 333b 3230 4d1b 5b3c 303b  .[<0;73;20M.[<0;
00000450: 3731 3b32 356d 1b5b 3c30 3b36 383b 3231  71;25m.[<0;68;21
00000460: 4d1b 5b3c 303b 3735 3b32 346d 1b5b 3c30  M.[<0;75;24m.[<0
00000470: 3b37 393b 3230 4d1b 5b3c 303b 3834 3b32  ;79;20M.[<0;84;2
00000480: 316d 1b5b 3c30 3b38 343b 3231 4d1b 5b3c  1m.[<0;84;21M.[<
00000490: 303b 3835 3b32 346d 1b5b 3c30 3b38 353b  0;85;24m.[<0;85;
000004a0: 3234 4d1b 5b3c 303b 3830 3b32 356d 1b5b  24M.[<0;80;25m.[
000004b0: 3c30 3b37 393b 3235 4d1b 5b3c 303b 3739  <0;79;25M.[<0;79
000004c0: 3b32 366d 1b5b 3c30 3b37 393b 3237 4d1b  ;26m.[<0;79;27M.
000004d0: 5b3c 303b 3836 3b32 376d 1b5b 3c30 3b39  [<0;86;27m.[<0;9
000004e0: 383b 3231 4d1b 5b3c 303b 3931 3b32 336d  8;21M.[<0;91;23m
000004f0: 1b5b 3c30 3b39 313b 3232 4d1b 5b3c 303b  .[<0;91;22M.[<0;
00000500: 3931 3b32 346d 1b5b 3c30 3b39 313b 3234  91;24m.[<0;91;24
00000510: 4d1b 5b3c 303b 3931 3b32 346d 1b5b 3c30  M.[<0;91;24m.[<0
00000520: 3b39 313b 3235 4d1b 5b3c 303b 3937 3b32  ;91;25M.[<0;97;2
00000530: 346d 1b5b 3c30 3b39 373b 3234 4d1b 5b3c  4m.[<0;97;24M.[<
00000540: 303b 3937 3b32 376d 1b5b 3c30 3b39 373b  0;97;27m.[<0;97;
00000550: 3237 4d1b 5b3c 303b 3930 3b32 386d 1b5b  27M.[<0;90;28m.[
00000560: 3c30 3b31 3131 3b32 374d 1b5b 3c30 3b31  <0;111;27M.[<0;1
00000570: 3131 3b32 306d 1b5b 3c30 3b31 3130 3b31  11;20m.[<0;110;1
00000580: 394d 1b5b 3c30 3b31 3036 3b32 336d 1b5b  9M.[<0;106;23m.[
00000590: 3c30 3b31 3036 3b32 334d 1b5b 3c30 3b31  <0;106;23M.[<0;1
000005a0: 3135 3b32 336d 1b5b 3c30 3b31 3233 3b32  15;23m.[<0;123;2
000005b0: 304d 1b5b 3c30 3b31 3239 3b32 316d 1b5b  0M.[<0;129;21m.[
000005c0: 3c30 3b31 3238 3b32 314d 1b5b 3c30 3b31  <0;128;21M.[<0;1
000005d0: 3238 3b32 386d                           28;28m

the \x1b character is the ESC in ascii. this reminds me of ansi escape codes

here is some documentation describing xterm control sequences.

image

image

so ESC + [ is CSI

image

so ESC + [ + < is followed by the button value and coordinates. we can see that each button press is followed by a button release always. there is no double press or anything

we can scrape the file for coordinates. see this tfw recipe

then we can group them using python and then put it into desmos using polygons

[print(f"\\polygon\\left(\\left({coords[i][0]}, {coords[i][1]}\\right), \\left({coords[i+1][0]}, {coords[i+1][1]}\\right)\\right)") for i in range(0, len(coords), 2)]

image

this is not readable. this is because (0, 0) is actually the top left, not the bottom left. so we can flip across the x axis.

[print(f"\\polygon\\left(\\left({coords[i][0]}, {-coords[i][1]}\\right), \\left({coords[i+1][0]}, {-coords[i+1][1]}\\right)\\right)") for i in range(0, len(coords), 2)]

so we can just wrap this and submit it

image