VERIFIED - Carding Forum  
Go Back   VERIFIED - Carding Forum > INTERNATIONAL CARDING MARKETPLACE > Software & Scripts > Articles

Articles
[RUS] Бесплатный софт и скрипты.
[ENG] Soft and Scripts Free.

Advertising
ДАМП+ПИН

Advertising






Reply
Thread Tools
Unread 19.02.2017, 17:48   #1
droid
Member
 
Join Date: 24.01.2010
Posts: 1
Default SpeedChecker - Исходники Питон Скрипта

Добрый день, всем! Скрипт написан мной для проверки скорости сети брутаных роутеров, но также можно проверять скорость чего угодно.

Запустить:

./speedchecker.py -i in.txt -o out.txt

Код:
Code:
import os, sys, socket, struct, select, time, getopt
 
ICMP_ECHO_REQUEST = 8 

def main():
    try:
        opts, args = getopt.getopt(sys.argv[1:], "i:o:h", ["help"])
    except getopt.GetoptError as err:
        print str(err)
        print __doc__
        sys.exit(2)
    outfile = None
    infile = None
    ipsonly = False
    for o, a in opts:
        if o in ("-h", "--help"):
            print __doc__
            sys.exit()
        elif o in ("-i", "--input"):
            infile = a
        elif o in ("-o", "--output"):
            outfile = a
        else:
            assert False, "neponyal option"
    
    if (None == outfile) or (None == infile):
        print __doc__
        sys.exit(1)
    worker(infile, outfile)

# тут код из : https://github. com/RTimal/Python-Sockets/blob/master/ping.py
def checksum(source_string):
    """
    """
    sum = 0
    countTo = (len(source_string)/2)*2
    count = 0
    while count<countTo:
        thisVal = ord(source_string[count + 1])*256 + ord(source_string[count])
        sum = sum + thisVal
        sum = sum & 0xffffffff # Necessary?
        count = count + 2
 
    if countTo<len(source_string):
        sum = sum + ord(source_string[len(source_string) - 1])
        sum = sum & 0xffffffff # Necessary?
 
    sum = (sum >> 16)  +  (sum & 0xffff)
    sum = sum + (sum >> 16)
    answer = ~sum
    answer = answer & 0xffff
 
    answer = answer >> 8 | (answer << 8 & 0xff00)
 
    return answer
 
 
def receive_one_ping(my_socket, ID, timeout):
    """
    get the ping from the socket.
    """
    timeLeft = timeout
    while True:
        startedSelect = time.time()
        whatReady = select.select([my_socket], [], [], timeLeft)
        howLongInSelect = (time.time() - startedSelect)
        if whatReady[0] == []: # Timeout
            return
 
        timeReceived = time.time()
        recPacket, addr = my_socket.recvfrom(1024)
        icmpHeader = recPacket[20:28]
        type, code, checksum, packetID, sequence = struct.unpack(
            "bbHHh", icmpHeader
        )
        if packetID == ID:
            bytesInDouble = struct.calcsize("d")
            timeSent = struct.unpack("d", recPacket[28:28 + bytesInDouble])[0]
            return timeReceived - timeSent
 
        timeLeft = timeLeft - howLongInSelect
        if timeLeft <= 0:
            return
 
 
def send_one_ping(my_socket, dest_addr, ID):
    """
    Throw one ping to the given >dest_addr<.
    """
    dest_addr  =  socket.gethostbyname(dest_addr)
 
    # Type (8), code (8), checksum (16), id (16), sequence (16)
    my_checksum = 0
 
    # Dummy heder with a 0 checksum.
    header = struct.pack("bbHHh", ICMP_ECHO_REQUEST, 0, my_checksum, ID, 1)
    bytesInDouble = struct.calcsize("d")
    data = (192 - bytesInDouble) * "Q"
    data = struct.pack("d", time.time()) + data
 
    # Checksum on the data and the dummy header.
    my_checksum = checksum(header + data)
 
    # Put checksum into the dummy.
    header = struct.pack(
        "bbHHh", ICMP_ECHO_REQUEST, 0, socket.htons(my_checksum), ID, 1
    )
    packet = header + data
    my_socket.sendto(packet, (dest_addr, 1)) 
 
 
def do_one(dest_addr, timeout):
    """
    Vernut' the delay (in seconds) or none on timeout.
    """
    icmp = socket.getprotobyname("icmp")
    try:
        my_socket = socket.socket(socket.AF_INET, socket.SOCK_RAW, icmp)
    except socket.error, (errno, msg):
        if errno == 1:
            # Operation not permitted
            msg = msg + (
                " - Run as root !"
            )
            raise socket.error(msg)
        raise # raise the original error
 
    my_ID = os.getpid() & 0xFFFF
 
    send_one_ping(my_socket, dest_addr, my_ID)
    delay = receive_one_ping(my_socket, my_ID, timeout)
 
    my_socket.close()
    return delay
 
 
def verbose_ping(dest_addr, timeout = 2, count = 1):
    """
    Poslat' >count< ping to >dest_addr< with the given >timeout< and display
    the result.
    """
    for i in xrange(count):
        print "ping %s..." % dest_addr,
        try:
            delay  =  do_one(dest_addr, timeout)
        except socket.gaierror, e:
            print "failed. (socket error: '%s')" % e[1]
            break
 
        if delay  ==  None:
            print "failed. (timeout within %ssec.)" % timeout
        else:
            delay  =  delay * 1000
            print "get ping in %0.4fms" % delay
    print
 
 
def worker(infile, outfile, timeout = 2):

    fin = open(infile, 'r')
    inlines = fin.readlines()
    fin.close()

    # Pochistit' output file.
    open(outfile, 'w').close()

    """
    verbose_ping("192.168.1.1")
    """

    for each in inlines:
        dest_addr = each.strip()

        DELIMITER = ","
        if (DELIMITER in dest_addr):
            dest_addr = dest_addr.strip().split(DELIMITER)[0]

        print "ping %s   " % dest_addr,
        try:
            delay  =  do_one(dest_addr, timeout)
        except socket.gaierror, e:
            print "failed. (socket error: '%s')" % e[1]
            break
 
        if delay  ==  None:
            print "failed. (timeout within %ssec.)" % timeout
        else:
            delay  =  delay * 1000
            print "get ping in %0.4fms" % delay

            fout = open(outfile, "a")
            fout.write(dest_addr + "\t" + str(delay) + "\n")
            fout.close()
 
if __name__=="__main__":
    main()

Также могу помочь в других задачах и ишу работу.
droid is offline   Reply With Quote
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off



All times are GMT +2. The time now is 11:20.