From eeb3b772566a5ae958e5372db0ffb3c9d6af6cd4 Mon Sep 17 00:00:00 2001
From: Coco_Ardo <105318683+RealCocoArdo@users.noreply.github.com>
Date: Thu, 4 May 2023 12:21:17 +0200
Subject: [PATCH] Initial Commit
---
.gitignore | 2 +
LICENSE | 21 +
Libraries/EntropyGuide.md | 55 +
Libraries/install-libraries-linux.sh | 6 +
Libraries/install-libraries-windows.bat | 5 +
README.md | 43 +
Wallets/Example Wallet.txt | 33 +
main.py | 2151 +++++++++++++++++++++++
pictures/Banner.PNG | Bin 0 -> 47965 bytes
pictures/Chessboard.PNG | Bin 0 -> 87824 bytes
pictures/Favicon.ico | Bin 0 -> 102518 bytes
pictures/Logo.PNG | Bin 0 -> 112906 bytes
start-on-linux.sh | 1 +
start-on-windows.bat | 1 +
14 files changed, 2318 insertions(+)
create mode 100644 .gitignore
create mode 100644 LICENSE
create mode 100644 Libraries/EntropyGuide.md
create mode 100644 Libraries/install-libraries-linux.sh
create mode 100644 Libraries/install-libraries-windows.bat
create mode 100644 README.md
create mode 100644 Wallets/Example Wallet.txt
create mode 100644 main.py
create mode 100644 pictures/Banner.PNG
create mode 100644 pictures/Chessboard.PNG
create mode 100644 pictures/Favicon.ico
create mode 100644 pictures/Logo.PNG
create mode 100644 start-on-linux.sh
create mode 100644 start-on-windows.bat
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..8bdebdc
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,2 @@
+
+Libraries/get-pip.py
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..47a8c1b
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2023 Coco_Ardo
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/Libraries/EntropyGuide.md b/Libraries/EntropyGuide.md
new file mode 100644
index 0000000..c56b7e3
--- /dev/null
+++ b/Libraries/EntropyGuide.md
@@ -0,0 +1,55 @@
+## Notation of the diffrent states
+
+see more
+
+- E = Empty
+- bK = black king
+- wK = white king
+- bQ = black queen
+- wQ = white queen
+- bP = black pawn
+- wP = white pawn
+- bR = black rook
+- wR = white rook
+- bN = black knight
+- wN = white knight
+- bB = black bishop
+- wB = white bishop
+
+
+## Example
+
+
+This is how the standard setup of a chess game would translate:
+
+Line 8: | bR | bN | bB | bQ | bK | bB | bK | bR |
+--------|----|----|----|----|----|----|----|----|
+Line 7: | bP | bP | bP | bP | bP | bP | bP | bP |
+Line 6: | E | E | E | E | E | E | E | E |
+Line 5: | E | E | E | E | E | E | E | E |
+Line 4: | E | E | E | E | E | E | E | E |
+Line 3: | E | E | E | E | E | E | E | E |
+Line 2: | wP | wP | wP | wP | wP | wP | wP | wP |
+Line 1: | wR | wN | wB | wQ | wK | wB | wK | wR |
+
+Turning that into a single string the result would look like this:
+
+`8.bR,bN,bB,bQ,bK,bB,bN,bR,7.bP,bP,bP,bP,bP,bP,bP,bP,6.E,E,E,E,E,E,E,E,5.E,E,E,E,E,E,E,E,4.E,E,E,E,E,E,E,E,3.E,E,E,E,E,E,E,E,2.wP,wP,wP,wP,wP,wP,wP,wP,1.wR,wN,wB,wQ,wK,wB,wN,wR`
+
+
+- There are no free spaces inbetween, just a comma ,
+- After every line-number is a dot .
+
+This string is your chessboard setup.
+
+## Advices
+
+see more
+
+1. Extenting your chessboard setup with custom text/numbers(anything) is highly recommended to increase your entropy.
+ - To provide some instructions, which make it less unlikley you mess up a recovery, please enter your extention as follows:
+ - YourBoard+YourExtention
+ - Use the `+` for inbetween and don't have any empty space in your extention.
+2. Don't use the default chessboard setup or common chess-openings as your entropy. Its very likley they get brute forced.
+3. You are not limited to the rules of chess. Have 20 Kings on the board. Or style your board in any way you like it to.
+
diff --git a/Libraries/install-libraries-linux.sh b/Libraries/install-libraries-linux.sh
new file mode 100644
index 0000000..d095665
--- /dev/null
+++ b/Libraries/install-libraries-linux.sh
@@ -0,0 +1,6 @@
+sudo apt install curl
+curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
+python get-pip.py
+pip install bitcoin
+pip install pillow
+pip freeze
\ No newline at end of file
diff --git a/Libraries/install-libraries-windows.bat b/Libraries/install-libraries-windows.bat
new file mode 100644
index 0000000..a567a37
--- /dev/null
+++ b/Libraries/install-libraries-windows.bat
@@ -0,0 +1,5 @@
+curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
+python get-pip.py
+pip install bitcoin
+pip install pillow
+pip freeze
\ No newline at end of file
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a81e166
--- /dev/null
+++ b/README.md
@@ -0,0 +1,43 @@
+# Chess Wallet
+
+


