Add FlyingShineCrypt (untested)

This commit is contained in:
2026-04-06 16:41:54 +08:00
parent 025b802fc9
commit ad25c995ce
2 changed files with 179 additions and 1 deletions

View File

@@ -3,6 +3,10 @@
"$type": "HashCrypt",
"Title": "25c -その箱は少女の悲鳴を漏らさない-"
},
"Aibo Nyuujoku": {
"$type": "FlyingShineCrypt",
"Title": "愛母乳辱~妄執の巨乳責めザンマイ~"
},
"Aisai Injoku Settai": {
"$type": "HashCrypt",
"Title": "愛妻淫辱接待~借金のかたに妻の調教を命じられた夫~"
@@ -45,10 +49,18 @@
"Key": 49,
"Title": "僕の未来は、恋と課金と。~Charge To The Future~ [体験版] | 我的未来是恋爱与氪金 [试用版]"
},
"Crime Rhyme series": {
"$type": "FlyingShineCrypt",
"Title": "クライミライ"
},
"Custom Reido 4/4+/V": {
"$type": "HashCrypt",
"Title": "カスタム隷奴 4/4+/V"
},
"Daraku Koujo": {
"$type": "FlyingShineCrypt",
"Title": "堕落皇女~魔術師の罠に嵌った聖女~"
},
"Dare mo ga Kanojo o Neratteru": {
"$type": "HashCrypt",
"Title": "誰もが彼女を狙ってる。 | 众人觊觎的女友"
@@ -85,6 +97,10 @@
"$type": "HashCrypt",
"Title": "ハメドル白濁堕ち ~生中出しで、お仕事を貰っていいですか?~"
},
"Haniwari! Sayaka Ojou-sama": {
"$type": "FlyingShineCrypt",
"Title": "はにわり!沙耶華お嬢様~感染する股間の大きなモノ~"
},
"Hardcore Teacher": {
"$type": "HashCrypt",
"Title": "ハードコア・ティーチャー ~絶対服従へのロジック~"
@@ -149,10 +165,22 @@
"$type": "HashCrypt",
"Title": "淫薬依存学園~もっと…もっとちょうだい!~"
},
"Inaho no Mirai": {
"$type": "FlyingShineCrypt",
"Title": "イナホノミライ"
},
"Inaka no Muchi na Muchimuchi Musume": {
"$type": "HashCrypt",
"Title": "田舎の無知なむちむち娘"
},
"Inbo Rannyuu Soukan": {
"$type": "FlyingShineCrypt",
"Title": "淫母乱乳相姦~ボクの精子で、ママを一杯にしてあげる"
},
"Ingoku no Hako": {
"$type": "FlyingShineCrypt",
"Title": "淫獄の筺~閉じ込められた美人母娘~"
},
"In! Joku! Pink Ranger!!": {
"$type": "HashCrypt",
"Title": "淫!辱!ピンクレンジャー!! ~堕ちた変身ヒロイン~"
@@ -161,6 +189,10 @@
"$type": "HashCrypt",
"Title": "淫落カウンセリング ~夫の目の前で、妻は本性に堕ちてゆく~"
},
"Inraku no Ketsuzoku": {
"$type": "FlyingShineCrypt",
"Title": "淫落の血族~禁断の呪縛~"
},
"Inshi Reizoku": {
"$type": "HashCrypt",
"Title": "淫姉隷属 ~影に潜んだ愛欲と支配~"
@@ -169,6 +201,10 @@
"$type": "HashCrypt",
"Title": "地味めな侍女さんのお仕事セックス~お嬢様に代わってお相手します~"
},
"Jokyoushi Rinkan no Kyoushitsu": {
"$type": "FlyingShineCrypt",
"Title": "女教師 輪姦の教室"
},
"Juurin! Orc Gakuen!": {
"$type": "HashCrypt",
"Title": "蹂躙!オーク学園! ~転校生は褐色ビッチな女勇者!?~"
@@ -185,11 +221,23 @@
"$type": "HashCrypt",
"Title": "カホゴな寮母の射精管理 ~ちゃんと我慢してくださいね?~"
},
"Kaiware!": {
"$type": "FlyingShineCrypt",
"Title": "かいわれっ!"
},
"Kamidanomi Shisugite Ore no Mirai ga Yabai.": {
"$type": "XorCrypt",
"Key": 205,
"Title": "神頼みしすぎて俺の未来がヤバい。 | 求神太多我的未来糟糕了 | 太依赖咒术的我未来堪忧。"
},
"Kanjuku Sakuranbou!": {
"$type": "FlyingShineCrypt",
"Title": "完熟☆さくらん棒ッ! ~ヒキオタ達の姉妹交換~"
},
"Kanojo-tachi no Taboo": {
"$type": "FlyingShineCrypt",
"Title": "彼女たちの禁忌"
},
"Kanpeki Seitokaichou no Himitsu no Seiheki": {
"$type": "HashCrypt",
"Title": "完璧生徒会長の秘密の性癖 ~高嶺の花の彼女をM女に開花させてやる~"
@@ -226,6 +274,10 @@
"$type": "HashCrypt",
"Title": "りとるほーる ~俺の娘がこんなに……なハズがない | Littlehole~我的女儿不可能这么……"
},
"Love Love Boin series": {
"$type": "FlyingShineCrypt",
"Title": "らぶらぶボイン"
},
"Mama no Okugai Shuuchi Lesson": {
"$type": "HashCrypt",
"Title": "ママの屋外羞恥レッスン ~視線が快楽に変る時…~"
@@ -238,6 +290,10 @@
"$type": "HashCrypt",
"Title": "愛娘は、マゾ性隷 ~娘だからって遠慮しないでね?~"
},
"Megami Ryoujoku ~Paizuri Hime Verdandi~": {
"$type": "FlyingShineCrypt",
"Title": "女神凌辱 ~パイズリ姫ベルダンディー~"
},
"Minarai Taimashi Maji de Ikimasu!": {
"$type": "HashCrypt",
"Title": "見習い退魔師 本気でイキますっ!"
@@ -246,6 +302,10 @@
"$type": "MizukakeCrypt",
"Title": "みずのかけら -once summer of islet-"
},
"Mizukoi": {
"$type": "FlyingShineCrypt",
"Title": "水恋~みずこい~"
},
"Momojiri Instructor Netori Lesson": {
"$type": "HashCrypt",
"Title": "桃尻インストラクター寝取りレッスン ~競泳水着でえろざんまい~"
@@ -279,7 +339,7 @@
"Title": "お前の妻は、オレの淫乱肉嫁 ~お隣さんは欲求不満でした~"
},
"Omana 2: Omaenchi Moeteruzo": {
"$type": "HashCrypt",
"$type": "FlyingShineCrypt",
"Title": "おまな2 おまえんち萌えてるぞ"
},
"Oppai Cafe ~Oyako de Cos Chichi~": {
@@ -310,10 +370,18 @@
"$type": "HashCrypt",
"Title": "夫に言えない義父との姦淫 ~嫌なのに忘れられなくなりそう~"
},
"Ouka Ryouran": {
"$type": "FlyingShineCrypt",
"Title": "桜花繚乱"
},
"Oyako Koukan": {
"$type": "HashCrypt",
"Title": "母娘肛姦 ~私のお尻に染みついていく雄の匂い~"
},
"Oyako Ninjutsu Kunoichi PonPon!!": {
"$type": "FlyingShineCrypt",
"Title": "母娘妊術くのいちPonPon!!"
},
"Oyako no Himitsu": {
"$type": "HashCrypt",
"Title": "父娘の秘密 ~妻に言えない親子の関係~"
@@ -330,6 +398,21 @@
"$type": "HashCrypt",
"Title": "パパ大好き!と言ってくれ…~反抗期の娘を催眠アプリで狂愛しつけ~"
},
"Princess Saga": {
"$type": "FlyingShineCrypt",
"Title": "プリンセスサーガ"
},
"Re:": {
"$type": "FlyingShineCrypt"
},
"Saikyou Chikan Densha": {
"$type": "FlyingShineCrypt",
"Title": "埼狂痴漢電車~7人の獲物達~"
},
"Sailor Fuku Shinryou Tsumaka": {
"$type": "FlyingShineCrypt",
"Title": "セーラー服心療妻科~内緒のえっちなカウンセリング~"
},
"Sakura Sakura": {
"$type": "HashCrypt",
"Title": "さくらさくら"
@@ -350,6 +433,14 @@
"$type": "HashCrypt",
"Title": "色情教団 | 妃神会秘史"
},
"Shimai Soukan ~Kindan no Kakeizu~": {
"$type": "FlyingShineCrypt",
"Title": "実姉妹 ~濡れた相姦図~"
},
"Shin'yuu no Kyonyuu Mama to Nakadashi Seikatsu": {
"$type": "FlyingShineCrypt",
"Title": "親友の巨乳ママと中出し性活~こんなに射精してちゃ孕んじゃったね"
},
"Shirouto Yanmama, Kosatsu AV Debut": {
"$type": "HashCrypt",
"Title": "素人ヤンママ、個撮AVデビュー ~見てな、女はド胸だぜ!~"
@@ -358,6 +449,10 @@
"$type": "HashCrypt",
"Title": "してなさそうで、している彼女のしていない事~キミの初めてになってやる~"
},
"Shokusai no Miyako": {
"$type": "FlyingShineCrypt",
"Title": "触祭の都"
},
"Shokushu Ouji no Nikuyome Sagashi": {
"$type": "HashCrypt",
"Title": "触手王子の肉嫁探し~母と姉弟の終わらない絶頂地獄~"
@@ -370,10 +465,18 @@
"$type": "MizukakeCrypt",
"Title": "そらいろの雫"
},
"Soukan Chiryou Byoutou": {
"$type": "FlyingShineCrypt",
"Title": "相姦恥療病棟 ~ナースはママで、女医は叔母"
},
"Sousei no Himegimi": {
"$type": "HashCrypt",
"Title": "双性の姫君 ~ふたなり姉妹と魔王の求愛~"
},
"Swan Song": {
"$type": "FlyingShineCrypt",
"Title": "スワンソング"
},
"Sweet ☆ Switch": {
"$type": "HashCrypt",
"Title": "すうぃ~と☆SwitcH ~まじわるシセンでとろけるカラダ~"
@@ -401,6 +504,10 @@
"$type": "HashCrypt",
"Title": "隣妻2 ~夫じゃできないこといっぱいシて~"
},
"Tsuma Kai -Tsuma Gai-": {
"$type": "FlyingShineCrypt",
"Title": "貸し出し妻、満里奈の“ネトラセ”報告 外伝1 ―女子校生、満里奈の性感開発―"
},
"Tsuma no Sobo wa": {
"$type": "HashCrypt",
"Title": "妻の祖母は、まだまだ現役超美熟女~孫婿ちゃん、寂しい時にはいつでもいらっしゃい~"

View File

@@ -68,6 +68,7 @@ enum CryptType {
XorCrypt {
key: u8,
},
FlyingShineCrypt,
}
#[derive(Clone, Debug, Deserialize)]
@@ -86,6 +87,7 @@ impl Schema {
CryptType::MizukakeCrypt => Box::new(MizukakeCrypt::new()),
CryptType::HashCrypt => Box::new(HashCrypt::new()),
CryptType::XorCrypt { key } => Box::new(XorCrypt::new(key)),
CryptType::FlyingShineCrypt => Box::new(FlyingShineCrypt::new()),
}
}
}
@@ -412,6 +414,75 @@ impl<R: Read> Read for XorCryptReader<R> {
}
}
#[derive(Debug)]
pub struct FlyingShineCrypt {}
impl FlyingShineCrypt {
pub fn new() -> Self {
Self {}
}
fn adjust(&self, hash: u32) -> (u8, u32) {
let mut shift = hash & 0xFF;
if shift == 0 {
shift = 0xF;
}
let mut key = ((hash >> 8) & 0xFF) as u8;
if key == 0 {
key = 0xF0;
}
(key, shift)
}
}
impl Crypt for FlyingShineCrypt {
fn decrypt_supported(&self) -> bool {
true
}
fn decrypt_seek_supported(&self) -> bool {
true
}
fn decrypt<'a>(
&self,
entry: &Xp3Entry,
cur_seg: &Segment,
stream: Box<dyn Read + 'a>,
) -> Result<Box<dyn ReadDebug + 'a>> {
Ok(Box::new(FlyingShineCryptReader::new(
stream,
cur_seg,
self.adjust(entry.file_hash),
)))
}
fn decrypt_with_seek<'a>(
&self,
entry: &Xp3Entry,
cur_seg: &Segment,
stream: Box<dyn ReadSeek + 'a>,
) -> Result<Box<dyn ReadSeek + 'a>> {
Ok(Box::new(FlyingShineCryptReader::new(
stream,
cur_seg,
self.adjust(entry.file_hash),
)))
}
}
seek_reader_key_impl!(FlyingShineCryptReader<T>, (u8, u32));
impl<R: Read> Read for FlyingShineCryptReader<R> {
fn read(&mut self, buf: &mut [u8]) -> std::io::Result<usize> {
let (xor, shift) = self.key;
let readed = self.inner.read(buf)?;
for t in (&mut buf[..readed]).iter_mut() {
*t ^= xor;
*t = t.rotate_right(shift);
}
self.pos += readed as u64;
Ok(readed)
}
}
#[test]
fn test_deserialize_crypt() {
for (key, schema) in CRYPT_SCHEMA.iter() {