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

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

不打游戏只看视频,骁龙和天玑竟然能拉开这么大差距?

不打游戏只看视频,骁龙和天玑竟然能拉开这么大差距?

事情是这样的。最近托尼有位同事因为之前被使用三星 4nm 工艺的骁龙 8 Gen 1 折腾怕了,所以他在把原来的旧手机卖了之后,转手换了台搭载天玑 9000 的手机。一开始他对这台手机可以说非常满意,打游戏时发热终于没那么严重了,然而时间一长,他发现手机电量貌似掉的有点快,续航并没有想象中那么顶。本...

国产办公软件崛起,金山WPS月活用户已超5.7亿;Meta指责苹果夺走部分广告收入;Python 3.11 发布|极客头条

206 篇文章201 订阅订阅专栏「极客头条」—— 技术人员的新闻圈!CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧。整理 | 梦依丹出品 | CSDN(ID:CSDNnews)一分钟速览新闻点!国产办公软件崛起 金山WPS月活用户已超5.7亿美团...

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

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

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

蔚来将上线“跨级换电”:支持 100kWh 电池,日租 68 元

蔚来将上线“跨级换电”:支持 100kWh 电池,日租 68 元

IT之家 10 月 27 日消息,蔚来宣布试点“跨级换电”服务,即标准续航电池包用户可以选择更换为长续航电池包,按日计费,先用后付。而长续航电池包用户也可以换为标准续航电池包,可按日补偿积分。70/75 度升至 100 度,每日使用费 68 元;100 度降至 70/75 度,每日补偿 200 积分...

任务栏总是卡死是什么原因 三种win10任务栏频繁卡死的解决方法

任务栏总是卡死是什么原因 三种win10任务栏频繁卡死的解决方法

 任务栏总是卡死没反应想必很多小伙伴都碰到过吧,尤其是win10系统碰到这种情况的时候很多,小编在网上仔细研究了一番,发现出现这种情况的原因是多样的,小编用自己的联想笔记本总结了一些原因,当然了也为大家附带了三种解决方法,大家快来看看吧。   相关推荐:电脑任务栏没反应但是桌面有反应怎么办...

中小企业网络营销的5个常用方法!

[SEO教程]中小企业网络营销的5个常用方法! 0 2018-07-31 19:00:43 2018年最火项目 电销机器人等你加盟  对于中小企业而言,可利用的预算相对有限,因此,企业主会通过线上渠道的各种途径,开展营销与推广的工作,这里有常用的5个小策略分享给大家。  ...

发表评论

访客

看不清,换一张

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