在antiy实习的日子(python验证页面存活)

     来安天之后还是接着研究这个jsunpackn,被安排写一个检测页面存活的脚本,由于对python不算特别熟,所以还是蛋疼了一小下的,吃饭时候听说在CNNVD上面提交漏洞前几,有安天,绿盟,晨星,什么360瑞星什么的反而没什么资格,顿时感觉自己牛鼻了很多,可能是这些公司是为政府工作的机会比较多,绿盟的前身也比较有趣,是绿盟军团,有兴趣的话可以看着篇文章http://www.hudong.com/wiki/%E7%BB%BF%E8%89%B2%E5%85%B5%E5%9B%A2

最后创始人goodwell的一段介绍非常有意思,顿时有一种生不逢时的感觉,什么时候才能有这么多志同道合的伙伴呀。

(本文引用GOODWELL写的绿色兵团的战友录) 

Rocky:请允许我把这个人的名字放在第一位,并致以最沉痛的悼念,早期的绿色兵团核心成员,美国国防部的web site上曾留下过他为祖国的呐喊,绿色兵团早期的文章由他翻译。我依然记得四年前rocky第一次进入我的 linux ,当时他的激动和喜悦,然而今天他却永远的离开了我们,走的这么突然。我会记得你,大家会记得你,直到永远、永远,我的朋友 --Rocky。 

Dspman(HeHe):绿色兵团核心成员,为人和气,讲义气,做事情大大咧咧。但是Unix基础相当过硬。 

Solo:绿色兵团核心成员,美丽的solo,精通数据库,做事比较重感情,曾第一个提出SQL查询语句的严重漏洞。 

LittleFish(小鱼儿):绿色兵团核心成员,要是上天再给我一次机会的话,我还是愿意和他做朋友。因为我爱他。果断的性格,冷俊的言语是一个天生的黑客。当年我曾对他说,我们要做一个中国最大的网络安全组织,鱼儿回答我说:“不!,我们要做亚洲最大的。”这句话我永远记得,我会去努力的,即使一事无成。 

Blackeye:绿色兵团核心成员,是个具有商业头脑的人,曾为绿色兵团商业化做过很多的付出和努力,中国黑客走到商业化道路和这个名字分不开。 

笛亚哥:是一个很老很老的朋友,也许很多人已经遗忘了这个名字,但是我一直在寻找他,曾编写当时来说比较实用的文章(绿色兵团黑客教材)。 

冰人:一个人彻底的消失很难尤其是这样出名的一个人物,早期的中国黑客没有不知道这个名字的,但是他的确做到了,彻底的从网络这个世界消失了。 

jianyuf:几年前是绿色兵团聊天室的常客,大家一起学习一起进步,对技术他完全不保留。 

中国鹰派:绿色兵团早期成员,擅长加密破解曾参加过第一次的绿色兵团年会。为组织出谋化策是个铁杆成员现在中国鹰派发展迅速,成员分布中国各地,和他的努力分不开。 

Frankie:辰光站长,说到深圳辰光无人不晓,是中国出名的一个安全站点。 

Iamin:97年绿色兵团站点第一万个访客,当时他的站点和绿色兵团是两个主要的安全大站。其安全站点黑客之家也是当初最出名的站点。 

袁哥:我非常敬佩的一个程序员,非常实干,热于助人,技术相当过硬,而且看程序有耐心。不管发生什么,他都是我敬佩的一个程序员。 

Adam:chinaasp的安全版版主,相识很偶然,很好客和热心,就是喜欢开开小玩笑,借我的那本书不知道啥年头可以还我。 

Davidchen(backend):翻译过很多技术文章,很多经典的安全文章出自他的手。 

Cloudsky:清华bbs斑竹之一,写过很多好文章。 

CK:一个广洲的年轻小伙子,绿色兵团成员,非常好学。 

PP:一个老朋友,为中国网络安全做过很多贡献,喜欢在网络上打报不平。 

ColdFace:绿色兵团分站网络力量站长,脾气比较大,但是为组织做过很多事情,纯ORG的强烈拥护者。 

小榕:从乱刀到流光,用过的人都知道这个名字,他是一个专门开发安全工具的程序员。 

Zer9:我非常喜欢的一个朋友,气量很大,代表作品,代理猎手高度分析等。 

天行:天行软件的作者,应该不用介绍了,要是你不知道就去用一下他的软件。 

LOG:绿色兵团早期成员,曾参加过第一次绿色兵团年会,话语不多,但是为人很诚恳,我一直感到欠疚,他从外地赶来开会我没有招呼好他。 

雨馨:千万别以为这是个女孩,不过他的cn105没有人不知道,以前是绿色兵团的常客,技术提高很快。 
LoGon(doorless):一个非常谦虚和好学的人,值得交往的朋友。 

