当前位置:首页 > 文章 > 正文内容

python渗透测试入门——基础的网络编程工具

廖万里3年前 (2022-10-27)文章83663

《Python黑帽子——黑客与渗透测试编程之道学习》这本书是我在学习安全的过程中发现的在我看来十分优秀的一本书,业内也拥有很高的评价,所以在这里将自己的学习内容分享出来。

1.基础的网络编程工具。

实验环境:vscode+kali虚拟机

(1)TCP客户端

python渗透测试入门——基础的网络编程工具
 ctypes.wintypes  http  pydoc  urllib = = 80==client.recv(4096
python渗透测试入门——基础的网络编程工具

 首先创建一个带有AF_INET和SOCK_STREAM参数的socket对象。AF_INET参数表示我们将使用标准的IPv4地址或主机名,SOCK_STREAM表示这是一个TCP客户端。然后,我们将该客户端连接到服务器,并发送一些bytes类型的数据。最后一步,接收返回的数据并将其打印到屏幕上,再关闭socket。以下是运行结果。

python渗透测试入门——基础的网络编程工具

(2) UDP客户端

python渗透测试入门——基础的网络编程工具
from http import clientimport socket

target_host = "127.0.0.1"target_port = 80client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

client.sendto(b"AAABBBCCC",(target_host,target_port))

data, addr = client.recvfrom(4096)print(data.decode())

client.close()
python渗透测试入门——基础的网络编程工具

UDP客户端和TCP客户端相差不大,并且作用也相去不远,在创建socket对象时,需要将socket类型改成SOCK_DGRAM,之后调用sendto()函数即可。UDP是一个无连接协议,所以不需要connect()函数建立连接。recvfrom()函数不仅返回接收到的数据,还会返回详细的数据来源信息(主机名和端口号)。。

(3)TCP服务端(多线程)

python渗透测试入门——基础的网络编程工具
from http import client, serverimport socketimport threadingfrom urllib import request

IP = '0.0.0.0'PORT = 9998def 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'[*] Accepted 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'ACK')if __name__ == '__main__':
    main()
python渗透测试入门——基础的网络编程工具

我们先指定服务器应该监听哪个IP地址和端口。接着,让服务器开始监听,并把最大连接数设为5。下一步,让服务器进入主循环中,并在该循环中等待外来连接。当一个客户端成功建立连接的时候,将接收到的客户端socket对象保存到client变量中,将远程连接的详细信息保存到address变量中。然后,创建一个新的线程,让它指向handle_client函数,并传入client变量。创建好后,我们启动这个线程来处理刚才收到的连接,与此同时服务端的主循环也已经准备好处理下一个外来连接。而handle_client函数会调用recv()接收数据,并给客户端发送一段简单的回复。那么我们用前面写好的TCP客户端给服务端发送几个测试包。

首先开启服务端:

python渗透测试入门——基础的网络编程工具

 

 在客户端发送测试包,即可看到:

python渗透测试入门——基础的网络编程工具

 

 这次的分享先到这里,下一次将扩充这次这几个实验的功能。


本文链接:https://www.kkkliao.cn/?id=164 转载需授权!

分享到:

版权声明:本文由廖万里的博客发布,如需转载请注明出处。


“python渗透测试入门——基础的网络编程工具” 的相关文章

人的寿命?科学家找到了答案,竟和走路速度有关?

人的寿命?科学家找到了答案,竟和走路速度有关?

关于走路每个人都有不同的说法,有些人觉得适度走路能走掉很多疾病,有些人觉得坚持走路会把膝盖走坏,有些人在走路中获得了益处,但有些人却走出了问题。还有人说走路和寿命之间存在联系,那么这种说法是否准确呢?不妨让我们一起来看看科学家的答案。人的寿命竟然跟走路速度有关?科学家找到答案,你走路够快吗?美国匹兹...

6G专利申请量比拼:美国占比35.2%,日本占比9.9%,中国排第几?

6G专利申请量比拼:美国占比35.2%,日本占比9.9%,中国排第几?

5G对于现在的人们来说已经不是什么神秘的存在,很多国家通过近些年的研究都已经逐步掌握了5G技术。不过就5G技术发展的成熟度、设备完善程度以及信号铺设范围来说,我国都是当之无愧的世界第一。但是随着科技技术的不断发展,对于6G的技术研发也被提上日程。不少国家都开始攻克6G技术,并取得了各项专利。根据有关...

你最讨厌QQ什么?

你最讨厌QQ什么?

作为中国最早的社交软件之一, QQ承载着无数的青春。QQ最初诞生的时候,是为了方便人们之间的交流而诞生的。那时候 QQ作为我们联系的主要工具,人们之间可以进行即时通讯。我们每天都会在 QQ上和不同的人进行沟通互动。聊天的内容也十分的丰富,有的时候聊天的内容甚至超过了现在人们生活的内容。而其中最让人讨...

六年前端面试报告

六年前端面试报告

2022.10.20 在当前公司待了两年多,被离职了,拿了点赔偿金继续面试。薪资期望 13-15, 趁着今天1024整理下面试过程。上一次面试我是4年经验,简历也好改,加上两年经验,补上现公司项目就出去找工作了。简历改完后,首先分析下自己现阶段水平,大概能要多少,定一个期望薪资。再就是背面试题了。自...

netcore有好用的word(docx)、excel(xlsx)及pdf 处理库吗?

如题,所有需求都基于开源免费库基础word主要用来做模版替换,能有docx转pdf最好excel主要用来导入导出,能生成导入模版文件,能设置每个导入模版的下拉框数据(能从数据库读数据)pdf主要用来添加水印文件或者图片。在此感谢分享...

宇宙中发现比光速更快的速度?事实被澄清,这不过是种错觉

宇宙中发现比光速更快的速度?事实被澄清,这不过是种错觉

有比光速更快的速度吗?来自遥远爆炸星系的伽马射线爆发(如图中所示)发射的光比我们所看到的可见光更强大,但这并不意味着它们的速度更快。2018年,天文学家在研究哈勃太空望远镜图像中的两颗碰撞中子星时注意到了一个奇怪的现象:一股明亮的高能粒子流,以 4~7 倍于光速的速度从合并处喷向地球方向。这似乎有些...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。