第一天接触socket模块,写个单线程端口扫描器
from socket import *
def portScan(ip,port):
try:
s=socket(AF_INET,SOCK_STREAM)
result=s.connect_ex((ip,port))
if result==0:
print("%d is open"%port)
else:
print("%d is close"%port)
except:
print("error")
def main():
setdefaulttimeout(1)
for p in range(1,65535):
portScan("127.0.0.1",p)
if __name__=='__main__':
main()
try:
s=socket(AF_INET,SOCK_STREAM)
result=s.connect_ex((ip,port))
if result==0:
print("%d is open"%port)
else:
print("%d is close"%port)
except:
print("error")
def main():
setdefaulttimeout(1)
for p in range(1,65535):
portScan("127.0.0.1",p)
if __name__=='__main__':
main()
龟速扫描。。。等后面学了多线程再改进一下
改进:
from socket import * import threading import time def portScan(ip,port,delay): s = socket(AF_INET, SOCK_STREAM) s.settimeout(delay) try: result=s.connect_ex((ip,port)) if result==0: print("[+]%d is open"%port) #else: #print("[-]%d is close"%port) s.close() except: print("error") def main(): setdefaulttimeout(1) for p in range(1,65535): thread = threading.Thread(target=portScan, args=("127.0.0.1", p , 0.01)) thread.start() time.sleep(0.006) thread.join() if __name__=='__main__': main()
本文介绍了如何使用Python的socket模块实现一个简单的单线程端口扫描器,并进一步通过引入多线程技术来提升扫描效率。通过对比两种实现方式,读者可以了解到多线程对于此类任务性能的显著改善。
2491

被折叠的 条评论
为什么被折叠?



