我正试图在有一个奇怪的strcmp的地方进行挑战。 它是以下内容:
if(strcmp(argv[1],"\x00")) return 0;
if(strcmp(argv[2],"\x20\x0a\x0d")) return 0;
我试图通过Python传递参数但是没有以正确的方式读取字节。 这就是我试过的:
./program $(python -c 'import sys;sys.stdout.write("\x00 \x20\x0a\x0d")')
我也尝试使用他们的repr
,但这也不起作用。他们目前正在评估每个字节实际代表的内容:我如何“正确地传递它们”?
答案 0 :(得分:0)
如果您不想要评估反斜杠转义,则需要转义它们。
此:
if(strcmp(argv[1], "\\x20\\x0a\\x0d")) return 0;
与文字字符串"\x20\x0a\x0d"
进行比较,后者有12个字符。
从命令行的角度来看,第一个参数应该是一个空字符串(通常在大多数shell中写为""
),第二个参数应该是Python表示法中的树字符串" \n\r"
不确定Python与此处的内容有什么关系,例如: bash你应该能够做到:
$ ./program "" $'\n\r'