iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >千锋扣丁学堂Python培训之黑客们会
  • 956
分享到

千锋扣丁学堂Python培训之黑客们会

黑客千锋扣丁学堂 2023-01-31 08:01:15 956人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

今天千锋扣丁学堂python培训老师给大家分享一篇关于黑客们会用到哪些关于Python技术的详细介绍,首先Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的(除了用Ruby写的安全漏洞检测

今天千锋扣丁学堂python培训老师给大家分享一篇关于黑客们会用到哪些关于Python技术的详细介绍,首先Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的(除了用Ruby写的安全漏洞检测工具)。Python允许开发者编写脚本处理远程服务,处理二进制文件,与C语言库(或者Java的Jython/。Net的IronPython)以快速且简单的方式进行交互。它“内置电池”原则的巨大标准库,为开发省去对其它框架或者语言的依赖。(注:大多数例子基于python3.0以上版本编写的,有些可以兼容python所有分支)。

1.环境配置

对于你要编写的大多数工程或者脚本,建议读者们最好将所有的依赖放在同一个位置(除了有些在特殊工程中才用到的依赖)。为了满足上述要求,需要用到一个叫virtualenv的工具(Python3.3已经包括该工具),这个工具有一个简洁的功能,就是在不打乱全局环境的基础上,为你的Python工程生成独立的环境:

$ virtualenv <新环境的路径>

$ python3 -mvenv <新环境的路径>

$ source <新环境的路径>/bin/activate

$ deactivate

2.安装依赖包

很多时候大家会发现,借助大型python社区中的python库编写的个人工具,可以帮助我们很快得到结果。你可以通过个人软件管理包或者可用的python软件包管理器安装这些库,其中最权威的就是pip工具了。有了pip,你可以全局安装这些依赖包(#pipinstall),或者逐用户安装(

pipinstall)。读者可以手动地使用个人发行版包管理器,或者基于Python3.4提供的库,安装pip包。

有一个基本的python包叫iPython,通常在我不是100%肯定该如何解决当前任务,想尝试做些实验时,我会安装这个依赖包。IPython是常用的python命令行,它是基于Python编写的,有以下几个特点:

动态对象内省

通过Tab完成本地命名空间

持续的历史记录

会话日志

路径补全

JIT调试器

自动缩进

和平常一样,通过pip安装也很简单:$pipinstallipython

如果你想创建教程或者其它文本文件,ipython中的笔记本特性(现在由jupyter提供)允许用户通过个人浏览器和IPython命令行交互,包括markdown、mathjax、matplotlib等工具支持。

(通过安装jupyter(pipinstalljupyter)可以使用它们,开启笔记本服务通过(jupyternotebook))。

如果你在操作时需要与包括JSON/XML的Http服务交互,我建议特别好用的requests依赖库。该python库可以处理与网页交互面对的各类操作,如编码、解码、参数、标记、重定向等。例如,请求和解析一个jsON资源的代码如下:

r = requests.get('https://api.GitHub.com/user', auth=('user', 'pass'))
r.json()
{u'private_GISts': 419, u'total_private_repos': 77, ...}

大多数html解析和交互工作都可以交给BeautifulSoup库,该python库可以在任何现在浏览器上处理HTML输入,包括修复受损代码。

3.与网络交互

我们大多数目标都有可能在网络上获取,安装好的标准库中已经包含了通用的、有用的python库,这里我对其进行简短的介绍。Socket模块是基于BSDsocketAPI的瘦包装器,它在所有的通用操作系统都可用。

所以如果你已经有C语言socket编程经验,你可以将你的代码轻易地翻译成python代码。有很多特别方便的函数,如create_connection函数可以创建tcpsocket,建立本机和给定主机或者端口的连接。另一个包装器是sendall方法,有些数据只有当所有给定数据都被发出,或者有错误发生才能在线路中传输,而sendall方法可以尝试重传这些数据。

from future import unicode_literals
import socket
s = socket.create_connection(('www.ernw.de', 80))
s.sendall(b'GET / HTTP/1.1
Host: www.ernw.de
')
print(s.recv(1024))

增加TSL加密链路也非常简单:

from future import unicode_literals
import socket
import ssl
s = socket.create_connection(('www.ernw.de', 443))
s = ssl.wrap_socket(s)
s.sendall(b'GET / HTTP/1.1
Host: www.ernw.de
')
print(s.recv(1024))

上述功能也可以在已经使用的连接中实现:

from future import unicode_literals
import socket
import ssl
s = socket.create_connection(('smtp.example.com', 25))
s.sendall(b'HELO smtp.example.com
STARTTLS
')
print(s.recv(1024))
s = ssl.wrap_socket(s)
s.sendall(b'MaiL FROM:<foo@example.com>
')
print(s.recv(1024))

如何你不需要这些低级服务交互,还有些模块可以提供高层服务交互:

smtplib

ftplib

poplib

imaplib

httplib(Python3以上版本的http客户端)

nntplib

telnetlib(应用于服务开发和之后的需要交互命令行会话)

xmlrpclib(Python3以上版本的xmlrpc客户端)

4.二进制操作或编码

当开发与服务或者文件交互的脚本时,你经常会发现需要将数据转换为不同格式或者编码。在Python2.x版本中,通常使用encode或者decode方法将字符串在不同格式之间转换。

"Hello World".encode("hex")
"AAA=".decode("base64")

很可惜,这种捷径在Python3.x版本中被取消了,encode和decode方法当前只可以实现字符编码,如utf-8,cp1250,iso8859,big5等。

作为替代,你现在只能使用bytes类型的两种方法实现十六进制编码:

bytes.fromhex('414141')
b'AAA'.hex() # 从Py3.5 开始

对于Base64编码,你需要使用另外的模块(在Python2.x版本中也有):

import base64
base64.b64encode(b'Hello World')
import codecs
codecs.encode(b'Hello World', 'base64')
import binascii
binascii.b2a_base64(b'Hello World')

URLs编码或者解析可以用urllib.parse模块实现(Python2.x版本中是urllib)

from urllib.parse import quote_plus, unquote_plus
quote_plus('Hello World+1=1337') # Hello+World%2B1%3D1337
unquote_plus('Hello+World') # Hello World

Python普通数据类型(如int,float,str)与二进制之间的一般转换,可以在stuct模块中实现:

import struct
struct.pack('<I', 1337) # convert the integer 1337 into its little endian, 32 bit representation
struct.unpack('<I', b'')[0] # returns tuple of results -> get only the first result
struct.unpack('<I4s', b'Test') # returns (16, b'Test')

Python3.2也可以使用int类型直接获取其二进制表示:

a = 1337
a.to_bytes(4, 'little') # 32 bit little endian
a.to_bytes(2, 'big') # 16 bit big endian
int.from_bytes(b'', 'little') # 16

ctypes模块还有一个特别棒的特征,如果你将cpython作为解译器(通常大家都是这样),就可以使用ctypes.Structure结构化描述C语言,获取它们的二进制表示,就好像从C应用程序中转储的一样。

from ctypes import *
import io
class TestStructure(Structure):
fields = (('foo', c_int), ('bar', c_char))
t = Test()
t.foo = 1337
t.bar = b'A'
b = io.BytesIO()
b.write(t)
b.seek(0)
print(b.getvalue()) # 9A
t2 = Test()
b = io.BytesIO(b'B')
b.readinto(t2)
print(t2.foo) # 16
print(t2.bar) # B

ctypes模块通常是Python程序集和C语言库之间的桥梁,不需要编写任何Python包装器。有了ctypes模块,你可以使用任何C语言库和其输出函数:

from ctypes import *
libc = ctypes.CDLL('libc.so.6')
libc.printf(b'Hello World
')

上文中提到Structure类型主要用于C语言库的交互,在函数调用过程中传递或者获取结构。

5.漏洞开发工具

很多CTF团体提供他们自己的的CTF解决方案框架,我发现来自Gallopsled的pwntools框架特别有用,尤其是开发远程elf二进制时,它包含很多方便的函数,例如位移计算(通过cyclic模式)、格式化字符串开发(普通数据馈送以及产生的格式化字符串)、跳转组合(基于ropgadget解析elf二进制以及提供生成简单跳转组合调用的包装器)和不同传输通道的全部API(称作管道)。这些可以让读者们开发gdb编译后端,同时简单地改变一行代码就可以传输到目标服务。

from pwn import *
r = gdb.debug('./level3')

r.recvuntil(': ')
r.sendline(EXPLOIT)
r.interactive() # 开启一个交互式会话

以上就是关于千锋扣丁学堂Python培训之黑客们会用到哪些关于Python技术的全部内容,想要了解更多关于Python和人工智能方面内容的小伙伴,请关注扣丁学堂Python培训官网、微信等平台,扣丁学堂IT职业在线学习教育平台为您提供权威的python开发环境搭建视频,Python培训后的前景无限,行业薪资和未来的发展会越来越好的,扣丁学堂老师精心推出的Python视频教程定能让你快速掌握Python从入门到精通开发实战技能。扣丁学堂Python技术交流群:279521237。

--结束END--

本文标题: 千锋扣丁学堂Python培训之黑客们会

本文链接: https://www.lsjlt.com/news/193396.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 千锋扣丁学堂Python培训之黑客们会
    今天千锋扣丁学堂Python培训老师给大家分享一篇关于黑客们会用到哪些关于Python技术的详细介绍,首先Python已经成为漏洞开发领域的行业标准,读者会发现大多数概念验证工具都是用Python语言编写的(除了用Ruby写的安全漏洞检测...
    99+
    2023-01-31
    黑客 千锋扣 丁学堂
  • 千锋扣丁学堂Python培训之Web版
    今天千锋扣丁学堂Python培训老师给大家分一篇关于PythonWeb版语音合成实例详解,首先语音合成技术能将用户输入的文字,转换成流畅自然的语音输出,并且可以支持语速、音调、音量设置,打破传统文字式人机交互的方式,让人机沟通更自然,下面...
    99+
    2023-01-31
    丁学堂 千锋扣 Web
  • 千锋扣丁学堂Python培训之代理IP
    今天千锋扣丁学堂Python培训老师给大家分享一篇Python代理IP爬虫新手使用的详细介绍,首先Python爬虫要经历爬虫、爬虫被限制、爬虫反限制的过程。当然后续还要网页爬虫限制优化,爬虫再反限制的一系列道高一尺魔高一丈的过程。爬虫的初...
    99+
    2023-01-31
    丁学堂 千锋扣 IP
  • 千锋扣丁学堂Python培训之操作Ex
    今天千锋扣丁学堂Python培训老师给大家分享一篇关于Python3操作Excel文件(读写)的简单实例详解,首先来安装版本安装的版本为0.9.3,但是官网的介绍还是关于Version0.7.3版本的,无妨,不影响理解。 安装 读Exce...
    99+
    2023-01-31
    操作 千锋扣 丁学堂
  • 千锋扣丁学堂Python培训之开发一个
    今天千锋扣丁学堂Python培训老师给大家分享一篇关于如何利用Python开发一个简单的猜数字游戏的详细介绍,文中通过示例代码介绍的非常详细下面我们一起来看一下吧。 游戏规则 玩家将猜测一个数字。如果猜测是正确的,玩家赢。如果不正确,程序...
    99+
    2023-01-31
    千锋扣 丁学堂 Python
  • 千锋扣丁学堂Python培训之十个安全
    今天千锋扣丁学堂Python培训老师给大家分享一篇关于初学者学习Python中的10个安全漏洞以及如何修复漏洞的方法。比如在写代码的过程中,我们的总会遇见各式各样的大坑小坑。Python也不例外,在使用模块或框架时,也存在着许多糟糕的实例...
    99+
    2023-01-31
    千锋扣 丁学堂 Python
  • 千锋扣丁学堂Python培训之详解实现
    今天千锋扣丁学堂Python培训老师给大家分享一篇关于Python两台电脑实现TCP通信的方法示例,文中通过示例代码介绍的非常详细,首先比如为了实现Nao机器人与电脑端的TCP通信,于是研究了一下Python实现TCP通信,在网上也看到了...
    99+
    2023-01-31
    详解 千锋扣 丁学堂
  • 扣丁学堂Python培训之Python
    今天千锋扣丁学堂Python培训老师给大家分享一篇关于python3字符串操作总结的详细介绍,中通过示例代码介绍的非常详细,下面我们一起来看一下吧。 字符串截取 s = 'hello's[0:3]'he's[:] #截取全部字符'hell...
    99+
    2023-01-31
    丁学堂 Python
  • 扣丁学堂Python培训之基于itch
    今天扣丁学堂Python培训老师给大家分享一个基于itchat模块实现微信防撤回的案例,比如有时候,女神发来一条消息,说约你看电影,她考虑了一下,又撤回了,不约你了…而你又想知道她究竟发了什么,该怎么办?微信防撤回了解一下。 环境要求 P...
    99+
    2023-01-31
    丁学堂 Python itch
  • 扣丁学堂Python培训简述Pytho
    本篇文章扣丁学堂Python培训小编给读者们分享一下Python线程池模块ThreadPoolExecutor用法,文中结合实例形式分析了Python线程池模块ThreadPoolExecutor的导入与基本使用方法,对此感兴趣的小伙伴就...
    99+
    2023-01-31
    丁学堂 Python Pytho
  • 扣丁学堂Python培训详解Pytho
    Python生成器与迭代器对于喜欢Python开发的小伙伴们来说应该是不陌生的,不了解的小伙伴也没有关系,本篇文章扣丁学堂Python培训小编就给小伙伴们详解一下Python生成器与迭代器,感兴趣的小伙伴就随小编来了解一下吧。 列表生成式...
    99+
    2023-01-31
    详解 丁学堂 Python
  • 扣丁学堂Python培训详解如何在Ap
    对Python开发技术感兴趣的小伙伴是否知道如何在Apache中运行Python WSGI应用呢不知道的小伙伴也没有关系,本篇文章扣丁学堂Python培训小编就给读者们分享一下如何在Apache中运行Python WSGI应用,对此感兴趣...
    99+
    2023-01-31
    详解 如何在 丁学堂
  • 扣丁学堂Python培训简述如何用Py
    本篇文章扣丁学堂Python培训小编给大家介绍一下如何用Python实现播放音频和录音功能,文中通过示例代码介绍的非常详细,对大家学习或者使用Python具有一定的参考学习价值,感兴趣的小伙伴就随小编一起来了解一下吧。 三种播放音频的方式...
    99+
    2023-01-31
    如何用 丁学堂 Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作