-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathaioscan_2020_0796.py
63 lines (54 loc) · 2.26 KB
/
aioscan_2020_0796.py
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
import sys
import struct
import asyncio
from netaddr import IPNetwork
pkt = b'\x00\x00\x00\xc0\xfeSMB@\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x1f\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00$\x00' \
b'\x08\x00\x01\x00\x00\x00\x7f\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00x\x00\x00\x00\x02\x00\x00\x00' \
b'\x02\x02\x10\x02"\x02$\x02\x00\x03\x02\x03\x10' \
b'\x03\x11\x03\x00\x00\x00\x00\x01\x00&\x00\x00' \
b'\x00\x00\x00\x01\x00 \x00\x01\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00' \
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x00' \
b'\n\x00\x00\x00\x00\x00\x01\x00\x00\x00\x01\x00' \
b'\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00'
async def connet(ip):
try:
fut = asyncio.open_connection(ip, 445)
reader, writer = await asyncio.wait_for(fut, timeout=3)
writer.write(pkt)
await writer.drain()
size, = struct.unpack(">I", (await reader.read(4)))
ret = await reader.read(size)
if ret[68:70] != b"\x11\x03" or ret[70:72] != b"\x02\x00":
print(f"[-]{ip} Not vulnerable.")
else:
print(f"[*]{ip} Vulnerable!!")
except (asyncio.TimeoutError, ConnectionRefusedError, OSError):
print(f'[-]{ip!r}connection failed.')
except Exception:pass
async def main(ips):
tasks = []
ips = [str(ip) for ip in IPNetwork(ips)]
for ip in ips:
tasks.append(asyncio.create_task(connet(ip)))
await asyncio.wait(tasks)
if __name__ == '__main__':
if len(sys.argv) > 1:
ips = sys.argv[1]
asyncio.run(main(ips))
else:
print('''
Usage : python main.py 10.10.10.10
python main.py 10.10.10.0/24
Info : 使用协程加快了扫描速度
请在python 3.7及以上的版本运行
POC : https://github.com/ollypwn/SMBGhost/blob/master/scanner.py
''')