Xray批量化自动扫描

关于Xray高级版破解:

https://www.cnblogs.com/Cl0ud/p/13884206.html

不过好像新版本的Xray修复了破解的BUG,亲测Xray1.3.3高级版仍然可以破解

因为Xray没有批量化的选项,在网上查了一下,fofa2Xray是封装好了的EXE文件,其他的好像需要配置代理之类的,反正挺麻烦,我只是想从txt里面按行读取URL进行扫描,所以昨晚上花半个小时自己写了一个小脚本实现Xray自动化批量扫描。

首先是一个大LOGO

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<code-pre class="code-pre" id="pre-3XeAxc"><code-line class="line-numbers-rows"></code-line>def logo():
<code-line class="line-numbers-rows"></code-line>    logo='''
<code-line class="line-numbers-rows"></code-line> _ __  _ __  _ __        
<code-line class="line-numbers-rows"></code-line>| '_ \| '_ \| '_ \       
<code-line class="line-numbers-rows"></code-line>| |_) | |_) | |_) |      
<code-line class="line-numbers-rows"></code-line>| .__/| .__/| .__/       
<code-line class="line-numbers-rows"></code-line>| |   | |   | |          
<code-line class="line-numbers-rows"></code-line>|_|   |_|   |_|          
<code-line class="line-numbers-rows"></code-line>   __   __               
<code-line class="line-numbers-rows"></code-line>   \ \ / /               
<code-line class="line-numbers-rows"></code-line>    \ V / _ __ __ _ _   _
<code-line class="line-numbers-rows"></code-line>    /   \| '__/ _` | | | |
<code-line class="line-numbers-rows"></code-line>   / /^\ \ | | (_| | |_| |
<code-line class="line-numbers-rows"></code-line>   \/   \/_|  \__,_|\__, |
<code-line class="line-numbers-rows"></code-line>                     __/ |
<code-line class="line-numbers-rows"></code-line>                    |___/
<code-line class="line-numbers-rows"></code-line>                            v1.0
<code-line class="line-numbers-rows"></code-line>                            author:springbird
<code-line class="line-numbers-rows"></code-line>    '''
<code-line class="line-numbers-rows"></code-line>    return logo</code-pre>

将Xray高级版破解之后路径配置在环境变量里,这样我们这个代码就不需要固定位置放置

核心是

1
2
3
4
5
<code-pre class="code-pre" id="pre-7wn2ks"><code-line class="line-numbers-rows"></code-line>def xrayScan(targeturl,outputfilename="test"):
<code-line class="line-numbers-rows"></code-line>    scanCommand="xray.exe webscan --basic-crawler {} --html-output {}.html".format(targeturl,outputfilename)
<code-line class="line-numbers-rows"></code-line>    print(scanCommand)
<code-line class="line-numbers-rows"></code-line>    os.system(scanCommand)
<code-line class="line-numbers-rows"></code-line>    return</code-pre>

os.system执行命令进行扫描,这样就实现了单个URL的脚本扫描,接着是读取TXT实现批量

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<code-pre class="code-pre" id="pre-MsBxWy"><code-line class="line-numbers-rows"></code-line>def pppGet():
<code-line class="line-numbers-rows"></code-line>    f = open("target.txt")
<code-line class="line-numbers-rows"></code-line>    lines = f.readlines()
<code-line class="line-numbers-rows"></code-line>    pattern = re.compile(r'^http://')
<code-line class="line-numbers-rows"></code-line>    for line in lines:
<code-line class="line-numbers-rows"></code-line>        try:
<code-line class="line-numbers-rows"></code-line>            if not pattern.match(line.strip()):
<code-line class="line-numbers-rows"></code-line>                targeturl="http://"+line.strip()
<code-line class="line-numbers-rows"></code-line>            else:
<code-line class="line-numbers-rows"></code-line>                targeturl=line.strip()
<code-line class="line-numbers-rows"></code-line>            print(targeturl.strip())
<code-line class="line-numbers-rows"></code-line>            outputfilename=hashlib.md5(targeturl.encode("utf-8"))
<code-line class="line-numbers-rows"></code-line>            xrayScan(targeturl.strip(), outputfilename.hexdigest())
<code-line class="line-numbers-rows"></code-line>            # print(type(line))
<code-line class="line-numbers-rows"></code-line>        except Exception as e:
<code-line class="line-numbers-rows"></code-line>            print(e)
<code-line class="line-numbers-rows"></code-line>            pass
<code-line class="line-numbers-rows"></code-line>    f.close()
<code-line class="line-numbers-rows"></code-line>    print("Xray Scan End~")
<code-line class="line-numbers-rows"></code-line>    return</code-pre>

这里的代码就是从文件里面读取URL,依次放在Xray里面进行扫描,放置待扫描URL的txt的名字为target.txt

