Skip to content
A private covert channels over the Telegram
Branch: master
Clone or download
LabunskyA Update
Different 'license' spelling fix
Latest commit a82ed92 May 18, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
LICENSE Initial commit May 15, 2019 Update May 18, 2019 comparison fix May 17, 2019 Initial commit May 15, 2019

CoverTele - A private covert channel over the Telegram

Tool and library to provide a simple way to exchange private text messages through the blocking-based covert channels between users written in Python.


  • Clone this repo: git clone
  • Acquire Telegram api_id and api_hash following this manual.
  • Edit set api_id and api_hash in the file header to your values.
  • Done


Python 3 is required to run covertele. You will also need Telethon to be installed as it is used to call Telegram API methods. You can install it with pip: pip install telethon


If nothing is happening on connection (no output), try setting proxy in file.

Command-line tool

python3 [-s/-r] [your username] [other username] [message]

Example to get message as user @mark from @tommy you can call:

python3 -r mark tommy

And to send message "OH, HI MARK!..." from @tommy to @mark do this after mark has started listening:

python3 -s tommy mark oh, hi mark!..


Here is a basic usage example:

from covertele import TelegramBlockingAPI
from cochannel import CovertChannel

# To channel to use telegram you will need to create a suitable interface
# By default standard IO will be used to authorize you, 
# but you can do it automatically if you want to (see the source code)
id = input("Enter your id")
api = TelegramBlockingAPI(id)

# Now you can create channel object
friend = input("Enter your friend's id:")
channel = CovertChannel(api, friend)

# You can use channel.receive() and channel.send() to transmit data between the users
channel.send("Bork, bork!")

# If you want to send and receive raw codes, you can call functions with '_raw' suffix
codes = channel.receive_raw()
for code in codes:
channel.send_raw([19, 24, 24, 13])


Simplified BSD, see LICENSE file.

You can’t perform that action at this time.