Gouwa写python脚本
Posted 狗娃少将
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gouwa写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.
以上是关于Gouwa写python脚本的主要内容,如果未能解决你的问题,请参考以下文章