├── README.md └── mail_fuzzer.py /README.md: -------------------------------------------------------------------------------- 1 | # OpenMailRelayFuzzer 2 | Fuzzer for finding Open Mail Relays 3 | 4 | ## Find Open Mail Relay's 5 | 6 | Needs, essential_generators 7 | 8 | **pip install essential_generators** 9 | 10 | **Disclaimer included, Raw code to find Open Mail Relay's** 11 | 12 | [Paypal Donate](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=EV8XUGXX76UXQ&source=url) 13 | 14 | ###### Bitcoin Cash (BCH) - qpz32c4lg7x7lnk9jg6qg7s4uavdce89myax5v5nuk 15 | ###### Ether (ETH) - 0x843d3DEC2A4705BD4f45F674F641cE2D0022c9FB 16 | ###### Litecoin (LTC) - Lfk5y4F7KZa9oRxpazETwjQnHszEPvqPvu 17 | ###### Bitcoin (BTC) - 14Dm7L3ABPtumPDcj3REAvs4L6w9YFRnHK 18 | 19 | -------------------------------------------------------------------------------- /mail_fuzzer.py: -------------------------------------------------------------------------------- 1 | '''THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 2 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 3 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND 4 | NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE 5 | DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, 6 | WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 7 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 8 | SOFTWARE.''' 9 | 10 | # Bitcoin Cash (BCH) qpz32c4lg7x7lnk9jg6qg7s4uavdce89myax5v5nuk 11 | # Ether (ETH) - 0x843d3DEC2A4705BD4f45F674F641cE2D0022c9FB 12 | # Litecoin (LTC) - Lfk5y4F7KZa9oRxpazETwjQnHszEPvqPvu 13 | # Bitcoin (BTC) - 34L8qWiQyKr8k4TnHDacfjbaSqQASbBtTd 14 | 15 | # contact :- github@jamessawyer.co.uk 16 | 17 | 18 | 19 | # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS 20 | # OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 21 | # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND 22 | # NON-INFRINGEMENT. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR ANYONE 23 | # DISTRIBUTING THE SOFTWARE BE LIABLE FOR ANY DAMAGES OR OTHER LIABILITY, 24 | # WHETHER IN CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN 25 | # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 26 | # SOFTWARE. 27 | 28 | import random 29 | import threading 30 | from essential_generators import DocumentGenerator 31 | import socket 32 | import smtplib 33 | from smtplib import * 34 | 35 | port = 25 36 | thread_list = [] 37 | 38 | def debug_info(err_str): 39 | # Standard debugging function, pass it a string 40 | # print("-----------------DEBUG-----------------") 41 | f.write(str(time.strftime("%H:%M:%S")) + 42 | ":!!!DEBUG!!!:\n" + str(err_str) + "\n") 43 | # print("-----------------DEBUG-----------------") 44 | 45 | 46 | now = datetime.now() 47 | f = open(now.strftime('mylogfile_%H_%M_%d_%m_%Y.log'), "a") 48 | 49 | debug_info("Starting...") 50 | 51 | def thread_worker(thread_no, me, you, svr): 52 | try: 53 | print("[+]trying...") 54 | # me == the sender's email address 55 | print("[+]from...\t\t" + str(me)) 56 | # you == the recsvrient's email address 57 | print("[+]to...\t\t" + str(you)) 58 | print("[+]server...\t\t" + str(svr)) 59 | 60 | s = socket.socket() 61 | s.connect((svr, int(port))) 62 | socket.setdefaulttimeout(3) 63 | ans = s.recv(1024) 64 | 65 | if ("220" in ans): 66 | print( 67 | "\n[+]port" + 68 | " " + 69 | str(port) + 70 | " " + 71 | "open on the target system\n") 72 | smtpserver = smtplib.SMTP(svr, int(port)) 73 | r = smtpserver.docmd("Mail From:", me) 74 | a = str(r) 75 | if ("250" in a): 76 | r = smtpserver.docmd("RCPT TO:", you) 77 | a = str(r) 78 | if ("250" in a): 79 | print( 80 | "[+]The target system seems vulenarble to Open relay attack, FOUND!!\t\t" + 81 | str(svr)) 82 | debug_info( 83 | "[+]The target system seems vulenarble to Open relay attack, FOUND!!\t\t" + 84 | str(svr)) 85 | else: 86 | print("[-]The target system is not vulnerable to Open relay attack ") 87 | else: 88 | print("[-]port is closed/Filtered") 89 | except Exception as e: 90 | #print(e) 91 | pass 92 | 93 | while True: 94 | for thread_no in range(1): 95 | try: 96 | gen = DocumentGenerator() 97 | me = str(gen.email()) 98 | you = str(gen.email()) 99 | svr = ".".join(map(str, (random.randint(0, 255) 100 | for _ in range(4)))) 101 | 102 | thread = threading.Thread( 103 | target=thread_worker, args=( 104 | thread_no, me, you, svr)) 105 | thread_list.append(thread) 106 | thread.start() 107 | 108 | except Exception as e: 109 | print(e) 110 | pass 111 | --------------------------------------------------------------------------------