def inp_encrypt(file_name): global enable_encrypt if enable_encrypt == Ture: iv = "reallybadiv" ls = zip_lsdir(file_name) files_to_encrypt = [] bs = 32 password = inp_get_token_value("info.inp", "#info_password", archive=file_name) if password == "": return False for i in range(0, len(ls)): if ls[i].endswith(".inp") == True and ls[i] != "info.inp": lines = [] lines = inp_load_file(ls[i], archive=file_name, mode="b") m = hashlib.md5() m.update(password.encode('utf-8')) key_hash = m.digest() m = hashlib.md5() m.update(iv.encode('utf-8')) iv_hash = m.digest() encryptor = AES.new(key_hash, AES.MODE_CBC, IV=iv_hash) start = "encrypt" start = start.encode('utf-8') s = (int((len(lines)) / 16.0) + 1) * 16 data = bytearray(int(s)) for ii in range(0, len(lines)): data[ii] = lines[ii] ret = encryptor.encrypt(bytes(data)) data = start + ret replace_file_in_zip_archive(file_name, ls[i], data, mode="b") inp_update_token_value("info.inp", "#info_password", "encrypted", archive=file_name)
def inp_update_token_value(file_path, token, replace,line_number): lines=[] if token=="#Tll": inp_update_token_value("thermal.inp", "#Tlr", replace,1) files=inp_lsdir(file_path) for i in range(0,len(files)): if files[i].startswith("dos") and files[i].endswith(".inp"): inp_update_token_value(files[i], "#Tstart", replace,1) try: upper_temp=str(float(replace)+5) except: upper_temp="300.0" inp_update_token_value(files[i], "#Tstop", upper_temp,1) path=os.path.dirname(file_path) zip_file_name=os.path.join(path,"sim.gpvdm") read_lines_from_archive(lines,zip_file_name,os.path.basename(file_path)) new_lines=inp_replace_multi_line_token(lines,token,replace) if os.path.isfile(file_path): fh, abs_path = mkstemp() dump='\n'.join(new_lines) dump=dump.rstrip("\n") dump=dump.encode('ascii') f=open(abs_path, mode='wb') written = f.write(dump) f.close() os.close(fh) shutil.move(abs_path, file_path) else: replace_file_in_zip_archive(zip_file_name,os.path.basename(file_path),new_lines)
def inp_update_token_value(file_path, token, replace,line_number): lines=[] if token=="#Tll": inp_update_token_value("thermal.inp", "#Tlr", replace,1) inp_update_token_value("dos0.inp", "#Tstart", replace,1) try: upper_temp=str(float(replace)+5) except: upper_temp="300.0" inp_update_token_value("dos0.inp", "#Tstop", upper_temp,1) path=os.path.dirname(file_path) zip_file_name=os.path.join(path,"sim.opvdm") read_lines_from_archive(lines,zip_file_name,os.path.basename(file_path)) for i in range(0, len(lines)): if lines[i]==token: lines[i+line_number]=replace break if os.path.isfile(file_path): fh, abs_path = mkstemp() dump='\n'.join(lines) #for item in lines: # dump=dump+item+"\n" dump=dump.rstrip("\n") f=open(abs_path, mode='wb') lines = f.write(dump) f.close() os.close(fh) shutil.move(abs_path, file_path) else: replace_file_in_zip_archive(zip_file_name,os.path.basename(file_path),lines)