liwrml:绿色兵团分站,麒麟网络安全小组的站长,兵团铁杆支持者。 

Chener:需要什么软件,需要什么地址去问他,觉得他就象活的网络词典。 

大鹰:补天的得力干将,很有互助精神,你问他什么问题他总是尽量回答你。 

shutgun:一个真正热爱网络安全的技术人员,不为名利,不为金钱。 

WoWo:患难之中见真情,得人滴水之恩当涌泉相报。 

仙剑:仙剑乐园有一大批的中国安全爱好者,是中国最大的一个电话破解站点。 

Casper:是也很好的朋友,他有很cool的外型,谦虚和严谨,对技术从不保留,是个真正热爱安全的技术人员。 

椰子:写过不少好文章,看事情比教成熟。 

WhoamI:热心,乐于助人,只是有个坏习惯,千万别在他喝醉的时候去和他讨论技术。 

**illy:中国每个安全站点的角落都能看到他的灌水贴,绿色兵团常客 

weiyangsheng:绿色兵团铁杆支持者,比较低调。 

BadBoy:中国红客的领袖人物,知识面教广也是兵团的支持者。 

柳咏:绿色兵团的拥护者,其实他比很多人都要强,可是他总是很谦虚,说自己懂的很少,而且不太说废话,只和别人探讨技术。 

小小龙女:绿色兵团的很多文章有他翻译,精通linux。 

阿飞(remix):绿色兵团的成员,老说自己是垃圾,废话是挺多的,不过人不错,为兵团做了很事情。 

五月玫瑰:绿色兵团的成员,虽然没有说过一句话,没见过一次面,而且几乎不看到他发言, 
直到有一天他发来的信,把自己发现的微软输入法的新漏洞无私的告诉了我们,永远都会感谢他对兵团的支持。 

Ghost_happy:他的桌面实在是叫人流口水,不行你去问他要一张截图看看(win2k + vm +FreeBsd)。 

GoodWell: 请允许我把自己的名字写在最后,正是因为大家的努力,才会有一个美丽的光环照在我的头上,我真的、真的愿意做大家成功道路上的一颗垫脚石,一颗永远不需要闪光的垫脚石,我愿意看着你们一个一个的走向成功的道路,同时也希望不久的将来能把你的名字写上去,去为龙的传人争光。


言归正传,下面是第一版本的脚本,运行速度比较慢,主要是因为使用了,较高层次的python模块urllib2

这是关于python 网络方面的模块比较好的说明http://www.cnblogs.com/morya/archive/2011/05/12/2044904.html

它会把网站的所有内容都读取出来。

import urllib2
import os

file = open ('micropoint1000.txt')
report = open ('report.txt','w')
for line in file:
    line = 'http://' + line.replace('\n','')
    #print line
    try:
        response = urllib2.urlopen(line)
        print line
        report.write(line+'\n')
        #os.system('echo '+line+' >>report.txt')
        #os.system('python jsunpackn.py -V -u '+line+' >>report.txt')
    except urllib2.URLError , e:
        print '.'
    except urllib2.HTTPError , e:
        print '.'
    except Exception , e:
        print Exception,":",data
file.close()
report.close()
之后在网络上找到了这样一个版本,使用了urlparse和httplib

但是发现了几个问题一是使用urlparse不能很好的解析URL,比如port,有一些host,都不能很好的分离出来

而且他好象是根据网站域名来判断,那么比如tk这种诡异的域名就很有可能判断不出来

这是urlparse的详细介绍

http://hi.baidu.com/springemp/item/64613c7457731517d0dcb3a7

但是httplib是netlib的底层模块,所以本着越底层越快度原则,一该会比netlib要快一些。


def   httpExists(url): 
        host,   path   =   urlparse.urlsplit(url)[1:3] 
        found   =   0 
        try: 
                connection   =   httplib.HTTPConnection(host)     ##   Make   HTTPConnection   Object 
                connection.request( "HEAD ",   path) 
                responseOb   =   connection.getresponse()             ##   Grab   HTTPResponse   Object 

                if   responseOb.status   ==   200: 
                        found   =   1 
                else: 
                        print   "Status   %d   %s   :   %s "   %   (responseOb.status,   responseOb.reason,   url) 
        except   Exception,   e: 
                print   e.__class__,     e,   url 

        return   found
样本中有很多重复,也很蛋疼

修改之后的版本是这样,自己拆分了url,并缩短了timeout,但是还是不够快,timeout是时间上的最大问题,尝试用多线程

timeout 为 0.1 的时候是11kb

timeout 为 1 的时候是    13kb 相差了不少,看来timeout对准确性的确是有所影响


