文章主题:GPT, ChatGPT, ZoomEye, 网络空间搜索引擎

666AI工具大全,助力做AI时代先行者!

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

「Prompt也是可编程的 –黑哥尔」既然ChatGPT火了后就诞生了“提示工程师”,所以Prompt本身的“编程”成为理所当然。这段时间一直在尝试Prompt进行“编程”,通过一些尝试得到的感触是还是比较复杂,一言难尽的 …

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

GPT的众多应用中,利用其生成查询语句是一项非常基础的功能。以微软的Bing Chat为例,这一应用完美地融合了GPT的场景。因此,人们自然地将目光投向了网络空间的搜索引擎领域。在这方面,早期成功落地的是我曾在文章中介绍过的Ztz项目。

https://github.com/zt2/uncover-turbo

随后Censys推出了一个CensysGPT

https://gpt.censys.io/

基于Prompt的实现实际上是存在各种不稳定的,因为提交的数据是有限的,对于这种使用说明类的文档如果数据比较多实际上是比较适合精调模式(Fine-tuning)的,这个我在《大模型是小模型的基础》 所看好的一个模式。

ZoomEyeGPT实现的方式也是基于Prompt的:

https://github.com/knownsec/ZoomeyeGPT

为了提供更加便捷的数据交互方式,我们采用了浏览器插件的模式。这种模式可以有效地实现数据在浏览器与服务器之间的传输,并且我们已经成功开发出了两个主要功能。

1、是通过自然语言生成ZoomEye搜索语法

这个需求就不用多做说明了,注意是让大家不用去纠结各种语法词了。

2、通过选择banner生成ZoomEye搜索语法

这个需求是《无名之辈,ChatGPT》更进一步,在原文里是通过ChatGPT编程能力来实现查询提取,而这次是直接用ChatGPT直接处理实现,这个是“黄世仁思维”更要进一步,这个功能也是更加方便实战“行为测绘”进行自动拓线。

具体的Prompt请参考:

https://github.com/knownsec/ZoomeyeGPT/blob/main/sw.js

在这个提示词中,涉及到的逻辑较为繁杂且深奥,实际上,为了达到这一目标,我已经进行了大量的测试。在我最初的设计版本中,便已经实现了对banner处理功能的优化。

要求处理的只有一条http请求数据,请按如下处理:第一步删除http头里的”Date“字段删除http头了的”Connection”字段删除HTTP协议版本按以上规则处理如下http请求:HTTP/1.1 404 Not FoundServer: nginx/1.18.0 (Ubuntu)Content-Type: text/plain; charset=utf-8Date: Sun, 09 Apr 2023 00:14:01 GMTSet-Cookie: abcdef=pp77drqb4l5fpdpogi0ehcl7gb; path=/Content-Length: 19Cache-Control: nostore, nocache, must-revalidatePragma: nocacheKeep-Alive: timeout=5, max=98Connection: Keep-AliveConnectionclose404 page not found<html><head><body>a aaa bbb</body>得到:404 Not FoundServer: nginx/1.18.0 (Ubuntu)ContentType: text/plain; charset=utf-8Set-Cookie: abcdef=pp77drqb4l5fpdpogi0ehcl7gb; path=/Content-Length: 19Cache-Control: nostore, nocache, must-revalidatePragma: nocacheKeep-Alive: timeout=5, max=98404 page not found<html><head><body>a aaa bbb</body>第二步Server及X-Powered-By头进行处理忽视掉/符号后面的字符。Set-Cookie头里的第一个Cookie名保留。替换引号为空其他的内容请直接保留。得到的结果如下:404 Not FoundServer: nginxContentType: text/plain; charset=utf-8Set-Cookie: abcdefContentLength: 19Cache-Control: nostore, nocache, must-revalidatePragma: nocacheKeep-Alive: timeout=5, max=98404 page not found<html><head><body>a aaa bbb</body>第三步,对第二步的结果组合从字符串,用引号及加号连接,最终得到如下结果:“404 Not Found” +“Server: nginx” +“Content-Type: text/plain; charset=utf-8” +“Set-Cookie: abcdef” +“Content-Length: 19” +“Cache-Control: no-store, no-cache, must-revalidate” +“Pragma: no-cache” +“Keep-Alive: timeout=5, max=98” +“404 page not found<html><head><body>a aaa bbb</body>” 请学习以上处理方式处理如下HTTP response banner,只要求输出最终的处理的结果!HTTP/1.1 302 Moved TemporarilyServer: nginxDate: Tue, 18 Apr 2023 13:52:49 GMTContentType: text/htmlContentLength: 154Connection: closeLocation: https://api.cloudflare.com/client/v4//Referrer-Policy: no-referrer<html><head><title>302 Found</title></head><body bgcolor=“white”><center><h1>302 Found</h1></center><hr><center>nginx</center></body></html>

