mirror of
https://github.com/telemt/telemt.git
synced 2026-07-09 13:30:22 +03:00
Compare commits
12 Commits
5f5582865e
..
3.3.38
| Author | SHA1 | Date | |
|---|---|---|---|
| e630ea0045 | |||
| 4574e423c6 | |||
| defa37da05 | |||
| 5fd058b6fd | |||
| 5b11522620 | |||
| c2f16a343a | |||
| bb6237151c | |||
| f6704d7d65 | |||
| 3d20002e56 | |||
| 8fcd0fa950 | |||
| 645e968778 | |||
| b46216d357 |
Generated
+1
-1
@@ -2780,7 +2780,7 @@ checksum = "7b2093cf4c8eb1e67749a6762251bc9cd836b6fc171623bd0a9d324d37af2417"
|
|||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "telemt"
|
name = "telemt"
|
||||||
version = "3.3.37"
|
version = "3.3.38"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"aes",
|
"aes",
|
||||||
"anyhow",
|
"anyhow",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
[package]
|
[package]
|
||||||
name = "telemt"
|
name = "telemt"
|
||||||
version = "3.3.37"
|
version = "3.3.38"
|
||||||
edition = "2024"
|
edition = "2024"
|
||||||
|
|
||||||
[features]
|
[features]
|
||||||
|
|||||||
@@ -2,7 +2,10 @@
|
|||||||
|
|
||||||
***Löst Probleme, bevor andere überhaupt wissen, dass sie existieren*** / ***It solves problems before others even realize they exist***
|
***Löst Probleme, bevor andere überhaupt wissen, dass sie existieren*** / ***It solves problems before others even realize they exist***
|
||||||
|
|
||||||
[**Telemt Chat in Telegram**](https://t.me/telemtrs)
|
### [**Telemt Chat in Telegram**](https://t.me/telemtrs)
|
||||||
|
#### Fixed TLS ClientHello is now available in Telegram Desktop starting from version 6.7.2: to work with EE-MTProxy, please update your client;
|
||||||
|
#### Fixed TLS ClientHello for Telegram Android Client is available in [our chat](https://t.me/telemtrs/30234/36441); official releases for Android and iOS are "work in progress";
|
||||||
|
|
||||||
|
|
||||||
**Telemt** is a fast, secure, and feature-rich server written in Rust: it fully implements the official Telegram proxy algo and adds many production-ready improvements such as:
|
**Telemt** is a fast, secure, and feature-rich server written in Rust: it fully implements the official Telegram proxy algo and adds many production-ready improvements such as:
|
||||||
- [ME Pool + Reader/Writer + Registry + Refill + Adaptive Floor + Trio-State + Generation Lifecycle](https://github.com/telemt/telemt/blob/main/docs/model/MODEL.en.md)
|
- [ME Pool + Reader/Writer + Registry + Refill + Adaptive Floor + Trio-State + Generation Lifecycle](https://github.com/telemt/telemt/blob/main/docs/model/MODEL.en.md)
|
||||||
@@ -51,8 +54,12 @@
|
|||||||
- [FAQ EN](docs/FAQ.en.md)
|
- [FAQ EN](docs/FAQ.en.md)
|
||||||
|
|
||||||
### Recognizability for DPI and crawler
|
### Recognizability for DPI and crawler
|
||||||
Since version 1.1.0.0, we have debugged masking perfectly: for all clients without "presenting" a key,
|
|
||||||
we transparently direct traffic to the target host!
|
On April 1, 2026, we became aware of a method for detecting MTProxy Fake-TLS,
|
||||||
|
based on the ECH extension and the ordering of cipher suites,
|
||||||
|
as well as an overall unique JA3/JA4 fingerprint
|
||||||
|
that does not occur in modern browsers:
|
||||||
|
we have already submitted initial changes to the Telegram Desktop developers and are working on updates for other clients.
|
||||||
|
|
||||||
- We consider this a breakthrough aspect, which has no stable analogues today
|
- We consider this a breakthrough aspect, which has no stable analogues today
|
||||||
- Based on this: if `telemt` configured correctly, **TLS mode is completely identical to real-life handshake + communication** with a specified host
|
- Based on this: if `telemt` configured correctly, **TLS mode is completely identical to real-life handshake + communication** with a specified host
|
||||||
|
|||||||
+3058
-317
File diff suppressed because it is too large
Load Diff
+31
-3
@@ -20,6 +20,13 @@ TARGET_VERSION="${VERSION:-latest}"
|
|||||||
while [ $# -gt 0 ]; do
|
while [ $# -gt 0 ]; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-h|--help) ACTION="help"; shift ;;
|
-h|--help) ACTION="help"; shift ;;
|
||||||
|
-d|--domain)
|
||||||
|
if [ "$#" -lt 2 ] || [ -z "$2" ]; then
|
||||||
|
printf '[ERROR] %s requires a domain argument.\n' "$1" >&2
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
TLS_DOMAIN="$2"
|
||||||
|
shift 2 ;;
|
||||||
uninstall|--uninstall)
|
uninstall|--uninstall)
|
||||||
if [ "$ACTION" != "purge" ]; then ACTION="uninstall"; fi
|
if [ "$ACTION" != "purge" ]; then ACTION="uninstall"; fi
|
||||||
shift ;;
|
shift ;;
|
||||||
@@ -52,11 +59,12 @@ cleanup() {
|
|||||||
trap cleanup EXIT INT TERM
|
trap cleanup EXIT INT TERM
|
||||||
|
|
||||||
show_help() {
|
show_help() {
|
||||||
say "Usage: $0 [ <version> | install | uninstall | purge | --help ]"
|
say "Usage: $0 [ <version> | install | uninstall | purge ] [ -d <domain> ] [ --help ]"
|
||||||
say " <version> Install specific version (e.g. 3.3.15, default: latest)"
|
say " <version> Install specific version (e.g. 3.3.15, default: latest)"
|
||||||
say " install Install the latest version"
|
say " install Install the latest version"
|
||||||
say " uninstall Remove the binary and service (keeps config and user)"
|
say " uninstall Remove the binary and service (keeps config and user)"
|
||||||
say " purge Remove everything including configuration, data, and user"
|
say " purge Remove everything including configuration, data, and user"
|
||||||
|
say " -d, --domain Set TLS domain (default: petrovich.ru)"
|
||||||
exit 0
|
exit 0
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -192,7 +200,13 @@ verify_install_deps() {
|
|||||||
detect_arch() {
|
detect_arch() {
|
||||||
sys_arch="$(uname -m)"
|
sys_arch="$(uname -m)"
|
||||||
case "$sys_arch" in
|
case "$sys_arch" in
|
||||||
x86_64|amd64) echo "x86_64" ;;
|
x86_64|amd64)
|
||||||
|
if [ -r /proc/cpuinfo ] && grep -q "avx2" /proc/cpuinfo 2>/dev/null && grep -q "bmi2" /proc/cpuinfo 2>/dev/null; then
|
||||||
|
echo "x86_64-v3"
|
||||||
|
else
|
||||||
|
echo "x86_64"
|
||||||
|
fi
|
||||||
|
;;
|
||||||
aarch64|arm64) echo "aarch64" ;;
|
aarch64|arm64) echo "aarch64" ;;
|
||||||
*) die "Unsupported architecture: $sys_arch" ;;
|
*) die "Unsupported architecture: $sys_arch" ;;
|
||||||
esac
|
esac
|
||||||
@@ -500,7 +514,21 @@ case "$ACTION" in
|
|||||||
die "Temp directory is invalid or was not created"
|
die "Temp directory is invalid or was not created"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
fetch_file "$DL_URL" "${TEMP_DIR}/${FILE_NAME}" || die "Download failed"
|
if ! fetch_file "$DL_URL" "${TEMP_DIR}/${FILE_NAME}"; then
|
||||||
|
if [ "$ARCH" = "x86_64-v3" ]; then
|
||||||
|
say " -> x86_64-v3 build not found, falling back to standard x86_64..."
|
||||||
|
ARCH="x86_64"
|
||||||
|
FILE_NAME="${BIN_NAME}-${ARCH}-linux-${LIBC}.tar.gz"
|
||||||
|
if [ "$TARGET_VERSION" = "latest" ]; then
|
||||||
|
DL_URL="https://github.com/${REPO}/releases/latest/download/${FILE_NAME}"
|
||||||
|
else
|
||||||
|
DL_URL="https://github.com/${REPO}/releases/download/${TARGET_VERSION}/${FILE_NAME}"
|
||||||
|
fi
|
||||||
|
fetch_file "$DL_URL" "${TEMP_DIR}/${FILE_NAME}" || die "Download failed"
|
||||||
|
else
|
||||||
|
die "Download failed"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
say ">>> Stage 3: Extracting archive"
|
say ">>> Stage 3: Extracting archive"
|
||||||
if ! gzip -dc "${TEMP_DIR}/${FILE_NAME}" | tar -xf - -C "$TEMP_DIR" 2>/dev/null; then
|
if ! gzip -dc "${TEMP_DIR}/${FILE_NAME}" | tar -xf - -C "$TEMP_DIR" 2>/dev/null; then
|
||||||
|
|||||||
Reference in New Issue
Block a user