飞道的博客

【Python黑帽子】——搭建TCP端口扫描器

462人阅读  评论(0)

作者名:Demo不是emo 

主页面链接:主页传送门
创作初心:
舞台再大,你不上台,永远是观众,没人会关心你努不努力,摔的痛不痛,他们只会看你最后站在什么位置,然后羡慕或鄙夷
座右铭:不要让时代的悲哀成为你的悲哀
专研方向:网络安全,数据结构

每日emo:唯有信仰与日月亘古不变

       经过一段时间python黑帽编程的学习,我们的漏洞扫描器搭建之旅就要开始了,最开始当然要做的就是端口扫描器,所以这篇博客我们的内容就是搭建一个TCP扫描器,来看看吧

侦查是任何网络攻击的第一步。在选择目标的漏洞利用程序之前攻击者必须找 出漏洞在哪。在下面的章节中,我们将建立一个小型的侦查脚本用来扫描目标 主机开放的 TCP 端口。

代码如下


  
  1. # coding=UTF-8
  2. import optparse
  3. import socket
  4. import threading
  5. screenLock = threading.Semaphore(value= 1)
  6. def connScan( tgtHost, tgtPort):
  7. try:
  8. connSkt = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
  9. connSkt.connect((tgtHost, tgtPort))
  10. print( '[+]%d/tcp open' % tgtPort)
  11. except Exception:
  12. print( '[-]%d/tcp closed' % tgtPort)
  13. try:
  14. # connSkt.send('ViolentPython\r\n')
  15. results = connSkt.recv( 1024).decode( "UTF-8")
  16. screenLock.acquire()
  17. print( '[+]%d/tcp info: ' % tgtPort + str(results))
  18. except Exception:
  19. screenLock.acquire()
  20. print( '[-]%d can"t receive info' % tgtPort)
  21. finally:
  22. screenLock.release()
  23. connSkt.close()
  24. def portScan( tgtHost, tgtPorts):
  25. try:
  26. tgtIP = socket.gethostbyname(tgtHost)
  27. except Exception:
  28. print( "[-] Cannot resolve '%s': Unknown host" % tgtHost)
  29. return
  30. try:
  31. tgtName = socket.gethostbyaddr(tgtIP)
  32. print( '\n[+] Scan Results for: ' + tgtName[ 0])
  33. except Exception:
  34. print( '\n[+] Scan Results for: ' + tgtIP)
  35. socket.setdefaulttimeout( 1)
  36. for tgtPort in tgtPorts:
  37. print( 'Scanning port ' + str(tgtPort))
  38. t = threading.Thread(target=connScan, args=(tgtHost, int(tgtPort)))
  39. t.start()
  40. def main():
  41. parser = optparse.OptionParser( 'usage %prog –H<target host> -p <target port>')
  42. parser.add_option( '-H', dest= 'tgtHost', type= 'string', help= 'specify target host')
  43. parser.add_option( '-p', dest= 'tgtPort', type= 'int', help= 'specify target port')
  44. (options, args) = parser.parse_args()
  45. tgtHost = options.tgtHost
  46. tgtPort = options.tgtPort
  47. args.append(tgtPort)
  48. if (tgtHost is None) | (tgtPort is None):
  49. print( '[-] You must specify a target host and port[s]!')
  50. exit( 0)
  51. portScan(tgtHost, args)
  52. if __name__ == '__main__':
  53. main()

效果展示

这个端口扫描器有两个作用,

一个就是探测目标主机的指定端口开放状态

另外一个就是探测指定端口运行的服务信息 

 这个代码拿去就可以用,同时也在我的github和gitee上更新了 ,里面还附带有详细的用法说明,工具后面也会不断更新,欢迎持续关注

Gitee地址:PortScan_pro: TCP端口扫描器加强版 (gitee.com)


转载:https://blog.csdn.net/qq_63844103/article/details/128454209
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场