这个版本最大的特点是分步分解需求,这个在我这里测试实际上还是比较符合需求的,但是到另外小伙那测试发现各种不稳定的情况就出现了,因为提交的内容比较多很多逻辑都需要去强调处理,很多规则点很容易被忽视,这个学习的例子有限有很大的关系,所以我把这个提示词提交给ChatGPT,让他给我优化,优化后的结构跟我们最后发布的结构差不多(只是一些细节做了强调优化),所以最终按我的实际体验把Prompt的结构可以分为:

* 数据处理规则* 学习实例说明* 强调关键词汇* 输出格式说明

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

在我看来,“学习实例说明”的重要性不言而喻,然而,即使我们在关键词汇方面进行了微调,仍然难以避免各种混乱的生成情况出现。

在实现“通过自然语言生成ZoomEye搜索语法”的过程中,由于ZoomEye是我国最早网络空间搜索引擎,因此在许多语法设计上具有独特的特点。例如,它采用空格来表示或运算,这在计算机编程中通常使用OR/or或||操作符。因此,在使用或运算时,用户可能会犯错。此外,许多搜索引擎使用空格表示部分And运算,如shodan、google等搜索习惯。

在ZoomEye中,service这个词主要用来表示常见协议。然而,在HTTP协议中,server这个http头也是非常重要的。许多人常常对这个概念产生混淆,对此,黑哥尔曾在之前的解答中提到过:

“ChatGPT是用集体的经验替代了个人的经验主义”

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

所以这些很容易让人混淆的设计,理所当然也会影响集体经验主义的ChatGPT,在这个部分的Prompt里使用了比较多的“学习实例说明”,来强化ChatGPT的理解。

由于ZoomEyeGPT是基于Prompt的,提交的数据很有限,这也意味着app:语法词其实上面提到的service:这个语法词都属于我们标注生成的确定的“字典”,所以不太好提交直接提交给ChatGPT,为了不让ChatGPT随意生成,所以我直接删除了app这个语法词。好在ZoomEye是支持全局分词后关键词查询的,所以这个时候需要你在提供的提示词里使用,这里实际上目前这个方式不能随意把你提交的自然语言翻译成为ZoomEye搜索关键词,还是需要你对ZoomEye的语法及搜索机制有所理解的基础上。

这里我需要说明的是,即使你做了一些强调,ChatGPT仍然存在混乱的情况。这个时候你输入的提示词,直接使用关键词是还是比较好的,这个或许使用Fine-tuning的模式,能更好的实现。

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

Prompt 与 Program 互相转换

如果说Prompt是可编程的,那么通过ChatGPT的处理,完全可以实现,Prompt 与 Program互换,这个也源于上面提到的《无名之辈,ChatGPT》里写用ChatGPT根据Prompt写Python,到ZoomGPT里直接用让ChatGPT直接按Prompt处理提交的数据。所以我也做了一个这样的尝试,我把上面做好的Prompt提交给ChatGPT让它直接实现JS的处理,而这个代码的核心直接就是ZoomEyeGPT里那个“regx->ZoomEye”实现的那个代码。

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

最后我想提一下的是:

ChatGPT这种东西在逐步打破各种领域的界限,更低门槛成本实现各种跨领域的结合,这些取决于你的学习能力,执行能力及创新的想法,“被AI取代”只能是无能者的墓志铭。

ZoomEyeGPT的演示:

GPT在网络空间搜索引擎中的基础应用:以ZoomEye为例

AI时代,拥有个人微信机器人AI助手!AI时代不落人后!

免费ChatGPT问答,办公写作、生活好得力助手!

搜索微信号AIGC666aigc999或上边扫码,即可拥有个人AI助手!