首先你要明白,软件本身是调用的steghide
实测命令行

不加引号是不行的,我不知道你为什么说行?
为什么一定要加引号,因为这条命令里的密码里出现了 PowerShell 的元字符(metacharacters)——左花括号 {。
在 Windows 上,你大概率是在 PowerShell 里敲的;PowerShell 把 { 当成代码块/哈希表的起始符号,于是:
-p inctf{0n3_h4lf
还没送到 steghide,就被 PowerShell 截胡,要么报错、要么把 {0n3_h4lf 解释成别的东西,结果 steghide 收到的密码根本不是完整字符串,自然失败。
用引号包起来以后,PowerShell 把它当成普通字符串原样传递,steghide 收到的就是 inctf{0n3_h4lf,于是通过。
而别的密码如果不含 { $ ( ) ; | < > 这类 shell 元字符,PowerShell 不会插手,所以看起来“不需要引号”。
一句话:
不是 steghide 要求引号,是 PowerShell 要求你把带 { 的字符串引起来。
既然你觉得软件必须兼容这个密码,那我就改软件好了,加个处理密码
