Compare commits

..

2 Commits

Author SHA1 Message Date
httpjamesm e379fd66b3 feat: decodeEmail XOR function 2023-12-16 15:45:29 -05:00
httpjamesm aa74bbc5fc docs: new instances (#69, #70, #73) 2023-11-25 11:50:46 -05:00
2 changed files with 79 additions and 20 deletions
+23 -20
View File
@@ -14,26 +14,29 @@ This project is super lightweight by design. The UI is simple and the frontend i
## Clearnet Instances
| Instance URL | Region | Notes |
| ------------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------ |
| [code.whatever.social](https://code.whatever.social) | United States & The Netherlands | Operated by [Whatever Social](https://whatever.social) and [http.james](https://httpjames.space) |
| [ao.vern.cc](https://ao.vern.cc) | United States | Operated by [vern.cc](https://vern.cc) |
| [overflow.smnz.de](https://overflow.smnz.de) | Germany | Operated by [smnz.de](https://smnz.de) |
| [overflow.lunar.icu](https://overflow.lunar.icu) | Germany | Operated by [lunar.icu](https://lunar.icu/) |
| [overflow.adminforge.de](https://overflow.adminforge.de/) | Germany | Operated by [adminForge](https://adminforge.de/) |
| [overflow.hostux.net](https://overflow.hostux.net/) | France | Operated by [Hostux](https://hostux.net/) |
| [overflow.projectsegfau.lt](https://overflow.projectsegfau.lt/) | United States, France, India | Operated by [Project Segfault](https://projectsegfau.lt/) |
| [code.xbdm.fun](https://code.xbdm.fun) | Germany | Operated by [xbdm.fun](https://xbdm.fun) |
| [overflow.fascinated.cc](https://overflow.fascinated.cc/) | Germany | Operated by [fascinated.cc](https://fascinated.cc/) |
| [ao.bloatcat.tk](https://ao.bloatcat.tk) | Iceland | Operated by [bloatcat.tk](https://bloatcat.tk) |
| [anonoverflow.frontendfriendly.xyz](https://anonoverflow.frontendfriendly.xyz/) | United States | Operated by [frontendfriendly.xyz](https://frontendfriendly.xyz/) |
| [ao.owo.si](https://ao.owo.si/) | Germany | Operated by [owo.si](https://owo.si/) |
| [overflow.datura.network](https://overflow.datura.network/) | Germany | Operated by [datura.network](https://datura.network) |
| [overflow.freedit.eu](overflow.freedit.eu) | United States | Operated by [freedit.eu](https://freedit.eu) |
| [ao.ftw.lol](https://ao.ftw.lol) | Germany | Operated by [ftw.lol](https://ftw.lol) |
| [anonoverflow.hyperreal.coffee](https://anonoverflow.hyperreal.coffee) | United States | Operated by [hyperreal.coffee](https://hyperreal.coffee) |
| [a.opnxng.com](a.opnxng.com) | Singapore | Operated by [opnxng.com](https://about.opnxng.com) |
| [overflow.sudovanilla.com](https://overflow.sudovanilla.com) | United States | Operated by [SudoVanilla](https://sudovanilla.com) |
| Instance URL | Region | Notes |
| ----------------------------------------------------------------------------------------- | ------------------------------- | ------------------------------------------------------------------------------------------------ |
| [code.whatever.social](https://code.whatever.social) | United States & The Netherlands | Operated by [Whatever Social](https://whatever.social) and [http.james](https://httpjames.space) |
| [ao.vern.cc](https://ao.vern.cc) | United States | Operated by [vern.cc](https://vern.cc) |
| [overflow.smnz.de](https://overflow.smnz.de) | Germany | Operated by [smnz.de](https://smnz.de) |
| [overflow.lunar.icu](https://overflow.lunar.icu) | Germany | Operated by [lunar.icu](https://lunar.icu/) |
| [overflow.adminforge.de](https://overflow.adminforge.de/) | Germany | Operated by [adminForge](https://adminforge.de/) |
| [overflow.hostux.net](https://overflow.hostux.net/) | France | Operated by [Hostux](https://hostux.net/) |
| [overflow.projectsegfau.lt](https://overflow.projectsegfau.lt/) | United States, France, India | Operated by [Project Segfault](https://projectsegfau.lt/) |
| [code.xbdm.fun](https://code.xbdm.fun) | Germany | Operated by [xbdm.fun](https://xbdm.fun) |
| [overflow.fascinated.cc](https://overflow.fascinated.cc/) | Germany | Operated by [fascinated.cc](https://fascinated.cc/) |
| [ao.bloatcat.tk](https://ao.bloatcat.tk) | Iceland | Operated by [bloatcat.tk](https://bloatcat.tk) |
| [anonoverflow.frontendfriendly.xyz](https://anonoverflow.frontendfriendly.xyz/) | United States | Operated by [frontendfriendly.xyz](https://frontendfriendly.xyz/) |
| [ao.owo.si](https://ao.owo.si/) | Germany | Operated by [owo.si](https://owo.si/) |
| [overflow.datura.network](https://overflow.datura.network/) | Germany | Operated by [datura.network](https://datura.network) |
| [overflow.freedit.eu](overflow.freedit.eu) | United States | Operated by [freedit.eu](https://freedit.eu) |
| [ao.ftw.lol](https://ao.ftw.lol) | Germany | Operated by [ftw.lol](https://ftw.lol) |
| [anonoverflow.hyperreal.coffee](https://anonoverflow.hyperreal.coffee) | United States | Operated by [hyperreal.coffee](https://hyperreal.coffee) |
| [a.opnxng.com](a.opnxng.com) | Singapore | Operated by [opnxng.com](https://about.opnxng.com) |
| [overflow.sudovanilla.com](https://overflow.sudovanilla.com) | United States | Operated by [SudoVanilla](https://sudovanilla.com) |
| [anonymousoverflow.privacyfucking.rocks](https://anonymousoverflow.privacyfucking.rocks/) | Germany | Operated by [privacyfucking.rocks](https://privacyfucking.rocks) |
| [exchange.seitan-ayoub.lol](https://exchange.seitan-ayoub.lol) | Germany | Operated by [Seitan Ayoub](https://seitan-ayoub.lol) |
| [overflow.r4fo.com](https://overflow.r4fo.com) | The Netherlands | Operated by [r4fo.com](https://r4fo.com) |
## Other Instances
+56
View File
@@ -0,0 +1,56 @@
package utils
import (
"encoding/hex"
"net/url"
"strings"
)
// decodeEmail decodes an obfuscated email string.
func DecodeEmail(encoded string) (string, error) {
// remove the prefix if present
prefix := "/cdn-cgi/l/email-protection#"
encoded = strings.TrimPrefix(encoded, prefix)
// get the key for XOR operation
key, err := hex.DecodeString(encoded[:2])
if err != nil {
return "", err
}
// decode the rest of the string using the key
var decodedChars []byte
// start a loop from the third character of the encoded string (index 2), as the first two characters are used as the key for XOR operation.
// the loop increments by 2 in each iteration because the encoded string is in hexadecimal format, and each hexadecimal character represents 4 bits.
// so, two hexadecimal characters represent one byte (8 bits), which is the size of a character in ASCII.
for i := 2; i < len(encoded); i += 2 {
// get the current pair of hexadecimal characters from the encoded string.
encodedPair := encoded[i : i+2]
// decode the hexadecimal pair to get the original byte. this is done by converting the hexadecimal pair to a byte using the DecodeString function from the encoding/hex package.
// if the hexadecimal pair is not a valid hexadecimal number, DecodeString will return an error.
pairBytes, err := hex.DecodeString(encodedPair)
if err != nil {
// if there is an error in decoding, return the error and an empty string.
return "", err
}
// perform an XOR operation on the decoded byte with the key. this is the reverse operation of the original encoding process.
// the XOR operation is a bitwise operation that returns 0 if the two bits are the same, and 1 otherwise.
// by performing the XOR operation with the same key used in the encoding process, we can retrieve the original byte.
decodedChar := pairBytes[0] ^ key[0]
// append the decoded character to the decodedChars slice. this slice will hold all the decoded characters of the encoded string.
decodedChars = append(decodedChars, decodedChar)
}
// convert the decoded bytes to a string
decoded := string(decodedChars)
// unescape any URL-encoded characters
unescaped, err := url.QueryUnescape(decoded)
if err != nil {
return "", err
}
return unescaped, nil
}