LinuxBasicsForHackers笔记 --Python 脚本基础

添加Python模块

Python 有一个专门用于安装和管理 Python 包的包管理器,称为 pip(Pip Installs Packages)。由于我们在这里使用 Python 3,因此您将需要 Python 3 的 pip 来下载和安装软件包。默认情况下应包含 Pip,但如果需要,可以输入以下命令从存储库下载并安装 pip:apt-get install python3-pip

现在,要从 PyPI 下载模块,您只需输入:pip3 install <功能包名>

当您下载这些包时,它们会自动放置在 /usr/local//lib/<python-version>/dist-packages 目录中。如果您不确定软件包在系统上的位置(有时不同的 Linux 发行版使用不同的目录),您可以输入 pip3,后跟 show 和软件包名称,如下所示:pip3 show <功能包名>

作为使用 pip 的替代方法,您可以直接从站点下载软件包(确保下载到正确的目录),解压它,然后进入对应目录运行以下命令:python3 setup.py install,这将安装尚未安装的解压包。

安装第三方模块

要安装由 Python 社区的其他成员创建的第三方模块(而不是官方发布的 Python 包),您只需使用 wget 从在线存储的任何位置下载它,解压缩该模块,进入该模块目录,然后运行 python setup.py install命令。

开始使用 Python 编写脚本

变量

变量是编程中最基本的数据类型之一。 简单来说,变量是与特定值关联的名称,这样每当您在程序中使用该名称时,它就会调用关联的值。

它的工作方式是变量名指向存储在内存位置的数据,该数据可能包含任何类型的值,例如整数、实数、字符串、浮点数、布尔值(真或假陈述)、列表、 或字典。

为了熟悉基础知识,我们创建一个简单的脚本,并将其保存为 hackers-arise_greetings.py。

#! /usr/bin/python3 
name="OccupyTheWeb" 
print("Greetings to " + name + " from Hackers-Arise. The Best Place to Learn Hacking!")

第一行只是告诉你的系统你希望它使用Python解释器来运行这个程序,而不是任何其他语言。 第二行定义一个名为 name 的变量并为其分配一个值(在本例中为“OccupyTheWeb”)。 您应该将此值更改为您自己的名字。 该变量的值采用字符串字符数据格式,这意味着内容用引号引起来并被视为文本。 您也可以将数字放入字符串中,它们将被视为文本,因为您将无法在数值计算中使用它们。

第三行创建一个 print() 语句,将 Greetings 与 name 变量中的值连接起来,后跟 Hackers-Arise 中的文本。 print() 语句将在屏幕上的括号内显示您传递给它的任何内容。

现在,在运行此脚本之前,您需要授予自己执行它的权限。 我们需要 chmod 命令来做到这一点。chmod 755 hackers-arise_greetings.py

要运行此脚本,请输入以下内容:./hackers-arise_greetings.py

注释

解释器会忽略注释。 这意味着解释器会跳过任何指定为注释的行,解释器会继续执行,直到遇到合法的代码行。 Python 使用 # 符号来指定单行注释的开始。 如果要编写多行注释,可以在注释部分的开头和结尾使用三个双引号 (``````)。

函数

Python 中的函数是执行特定操作的代码段。 例如,您之前使用的 print() 语句是一个显示您传递给它的任何值的函数。Python 有许多可以立即导入和使用的内置函数。 其中大多数可以在 Kali Linux 中默认安装的 Python 中使用,但还有更多可以从可下载的库中获取。 让我们看一下您可以使用的数千个功能中的几个:

  • exit() – 退出程序。
  • float() – 以浮点数形式返回其参数。
  • help() – 显示有关其参数指定的对象的帮助。
  • int() – 返回其参数的整数部分(截断)。
  • len() – 返回列表或字典中的元素数量。
  • max() – 返回其参数(列表)中的最大值。
  • open() – 以参数指定的模式打开文件。
  • range() – 返回由其参数指定的两个值之间的整数列表。
  • sorted() – 接受一个列表作为参数并按顺序返回它及其元素。
  • type() – 返回其参数的类型(例如,int、文件、方法、函数)。

列表

Python 中的列表是可迭代的,这意味着当您一直运行列表时,列表可以提供连续的元素。

模块

模块只是保存到单独文件中的一段代码,您可以在程序中根据需要多次使用它,而无需再次将其全部键入。 如果您想使用模块或模块中的任何代码,则需要导入它。 如前所述,使用标准和第三方模块是 Python 强大的关键功能之一。 如果我们想使用之前安装的模块,我们可以将以下行添加到脚本中:import 模块名

