diff --git a/db/card.tw.txt b/db/card.tw.txt index 00d7b5b..5bf46ec 100644 --- a/db/card.tw.txt +++ b/db/card.tw.txt @@ -311,6 +311,7 @@ 399,第一型莫德雷德魔劍侵蝕,6,17,憎恨亞瑟的魔女摩高斯潛入亞瑟們的宮殿卡美洛,有意往『湖』的製造計畫中混入的異物。\n\n結合了所有亞瑟的因子和魔女摩高斯的因子的不規則騎士、通過搜索體內的亞瑟因子,能夠正確地『創造』出所有亞瑟的弱點。\n一開始就被迫背負著背叛卡美洛的命運、但亞瑟們因為『可以當做卡美洛因力量而暴走時的安全裝置』,而作為夥伴接受了他。,DragonKillerClarent,王政終焉#99,{} 404,極限突破切爾莉,6,99,在「斷絕時代」以輔助妖精為生的妖精中的一種。曾被認為在「斷絕時代」滅絕了,但近年確認到了生存。有著與生俱來的顏色,好像相應地能力也有所不同,但詳細情況並不明瞭。極限突破切爾莉似乎可以將極限突破的界限通過某種形式進行破壞,然而詳細情況不明。,0,無,{} 405,庫魯敏,5,16,和『斷絕時代』時一樣,在森林中以伐木為生的妖精。不吃動物和人類,只靠早上的露水果腹。通常對人類無害,然而對蔑視自然的人類會加以天罰,根據情況不同有時也會有生命危險。,深綠的庇護者,Error 7tpi013,攻擊回數越多\nHP回復 +406,第二型裘斯塔爾,7,24,在湖中被製造,真摯地磨練劍術足以成為其他騎士的楷模。雖然自身也是女性,但一直信奉其他女性優先的法則,比起淑女更像是一名紳士。對女性十分溫柔然而對男性則十分嚴厲。戀愛對象為女性。雖然本人想保守這個秘密,然而事實上已經是世人皆知。,Sliver Horse Windy,澄白銀=遮烈風騎,攻擊力上升200% 407,學徒型尼卡爾,6,18,為了提高學習能力以便提高國力和人民的生活水準,作為某種學習系統的重要部分而被製造出的特殊騎士。由於定位是飼育委員,通過將兔子和烏鴉的因子混合而製造。在製造階段似乎出現了某些問題,沒有表情。本身是熱愛小孩和動物的溫柔少女,然而卻給人一種冰冷的感覺。,Twinkle Slicer,飛斬一爛#46,攻擊力上升150% 410,聖典型拉斐爾,5,18,作為聖典型之一而被製造的騎士。散發著美麗金色光芒的翅膀上似乎為了隱藏什麼而纏上了繃帶。擁有非常高超的醫療知識和技術,但治療手法有些粗暴。,Angel Doctor,藥效愈=生命樹木,今天是週一~週三時\n回復卡片HP120% 411,聖典型米迦勒,4,13,作為聖典型之一而被製造的騎士。翠綠色的翅膀擁有可以看透人心的眼睛。燃燒之劍上的黑色火焰象徵其雙胞胎弟弟路西法所犯下罪惡。他真心期盼著弟弟重新獲得神聖之力那一天的到來,然而聖典型中也有人並不贊同這一點。在聖典型的騎士中相當於領導者的存在,然而也有些許任性的一面。,Light Manac Judge,光君主=裁神等者,自己的AP上限越高\nHP回復 @@ -381,6 +382,10 @@ 643,異界型御坂美琴 -體育服ver-,6,22,有名的大小姐學校常盤台中學的14歲女中學生。在學園都市的學生大約180萬人當中,僅僅7人的超能力者的其中一人。因為本身運動能力就很好的關係,透過操縱磁場的能力而使自己更迅速。,Lightning Spirit,全力疾走,自己HP越低\n攻擊力提升(大) 645,異界型御坂美琴 -電撃使-,5,23,有名的大小姐學校常盤台中學的14歲女中學生。周圍都是羨慕的眼光的領導氣質。在學園都市的學生大約180萬人當中,僅僅7人的超能力者的其中一人。本身正義感很強,討厭輸的感覺而認真的努力的人。,Electro Circuit,上升思考,自己的BC上限越高\n攻擊力提升(特大) 652,第二型古蘭潔,5,16,被支援型百鍊造成為人造人騎士。手中裝上槍的配件,腳也附上了飛彈。本人對此種改造行為感到相當滿意的快感,並且兩人正準備著下次的改造計畫。但是百鍊想要改造其他騎士的時候,古蘭潔秉持的反對的意見。,Continue Gatling Missile,連射機槍#61,SUPER越多\n攻擊力提升(大) +653,支援型紅心,6,25,從未來穿越時空而來的船上發現擁有不可思議力量的卡片中,抽取其因子所製造出的騎士之一。卡片有四種樣式,而她是從其中的酒杯樣式中抽出的因子所製造而成。擅長防禦,會一邊保護同伴一邊乘隙以長劍攻擊。是個外表看起來很清純,但嘴上卻不饒人的美少女。,Heart Protection,防禦心=鋭尖択一,攻擊力上升250% +654,支援型方塊,5,18,從未來穿越時空而來的船上發現擁有不可思議力量的卡片中,抽取其因子所製造出的騎士之一。卡片有四種樣式,而他是從其中的貨幣樣式中抽出的因子所製造而成。戰鬥中擅長使用鑽頭破壞地面和牆壁,確保進退的道路。平常是個一被誇獎就會得意忘形的少年。,Diamond Tornado Spiral,菱貌天巻#92,自己的BC上限越高\n攻擊力提升(特大) +662,第二型黑桃,6,23,從未來穿越時空而來的船上發現擁有不可思議力量的卡片中,抽取其因子所製造出的騎士之一。卡片有四種樣式,而她是從其中的劍樣式中抽出的因子所製造而成。能使用魔法降下劍雨。對胸部太小抱著自卑感,總是穿著能隱藏胸部大小的衣服。,Sword Design Spade,術水/剣意匠魔,自己HP越低\nHP回復(特大) +663,第二型梅花,5,16,從未來穿越時空而來的船上發現擁有不可思議力量的卡片中,抽取其因子所製造出的騎士之一。卡片有四種樣式,而她是從其中的棍棒樣式中抽出的因子所製造而成。對自己的大胸部感到自豪的超絕美女。面對女性會表現出高人一等的態度,但在男性面前卻總是裝模作樣。,Club Cross Quarre,洋機弓銃#47,自己HP越低\n攻擊力提升(特大) 709,第二型朵琳,5,15,不列顛近海的沉船所發現的特殊的槍,利用『斷絕時代』的技術要整備時,副產物中的因子所製造出來的騎士。原本就是有著特術槍枝規格就有相當的了解與操作技術。對於看似很笨重的火輪機槍,實際上已經成功的輕量化所以並沒有看起來那麼的沉重。,Dragon Shuffle,龍具虛銃#17,對方HP越高\n攻擊力提升(大) 710,第二型魯佩亞,5,19,有一部分女性騎士所抱怨在戰鬥前線的護衛太少所因應製造出來的騎士。擁有讓女性喜歡的端正面容,充滿磁性的聲音。S屬性,原本以為預估是紳士溫和的個性的失敗作,結果現在以「湖的最高傑作」為傳聞。,Silver Axe Snake,鼓舞銀=虎蛇下兇,HP在70%以下時\n攻擊力上升150% 711,第二型索菈畢絲,5,15,由不列顛附近的郊外森林裡生長的黃花抽出的因子而製造的騎士。而於因子的關係生來就具有操縱植物的能力、使用與自己非常不適合的重火力武器來戰鬥。\n她身上所穿的男性用外套好像有著一段故事、但是到目前並沒有明確的情報。,Seven Blossom double power,菜建千累#10,卡片等級MAX時\n攻擊力上升150% diff --git a/db/revision.txt b/db/revision.txt index 03e5fda..2ba61eb 100644 --- a/db/revision.txt +++ b/db/revision.txt @@ -1,4 +1,4 @@ cn,218,218 -tw,202,171 +tw,203,171 kr,227,168 jp,224,171 diff --git a/maclient.py b/maclient.py index a26ecce..181fa53 100644 --- a/maclient.py +++ b/maclient.py @@ -443,7 +443,7 @@ def tasker(self, taskname = '', cmd = ''): if cnt != 1: logging.sleep('tasker:正在滚床单wwww') time.sleep(3.15616546511) - resp, ct = self._dopost('mainmenu') # 初始化 + resp, ct = self._dopost('mainmenu', no2ndkey = True) # 初始化 def login(self, uname = '', pwd = '', fast = False): # sessionfile='.%s.session'%self.loc @@ -464,13 +464,13 @@ def login(self, uname = '', pwd = '', fast = False): token = self._read_config('system', 'device_token').replace('\\n', '\n') or \ 'nuigiBoiNuinuijIUJiubHOhUIbKhuiGVIKIhoNikUGIbikuGBVININihIUniYTdRTdREujhbjhj' if not fast: - #ct = self._dopost('check_inspection', xmlresp = False, extraheader = {}, usecookie = False, no2ndkey = True)[1] + ct = self._dopost('check_inspection', xmlresp = False, extraheader = {}, usecookie = False, no2ndkey = True)[1] # self.poster.update_server(ct) pdata='login_id=%s&password=%s&app=and&token=%s' % (self.username, self.password, token) if self.loc == 'kr': pdata='S=nosessionid&%s' % pdata - self._dopost('notification/post_devicetoken', postdata =pdata , xmlresp = False) - resp, ct = self._dopost('login', postdata = 'login_id=%s&password=%s' % (self.username, self.password)) + self._dopost('notification/post_devicetoken', postdata =pdata , xmlresp = False, no2ndkey = True) + resp, ct = self._dopost('login', postdata = 'login_id=%s&password=%s' % (self.username, self.password), no2ndkey = True) if resp['error']: logging.info('登录失败しました') self._exit(1) @@ -1145,7 +1145,7 @@ def fairy_select(self, cond = '', carddeck = None): if resp['error']: return time.sleep(1.2) - resp, ct = self._dopost('mainmenu') + resp, ct = self._dopost('mainmenu', no2ndkey = True) if resp['error']: return if ct.header.your_data.fairy_appearance != '1': # 没有“妖精出现中” @@ -1676,7 +1676,7 @@ def friends(self, choice = '', autodel = False): def reward_box(self, rw_type = '12345'): if self._dopost('menu/menulist')[0]['error']: return False - resp, ct = self._dopost('mainmenu') + resp, ct = self._dopost('mainmenu', no2ndkey = True) if resp['error']: return False if ct.body.mainmenu.rewards == '0': diff --git a/maclient_network.py b/maclient_network.py index 4e0bd0b..197467d 100644 --- a/maclient_network.py +++ b/maclient_network.py @@ -52,6 +52,7 @@ def __init__(self,loc): self.random_cipher_plain='' if loc in ['cn','tw']: self.gen_rsa_pubkey() + self.AES2ndKey = None def gen_cipher_with_uid(self, uid, loc): plain = '%s%s%s' % (getattr(maclient_smart, 'key_%s' % loc[:2])['crypt'][:16], uid, '0'*(16-len(uid))) @@ -90,11 +91,14 @@ def init_cipher(self,loc = 'cn', uid = None): def decode_res(self, bytein): return self.cipher_res.decrypt(bytein) - def decode_data(self, bytein): + def decode_data(self, bytein, second_cipher = False): if len(bytein) == 0: return '' else: - return unpad(b2u(self.cipher_data.decrypt(bytein))) + if second_cipher: + return unpad(b2u(self.AES2ndKey.decrypt(bytein))) + else: + return unpad(b2u(self.cipher_data.decrypt(bytein))) def decode_data64(self, strin): return self.decode_data(base64.decodestring(self.urlescape(strin))) @@ -114,13 +118,17 @@ def encode_data64(self, bytein, mode): # return self.urlunescape(res) return res - def encode_param(self, param, mode=MOD_AES): + def encode_param(self, param, mode = MOD_AES, second_cipher = False): p = param.split('&') if mode == MOD_RSA_AES_RANDOM: _m=self.encode_rsa_64 else: _m=lambda x:x + if second_cipher: #replace + self.AES2ndKey, self.cipher_data = self.cipher_data, self.AES2ndKey p_enc = '%0A&'.join(['%s=%s' % (p[i].split('=')[0], self.urlunescape(_m(self.encode_data64(p[i].split('=')[1], mode)))) for i in xrange(len(p))]) + if second_cipher: #rollback + self.AES2ndKey, self.cipher_data = self.cipher_data, self.AES2ndKey # print p_enc return p_enc.replace('\n', '') @@ -187,7 +195,7 @@ def enable_savetraffic(self): self.issavetraffic = True def gen_2nd_key(self, uid, loc='jp'): - self.crypt.cipher_data = self.crypt.gen_cipher_with_uid(uid, loc) + self.crypt.AES2ndKey = self.crypt.gen_cipher_with_uid(uid, loc) def load_svr(self, loc, ua=''): self.servloc = loc @@ -207,7 +215,7 @@ def load_svr(self, loc, ua=''): self.ht.add_credentials("eWa25vrE", "2DbcAh3G") if (not self.header['User-Agent'].endswith('GooglePlay')): self.header['User-Agent'] += 'GooglePlay' - self.default_2ndkey = loc =='jp' + self.has_2ndkey = loc =='jp' self.crypt=Crypt(self.shortloc) def update_server(self, check_inspection_str): @@ -224,7 +232,7 @@ def update_server(self, check_inspection_str): raw_input() os._exit(1) - def post(self, uri, postdata = '', usecookie = True, setcookie = True, extraheader = {'Cookie2': '$Version=1'}, noencrypt = False, savetraffic = False, no2ndkey = False): + def post(self, uri, postdata = '', usecookie = True, setcookie = True, extraheader = {'Cookie2': '$Version=1'}, noencrypt = False, savetraffic = False, no2ndkey = False):#no2ndkey only used in jp server header = {} header.update(self.header) header.update(extraheader) @@ -247,7 +255,7 @@ def post(self, uri, postdata = '', usecookie = True, setcookie = True, extrahead else: postdata=sign elif postdata != '': - postdata = self.crypt.encode_param(postdata) + postdata = self.crypt.encode_param(postdata, second_cipher = self.has_2ndkey and not no2ndkey) trytime = 0 ttimes = 3 callback_hook = None @@ -295,7 +303,7 @@ def post(self, uri, postdata = '', usecookie = True, setcookie = True, extrahead if savetraffic and self.issavetraffic: return resp, content # 否则解码 - dec = self.rollback_utf8(self.crypt.decode_data(content)) + dec = self.rollback_utf8(self.crypt.decode_data(content, second_cipher = self.has_2ndkey and not no2ndkey)) if os.path.exists('debug'): open('debug/%s.xml' % uri.replace('/', '#').replace('?', '~'), 'w').write(dec) # open('debug/~%s.xml'%uri.replace('/','#').replace('?','~'),'w').write(content)