diff --git a/dart/anime/src/en/aniwave/aniwave.dart b/dart/anime/src/en/aniwave/aniwave.dart index ebe4886b..8db28d77 100644 --- a/dart/anime/src/en/aniwave/aniwave.dart +++ b/dart/anime/src/en/aniwave/aniwave.dart @@ -273,22 +273,22 @@ class Aniwave extends MProvider { } String vrfEncrypt(String input) { - final rc4 = rc4Encrypt("ysJhV6U27FVIjjuk", input.codeUnits); + final rc4 = rc4Encrypt("tGn6kIpVXBEUmqjD", input.codeUnits); final vrf = base64Url.encode(rc4); final vrf1 = base64.encode(vrf.codeUnits); List vrf2 = vrfShift(vrf1.codeUnits); - final vrf3 = base64.encode(vrf2); - return utf8.decode(rot13(vrf3.codeUnits)); + final vrf3 = base64Url.encode(vrf2.reversed.toList()); + return utf8.decode(vrf3.codeUnits); } String vrfDecrypt(String input) { final decode = base64Url.decode(input); - final rc4 = rc4Encrypt("hlPeNwkncH0fq9so", decode); + final rc4 = rc4Encrypt("LUyDrL4qIxtIxOGs", decode); return Uri.decodeComponent(utf8.decode(rc4)); } List vrfShift(List vrf) { - var shifts = [-3, 3, -4, 2, -2, 5, 4, 5]; + var shifts = [-2, -4, -5, 6, 2, -3, 3, 6]; for (var i = 0; i < vrf.length; i++) { var shift = shifts[i % 8]; vrf[i] = (vrf[i] + shift) & 0xFF; @@ -296,18 +296,6 @@ class Aniwave extends MProvider { return vrf; } - List rot13(List vrf) { - for (var i = 0; i < vrf.length; i++) { - var byte = vrf[i]; - if (byte >= 'A'.codeUnitAt(0) && byte <= 'Z'.codeUnitAt(0)) { - vrf[i] = (byte - 'A'.codeUnitAt(0) + 13) % 26 + 'A'.codeUnitAt(0); - } else if (byte >= 'a'.codeUnitAt(0) && byte <= 'z'.codeUnitAt(0)) { - vrf[i] = (byte - 'a'.codeUnitAt(0) + 13) % 26 + 'a'.codeUnitAt(0); - } - } - return vrf; - } - Future> vidsrcExtractor( String url, String name, String type) async { List keys = json.decode((await client.get(Uri.parse( @@ -379,7 +367,7 @@ class Aniwave extends MProvider { .join("&"); var vidId = substringBefore(substringAfterLast(url, "/"), "?"); var encodedID = encodeID(vidId, keyList); - final apiSlug = await callFromFuToken(host, encodedID); + final apiSlug = await callFromFuToken(host, encodedID, url); String apiUrlString = ""; apiUrlString += "https://$host/$apiSlug"; if (paramsToString.isNotEmpty) { @@ -397,9 +385,10 @@ class Aniwave extends MProvider { return base64.encode(rc41).replaceAll("/", "_").trim(); } - Future callFromFuToken(String host, String data) async { - final fuTokenScript = - (await client.get(Uri.parse("https://$host/futoken"))).body; + Future callFromFuToken(String host, String data, String url) async { + final fuTokenScript = (await client + .get(Uri.parse("https://$host/futoken"), headers: {"Referer": url})) + .body; String js = ""; js += "(function"; diff --git a/dart/anime/src/en/aniwave/source.dart b/dart/anime/src/en/aniwave/source.dart index b8ed096a..40268a4c 100644 --- a/dart/anime/src/en/aniwave/source.dart +++ b/dart/anime/src/en/aniwave/source.dart @@ -1,7 +1,7 @@ import '../../../../../model/source.dart'; Source get aniwave => _aniwave; -const _aniwaveVersion = "0.0.65"; +const _aniwaveVersion = "0.0.7"; const _aniwaveCodeUrl = "https://raw.githubusercontent.com/kodjodevf/mangayomi-extensions/$branchName/dart/anime/src/en/aniwave/aniwave.dart"; Source _aniwave = Source(