面向对象编程(OOP)

下图显示了 OOP 背后的基本概念:该语言的主要工具是对象,它具有属性和状态形式的属性,以及由对象执行或在对象上执行的操作的方法。

在这里插入图片描述

Python 中的网络通信

构建 TCP 客户端

我们将使用套接字模块在 Python 中创建网络连接。 Python 附带了一个用于多种任务的模块库。 在这种情况下,我们需要套接字模块来创建 TCP 连接。 让我们看看它的实际效果。

#! /usr/bin/python3
import socket
s = socket.socket()
s.connect(("127.0.0.1", 22))
answer = s.recv(1024)
print(answer)
s.close()

首先,我们导入套接字模块,以便我们可以使用它的功能和工具。 在这里,我们将使用套接字模块中的网络工具来为我们处理网络连接。 套接字为两个计算机节点提供了一种相互通信的方式。 通常,一个是服务器,一个是客户端。

然后我们创建一个名为 s 的新对象,从套接字模块的套接字类实例化。这样,我们现在可以使用该对象执行进一步的操作,例如连接和读取数据。

然后,我们使用套接字模块中的 connect() 方法来建立到特殊 IP 和端口的网络连接。 请记住,方法是可用于特定对象的函数。

这里,我们使用接收方法recv从套接字读取1024字节的数据并将它们存储在名为answer的变量中;这 1024 字节将包含横幅信息。 然后我们使用 print() 函数将该变量的内容打印到屏幕上,以查看通过该套接字传递了哪些数据,从而使我们能够监视它! 在最后一行,我们关闭连接。

创建 TCP 监听器

下面所示的 Python 脚本中,您将在系统的任何端口上创建一个套接字,当有人连接到该套接字时,该套接字会收集有关连接器系统的关键信息。 输入脚本并将其保存为 tcp_server.py。 确保使用 chmod 授予自己执行权限。

#! /usr/bin/python3
import socket
TCP_IP = "192.168.181.190"
TCP_PORT = 6996
BUFFER_SIZE = 100s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((TCP_IP, TCP_PORT))
s.listen(1)conn, addr = s.accept()
print('Connection address: ', addr )while True:data=conn.recv(BUFFER_SIZE)if not data:breakprint("Received data: ", data)conn.send(data) #echo
conn.close()

我们声明我们希望脚本使用 Python 解释器运行,然后像以前一样导入套接字模块,这样我们就可以使用它的功能。 然后,我们定义变量来保存 TCP/IP 地址、要侦听的端口以及我们想要从连接系统捕获的数据的缓冲区大小的信息。

我们定义套接字并使用刚刚创建的变量将套接字绑定到 IP 地址和端口。 我们使用套接字库中的listen()方法告诉套接字进行监听。

然后,我们使用套接字库的accept方法捕获连接系统的IP地址和端口,并将该信息打印到屏幕上,以便用户可以看到它。 注意这里的 while True: 语法;

最后,我们将来自连接系统的信息放入缓冲区,打印它,然后关闭连接。

字典、循环和控制语句

字典

字典以无序对的形式保存信息,其中每对都包含一个键和一个关联的值。 我们可以使用字典来存储项目列表,并给每个项目一个标签,以便我们可以单独使用和引用该项目。 例如,我们可以使用字典来存储用户 ID 及其关联名称,或者存储与特定主机关联的已知漏洞。 Python 中的字典就像其他语言中的关联数组。

与列表一样,字典是可迭代的,这意味着我们使用控制结构(例如 for 语句)来遍历整个字典,将字典的每个元素分配给一个变量,直到到达字典的末尾。

创建字典的语法如下:dict = {key1:value1, key2:value2, key3:value3...}

请注意,对于字典,您可以使用大括号并用逗号分隔项目。 您可以包含任意数量的键值对。

控制语句

控制语句允许您的代码根据某些条件做出决策。 Python 中有多种方法可以控制脚本的流程。 让我们看看 Python 中的一些结构。

if 语句

Python 中的 if 结构与包括 bash 在内的许多其他编程语言一样,用于检查条件是否为真,并为每个场景运行不同的代码集。 语法如下:

if conditional expression:run this code if the expression is true

在 Python 中,引入控制块的行必须以冒号结尾,并且控制块必须缩进。 这个缩进向解释器标识了控制块。 下一个未缩进的语句位于控制块之外,因此不是 if 语句的一部分,这就是 Python 在不满足条件时知道跳到哪里的方式。

