コード例 #1
0
 def extract(self, data):
     offsets = {
         i: off
         for i, off in enumerate(self.regionoffsets) if off != 0
     }
     if len(offsets) == 0:
         filedata = data[self.commonoffset:]
     else:
         filedata = data[self.commonoffset:self.commonoffset +
                         sorted(list(offsets.values()))[0]]
     filedata = compress.decompress(filedata, compress.recognize(filedata),
                                    self.byteorder)
     bwrite(filedata, self.outdir + 'common.cgfx')
     sortkeys = sorted(list(offsets.keys()))
     for i in offsets.keys():
         if i != max(sortkeys):
             start = offsets[i]
             end = sortkeys[sortkeys.index(i) + 1]
             filedata = data[start:end]
         else:
             filedata = data[offsets[i]:]
         filedata = compress.decompress(filedata,
                                        compress.recognize(filedata),
                                        self.byteorder)
         bwrite(filedata, OUT_NAMES[i])
コード例 #2
0
ファイル: CBMD.py プロジェクト: kyapp69/3DSkit
 def extract(self, data):
     offsets = {
         i: off
         for i, off in enumerate(self.regionoffsets) if off != 0
     }
     data.seek(self.commonoffset)
     if len(offsets) == 0:
         indata = BytesIO(data.read())
     else:
         indata = BytesIO(data.read(sorted(list(offsets.values()))[0]))
     filedata = BytesIO()
     compress.decompress(indata, filedata, compress.recognize(indata),
                         self.verbose)
     filedata.seek(0)
     bwrite(filedata.read(), self.outdir + 'common.cgfx')
     sortkeys = sorted(list(offsets.keys()))
     for i in offsets.keys():
         if i != max(sortkeys):
             start = offsets[i]
             end = sortkeys[sortkeys.index(i) + 1]
             data.seek(start)
             indata = BytesIO(data.read(end - start))
         else:
             data.seek(offsets[i])
             indata = BytesIO(data.read())
         filedata = BytesIO()
         compress.decompress(indata, filedata, compress.recognize(indata),
                             self.verbose)
         filedata.seek(0)
         bwrite(filedata.read(), OUT_NAMES[i])
コード例 #3
0
ファイル: 3DSkit.py プロジェクト: cesarmiquel/3DSkit
def extract_files(filename, isbigendian, givenformat, verbose, opts):
    endian = '>' if isbigendian else '<'
    if os.path.isdir(filename):
        filenames = []
        for p, d, f in os.walk(filename):
            for name in f:
                filenames.append(os.path.join(p, name))
    else:
        filenames = [filename]
    for filename in filenames:
        print('\n--------%s--------' % filename)
        try:
            file = open(filename, 'rb')
        except FileNotFoundError:
            error.FileNotFoundError('File %s does not exist' % filename)
        format = unpack.recognize_file(file, givenformat)
        file.seek(0)
        if format is None:
            format = unpack.recognize_filename(filename, givenformat)
        if format not in unpack.SKIP_DECOMPRESSION:
            comp = compress.recognize(file)
            if comp == 0:
                if len(filenames) > 1:
                    err = error.InvalidInputWarning
                else:
                    err = error.InvalidInputError
                err("The given file is empty")
                continue
            if comp is not None:
                print('Compression: %s' % comp)
                print('Decompressing...')
                out = BytesIO()
                compress.decompress(file, out, comp, verbose)
                file.close()
                file = out
                print('Decompressed')
            else:
                print('No compression')
        else:
            print('No compression')
        format = unpack.recognize_file(file, givenformat)
        if format is None:
            format = unpack.recognize_filename(filename, givenformat)
        if format is None:  #still
            if len(filenames) > 1:
                err = error.UnrecognizedFormatWarning
            else:
                err = error.UnrecognizedFormatError
            err('Unrecognized format')
            continue
        print('%s file found' % format)
        print('Extracting...')
        unpack.extract(filename, file, format, endian, verbose, opts)
        print('Extracted')
コード例 #4
0
def main():
    while 1:
        task = rd.lpop(zhihu_task_key)
        if not task:
            time.sleep(3)
            continue
        try:
            task_info = json.loads(task)
            task_url = task_info['url']
            logger.info("handle url %s", task_url)
            if task_info['status_code'] != 200:
                logger.info("spider error http_code : %s" %
                            task_info['status_code'])
                continue
            task_content = decompress(base64decode(task_info['content']))
            doc = fromstring(task_content.decode('utf-8', errors='ignore'))
            if topic_re.search(task_url):
                extract_topic(task_url, doc)
            elif question_re.search(task_url):
                extract_question(task_url, doc)
            elif profile_re.search(task_url):
                extract_profile(task_url, doc)
            else:
                logger.info(" url %s did not match any schema", task_url)
        except Exception, e:
            print traceback.format_exc()
