• 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.

  • 相关阅读:
    H50068:html页面清除缓存
    CSS0019: 样式中高度百分比无效时,这样写 height:calc(100%)
    H50067:body 背景颜色 背景图片 background 的 简写属性
    40、在last_update后面新增加一列名字为create_date
    39、使用强制索引查询
    38、针对actor表创建视图actor_name_view
    37、对first_name创建唯一索引uniq_idx_firstname,对last_name创建普通索引idx_lastname
    36、创建一个actor_name表,将actor表中的所有first_name以及last_name导入改表
    35、批量插入如下数据,不使用replace操作
    34、批量插入如下数据
  • 原文地址:https://www.cnblogs.com/Gouwa/p/13051615.html
Copyright © 2020-2023  润新知