我的网络中有一个 D-Link (DCS-932L) 网络摄像头。我使用 binwalk 解压了固件,并尝试找到填充领域值的配置/文件,但我找不到似乎可以从中提取该数据的任何地方。
生成的 curl 命令显示领域信息如下:
HTTP/1.0 401 Authorization Required
Server: alphapd
Date: Wed Feb 01 05:11:53 2019
Pragma: no-cache
Cache-Control: no-cache
Content-type: text/html
Content-length: 103
WWW-Authenticate: Basic realm="DCS-932L"
是否存在通常从中提取 HTTP 基本领域信息的文件或位置,我可以在基于 Linux 的 IoT 设备的固件中查看?
答案1
这个领域没有什么独特之处,它是网站的配置就像它接受的用户名/密码或它将提供的 URL/页面一样,并且这种配置没有全球标准位置,无论是在 IoT 中还是在基于 Linux 的 HTTP 服务器中。
这里的“网站”是指 HTTP 守护进程和webapp,以防它们是分开的。(例如,考虑一个带有 Nginx 的常规服务器和一个基于 PHP 的 webapp – 无论是 Nginx或者Web 应用程序可以提供WWW-Authenticate
标头。)
即使你确定它至少是基于Linux的,但仍然不可能给出一个准确的答案,因为仅在Linux上就存在着种类繁多的HTTP服务器(既有通用的,也有面向嵌入式设备的,当然还有制造商手工制作的)。
在最简单的情况下,使用运行 Apache httpd 的独立 Linux Web 服务器,它可能位于 httpd.conf 中的 VirtualHost 配置中的一行中 - 而对于较小的 IoT 设备,它可能被简单地定义为服务源代码的一部分,即在编译时设置。因此,假设您设法提取 Linux 根文件系统,则需要strings
针对在该根文件系统中找到的所有可执行文件运行,然后您可能会找到该领域,它可能以单个字符串的形式“预先嵌入”到整个标头中。
(请注意,所讨论的二进制文件可能看起来不像专用的 Web 服务器 - 即使在常规网站中,HTTP 通常也由拉入“应用程序”本身的库来处理,而不是由独立的 Web 服务器来处理,我只是怀疑这甚至可能是更多的这在内存空间非常宝贵的物联网中很常见。)