从零开始造轮子-python(信息收集脚本1)

admin 2022年3月9日17:15:08评论90 views字数 3089阅读10分17秒阅读模式

从零开始造轮子-python(信息收集脚本1)


△△△点击上方“蓝字”关注我们了解更多精彩




0x00 Preface [前言/简介]

  最近迷上了python,于是就想在学习中,一边学习一边编写一下小脚本来满足一些懒散的愿望。顺带水水文章O(∩_∩)O哈哈~,只希望各位大佬多多指点。

脚本编写目的:完成一些简单的信息收集工作。

     记录一个菜鸟的编程之路



0x01 初步代码功能图

从零开始造轮子-python(信息收集脚本1)



0x02 文件目录
MYscan
 -dic.txt       #子域名字典
 -scan.py       #起始文件
 -nmapscan.py     #端口扫描
 -subdomain.py    #子域名爆破




0x03 scan.py 代码讲解
思路:造轮子网络上有很多现成的代码,嘿嘿厚颜无耻的Ctrl+c
#!/usr/bin/python3import socketimport sysimport osfrom nmapscan import *from subdomain import *
#IP查询def ip_check(url): ip = socket.gethostbyname(url) print (url+'t'+'该网址IP为:'+ip) print('--------------------------------------------------')
#cdn判定#采用nslookup执行结果进行返回ip解析数目判断def cdn_check(url): print("CDN判断")    ns = "nslookup "+url                 #利用nslookup做cdn判断 data = os.popen(ns,"r").read() #执行命令并且获取数据 #print(data) #输出执行结果 if data.count(".")>10: #cdn判断 print (url + 't' + "存在CDN") print('--------------------------------------------------') else: print (url + 't' + "不存在CDN") print('--------------------------------------------------')
#程序入口def main(): url = sys.argv[1] check = sys.argv[2] if check == '-all': ip_check(url) #获取ip cdn_check(url) #判断cdn nm = nmapscan(url) #端口扫描 nm.nmapscan_s() su = subdomain(url) #子域名爆破 su.subdomain_s()
if __name__ == '__main__':    main()




0x04 nmapscan.py 代码讲解
#!/usr/bin/python3import nmapimport socket
#端口扫描class nmapscan(object):
def __init__(self,url): self.u = url
def nmapscan_s(self): ip = socket.gethostbyname(self.u) nm = nmap.PortScanner() #实例化 try: nm.scan(hosts = ip,arguments = '-sS -Pn -sV') command = nm.command_line() #返回的扫描方法映射到具体的nmap命令 print(command)
for host in nm.all_hosts(): #遍历扫描主机 print('--------------------------------------------------') print('Host : %s %s' % (host, nm[host].hostname())) #输出主机及主机名 print('State : %s' % nm[host].state()) #输出主机状态,up、down for proto in nm[host].all_protocols(): #遍历扫描协议,tcp、udp print('--------------------------------------------------') print('Protocol : %s' % proto) #输出协议名 lport = sorted(nm[host][proto].keys()) #获取协议的所有扫描端口 for port in lport: #遍历端口及输出端口、状态及信息 print('port : %ststate : %stservice : %s' % (port, nm[host][proto][port]['state'],nm[host][proto][port]['name']))
except Exception as err: print("error")



0x05 subdomain.py 代码讲解
#!/usr/bin/python3import socketimport timeimport os
class subdomain(): def __init__(self,url): self.u = url
    def subdomain_s(self):        sites = []                                    #创建个列表 print('--------------------------------------------------') print('子域名爆破') url = self.u.replace("www.", "") for zym_list in open("dic.txt"): #遍历子域名字典 zym_list = zym_list.replace("n", "") zym_list_url = zym_list + "." + url try: ip = socket.gethostbyname(zym_list_url) print(zym_list_url + "->" + ip) sites += sites.append(zym_list_url) time.sleep(0.1) except Exception as err:                pass
file_path = os.path.dirname(__file__) + "/子域名扫描结果.txt" # 在当前目录创建文件,保存结果 fp = open(file_path, 'w', encoding='utf-8') for i in sites: fp.write(i + "n")        print('[+]扫描结束,结果保存至当前目录下,文件名:子域名扫描结果.txt')



0x06 工具使用结果

使用命令(暂定)

python3 scan.py www.xxx.com -all

使用效果

从零开始造轮子-python(信息收集脚本1)


0x07 Summary 总结

  弟弟就是先写简单的一些功能,还有好多东西没有去写,想一步步的记录自己的编写过程。

参考引用:
nmap模块引用:https://www.cnblogs.com/csnd/p/11807823.htmlhttps://blog.51cto.com/11555417/2112069

PS:萌生写工具的想法是在小迪大佬的课上,对自写工具的一些认知。


END



如您有任何问题、建议、需求请后台留言NOVASEC公众号!


感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!


从零开始造轮子-python(信息收集脚本1)


如有任何问题、建议、合作、投稿请加NOVASEC-MOYU,以方便及时回复。



本文始发于微信公众号(NOVASEC):从零开始造轮子-python(信息收集脚本1)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年3月9日17:15:08
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   从零开始造轮子-python(信息收集脚本1)http://cn-sec.com/archives/494698.html

发表评论

匿名网友 填写信息