數(shù)據(jù)包中的加密之RC4加密介紹

背景:在抓包過(guò)程中經(jīng)常發(fā)現(xiàn)數(shù)據(jù)包被加密了窟蓝,被加密成大小寫字母混雜著些‘+罪裹,/’這種。然后后面還有兩個(gè)==號(hào)疗锐,經(jīng)常讓人誤以為僅僅是base64加密坊谁。(后悔大學(xué)沒(méi)好好聽密碼學(xué)這門課)。在一次偶然間對(duì)GitHub上找的免殺馬代碼學(xué)習(xí)的時(shí)候才認(rèn)識(shí)了這個(gè)加密方式滑臊,在這個(gè)行業(yè)之間人與人的差距不是一點(diǎn)半點(diǎn)口芍。
介紹:RC4算法的特點(diǎn)是算法簡(jiǎn)單,執(zhí)行速度快雇卷。并且密鑰長(zhǎng)度是可變的鬓椭,可變范圍為1-256字節(jié)(8-2048比特)颠猴,在現(xiàn)在技術(shù)支持的前提下,當(dāng)密鑰長(zhǎng)度為128比特時(shí)小染,用暴力法搜索密鑰已經(jīng)不太可行翘瓮,所以能夠預(yù)見RC4的密鑰范圍任然能夠在今后相當(dāng)長(zhǎng)的時(shí)間里抵御暴力搜索密鑰的攻擊。實(shí)際上裤翩,現(xiàn)在也沒(méi)有找到對(duì)于128bit密鑰長(zhǎng)度的RC4加密算法的有效攻擊方法资盅。
正文開始
========================================
形如以下這種格式的

ySo7K1EC+OcYZ1EVu5DOxhU0gyDHzKW99O+iv02Gcbf/xxxJPbTkoW0GmAYEOPUuHXtR8APvmc1JEA5gixASLF/qphCZ64BxfO/2Qlw933WvLpKBhU4E6Z+r+jNz2Sw8MBOVKUzlqSm9BTUIdDw9i554fXwMkoqar9qbbCllfQMGI+s6Slo75+x4gBBsmfvJwwKF8RSUc/bXHbQQgfywcMSWMDrJ7aGSVXrNCUyXJy+Me9fpyrjw2+j6In9rVNfbaljKWsF9jro9HJXCdLc0eB0VDt3OSzqYY5gcQngE7n8qtVP9UAbaXCb2v8OzZ51wLC3OknMl1fIKC5VTVAFZj8jviS3ihLrP19/wiUuuvkEkf3oOqf9RSZe8VFXDAeKdclrN9S9yt5bJ0MxnlXgqb+aGWrBURVE3RBsaJXOHW4szqG+/YkkX4YuZzL9yMof7Tk9uIAq4D12880ptuwcugT+gJOpt62HPl5DEiseqR2yOURHUEpZGqtcjcWadwNf+9jl5Q==

這是某次抓包中隨機(jī)遇到的,具體明文是啥也不知道踊赠。即使到目前為止也不是很確定就是這種加密 呵扛。下面就使用python對(duì)這個(gè)加解密過(guò)程進(jìn)行實(shí)現(xiàn)】鸫可使用的語(yǔ)言很多今穿,但是核心代碼沒(méi)變,部分代碼有改動(dòng)伦籍,這里就這個(gè)免殺代碼里的部分拿出來(lái)進(jìn)行加解密的實(shí)現(xiàn)蓝晒。
加密代碼(python2):

import hashlib, base64

date = "username=admin,password=admin,111111111111,fsdfsanfjaaaa,aaaaa111=aaaaaa,111aaaaa111,2424,fffffffaaaaaaaaaaaaaaaaabbCCSSSSSSSSSSSSSAAAAAAAAAAAGGGGGGGGGGGGsd11111,dDAASFASDFS,1111,2222222222222,55555555555,1fasdfasfsddfdsadfdsfdssdcd"

def rc4(text, key):
    key = hashlib.md5(key).hexdigest()
    result = ''
    key_len = len(key)
    box = list(range(256))
    j = 0
    for i in range(256):
        j = (j + box[i] + ord(key[i%key_len]))%256
        box[i],box[j] = box[j],box[i]
    i = j = 0
    for element in text:
        i = (i+1)%256
        j = (j+box[i])%256
        box[i],box[j] = box[j],box[i]
        k = chr(ord(element) ^ box[(box[i]+box[j])%256])
        result += k
    result = base64.b64encode(result)
    return result
key = "abcd7788"
a = rc4(date,key)
print a

解密代碼如下(python2):

import hashlib, base64

