crazy-email-recv-srv
crazy-email-recv-srv copied to clipboard
模拟邮件服务器,批量注册利器
æäºæ
è¿æ¯ä¸æ²ç»æçæ»æ°´ï¼æ¸ é£å¹ä¸èµ·åç¹æ¼ªæ²¦ã å¨è¿åªè®¸å·å®æ¾ç«ä¸è®¸ç¾å§çµç¯ç年代ï¼æ们ä¸å¦ä¸èµ·æ¿èµ·å è¡ç®åçpython代ç ï¼åè¿æ»æ°´ä¸å¤æäºç ´éçéã
æ们çç®æ å°±æ¯æè¿äºèç½æçæ´ä¹±æ´èï¼æ以æ们æ¯ä¸è¢«è§åæç¼çãä»å¤©è¦æ¿æ¥å¼åçï¼æ¯é®ä»¶ç³»ç»ã
åå¾é®ä»¶ï¼å¾å¤äººé½æ·±åå
¶å®³ï¼ä½æ们ä»å¤©å¹¶ä¸æ¯è¦æå®ã以ç¸åçæ¹å¼è¿è¡æèï¼æ们并ä¸è®¨åå®ï¼èä¸æ¬¢è¿å®çå°æ¥ãæ¯å¦ï¼æè¦æ¹é注åä¸ä¸ä¸ªgithubè´¦å·ãgithubéè¿é®ç®±éªè¯å°±ç®æ³¨åæåäºï¼è¿ä¸ªæ¶åï¼æ们éè¦ä¸ä¸ªé®ä»¶æå¡å¨ï¼å
·ä½æµç¨å¦ä¸ï¼
è¿ä¸ªæ¶åå°±æ³åï¼è½ä¸è½æé®ä»¶æ¥æ¶è¿åç»èªå¨åå¢ï¼èªå¨åæ¶å两个ç¹ï¼ 1ï¼è¦ææ ç©·æ å°½çé®ç®±ä¾ä½ ä½¿ç¨ 2ï¼è¦é常容æçè·å¾é®ä»¶å 容è¿è¡è§£æ
ç¨ä½æèï¼ä¸ä¸ªæ¹æ¡å°±å¨èæµ·ä¸æµ®ç°ï¼ç«ç¶æ¯è¶
ç®åçåå¨ã
å ¶ä¸ï¼ 1ï¼ éå²çé®ä»¶ç³»ç»ä¸éè¦ç»å½ï¼åªç®¡æ¶ï¼ä¸ç®¡å 2ï¼é®ä»¶ç³»ç»å¯ä»¥æ¥å带ææåç¼çä»»æé®ä»¶ 3ï¼æä¾ç®åçRESTæ¥å£è¿åé®ä»¶JSONä¾è§£æ
ä¸é¢æ们ç´æ¥è¿å ¥æ£é¢ï¼è¯´ä¸ä¸å®ç°æ¹å¼ã
åå解æé ç½®
æå¼åå管çï¼ä»¥é¿éäºä¸ºä¾ï¼å å ¥ä¸¤æ¡ä¿¡æ¯
å å ¥ä¸æ¡Aè®°å½ï¼æåæ们å°è¦é¨ç½²çæå¡IPå°å
A mx 6x.216.2xx.1xx
å å ¥ä¸æ¡MXè®°å½ï¼æåä¸é¢é ç½®çæ¶é®ä»¶çååå°åã
MX * mx.sayhiai.com
注æ
*
å·ï¼æææ¯ææçååå æ¬äºçº§ååçï¼é½ä¼è¢«æ¶å°ãæ¯å¦[email protected] ã [email protected]ã æ¯ä¸æ¯æ ç©·æ å°½ï¼
ç¼åSMTPDæå¡å¨
使ç¨pythonå¯ä»¥å¾å®¹æçå®ç°ä¸ä¸ªSMTPDæå¡å¨ï¼å
·ä½çæ¯ä½¿ç¨aiosmtpd
åºãé®ä»¶é»è®¤æ¶å°åæ¯BASE64ç¼ç ï¼è¿åå¾å¤é¨ååç±»åï¼è§£æèµ·æ¥è¿æ¯æ¯è¾éº»ç¦çãéè¦ç解å
¶ç¼ç 并éå½æ¼æ¥é®ä»¶çã代ç ç段å¦ä¸ï¼
def decode_str(s):
value, charset = decode_header(s)[0]
if charset:
value = value.decode(charset)
return value
def guess_charset(msg):
charset = msg.get_charset()
if charset is None:
content_type = msg.get('Content-Type', '').lower()
pos = content_type.find('charset=')
if pos >= 0:
charset = content_type[pos + 8:].strip()
return charset
def print_part(msg):
rs = ""
content_type = msg.get_content_type()
if content_type == 'text/plain' or content_type == 'text/html':
content = msg.get_payload(decode=True)
charset = guess_charset(msg)
if charset:
content = content.decode(charset)
rs = rs + str(content)
else:
rs = rs + str(content_type)
return rs
def print_info(msg):
rs = ""
if (msg.is_multipart()):
parts = msg.get_payload()
for n, part in enumerate(parts):
if part.is_multipart():
rs = rs + print_info(part)
else:
rs = rs + print_part(part)
else:
return print_part(msg)
return rs
ç¼åRESTæå¡
解æå®é®ä»¶åï¼æ们æå 容åæ¾å¨sqlite3ä¸ãæ¥ä¸æ¥å°±æ¯ç¼åæ°æ®æ¥å£äºã
æ们çç®çæ¯å°½éæ¹ä¾¿é®ä»¶çè·å,REST+json
æ¯é¦éçãpythonçflask
åºæ çæ¯æç®åæéåçã
import json
from flask import Flask
from flask import send_file
from data import dataInstance
app = Flask(__name__)
dao = dataInstance
def web_start(host, port):
app.run(host=host, port=port)
@app.route('/')
def index():
return send_file('static/index.html')
@app.route('/all')
def msg_all():
rows = dao.read_all()
return json.dumps(rows)
@app.route('/from/<addr>')
def msg_from(addr):
rows = dao.read_from(addr)
return json.dumps(rows)
@app.route('/to/<addr>')
def msg_to(addr):
rows = dao.read_to(addr)
return json.dumps(rows)
å¦ä½ æè§ï¼æä¾äºä¸ä¸ªæ¥å£ 1ï¼/all è·åææé®ä»¶ 2) /from/{addr} æ ¹æ®åéæ¹æ¥æ¾é®ä»¶ 3) /to/{addr} æ ¹æ®æ¥æ¶æ¹æ¥æ¾é®ä»¶
æ¯æ¬¡æ¥è¯¢åå¤è¿å100æ¡è®°å½ï¼åæ£å¤äºä½ ä¹ç¨ä¸çã
è¯éªä¸ä¸
ä½¿ç¨ [email protected] 注åä¸ä¸ªè´¦å·ã使ç¨curlæè æµè§å¨è·åé®ä»¶ä¿¡æ¯ï¼
curl -XGET http://sayhiai.com:14000/to/[email protected]
æè ä½¿ç¨ http://sayhiai.com:14000/ å¨çº¿æ¥è¯¢ä¸ä¸ã
æçå¤ªæ ¢ï¼è®°å¾èªå·±æ建ä¸ä¸ªåï¼å«å¿äºSMTPDç端å£æ¯25ï¼ç»å®å ¶ä»çæ¯ä¸è¡ç
ç»å°¾
è³æ¤ï¼ ä¸ä¸ªå®ç¾çéç¯å®æäºãæè®°çå段æ¶é´æäºåå¦è¿å¯¹å¾®è½¯æ¶è´githubå¿åä¸æ»¡ï¼æ¯æ¶åç»ä½ ä¸ä¸ªåæ³çéå¾äºï¼æ³¨æå¤å¼å 个ipã
ä½ ç§ç§ä½ ç§ç§ï¼å³ä½¿githubè¿ä¹å¤§çä¸ä¸ªç½ç«ï¼ä» ä» é®ç®±éªè¯å°±éè¿äºï¼å¯ä»¥é¢è§ç½ç»ä¸æå¤å°çç½ç«å¯ä»¥ä½¿ç¨ç¸åçæè·¯å»æã
æå·²ç»æ代ç æ¾å°githubä¸äº :) :) :). https://github.com/lycying/crazy-email-recv-srv ï¼å¯¹ä½ æ帮å©çè¯å«å¿äºå
³æ³¨å¾®ä¿¡å
¬ä¼å·å°å§å§å³é
ï¼å¦æ顺便æèµå æ¯é±ï¼é£æ¯æå¦ä¸è¿äºãè¦æ¯ä½ å¹²äºåäºçè¯ï¼å°±å
ä¸è¦çåäºï½