python是个功能强大的玩意,既然功能强大,那么就要好好玩
先来简单的获取ip、用户名和mac地址
注:获取局域网ip
import uuid
# 获取本机mac地址
def get_mac_adderss():
mac=uuid.UUID(int = uuid.getnode()).hex[-12:]
return ":".join([mac[e:e+2] for e in range(0,11,2)])
dd = get_mac_adderss()
print(dd)
import socket
#获取本机电脑名
myname = socket.getfqdn(socket.gethostname( ))
#获取本机ip
myaddr = socket.gethostbyname(myname)
print(myname)
print(myaddr)
# 获取当前用户名
def user():
import getpass
user_name = getpass.getuser()
return user_name
print(user())
嗯嗯,到这就很完美啦,接下来就要搞端口啦,怎么说呢,本来也是一件很简单的事,但是但是我智商的问题导致我在这块瞎捣鼓了半天,话就不多说啦,直接给各位客官上代码
from socket import *
import threading #导入线程相关模块
lock = threading.Lock()
openNum = 0
threads = [] #定义线程列表
def portScanner(host,port):
global openNum
try:
s = socket(AF_INET,SOCK_STREAM)
s.connect((host,port))
lock.acquire() #因为openNum是个全局变量,每个线程不能对openNum 同时操作,只有获得所的线程才可以操作 openNum
openNum+=1
print('[+] %d open' % port)
lock.release() #线程对全局变量openNum操作完成后,需要释放所,其他线程才可以继续修改全局变量openNum
s.close()
except: #如果端口没开,那么就直接pass,不执行其他输出操作。
pass
def main():
setdefaulttimeout(1)
ports = [3306,445,3389,80,443,21,22,8080] #定义要扫描的端口,也可以在for中使用range进行定义,看个人需求,例如 for p in range(1,1024):
for p in ports:
t = threading.Thread(target=portScanner,args=(myaddr,p))
threads.append(t)
t.start()
for t in threads: #等待线程列表中的所以线程的执行完毕
t.join()
print('[*] The scan is complete!')
print('[*] A total of %d open port' % (openNum))
if __name__ == '__main__':
main()
input('按回车键退出') # 这个可以不要,这个是我用pyinstaller的时候写上的,为了防止程序运行窗口关闭 我也不知道为啥想把这个打包,就是想玩玩
就到这,额。。。。。没了就这样吧,虽然程序烂了点,但是又不是不能用,哼!!不接受反驳