用Python轻松实现一个简单的TCP客户端和服务端

2022-04-24 577阅读

温馨提示:这篇文章已超过735天没有更新,请注意相关的内容是否还可用!

在渗透测试过程中,经常需要创建一个TCP客户端,用来测试服务、发送数据、进行 fuzz 等等。如果黑客潜伏在某大型企业的内网环境中,则不太可能直接获取网络工具或编译器,有时甚至连复制/粘贴或者连接外网这种最基本的功能都用不了。在这种情况下,能创建一个 TCP 客户端将会是一项极其有用的能力。

客户端代码

from doctest import SkipDocTestCase
import socket
from urllib import response

from black import target_version_option_callback

target_host = "127.0.0.1"
target_port = 9998

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

client.connect((target_host, target_port))

client.send(b"GET / HTTP/1.1\r\nHost: 127.0.0.1\r\n\r\n")

response = client.recv(4096)

print(response.decode())
client.close()

服务端代码

from http import client
import socket
import threading

IP = '127.0.0.1'
PORT = 9998


def main():
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((IP, PORT))
server.listen(5)
print(f'[*] Listening on {IP}:{PORT}')

while True:
client, address = server.accept()
print(f'[*] Acceped connection from {address[0]}:{address[1]}')
client_handler = threading.Thread(
target=handle_client, args=(client,))
client_handler.start()


def handle_client(client_socket):
with client_socket as sock:
request = sock.recv(1024)
print(f'[*] Received: {request.decode("utf-8")}')
sock.send(b'Hello')


if __name__ == '__main__':
main()

运行结果如下&

在这里插入图片描述

本文代码来源为《Python黑帽子》一书,该内容仅供学习研究之用,不得传播,24小时内应予以删除,如若喜欢请购买正版书籍。