if…else

if conditional expression: *** # run this code when the condition is met 
else: *** # run this code when the condition is not met

循环

循环是 Python 中另一个非常有用的结构。 循环使程序员能够根据值或条件多次重复代码块。 两种循环是 while 和 for。

while 循环

while 循环计算布尔表达式(只能计算为 true 或 false 的表达式),并在表达式计算为 true 时继续执行。 例如,我们可以创建一个代码片段,打印从 1 到 10 的每个数字,然后退出循环,如下所示:

count = 1 
while (count <= 10): print(count) count += 1

for 循环

for 循环可以每次通过循环将列表、字符串、字典或其他可迭代结构中的值分配给索引变量,从而允许我们逐个使用结构中的每一项。 例如,我们可以使用 for 循环来尝试密码,直到找到匹配项,如下所示:

for password in passwords: attempt = connect(username, password) if attempt == "230": print("Password found: " + password) sys.exit(0)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/215288.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

vue前端访问Django channels WebSocket失败

现象 前端报错&#xff1a;SSH.vue:51 WebSocket connection to ‘ws://127.0.0.1:8000/server/terminal/120.59.88.26/22/1/’ failed: 后端报错&#xff1a;Not Found: /server/terminal/120.79.83.26/22/1/ 原因 django的版本与channels的版本不匹配&#xff08;django…

关于个人职业选择

职业选择&#xff0c;一直是个老生常谈的话题。这并不是一个容易做的决定。 让我们来看看AI怎么说。 首先是方向性的回答&#xff1a; 然后是一些具体的回答 我个人比较倾向于深耕网络安全。这是一个很有趣也是一个持续发展着的领域。 不知道关于这个事情你怎么看&#xff0…

在线学习平台-课程分页、用户管理、教师查询

在线学习平台------手把手教程&#x1f448; 用户管理 添加功能增强 新增属性 若依里的用户模块(SysUser)是没有课程这一属性的,要实现我们自己的课程分页查询功能 这个位置传入的实体类SysUser要加上classId,记得加上get、set方法 更改sql语句 ctrl 鼠标左键不断点进去…

DS二叉排序树之删除

Description 给出一个数据序列&#xff0c;建立二叉排序树&#xff0c;并实现删除功能 对二叉排序树进行中序遍历&#xff0c;可以得到有序的数据序列 Input 第一行输入t&#xff0c;表示有t个数据序列 第二行输入n&#xff0c;表示首个序列包含n个数据 第三行输入n个数据…

蓝桥杯周赛 第 1 场 强者挑战赛 6. 小球碰撞【算法赛】(思维题/最长上升子序列LIS)

题目 https://www.lanqiao.cn/problems/9494/learning/?contest_id153 思路来源 Aging代码 题解 二分时间t&#xff0c;第i个小球对应一个起点pi、终点pit*vi的区间&#xff0c;问题转化为&#xff0c; 选最多的区间&#xff0c;使得不存在区间包含&#xff08;即li<l…

微信小程序过滤器之计算当前时间差

微信小程序过滤器之计算当前时间差 前言一、wxs简介二、使用步骤1.定义2.使用 前言 最近遇到了一个需求&#xff0c;将小程序里面的具体时间2023-12-11 09:41:06转为当前时间差10小时前&#xff0c;这块可以使用js逻辑函数对数据进行处理&#xff0c;但这里我们采用微信小程序…

Error: Failed to resolve vue/compiler-sfc——vite项目启动报错——npm run serve

运行项目时&#xff0c;报错如下&#xff1a; Error: Failed to resolve vue/compiler-sfc 根据报错信息的提示&#xff1a;vue的版本必须大于3.2.25&#xff0c;经过查看package.json文件&#xff0c;可以看到vue的版本为3.2.36&#xff0c;是满足条件的。 因此考虑缓存问题&…

【OPNEGIS】Geoserver原地升级jetty,解决Apache HTTP/2拒绝服务漏洞 (CVE-2023-44487)

Geoserver是我们常用的地图服务器&#xff0c;在开源系统中的应用比较广泛。在实际环境中&#xff0c;我们可能会选用官方的二进制安装包进行部署&#xff0c;这样只要服务器上有java环境就可以运行&#xff0c;方便在现场进行部署。 1.问题来源 这次由于甲方一月一次的漏洞扫…

智能优化算法应用:基于阴阳对算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于阴阳对算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于阴阳对算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.阴阳对算法4.实验参数设定5.算法结果6.参考文…

