作者名:Demo不是emo
主页面链接:主页传送门
创作初心:舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构每日emo:唯有信仰与日月亘古不变
经过一段时间python黑帽编程的学习,我们的漏洞扫描器搭建之旅就要开始了,最开始当然要做的就是端口扫描器,所以这篇博客我们的内容就是搭建一个TCP扫描器,来看看吧
侦查是任何网络攻击的第一步。在选择目标的漏洞利用程序之前攻击者必须找 出漏洞在哪。在下面的章节中,我们将建立一个小型的侦查脚本用来扫描目标 主机开放的 TCP 端口。
代码如下
-
# coding=UTF-8
-
import optparse
-
import socket
-
import threading
-
-
screenLock = threading.Semaphore(value=
1)
-
-
-
def
connScan(
tgtHost, tgtPort):
-
try:
-
connSkt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-
connSkt.connect((tgtHost, tgtPort))
-
print(
'[+]%d/tcp open' % tgtPort)
-
except Exception:
-
print(
'[-]%d/tcp closed' % tgtPort)
-
try:
-
# connSkt.send('ViolentPython\r\n')
-
results = connSkt.recv(
1024).decode(
"UTF-8")
-
screenLock.acquire()
-
print(
'[+]%d/tcp info: ' % tgtPort +
str(results))
-
except Exception:
-
screenLock.acquire()
-
print(
'[-]%d can"t receive info' % tgtPort)
-
finally:
-
screenLock.release()
-
connSkt.close()
-
-
-
def
portScan(
tgtHost, tgtPorts):
-
try:
-
tgtIP = socket.gethostbyname(tgtHost)
-
except Exception:
-
print(
"[-] Cannot resolve '%s': Unknown host" % tgtHost)
-
return
-
try:
-
tgtName = socket.gethostbyaddr(tgtIP)
-
print(
'\n[+] Scan Results for: ' + tgtName[
0])
-
except Exception:
-
print(
'\n[+] Scan Results for: ' + tgtIP)
-
socket.setdefaulttimeout(
1)
-
for tgtPort
in tgtPorts:
-
print(
'Scanning port ' +
str(tgtPort))
-
t = threading.Thread(target=connScan, args=(tgtHost,
int(tgtPort)))
-
t.start()
-
-
-
def
main():
-
parser = optparse.OptionParser(
'usage %prog –H<target host> -p <target port>')
-
parser.add_option(
'-H', dest=
'tgtHost',
type=
'string',
help=
'specify target host')
-
parser.add_option(
'-p', dest=
'tgtPort',
type=
'int',
help=
'specify target port')
-
(options, args) = parser.parse_args()
-
tgtHost = options.tgtHost
-
tgtPort = options.tgtPort
-
args.append(tgtPort)
-
if (tgtHost
is
None) | (tgtPort
is
None):
-
print(
'[-] You must specify a target host and port[s]!')
-
exit(
0)
-
portScan(tgtHost, args)
-
-
-
if __name__ ==
'__main__':
-
main()
效果展示
这个端口扫描器有两个作用,
一个就是探测目标主机的指定端口开放状态
另外一个就是探测指定端口运行的服务信息
这个代码拿去就可以用,同时也在我的github和gitee上更新了 ,里面还附带有详细的用法说明,工具后面也会不断更新,欢迎持续关注
Gitee地址:PortScan_pro: TCP端口扫描器加强版 (gitee.com)
转载:https://blog.csdn.net/qq_63844103/article/details/128454209
查看评论