ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Безопасность и Уязвимости > Безопасность > Soft - *nix
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

python ftp/ssh checker
  #1  
Старый 13.07.2009, 01:58
shimizu
Новичок
Регистрация: 12.07.2009
Сообщений: 1
Провел на форуме:
1512

Репутация: 1
По умолчанию python ftp/ssh checker

для работы нужны модули paramiko и progressbar

Код:
#!/usr/bin/env python

"""
sh.imizu@yahoo.com
"""

import sys
import socket
import paramiko
import optparse
import logging
import ftplib
import fileinput
import progressbar as bar
from multiprocessing import Pool, log_to_stderr
from urlparse import urlparse


def parse(file):
    f = fileinput.input([file])
    q = []
    try:
        for line in f:
            u = urlparse("ftp://" + line[:-1])
            try: q.append((u.username,u.password,u.hostname,u.port))
            except ValueError: pass
    except IOError:
         print "The file does not exist, exiting gracefully."
         sys.exit()
    f.close()
    q[:] = [x for x in q if x is not None]
    return q
    
    
def ssh_check(q):
    on = False
    port = 22
    try:
        ssh = paramiko.SSHClient()
        ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
        ssh.connect(q[2], username=q[0], password=q[1], port=port, timeout=timeout)
        on = True
        ssh.close()
    except:
        pass
    return on,q

def ftp_check(q):
    on = False
    if q[3]: port = q[3]
    else: port = 21
    try:
        socket.setdefaulttimeout = timeout
        ftp = ftplib.FTP(q[2],timeout=timeout)
        ftp.login(q[0], q[1])
        on = True
        ftp.close()
    except:
        pass
    
    return on,q
    
def write_(a,b):
    f = open ( output + "-true", 'w' )
    for aa in a:
        f.write("+++\t%s:%s@%s\n" % (aa[0],aa[1],aa[2]))
    f.close()
    
    fb = open ( output + "-false", 'w' )
    for bb in b:
        fb.write("---\t%s:%s@%s\n" % (bb[0],bb[1],bb[2]))
    fb.close()
    
    
def spawn(what,parsed,x):
    class line_up():
        def update(self, pbar):
            return "+" + str(len(a)) + "/-" + str(len(b)) + "/" + str(total)
    
    pool = Pool(processes=x)
    a,b,total = [],[],len(parsed)
    widgets = [bar.Percentage(), ' ', bar.Bar(marker='-'),' ', bar.ETA(),' ',line_up()]
    pbar = bar.ProgressBar(widgets=widgets, maxval=total).start()
    results = [pool.apply_async(what, [t]) for t in parsed]
    for r in results:
        try:
            q = r.get()
            if q[0]:
                a.append(q[1])
            else:
                b.append(q[1])
            try: pbar.update(len(a) + len(b))
            except AssertionError: pass
        except IndexError:
            pass
    pbar.finish()
    print
    return a,b

def main():
    p = optparse.OptionParser(description='FTP/SSH list checker',
                            prog='py-check',
                            version='0.1',
                            usage='%prog -m ftp/ssh -t num-of-threads -o out-file-prefix')
    p.add_option('-t', type="int", dest="threads", help='Number of threads to spawn', default=5)
    p.add_option('-m', type="string", dest="mode", help='Mode to run: ftp/ssh', default="ssh")
    p.add_option('-o', type="string", dest="output", help='File to store results', default="check")
    p.add_option('-T', type="int", dest="timeout", help='Timeout in seconds', default=10)
    options, arguments = p.parse_args()
    global timeout,output
    timeout,output = options.timeout,options.output
    paramiko.util.log_to_file('/dev/null')
    if len(arguments) == 1:
        if options.mode == "ssh":
            what = ssh_check
        elif options.mode == "ftp":
            what = ftp_check
        else:
            what = ssh_check
        a, b = spawn(what,parse(arguments[0]),options.threads)
        write_(a,b)
    else:
        p.print_help()

if __name__ == '__main__':
    main()

Последний раз редактировалось shimizu; 13.07.2009 в 02:07..
 
Ответить с цитированием

  #2  
Старый 26.05.2010, 10:19
RAINUR
Новичок
Регистрация: 24.05.2010
Сообщений: 13
Провел на форуме:
31545

Репутация: 0
По умолчанию

Можно по подробнее??
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Начинаем программировать на C++, C#, ассемблере(win), Qt, Python, Java, AS3. nerezus С/С++, C#, Delphi, .NET, Asm 688 10.06.2010 15:08
[ Python ] SkypeFlooder by inlanger. Флудер телефонов от меня. inlanger С/С++, C#, Delphi, .NET, Asm 137 29.05.2010 04:34
Books Python FRAGNATIC PHP, PERL, MySQL, JavaScript 1 01.11.2009 18:20
Работа по интеграции языка Python в web-браузеры Suicide Мировые новости 15 22.06.2009 11:11
Угон аськи через Hotmail Checker Dracula4ever ICQ 7 30.07.2006 22:01



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