Java - Mybatis的缓存机制、集成SpringBoot后缓存相关问题

mybaits提供一级缓存&#xff0c;和二级缓存 一级缓存&#xff08;默认开启&#xff09; 一级缓存是SqlSession级别的缓存。在操作数据库时需要构造 sqlSession对象&#xff0c;在对象中有一个(内存区域)数据结构&#xff08;HashMap&#xff09;用于存储缓存数据。不同的sqlSe…

STM32F407-14.3.1-01 时基单元

时基单元 可编程高级控制定时器的主要模块是一个 16 位计数器及其相关的自动重载寄存器。计数器可递增计数、递减计数或交替进行递增和递减计数。计数器的时钟可通过预分频器进行分频。 计数器、自动重载寄存器和预分频器寄存器可通过软件进行读写。即使在计数器运行时也可执行…

Python:核心知识点整理大全14-笔记

目录 ​编辑 7.2.2 让用户选择何时退出 parrot.py 7.2.3 使用标志 7.2.4 使用 break 退出循环 cities.py 7.2.5 在循环中使用 continue counting.py 7.2.6 避免无限循环 counting.py 7.3 使用 while 循环来处理列表和字典 7.3.1 在列表之间移动元素 confirmed_user…

数字图像处理(实践篇)二十二 使用opencv进行人脸、眼睛、嘴的检测

目录 1 xml文件 2 涉及的函数 3 实践 使用opencv进行人脸、眼睛、嘴的检测。 1 xml文件 方法① 下载 地址&#xff1a;https://github.com/opencv/opencv/tree/master/data/haarcascades 点击haarcascade_frontalface_default.xml文件 对着Raw右键&#xff0c;选择“链接…

【JVM从入门到实战】(二)字节码文件的组成

一、Java虚拟机的组成 二、字节码文件的组成 字节码文件的组成 – 应用场景 字节码文件的组成部分-Magic魔数 什么是魔数&#xff1f; Java字节码文件中的魔数 文件是无法通过文件扩展名来确定文件类型的&#xff0c;文件扩展名可以随意修改&#xff0c;不影响文件的内容。…

UE引擎 LandscapeGrass 实现机制分析(UE5.2)

前言 随着电脑和手机硬件性能越来越高&#xff0c;游戏越来越追求大世界&#xff0c;而大世界非常核心的一环是植被&#xff0c;目前UE5引擎提供给植被生成的主流两种方式为 手刷植被和LandscapeGrass(WeightMap程序化植被)。当然UE5.3推出新一代PCGFramework 节点程序化生成框…

MyBatis:缓存

MyBatis 缓存一级缓存二级缓存注 缓存 缓存&#xff0c;是数据交换的缓冲区&#xff08;临时保存数据的地方&#xff09;。即将数据&#xff08;数据一般为频繁查询且不易改变&#xff09;保存在计算机内存中&#xff0c;下次读取数据时直接从内存中获取&#xff0c;以避免频繁…

OpenAI接口调用示例

最近为公司做了一个ChatGPT工具&#xff0c;这里展示一下OpenAI接口的调用 前提条件 访问OpenAI官网&#xff08;国内需要翻墙&#xff09;的账号&#xff0c;需要sk 地址&#xff1a;https://platform.openai.com 依赖 使用开源工具调用OpenAI接口&#xff0c;依赖如下&am…

Vue3封装一个轮播图组件

先看效果 编写组件代码 CarouselChart.vue <template><div classimg-box><el-button clickpreviousImages v-ifprops.showBtn>←</el-button><div classimg><div styledisplay: flex;gap: 20px idmove><imgclassimg-item v-for(item…

centos7部署docker

文章目录 &#xff08;1&#xff09;安装前准备&#xff08;2&#xff09;卸载旧版Docker&#xff08;3&#xff09;安装docker&#xff08;4&#xff09;配置镜像加速 &#xff08;1&#xff09;安装前准备 在开始安装之前&#xff0c;首先需要检查内核版本。使用 uname -r 命…

nodejs微信小程序+python+PHP个性化服装搭配系统APP-计算机毕业设计推荐 android

目 录 摘 要 I ABSTRACT II 目 录 II 第1章 绪论 1 1.1背景及意义 1 1.2 国内外研究概况 1 1.3 研究的内容 1 第2章 相关技术 3 2.1 nodejs简介 4 2.2 express框架介绍 6 2.4 MySQL数据库 4 第3章 系统分析 5 3.1 需求分析 5 3.2 系统可行性分析 5 3.2.1技术可行性&#xff1a;…