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])
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])
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')
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()
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!')
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
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)
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)
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
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__))
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!")
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."
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')
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(
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')
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 )
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)