User-friendlier way to specify mutable bits for alphanumerical output
Proposed behavior:
-b 03FFFFC0@1024selects 20 bits at position 1024-b 80@30:40selects 10 MSBs between positions 30 and 40-b 2@0:-1:1selects all bits except the first (apply at every bit position)
After implementing this, bit numbering could be changed to MSB -> LSB which is more intuitive IMO.
This AND-bitmask proposal sucks. Better approaches exist. For instance, we could expand a switch -b [59-68].[0-5] to 10 x 6 = 60 switches selecting the 6 least significant bits of 10 consecutive bytes starting at the byte position 59. This would make solving, for example, Google CTF 2018 (Quals) task "Tape, misc, 355p" much less annoying; the current solution looks like crap and is painful to write:
$ printf ': You probably just want the flag. So here it is: CTF{dZXi__________PIUTYMI}. :' > flag
$ crchack -b 59.0:69:1 -b 59.1:69:1 -b 59.2:69:1 -b 59.3:69:1 -b 59.4:69:1 -b 59.5:69:1 -w64 -p0x42F0E1EBA9EA3693 -rR flag 0x30d498cbfb871112
: You probably just want the flag. So here it is: CTF{dZXicOXLaMumrTPIUTYMI}. :
Instead of requiring those 6 ugly command-line -b options, we could simply accept a single one -b [59-68].[0-5] (or even -b 59.[0-5]:69:1) and expand it to achieve the same result.
I'm keeping this issue open, but changing the title.
This issue has been addressed in commit dca3f2a
$ printf ': You probably just want the flag. So here it is: CTF{dZXi__________PIUTYMI}. :' \
| ./crchack -b '59.{0-5}:69:1' -w64 -p0x42F0E1EBA9EA3693 -rR - 30d498cbfb871112
: You probably just want the flag. So here it is: CTF{dZXicOXLaMumrTPIUTYMI}. :