python获取端口、ip、用户名、mac地址

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的时候写上的,为了防止程序运行窗口关闭  我也不知道为啥想把这个打包,就是想玩玩

就到这,额。。。。。没了就这样吧,虽然程序烂了点,但是又不是不能用,哼!!不接受反驳

你可能感兴趣的:(python)