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 !
Fraud Multiplication Table Detection in python

Fraud-Multiplication-Table-Detection-in-python In this program, I have detected fraud multiplication table using python without class. Here, I have co

Sachin Vinayak Dabhade 4 Sep 24, 2021
This utility synchronises spelling dictionaries from various tools with each other.

This utility synchronises spelling dictionaries from various tools with each other. This way the words that have been trained on MS Office are also correctly checked in vim or Firefox. And vice versa

Patrice Neff 2 Feb 11, 2022
Simple code to generate a password for your account!

Password-Generator Simple code to generate a password for your account! Password Generator for passwords for your accounts or anything else! This code

DEEM 1 Jun 05, 2022
Entropy-controlled contexts in Python

Python module ordered ordered module is the opposite to random - it maintains order in the program. import random x = 5 def increase(): global x

HyperC 36 Nov 03, 2022
ZX Spectrum Utilities: (zx-spectrum-utils)

Here are a few utility programs that can be used with the zx spectrum. The ZX Spectrum is one of the first home computers from the early 1980s.

Graham Oakes 4 Mar 07, 2022
Cleaning-utils - a collection of small Python functions and classes which make cleaning pipelines shorter and easier

cleaning-utils [] [] [] cleaning-utils is a collection of small Python functions

4 Aug 31, 2022
Let's renew the puzzle collection. We'll produce a collection of new puzzles out of the lichess game database.

Let's renew the puzzle collection. We'll produce a collection of new puzzles out of the lichess game database.

Thibault Duplessis 96 Jan 03, 2023
Set of scripts for some automation during Magic Lantern development

~kitor Magic Lantern scripts A few automation scripts I wrote to automate some things in my ML development efforts. Used only on Debian running over W

Kajetan Krykwiński 1 Jan 03, 2022
Easy compression and extraction for any compression or archival format.

Tzar: Tar, Zip, Anything Really Easy compression and extraction for any compression or archival format. Usage/Examples tzar compress large-dir compres

DanielVZ 37 Nov 02, 2022
About Library for extract infomation from thai personal identity card.

ThaiPersonalCardExtract Library for extract infomation from thai personal identity card. imprement from easyocr and tesseract New Feature v1.3.2 🎁 In

ggafiled 26 Nov 15, 2022
This tool analyzes the json files generated by stream-lnd-htlcs to find hidden channel demand.

analyze_lnd_htlc Introduction Rebalancing channels is an important part of running a Lightning Network node. While it would be great if all channels c

Marimox 4 Dec 08, 2022
Gradually automate your procedures, one step at a time

Gradualist Gradually automate your procedures, one step at a time Inspired by https://blog.danslimmon.com/2019/07/15/ Features Main Features Converts

Ross Jacobs 8 Jul 24, 2022
Python based utilities for interacting with digital multimeters that are built on the FS9721-LP3 chipset.

Python based utilities for interacting with digital multimeters that are built on the FS9721-LP3 chipset.

Fergus 1 Feb 02, 2022
Python code to divide big numbers

divide-big-num Python code to divide big numbers

VuMinhNgoc 1 Oct 15, 2021
Attempts to crack the compression puzzle.

The Compression Puzzle One lovely Friday we were faced with this nice yet intriguing programming puzzle. One shall write a program that compresses str

Oto Brglez 14 Dec 29, 2022
A simple package for handling variables in string.

A simple package for handling string variables. Welcome! This is a simple package for handling variables in string, You can add or remove variables wi

1 Dec 31, 2021
Blender 2.93 addon for loading Quake II MD2 files

io_mesh_md2 is a Blender 2.93 addon for importing Quake II MD2 files.

Joshua Skelton 11 Aug 31, 2022
Run async workflows using pytest-fixtures-style dependency injection

Run async workflows using pytest-fixtures-style dependency injection

Simon Willison 26 Jun 26, 2022
A python program to find binary, octal and hexadecimal of a decimal.

decimal-converter This little python program can convert a decimal in to, Binary Octal Hexadecimal Needed Python 3 or later or a online python compile

Chandula Janith 0 Nov 27, 2021
Random Number Generator Analysis With Python

Random-Number-Generator-Analysis Governor's Honors Program Project to determine

Jack Prewitt 2 Jan 23, 2022