mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-12-24 11:34:02 +03:00
parent
55695eda39
commit
6614dfefd1
@ -1,13 +1,7 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
from aiohttp import ClientSession
|
from aiohttp import ClientSession
|
||||||
import json
|
import execjs, os, json
|
||||||
from Crypto.Cipher import AES
|
|
||||||
from Crypto.Util import Padding
|
|
||||||
import base64
|
|
||||||
import hashlib
|
|
||||||
import time
|
|
||||||
import math
|
|
||||||
|
|
||||||
from ..typing import AsyncResult, Messages
|
from ..typing import AsyncResult, Messages
|
||||||
from .base_provider import AsyncGeneratorProvider
|
from .base_provider import AsyncGeneratorProvider
|
||||||
@ -71,13 +65,18 @@ class GptForLove(AsyncGeneratorProvider):
|
|||||||
|
|
||||||
|
|
||||||
def get_secret() -> str:
|
def get_secret() -> str:
|
||||||
k = '14487141bvirvvG'
|
dir = os.path.dirname(__file__)
|
||||||
e = math.floor(time.time())
|
include = f'{dir}/npm/node_modules/crypto-js/crypto-js'
|
||||||
|
source = """
|
||||||
plaintext = str(e).encode('utf-8')
|
CryptoJS = require({include})
|
||||||
key = hashlib.md5(k.encode('utf-8')).digest()
|
var k = 'fjfsdwiuhfwf'
|
||||||
|
, e = Math.floor(new Date().getTime() / 1e3);
|
||||||
cipher = AES.new(key, AES.MODE_ECB)
|
var t = CryptoJS.enc.Utf8.parse(e)
|
||||||
ciphertext = cipher.encrypt(Padding.pad(plaintext, AES.block_size, style='pkcs7'))
|
, o = CryptoJS.AES.encrypt(t, k, {
|
||||||
|
mode: CryptoJS.mode.ECB,
|
||||||
return base64.b64encode(ciphertext).decode()
|
padding: CryptoJS.pad.Pkcs7
|
||||||
|
});
|
||||||
|
return o.toString()
|
||||||
|
"""
|
||||||
|
source = source.replace('{include}', json.dumps(include))
|
||||||
|
return execjs.compile(source).call('')
|
||||||
|
12
g4f/Provider/npm/node_modules/.package-lock.json
generated
vendored
Normal file
12
g4f/Provider/npm/node_modules/.package-lock.json
generated
vendored
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
"name": "npm",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"node_modules/crypto-js": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
275
g4f/Provider/npm/node_modules/crypto-js/README.md
generated
vendored
Normal file
275
g4f/Provider/npm/node_modules/crypto-js/README.md
generated
vendored
Normal file
@ -0,0 +1,275 @@
|
|||||||
|
# crypto-js
|
||||||
|
|
||||||
|
JavaScript library of crypto standards.
|
||||||
|
|
||||||
|
## Discontinued
|
||||||
|
|
||||||
|
Active development of CryptoJS has been discontinued. This library is no longer maintained.
|
||||||
|
|
||||||
|
Nowadays, NodeJS and modern browsers have a native `Crypto` module. The latest version of CryptoJS already uses the native Crypto module for random number generation, since `Math.random()` is not crypto-safe. Further development of CryptoJS would result in it only being a wrapper of native Crypto. Therefore, development and maintenance has been discontinued, it is time to go for the native `crypto` module.
|
||||||
|
|
||||||
|
## Node.js (Install)
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
|
||||||
|
- Node.js
|
||||||
|
- npm (Node.js package manager)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
npm install crypto-js
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
ES6 import for typical API call signing use case:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
import sha256 from 'crypto-js/sha256';
|
||||||
|
import hmacSHA512 from 'crypto-js/hmac-sha512';
|
||||||
|
import Base64 from 'crypto-js/enc-base64';
|
||||||
|
|
||||||
|
const message, nonce, path, privateKey; // ...
|
||||||
|
const hashDigest = sha256(nonce + message);
|
||||||
|
const hmacDigest = Base64.stringify(hmacSHA512(path + hashDigest, privateKey));
|
||||||
|
```
|
||||||
|
|
||||||
|
Modular include:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var AES = require("crypto-js/aes");
|
||||||
|
var SHA256 = require("crypto-js/sha256");
|
||||||
|
...
|
||||||
|
console.log(SHA256("Message"));
|
||||||
|
```
|
||||||
|
|
||||||
|
Including all libraries, for access to extra methods:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var CryptoJS = require("crypto-js");
|
||||||
|
console.log(CryptoJS.HmacSHA1("Message", "Key"));
|
||||||
|
```
|
||||||
|
|
||||||
|
## Client (browser)
|
||||||
|
|
||||||
|
Requirements:
|
||||||
|
|
||||||
|
- Node.js
|
||||||
|
- Bower (package manager for frontend)
|
||||||
|
|
||||||
|
```bash
|
||||||
|
bower install crypto-js
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
Modular include:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
require.config({
|
||||||
|
packages: [
|
||||||
|
{
|
||||||
|
name: 'crypto-js',
|
||||||
|
location: 'path-to/bower_components/crypto-js',
|
||||||
|
main: 'index'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
require(["crypto-js/aes", "crypto-js/sha256"], function (AES, SHA256) {
|
||||||
|
console.log(SHA256("Message"));
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
Including all libraries, for access to extra methods:
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
// Above-mentioned will work or use this simple form
|
||||||
|
require.config({
|
||||||
|
paths: {
|
||||||
|
'crypto-js': 'path-to/bower_components/crypto-js/crypto-js'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
require(["crypto-js"], function (CryptoJS) {
|
||||||
|
console.log(CryptoJS.HmacSHA1("Message", "Key"));
|
||||||
|
});
|
||||||
|
```
|
||||||
|
|
||||||
|
### Usage without RequireJS
|
||||||
|
|
||||||
|
```html
|
||||||
|
<script type="text/javascript" src="path-to/bower_components/crypto-js/crypto-js.js"></script>
|
||||||
|
<script type="text/javascript">
|
||||||
|
var encrypted = CryptoJS.AES(...);
|
||||||
|
var encrypted = CryptoJS.SHA256(...);
|
||||||
|
</script>
|
||||||
|
```
|
||||||
|
|
||||||
|
## API
|
||||||
|
|
||||||
|
See: https://cryptojs.gitbook.io/docs/
|
||||||
|
|
||||||
|
### AES Encryption
|
||||||
|
|
||||||
|
#### Plain text encryption
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var CryptoJS = require("crypto-js");
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
var ciphertext = CryptoJS.AES.encrypt('my message', 'secret key 123').toString();
|
||||||
|
|
||||||
|
// Decrypt
|
||||||
|
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
|
||||||
|
var originalText = bytes.toString(CryptoJS.enc.Utf8);
|
||||||
|
|
||||||
|
console.log(originalText); // 'my message'
|
||||||
|
```
|
||||||
|
|
||||||
|
#### Object encryption
|
||||||
|
|
||||||
|
```javascript
|
||||||
|
var CryptoJS = require("crypto-js");
|
||||||
|
|
||||||
|
var data = [{id: 1}, {id: 2}]
|
||||||
|
|
||||||
|
// Encrypt
|
||||||
|
var ciphertext = CryptoJS.AES.encrypt(JSON.stringify(data), 'secret key 123').toString();
|
||||||
|
|
||||||
|
// Decrypt
|
||||||
|
var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');
|
||||||
|
var decryptedData = JSON.parse(bytes.toString(CryptoJS.enc.Utf8));
|
||||||
|
|
||||||
|
console.log(decryptedData); // [{id: 1}, {id: 2}]
|
||||||
|
```
|
||||||
|
|
||||||
|
### List of modules
|
||||||
|
|
||||||
|
|
||||||
|
- ```crypto-js/core```
|
||||||
|
- ```crypto-js/x64-core```
|
||||||
|
- ```crypto-js/lib-typedarrays```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/md5```
|
||||||
|
- ```crypto-js/sha1```
|
||||||
|
- ```crypto-js/sha256```
|
||||||
|
- ```crypto-js/sha224```
|
||||||
|
- ```crypto-js/sha512```
|
||||||
|
- ```crypto-js/sha384```
|
||||||
|
- ```crypto-js/sha3```
|
||||||
|
- ```crypto-js/ripemd160```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/hmac-md5```
|
||||||
|
- ```crypto-js/hmac-sha1```
|
||||||
|
- ```crypto-js/hmac-sha256```
|
||||||
|
- ```crypto-js/hmac-sha224```
|
||||||
|
- ```crypto-js/hmac-sha512```
|
||||||
|
- ```crypto-js/hmac-sha384```
|
||||||
|
- ```crypto-js/hmac-sha3```
|
||||||
|
- ```crypto-js/hmac-ripemd160```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/pbkdf2```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/aes```
|
||||||
|
- ```crypto-js/tripledes```
|
||||||
|
- ```crypto-js/rc4```
|
||||||
|
- ```crypto-js/rabbit```
|
||||||
|
- ```crypto-js/rabbit-legacy```
|
||||||
|
- ```crypto-js/evpkdf```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/format-openssl```
|
||||||
|
- ```crypto-js/format-hex```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/enc-latin1```
|
||||||
|
- ```crypto-js/enc-utf8```
|
||||||
|
- ```crypto-js/enc-hex```
|
||||||
|
- ```crypto-js/enc-utf16```
|
||||||
|
- ```crypto-js/enc-base64```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/mode-cfb```
|
||||||
|
- ```crypto-js/mode-ctr```
|
||||||
|
- ```crypto-js/mode-ctr-gladman```
|
||||||
|
- ```crypto-js/mode-ofb```
|
||||||
|
- ```crypto-js/mode-ecb```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
- ```crypto-js/pad-pkcs7```
|
||||||
|
- ```crypto-js/pad-ansix923```
|
||||||
|
- ```crypto-js/pad-iso10126```
|
||||||
|
- ```crypto-js/pad-iso97971```
|
||||||
|
- ```crypto-js/pad-zeropadding```
|
||||||
|
- ```crypto-js/pad-nopadding```
|
||||||
|
|
||||||
|
|
||||||
|
## Release notes
|
||||||
|
|
||||||
|
### 4.2.0
|
||||||
|
|
||||||
|
Change default hash algorithm and iteration's for PBKDF2 to prevent weak security by using the default configuration.
|
||||||
|
|
||||||
|
Custom KDF Hasher
|
||||||
|
|
||||||
|
Blowfish support
|
||||||
|
|
||||||
|
### 4.1.1
|
||||||
|
|
||||||
|
Fix module order in bundled release.
|
||||||
|
|
||||||
|
Include the browser field in the released package.json.
|
||||||
|
|
||||||
|
### 4.1.0
|
||||||
|
|
||||||
|
Added url safe variant of base64 encoding. [357](https://github.com/brix/crypto-js/pull/357)
|
||||||
|
|
||||||
|
Avoid webpack to add crypto-browser package. [364](https://github.com/brix/crypto-js/pull/364)
|
||||||
|
|
||||||
|
### 4.0.0
|
||||||
|
|
||||||
|
This is an update including breaking changes for some environments.
|
||||||
|
|
||||||
|
In this version `Math.random()` has been replaced by the random methods of the native crypto module.
|
||||||
|
|
||||||
|
For this reason CryptoJS might not run in some JavaScript environments without native crypto module. Such as IE 10 or before or React Native.
|
||||||
|
|
||||||
|
### 3.3.0
|
||||||
|
|
||||||
|
Rollback, `3.3.0` is the same as `3.1.9-1`.
|
||||||
|
|
||||||
|
The move of using native secure crypto module will be shifted to a new `4.x.x` version. As it is a breaking change the impact is too big for a minor release.
|
||||||
|
|
||||||
|
### 3.2.1
|
||||||
|
|
||||||
|
The usage of the native crypto module has been fixed. The import and access of the native crypto module has been improved.
|
||||||
|
|
||||||
|
### 3.2.0
|
||||||
|
|
||||||
|
In this version `Math.random()` has been replaced by the random methods of the native crypto module.
|
||||||
|
|
||||||
|
For this reason CryptoJS might does not run in some JavaScript environments without native crypto module. Such as IE 10 or before.
|
||||||
|
|
||||||
|
If it's absolute required to run CryptoJS in such an environment, stay with `3.1.x` version. Encrypting and decrypting stays compatible. But keep in mind `3.1.x` versions still use `Math.random()` which is cryptographically not secure, as it's not random enough.
|
||||||
|
|
||||||
|
This version came along with `CRITICAL` `BUG`.
|
||||||
|
|
||||||
|
DO NOT USE THIS VERSION! Please, go for a newer version!
|
||||||
|
|
||||||
|
### 3.1.x
|
||||||
|
|
||||||
|
The `3.1.x` are based on the original CryptoJS, wrapped in CommonJS modules.
|
||||||
|
|
||||||
|
|
6657
g4f/Provider/npm/node_modules/crypto-js/crypto-js.js
generated
vendored
Normal file
6657
g4f/Provider/npm/node_modules/crypto-js/crypto-js.js
generated
vendored
Normal file
File diff suppressed because it is too large
Load Diff
24
g4f/Provider/npm/package-lock.json
generated
Normal file
24
g4f/Provider/npm/package-lock.json
generated
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
{
|
||||||
|
"name": "npm",
|
||||||
|
"lockfileVersion": 2,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"dependencies": {
|
||||||
|
"crypto-js": "^4.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/crypto-js": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"crypto-js": {
|
||||||
|
"version": "4.2.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.2.0.tgz",
|
||||||
|
"integrity": "sha512-KALDyEYgpY+Rlob/iriUtjV6d5Eq+Y191A5g4UqLAi8CyGP9N1+FdVbkc1SxKc2r4YAYqG8JzO2KGL+AizD70Q=="
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
5
g4f/Provider/npm/package.json
Normal file
5
g4f/Provider/npm/package.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"dependencies": {
|
||||||
|
"crypto-js": "^4.2.0"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user