python脚本练习

0x00 废话感慨

技不如人低一等,我的班长告诉我的,很受用!开发一脚本编写的能力,脱离脚本小子的束缚,开启幸福但路途却短暂的仅有万里的长征第一步!

0x01编写前准备

python官方手册:https://docs.python.org/zh-cn/3.7/library/index.html(个人认为学习语言最好的地方读官方手册,受教与sec7875,不知道大佬名字叫啥~·~)

 概述:

Python标准库和模块提供了广泛的功能,包括内置数据类型,异常处理,数字和数学模块,文件处理,加密服务,Internet数据处理以及与Internet协议(IP)的交互。

PyPI:Python软件包索引中找到第三方模块的完整列表。

正式开始

简介高效命令wget命令下载所需模块-->tar-xzf命令解压文件

从xael.org上的一个小型存储库下载并安装nmap python模块。

 

 键入命令:wget http://xael.org/norman/python/python-nmap/python-nmap-0.4.0.tar.gz

 

 解压文件:tar -xzf pytohn-nmap-0.4.0tar.gz

 切换进入文件夹 :cd python-nmap-0.40

进行安装:python setup.py install

END!安装完毕

0x02 入门

阅读官方手册,了解python的概念和基础术语,以及一些进本语法的使用之后选择一个自己喜欢的GUI文本编辑器开写脚本

运行一个python文件

首先写一个简单的python输出文件

第一行 #! /usr/bin/python     #告诉系统我们要用python解释器

第二行 name = “Gouwawa”    #”name“是标识符、 “=”是赋值符 、  “Gouwawa”是值

第三行 #print是输出语句 用拼接符把name变量里的内容拼接起来

 

 

 --------------------------------------------------------------------------------------------------------------------------

0x00 了解oop编程思想

  面向对象编程的三大特性:封装、多态、集成。主要是为了解决重用、方便维护、可拓展性研发的。

  汽车是具有属性(车轮,颜色,大小,引擎,挡风玻璃)和方法(移动,门打开)的对象。从语言的角度来看,宾语是名词,属性是形容词,方法通常是动词。

个人理解:人是一个对象,五官是“类”,各个部件整合(封装)后成为一个完整的人(对象) 要做什么事情可以由大脑调控个部分去执行。

0x01 批量打印条幅

 python无需提前声明变量类型

 Kali linux中默认安装的python可以使用大多数基本功能,例如下面

  • exit()-从程序退出

  • float()-以浮点数形式返回其参数

  • help()-在其参数指定的对象上显示帮助

  • int()-返回其参数的整数部分(截断)

  • len()-返回列表或字典中的元素数

  • max()-从其参数(列表)返回最大值

  • open()-以其参数指定的模式打开文件

  • range()-返回其参数指定的两个值之间的整数列表

  • sorted()-将列表作为参数并按顺序返回其元素

type()-返回其参数的类型(例如,int,文件,方法,函数)

 

python列表可以迭代,可以使用循环结构语句(for循环...。)

 

在Gouwa2.py添加命令 print list[4]后进行打印,可以看到打印出字符5

 

 print输出字符“5”

 0x02使用python联网

python拥有一个巨大的模块库,现在我们需要用套机字模块建立TCP连接。

  首先我们需要创建套接字,套接字模块有两个选项,套接字的类型和套接字的和域

  域指定套接字通信中使用的网络介质,最常见的套接字域是AF_INET,它指的是Internet网络 IPV4套接字(IPV6套接字是AF_INET6)。第二个是套接字类型,在这个情况下为SOCK_STREAM或TCP样式的套接字。

  首先导入套接字模块(第3行),然后从套接字类实例化变量(第5行)。创建新变量名字为“S”。用connect()方法(第7行)来建立到特定ip和端口的连接。在这种情况下,IP192.168.101.108和端口443。

  建立连接后可以进行很多操作,可以使用receive(recv)方法从套接字(第9行)读取1024字节的数据比把它存储在名为“answer”的变量中;我们可以打印改变量的内容(第11行);然后关闭连接(第13行)。

 chmod 755 sockiet 赋予sockeit执行权限

python sockeit 运行脚本后可以获取把数据的数据存入answer中并打印出来

shodan的工作便是如此,对每个IP上运行的服务进行读取。

成功读取数据           END!

--------------------------------华丽分割线----------------------------

0x00编写FTP爆破脚本

注意自己的python版本,此处使用的是python3。使用python2需要修改iput语句

注意:

input() 和 raw_input() 这两个函数均能接收 字符串 ,但 raw_input() 直接读取控制台的输入(任何类型的输入它都可以接收)。而对于 input() ,它希望能够读取一个合法的 python 表达式,即你输入字符串的时候必须使用引号将它括起来,否则它会引发一个 SyntaxError 。

除非对 input() 有特别需要,否则一般情况下我们都是推荐使用 raw_input() 来与用户交互。

python3 里 input() 默认接收到的是 str 类型。

sever = raw_input("")

--------------------------------华丽分割线---------------------------------------------------------------------

0x00 IP位置搜索

知识拓展

首先了解linux  shebang(#!)这个符号(下文是大佬写的文章)

首先,这个符号(#!)的名称,叫做"Shebang"或者"Sha-bang"(还有其他一些名称,不过我一般就用这两个)。

 

Shebang这个符号通常在Unix系统的脚本中第一行开头中写到,它指明了执行这个脚本文件的解释程序。

1. 如果脚本文件中没有#!这一行,那么它执行时会默认用当前Shell去解释这个脚本(即:$SHELL环境变量)。

2. 如果#!之后的解释程序是一个可执行文件,那么执行这个脚本时,它就会把文件名及其参数一起作为参数传给那个解释程序去执行。

3. 如果#!指定的解释程序没有可执行权限,则会报错“bad interpreter: Permission denied”。
    如果#!指定的解释程序不是一个可执行文件,那么指定的解释程序会被忽略,转而交给当前的SHELL去执行这个脚本。

4. 如果#!指定的解释程序不存在,那么会报错“bad interpreter: No such file or directory”。
    注意:#!之后的解释程序,需要写其绝对路径(如:#!/bin/bash),它是不会自动到$PATH中寻找解释器的。

5. 当然,如果你使用"bash test.sh"这样的命令来执行脚本,那么#!这一行将会被忽略掉,解释器当然是用命令行中显式指定的bash。

例如:test.sh

chmod a+x  test.sh

./test.sh   Jay  (运行之时,其实是 /bin/bash ./test.sh Jay)

结果为:

hello, world.
hello, Jay.

原文地址:https://www.cnblogs.com/Gouwa/p/13051615.html