Cryptohack - Keyed Permutations [5 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem AES, like all good block ciphers, performs a “keyed permutation”. This means that it maps every possible input block to a unique output block, with a key determining which permutation to perform. A “block” just refers to a fixed number of bits or bytes, which may represent any kind of data. AES processes a block and outputs another block. We’ll be specifically talking the variant of AES which works on 128 bit (16 byte) blocks and a 128 bit key, known as AES-128. ...

May 20, 2022 · 1 min · Aditya Telange

Cryptohack - Resisting Bruteforce [10 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem If a block cipher is secure, there should be no way for an attacker to distinguish the output of AES from a random permutation of bits. Furthermore, there should be no better way to undo the permutation than simply bruteforcing every possible key. That’s why academics consider a cipher theoretically “broken” if they can find an attack that takes fewer steps to perform than bruteforcing the key, even if that attack is practically infeasible. ...

May 20, 2022 · 2 min · Aditya Telange

Cryptohack - RSA Starter 1 [10 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem All operations in RSA involve modular exponentiation. Modular exponentiation is an operation that is used extensively in cryptography and is normally written like: 210 mod 17 You can think of this as raising some number to a certain power (210 = 1024), and then taking the remainder of the division by some other number (1024 mod 17 = 4). In Python there’s a built-in operator for performing this operation: pow(base, exponent, modulus) ...

May 20, 2022 · 1 min · Aditya Telange

Cryptohack - Base64 [10 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem Another common encoding scheme is Base64, which allows us to represent binary data as an ASCII string using 64 characters. One character of a Base64 string encodes 6 bits, and so 4 characters of Base64 encode three 8-bit bytes. Base64 is most commonly used online, so binary data such as images can be easily included into HTML or CSS files. ...

May 3, 2022 · 1 min · Aditya Telange

Cryptohack - Bytes and Big Integers [10 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem Cryptosystems like RSA works on numbers, but messages are made up of characters. How should we convert our messages into numbers so that mathematical operations can be applied? The most common way is to take the ordinal bytes of the message, convert them into hexadecimal, and concatenate. This can be interpreted as a base-16 number, and also represented in base-10. ...

May 3, 2022 · 1 min · Aditya Telange

Cryptohack - Hex [5 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem When we encrypt something the resulting ciphertext commonly has bytes which are not printable ASCII characters. If we want to share our encrypted data, it’s common to encode it into something more user-friendly and portable across different systems. Included below is a flag encoded as a hex string. Decode this back into bytes to get the flag. 63727970746f7b596f755f77696c6c5f62655f776f726b696e675f776974685f6865785f737472696e67735f615f6c6f747d Solution Python: ...

May 3, 2022 · 1 min · Aditya Telange

Cryptohack- XOR Starter [10 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem XOR is a bitwise operator which returns 0 if the bits are the same, and 1 otherwise. In textbooks the XOR operator is denoted by ⊕, but in most challenges and programming languages you will see the caret ^ used instead. A B Output 0 0 0 0 1 1 1 0 1 1 1 0 For longer binary numbers we XOR bit by bit: 0110 ^ 1010 = 1100. We can XOR integers by first converting the integer from decimal to binary. We can XOR strings by first converting each character to the integer representing the Unicode character. ...

May 3, 2022 · 1 min · Aditya Telange

Cryptohack - ASCII [5 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem ASCII is a 7-bit encoding standard which allows the representation of text using the integers 0-127. Using the below integer array, convert the numbers to their corresponding ASCII characters to obtain a flag. [99, 114, 121, 112, 116, 111, 123, 65, 83, 67, 73, 73, 95, 112, 114, 49, 110, 116, 52, 98, 108, 51, 125] Solution Python: ...

February 4, 2021 · 1 min · Aditya Telange

Cryptohack - Finding Flags [2 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem Each challenge is designed to help introduce you to a new piece of cryptography. Solving a challenge will require you to find a “flag”. These flags will usually be in the format crypto{y0ur_f1rst_fl4g}. The flag format helps you verify that you found the correct solution. Try submitting this into the form below to solve your first challenge. Solution Solution is given in problem XD ...

February 3, 2021 · 1 min · Aditya Telange

Cryptohack - Great Snakes [3 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem Modern cryptography involves code, and code involves coding. CryptoHack provides a good opportunity to sharpen your skills. Of all modern programming languages, Python 3 stands out as ideal for quickly writing cryptographic scripts and attacks. For more information about why we think Python is so great for this, please see the FAQ. Run the attached Python script and it will output your flag. ...

February 3, 2021 · 1 min · Aditya Telange

Cryptohack - JWT Sessions [10 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem The traditional way to store sessions is with session ID cookies. After you login to a website, a session object is created for you on the backend (the server), and your browser (the client) is given a cookie which identifies that object. As you make requests to the site, your browser automatically sends the session ID cookie to the backend server, which uses that ID to find your session in its own memory and thus authorise you to perform actions. ...

February 3, 2021 · 2 min · Aditya Telange

Cryptohack - Network Attacks [5 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem Several of the challenges are dynamic and require you to talk to our challenge servers over the network. This allows you to perform man-in-the-middle attacks on people trying to communicate, or directly attack a vulnerable service. To keep things consistent, our interactive servers always send and receive JSON objects. Python makes such network communication easy with the telnetlib module. Conveniently, it’s part of Python’s standard library, so let’s use it for now. ...

February 3, 2021 · 1 min · Aditya Telange

Cryptohack - Token Appreciation [5 pts]

The Solution is shared considering CAN I SHARE MY SOLUTIONS? Problem JavaScript Object Signing and Encryption (JOSE) is a framework specifying ways to securely transmit information on the internet. It’s most well-known for JSON Web Tokens (JWTs), which are used to authorise yourself on a website or application. JWTs typically do this by storing your “login session” in your browser after you have authenticated yourself by entering your username and password. In other words, the website gives you a JWT that contains your user ID, and can be presented to the site to prove who you are without logging in again. JWTs look like this: ...

February 3, 2021 · 2 min · Aditya Telange
This site uses cookies to improve your experience on our website. By using and continuing to navigate this website, you accept this. More details in Privacy Statement.