import urllib2
import os
import urlparse
import httplib
import socket


timeout = 0.1
socket.setdefaulttimeout(timeout)

file = open ('micropoint1000.txt')
report = open ('report.txt','w')
for line in file:
    url = line.replace('\n','')
    host = url[:url.find('/')]
    path = url[url.find('/'):]
    port = 80
    if (host.find(':') != -1):
        port = host[host.find(':')+1:]
        host = host[:host.find(':')]
    print  'host:',host,'\n','path:',path,'\n','port:',port                        
    
    try:
        connection = httplib.HTTPConnection(host,port)
        connection.request("HEAD",path)
        response = connection.getresponse()
        print response.status
        if (response.status == 200):
            report.write(url+'\n')
        #os.system('echo '+line+' >>report.txt')
        #os.system('python jsunpackn.py -V -u '+line+' >>report.txt')
    except urllib2.URLError , e:
        print '.'
    except urllib2.HTTPError , e:
        print '.'
    except Exception , e:
        print Exception,":",e
file.close()
report.close()


加了 多进程之后,果然快了很多,但也没有想象中的快,不过可以忍受了

这里的多线程,逻辑些得很弱,不过现在既是周五又快下班了,就不改了。


import urllib2
import os
import urlparse
import httplib
import socket
import threading


timeout = 1
socket.setdefaulttimeout(timeout)

file = open ('micropoint1000.txt')
report = open ('report.txt','w')
fileRows = file.readlines()
threadNum = 10
threads = []
workNum = len(fileRows)/threadNum

def ThreadWork(s,t):
    for i in range(workNum):
        url = fileRows[s+i].replace('\n','')
        host = url[:url.find('/')]
        path = url[url.find('/'):]
        port = 80
        if (host.find(':') != -1):
            port = host[host.find(':')+1:]
            host = host[:host.find(':')]
        print  'host:',host,'\n','path:',path,'\n','port:',port                        
    
        try:
            connection = httplib.HTTPConnection(host,port)
            connection.request("HEAD",path)
            response = connection.getresponse()
            print response.status
            if (response.status == 200):
                report.write(url+'\n')
            #os.system('echo '+line+' >>report.txt')
            #os.system('python jsunpackn.py -V -u '+line+' >>report.txt')
        except urllib2.URLError , e:
            print '.'
        except urllib2.HTTPError , e:
            print '.'
        except Exception , e:
            print Exception,":",e


for i in range(threadNum):
    t=threading.Thread(target=ThreadWork,args=((i-1)*workNum,i*workNum))
    threads.append(t)
for i in range(threadNum):
    threads[i].start()
for i in range(threadNum):
    threads[i].join()

file.close()
report.close()




npm ERR! code ERESOLVE npm ERR! ERESOLVE could not resolve npm ERR! npm ERR! While resolving: sass-loader@12.1.0 npm ERR! Found: webpack@3.12.0 npm ERR! node_modules/webpack npm ERR! peer webpack@"^1.9 || ^2 || ^2.1.0-beta || ^2.2.0-rc || ^3.0.0" from uglifyjs-webpack-plugin@0.4.6 npm ERR! node_modules/webpack/node_modules/uglifyjs-webpack-plugin npm ERR! uglifyjs-webpack-plugin@"^0.4.6" from webpack@3.12.0 npm ERR! peer webpack@"2 || 3 || 4" from babel-loader@7.1.5 npm ERR! node_modules/babel-loader npm ERR! dev babel-loader@"^7.1.1" from the root project npm ERR! 9 more (extract-text-webpack-plugin, file-loader, ...) npm ERR! npm ERR! Could not resolve dependency: npm ERR! peer webpack@"^5.0.0" from sass-loader@12.1.0 npm ERR! node_modules/sass-loader npm ERR! dev sass-loader@"^12.1.0" from the root project npm ERR! npm ERR! Conflicting peer dependency: webpack@5.88.2 npm ERR! node_modules/webpack npm ERR! peer webpack@"^5.0.0" from sass-loader@12.1.0 npm ERR! node_modules/sass-loader npm ERR! dev sass-loader@"^12.1.0" from the root project npm ERR! npm ERR! Fix the upstream dependency conflict, or retry npm ERR! this command with --force or --legacy-peer-deps npm ERR! to accept an incorrect (and potentially broken) dependency resolution. npm ERR! npm ERR! npm ERR! For a full report see: npm ERR! C:\Users\antiy\AppData\Local\npm-cache\_logs\2023-07-18T05_47_37_165Z-eresolve-report.txt npm ERR! A complete log of this run can be found in: npm ERR! C:\Users\antiy\AppData\Local\npm-cache\_logs\2023-07-18T05_47_37_165Z-debug-0.log
07-20
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值