コード例 #5
0
ファイル: 3DSkit.py プロジェクト: Tyulis/3DSkit
def decompress_file(inname, outname, verbose):
	file = open(inname, 'rb')
	if outname is None:
		sname = list(inname.partition('.'))
		sname[0] += '_dec'
		outname = (''.join(sname)).replace('.cmp', '')
	out = open(outname, 'wb+')
	compression = compress.recognize(file)
	if compression is None:
		error.UnsupportedCompressionError('This file is not compressed, or 3DSkit currently does not support its compression')
	else:
		print('Compression: %s' % compression)
	print('Decompression...')
	compress.decompress(file, out, compression, verbose)
	file.close()
	print('Decompressed!')
コード例 #6
0
ファイル: db.py プロジェクト: tarassh/pyethereum
 def get(self, key):
     if key in self.uncommitted:
         if self.uncommitted[key] is None:
             raise Exception("key not in db")
         return self.uncommitted[key]
     o = compress.decompress(self.db.Get(key))
     self.uncommitted[key] = o
     return o
コード例 #7
0
ファイル: db.py プロジェクト: ckeenan/pyethereum
 def get(self, key):
     if key in self.uncommitted:
         if self.uncommitted[key] is None:
             raise Exception("key not in db")
         return self.uncommitted[key]
     o = compress.decompress(self.db.Get(key))
     self.uncommitted[key] = o
     return o
コード例 #8
0
ファイル: GARC.py プロジェクト: ObscenityIB/3DSkit
 def extract(self):
     data = self.data
     ptr = self.ptr
     for i, entry in enumerate(self.fatb):
         if entry.isfolder:
             outpath = self.outdir + str(i) + os.path.sep
             try:
                 os.mkdir(outpath)
             except:
                 pass
             os.makedirs(outpath)
             for j, subentry in enumerate(entry.subentries):
                 start = subentry.start + self.dataoffset
                 end = start + subentry.length
                 filedata = data[start:end]
                 comp = compress.recognize(filedata)
                 ext = get_ext(filedata)
                 outname = outpath + str(j) + ext
                 if comp == 'LZ11':
                     filedata = compress.decompress(filedata, comp,
                                                    self.byteorder)
                     ext = get_ext(filedata)
                     outname = outpath + 'dec_' + str(j) + ext
                 bwrite(filedata, outname)
         else:
             subentry = entry.subentries[0]
             start = subentry.start + self.dataoffset
             end = start + subentry.length
             filedata = data[start:end]
             comp = compress.recognize(filedata)
             ext = get_ext(filedata)
             outname = self.outdir + str(i) + ext
             if comp == 'LZ11':
                 filedata = compress.decompress(filedata, comp)
                 ext = get_ext(filedata)
                 outname = self.outdir + 'dec_' + str(i) + ext
             bwrite(filedata, outname)
コード例 #9
0
ファイル: parse_tree.py プロジェクト: crazyvaskya/ts-idx-2016
def leaf_term_into_index(leaf, dictionary, index_file, coding_type):
    if leaf.is_term:
        if dictionary.get(leaf.value) is None:
            leaf.value = []
        else:
            index_file.seek(dictionary[leaf.value][0], 0)
            leaf.value = compress.decompress(
                index_file.read(dictionary[leaf.value][1]), coding_type)
    else:
        if leaf.left is not None:
            leaf_term_into_index(leaf.left, dictionary, index_file,
                                 coding_type)
        if leaf.right is not None:
            leaf_term_into_index(leaf.right, dictionary, index_file,
                                 coding_type)