def rc4(text, key):
    key = hashlib.md5(key).hexdigest()
    text = base64.b64decode(text)
    result = ''
    key_len = len(key)
    box = list(range(256))
    j = 0
    for i in range(256):
        j = (j + box[i] + ord(key[i%key_len]))%256
        box[i],box[j] = box[j],box[i]
    i = j = 0
    for element in text:
        i = (i+1)%256
        j = (j+box[i])%256
        box[i],box[j] = box[j],box[i]
        k = chr(ord(element) ^ box[(box[i]+box[j])%256])
        result += k
    return result

將兩處代碼進(jìn)行整合,加解密過(guò)程結(jié)束后判斷明文是否一致帖鸦,代碼如下:

# -*- coding: utf-8 -*-
import hashlib, base64

date = "username=admin,password=admin,111111111111,fsdfsanfjaaaa,aaaaa111=aaaaaa,111aaaaa111,2424,fffffffaaaaaaaaaaaaaaaaabbCCSSSSSSSSSSSSSAAAAAAAAAAAGGGGGGGGGGGGsd11111,dDAASFASDFS,1111,2222222222222,55555555555,1fasdfasfsddfdsadfdsfdssdcd"

def rc4(text, key):
    key = hashlib.md5(key).hexdigest()
    result = ''
    key_len = len(key)
    box = list(range(256))
    j = 0
    for i in range(256):
        j = (j + box[i] + ord(key[i%key_len]))%256
        box[i],box[j] = box[j],box[i]
    i = j = 0
    for element in text:
        i = (i+1)%256
        j = (j+box[i])%256
        box[i],box[j] = box[j],box[i]
        k = chr(ord(element) ^ box[(box[i]+box[j])%256])
        result += k
    result = base64.b64encode(result)
    return result
key = "abcd7788"
a = rc4(date,key)

def rc4_jie(text, key):
    key = hashlib.md5(key).hexdigest()
    text = base64.b64decode(text)
    result = ''
    key_len = len(key)
    box = list(range(256))
    j = 0
    for i in range(256):
        j = (j + box[i] + ord(key[i%key_len]))%256
        box[i],box[j] = box[j],box[i]
    i = j = 0
    for element in text:
        i = (i+1)%256
        j = (j+box[i])%256
        box[i],box[j] = box[j],box[i]
        k = chr(ord(element) ^ box[(box[i]+box[j])%256])
        result += k
    return result
b = rc4_jie(a,key)
if date == b:
    print "success"
    print date
    print a
    print b
else:
    print "fail"

運(yùn)行截圖如下:


圖片.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芝薇,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子富蓄,更是在濱河造成了極大的恐慌剩燥,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件立倍,死亡現(xiàn)場(chǎng)離奇詭異灭红,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)口注,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門变擒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人寝志,你說(shuō)我怎么就攤上這事娇斑。” “怎么了材部?”我有些...
    開封第一講書人閱讀 153,116評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵毫缆,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我乐导,道長(zhǎng)苦丁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評(píng)論 1 279
  • 正文 為了忘掉前任物臂,我火速辦了婚禮旺拉,結(jié)果婚禮上产上,老公的妹妹穿的比我還像新娘。我一直安慰自己蛾狗,他們只是感情好晋涣,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,384評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沉桌,像睡著了一般谢鹊。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上蒲牧,一...
    開封第一講書人閱讀 49,111評(píng)論 1 285
  • 那天撇贺,我揣著相機(jī)與錄音赌莺,去河邊找鬼冰抢。 笑死,一個(gè)胖子當(dāng)著我的面吹牛艘狭,可吹牛的內(nèi)容都是我干的挎扰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼巢音,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼遵倦!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起官撼,我...
    開封第一講書人閱讀 37,053評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤梧躺,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后傲绣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體掠哥,經(jīng)...
    沈念sama閱讀 43,558評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,007評(píng)論 2 325
  • 正文 我和宋清朗相戀三年秃诵,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了续搀。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,117評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡菠净,死狀恐怖禁舷,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情毅往,我是刑警寧澤牵咙,帶...
    沈念sama閱讀 33,756評(píng)論 4 324
  • 正文 年R本政府宣布,位于F島的核電站攀唯,受9級(jí)特大地震影響洁桌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜革答,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,324評(píng)論 3 307
  • 文/蒙蒙 一战坤、第九天 我趴在偏房一處隱蔽的房頂上張望曙强。 院中可真熱鬧,春花似錦途茫、人聲如沸碟嘴。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)娜扇。三九已至,卻和暖如春栅组,著一層夾襖步出監(jiān)牢的瞬間雀瓢,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工玉掸, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留刃麸,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,578評(píng)論 2 355
  • 正文 我出身青樓司浪,卻偏偏與公主長(zhǎng)得像泊业,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子啊易,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,877評(píng)論 2 345