家不断粮灶不断烟,茅舍不漏布衣常缠
0x0 环境
python3
Windows
0x1 python 脚本的基础结构
#!/usr/bin/env python # 告诉 OS(操作系统)python 解释器的位置
# -*- coding: utf-8 -*- # 脚本的编码方式
import <module1>,<module2> # 导入模块
def myFunction(): # 定义函数
def main(): # 定义主函数
myFunction() # 调用函数
if __name__ == '__main__':
main()
0x2 os 模块
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import os
class Domain:
def __init__(self,domain,port,protocol):
self.domain = domain
self.port = port
self.protocol = protocol
def URL(self):
if self.protocol == 'https':
URL = 'https://' + self.domain + ':' + self.port + '/'
elif self.protocol == 'http':
URL = 'http://' + self.domain + ':' + self.port + '/'
return URL
def lookup(self):
os.system("host " + self.domain )
if __name__ == '__main__':
domain = Domain('www.baidu.com','80','https')
print(dir(domain))
URL = domain.URL()
port = domain.port
protocol = domain.protocol
lookup = domain.lookup() # 需要在 Linux 系统上才可执行
print(URL)
print(port)
print(protocol)
# print(lookup)
上述结果出现错误的原因是由于 os.system(domain)
只能在 Linux 系统上执行,调用 host 命令解析域名为对应的 IP
① os 的 system 原理
- system 函数可以将字符串转化为命令在服务器上运行;其原理是每一条 system 函数执行时,其会创建一个子进程在系统上执行命令,子进程的执行结果无法影响主进程。
- 上述原理会导致当需要执行多条命令的时候可能得不到预期的结果。
import os
os.system('cd /usr/local')
os.mkdir('zhutou.txt')
- 上述程序运行之后会发现并没有创建在 /usr/local 文件夹下,而是在当前目录下,因为两条语句分别在不同的进程下执行。
② 使用 system 执行多条命令
import os
os.system('cd /usr/local && mkdir zhutou.txt')
或者
os.system('cd /usr/local ; mkdir zhutou.txt')
0x3 sys 模块
sys
模块可以读取 CLI(Command-line interface,命令行界面) 中给出的参数,并将它们拖到脚本中的变量中。语法很简单,sys.agv
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
script = sys.argv[0]
ip = sys.argv[1]
port = sys.argv[2]
print("[+] The script name is: " + script)
print("[+] The first parameter is: " + ip)
print("[+] The second parameter is: " + port)
> python sys_module.py 8.8.8.8 80
[+] The script name is: sys_module.py
[+] The first parameter is: 8.8.8.8
[+] The second parameter is: 80
猪头
2020.3.27