コード例 #10
0
def decrypt(message, key, letters):
    message_list = []
    message_int = 0
    new_message = ""
    for c in message:
        message_list.append(ord(c))
    temp_key = key
    for i in range(len(message_list)):
        message_list[i] = message_list[i] ^ temp_key
        temp_key += ((256 - key) // len(message_list))
    for item in message_list:
        message_int = message_int << 8
        message_int += item
        new_message += chr(item)
    decompressed = compress.decompress(new_message, letters)
    message_int = message_int << 8
    message_int += key
    return decompressed
コード例 #11
0
    def OnPageChanged(self, event):
        for i in range(3):
            self.text[i] = self.GetPage(i).text.GetValue()
        page = self.GetCurrentPage()
        self.title = page.file
        self.file = page.title + '.txt'

        if self.select == self.GetSelection() or (self.select == 3 and
                                                  self.GetSelection() == 2):
            if self.select == 0:
                res = compare.removeDiff(self.text[1],
                                         self.text[2],
                                         reverse=True)
                self.title = '原文 %s 移除 %s 的差异' % (self.GetPage(1).title,
                                                  self.GetPage(2).title)
            elif self.select == 1:
                try:
                    res = compress.decompress(self.text[0], self.text[2])
                except:
                    res = compare.removeDiff(self.text[0], self.text[2])
                self.title = '原文 %s 增加 %s 的差异' % (self.GetPage(0).title,
                                                  self.GetPage(2).title)
            elif self.select == 2:
                res = compare.makeDiff(self.text[0], self.text[1])
                self.title = '比较 %s 和 %s 的结果' % (self.GetPage(0).title,
                                                 self.GetPage(1).title)
            elif self.select == 3:
                res = compress.compress(self.text[0], self.text[1])
                self.title = '比较 %s 和 %s 的结果(压缩)' % (self.GetPage(0).title,
                                                     self.GetPage(1).title)
            self.GetCurrentPage().text.SetValue(res)
            self.file = self.title + '.txt'

        length = len(self.GetCurrentPage().text.GetValue())
        if length:
            self.parent.info.SetLabel(' 字数: %s' % length)
        else:
            self.parent.info.SetLabel(' 联系作者: QQ11313213')
        frm.SetTitle('%s - 文本比对 %s' % (self.title, __ver__))
コード例 #12
0
ファイル: main.py プロジェクト: Krzem5/Python-Compression
import compress

with open("rsrc/test.txt", "rb") as f:
    dt = f.read()
    c_dt = compress.compress(dt)
    print(
        f"{len(dt):,} -> {len(c_dt):,} ({-(len(dt)-len(c_dt))/len(dt)*100:+.2f}%)"
    )
    d_dt = compress.decompress(c_dt)
    print(
        f"{len(c_dt):,} -> {len(d_dt):,} ({-(len(c_dt)-len(d_dt))/len(c_dt)*100:+.2f}%)"
    )
    if (dt != d_dt):
        raise RuntimeError("Unable to compress/decompress data!")
コード例 #13
0
ファイル: unit.py プロジェクト: sisco/misc
def main():
    #Test compression
    assert compress("A") == "A"
    assert compress("ABAC") == "ABAC"
    assert compress("AA") == "AA0"
    assert compress("AAB") == "AA0B"
    assert compress("AABB") == "AA0BB0"
    assert compress("AAACBBC") == "AA1CBB0C"
    
    #Test strings with long runs of the same character
    assert compress("AAA") == "AA1"
    assert compress("AAAB") == "AA1B"
    assert compress("AAABB") == "AA1BB0"
    assert compress("AAABBB") == "AA1BB1"
    assert compress("AAABBBB") == "AA1BB2"
    assert compress("AAABBBBB") == "AA1BB3"
    assert compress("AAABBBBBB") == "AA1BB4"
    assert compress("AAABBBBBBB") == "AA1BB5"
    assert compress("AAABBBBBBBB") == "AA1BB6"
    assert compress("AAABBBBBBBBB") == "AA1BB7"
    assert compress("AAABBBBBBBBBB") == "AA1BB8"
    assert compress("AAABBBBBBBBBBB") == "AA1BB9"
    assert compress("AAABBBBBBBBBBBB") == "AA1BB9B"
    assert compress("AAABBBBBBBBBBBBB") == "AA1BB9BB0"
    assert compress("AAABBBBBBBBBBBBBB") == "AA1BB9BB1"
    assert compress("AAABBBBBBBBBBBBBBB") == "AA1BB9BB2"
    assert compress("AAABBBBBBBBBBBBBBBB") == "AA1BB9BB3"
    
    #Test decompression
    assert decompress("A") == "A"
    assert decompress("ABAC") == "ABAC"
    assert decompress("AA0") == "AA"
    assert decompress("AA0B") == "AAB"
    assert decompress("AA0BB0") == "AABB"
    assert decompress("AA1CBB0C") == "AAACBBC"
    
    #Test that decompress acts as an inverse of compress.
    assert decompress(compress("A")) == "A"
    assert decompress(compress("ABAC")) == "ABAC"
    assert decompress(compress("AA")) == "AA"
    assert decompress(compress("AAB")) == "AAB"
    assert decompress(compress("AABB")) == "AABB"
    assert decompress(compress("AAACBBC")) == "AAACBBC"
    
    print "Compression/decompression tests successful."
コード例 #14
0
    def handle(self):
        def md5_file(filename):
            if os.path.isfile(filename):
                m = md5()
                with open(filename, 'rb') as f:
                    m.update(f.read())
                return m.hexdigest()
            else:
                return None

        def receive_data(sock):
            return_data = ''
            while True:
                data = sock.recv(4096)
                #print '\033[36;1m%s\033[0m' %data
                if data == 'EndOfDataConfirmationMark':
                    print 'file transfer done==='
                    break
                return_data += data
            #print '\033[34;1m=====\033[0m',return_data
            return return_data
            # self.request is the TCP socket connected to the client
        def receive_data_by_size(sock, size):
            return_data = ''
            filename = time.time()
            fp = open('recv/' + str(filename) + '.txt', 'w+')
            restsize = size
            print "recving..."
            while 1:
                if (restsize > 8096):
                    data = sock.recv(8096)
                    return_data += data
                else:
                    data = sock.recv(restsize)
                    return_data += data
                if restsize == 0:
                    break
                fp.write(data)
                restsize = restsize - len(data)
            print restsize
            #if restsize <= 0:
            #    break
            fp.close()
            print "receving is done...............", restsize
            return return_data

        def RSA_verifyication(sock):
            raw_rsa_data = sock.recv(396)  #fixed key length
            #print '-------->',raw_rsa_data, len(raw_rsa_data)
            try:
                RSA_signal, encrypted_data, random_num_from_client = json.loads(
                    raw_rsa_data)
            except ValueError:
                print '\033[41;1m.Wrong data format from %s,close connection!\033[0m' % self.client_address[
                    0]
                return 0
            if RSA_signal == 'RSA_KEY_Virification':
                #encrypted_data = "iwTgqSzMcNOHauWdXXc+rgfbWt6IUXmdIXUqNUJ2U7FZKISc2WR2yAJrq7ldR3TxQEppWgIo/Ycj\nA5gl0fGDVvAEvV02CKZ3gZEI6fWpiMoy6ucpFFDyVAWUrpiXdUOVKxOsDXGgeOObgvd1jsEQCo4i\ncLCBTWDn0HfyQic+Btm1txXc7Nw9jknUCZx6Y8I+6JaIYjNRLwJ6kSMwpTsfP37lvrQfdUkWu3bX\npV9z3hHOQ6+A8rlK7fmL1zk75TXDCmnrLY88UIv6BL4zPXtim4BCD7PlOvDG296br0VIcvF5uhqr\ntj7zOcbA81P1JBFm1nMJqLv+SB5sit923v05XA==\n"
                try:
                    decrpted_data = key_gen.RSA_key.decrypt_RSA(
                        key_gen.private_file, encrypted_data)
                    #print decrpted_data,'+++++++', random_num_from_client
                except ValueError:
                    decrpted_data = 'Incorrect decryption'
                if decrpted_data != random_num_from_client:
                    return 0
            else:
                return 0

        if RSA_verifyication(
                self.request) == 0:  #didn't pass the RSA virification
            #if self.client_address[0] != server_address:
            err_msg = "\033[31;1mIP %s didn't pass the RSA virification,drop it!\033[0m" % self.client_address[
                0]
            pickle_data = '', err_msg
            self.request.sendall(pickle.dumps(pickle_data))
            print err_msg
            block_list.append(self.client_address[0])
            if block_list.count(self.client_address[0]) > 5:
                print "Alert::malicious attack from:", self.client_address[0]
        else:
            print "RSA virification passed!"
            self.request.sendall('RSA_OK')
            #开始接收服务端发来的通信消息
            self.data_type = self.request.recv(1024).strip()
            if self.data_type.startswith('MonitorDataChange'):
                #向proxy服务端发送开始准备接受数据
                self.request.send('ReadyToReceiveData')
                #接收改变的监控数据本地保存
                data_size = self.data_type.split("|")[1]
                #data_size=self.request.recv(1024)
                if data_size <= 8096:
                    monitor_data_new = self.request.recv(8096)
                else:
                    monitor_data_new = receive_data_by_size(
                        self.request, int(data_size))
                monitor_dic_new = json.loads(monitor_data_new)
                print monitor_dic_new
                #filename='../recv/monitor_data_change.json'
                filename = '../recv/monitor_date_frist.json'
                with open(filename, 'w+') as f:
                    f.write(monitor_data_new)
                print 'write data into file....'
                #新的监控数据如何放到监控中

            elif self.data_type.startswith('RUN_Script|'):
                recv_data = self.data
                filename = "%s%s" % (recv_dir, recv_data.split('|')[1].strip())
                print '+++++|receiving file from server:', filename
                md5_key_from_client = self.data.split('|')[2]
                file_content = receive_data(self.request)
                print 'write data into file....'
                with open(filename, 'wb') as f:
                    f.write(file_content)
                md5_key = md5_file(filename)
                print '+++++|verfiying md5key---'
                if md5_key == md5_key_from_client:
                    print 'file transfer verification ok'
                    self.request.send('FileTransferComplete')
                    os.system('chmod +rx %s ' % filename)
                    #os.chmod(filename,stat.S_IREAD+stat.S_IWOTH+stat.S_IXUSR+stat.S_IRWXO)
                    cmd = "nohup  %s > %s.log &" % (filename, filename)
                    print '\033[32;1mgoing to run script:\033[0m', cmd
                    result = os.system(cmd)
                    #print result,'||||+|||'
                else:
                    print "file not complete"
                    self.request.send('FileTransferNotComplete')
            elif self.data_type.startswith('SEND_FILE|'):
                file_info = self.data.split('|')
                md5_key_from_client = file_info[1]
                compress_mark = file_info[4]
                print compress_mark
                source_file = file_info[2].split('/')[-1]
                if file_info[3].endswith('/'):
                    dst_filename = '%s%s' % (file_info[3], source_file)
                else:
                    dst_filename = '%s/%s' % (file_info[3], source_file)
                print dst_filename
                print '+++++|receiving file from server:', dst_filename
                try:
                    with open(dst_filename, 'wb') as f:
                        self.request.send("FileOk2Send")
                        file_content = receive_data(self.request)
                        print 'write data into file....'
                        f.write(file_content)
                except IOError:
                    print dst_filename, 'not exist'
                    self.request.send(
                        "FileTransferError:cannot save file to %s" %
                        dst_filename)
                    return "FileTransferError..."
                md5_key = md5_file(dst_filename)
                print '+++++|verfiying md5key---'
                if md5_key == md5_key_from_client:
                    print 'file transfer verification ok'
                    self.request.send('FileTransferComplete')
                    if compress_mark == 'tarAndCompressed':
                        temp_tar_file = 'temp/%s.tar' % source_file
                        compress.decompress(dst_filename, temp_tar_file)
                        compress.untar(temp_tar_file, file_info[3])
                        os.remove(temp_tar_file)
                        os.remove(dst_filename)
                    elif compress_mark == 'compressed':
                        target_path = dst_filename.split('/%s' %
                                                         source_file)[0]
                        print target_path
                        target_file = '%s/%s' % (target_path, source_file[:-2])
                        compress.decompress(dst_filename, target_file)
                        os.remove(dst_filename)
                    else:
                        print "file not complete"
                        self.request.send('FileTransferNotComplete')
コード例 #15
0
     print("Enter index path: ")
     path = input()  #"eng_doc_positional.pkl"
     print("Enter type (vb, gc): ")
     type = input()  #vb
     info = load_index(path)
     idx = info['index']
     create_distance_index(idx)
     info['index'] = compress(idx, type)
     save_index(info)
 elif cmd == '8':
     print("Enter compressed index path: ")
     path = input()
     path = "{}_compressed.pkl".format(path[:-4])
     compressed = load_index(path)['index']
     type = "vb"  #just vb is implemented
     new_index = decompress(compressed, type)
 elif cmd == '9':
     print("Enter bigram index path: ")
     path = input()  #eng_doc_bigram.txt"
     bg_idx = load_bigram(path)
     print("Enter query: ")
     query = input()
     query = preproccess.prepare_text(query)
     ans = spell_correction(query, bg_idx, type1=False)
     print(ans)
 elif cmd == '10':
     print("Enter Distance Type(Jacc or Edit): ")
     type = input()
     print("Enter two Words: ")
     words = input().split()
     ans = jaccard_dist_type2(
コード例 #16
0
 def handle(self):
     def md5_file(filename):
             if os.path.isfile(filename):
                     m = md5()
                     with open(filename, 'rb') as f:
                             m.update(f.read())
                     return m.hexdigest()
             else:
                     return None
     def receive_data(sock):
         return_data ='' 
         while True:
             data = sock.recv(4096)
         #print '\033[36;1m%s\033[0m' %data
             if data == 'EndOfDataConfirmationMark':
                 print 'file transfer done==='
                 break
             return_data += data
         #print '\033[34;1m=====\033[0m',return_data
         return return_data
         # self.request is the TCP socket connected to the client
     def receive_data_by_size(sock,size):
         return_data = ''
         filename = time.time() 
         fp = open('recv/'+str(filename)+'.txt','w+')
         restsize = size
         print "recving..."
         while 1:
             if(restsize > 8096):
                 data = sock.recv(8096)
                 return_data += data
             else:
                 data = sock.recv(restsize)
                 return_data += data
             if restsize ==0:
                 break
             fp.write(data)
             restsize = restsize - len(data)
         print restsize
             #if restsize <= 0:
             #    break
         fp.close()
         print "receving is done...............",restsize                    
         return return_data
     def RSA_verifyication(sock):
         raw_rsa_data = sock.recv(396)  #fixed key length
         #print '-------->',raw_rsa_data, len(raw_rsa_data)
         try:
             RSA_signal, encrypted_data,random_num_from_client = json.loads(raw_rsa_data)
         except ValueError:
             print '\033[41;1m.Wrong data format from %s,close connection!\033[0m' %  self.client_address[0]
             return 0
         if RSA_signal == 'RSA_KEY_Virification':
             #encrypted_data = "iwTgqSzMcNOHauWdXXc+rgfbWt6IUXmdIXUqNUJ2U7FZKISc2WR2yAJrq7ldR3TxQEppWgIo/Ycj\nA5gl0fGDVvAEvV02CKZ3gZEI6fWpiMoy6ucpFFDyVAWUrpiXdUOVKxOsDXGgeOObgvd1jsEQCo4i\ncLCBTWDn0HfyQic+Btm1txXc7Nw9jknUCZx6Y8I+6JaIYjNRLwJ6kSMwpTsfP37lvrQfdUkWu3bX\npV9z3hHOQ6+A8rlK7fmL1zk75TXDCmnrLY88UIv6BL4zPXtim4BCD7PlOvDG296br0VIcvF5uhqr\ntj7zOcbA81P1JBFm1nMJqLv+SB5sit923v05XA==\n"
             try:
                 decrpted_data = key_gen.RSA_key.decrypt_RSA(key_gen.private_file,encrypted_data)
                 #print decrpted_data,'+++++++', random_num_from_client
             except ValueError:
                 decrpted_data = 'Incorrect decryption'
             if decrpted_data != random_num_from_client:
                 return 0
         else:
             return 0    
     if RSA_verifyication(self.request) == 0: #didn't pass the RSA virification
         #if self.client_address[0] != server_address:
         err_msg= "\033[31;1mIP %s didn't pass the RSA virification,drop it!\033[0m" % self.client_address[0]
         pickle_data = '', err_msg
         self.request.sendall( pickle.dumps(pickle_data)  )
         print err_msg 
         block_list.append(self.client_address[0])
         if block_list.count(self.client_address[0]) > 5:
             print "Alert::malicious attack from:" , self.client_address[0]
     else:
         print "RSA virification passed!"
         self.request.sendall('RSA_OK')
         #开始接收服务端发来的通信消息
         self.data_type = self.request.recv(1024).strip()
         if self.data_type.startswith( 'MonitorDataChange'):
             #向proxy服务端发送开始准备接受数据
             self.request.send('ReadyToReceiveData')
             #接收改变的监控数据本地保存
             data_size=self.data_type.split("|")[1]
             #data_size=self.request.recv(1024)
             if data_size<=8096:
                 monitor_data_new=self.request.recv(8096)
             else:
                 monitor_data_new=receive_data_by_size(self.request,int(data_size))
             monitor_dic_new=json.loads(monitor_data_new)
             print monitor_dic_new
             #filename='../recv/monitor_data_change.json'
             filename='../recv/monitor_date_frist.json'
             with open(filename, 'w+') as f:
                 f.write(monitor_data_new)
             print 'write data into file....'
             #新的监控数据如何放到监控中
             
         elif self.data_type.startswith('RUN_Script|'):
             recv_data= self.data
             filename = "%s%s" %(recv_dir,recv_data.split('|')[1].strip())
             print '+++++|receiving file from server:',filename
             md5_key_from_client = self.data.split('|')[2]
             file_content = receive_data(self.request)
             print 'write data into file....'
             with open(filename, 'wb') as f:
                 f.write(file_content)
             md5_key= md5_file(filename)
             print '+++++|verfiying md5key---'
             if md5_key == md5_key_from_client:
                 print 'file transfer verification ok' 
                 self.request.send('FileTransferComplete')
                 os.system('chmod +rx %s ' % filename)
                 #os.chmod(filename,stat.S_IREAD+stat.S_IWOTH+stat.S_IXUSR+stat.S_IRWXO)
                 cmd = "nohup  %s > %s.log &" % (filename, filename)
                 print '\033[32;1mgoing to run script:\033[0m',cmd
                 result = os.system(cmd )
                 #print result,'||||+|||'
             else:
                 print "file not complete"
                 self.request.send('FileTransferNotComplete')
         elif self.data_type.startswith('SEND_FILE|'):
             file_info = self.data.split('|')
             md5_key_from_client = file_info[1]
             compress_mark = file_info[4]
             print compress_mark
             source_file = file_info[2].split('/')[-1]
             if file_info[3].endswith('/'):
                 dst_filename = '%s%s' %(file_info[3], source_file)
             else:
                 dst_filename = '%s/%s' %(file_info[3], source_file)
             print dst_filename
             print '+++++|receiving file from server:',dst_filename
             try:
                 with open(dst_filename, 'wb') as f:
                     self.request.send("FileOk2Send")
                     file_content = receive_data(self.request)
                     print 'write data into file....'
                     f.write(file_content)
             except IOError:
                 print dst_filename,'not exist'
                 self.request.send("FileTransferError:cannot save file to %s" % dst_filename )
                 return  "FileTransferError..."
             md5_key= md5_file(dst_filename )
             print '+++++|verfiying md5key---'
             if md5_key == md5_key_from_client:
                 print 'file transfer verification ok'
                 self.request.send('FileTransferComplete')
                 if compress_mark == 'tarAndCompressed':
                     temp_tar_file = 'temp/%s.tar' % source_file
                     compress.decompress(dst_filename, temp_tar_file)
                     compress.untar(temp_tar_file,file_info[3] )
                     os.remove(temp_tar_file)
                     os.remove(dst_filename)
                 elif compress_mark == 'compressed':
                     target_path = dst_filename.split('/%s' %source_file)[0]
                     print target_path
                     target_file = '%s/%s' %(target_path, source_file[:-2])
                     compress.decompress(dst_filename, target_file)
                     os.remove(dst_filename)
                 else:
                     print "file not complete"
                     self.request.send('FileTransferNotComplete')
コード例 #17
0
    def handle(self):
        def md5_file(filename):
                if os.path.isfile(filename):
                        m = md5()
                        with open(filename, 'rb') as f:
                                m.update(f.read())
                        return m.hexdigest()
                else:
                        return None
        def receive_data(sock):
		return_data ='' 
                while True:
                        data = sock.recv(4096)
			#print '\033[36;1m%s\033[0m' %data
			if data == 'EndOfDataConfirmationMark':
				print 'file transfer done==='
				break
                        return_data += data
		#print '\033[34;1m=====\033[0m',return_data
                return return_data
        # self.request is the TCP socket connected to the client
	print "Got a connection from",self.client_address[0]
	RSA_signal =self.request.recv(1024).strip()
	random_num,dcrypted_data_from_server = str(random.random()),None
	#print random_num, dcrypted_data_from_server
	if RSA_signal == 'RSA_KEY_Virification':
		encrypted_data = key_gen.RSA_key.encrypt_RSA(key_gen.public_file,random_num)
		print encrypted_data
		self.request.send(encrypted_data)
		dcrypted_data_from_server = self.request.recv(1024)	
	if random_num != dcrypted_data_from_server:
		print random_num, dcrypted_data_from_server
		self.request.send('WrongRSAkey')
		self.finish()
	
		"""if self.client_address[0] != server_address:
		err_msg= "\033[31;1mIP %s not allowed to connect this server!\033[0m" % self.client_address[0]
		pickle_data = '', err_msg
		self.request.sendall( pickle.dumps(pickle_data)  )
		print err_msg 
		block_list.append(self.client_address[0])
		if block_list.count(self.client_address[0]) > 5:
			print "Alert::malicious attack from:" , self.client_address[0]
		"""
	else:
		self.request.send('CorrectRSAkey')
		print "RSA virification passed!"
		self.data = self.request.recv(1024).strip()
		if self.data.startswith('CMD_Excution|'):
			cmd= self.data.split('CMD_Excution|')[1]
			cmd_status,result = commands.getstatusoutput(cmd)	
			print 'host:%s \tcmd:%s \tresult:%s' %(self.client_address[0], cmd, cmd_status)	
			self.request.sendall(pickle.dumps( (cmd_status,result) ))
		if self.data.startswith('RUN_Script|'):
			recv_data= self.data
			filename = "%s%s" %(recv_dir,recv_data.split('|')[1].strip())
			print '+++++|receiving file from server:',filename
			md5_key_from_client = self.data.split('|')[2]
			file_content = receive_data(self.request)
			print 'write data into file....'
			with open(filename, 'wb') as f:
				f.write(file_content)
			md5_key= md5_file(filename )
			print '+++++|verfiying md5key---'
			if md5_key == md5_key_from_client:	
				print 'file transfer verification ok' 
				self.request.send('FileTransferComplete')	
				os.system('chmod +rx %s ' % filename)
				#os.chmod(filename,stat.S_IREAD+stat.S_IWOTH+stat.S_IXUSR+stat.S_IRWXO)
				cmd = "nohup  %s > %s.log &" % (filename, filename)
				print '\033[32;1mgoing to run script:\033[0m',cmd
				result = os.system(cmd )
				#print result,'||||+|||'
			else:
				print "file not complete"
				self.request.send('FileTransferNotComplete')	
		if self.data.startswith('SEND_FILE|'):
                        file_info = self.data.split('|')
			md5_key_from_client = file_info[1]
			compress_mark = file_info[4]
			print compress_mark
			source_file = file_info[2].split('/')[-1]
			if file_info[3].endswith('/'):
				dst_filename = '%s%s' %(file_info[3], source_file)
			else:
				dst_filename = '%s/%s' %(file_info[3], source_file)
			print dst_filename
                        print '+++++|receiving file from server:',dst_filename
			try:
                          with open(dst_filename, 'wb') as f:
				self.request.send("FileOk2Send")
                        	file_content = receive_data(self.request)
                        	print 'write data into file....'
                                f.write(file_content)
			except IOError:
				print dst_filename,'not exist'
				self.request.send("FileTransferError:cannot save file to %s" % dst_filename )
				return  "FileTransferError..."	
                        md5_key= md5_file(dst_filename )
                        print '+++++|verfiying md5key---'
                        if md5_key == md5_key_from_client:
                                print 'file transfer verification ok'
                                self.request.send('FileTransferComplete')
				if compress_mark == 'tarAndCompressed':
					temp_tar_file = 'temp/%s.tar' % source_file
					compress.decompress(dst_filename, temp_tar_file)
					compress.untar(temp_tar_file,file_info[3] )
					os.remove(temp_tar_file)
					os.remove(dst_filename)
				elif compress_mark == 'compressed':
					target_path = dst_filename.split('/%s' %source_file)[0]
					print target_path
					target_file = '%s/%s' %(target_path, source_file[:-2])
					compress.decompress(dst_filename, target_file) 	
					os.remove(dst_filename)
                        else:
                                print "file not complete"
                                self.request.send('FileTransferNotComplete')
		if self.data == 'getHardwareInfo':
			import Hardware_Collect_Script
			hardware_data = Hardware_Collect_Script.collectAsset() 
			self.request.sendall(hardware_data )
コード例 #18
0
ファイル: GARC.py プロジェクト: kyapp69/3DSkit
 def extract(self):
     data = self.data
     for i, entry in enumerate(self.fatb):
         if entry.isfolder:
             outpath = self.outdir + str(i) + os.path.sep
             try:
                 os.mkdir(outpath)
             except:
                 pass
             for j, subentry in enumerate(entry.subentries):
                 if subentry is None:
                     continue
                 start = subentry.start + self.dataoffset
                 data.seek(start)
                 filedata = BytesIO(data.read(subentry.length))
                 if not self.skipdec:
                     comp = compress.recognize(filedata)
                     filedata.seek(0)
                     ext = get_ext(filedata)
                     outname = outpath + str(j) + ext
                     if comp == 'LZ11':
                         outname = outpath + 'dec_' + str(j) + ext
                         out = open(outname, 'wb+')
                         result = compress.decompress(
                             filedata, out, comp, self.verbose)
                         if result == 901:  #Ugly
                             outname = outpath + str(j) + ext
                             print('For %s' % outname)
                             filedata.seek(0)
                             bwrite(filedata.read(), outname)
                     else:
                         ext = get_ext(filedata)
                         outname = outpath + str(j) + ext
                         bwrite(filedata.read(), outname)
                 else:
                     ext = get_ext(filedata)
                     outname = outpath + str(j) + ext
                     bwrite(filedata.read(), outname)
         else:
             subentry = entry.subentries[0]
             start = subentry.start + self.dataoffset
             data.seek(start)
             filedata = BytesIO(data.read(subentry.length))
             if not self.skipdec:
                 comp = compress.recognize(filedata)
                 filedata.seek(0)
                 ext = get_ext(filedata)
                 outname = self.outdir + str(i) + ext
                 if comp == 'LZ11':
                     outname = self.outdir + 'dec_%d%s' % (i, ext)
                     out = open(outname, 'wb+')
                     result = compress.decompress(filedata, out, comp,
                                                  self.verbose)
                     out.close()
                     if result == 901:  #Ugly
                         os.remove(outname)
                         outname = self.outdir + str(i) + ext
                         print('For %s' % outname)
                         filedata.seek(0)
                         bwrite(filedata.read(), outname)
                 else:
                     ext = get_ext(filedata)
                     outname = self.outdir + str(i) + ext
                     bwrite(filedata.read(), outname)
             else:
                 ext = get_ext(filedata)
                 outname = self.outdir + str(i) + ext
                 bwrite(filedata.read(), outname)