mirror of
https://github.com/lifegpc/msg-tool.git
synced 2026-06-16 10:04:20 +08:00
Add AppliqueCrypt (untested)
This commit is contained in:
@@ -89,6 +89,10 @@
|
||||
"$type": "HashCrypt",
|
||||
"Title": "愛妻淫辱接待~借金のかたに妻の調教を命じられた夫~"
|
||||
},
|
||||
"Akatsuki no Goei": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "暁の護衛 | 晓之护卫"
|
||||
},
|
||||
"Akazukin to Mayoi no Mori": {
|
||||
"$type": "CxEncryption",
|
||||
"Mask": 369,
|
||||
@@ -349,6 +353,10 @@
|
||||
"ControlBlockName": "deepone.bin",
|
||||
"Title": "Deep One -ディープワン- | 深渊的来访者"
|
||||
},
|
||||
"Dekinai Watashi ga, Kurikaesu.": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "できない私が、くり返す。 | 若能与你再次相见"
|
||||
},
|
||||
"DISCODE-2 Niritsu Haihan": {
|
||||
"$type": "NatsupochiCrypt",
|
||||
"Title": "DISCODE-2 二律背反"
|
||||
@@ -727,6 +735,9 @@
|
||||
"$type": "DieselmineCrypt",
|
||||
"Title": "捕食ゲーム2~さようなら。丸呑み~"
|
||||
},
|
||||
"Hotel. [Trial]": {
|
||||
"$type": "AppliqueCrypt"
|
||||
},
|
||||
"Ichizu ni Zettai Fukujuu na Imouto": {
|
||||
"$type": "HashCrypt",
|
||||
"Title": "一途に絶対服従な妹をめちゃくちゃにしてみた ~愛欲兄妹~"
|
||||
@@ -850,6 +861,10 @@
|
||||
"TpmFileName": "plugin/jktrouble.tpm",
|
||||
"Title": "JKトラブめいん\"s"
|
||||
},
|
||||
"Joker -Shisen no Hate no Doukeshi-": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "JOKER -死線の果ての道化師-"
|
||||
},
|
||||
"Jokyoushi Rinkan no Kyoushitsu": {
|
||||
"$type": "FlyingShineCrypt",
|
||||
"Title": "女教師 輪姦の教室"
|
||||
@@ -1096,6 +1111,10 @@
|
||||
"ControlBlockName": "love_laby.bin",
|
||||
"Title": "らぶ+らび"
|
||||
},
|
||||
"Lovesick Puppies -Bokura wa Koi Suru Tame ni Umaretekita-": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "LOVESICK PUPPIES -僕らは恋するために生まれてきた- | LOVESICK PUPPIES -我们为了恋爱而诞生-"
|
||||
},
|
||||
"M-days Doukoku no Koubi Jigoku": {
|
||||
"$type": "DieselmineCrypt",
|
||||
"Title": "M-days 慟哭の交尾地獄"
|
||||
@@ -1363,6 +1382,10 @@
|
||||
"$type": "DieselmineCrypt",
|
||||
"Title": "思いっきり! 精液大量注入! ~高飛車女をアヘらせろ!~"
|
||||
},
|
||||
"Omokage ~Ecchi na Happening!? Nandemo Dontokoi!~": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "オモカゲ ~えっちなハプニング!? なんでもどんとこい!~ | 思影"
|
||||
},
|
||||
"Onaji Class no Idol-san. Around me is full by a celebrity.": {
|
||||
"$type": "XorCrypt",
|
||||
"Key": 232,
|
||||
@@ -1507,6 +1530,14 @@
|
||||
"EvenBranchOrder": "BAYBBQIHAAM=",
|
||||
"ControlBlockName": "pendulum.bin"
|
||||
},
|
||||
"PRETTY x CATION": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "プリティケーション | PRETTY×CATION"
|
||||
},
|
||||
"Pretty x Cation 2": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "プリティケーション2 | PRETTY×CATION2"
|
||||
},
|
||||
"PRICE": {
|
||||
"$type": "PoringSoftCrypt"
|
||||
},
|
||||
@@ -1514,6 +1545,10 @@
|
||||
"$type": "FlyingShineCrypt",
|
||||
"Title": "プリンセスサーガ"
|
||||
},
|
||||
"PURELY x CATION [Trial]": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "PURELY×CATION 体験版"
|
||||
},
|
||||
"Rakugaki Overheart": {
|
||||
"$type": "NephriteCrypt",
|
||||
"Title": "らくがきオーバーハート"
|
||||
@@ -1521,6 +1556,9 @@
|
||||
"Re:": {
|
||||
"$type": "FlyingShineCrypt"
|
||||
},
|
||||
"Re:birth Colony -Lost Azurite-": {
|
||||
"$type": "AppliqueCrypt"
|
||||
},
|
||||
"Real Imouto ga Iru Ooizumi-kun no Baai": {
|
||||
"$type": "CxEncryption",
|
||||
"Mask": 690,
|
||||
@@ -1710,6 +1748,10 @@
|
||||
"$type": "DieselmineCrypt",
|
||||
"Title": "セリフで感じて!声優どうし"
|
||||
},
|
||||
"Shiden ~Enkan no Kizuna~": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "紫電~円環の絆~ | 紫电~环之羁绊~"
|
||||
},
|
||||
"Shikijou Kyoudan": {
|
||||
"$type": "HashCrypt",
|
||||
"Title": "色情教団 | 妃神会秘史"
|
||||
@@ -1806,6 +1848,10 @@
|
||||
"$type": "HashCrypt",
|
||||
"Title": "祖母と僕 ~おばあちゃん、なにかでちゃうよぉ~"
|
||||
},
|
||||
"Sorairo Innocent": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "空色イノセント"
|
||||
},
|
||||
"Sorairo no Shizuku": {
|
||||
"$type": "MizukakeCrypt",
|
||||
"Title": "そらいろの雫",
|
||||
@@ -2081,6 +2127,10 @@
|
||||
"Key": 205,
|
||||
"Title": "ゆらめく心に満ちた世界で、君の夢と欲望は叶うか | 三千心世界,梦终将实现"
|
||||
},
|
||||
"Yurikago yori Tenshi made [Trial]": {
|
||||
"$type": "AppliqueCrypt",
|
||||
"Title": "揺り籠より天使まで 体験版"
|
||||
},
|
||||
"Yuugu ~Nyomitsu Gangu Adesugata~": {
|
||||
"$type": "CxEncryption",
|
||||
"Mask": 531,
|
||||
|
||||
@@ -166,6 +166,7 @@ enum CryptType {
|
||||
AlteredPinkCrypt,
|
||||
NatsupochiCrypt,
|
||||
PoringSoftCrypt,
|
||||
AppliqueCrypt,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Deserialize)]
|
||||
@@ -259,6 +260,7 @@ impl Schema {
|
||||
CryptType::AlteredPinkCrypt => Box::new(AlteredPinkCrypt::new(self.base.clone())),
|
||||
CryptType::NatsupochiCrypt => Box::new(NatsupochiCrypt::new(self.base.clone())),
|
||||
CryptType::PoringSoftCrypt => Box::new(PoringSoftCrypt::new(self.base.clone())),
|
||||
CryptType::AppliqueCrypt => Box::new(AppliqueCrypt::new(self.base.clone())),
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -926,6 +928,21 @@ impl<R: Read> Read for PoringSoftCryptReader<R> {
|
||||
}
|
||||
}
|
||||
|
||||
seek_crypt_filehash_key_impl!(AppliqueCrypt, AppliqueCryptReader<T>);
|
||||
|
||||
impl<R: Read> Read for AppliqueCryptReader<R> {
|
||||
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
|
||||
let readed = self.inner.read(buf)?;
|
||||
let key = (self.key >> 12) as u8;
|
||||
let skip = (5 - (self.seg_start + self.pos).min(5) as usize).min(readed);
|
||||
for t in (&mut buf[skip..readed]).iter_mut() {
|
||||
*t ^= key;
|
||||
}
|
||||
self.pos += readed as u64;
|
||||
Ok(readed)
|
||||
}
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_deserialize_crypt() {
|
||||
for (key, schema) in CRYPT_SCHEMA.iter() {
|
||||
|
||||
@@ -425,7 +425,9 @@ impl Read for Entry {
|
||||
let seg_pos = self.entries_pos[seg_index];
|
||||
let skip_pos = self.pos - seg_pos;
|
||||
let read_size = seg.archived_size;
|
||||
if !self.skip_decrypt && (self.index.is_encrypted() || self.force_decrypt) {
|
||||
if !self.skip_decrypt
|
||||
&& (self.index.is_encrypted() || (self.force_decrypt && self.crypt.decrypt_supported()))
|
||||
{
|
||||
if seg.is_compressed || !self.crypt.decrypt_seek_supported() {
|
||||
let mut cache: Box<dyn Read> = if seg.is_compressed {
|
||||
let mut inner =
|
||||
|
||||
Reference in New Issue
Block a user