防火墙中的欺骗 IPP 响应?

防火墙中的欺骗 IPP 响应?

我该如何伪造 IPP “未授权”响应?我读过 IPP 规范文档,但找不到 IPP 响应的具体形式。有例子吗?

基本上,我有一台 IPP 打印机,中间有防火墙,用于对打印机用户进行身份验证,当未经身份验证的用户或不正确的身份验证用户打印时,我希望用户收到一条比“无法联系打印机,请验证打印机地址是否正确以及打印机是否已打开”更有意义的错误消息。简单地在 IPP 端口上的防火墙中使用 HTTP 403 拒绝只会给出该错误消息。

基本上,当防火墙认为用户未经身份验证时,我希望使用 application/ipp 和响应代码 0x0403 作为响应。我可以在防火墙中读取和解码请求中的内容(似乎我需要复制请求 ID?)。

答案1

解决了,我只是在身份验证失败时将用户(IPP 客户端)重定向到此页面。用户正确地收到一条错误消息,告知用户在大多数操作系统上无权打印:

#!PATH TO PERL INTEPRETER
$file = <STDIN>;
$file =~ s/(.)/sprintf("%02x",ord($1))/seg;

$response = "";
$response = $response.chr("01").chr("00").chr("04").chr("03");
$response =$response.chr(hex(substr($file, 6, 2))).chr(hex(substr($file, 8, 2)));
$response=$response.chr(hex(substr($file, 10, 2))).chr(hex(substr($file,12, 2)));
$response = $response.chr("01").chr(hex("47")).chr("00").chr(hex("12"));
$response = $response."attributes-charset".chr("00").chr("05")."utf-8".chr(hex("48"));
$response = $response . chr("00").chr(hex("1B"))."attributes-natural-language".chr("00");
$response =$response . chr("05")."en-us".chr(hex("41")).chr("00").chr(hex("0E"));
$response = $response . "status-message".chr("00").chr(hex("1B"))."client-error-not-authorized";
$response = $response . chr("03");
$clen = length($response);
print "Content-Length: ".$clen."\nContent-Type: application/ipp\n\n$response";

相关内容