Python黑帽子--黑客与渗透测试编程之道 python3 实现代码

最近在看 Python黑帽子–黑客与渗透测试编程之道 这本书 发现这本书的代码实现都是使用python2 的于是我就想使用python3来实现 缓慢更新中
python2版本 有一个博主写的特别好 这是链接 http://blog.csdn.net/u012763794/article/details/50612756 部分注释我使用的这位博主的 而且这位博主的注释写的比我好 我的注释写的很少
这位博主也也不错 他对代码的每一个模块做了解释 http://blog.csdn.net/SKI_12/article/details/71152826
发现了一位用python3来实现的博主
https://my.oschina.net/oby/blog/804064#comment-list

TCP客户端
代码

import socket
target_host = "www.baidu.com"
target_port = 80
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
client.connect((target_host,target_port))
aaa = "GET / HTTP/1.1\r\nHost:baidu.com\r\n\r\n"
client.send(str.encode(aaa))  #这里只需要注意 send在python3中 接收的是 bytes 只需要做一个转换就好
response = client.recv(4096)
print (bytes.decode(response))

返回的信息

UDP客户端
代码

import socket
target_host = '127.0.0.1'
terget_post =  12138
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
client.sendto(str.encode('sdsdsdsdsdsd'),(target_host,terget_post)) #和tcp一样在这里做一个转换
data, addr = client.recvfrom(4096)
print (data)

使用nc验证 这里我就不贴验证的图了

TCP服务端
代码

import socket
import threading
bing_ip = '0.0.0.0'
bing_port = 12138
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind((bing_ip,bing_port))
server.listen(5)    #最大连接数 
print ("[*] listen on %s:%d" % (bing_ip,bing_port))
def handle_client(client_socket):   #客户端处理进程
    request = client_socket.recv(1024)    
    print ("[*] Received: %s" % request)   #接受类型并打印
    client_socket.send(str.encode('ACK!'))
    client_socket.close()
while True:
    client,addr = server.accept()
    print ("[*] Accepted connection from: %s:%d" % (addr[0],addr[1]))
    client_handler = threading.Thread(target=handle_client,args=(client,))
    client_handler.start()

这里的验证可以使用之前的tcp客户段来验证

取代netcat
这个简直了 由于python3 区分了str 和 bytes 所以有很多坑
这个我改了两个版本 一个是只能在linux上可以正常使用的版本 一个是兼容windows和linux的版本
兼容版 我引入了一个新的第三方库 chardet 来判断 字符编码

先贴linux版本

import sys
import socket 
import getopt
import threading
import subprocess
listen = False
command = False
upload = False
execute = ""
target = ""
upload_destination = ""
port = ""
def run_command(command): #命令执行模块
    command = command.rstrip()
    try:
        print (command)
        output = subprocess.check_output(command, stderr = subprocess.STDOUT, shell = True )
    except:
        output = "Failed to execute command. \r\n"
    return output #返回执行的结果 
def client_handler(client_socket):# 上传 命令执行相关功能 
    global upload
    global execute
    global command
    if len(upload_destination):
        file_buffer = ""
        while True:
            data = client_socket.recv(1024)
            if not data:
                break
            else:
                file_buffer += data
        try:
            file_descriptor = open(upload_destination,"wb")
            file_descriptor.write(file_buffer)
            file_descriptor.close()
            client_socket.send(str.encode("Successfully saved file to %s\r\n" % upload_destination))
        except:
            client_socket.send(str.encode("Failed to save file to %s\r\n" % upload_destination))
    if len(execute):
        output = run_command(execute)
        client_socket.send(str.encode(output))
    if command:
        while 
  • 4
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
Python-Django 是一个流行的 Web 开发框架,而多功能 Web 应用渗透测试系统则是指的一个系统能够对各种不同类型的 Web 应用进行渗透测试,同时还具备多种功能。 Python-Django 的优势在于其简单易用、灵活性高以及开发效率高。使用 Python-Django 开发一个多功能 Web 应用渗透测试系统具备以下几个方面的优势: 1. 强大的渗透测试功能:Python-Django 可以实现对 Web 应用中可能存在的漏洞进行渗透测试,比如 SQL 注入、跨站脚本攻击等,提供了一系列的工具和库来实现这些功能。 2. 可扩展性:Python-Django 框架本身就具备良好的可扩展性,可以根据实际需求添加新的功能或模块,满足不同用户的要求。 3. 用户权限管理:Web 应用渗透测试系统需要具备用户权限管理的功能,以便不同用户可以根据其角色进行权限管理和操作。Python-Django 提供了丰富的用户认证和授权机制,可以很方便地实现用户权限管理。 4. 数据库支持:Web 应用渗透测试系统需要对各种渗透测试数据进行存储和管理,Python-Django 提供了对多种数据库的支持,如 MySQL、SQLite、PostgreSQL 等,可以根据实际需要选择合适的数据库。 综上所述,使用 Python-Django 开发一个多功能的 Web 应用渗透测试系统可以实现强大的渗透测试功能,具备良好的可扩展性和用户权限管理,并提供了丰富的数据库支持。这将使得渗透测试人员可以更加高效和便捷地进行各种类型的渗透测试工作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值