LinuxBasicsForHackers笔记 --Python 脚本基础

news2024/12/23 18:58:21

添加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 = 100

s = 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:
		break
	print("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.coloradmin.cn/o/1302329.html

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

相关文章

利用C语言模拟实现堆的基本操作和调堆算法

利用C语言模拟实现堆的基本操作和调堆算法 文章目录 利用C语言模拟实现堆的基本操作和调堆算法前言一、堆的基本原理大根堆和小根堆的比较 二、实现堆的基本操作1&#xff09;结构定义2&#xff09;初始化堆&#xff08;HeapInit&#xff09;3&#xff09;销毁堆&#xff08;He…

智能抠图软件有哪些?不妨试试这四款AI抠图工具

你知道的智能抠图软件有哪些&#xff1f;随着 AI 技术的迅速发展&#xff0c;许多图像处理任务都可以交由 AI 自动完成&#xff0c;例如修图、抠图、高清修复等。AI 图像工具不仅将我们从单调重复的工作中解放出来&#xff0c;而且其处理图像的效果和效率也往往优于人工。最近&…

docker的资源控制:

docker的资源控制&#xff1a; 对容器的使用宿主机的资源进行限制 cpu 内存 磁盘i/0 docker使用linux自带的功能cgroup control grouos是linux内核系统提供的一种可以限制&#xff0c;记录&#xff0c;隔离进程所使用的物理资源 control grouos是linux内核系统提供的一种可…

nginx中的正则表达式及location和rewrite

目录 常用的Nginx 正则表达式 location和rewrite的区别 location location 大致可以分为三类 location 常用的匹配规则 location 优先级 location 示例说明 location优先级的总结 rewrite rewrite的功能 rewrite实现跳转的条件 rewrite的执行顺序 rewrite的语法格式…

mysql:查询当前登录的用户

可以使用USER()函数查询当前登录的用户&#xff0c;例如&#xff1a;

Axure->Axure安装,Axure菜单栏和工具栏功能介绍,页面及概要区

Axure安装Axure菜单栏和工具栏功能介绍&#xff0c;页面及概要区 1.Axure安装 即时设计 - 可实时协作的专业 UI 设计工具 (js.design) 点击上方下载安装⬆ 打开软件点击帮助->管理授权-> 被授权人 Axure 授权密钥:gjqpIxSSUUqFwPoZPi8XwBBhRE2VNmOQsrord0JqShk4QCXxrw6…

Java智慧校园-中小学校园管理系统源码

智慧校园系统是通过信息化手段&#xff0c;实现对校园内各类资源的有效集成 整合和优化&#xff0c;实现资源的有效配置和充分利用&#xff0c;将校务管理过程的优化协调。为校园提供数字化教学、数字化学习、数字化科研和数字化管理。 致力于为家长和教师提供一个全方位、多层…

天池SQL训练营(四)-集合运算-表的加减法和join等

-天池龙珠计划SQL训练营 4.1表的加减法 4.1.1 什么是集合运算 集合在数学领域表示“各种各样的事物的总和”, 在数据库领域表示记录的集合. 具体来说,表、视图和查询的执行结果都是记录的集合, 其中的元素为表或者查询结果中的每一行。 在标准 SQL 中, 分别对检索结果使用 U…

2023年度盘点:智能汽车、自动驾驶、车联网必读书单

【文末送书】今天推荐几本自动驾驶领域优质书籍 前言 2023年&#xff0c;智能驾驶和新能源汽车行业仍然有着肉眼可见的新进展。自动驾驶技术继续尝试从辅助驾驶向自动驾驶的过渡&#xff0c;更重要的是相关技术成本的下降。根据《全球电动汽车展望2023》等行业报告&#xff0c…

centos7进程管理

什么是进程 进程是已启动的可执行程序的运行实例&#xff0c;是程序运行的过程&#xff0c;动态的&#xff0c;有生命周期及运行状态。 ​ 程序&#xff1a; 二进制文件&#xff0c;静态 静态查看进程 查看进程&#xff08;一&#xff09; [rootzaotounan ~]# ps aux ps :pro…

upload-labs

01 随便上传个文件 发现对于上传类型有限制 查看页面代码发现是js的过滤直接关闭js 上传成功 右键图片在新建标签页打开文件 这里直接抓包改名字也行 02 抓包修改后缀名 03 发现后端做了检测抓包修改失败 大小写绕过失败&#xff0c;php特性php1等会被当成php执行 这里图片的…

RE2文本匹配调优实战

引言 在RE2文本匹配实战的最后&#xff0c;博主说过会结合词向量以及其他技巧来对效果进行调优&#xff0c;本篇文章对整个过程进行详细记录。其他文本匹配系列实战后续也会进行类似的调优&#xff0c;方法是一样的&#xff0c;不再赘述。 本文所用到的词向量可以在Gensim训练…

如何用CHAT写方案?

问CHAT&#xff1a;帮我写一份航空无动力乐园的可执行方案 CHAT回复&#xff1a; 方案一&#xff1a;概念及地点筛选 航空无动力乐园是指以航空运动为主题&#xff0c;利用自然地形与风力进行滑翔、跳伞等无动力航空运动的户外休闲娱乐乐园。鉴于此&#xff0c;首需要确定乐园…

裸机单片机适用的软件架构

单片机通常分为三种工作模式&#xff0c;分别是 1、前后台顺序执行法 2、操作系统 3、时间片轮询法 1、前后台顺序执行法 利用单片机的中断进行前后台切换&#xff0c;然后进行任务顺序执行&#xff0c;但其实在…

windows错误事件 98、41、7000、55、153解决办法

事件错误&#xff1a;98、55、153 疑难解答清单 在系统事件日志中&#xff0c;搜索新技术文件系统 (NTFS) 和磁盘相关的警告和错误。 例如&#xff0c;事件 ID 55、153 或 98。 管理员身份打开CMD&#xff0c;运行命令 chkdsk /scan 并检查结果。 该 chkdsk /scan 命令是只读…

SpringMVC项目出现404

目录 问题讲解&#xff1a; 解决方案&#xff1a; 1、处理器映射器和处理器适配器以及视图解析器没有配置好 2、Controller的包扫描没有加或者包扫描的配置是错误的 3、当然也有说jar包没有 4、请求地址是错误的 5、还有一种解决办法说web.xml配置DispatcherServlet的时…

有病但合理的 ChatGPT 提示语

ChatGPT 面世一年多了&#xff0c;如何让大模型输出高质量内容&#xff0c;让提示词工程成了一门重要的学科。以下是一些有病但合理的提示词技巧&#xff0c;大部分经过论文证明&#xff0c;有效提高 ChatGPT 输出质量&#xff1a; ​1️⃣ Take a deep breath. 深呼吸 ✨ 作用…

直流电和交流电

直流电&#xff08;Direct Current&#xff0c;简称DC&#xff09;和交流电&#xff08;Alternating Current&#xff0c;简称AC&#xff09;是电流的两种基本形式。 1. 直流电 直流电是指电流方向始终保持不变的电流。在直流电中&#xff0c;电子只能沿着一个方向移动。直流电…

力扣17. 电话号码的字母组合(java 回溯法)

Problem: 17. 电话号码的字母组合 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 题目给定一串数字&#xff0c;要求我们找出所有可能的字母组合&#xff0c;即我们可以穷举出所有可能的结果&#xff0c;而涉及到穷举我们自然可以想到利用回溯来解决问题&#xff0c…

Win10操作系统安装Python

1 Python解释器下载 1.1 安装环境 Windows 10 专业工作站版22H2 python-3.9.6-amd64.exe 1.2 下载地址 Python官网&#xff1a;Welcome to Python.org Python镜像&#xff1a;CNPM Binaries Mirror 2 Python解释器安装 2.1 Install Python 3.9.6 (64-bit)界面 双击运行下…