簡體   English   中英

將0x20、0x00、0x0d,0x0a字節傳遞給strcmp()

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM