• TCP/UDP客户端


    Python 网络编程————模块socekt

    在渗透测试的过程中,经常会遇到需要创建一个TCP客户端来连接服务器、发送垃圾数据、进行模糊测试活进行其他任务的情况。

    简单的TCP客户端代码:

    #!/usr/bin/env python3.5
    #filename = TCP_client.py

    import socket

    target_host = "www.qq.com"
    target_port = 80

    #建立一个socket对象

    client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

    #连接客户端
    client.connect((target_host,target_port))

    #发送一些数据
    a = "GET / HTTP/1.1 Host: qq.com "
    b =bytes(a,encoding='utf-8')
    client.send(b)

    #接收一些数据
    response = client.recv(4096)

    print(response) 

    解析:

    AF_INET =  IPv4 address-family

    SOCK_STREAM = TCP-Client

    在"#发送数据"这个代码端中,python3要求.send( )之后必须是bytes,所以通过我们把需要发送给客户端的数据

    通过变量 a 指定,这个a 是一个字符串。通过python3内置函数 bytes( )来转换从类型bytes,然后发送给client

    UDP客户端:

    import socket

    target_host = '127.0.0.1'
    target_port = 53

    #建立一个socket对象
    client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    #转换str到bytes
    a = "AAABBBBCCCC"
    b = bytes(a,encoding='utf-8')

    #发送一些数据
    client.sendto(b,(target_host,target_port))

    #接收数据
    data, addr =
    client.recvfrom(4096)

    #打印数据
    print(data)

    大体上,TCP与UDP客户端是没有很大区别的,只是套接字类型改为SOCK_DGRAM,同时不需要事先建立连接,

    因为UDP是面向无连接的。在发送数据的时候只需要使用函数sendto( )

    最后使用recvfrom( )函数来接收返回的数据包。

  • 相关阅读:
    volatile双重检查锁定与延迟初始化
    Maven内置属性,pom属性
    spring-如何将spring源码成功导入Eclipse中
    Java8-函数复合用法
    JavaSE-序列化和反序列化
    JavaSE-java8-谓词复合的用法
    表单验证:nice Validator
    eclipse ide for java ee developers 开发环境搭建(J2EE) 【转载】
    表格
    MyBatis子查询
  • 原文地址:https://www.cnblogs.com/alben-cisco/p/6885085.html
Copyright © 2020-2023  润新知