def encrypt_val(clear_text): master_key = b'meafacialkeycam1' encoder = PKCS7Encoder() raw = encoder.encode(clear_text) iv = Random.new().read(16) cipher = AES.new(master_key, AES.MODE_CBC, iv, segment_size=128) return base64.b64encode(iv + cipher.encrypt(raw))
def encrypt(self, text): sha384 = hashlib.sha384() sha384.update(self.key.encode('utf-8')) res = sha384.digest() key = res[0:32] iv = res[32:48] cryptor = AES.new(key, self.mode, iv) #加密函数,如果text不是16的倍数【加密文本text必须为16的倍数!】,那就补足为16的倍数 encoder = PKCS7Encoder() text = encoder.encode(text) text = cryptor.encrypt(text) #撒盐 count = len(text) randomMax = ord('~') - ord('!') originBytes = bytearray(text) outBytes = range(2 * count) for i in range(0, count): outBytes[i * 2] = originBytes[i] outBytes[i * 2 + 1] = random.randint(0, 9999) % randomMax + ord('!') #偏移 for i in range(0, 2 * count): outBytes[i] = (outBytes[i] + self.shift) % 256 if outBytes[i] < 0: outBytes[i] = outBytes[i] + 256 return bytearray(outBytes)
def __init__(self,version=1): self.version=version self.mode = AES.MODE_ECB self.encoder = PKCS7Encoder() self.prox=[''] self.keys={'DungeonResourceLoadMstListRequest':{'url':'/actionSymbol/Sl8UgmP4.php','id':'jnw49dUq','key':'3PVu6ReZ'},'ItemCarryEditRequest':{'url':'/actionSymbol/8BE6tJbf.php','id':'UM7hA0Zd','key':'04opy1kf'},'UnitFavoriteRequest':{'url':'/actionSymbol/sqeRg12M.php','id':'tBDi10Ay','key':'w9mWkGX0'},'MissionReStartRequest':{'url':'/actionSymbol/r5vfM1Y3.php','id':'GfI4LaU3','key':'Vw6bP0rN'},'sgExpdQuestStartRequest':{'url':'/actionSymbol/I8uq68c3.php','id':'I8uq68c3','key':'60Os29Mg'},'RoutineWorldUpdateRequest':{'url':'/actionSymbol/oR1psQ5B.php','id':'6H1R9WID','key':'XDIL4E7j'},'FriendListRequest':{'url':'/actionSymbol/p3hwqW5U.php','id':'u7Id4bMg','key':'1iV2oN9r'},'GetReinforcementInfoRequest':{'url':'/actionSymbol/hXMoLwgE.php','id':'AJhnI37s','key':'87khNMou'},'DailyDungeonSelectRequest':{'url':'/actionSymbol/9LgmdR0v.php','id':'JyfxY2e0','key':'ioC6zqG1'},'sgMissionUnlockRequest':{'url':'/actionSymbol/LJhqu0x6.php','id':'LJhqu0x6','key':'ZcBV06K4'},'GetTitleInfoRequest':{'url':'/actionSymbol/BbIeq31M.php','id':'ocP3A1FI','key':'Mw56RNZ2'},'TownInRequest':{'url':'/actionSymbol/isHfQm09.php','id':'8EYGrg76','key':'JI8zU5rC'},'ClsmStartRequest':{'url':'/actionSymbol/rncR9js8.php','id':'4uCSA3ko','key':'wdSs23yW'},'CraftStartRequest':{'url':'/actionSymbol/w71MZ0Gg.php','id':'Gr9zxXk5','key':'K92H8wkY'},'TownUpdateRequest':{'url':'/actionSymbol/0ZJzH2qY.php','id':'G1hQM8Dr','key':'37nH21zE'},'MissionRetireRequest':{'url':'/actionSymbol/gbZ64SQ2.php','id':'v51PM7wj','key':'oUh1grm8'},'DailyQuestUpdateRequest':{'url':'/actionSymbol/QWDn5epF.php','id':'6QYd5Hym','key':'9QtGVCWg'},'RmStartRequest':{'url':'/actionSymbol/8BJSL7g0.php','id':'7FyJS3Zn','key':'iu67waph'},'ItemSellRequest':{'url':'/actionSymbol/hQRf8D6r.php','id':'d9Si7TYm','key':'E8H3UerF'},'RmEndRequest':{'url':'/actionSymbol/I9p3n48A.php','id':'fyp10Rrc','key':'FX5L3Sfv'},'BundlePurchaseRequest':{'url':'/actionSymbol/tPc64qmn.php','id':'w6Z9a6tD','key':'NE3Pp4K8'},'UnitSellRequest':{'url':'/actionSymbol/0qmzs2gA.php','id':'9itzg1jc','key':'DJ43wmds'},'UpdateSwitchInfoRequest':{'url':'/actionSymbol/SqoB3a1T.php','id':'mRPo5n2j','key':'4Z5UNaIW'},'ArchiveUpdateRequest':{'url':'/actionSymbol/2bCcKx0D.php','id':'cVTxW0K3','key':'IFLW9H4M'},'UnitMixRequest':{'url':'/actionSymbol/6aLHwhJ8.php','id':'UiSC9y8R','key':'4zCuj2hK'},'RateAppRewardRequest':{'url':'/actionSymbol/L0OsxMaT.php','id':'L0OsxMaT','key':'m1pPBwC3'},'RbReStartRequest':{'url':'/actionSymbol/DQ49vsGL.php','id':'6ZNY3zAm','key':'PRzAL3V2'},'DmgRankStartRequest':{'url':'/actionSymbol/j37Vk5xe.php','id':'5P6ULvjg','key':'1d5AP9p6'},'RoutineHomeUpdateRequest':{'url':'/actionSymbol/1YWTzU9h.php','id':'Daud71Hn','key':'aw0syG7H'},'RbEntryRequest':{'url':'/actionSymbol/30inL7I6.php','id':'f8kXGWy0','key':'EA5amS29'},'MissionContinueRequest':{'url':'/actionSymbol/ZzCXI6E7.php','id':'LuCN4tU5','key':'34n2iv7z'},'ItemBuyRequest':{'url':'/actionSymbol/oQrAys71.php','id':'sxK2HG6T','key':'InN5PUR0'},'ExchangeShopRequest':{'url':'/actionSymbol/1bf0HF4w.php','id':'I7fmVX3R','key':'qoRP87Fw'},'NoticeReadUpdateRequest':{'url':'/actionSymbol/j6kSWR3q.php','id':'pC3a2JWU','key':'iLdaq6j2'},'CampaignAcceptRequest':{'url':'/actionSymbol/n7Hitfg4.php','id':'G6ye0D1t','key':'Xb0G1wcB'},'RmDungeonStartRequest':{'url':'/actionSymbol/NC8Ie07P.php','id':'R5mWbQ3M','key':'A7V1zkyc'},'MissionUpdateRequest':{'url':'/actionSymbol/fRDUy3E2.php','id':'j5JHKq6S','key':'Nq9uKGP7'},'RbMatchingRequest':{'url':'/actionSymbol/mn5cHaJ0.php','id':'DgG4Cy0F','key':'4GSMn0qb'},'DailyQuestClaimAllRewardRequest':{'url':'/actionSymbol/Br9PwJ6A.php','id':'DCmya9WD','key':'KHx6JdrT'},'RbRankingRequest':{'url':'/actionSymbol/3fd8y7W1.php','id':'kcW85SfU','key':'SR6PoLM3'},'FacebookLogoutRequest':{'url':'/actionSymbol/xHTo4BZp.php','id':'xHTo4BZp','key':'wwHxtAy6'},'RoutineGachaUpdateRequest':{'url':'/actionSymbol/qS0YW57G.php','id':'t60dQP49','key':'Q6ZGJj0h'},'BundleStatusRequest':{'url':'/actionSymbol/tPc64qmn.php','id':'uLXAMvCT','key':'PrSPuc8c'},'CraftEndRequest':{'url':'/actionSymbol/9G7Vc8Ny.php','id':'WIuvh09n','key':'yD97t8kB'},'PurchaseCancelRequest':{'url':'/actionSymbol/y71uBCER.php','id':'L7K0ezU2','key':'Z1mojg9a'},'RoutineRaidMenuUpdateRequest':{'url':'/actionSymbol/Sv85kcPQ.php','id':'g0BjrU5D','key':'z80swWd9'},'DmgRankRetireRequest':{'url':'/actionSymbol/8wdmR9yG.php','id':'W3Z4VF1X','key':'5fkWyeE6'},'SearchGetItemInfoRequest':{'url':'/actionSymbol/e4Gjkf0x.php','id':'0D9mpGUR','key':'vK2V8mZM'},'CampaignTieupRequest':{'url':'/actionSymbol/2u30vqfY.php','id':'mI0Q2YhW','key':'72d5UTNC'},'CraftExeRequest':{'url':'/actionSymbol/UyHLjV60.php','id':'PKDhIN34','key':'ZbHEB15J'},'FriendFavoriteRequest':{'url':'/actionSymbol/8IYSJ5H1.php','id':'1oE3Fwn4','key':'3EBXbj1d'},'GachaExeRequest':{'url':'/actionSymbol/oC30VTFp.php','id':'9fVIioy1','key':'oaEJ9y1Z'},'DmgRankEndRequest':{'url':'/actionSymbol/zd5KJ3jn.php','id':'s98cw1WA','key':'7pGj8hSW'},'PurchaseSettlementRequest':{'url':'/actionSymbol/yt82BRwk.php','id':'JsFd4b7j','key':'jmh7xID8'},'UnitEquipRequest':{'url':'/actionSymbol/nIk9z5pT.php','id':'pB3st6Tg','key':'45VZgFYv'},'GetUserInfoRequest':{'url':'/actionSymbol/u7sHDCg4.php','id':'X07iYtp5','key':'rcsq2eG7'},'MailListRequest':{'url':'/actionSymbol/u3E8hpad.php','id':'KQHpi0D7','key':'7kgsrGQ1'},'SublimationSkillRequest':{'url':'/actionSymbol/xG3jBbw5.php','id':'s48Qzvhd','key':'97Uvrdz3'},'FacebookRewardListRequest':{'url':'/actionSymbol/8YZsGLED.php','id':'8YZsGLED','key':'85YBRzZg'},'PurchaseGiveUpRequest':{'url':'/actionSymbol/C2w0f3go.php','id':'BFf1nwh6','key':'xoZ62QWy'},'RbBoardPieceOpenRequest':{'url':'/actionSymbol/iXKfI4v1.php','id':'hqzU9Qc5','key':'g68FW4k1'},'TownOutRequest':{'url':'/actionSymbol/0EF3JPjL.php','id':'sJcMPy04','key':'Kc2PXd9D'},'UnitClassUpRequest':{'url':'/actionSymbol/8z4Z0DUY.php','id':'zf49XKg8','key':'L2sTK0GM'},'DailyQuestClaimRewardRequest':{'url':'/actionSymbol/Br9PwJ6A.php','id':'Zy8fYJ5e','key':'jwYGF3sY'},'RmEntryRequest':{'url':'/actionSymbol/fBn58ApV.php','id':'wx5sg9ye','key':'p2tqP7Ng'},'MissionBreakRequest':{'url':'/actionSymbol/P4oIeVf0.php','id':'17LFJD0b','key':'Z2oPiE6p'},'LoginBonusRequest':{'url':'/actionSymbol/iP9ogKy6.php','id':'vw9RP3i4','key':'Vi6vd9zG'},'sgExpdQuestRefreshRequest':{'url':'/actionSymbol/vTgYyHM6lC.php','id':'vTgYyHM6lC','key':'vceNlSf3gn'},'sgExpdAccelerateRequest':{'url':'/actionSymbol/Ik142Ff6.php','id':'Ik142Ff6','key':'d3D4l8b4'},'BeastBoardPieceOpenRequest':{'url':'/actionSymbol/Y2Zvnad9.php','id':'0gk3Tfbz','key':'7uxYTm3k'},'MissionStartRequest':{'url':'/actionSymbol/63VqtzbQ.php','id':'29JRaDbd','key':'i48eAVL6'},'RmRetireRequest':{'url':'/actionSymbol/fBn58ApV.php','id':'e0R3iDm1','key':'T4Undsr6'},'CraftAddRequest':{'url':'/actionSymbol/iQ7R4CFB.php','id':'QkN1Sp64','key':'qz0SG1Ay'},'MailReceiptRequest':{'url':'/actionSymbol/M2fHBe9d.php','id':'XK7efER9','key':'P2YFr7N9'},'FacebookAddFriendRequest':{'url':'/actionSymbol/NAW9vJnm.php','id':'NAW9vJnm','key':'532vAYUy'},'PartyDeckEditRequest':{'url':'/actionSymbol/6xkK4eDG.php','id':'TS5Dx9aZ','key':'34qFNPf7'},'BeastMixRequest':{'url':'/actionSymbol/7vHqNPF0.php','id':'C8X1KUpV','key':'WfNSmy98'},'FriendDeleteRequest':{'url':'/actionSymbol/8R4fQbYh.php','id':'a2d6omAy','key':'d0VP5ia6'},'CreateUserRequest':{'url':'/actionSymbol/0FK8NJRX.php','id':'P6pTz4WA','key':'73BUnZEr'},'TrophyRewardRequest':{'url':'/actionSymbol/05vJDxg9.php','id':'wukWY4t2','key':'2o7kErn1'},'PurchaseHoldRequest':{'url':'/actionSymbol/dCxtMZ27.php','id':'79EVRjeM','key':'5Mwfq90Z'},'MedalExchangeRequest':{'url':'/actionSymbol/0X8Fpjhb.php','id':'LiM9Had2','key':'dCja1E54'},'GameSettingRequest':{'url':'/actionSymbol/OTX6Fmvu.php','id':'OTX6Fmvu','key':'4foXVwWd'},'PurchaseSettingRequest':{'url':'/actionSymbol/9hUtW0F8.php','id':'QkwU4aD9','key':'ePFcMX53'},'sgExpdMileStoneClaimRequest':{'url':'/actionSymbol/r4A791RF.php','id':'r4A791RF','key':'t04N07LQ'},'GiftUpdateRequest':{'url':'/actionSymbol/noN8I0UK.php','id':'9KN5rcwj','key':'xLEtf78b'},'RbStartRequest':{'url':'/actionSymbol/dR20sWwE.php','id':'eHY7X8Nn','key':'P1w8BKLI'},'InitializeRequest':{'url':'/actionSymbol/fSG1eXI9.php','id':'75fYdNxq','key':'rVG09Xnt'},'PurchaseStartRequest':{'url':'/actionSymbol/tPc64qmn.php','id':'qAUzP3R6','key':'9Kf4gYvm'},'RoutineEventUpdateRequest':{'url':'/actionSymbol/WCK5tvr0.php','id':'4kA1Ne05','key':'V0TGwId5'},'PurchaseListRequest':{'url':'/actionSymbol/YqZ6Qc1z.php','id':'BT28S96F','key':'X3Csghu0'},'PurchaseFailedRequest':{'url':'/actionSymbol/2TCis0R6.php','id':'jSe80Gx7','key':'sW0vf3ZM'},'sgExpdEndRequest':{'url':'/actionSymbol/2pe3Xa8bpG.php','id':'2pe3Xa8bpG','key':'cjHumZ2Jkt'},'VariableStoreCheckRequest':{'url':'/actionSymbol/Nhn93ukW.php','id':'i0woEP4B','key':'Hi0FJU3c'},'GachaInfoRequest':{'url':'/actionSymbol/3nhWq25K.php','id':'UNP1GR5n','key':'VA8QR57X'},'sgExpdRecallRequest':{'url':'/actionSymbol/0Fb87D0F.php','id':'0Fb87D0F','key':'9J02K0lX'},'DungeonLiberationRequest':{'url':'/actionSymbol/0vc6irBY.php','id':'nQMb2L4h','key':'0xDA4Cr9'},'FriendSearchRequest':{'url':'/actionSymbol/6Y1jM3Wp.php','id':'3siZRSU4','key':'VCL5oj6u'},'ClsmEndRequest':{'url':'/actionSymbol/7vHqNPF0.php','id':'3zgbapQ7','key':'6aBHXGv4'},'MissionEndRequest':{'url':'/actionSymbol/0ydjM5sU.php','id':'x5Unqg2d','key':'1tg0Lsqj'},'sgHomeMarqueeInfoRequest':{'url':'/actionSymbol/PBSP9qn5.php','id':'PBSP9qn5','key':'d3GDS9X8'},'FacebookRewardClaimRequest':{'url':'/actionSymbol/47R9pLGq.php','id':'47R9pLGq','key':'Rja82ZUK'},'ClsmLotteryRequest':{'url':'/actionSymbol/4uj3NhUQ.php','id':'Un16HuNI','key':'pU62SkhJ'},'PurchaseCurrentStateRequest':{'url':'/actionSymbol/bAR4k7Qd.php','id':'9mM3eXgi','key':'X9k5vFdu'},'RmRestartRequest':{'url':'/actionSymbol/NC8Ie07P.php','id':'yh21MTaG','key':'R1VjnNx0'},'TransferCodeCheckRequest':{'url':'/actionSymbol/C9LoeYJ8.php','id':'CY89mIdz','key':'c5aNjK9J'},'sgExpdQuestInfoRequest':{'url':'/actionSymbol/hW0804Q9.php','id':'hW0804Q9','key':'4Bn7d973'},'MissionWaveReStartRequest':{'url':'/actionSymbol/8m7KNezI.php','id':'e9RP8Cto','key':'M3bYZoU5'},'TransferRequest':{'url':'/actionSymbol/v6Jba7pX.php','id':'oE5fmZN9','key':'C6eHo3wU'},'GetBackgroundDownloadInfoRequest':{'url':'/actionSymbol/action.php','id':'lEHBdOEf','key':'Z1krd75o'},'RmDungeonEndRequest':{'url':'/actionSymbol/CH9fWn8K.php','id':'WaPC2T6i','key':'dEnsQ75t'},'FriendAgreeRequest':{'url':'/actionSymbol/1DYp5Nqm.php','id':'kx13SLUY','key':'9FjK0zM3'},'FriendRefuseRequest':{'url':'/actionSymbol/Vw0a4I3i.php','id':'1nbWRV9w','key':'RYdX9h2A'},'OptionUpdateRequest':{'url':'/actionSymbol/0Xh2ri5E.php','id':'otgXV79T','key':'B9mAa7rp'},'TransferCodeIssueRequest':{'url':'/actionSymbol/hF0yCKc1.php','id':'crzI2bA5','key':'T0y6ij47'},'ClsmEntryRequest':{'url':'/actionSymbol/UmLwv56W.php','id':'5g0vWZFq','key':'8bmHF3Cz'},'FriendSuggestRequest':{'url':'/actionSymbol/6TCn0BFh.php','id':'iAs67PhJ','key':'j2P3uqRC'},'CraftCancelRequest':{'url':'/actionSymbol/7WdDLIE4.php','id':'79xDN1Mw','key':'68zcUF3E'},'UpdateUserInfoRequest':{'url':'/actionSymbol/v3RD1CUB.php','id':'ey8mupb4','key':'6v5ykfpr'},'RbEndRequest':{'url':'/actionSymbol/e8AHNiT7.php','id':'os4k7C0b','key':'MVA3Te2i'},'NoticeUpdateRequest':{'url':'/actionSymbol/TqtzK84R.php','id':'CQ4jTm2F','key':'9t68YyjT'},'RmBreakRequest':{'url':'/actionSymbol/8BJSL7g0.php','id':'kWrXKC35','key':'W3YTRI8e'},'ShopUseRequest':{'url':'/actionSymbol/w76ThDMm.php','id':'73SD2aMR','key':'ZT0Ua4wL'},'MissionWaveStartRequest':{'url':'/actionSymbol/Mn15zmDZ.php','id':'BSq28mwY','key':'d2mqJ6pT'},'FriendRequest':{'url':'/actionSymbol/8drhF2mG.php','id':'j0A5vQd8','key':'6WAkj0IH'},'StrongBoxOpenRequest':{'url':'/actionSymbol/48ktHf13.php','id':'PIv7u8jU','key':'sgc30nRh'}} self.assignFiles()
def encode(plaintext,passphrase,saltsize=8): salt= os.urandom(saltsize) data = evpKDF(passphrase,salt) decryptor = pyaes.new(data['key'], pyaes.MODE_CBC, IV=data['iv']) plaintext = PKCS7Encoder().encode(plaintext) enctext= decryptor.encrypt(plaintext) return base64.b64encode("Salted__"+salt+enctext)
def decrypt(passphrase, encrypted_text): encrypted_text_bytes = binascii.a2b_base64(encrypted_text) print("Original encrypted message = %s" % binascii.b2a_hex(encrypted_text_bytes)) # Remove "Salt__" encrypted_text_bytes = encrypted_text_bytes[8:] # Get and remove salt salt = encrypted_text_bytes[:8] print("salt = %s" % binascii.b2a_hex(salt)) encrypted_text_bytes = encrypted_text_bytes[8:] print("encrypted_text_bytes = %s" % binascii.b2a_hex(encrypted_text_bytes)) resp = evpKDF(passphrase, salt, key_size=12) key = resp.get("key") iv = key[len(key)-16:] key = key[:len(key)-16] print("iv = %s" % binascii.b2a_hex(iv)) print("key = %s" % binascii.b2a_hex(key)) aes = AES.new(key, MODE, iv) decrypted_text = aes.decrypt(encrypted_text_bytes) encoder = PKCS7Encoder() unpad_text = encoder.decode(decrypted_text) print("unpad_text = %s" % binascii.b2a_hex(unpad_text)) return unpad_text
def encrypt_val(clear_text): master_key = '1234567890123456' encoder = PKCS7Encoder() raw = encoder.encode(clear_text) iv = Random.new().read(16) cipher = AES.new(master_key, AES.MODE_CBC, iv, segment_size=128) return b64encode(iv + cipher.encrypt(raw)).decode('ascii')
def encrypt(passphrase, plaintext): print("passphrase = %s" % passphrase) print("passphrase = %s" % binascii.b2a_hex(passphrase)) print("plaintext = %s" % plaintext) print("plaintext = %s" % binascii.b2a_hex(plaintext)) salt = Random.new().read(8) print("salt = %s" % binascii.b2a_hex(salt)) resp = evpKDF(passphrase, salt, key_size=12) key = resp.get("key") iv = key[len(key)-16:] key = key[:len(key)-16] print("iv = %s" % binascii.b2a_hex(iv)) print("key = %s" % binascii.b2a_hex(key)) aes = AES.new(key, MODE, iv) encoder = PKCS7Encoder() pad_text = encoder.encode(plaintext) print("pad text = %s" % pad_text) print("pad text = %s" % binascii.b2a_hex(pad_text)) encrypted_text = aes.encrypt(pad_text) print("encrypted text = %s" % binascii.b2a_hex(encrypted_text)) concat = "Salted__"+salt+encrypted_text print("concat=%s" % binascii.b2a_hex(concat)) return binascii.b2a_base64(concat).rstrip()
def decrypt_aes256(self, key, enc): encoder = PKCS7Encoder() enc = base64.b64decode(enc) iv = enc[:16] cipher = AES.new(key, AES.MODE_CBC, iv, segment_size=128) return encoder.decode(cipher.decrypt( enc[AES.block_size:])).decode('utf-8')
def encrypt(data, key): encoder = PKCS7Encoder() padded_text = encoder.encode(data) encryptor = AES.new(key.key_value, AES.MODE_CBC, get_key_iv(key)) encrypted_data = encryptor.encrypt(padded_text) return encrypted_data
def taskAgentWithLaunchProcess(self, exePath, parameters): # Create a task task = self.statusHandler.createTask(self.agentID, "launchProcess", args=[exePath, parameters]) # Prepare the task format, then put the task into the command file data = "launchProcess\n{}\n{}\n{}\n{}".format(task['id'], exePath, parameters, helpers.randomString(16)) aes = AES.new(key, AES.MODE_CBC, iv) encoder = PKCS7Encoder() pad_text = encoder.encode(data) cipher = aes.encrypt(pad_text) decodedData = base64.b64encode(cipher) r = self.dropboxHandler.putFile( self.statusHandler.getAgentAttribute(self.agentID, 'commandFile'), decodedData) if r is not None: # Commit this task for the current agent self.statusHandler.commitTask(task) print helpers.color( "[+] Agent with ID [{}] has been tasked with task ID [{}]". format(self.agentID, task['id'])) else: print helpers.color("[!] Error tasking agent with ID [{}]".format( self.agentID))
def encrypt(to_encrypt: str, key: str) -> bytes: encoder = PKCS7Encoder() encryptor = AES.new(key, AES.MODE_ECB) pad_text = encoder.encode(to_encrypt) cipher = encryptor.encrypt(pad_text) return base64.b64encode(cipher)
def decrypt(to_decrypt: bytes, key: str) -> str: encoder = PKCS7Encoder() encryptor = AES.new(key, AES.MODE_ECB) array = base64.b64decode(to_decrypt) decrypt_text = encryptor.decrypt(array) return encoder.decode(str(decrypt_text, 'utf-8'))
def encrypt_aes256(self, key, raw): encoder = PKCS7Encoder() raw = encoder.encode(raw.decode('utf-8')) iv = Random.new().read(16) # raw = self._pad(raw) # iv = Random.new().read(AES.block_size) cipher = AES.new(key, AES.MODE_CBC, iv, segment_size=128) return base64.b64encode(iv + cipher.encrypt(raw))
def taskAgentWithRunPSModule(self, moduleName, moduleArgs=None, interact=False): # Construct the powershell code from a template, substituting palceholders with proper parameters parameters = { 'moduleURL': self.statusHandler.publishedModuleList[moduleName], 'moduleName': moduleName } poshCmd = helpers.convertFromTemplate( parameters, cfg.defaultPath['runPSModuleTpl']) if poshCmd == None: return # Add module arguments if ever if moduleArgs: poshCmd += ";Write-Host \"-> Executing module arguments\";{}".format( moduleArgs) # If we want to interact with the PowerShell CLI once the module is loaded, switch to 'shell' mode if interact: self.taskAgentWithShell(poshCmd) else: task = self.statusHandler.createTask(self.agentID, "runPSModule", args=[moduleName, moduleArgs]) # Turn the powershell code into a suitable powershell base64 encoded one line command # base64Payload = helpers.powershellEncode(poshCmd) # Create the final command # cmd = "powershell.exe -NoP -sta -NonI -Enc {}".format(base64Payload) cmd = poshCmd # Prepare the task format, then put the task into the command file data = "runPS\n{}\n{}\n{}".format(task['id'], cmd, helpers.randomString(16)) aes = AES.new(key, AES.MODE_CBC, iv) encoder = PKCS7Encoder() pad_text = encoder.encode(data) cipher = aes.encrypt(pad_text) decodedData = base64.b64encode(cipher) r = self.dropboxHandler.putFile( self.statusHandler.getAgentAttribute(self.agentID, 'commandFile'), decodedData) if r is not None: # Commit this task for the current agent self.statusHandler.commitTask(task) print helpers.color( "[+] Agent with ID [{}] has been tasked with task ID [{}]". format(self.agentID, task['id'])) else: print helpers.color( "[!] Error tasking agent with ID [{}]".format( self.agentID))
def decode(ciphertext,passphrase,salt=None): ciphertext=base64.b64decode(ciphertext) if not salt: salt=ciphertext[8:16] ciphertext=ciphertext[16:] data = evpKDF(passphrase, salt) decryptor = pyaes.new(data['key'], pyaes.MODE_CBC, IV=data['iv']) d= decryptor.decrypt(ciphertext) return PKCS7Encoder().decode(d)
def encrypt(self, data): encoder = PKCS7Encoder() key = (Random.get_random_bytes(32)) data = encoder.encode(data) iv = Random.new().read(16) cipher = AES.new(key, AES.MODE_CBC, iv) Encoded_data = base64.b64encode(cipher.encrypt(data)) b64Key = base64.b64encode(key).encode("utf-8") b64iv = base64.b64encode(iv).encode("utf-8") return b64Key + b64iv + Encoded_data
def encrypt_aes(message, key, iv): """ AES加密 :param message: 消息内容 :param key: 加密key :param iv: 加密iv :return: 加密文本 """ message = PKCS7Encoder().encode(message) cipher = AES.new(key, AES.MODE_CBC, iv[:16]) encrypted_value = cipher.encrypt(message) return binascii.hexlify(encrypted_value).decode('utf8')
def encrypt(self, plaintext): salt = Random.new().read(8) resp = self.evpKDF(self.key, salt, key_size=12) key = resp.get("key") iv = key[len(key)-16:] key = key[:len(key)-16] aes = AES.new(key, MODE, iv) encoder = PKCS7Encoder() pad_text = encoder.encode(plaintext) encrypted_text = aes.encrypt(pad_text) return binascii.b2a_base64(concat).rstrip()
def get_padding(self): ''' Returns the padding that has to be added to the data. If the padding is already added, it responds with an empty string ''' if self.padded: return '' self.padded = True encoder = PKCS7Encoder() padding = encoder.get_padding(self.size) self.size += len(padding) return padding
def RijndaelManaged_encrypt(plan_text, key, iv=r'\0' * 16): if len(key) < 32: key = key + chr(0) * (32 - len(key)) from pkcs7 import PKCS7Encoder encoder = PKCS7Encoder() plan_text = encoder.encode(plan_text) import pyaes decryptor = pyaes.new(key, pyaes.MODE_CBC, IV=iv) ds1 = decryptor.encrypt(plan_text) return base64.b64encode(ds1)
def __init__(self): try: self.encoder = PKCS7Encoder() self.runningStat = Statistics() self.rAvg = 0.0 self.rDev = 0.0 if "AES_KEY" in os.environ: self.skey = os.environ["AES_KEY"] else: self.skey = os.urandom(16) self.iv = ''.join( [chr(random.randint(0, 0xFF)) for i in range(16)]) except Exception as e: print "Failed to Initialize NsuCryptoServer:" + str(e)
def taskAgentWithSendFile(self, localFile, destinationPath): # Creating the remote file path (used on the DropBox API server) fileName = os.path.basename(localFile) remoteFilePath = "/" + self.agentID + ".rsc" # First upload the localFile to DropBox try: with open(localFile) as fileHandle: print helpers.color("[*] Uploading file [{}] to [{}]".format( localFile, remoteFilePath)) r = self.dropboxHandler.putFile(remoteFilePath, fileHandle.read()) fileHandle.close() if r is None: return except IOError: print helpers.color( "[!] Could not open or read file [{}]".format(localFile)) return # Once the local file is properly uploaded, proceed with tasking the agent # Create a task task = self.statusHandler.createTask(self.agentID, "sendFile", args=[localFile, destinationPath]) # Prepare the task format, then put the task into the command file data = "downloadFile\n{}\n{}\n{}\n{}\n{}".format( task['id'], remoteFilePath, destinationPath, fileName, helpers.randomString(16)) aes = AES.new(key, AES.MODE_CBC, iv) encoder = PKCS7Encoder() pad_text = encoder.encode(data) cipher = aes.encrypt(pad_text) decodedData = base64.b64encode(cipher) r = self.dropboxHandler.putFile( self.statusHandler.getAgentAttribute(self.agentID, 'commandFile'), decodedData) if r is not None: # Commit this task for the current agent self.statusHandler.commitTask(task) print helpers.color( "[+] Agent with ID [{}] has been tasked with task ID [{}]". format(self.agentID, task['id'])) else: print helpers.color("[!] Error tasking agent with ID [{}]".format( self.agentID))
def unencrypt(self, text): ''' 解密方法 :param text: 字符串文本 :return: 字符串原文 ''' # base64解码字符串 text_base64 = base64.b64decode(text) # 使用密钥对密文进行解码 dencoder = AES.new(self.key, self.mode) plain_text = dencoder.decrypt(text_base64) # 去除格式化中添加的非必要文本 decoder = PKCS7Encoder() decrypt_text = decoder.decode(plain_text) return decrypt_text
def header(self, send_channel): now = datetime.datetime.now( pytz.timezone('Europe/Rome')).strftime("%Y-%m-%d %H.%M.%S") aes = AES.new(os0.b(send_channel.client_key), AES.MODE_CBC, os0.b(send_channel.client_key[:16])) pad_text = PKCS7Encoder().encode(now) # print now headers = { 'Content-Type': "application/json", # 'Host': send_channel.hub_ip_addr, 'From': send_channel.client_id, 'Authorization': "Bearer " + b64encode(aes.encrypt(pad_text)) } _logger.info(headers) return headers
def encryptData(IP, Port, DeviceId, content): encoder = PKCS7Encoder() secret = '{0}:{1}&{2}{3}'.format( IP, Port, '0' * (30 - (len(IP) + len(Port) + len(DeviceId))), DeviceId) #logger.debug('key: %s' %(secret)) aes = AES.new(secret) try: pad_text = encoder.encode(content) # encrypt the padding content cipher_encode = aes.encrypt(pad_text) # base64 encode the cipher content for transport encrypt_cipher = base64.b64encode(cipher_encode) #logger.debug('Encrypted string: %s' %(encrypt_cipher )) except Exception, exp: print exp
def encrypt(self, text): ''' 对传入字符串进行加密 :param text: :return: base64 字符串 ''' # 将文本处理为编码需要的格式 encode = PKCS7Encoder() # PKCS7 encode_text = encode.encode(text) # 编码格式 # 使用密钥进行加密 crypto = AES.new(self.key, self.mode) crypto_text = crypto.encrypt(encode_text) # 将文本处理为控制台能够输出的形式,除了base64 也可以使用a2b_hex(这里为了对应前端js的处理, # 使用base64进行输出) console_enable_text = base64.b64encode(crypto_text) return console_enable_text
def encryptData(cls, clearText, key): """Encrypts data with the provided key. The returned byte array is as follow: :==============:==================================================: : IV (16bytes) : Encrypted (data + PKCS7 padding information) : :==============:==================================================: """ # Generate a crypto secure random Initialization Vector iv = 'Key@123Key@123fd' key = 'secret#456!23key' # Perform PKCS7 padding so that clearText is a multiple of the block size aes = AES.new(key, AES.MODE_CBC, iv) encoder = PKCS7Encoder() pad_text = encoder.encode(clearText) cipher = aes.encrypt(pad_text) enc_cipher = base64.b64encode(cipher) print enc_cipher return enc_cipher
def main(): #从页面获取所需参数 保存验证码图片到本地 url_getvalue = "http://callback.58.com/firewall/valid/2015689362.do?namespace=zufanglistphp&url=weishanjn.58.com%2fzufang%2f0%2f%3fsort%3dtime%26amp%3bsort_hack%3d1" #滑动验证码页面 r = session.get(url_getvalue, timeout=60) selector = etree.HTML(r.text) uuid = selector.xpath("//input[@id='uuid']/@value") ip = selector.xpath("//input[@id='ip']/@value") if not uuid or not ip: print("未获取到参数") return url_getsid = f"http://callback.58.com//firewall/code/{ip[0]}/{uuid[0]}.do?{get_timestamp()}" r = session.get(url_getsid, timeout=60) sessionid = r.json()["data"]["sessionId"] url_getcaptcha = f"http://verifycode.58.com/captcha/getV3?callback=jQuery{get_timestamp()}_{get_timestamp()}&showType=win&sessionId={sessionid}&_={get_timestamp()}" r = session.get(url_getcaptcha, timeout=60) # jQuery1101043148205441808063_1526882096877({"message":"成功","data":{"responseId":"c1393e0f17f54cc0bb9e1c06e9ffde64","level":310,"status":0,"puzzleImgUrl":"/captcha/captcha_img?rid=c1393e0f17f54cc0bb9e1c06e9ffde64&it=_puzzle","tip":"请点击并将滑块拖动到指定位置","bgImgUrl":"/captcha/captcha_img?rid=c1393e0f17f54cc0bb9e1c06e9ffde64&it=_big"},"code":0}) responseid = re.search(r'"responseId":"(?P<id>\S+?)"', r.text).group("id") callback = re.match(r'jQuery\d+_\d+', r.text).group() puzzleimgurl = re.search(r'"puzzleImgUrl":"(?P<url>\S+?)"', r.text).group("url") #96x270 bigimgurl = re.search(r'"bgImgUrl":"(?P<url>\S+?)"', r.text).group("url") #480x270 puzzleimgname, bigimgname = f"{responseid}_puzzle", f"{responseid}_big" download_img([puzzleimgurl, bigimgurl], [puzzleimgname, bigimgname]) #获取滑动距离并构造鼠标轨迹 sildeoffset = validate_image.get_offset(bigpath=bigimgname + '.jpg', puzzlepath=puzzleimgname + '.jpg') track = build_track(sildeoffset) if not track: return data = '{"x":"%s","track":"%s","p":"0,0"}' % (sildeoffset, track) key = responseid[:16].encode("utf-8") cipher = AES.new(key=key, mode=AES.MODE_CBC, IV=key) postdata = str(b2a_hex( cipher.encrypt(PKCS7Encoder(16).encode(data).encode('utf-8'))).upper(), encoding="utf-8") r = session.get( f"http://verifycode.58.com/captcha/checkV3?callback={callback}&responseId={responseid}&sessionId={sessionid}&data={postdata}&_={get_timestamp()}", timeout=90) print(r.text) return "成功" in r.text
def decrypt(self, encrypted_text): encrypted_text_bytes = binascii.a2b_base64(encrypted_text) # Remove "Salt__" encrypted_text_bytes = encrypted_text_bytes[8:] # Get and remove salt salt = encrypted_text_bytes[:8] encrypted_text_bytes = encrypted_text_bytes[8:] resp = self.evpKDF(self.key, salt, key_size=12) key = resp.get("key") iv = key[len(key)-16:] key = key[:len(key)-16] aes = AES.new(key, MODE, iv) decrypted_text = aes.decrypt(encrypted_text_bytes) encoder = PKCS7Encoder() unpad_text = encoder.decode(decrypted_text.decode('utf-8')) return unpad_text
def decrypt(passphrase, encrypted_text): encrypted_text_bytes = base64.b64decode(encrypted_text) # Remove "Salt__" encrypted_text_bytes = encrypted_text_bytes[8:] # Get and remove salt salt = encrypted_text_bytes[:8] encrypted_text_bytes = encrypted_text_bytes[8:] resp = evpKDF(passphrase, salt, key_size=12) key = resp.get("key") iv = key[len(key) - 16:] key = key[:len(key) - 16] aes = AES.new(key, MODE, iv) decrypted_text = aes.decrypt(encrypted_text_bytes) encoder = PKCS7Encoder() unpad_text = encoder.decode(decrypted_text) return unpad_text.decode("utf-8")