最终完整代码为:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
<code-pre class="code-pre" id="pre-dzxtG7"><code-line class="line-numbers-rows"></code-line>import os
<code-line class="line-numbers-rows"></code-line>import hashlib
<code-line class="line-numbers-rows"></code-line>import re
<code-line class="line-numbers-rows"></code-line>​
<code-line class="line-numbers-rows"></code-line>def logo():
<code-line class="line-numbers-rows"></code-line>    logo='''
<code-line class="line-numbers-rows"></code-line> _ __  _ __  _ __        
<code-line class="line-numbers-rows"></code-line>| '_ \| '_ \| '_ \       
<code-line class="line-numbers-rows"></code-line>| |_) | |_) | |_) |      
<code-line class="line-numbers-rows"></code-line>| .__/| .__/| .__/       
<code-line class="line-numbers-rows"></code-line>| |   | |   | |          
<code-line class="line-numbers-rows"></code-line>|_|   |_|   |_|          
<code-line class="line-numbers-rows"></code-line>   __   __               
<code-line class="line-numbers-rows"></code-line>   \ \ / /               
<code-line class="line-numbers-rows"></code-line>    \ V / _ __ __ _ _   _
<code-line class="line-numbers-rows"></code-line>    /   \| '__/ _` | | | |
<code-line class="line-numbers-rows"></code-line>   / /^\ \ | | (_| | |_| |
<code-line class="line-numbers-rows"></code-line>   \/   \/_|  \__,_|\__, |
<code-line class="line-numbers-rows"></code-line>                     __/ |
<code-line class="line-numbers-rows"></code-line>                    |___/
<code-line class="line-numbers-rows"></code-line>                            v1.0
<code-line class="line-numbers-rows"></code-line>                            author:springbird
<code-line class="line-numbers-rows"></code-line>    '''
<code-line class="line-numbers-rows"></code-line>    return logo
<code-line class="line-numbers-rows"></code-line>​
<code-line class="line-numbers-rows"></code-line>​
<code-line class="line-numbers-rows"></code-line>def xrayScan(targeturl,outputfilename="test"):
<code-line class="line-numbers-rows"></code-line>    scanCommand="xray.exe webscan --basic-crawler {} --html-output {}.html".format(targeturl,outputfilename)
<code-line class="line-numbers-rows"></code-line>    print(scanCommand)
<code-line class="line-numbers-rows"></code-line>    os.system(scanCommand)
<code-line class="line-numbers-rows"></code-line>    return
<code-line class="line-numbers-rows"></code-line>​
<code-line class="line-numbers-rows"></code-line># def test():
<code-line class="line-numbers-rows"></code-line>#     pattern = re.compile(r'^http://')
<code-line class="line-numbers-rows"></code-line>#     m = pattern.match('http://www.baidu.com')
<code-line class="line-numbers-rows"></code-line>#     n = pattern.match('hta')
<code-line class="line-numbers-rows"></code-line>#     print(m)
<code-line class="line-numbers-rows"></code-line>#     print(n)
<code-line class="line-numbers-rows"></code-line>#     return
<code-line class="line-numbers-rows"></code-line>​
<code-line class="line-numbers-rows"></code-line>def pppGet():
<code-line class="line-numbers-rows"></code-line>    f = open("target.txt")
<code-line class="line-numbers-rows"></code-line>    lines = f.readlines()
<code-line class="line-numbers-rows"></code-line>    pattern = re.compile(r'^http://')
<code-line class="line-numbers-rows"></code-line>    for line in lines:
<code-line class="line-numbers-rows"></code-line>        try:
<code-line class="line-numbers-rows"></code-line>            if not pattern.match(line.strip()):
<code-line class="line-numbers-rows"></code-line>                targeturl="http://"+line.strip()
<code-line class="line-numbers-rows"></code-line>            else:
<code-line class="line-numbers-rows"></code-line>                targeturl=line.strip()
<code-line class="line-numbers-rows"></code-line>            print(targeturl.strip())
<code-line class="line-numbers-rows"></code-line>            outputfilename=hashlib.md5(targeturl.encode("utf-8"))
<code-line class="line-numbers-rows"></code-line>            xrayScan(targeturl.strip(), outputfilename.hexdigest())
<code-line class="line-numbers-rows"></code-line>            # print(type(line))
<code-line class="line-numbers-rows"></code-line>        except Exception as e:
<code-line class="line-numbers-rows"></code-line>            print(e)
<code-line class="line-numbers-rows"></code-line>            pass
<code-line class="line-numbers-rows"></code-line>    f.close()
<code-line class="line-numbers-rows"></code-line>    print("Xray Scan End~")
<code-line class="line-numbers-rows"></code-line>    return
<code-line class="line-numbers-rows"></code-line>​
<code-line class="line-numbers-rows"></code-line>def main():
<code-line class="line-numbers-rows"></code-line>    print(logo())
<code-line class="line-numbers-rows"></code-line>    pppGet()
<code-line class="line-numbers-rows"></code-line>    return
<code-line class="line-numbers-rows"></code-line>​
<code-line class="line-numbers-rows"></code-line>if __name__ == '__main__':
<code-line class="line-numbers-rows"></code-line>    main()</code-pre>

运行截图为:

其实这个批量的功能还是挺重要的,或许是Xray开发团队不想扫描器被滥用的原因才没有实现该功能,把代码放在了github上:

https://github.com/Cl0udG0d/pppXray

 


__EOF__

本文作者春告鳥
本文链接https://www.cnblogs.com/Cl0ud/p/14001908.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   春告鳥  阅读(8187)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示