[英]Passing 0x20, 0x00, 0x0d, 0x0a bytes to strcmp()
我正在嘗試在有奇怪的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
但那也沒有用。 目前正在評估它們的每個字節實際代表什么:如何正確“按原樣傳遞它們”?
如果您不希望對反斜杠轉義進行評估,則需要對它們進行轉義。
這個:
if(strcmp(argv[1], "\\x20\\x0a\\x0d")) return 0;
與文字字符串"\\x20\\x0a\\x0d"
進行比較,該字符串包含12個字符。
從命令行角度來看,第一個參數應該是一個空字符串(在大多數shell中通常寫為""
),第二個參數應該是Python表示法中的樹字符字符串" \\n\\r"
。
不知道Python與這里的事情有什么關系,例如bash,您應該能夠做到:
$ ./program "" $'\n\r'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.