+A brain wallet that is rememberable.
+
+Instead of remembering 24 words in a right order you have instead to remember the setup of a chessboard.
+This setup will be the entropy to your 24 words/ to your bitcoins.
+
+## Quality of entropy
+A chessboard has 8 by 8 squares. Which equals 64 squares in totall.
+There are 13 diffrent states(pieces being on them) one square can be in, including empty.
+So there are 64^13 possible combinations.
+
+This [entropy guide](Libraries/EntropyGuide.md) instructs you on what to input.
However the Chess-Wallet can be used to input any entropy.
+
+## Disclaimer!
+
+see more
+
+- This was only designed for Bitcoin. No other shitcoin.
+- I take no responsibility of my code. If you lose your Bitcoins its your fault.
+- You can review the code yourself before using it.
+
+
+## Requirements
+
+see more
+
+1. Install the latest version of Python3 [here](https://python.org/downloads/).
+ - Check add to PATH in the installation
+2. [Download](https://github.com/RealCocoArdo/Chess-Wallet/archive/refs/heads/main.zip) this repository and unzip it. Or clone it.
+
+
+
+## Start the program
+
+see more
+
+1. Navigate to the Chess-Wallet folder and open it
+2. Open in the folder Libraries the `install-libraries-windows` or bash the `install-libraries-linux` file to dowload the libraries. You only need to do this once.
+3. Disconnect your Wifi
+4. Open the `start-on-windows` or bash the `start-on-linux` file to start the program.
+
diff --git a/Wallets/Example Wallet.txt b/Wallets/Example Wallet.txt
new file mode 100644
index 0000000..d41e796
--- /dev/null
+++ b/Wallets/Example Wallet.txt
@@ -0,0 +1,33 @@
+Chess-Wallet - Bitcoin Wallet Backup
+
+
+Your chessboard setup/ your entropy was:
+
+8.bR,bN,bB,bQ,bK,bB,bN,bR,7.bP,bP,bP,bP,bP,bP,bP,bP,6.E,E,E,E,E,E,E,E,5.E,E,E,E,E,E,E,E,4.E,E,E,E,E,E,E,E,3.E,E,E,E,E,E,E,E,2.wP,wP,wP,wP,wP,wP,wP,wP,1.wR,wN,wB,wQ,wK,wB,wN,wR
+
+Your nnemonic words are:
+
+price
+crystal
+motor
+amazing
+subway
+leader
+involve
+crumble
+typical
+apple
+jelly
+captain
+decrease
+gentle
+fan
+rose
+thrive
+add
+exclude
+adjust
+divide
+similar
+loud
+harvest
diff --git a/main.py b/main.py
new file mode 100644
index 0000000..a4c1304
--- /dev/null
+++ b/main.py
@@ -0,0 +1,2151 @@
+from tkinter import *
+from PIL import ImageTk,Image
+import bitcoin
+from hashlib import sha256
+import binascii
+
+# Create application window
+root = Tk()
+root.title('Chess Wallet v.0.1')
+root.geometry("665x600")
+root.resizable(False, False)
+mybackword = 'yellow'
+myback = 'lightgrey'
+root.configure(background=myback)
+root.iconbitmap('./pictures/Favicon.ico')
+
+# Add content
+mybanner = ImageTk.PhotoImage(Image.open('./pictures/Banner.PNG'))
+bannerlabel = Label(image=mybanner)
+bannerlabel.grid(row=0, column=0, columnspan=3)
+
+myLabel = Label(root, bg=myback, text='Enter your Chessboard setup:')
+myLabel.grid(row=1, column=1, sticky='w')
+
+placholder = Label(root, bg=myback)
+placholder.grid(row=1, column=0)
+
+# Input board
+myEntropy = Entry(root, width=60)
+myEntropy.grid(row=2, column=1, sticky='w')
+# myEntropy.insert(0, 'YourSetup+YourExtention')
+
+# Submit board
+def main_func():
+
+ # Get a entropy of the user & get a sha256 of it
+ chessboard = myEntropy.get()
+ private_key = bitcoin.sha256(chessboard)
+
+ # Turn the private-key into binary format
+ hex_dict = {'0': '0000', '1': '0001', '2': '0010', '3': '0011', '4': '0100', '5': '0101', '6': '0110', '7': '0111', '8': '1000', '9': '1001', 'a': '1010', 'b': '1011', 'c': '1100', 'd': '1101', 'e': '1110', 'f': '1111'}
+ binaryseed = ''
+ for digit in private_key:
+ binaryseed += hex_dict[digit]
+
+ # Get checksum of the binary to be able to get the 24th word
+ hexstr = "{0:0>4X}".format(int(binaryseed,2)).zfill(int(len(binaryseed)/4))
+ data = binascii.a2b_hex(hexstr)
+ addedcheck = sha256(data).hexdigest()
+ checksum_short = addedcheck[:2]
+
+ # Turn checksum from hex to binary
+ checksum_short_binary = ''
+ for digit in checksum_short:
+ checksum_short_binary += hex_dict[digit]
+
+ # Add binary checksum to binary seed
+ seed_with_checksum = binaryseed + checksum_short_binary
+
+ # Turn the 11 digit long decimals, which are 1 long string rn, into decimal format
+ decimal_list = [int(seed_with_checksum[i:i+11], 2) for i in range(0,len(seed_with_checksum),11)]
+
+ bip39wordlist = [
+ "abandon",
+ "ability",
+ "able",
+ "about",
+ "above",
+ "absent",
+ "absorb",
+ "abstract",
+ "absurd",
+ "abuse",
+ "access",
+ "accident",
+ "account",
+ "accuse",
+ "achieve",
+ "acid",
+ "acoustic",
+ "acquire",
+ "across",
+ "act",
+ "action",
+ "actor",
+ "actress",
+ "actual",
+ "adapt",
+ "add",
+ "addict",
+ "address",
+ "adjust",
+ "admit",
+ "adult",
+ "advance",
+ "advice",
+ "aerobic",
+ "affair",
+ "afford",
+ "afraid",
+ "again",
+ "age",
+ "agent",
+ "agree",
+ "ahead",
+ "aim",
+ "air",
+ "airport",
+ "aisle",
+ "alarm",
+ "album",
+ "alcohol",
+ "alert",
+ "alien",
+ "all",
+ "alley",
+ "allow",
+ "almost",
+ "alone",
+ "alpha",
+ "already",
+ "also",
+ "alter",
+ "always",
+ "amateur",
+ "amazing",
+ "among",
+ "amount",
+ "amused",
+ "analyst",
+ "anchor",
+ "ancient",
+ "anger",
+ "angle",
+ "angry",
+ "animal",
+ "ankle",
+ "announce",
+ "annual",
+ "another",
+ "answer",
+ "antenna",
+ "antique",
+ "anxiety",
+ "any",
+ "apart",
+ "apology",
+ "appear",
+ "apple",
+ "approve",
+ "april",
+ "arch",
+ "arctic",
+ "area",
+ "arena",
+ "argue",
+ "arm",
+ "armed",
+ "armor",
+ "army",
+ "around",
+ "arrange",
+ "arrest",
+ "arrive",
+ "arrow",
+ "art",
+ "artefact",
+ "artist",
+ "artwork",
+ "ask",
+ "aspect",
+ "assault",
+ "asset",
+ "assist",
+ "assume",
+ "asthma",
+ "athlete",
+ "atom",
+ "attack",
+ "attend",
+ "attitude",
+ "attract",
+ "auction",
+ "audit",
+ "august",
+ "aunt",
+ "author",
+ "auto",
+ "autumn",
+ "average",
+ "avocado",
+ "avoid",
+ "awake",
+ "aware",
+ "away",
+ "awesome",
+ "awful",
+ "awkward",
+ "axis",
+ "baby",
+ "bachelor",
+ "bacon",
+ "badge",
+ "bag",
+ "balance",
+ "balcony",
+ "ball",
+ "bamboo",
+ "banana",
+ "banner",
+ "bar",
+ "barely",
+ "bargain",
+ "barrel",
+ "base",
+ "basic",
+ "basket",
+ "battle",
+ "beach",
+ "bean",
+ "beauty",
+ "because",
+ "become",
+ "beef",
+ "before",
+ "begin",
+ "behave",
+ "behind",
+ "believe",
+ "below",
+ "belt",
+ "bench",
+ "benefit",
+ "best",
+ "betray",
+ "better",
+ "between",
+ "beyond",
+ "bicycle",
+ "bid",
+ "bike",
+ "bind",
+ "biology",
+ "bird",
+ "birth",
+ "bitter",
+ "black",
+ "blade",
+ "blame",
+ "blanket",
+ "blast",
+ "bleak",
+ "bless",
+ "blind",
+ "blood",
+ "blossom",
+ "blouse",
+ "blue",
+ "blur",
+ "blush",
+ "board",
+ "boat",
+ "body",
+ "boil",
+ "bomb",
+ "bone",
+ "bonus",
+ "book",
+ "boost",
+ "border",
+ "boring",
+ "borrow",
+ "boss",
+ "bottom",
+ "bounce",
+ "box",
+ "boy",
+ "bracket",
+ "brain",
+ "brand",
+ "brass",
+ "brave",
+ "bread",
+ "breeze",
+ "brick",
+ "bridge",
+ "brief",
+ "bright",
+ "bring",
+ "brisk",
+ "broccoli",
+ "broken",
+ "bronze",
+ "broom",
+ "brother",
+ "brown",
+ "brush",
+ "bubble",
+ "buddy",
+ "budget",
+ "buffalo",
+ "build",
+ "bulb",
+ "bulk",
+ "bullet",
+ "bundle",
+ "bunker",
+ "burden",
+ "burger",
+ "burst",
+ "bus",
+ "business",
+ "busy",
+ "butter",
+ "buyer",
+ "buzz",
+ "cabbage",
+ "cabin",
+ "cable",
+ "cactus",
+ "cage",
+ "cake",
+ "call",
+ "calm",
+ "camera",
+ "camp",
+ "can",
+ "canal",
+ "cancel",
+ "candy",
+ "cannon",
+ "canoe",
+ "canvas",
+ "canyon",
+ "capable",
+ "capital",
+ "captain",
+ "car",
+ "carbon",
+ "card",
+ "cargo",
+ "carpet",
+ "carry",
+ "cart",
+ "case",
+ "cash",
+ "casino",
+ "castle",
+ "casual",
+ "cat",
+ "catalog",
+ "catch",
+ "category",
+ "cattle",
+ "caught",
+ "cause",
+ "caution",
+ "cave",
+ "ceiling",
+ "celery",
+ "cement",
+ "census",
+ "century",
+ "cereal",
+ "certain",
+ "chair",
+ "chalk",
+ "champion",
+ "change",
+ "chaos",
+ "chapter",
+ "charge",
+ "chase",
+ "chat",
+ "cheap",
+ "check",
+ "cheese",
+ "chef",
+ "cherry",
+ "chest",
+ "chicken",
+ "chief",
+ "child",
+ "chimney",
+ "choice",
+ "choose",
+ "chronic",
+ "chuckle",
+ "chunk",
+ "churn",
+ "cigar",
+ "cinnamon",
+ "circle",
+ "citizen",
+ "city",
+ "civil",
+ "claim",
+ "clap",
+ "clarify",
+ "claw",
+ "clay",
+ "clean",
+ "clerk",
+ "clever",
+ "click",
+ "client",
+ "cliff",
+ "climb",
+ "clinic",
+ "clip",
+ "clock",
+ "clog",
+ "close",
+ "cloth",
+ "cloud",
+ "clown",
+ "club",
+ "clump",
+ "cluster",
+ "clutch",
+ "coach",
+ "coast",
+ "coconut",
+ "code",
+ "coffee",
+ "coil",
+ "coin",
+ "collect",
+ "color",
+ "column",
+ "combine",
+ "come",
+ "comfort",
+ "comic",
+ "common",
+ "company",
+ "concert",
+ "conduct",
+ "confirm",
+ "congress",
+ "connect",
+ "consider",
+ "control",
+ "convince",
+ "cook",
+ "cool",
+ "copper",
+ "copy",
+ "coral",
+ "core",
+ "corn",
+ "correct",
+ "cost",
+ "cotton",
+ "couch",
+ "country",
+ "couple",
+ "course",
+ "cousin",
+ "cover",
+ "coyote",
+ "crack",
+ "cradle",
+ "craft",
+ "cram",
+ "crane",
+ "crash",
+ "crater",
+ "crawl",
+ "crazy",
+ "cream",
+ "credit",
+ "creek",
+ "crew",
+ "cricket",
+ "crime",
+ "crisp",
+ "critic",
+ "crop",
+ "cross",
+ "crouch",
+ "crowd",
+ "crucial",
+ "cruel",
+ "cruise",
+ "crumble",
+ "crunch",
+ "crush",
+ "cry",
+ "crystal",
+ "cube",
+ "culture",
+ "cup",
+ "cupboard",
+ "curious",
+ "current",
+ "curtain",
+ "curve",
+ "cushion",
+ "custom",
+ "cute",
+ "cycle",
+ "dad",
+ "damage",
+ "damp",
+ "dance",
+ "danger",
+ "daring",
+ "dash",
+ "daughter",
+ "dawn",
+ "day",
+ "deal",
+ "debate",
+ "debris",
+ "decade",
+ "december",
+ "decide",
+ "decline",
+ "decorate",
+ "decrease",
+ "deer",
+ "defense",
+ "define",
+ "defy",
+ "degree",
+ "delay",
+ "deliver",
+ "demand",
+ "demise",
+ "denial",
+ "dentist",
+ "deny",
+ "depart",
+ "depend",
+ "deposit",
+ "depth",
+ "deputy",
+ "derive",
+ "describe",
+ "desert",
+ "design",
+ "desk",
+ "despair",
+ "destroy",
+ "detail",
+ "detect",
+ "develop",
+ "device",
+ "devote",
+ "diagram",
+ "dial",
+ "diamond",
+ "diary",
+ "dice",
+ "diesel",
+ "diet",
+ "differ",
+ "digital",
+ "dignity",
+ "dilemma",
+ "dinner",
+ "dinosaur",
+ "direct",
+ "dirt",
+ "disagree",
+ "discover",
+ "disease",
+ "dish",
+ "dismiss",
+ "disorder",
+ "display",
+ "distance",
+ "divert",
+ "divide",
+ "divorce",
+ "dizzy",
+ "doctor",
+ "document",
+ "dog",
+ "doll",
+ "dolphin",
+ "domain",
+ "donate",
+ "donkey",
+ "donor",
+ "door",
+ "dose",
+ "double",
+ "dove",
+ "draft",
+ "dragon",
+ "drama",
+ "drastic",
+ "draw",
+ "dream",
+ "dress",
+ "drift",
+ "drill",
+ "drink",
+ "drip",
+ "drive",
+ "drop",
+ "drum",
+ "dry",
+ "duck",
+ "dumb",
+ "dune",
+ "during",
+ "dust",
+ "dutch",
+ "duty",
+ "dwarf",
+ "dynamic",
+ "eager",
+ "eagle",
+ "early",
+ "earn",
+ "earth",
+ "easily",
+ "east",
+ "easy",
+ "echo",
+ "ecology",
+ "economy",
+ "edge",
+ "edit",
+ "educate",
+ "effort",
+ "egg",
+ "eight",
+ "either",
+ "elbow",
+ "elder",
+ "electric",
+ "elegant",
+ "element",
+ "elephant",
+ "elevator",
+ "elite",
+ "else",
+ "embark",
+ "embody",
+ "embrace",
+ "emerge",
+ "emotion",
+ "employ",
+ "empower",
+ "empty",
+ "enable",
+ "enact",
+ "end",
+ "endless",
+ "endorse",
+ "enemy",
+ "energy",
+ "enforce",
+ "engage",
+ "engine",
+ "enhance",
+ "enjoy",
+ "enlist",
+ "enough",
+ "enrich",
+ "enroll",
+ "ensure",
+ "enter",
+ "entire",
+ "entry",
+ "envelope",
+ "episode",
+ "equal",
+ "equip",
+ "era",
+ "erase",
+ "erode",
+ "erosion",
+ "error",
+ "erupt",
+ "escape",
+ "essay",
+ "essence",
+ "estate",
+ "eternal",
+ "ethics",
+ "evidence",
+ "evil",
+ "evoke",
+ "evolve",
+ "exact",
+ "example",
+ "excess",
+ "exchange",
+ "excite",
+ "exclude",
+ "excuse",
+ "execute",
+ "exercise",
+ "exhaust",
+ "exhibit",
+ "exile",
+ "exist",
+ "exit",
+ "exotic",
+ "expand",
+ "expect",
+ "expire",
+ "explain",
+ "expose",
+ "express",
+ "extend",
+ "extra",
+ "eye",
+ "eyebrow",
+ "fabric",
+ "face",
+ "faculty",
+ "fade",
+ "faint",
+ "faith",
+ "fall",
+ "false",
+ "fame",
+ "family",
+ "famous",
+ "fan",
+ "fancy",
+ "fantasy",
+ "farm",
+ "fashion",
+ "fat",
+ "fatal",
+ "father",
+ "fatigue",
+ "fault",
+ "favorite",
+ "feature",
+ "february",
+ "federal",
+ "fee",
+ "feed",
+ "feel",
+ "female",
+ "fence",
+ "festival",
+ "fetch",
+ "fever",
+ "few",
+ "fiber",
+ "fiction",
+ "field",
+ "figure",
+ "file",
+ "film",
+ "filter",
+ "final",
+ "find",
+ "fine",
+ "finger",
+ "finish",
+ "fire",
+ "firm",
+ "first",
+ "fiscal",
+ "fish",
+ "fit",
+ "fitness",
+ "fix",
+ "flag",
+ "flame",
+ "flash",
+ "flat",
+ "flavor",
+ "flee",
+ "flight",
+ "flip",
+ "float",
+ "flock",
+ "floor",
+ "flower",
+ "fluid",
+ "flush",
+ "fly",
+ "foam",
+ "focus",
+ "fog",
+ "foil",
+ "fold",
+ "follow",
+ "food",
+ "foot",
+ "force",
+ "forest",
+ "forget",
+ "fork",
+ "fortune",
+ "forum",
+ "forward",
+ "fossil",
+ "foster",
+ "found",
+ "fox",
+ "fragile",
+ "frame",
+ "frequent",
+ "fresh",
+ "friend",
+ "fringe",
+ "frog",
+ "front",
+ "frost",
+ "frown",
+ "frozen",
+ "fruit",
+ "fuel",
+ "fun",
+ "funny",
+ "furnace",
+ "fury",
+ "future",
+ "gadget",
+ "gain",
+ "galaxy",
+ "gallery",
+ "game",
+ "gap",
+ "garage",
+ "garbage",
+ "garden",
+ "garlic",
+ "garment",
+ "gas",
+ "gasp",
+ "gate",
+ "gather",
+ "gauge",
+ "gaze",
+ "general",
+ "genius",
+ "genre",
+ "gentle",
+ "genuine",
+ "gesture",
+ "ghost",
+ "giant",
+ "gift",
+ "giggle",
+ "ginger",
+ "giraffe",
+ "girl",
+ "give",
+ "glad",
+ "glance",
+ "glare",
+ "glass",
+ "glide",
+ "glimpse",
+ "globe",
+ "gloom",
+ "glory",
+ "glove",
+ "glow",
+ "glue",
+ "goat",
+ "goddess",
+ "gold",
+ "good",
+ "goose",
+ "gorilla",
+ "gospel",
+ "gossip",
+ "govern",
+ "gown",
+ "grab",
+ "grace",
+ "grain",
+ "grant",
+ "grape",
+ "grass",
+ "gravity",
+ "great",
+ "green",
+ "grid",
+ "grief",
+ "grit",
+ "grocery",
+ "group",
+ "grow",
+ "grunt",
+ "guard",
+ "guess",
+ "guide",
+ "guilt",
+ "guitar",
+ "gun",
+ "gym",
+ "habit",
+ "hair",
+ "half",
+ "hammer",
+ "hamster",
+ "hand",
+ "happy",
+ "harbor",
+ "hard",
+ "harsh",
+ "harvest",
+ "hat",
+ "have",
+ "hawk",
+ "hazard",
+ "head",
+ "health",
+ "heart",
+ "heavy",
+ "hedgehog",
+ "height",
+ "hello",
+ "helmet",
+ "help",
+ "hen",
+ "hero",
+ "hidden",
+ "high",
+ "hill",
+ "hint",
+ "hip",
+ "hire",
+ "history",
+ "hobby",
+ "hockey",
+ "hold",
+ "hole",
+ "holiday",
+ "hollow",
+ "home",
+ "honey",
+ "hood",
+ "hope",
+ "horn",
+ "horror",
+ "horse",
+ "hospital",
+ "host",
+ "hotel",
+ "hour",
+ "hover",
+ "hub",
+ "huge",
+ "human",
+ "humble",
+ "humor",
+ "hundred",
+ "hungry",
+ "hunt",
+ "hurdle",
+ "hurry",
+ "hurt",
+ "husband",
+ "hybrid",
+ "ice",
+ "icon",
+ "idea",
+ "identify",
+ "idle",
+ "ignore",
+ "ill",
+ "illegal",
+ "illness",
+ "image",
+ "imitate",
+ "immense",
+ "immune",
+ "impact",
+ "impose",
+ "improve",
+ "impulse",
+ "inch",
+ "include",
+ "income",
+ "increase",
+ "index",
+ "indicate",
+ "indoor",
+ "industry",
+ "infant",
+ "inflict",
+ "inform",
+ "inhale",
+ "inherit",
+ "initial",
+ "inject",
+ "injury",
+ "inmate",
+ "inner",
+ "innocent",
+ "input",
+ "inquiry",
+ "insane",
+ "insect",
+ "inside",
+ "inspire",
+ "install",
+ "intact",
+ "interest",
+ "into",
+ "invest",
+ "invite",
+ "involve",
+ "iron",
+ "island",
+ "isolate",
+ "issue",
+ "item",
+ "ivory",
+ "jacket",
+ "jaguar",
+ "jar",
+ "jazz",
+ "jealous",
+ "jeans",
+ "jelly",
+ "jewel",
+ "job",
+ "join",
+ "joke",
+ "journey",
+ "joy",
+ "judge",
+ "juice",
+ "jump",
+ "jungle",
+ "junior",
+ "junk",
+ "just",
+ "kangaroo",
+ "keen",
+ "keep",
+ "ketchup",
+ "key",
+ "kick",
+ "kid",
+ "kidney",
+ "kind",
+ "kingdom",
+ "kiss",
+ "kit",
+ "kitchen",
+ "kite",
+ "kitten",
+ "kiwi",
+ "knee",
+ "knife",
+ "knock",
+ "know",
+ "lab",
+ "label",
+ "labor",
+ "ladder",
+ "lady",
+ "lake",
+ "lamp",
+ "language",
+ "laptop",
+ "large",
+ "later",
+ "latin",
+ "laugh",
+ "laundry",
+ "lava",
+ "law",
+ "lawn",
+ "lawsuit",
+ "layer",
+ "lazy",
+ "leader",
+ "leaf",
+ "learn",
+ "leave",
+ "lecture",
+ "left",
+ "leg",
+ "legal",
+ "legend",
+ "leisure",
+ "lemon",
+ "lend",
+ "length",
+ "lens",
+ "leopard",
+ "lesson",
+ "letter",
+ "level",
+ "liar",
+ "liberty",
+ "library",
+ "license",
+ "life",
+ "lift",
+ "light",
+ "like",
+ "limb",
+ "limit",
+ "link",
+ "lion",
+ "liquid",
+ "list",
+ "little",
+ "live",
+ "lizard",
+ "load",
+ "loan",
+ "lobster",
+ "local",
+ "lock",
+ "logic",
+ "lonely",
+ "long",
+ "loop",
+ "lottery",
+ "loud",
+ "lounge",
+ "love",
+ "loyal",
+ "lucky",
+ "luggage",
+ "lumber",
+ "lunar",
+ "lunch",
+ "luxury",
+ "lyrics",
+ "machine",
+ "mad",
+ "magic",
+ "magnet",
+ "maid",
+ "mail",
+ "main",
+ "major",
+ "make",
+ "mammal",
+ "man",
+ "manage",
+ "mandate",
+ "mango",
+ "mansion",
+ "manual",
+ "maple",
+ "marble",
+ "march",
+ "margin",
+ "marine",
+ "market",
+ "marriage",
+ "mask",
+ "mass",
+ "master",
+ "match",
+ "material",
+ "math",
+ "matrix",
+ "matter",
+ "maximum",
+ "maze",
+ "meadow",
+ "mean",
+ "measure",
+ "meat",
+ "mechanic",
+ "medal",
+ "media",
+ "melody",
+ "melt",
+ "member",
+ "memory",
+ "mention",
+ "menu",
+ "mercy",
+ "merge",
+ "merit",
+ "merry",
+ "mesh",
+ "message",
+ "metal",
+ "method",
+ "middle",
+ "midnight",
+ "milk",
+ "million",
+ "mimic",
+ "mind",
+ "minimum",
+ "minor",
+ "minute",
+ "miracle",
+ "mirror",
+ "misery",
+ "miss",
+ "mistake",
+ "mix",
+ "mixed",
+ "mixture",
+ "mobile",
+ "model",
+ "modify",
+ "mom",
+ "moment",
+ "monitor",
+ "monkey",
+ "monster",
+ "month",
+ "moon",
+ "moral",
+ "more",
+ "morning",
+ "mosquito",
+ "mother",
+ "motion",
+ "motor",
+ "mountain",
+ "mouse",
+ "move",
+ "movie",
+ "much",
+ "muffin",
+ "mule",
+ "multiply",
+ "muscle",
+ "museum",
+ "mushroom",
+ "music",
+ "must",
+ "mutual",
+ "myself",
+ "mystery",
+ "myth",
+ "naive",
+ "name",
+ "napkin",
+ "narrow",
+ "nasty",
+ "nation",
+ "nature",
+ "near",
+ "neck",
+ "need",
+ "negative",
+ "neglect",
+ "neither",
+ "nephew",
+ "nerve",
+ "nest",
+ "net",
+ "network",
+ "neutral",
+ "never",
+ "news",
+ "next",
+ "nice",
+ "night",
+ "noble",
+ "noise",
+ "nominee",
+ "noodle",
+ "normal",
+ "north",
+ "nose",
+ "notable",
+ "note",
+ "nothing",
+ "notice",
+ "novel",
+ "now",
+ "nuclear",
+ "number",
+ "nurse",
+ "nut",
+ "oak",
+ "obey",
+ "object",
+ "oblige",
+ "obscure",
+ "observe",
+ "obtain",
+ "obvious",
+ "occur",
+ "ocean",
+ "october",
+ "odor",
+ "off",
+ "offer",
+ "office",
+ "often",
+ "oil",
+ "okay",
+ "old",
+ "olive",
+ "olympic",
+ "omit",
+ "once",
+ "one",
+ "onion",
+ "online",
+ "only",
+ "open",
+ "opera",
+ "opinion",
+ "oppose",
+ "option",
+ "orange",
+ "orbit",
+ "orchard",
+ "order",
+ "ordinary",
+ "organ",
+ "orient",
+ "original",
+ "orphan",
+ "ostrich",
+ "other",
+ "outdoor",
+ "outer",
+ "output",
+ "outside",
+ "oval",
+ "oven",
+ "over",
+ "own",
+ "owner",
+ "oxygen",
+ "oyster",
+ "ozone",
+ "pact",
+ "paddle",
+ "page",
+ "pair",
+ "palace",
+ "palm",
+ "panda",
+ "panel",
+ "panic",
+ "panther",
+ "paper",
+ "parade",
+ "parent",
+ "park",
+ "parrot",
+ "party",
+ "pass",
+ "patch",
+ "path",
+ "patient",
+ "patrol",
+ "pattern",
+ "pause",
+ "pave",
+ "payment",
+ "peace",
+ "peanut",
+ "pear",
+ "peasant",
+ "pelican",
+ "pen",
+ "penalty",
+ "pencil",
+ "people",
+ "pepper",
+ "perfect",
+ "permit",
+ "person",
+ "pet",
+ "phone",
+ "photo",
+ "phrase",
+ "physical",
+ "piano",
+ "picnic",
+ "picture",
+ "piece",
+ "pig",
+ "pigeon",
+ "pill",
+ "pilot",
+ "pink",
+ "pioneer",
+ "pipe",
+ "pistol",
+ "pitch",
+ "pizza",
+ "place",
+ "planet",
+ "plastic",
+ "plate",
+ "play",
+ "please",
+ "pledge",
+ "pluck",
+ "plug",
+ "plunge",
+ "poem",
+ "poet",
+ "point",
+ "polar",
+ "pole",
+ "police",
+ "pond",
+ "pony",
+ "pool",
+ "popular",
+ "portion",
+ "position",
+ "possible",
+ "post",
+ "potato",
+ "pottery",
+ "poverty",
+ "powder",
+ "power",
+ "practice",
+ "praise",
+ "predict",
+ "prefer",
+ "prepare",
+ "present",
+ "pretty",
+ "prevent",
+ "price",
+ "pride",
+ "primary",
+ "print",
+ "priority",
+ "prison",
+ "private",
+ "prize",
+ "problem",
+ "process",
+ "produce",
+ "profit",
+ "program",
+ "project",
+ "promote",
+ "proof",
+ "property",
+ "prosper",
+ "protect",
+ "proud",
+ "provide",
+ "public",
+ "pudding",
+ "pull",
+ "pulp",
+ "pulse",
+ "pumpkin",
+ "punch",
+ "pupil",
+ "puppy",
+ "purchase",
+ "purity",
+ "purpose",
+ "purse",
+ "push",
+ "put",
+ "puzzle",
+ "pyramid",
+ "quality",
+ "quantum",
+ "quarter",
+ "question",
+ "quick",
+ "quit",
+ "quiz",
+ "quote",
+ "rabbit",
+ "raccoon",
+ "race",
+ "rack",
+ "radar",
+ "radio",
+ "rail",
+ "rain",
+ "raise",
+ "rally",
+ "ramp",
+ "ranch",
+ "random",
+ "range",
+ "rapid",
+ "rare",
+ "rate",
+ "rather",
+ "raven",
+ "raw",
+ "razor",
+ "ready",
+ "real",
+ "reason",
+ "rebel",
+ "rebuild",
+ "recall",
+ "receive",
+ "recipe",
+ "record",
+ "recycle",
+ "reduce",
+ "reflect",
+ "reform",
+ "refuse",
+ "region",
+ "regret",
+ "regular",
+ "reject",
+ "relax",
+ "release",
+ "relief",
+ "rely",
+ "remain",
+ "remember",
+ "remind",
+ "remove",
+ "render",
+ "renew",
+ "rent",
+ "reopen",
+ "repair",
+ "repeat",
+ "replace",
+ "report",
+ "require",
+ "rescue",
+ "resemble",
+ "resist",
+ "resource",
+ "response",
+ "result",
+ "retire",
+ "retreat",
+ "return",
+ "reunion",
+ "reveal",
+ "review",
+ "reward",
+ "rhythm",
+ "rib",
+ "ribbon",
+ "rice",
+ "rich",
+ "ride",
+ "ridge",
+ "rifle",
+ "right",
+ "rigid",
+ "ring",
+ "riot",
+ "ripple",
+ "risk",
+ "ritual",
+ "rival",
+ "river",
+ "road",
+ "roast",
+ "robot",
+ "robust",
+ "rocket",
+ "romance",
+ "roof",
+ "rookie",
+ "room",
+ "rose",
+ "rotate",
+ "rough",
+ "round",
+ "route",
+ "royal",
+ "rubber",
+ "rude",
+ "rug",
+ "rule",
+ "run",
+ "runway",
+ "rural",
+ "sad",
+ "saddle",
+ "sadness",
+ "safe",
+ "sail",
+ "salad",
+ "salmon",
+ "salon",
+ "salt",
+ "salute",
+ "same",
+ "sample",
+ "sand",
+ "satisfy",
+ "satoshi",
+ "sauce",
+ "sausage",
+ "save",
+ "say",
+ "scale",
+ "scan",
+ "scare",
+ "scatter",
+ "scene",
+ "scheme",
+ "school",
+ "science",
+ "scissors",
+ "scorpion",
+ "scout",
+ "scrap",
+ "screen",
+ "script",
+ "scrub",
+ "sea",
+ "search",
+ "season",
+ "seat",
+ "second",
+ "secret",
+ "section",
+ "security",
+ "seed",
+ "seek",
+ "segment",
+ "select",
+ "sell",
+ "seminar",
+ "senior",
+ "sense",
+ "sentence",
+ "series",
+ "service",
+ "session",
+ "settle",
+ "setup",
+ "seven",
+ "shadow",
+ "shaft",
+ "shallow",
+ "share",
+ "shed",
+ "shell",
+ "sheriff",
+ "shield",
+ "shift",
+ "shine",
+ "ship",
+ "shiver",
+ "shock",
+ "shoe",
+ "shoot",
+ "shop",
+ "short",
+ "shoulder",
+ "shove",
+ "shrimp",
+ "shrug",
+ "shuffle",
+ "shy",
+ "sibling",
+ "sick",
+ "side",
+ "siege",
+ "sight",
+ "sign",
+ "silent",
+ "silk",
+ "silly",
+ "silver",
+ "similar",
+ "simple",
+ "since",
+ "sing",
+ "siren",
+ "sister",
+ "situate",
+ "six",
+ "size",
+ "skate",
+ "sketch",
+ "ski",
+ "skill",
+ "skin",
+ "skirt",
+ "skull",
+ "slab",
+ "slam",
+ "sleep",
+ "slender",
+ "slice",
+ "slide",
+ "slight",
+ "slim",
+ "slogan",
+ "slot",
+ "slow",
+ "slush",
+ "small",
+ "smart",
+ "smile",
+ "smoke",
+ "smooth",
+ "snack",
+ "snake",
+ "snap",
+ "sniff",
+ "snow",
+ "soap",
+ "soccer",
+ "social",
+ "sock",
+ "soda",
+ "soft",
+ "solar",
+ "soldier",
+ "solid",
+ "solution",
+ "solve",
+ "someone",
+ "song",
+ "soon",
+ "sorry",
+ "sort",
+ "soul",
+ "sound",
+ "soup",
+ "source",
+ "south",
+ "space",
+ "spare",
+ "spatial",
+ "spawn",
+ "speak",
+ "special",
+ "speed",
+ "spell",
+ "spend",
+ "sphere",
+ "spice",
+ "spider",
+ "spike",
+ "spin",
+ "spirit",
+ "split",
+ "spoil",
+ "sponsor",
+ "spoon",
+ "sport",
+ "spot",
+ "spray",
+ "spread",
+ "spring",
+ "spy",
+ "square",
+ "squeeze",
+ "squirrel",
+ "stable",
+ "stadium",
+ "staff",
+ "stage",
+ "stairs",
+ "stamp",
+ "stand",
+ "start",
+ "state",
+ "stay",
+ "steak",
+ "steel",
+ "stem",
+ "step",
+ "stereo",
+ "stick",
+ "still",
+ "sting",
+ "stock",
+ "stomach",
+ "stone",
+ "stool",
+ "story",
+ "stove",
+ "strategy",
+ "street",
+ "strike",
+ "strong",
+ "struggle",
+ "student",
+ "stuff",
+ "stumble",
+ "style",
+ "subject",
+ "submit",
+ "subway",
+ "success",
+ "such",
+ "sudden",
+ "suffer",
+ "sugar",
+ "suggest",
+ "suit",
+ "summer",
+ "sun",
+ "sunny",
+ "sunset",
+ "super",
+ "supply",
+ "supreme",
+ "sure",
+ "surface",
+ "surge",
+ "surprise",
+ "surround",
+ "survey",
+ "suspect",
+ "sustain",
+ "swallow",
+ "swamp",
+ "swap",
+ "swarm",
+ "swear",
+ "sweet",
+ "swift",
+ "swim",
+ "swing",
+ "switch",
+ "sword",
+ "symbol",
+ "symptom",
+ "syrup",
+ "system",
+ "table",
+ "tackle",
+ "tag",
+ "tail",
+ "talent",
+ "talk",
+ "tank",
+ "tape",
+ "target",
+ "task",
+ "taste",
+ "tattoo",
+ "taxi",
+ "teach",
+ "team",
+ "tell",
+ "ten",
+ "tenant",
+ "tennis",
+ "tent",
+ "term",
+ "test",
+ "text",
+ "thank",
+ "that",
+ "theme",
+ "then",
+ "theory",
+ "there",
+ "they",
+ "thing",
+ "this",
+ "thought",
+ "three",
+ "thrive",
+ "throw",
+ "thumb",
+ "thunder",
+ "ticket",
+ "tide",
+ "tiger",
+ "tilt",
+ "timber",
+ "time",
+ "tiny",
+ "tip",
+ "tired",
+ "tissue",
+ "title",
+ "toast",
+ "tobacco",
+ "today",
+ "toddler",
+ "toe",
+ "together",
+ "toilet",
+ "token",
+ "tomato",
+ "tomorrow",
+ "tone",
+ "tongue",
+ "tonight",
+ "tool",
+ "tooth",
+ "top",
+ "topic",
+ "topple",
+ "torch",
+ "tornado",
+ "tortoise",
+ "toss",
+ "total",
+ "tourist",
+ "toward",
+ "tower",
+ "town",
+ "toy",
+ "track",
+ "trade",
+ "traffic",
+ "tragic",
+ "train",
+ "transfer",
+ "trap",
+ "trash",
+ "travel",
+ "tray",
+ "treat",
+ "tree",
+ "trend",
+ "trial",
+ "tribe",
+ "trick",
+ "trigger",
+ "trim",
+ "trip",
+ "trophy",
+ "trouble",
+ "truck",
+ "true",
+ "truly",
+ "trumpet",
+ "trust",
+ "truth",
+ "try",
+ "tube",
+ "tuition",
+ "tumble",
+ "tuna",
+ "tunnel",
+ "turkey",
+ "turn",
+ "turtle",
+ "twelve",
+ "twenty",
+ "twice",
+ "twin",
+ "twist",
+ "two",
+ "type",
+ "typical",
+ "ugly",
+ "umbrella",
+ "unable",
+ "unaware",
+ "uncle",
+ "uncover",
+ "under",
+ "undo",
+ "unfair",
+ "unfold",
+ "unhappy",
+ "uniform",
+ "unique",
+ "unit",
+ "universe",
+ "unknown",
+ "unlock",
+ "until",
+ "unusual",
+ "unveil",
+ "update",
+ "upgrade",
+ "uphold",
+ "upon",
+ "upper",
+ "upset",
+ "urban",
+ "urge",
+ "usage",
+ "use",
+ "used",
+ "useful",
+ "useless",
+ "usual",
+ "utility",
+ "vacant",
+ "vacuum",
+ "vague",
+ "valid",
+ "valley",
+ "valve",
+ "van",
+ "vanish",
+ "vapor",
+ "various",
+ "vast",
+ "vault",
+ "vehicle",
+ "velvet",
+ "vendor",
+ "venture",
+ "venue",
+ "verb",
+ "verify",
+ "version",
+ "very",
+ "vessel",
+ "veteran",
+ "viable",
+ "vibrant",
+ "vicious",
+ "victory",
+ "video",
+ "view",
+ "village",
+ "vintage",
+ "violin",
+ "virtual",
+ "virus",
+ "visa",
+ "visit",
+ "visual",
+ "vital",
+ "vivid",
+ "vocal",
+ "voice",
+ "void",
+ "volcano",
+ "volume",
+ "vote",
+ "voyage",
+ "wage",
+ "wagon",
+ "wait",
+ "walk",
+ "wall",
+ "walnut",
+ "want",
+ "warfare",
+ "warm",
+ "warrior",
+ "wash",
+ "wasp",
+ "waste",
+ "water",
+ "wave",
+ "way",
+ "wealth",
+ "weapon",
+ "wear",
+ "weasel",
+ "weather",
+ "web",
+ "wedding",
+ "weekend",
+ "weird",
+ "welcome",
+ "west",
+ "wet",
+ "whale",
+ "what",
+ "wheat",
+ "wheel",
+ "when",
+ "where",
+ "whip",
+ "whisper",
+ "wide",
+ "width",
+ "wife",
+ "wild",
+ "will",
+ "win",
+ "window",
+ "wine",
+ "wing",
+ "wink",
+ "winner",
+ "winter",
+ "wire",
+ "wisdom",
+ "wise",
+ "wish",
+ "witness",
+ "wolf",
+ "woman",
+ "wonder",
+ "wood",
+ "wool",
+ "word",
+ "work",
+ "world",
+ "worry",
+ "worth",
+ "wrap",
+ "wreck",
+ "wrestle",
+ "wrist",
+ "write",
+ "wrong",
+ "yard",
+ "year",
+ "yellow",
+ "you",
+ "young",
+ "youth",
+ "zebra",
+ "zero",
+ "zone",
+ "zoo"
+ ]
+
+ # Translate the decimal to a BIP39(0-Indexed) seed word
+ firstwords_list = []
+ for i in range(len(decimal_list)):
+ firstwords_list.append(bip39wordlist[decimal_list[i]])
+ r2_label = Label(root, bg=myback, text='\nYour 24 words: ')
+ r2_label.grid(row=4, column=1, sticky='w')
+ r3_label = Label(root, bg=mybackword, width=50, text=firstwords_list[0:8])
+ r3_label.grid(row=5, column=1, sticky='w')
+ r4_label = Label(root, bg=mybackword, width=50, text=firstwords_list[8:16])
+ r4_label.grid(row=6, column=1, sticky='w')
+ r5_label = Label(root, bg=mybackword, width=50, text=firstwords_list[16:24])
+ r5_label.grid(row=7, column=1, sticky='w')
+
+ # Store PrivateKey
+ store_label = Label(root, bg=myback, text='\nName your Wallet-File to store your words:')
+ store_label.grid(row=8, column=1, sticky='w')
+ myStore= Entry(root, width=60)
+ myStore.grid(row=9, column=1, sticky='w')
+
+ def store():
+ fp = open('Wallets/' + myStore.get() + '.txt', 'w')
+ fp.write('Chess-Wallet - Bitcoin Wallet Backup \n \n \n')
+ fp.write('Your chessboard setup/ your entropy was: \n \n' + chessboard + '\n \n \n')
+ fp.write('Your nnemonic words are: \n \n')
+ fp.writelines([str(i)+'\n' for i in firstwords_list])
+ fp.close()
+ e_label = Label(root, bg='lightgreen', text='Your seed got succesfully stored in the Wallets folder!')
+ e_label.grid(row=10, column=1, sticky='w')
+
+ storeButton = Button(root, text='Submit', command=store, padx=30)
+ storeButton.grid(row=9, column=2, sticky='w')
+
+
+myButton = Button(root, text='Submit', command=main_func, padx=30)
+myButton.grid(row=2, column=2, sticky='w')
+
+# Start Program-Window
+root.mainloop()
\ No newline at end of file
diff --git a/pictures/Banner.PNG b/pictures/Banner.PNG
new file mode 100644
index 0000000000000000000000000000000000000000..b947a3a961b9848fb9087dcca78d9f971e972bfc
GIT binary patch
literal 47965
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