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

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

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

《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渗透测试入门——基础的网络编程工具” 的相关文章

六零后已经渐渐老了,都是独生子女家庭,以后怎样养老?

六零后已经渐渐老了,都是独生子女家庭,以后怎样养老?

我是68年的,今年54岁,我也只有一个女儿,以后怎么养老的问题,我在十年前就开始准备了,所以我的养老问题我现在一点都不担心,因为我早已经准备好了。我从上班到退休一直在银行储蓄柜工作。工作小柜台,人生大舞台,在几十年的工作中我见识了形形色色的人,也见过很多老人特别是没有退休金的老人晚年凄苦的生活。所以...

如何让自己的努力更有效率?

如何让自己的努力更有效率?

收到了某个朋友发来的困惑咨询,抽象出来后整理出如下问题:为何自己很努力但觉得没有成长,做了很多事情却感觉没有核心竞争力,有浑身的精力不知道该往何处发力,应该如何破局?我是一名技术型产品经理,已经工作了3年,但是感觉自己陷入了成长迷茫期。 团队很重视技术,我花了很多时间来弥补技术知识,但是发现干不过研...

专访中凝科技90后董事长王天赋:7年打造气凝胶“小巨人”,未来3年冲刺上市

专访中凝科技90后董事长王天赋:7年打造气凝胶“小巨人”,未来3年冲刺上市

本文来源:时代周报 作者:黄嘉祥气凝胶是世界上密度最小的固体,被誉为可以改变世界的多功能新材料,这条超百亿级别的新赛道正在崛起,入局者越来越多。90后“创二代”王天赋正是气凝胶赛道的创业者之一,他在2015年创办了深圳中凝科技有限公司(下称“中凝科技”),带领团队研制气凝胶,在全球首创气凝胶无氯常压...

2022年,微信收款出“新规”,余额会受到影响吗?个体商家要留心

2022年,微信收款出“新规”,余额会受到影响吗?个体商家要留心

当今社会市场经济发展,在近十年内,我们社会的支付方式也发生了翻天覆地的变化,近年来大家尤其是年轻人出门购物基本不带现金,使用微信,支付宝等扫一扫,付款码等功能便可以轻松完成支付,在近几年,我们在买东西时,看到几乎所有商家都将自己的收款码打印出来摆放在收银台,埋有许多配套的扫码工具。在这种支付方式的广...

一个月收入三四万是什么感觉?

一个月收入三四万是什么感觉?

海员蒙哥10月17日关注除了飘还是飘,如今负债20多万!2019年我投资了30万做了美业连锁,最高峰一个月赚了7万,真得是穷人乍富,走路都是飘得!最直观的变化就是以前抽8块钱得紫树,从那以后最低都是天叶,自己抽得加给人散得一天得三包,就喜欢听别人说一句,你抽这么好得烟啊!自尊心得到了强大的满足!以前...

每天坚持看书有什么变化?对人有什么影响?

每天坚持看书有什么变化?对人有什么影响?

高中毕业,实际初中水平的我,却有上千本书,这还不是我书最多的时候。现在每天读书2-3个小时.打算这辈子好好研究透,读它十几遍。我饭可以不吃饭,但绝对不能一天不读书。之所以爱书如命,是因为一本书救了我,并且改变了我的后半生。你相信吗?我现在把300多万债务还清,而且能靠写作养活自己,交易开始有点起色,...

发表评论

访客

看不清,换一张

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