Python module and its web equivalent, to hide text within text by manipulating bits

Overview

cacherdutexte.github.io

This project contains :

  • Python modules (binary and decimal system 6) with a dedicated tkinter program to use it.
  • A web version, which is actually hosted on https://cacherdutexte.github.io.

I explain below how the project works, but an english version is available. See directly the English explanation 🇬🇧

🇫🇷 Comment j'ai caché du texte dans du texte

C'est une façon en manipulant les bits de cacher du texte dans du texte. Imaginons la chaine de caractère :

Hacker

Que je veux cacher dans le message :

Bonjour, je suis Axel Thauvin
  • Dans un premier temps, on vient rĂ©cupĂ©rer la reprĂ©sentation dĂ©cimale dans la table UTF-8 de chaque caractère de la chaine Hacker

    Voici dans un tableau, la représentation décimale des 127 premiers caractères (aussi appelé tableau ASCII) :

Pour l'exemple, nous allons prendre le caractère H. Ici, sa représentation décimale est 72 (base 10).

  • Ensuite nous allons convertir ce nombre en base 6 sur 4 'bits'

    Pourquoi ?

    Si nous codons les lettres en base 6 sur 4 bits, nous aurons la représentation maximale de 5555 -> soit 64 -> 1296 : la valeur maximale que nous allons pouvoir exploiter dans ce tableau

    En fait nous avons 5 caractères invisibles qui vont correspondrent aux chiffres de ces bits, que nous allons cacher dans notre texte.

    • Pour le 0 il n'y a pas de caractère cachĂ©
    • Pour le 1 c'est le caractère unicode \u200C
    • Pour le 2 c'est le caractère unicode \u200D
    • Pour le 3 c'est le caractère unicode \u200E
    • Pour le 4 c'est le caractère unicode \u200F
    • Pour le 5 c'est le caractère unicode \u034F

    Exemple avec le H

    Ici la représentation décimale de H est 72. Sa représentation en base 6 sur 4 bits est 0200.

    Je vais donc :

    • Pas ajouter de caractère pour le 1er bit (car il vaut 0)
    • Ajouter le caractère \u200D pour le 2ème bit (car il vaut 2)
    • Pas ajouter de caractère pour le 3ème bit (car il vaut 0)
    • Pas ajouter de caractère pour le 4ème bit (car il vaut 0)

    Reprenons la chaine initiale J'ai Bonjour, je suis Axel Thauvin. Je vais donc écrire : Bo\u200Dnj juste pour le H

    Et je fais pareil avec tous les caractères de Hacker. Ce qui me donne : Bo‍njou‍r‏,‌ j‍e‏ ‎su‍i͏s͏ A‍x‏e͏l ‎T‌hauvin (généré avec mon programme, vous pouvez l'essayer sur mon site)

    Voilà le résultat :

🇬🇧 How did I hid text in text

This is a bitwise way of hiding text within text. Let's imagine the string :

Hacker

That I want to hide in the message:

Hello, I am Axel Thauvin
  • First, we get the decimal representation in the UTF-8 table of each character in the Hacker string

    Here is the decimal representation of the first 127 characters in an array (also called ASCII array):

For the example, we will take the character H. Here, its decimal representation is 72 (base 10).

  • Then we will convert this number to base 6 on 4 'bits'

    Why ?

    If we encode the letters in base 6 on 4 bits, we will have the maximum representation of 5555 -> that is 64 -> 1296 : which is the maximum value we can use in this table

    In fact we have 5 invisible characters which will correspond to the digits of these bits, which we will hide in our text.

    • For the 0 there is no hidden character*.
    • For 1 it is the unicode character \u200C*
    • For 2 it is the unicode character \u200D*
    • For 3 it is the unicode character \u200E
    • For 4 it is the unicode character \u200F
    • For 5 it is the unicode character \u034F

    Example with H

    Here the decimal representation of H is 72. Its 4-bit base-6 representation is 0200.

    I will therefore :

    • Not add a character for the 1st bit (because it is 0)
    • Add the character \u200D for the 2nd bit (because it is 2)
    • Not add a character for the 3rd bit (because it is 0)
    • Do not add a character for the 4th bit (because it is 0)

    Let's go back to the original string. I have Hello, I am Axel Thauvin. So I'll write : I'll write He\u200Dll just for the H

    And I do the same with all the characters in Hacker. Which gives me: He‍‍llo‍,‏‍‌ ‏‍I‏‌‎ a‍‍͏m͏‏ ‍‎‏A͏x‍‎e‌͏l͏ T‍h‏a͏uv‎i‌n (generated with my program, you can try it on my website)

    Here is the result:

Owner
Cheers, love! The cavalry's here !
A python module to manipulate XCode projects

This module can read, modify, and write a .pbxproj file from an Xcode 4+ projects. The file is usually called project.pbxproj and can be found inside the .xcodeproj bundle. Because some task cannot b

Ignacio Calderon 1.1k Jan 02, 2023
A Container for the Dependency Injection in Python.

Python Dependency Injection library aiodi is a Container for the Dependency Injection in Python. Installation Use the package manager pip to install a

Denis NA 3 Nov 25, 2022
Helper script to bootstrap a Python environment with the tools required to build and install packages.

python-bootstrap Helper script to bootstrap a Python environment with the tools required to build and install packages. Usage $ python -m bootstrap.bu

Filipe LaĂ­ns 7 Oct 06, 2022
Simplex using Jordan exchanges taught in 236A

Simplex for 236A Python script to solve LP using simplex by Jordan exchanges taught in 236A. You will need python installed along with the 'numpy' and

Kunal Kishore 1 Nov 30, 2021
ULID implementation for Python

What is this? This is a port of the original JavaScript ULID implementation to Python. A ULID is a universally unique lexicographically sortable ident

Martin Domke 158 Jan 04, 2023
NFT-Generator is the best way to generate thousands of NFTs quick and easily with Python.

NFT-Generator is the best way to generate thousands of NFTs quick and easily with Python. Just add your files, set your configuration and run the scri

78 Dec 27, 2022
isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections and by type.

isort is a Python utility / library to sort imports alphabetically, and automatically separated into sections and by type. It provides a command line utility, Python library and plugins for various e

Python Code Quality Authority 5.5k Jan 08, 2023
A simple tool to extract python code from a Jupyter notebook, and then run pylint on it for static analysis.

Jupyter Pylinter A simple tool to extract python code from a Jupyter notebook, and then run pylint on it for static analysis. If you find this tool us

Edmund Goodman 10 Oct 13, 2022
đźš§Useful shortcuts for simple task on windows

Windows Manager A tool containg useful utilities for performing simple shortcut tasks on Windows 10 OS. Features Lit Up - Turns up screen brightness t

Olawale Oyeyipo 0 Mar 24, 2022
A python app which aggregates and splits costs from multiple public cloud providers into a csv

Cloud Billing This project aggregates the costs public cloud resources by accounts, services and tags by importing the invoices from public cloud prov

1 Oct 04, 2022
A python module to update the console without flashing.

A python module to update the console without flashing.

Matthias 112 Dec 19, 2022
Find version automatically based on git tags and commit messages.

GIT-CONVENTIONAL-VERSION Find version automatically based on git tags and commit messages. The tool is very specific in its function, so it is very fl

0 Nov 07, 2021
python package for generating typescript grpc-web stubs from protobuf files.

grpc-web-proto-compile NOTE: This package has been superseded by romnn/proto-compile, which provides the same functionality but offers a lot more flex

Roman Dahm 0 Sep 05, 2021
iOS Snapchat parser for chats and cached files

ParseSnapchat iOS Snapchat parser for chats and cached files Tested on Windows and Linux install required libraries: pip install -r requirements.txt c

11 Dec 05, 2022
An online streamlit development platform

streamlit-playground An online streamlit development platform Run, Experiment and Play with streamlit Components Develop full-fledged apps online All

Akshansh Kumar 3 Nov 06, 2021
This code renames subtitle file names to your video files names, so you don't need to rename them manually.

Rename Subtitle This code renames your subtitle file names to your video file names so you don't need to do it manually Note: It only works for series

Mostafa Kazemi 4 Sep 12, 2021
osqueryIR is an artifact collection tool for Linux systems.

osqueryIR osqueryIR is an artifact collection tool for Linux systems. It provides the following capabilities: Execute osquery SQL queries Collect file

AbdulRhman Alfaifi 7 Nov 02, 2022
Pyfunctools is a module that provides functions, methods and classes that help in the creation of projects in python

Pyfunctools Pyfunctools is a module that provides functions, methods and classes that help in the creation of projects in python, bringing functional

Natanael dos Santos Feitosa 5 Dec 22, 2022
A simple API that will return a key-value pair of randomly generated UUID

A simple API that will return a key-value pair of randomly generated UUID. Key will be a timestamp and value will be UUID. While the server is running, whenever the API is called, it should return al

Pius Lucky 2 Jan 18, 2022
Package that allows for validate and sanitize of string values.

py.validator A library of string validators and sanitizers Insipired by validator.js Strings only This library validates and sanitizes strings only. P

Sanel Hadzini 22 Nov 08, 2022