切换风格

Wizard Sky California Sunset glow Black Cloud Beige Dragon Lavender NewYear City Snow Flowers London
收藏本站XSS平台字符串转换jsfuck
蛋疼的时候写了个s扫描器[复制链接]
发表于 2013-1-31 16:57:26 | 显示全部楼层 |!read_mode!
蛋疼的时候写了个s扫描器,单ip扫描
s.py (958 Bytes) 举报反馈的信息审核通过将获得100个Team币的奖励!
#-*- coding: UTF-8 -*-
import sys
import socket
import thread
import time
socket.setdefaulttimeout(3)  #设置了全局默认超时时间
def socket_port(ip,PORT):  #扫描开放端口
    #try:
        if PORT>=65535:
            print u"端口扫描结束"
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(float(1))  #延时5S
        #s.connect((ip,PORT))
        result=s.connect_ex((ip,PORT))
        if(result==0):
            print ip,u":",PORT,u"port is opening"
        s.close()
if __name__=='__main__':
    print "\n------------------------- \n by 0x0021 \n QQ:505249727\n [url]http://www.pythonpy.com[/url] \n-------------------------"
    IP=raw_input("please input a ip address:\n")
    t=time.time()
    for i in range(0, 65535 + 1):
        thread.start_new_thread(socket_port,(IP,int(i)))
        time.sleep(0.003) #确保先运行Seeker中的方法
    print 'used time:%f' % (time.time()-t)


发表于 2013-1-31 20:07:14 | 显示全部楼层
不错  就是会出现卡的情况   QQ截图20130131200233.png



看了下代码,感觉这里有玄机
    for i in range(0, 65535 + 1):
        thread.start_new_thread(socket_port,(IP,int(i)))
        time.sleep(0.003) 
    print 'used time:%f' % (time.time()-t)



0.003 x 6000的时候会不会睡的时间有点长,具体没找到原因,有时间完善下{:soso_e179:}

操千曲而后晓声,观千剑而后识器。
发表于 2013-1-31 20:45:52 | 显示全部楼层
抚菊深思 发表于 2013-1-31 20:07
不错  就是会出现卡的情况  

能写出来就不错了,从早上琢磨到下午,还google了半天
发表于 2013-8-22 16:33:22 | 显示全部楼层
S扫描器是扫一堆IP的,这个是端口扫描器
发表于 2013-9-11 01:13:36 | 显示全部楼层
嗯不错啊 支持一下 希望 大牛 带我
发表于 2013-12-9 14:21:41 | 显示全部楼层
用GOlang写出来性能应该会好一点。
发表于 2014-2-24 11:17:52 | 显示全部楼层
本帖最后由 cumirror 于 2014-2-24 11:19 编辑

用python3改写了下,想减少些线程,不知道对性能有帮助不。
#-*- coding: UTF-8 -*-
import sys
import socket
import _thread as thread
import time
socket.setdefaulttimeout(3)
def socket_port(ip,min,max):
    while min <= max:
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.settimeout(0.3)    #300ms
        result=s.connect_ex((ip,min))
        if(result==0):
            print ("%s : %s is opening" % (ip, min))
        s.close()
        min += 1
if __name__=='__main__':
    IP=input("input ip address:\n")
    t=time.time()
    i=1
    print ('%d' % (i))
    while i < 65536:
        thread.start_new_thread(socket_port,(IP,i,i+100))
        time.sleep(0.3)
        i += 100
    print ('END Scan, used time:%f s' % (time.time()-t))


另外还有3个问题:
1.time.sleep里的值如何取啊?
2.测试发现,只发起了6w多点的连接,没有到65535
3.当本机的tcp port到了65535时,后续似乎建立不起连接??

发表于 2014-8-17 11:05:16 | 显示全部楼层
这个强制回复简直不能再吊。。。
发表于 2014-12-25 10:19:02 | 显示全部楼层
去看python了 回来再看。
发表于 2015-4-2 20:58:02 | 显示全部楼层
恢复身份申请
已有 1 人评分金币 收起 理由
店小二01 -1 恶意灌水!

总评分: 金币 -1   查看全部评分

代码区

GMT+8, 2019-11-21 04:30

Powered by Discuz! X2

© 2001-2018 Comsenz Inc.

回顶部