首页
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
Search
1
职教云小助手重构更新,职教云助手最新版下载地址【已和谐】
13,378 阅读
2
职教云-智慧职教,网课观看分析(秒刷网课)
10,990 阅读
3
gradle-5.4.1-all.zip下载
8,882 阅读
4
职教云-智慧职教,签到补签分析(逆天改命系列)
7,836 阅读
5
一个优秀的程序员从写文档开始:免费领14个月语雀云笔记会员
6,875 阅读
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
登录
/
注册
Search
Lan
累计撰写
624
篇文章
累计收到
617
条评论
首页
栏目
学习笔记
Web
Python
转载文章
算法刷题
JS逆向
综合笔记
安卓
物联网
Java
C
资源收集
软件收藏
网络资源
影视专辑
TED英语角
随便写写
随手拍
页面
畅所欲言
友情链接
壁纸大全
数据统计
推荐
工具箱
在线白板
搜索到
142
篇与
的结果
2020-06-05
用python发送邮件
使用python发送邮件代码,做个小笔记,这玩意每次使用直接cv改一改就行了def send_mail(infomation, old_nums, old_titles, recever): new_contents = '' # By:www.lanol.cn # autor:Lan try: content = MIMEText(mail_content, 'plain', 'utf-8') reveivers = f"{recever}" content['To'] = reveivers # 设置邮件的接收者,多个接收者之间用逗号隔开 content['From'] = str("admin@lanol.cn") # 邮件的发送者,最好写成str("这里填发送者"),不然可能会出现乱码 content['Subject'] = f"{主题}" # 邮件的主题 smtp_server = smtplib.SMTP_SSL("{发送服务器}", { 端口 }) smtp_server.login("{发送邮箱}", "{邮箱密码}") smtp_server.sendmail("{发信人}", [{收信人,是一个列表}], content.as_string()) smtp_server.quit() except Exception as e: print(str(e)) except smtplib.SMTPException: print("Error: 无法发送邮件")
2020年06月05日
686 阅读
0 评论
0 点赞
2020-06-04
如何在你神不知不觉的情况下利用你QQ发送小广告,罪魁祸首竟是他,用python带你体验全过程。(三)
三、代码 在这里呢,那些比较恶意的代码就不放出来了,来几个好玩的吧,比如发说说啥的。3.1利用python发说说代码:import re import time from random import random import requests # Hash33算法 def hash33(t, e=0): for i in range(len(t)): e += (e << 5) + ord(t[i]) return 2147483647 & e # 用于登陆获取Cookie def login(): ss = requests.session() url = 'https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=3&d=72&v=4&t=' + str( '0.' + str(int(random() * 10000000000000000))) response = ss.get(url=url) with open('qrcode.png', 'wb') as f: f.write(response.content) cookie = response.cookies headers = requests.utils.dict_from_cookiejar(cookie) print(headers) while True: url = f'https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html' f'%3Fpara%3Dizone%26from%3Diqq&ptqr' f'token={hash33(headers["qrsig"])}&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0' f'-1542784335061&js_ver=10289&js_type=1&login_sig=hn6ZiMZRPT8LWFsFG3MrScznzLVrdbwS9EIo-ihAmeD' f'*YmOfqP3uoI6JytVVQYw2&pt_uistyle=40&aid=549000912&daid=5& ' html = ss.get(url=url, headers=headers) type = re.findall('[u4e00-u9fa5]+', html.text)[0] if type == '二维码未失效': print(type) elif type == '二维码认证中': print(type) elif type == '登录成功': print(type) return html.cookies else: print("二维码已失效,请重新扫码!") login() time.sleep(2) # 主体,用来发送说说的 def send(): headers = { 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8', 'origin': 'https://user.qzone.qq.com', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/83.0.4103.61 Safari/537.36', } cookie = login() cooksdict = requests.utils.dict_from_cookiejar(cookie) content = input("请输入说说内容:") qq = input("请输入你的QQ:") res = requests.get(url=f'https://user.qzone.qq.com/{qq}/infocenter', headers=headers, cookies=cookie).text # 获取qzonetoken的页面源码 qzonetoken = re.findall('{ try{return "(.*?)";}', res)[0] # 解析出qzonetoken g_tk = hash33(cooksdict['skey'], 5381) # 从Cookie中获取g_tk url = f'https://user.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?qzonetoken={qzonetoken}&g_tk={g_tk}' data = { 'syn_tweet_verson': '1', 'paramstr': '1', 'pic_template': '', 'richtype': '', 'richval': '', 'special_url': '', 'subrichtype': '', 'who': '1', 'con': content, 'feedversion': '1', 'ver': '1', 'ugc_right': '1', 'to_sign': '0', 'hostuin': qq, 'code_version': '1', 'format': 'fs', 'qzreferrer': 'https://user.qzone.qq.com/' + qq, } response = requests.post(url=url, headers=headers, data=data, cookies=cookie) print(response.status_code) if __name__ == '__main__': send()成功截图: 4.2 盘他继续抓包分析,账号密码随便输入之后,然后他提示密码错误,好吧那就来复杂一点的虚假信息。可以看到他这时候跳转到了官方页面,掩人耳目,让你不知道自己的信息已经泄露了。然后分析一下这个记录这是一个get请求,账号密码都携带在请求url中,这样的话,我们只需要不断生成随机信息,请求过去,这样他就会不断接受到你发的虚假信息了。 能看到这里说明,你厉害,欢迎来我的博客转转百度搜索:Lan的小站,第一个就是哦,或者直接访问https://www.lanol.cn
2020年06月04日
695 阅读
0 评论
0 点赞
2020-06-03
如何在你神不知鬼不觉的情况下利用你QQ发送小广告,罪魁祸首竟是他,用python带你体验全过程。(二)
2.3 伪装成用户发送说说2.3.1 使用python发说说 伪装发包呢,我们就直接用python盘他,那就这样开始吧。 首先呢,我们需要导入一个模块requests,用来帮助我们发包以及后期的骚操作。import requests 然后就是设置三个参数,请求URL,请求头,表单数据,这些在上一节中以及分析过了,直接照搬照抄就行了,然后就是代码,url = 'https://user.qzone.qq.com/proxy/domain/taotao.qzone.qq.com/cgi-bin/emotion_cgi_publish_v6?qzonetoken=79509429e2fcb1a2a144a81d05f276e0695b6c542b02be691eb7e50c3944ed46751c4d46c22bb589b4&g_tk=428053921' headers = { 'content-type': 'application/x-www-form-urlencoded;charset=UTF-8', 'cookie': 'qz_screen=1536x864; QZ_FE_WEBP_SUPPORT=1; __Q_w_s__QZN_TodoMsgCnt=1; Loading=Yes; RK=wEqZRhmiYM; ptcz=6ba4ad48c0993a9803b17b7cd71f402d78cc3a13ac6c8eaad6a2f3425ac813b0; logout_page=dm_loginpage; dm_login_weixin_rem=; pgv_pvi=2620835840; pgv_pvid=6287814200; pgv_info=ssid=s4061550260; pgv_si=s32916480; _qpsvr_localtk=0.044227743304393385; ptui_loginuin=2123432340; uin=o2123432340; skey=@ZIn5D4kG1; p_uin=o2123432340; pt4_token=W05iPjuHpiITZnV9DPyR0kdOEkKObZr4bJxhq7vd3Kc_; p_skey=GSHvtQxQPQcYWoUBhol-r8ZI2jlrN0uHE*W7Yl6ejkY_; 2123432340_todaycount=0; 2123432340_totalcount=7; cpu_performance_v8=4', 'origin': 'https://user.qzone.qq.com', 'referer': 'https://user.qzone.qq.com/2123432340', 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36', } data = { 'syn_tweet_verson': '1', 'paramstr': '1', 'pic_template': '', 'richtype': '', 'richval': '', 'special_url': '', 'subrichtype': '', 'who': '1', 'con': '2020年6月2日18:24:57,伪造发说说测试!!!', 'feedversion': '1', 'ver': '1', 'ugc_right': '1', 'to_sign': '0', 'hostuin': '2123432340', 'code_version': '1', 'format': 'fs', 'qzreferrer': 'https://user.qzone.qq.com/2123432340', } 然后就是POST请求,这样写:response = requests.post(url=url, headers=headers, data=data) 然后为了展示效果,我们输出一下状态码以及返回内容。print(response.text) print(response.status_code)然后就是代码跑起来!跑完之后可以看到,这里返回的状态码是200,说明请求正常。 返回到自己的空间,刷新一下,可以空间说说已经发送出去了,这样就实现了用python发说说的过程。2.3.2 获取qzonetoken 接下来的任务就是,分析qzonetoken和g_tk这两个值是怎么来的?首先第一个qzonetoken,现在回到浏览器,全局搜索一下qzonetoken, 可以发现这里出现很多条包含qzonetoken的,这里我们再在qzonetoken后面加一个 =再进行搜索,因为我们要知道他是怎么来的,所以查他是怎么赋值的。 哦吼,这样就只有一条信息了,然后点开看一下。然后这就是所谓的qzonetoken了,居然直接包含在网页代码中,所以到此就可以取得qzonetoken了,直接到时候解析html即可。2.3.3 获取g_tk 然后就是下一个值g_tk,然后在这搜索g_tk =,可以看到只有一条记录了, 然后我看到了一个getToken(),我们来搜索一下这个方法 然后就可以看到这个方法是这样子的(红框内为算法,箭头表示位置) 到这里也就只能打个断点调试一下吧, 然后就卡在这里了,我们来慢慢分析一下。往上面翻一点就可以看到这串东西了。def g_tk(t): e = 5381 for i in range(len(t)): e += (e << 5) + ord(t[i]) return e & 2147483647看到这,我不禁想起了我中午才弄过的hash33,详情见:python实现hash33加密算法,长得似乎差不多呀。然后问题就来了,n是个啥,既然在调试,我们直接控制台输出一下就行了getToken: function() { try { return top.QZONE.FP.getACSRFToken() //尝试返回 } catch (a) { var e = 5381 //否则直接算 , t = n.get("p_skey") || n.get("skey") || n.get("rv2"); for (var i = 0, r = t.length; i < r; ++i) { e += (e << 5) + t.charAt(i).charCodeAt() } return e & 2147483647 } }, 输出测试一下: 看,又出现了,他的neme是不是就是罪魁祸首cookie,这样的话t也就不难理解了,t = n.get("p_skey") || n.get("skey") || n.get("rv2") 就是取cookie里面的p_skey或者skey或者rv2,然后最后返回了一串数字,就是所谓的g_tk了,不信?我们来看下。 然后呢,用python改写一下就是这样子的。def g_tk(t): e = 5381 for i in range(len(t)): e += (e << 5) + ord(t[i]) return e & 2147483647输出测试一下:传入p_skey或者skey或者rv2就可以返回需要的g_tk了。至此为止,我们就只需要获取到Cookie就可以为所欲为了,那么这时候可能就有人问了,Cookie怎么来呢,别人怎么知道我的Cookie呢?那就接着往下看吧!2.4 怎么获取你的Cookie 这个就有很多方式了,不过只要你注意的话还是可以防得住的,像我的cookie就从来没有泄露过。 这不正愁不知道哪里找素材,这里就有人送上门来了,刚刚空间收到一条留言,是这样子的眼熟不。 我们将这个二维码转成网址,最终的结果是这样https://w.url.cn/s/ApUGGIq,然后这个是一个短网址,我们需要将他还原一下, 哎哟我去,又是一层短网址,这套娃玩的。。继续走你然后就找到了这个网站https://qdhlcgs.com/高仿QQ空间登陆页面。看人家多贴心,键盘都给你准备好了 如果这时候你输入了账号密码,你的QQ和密码就会被记录到后台,这时候Cookie啥的就不在话下了,然后那些所谓的黑客最后只需要将账号密码导出,批量通过QQ账号密码获取Cookie,然后就可以为所欲为了,然后我在网上看到这么一款软件,你懂得。基本上发说说,给好友群发消息或者等等一系列行为基本上都可以实现了。 至于怎么登陆获得cookie可以看下我的这篇用python代码扫码登陆QQ空间获取Cookie值,QQ登陆协议,python模拟登陆QQ
2020年06月03日
719 阅读
0 评论
0 点赞
2020-06-03
如何在你神不知鬼不觉的情况下利用你QQ发送小广告,罪魁祸首竟是他,用python带你体验全过程。(一)
一、前言 在日常生活中是不是经常看到朋友QQ被盗然后发一些羞羞的东西亦或者一些莫名其妙的网址呢?你真的以为是好友QQ被盗了吗?其实不是的,经过我的一顿操作分析,得出结论罪魁祸首居然是Cookie,然后让我们用python来实现这个过程。二、分析2.1 为什么是Cookie呢? 曾在几年前,我混迹过所谓的盗号圈,深谙此道,其之繁琐不可谓让人望而止步,首先就是需要号主大量的真实信息,比如姓名,身份证,密码,老密等。然后还得是号主长期不在线等情况,才有可能盗号成功。而那些所谓的“黑客”不可能花费这么大的精力去针对你一个号,因为你应该可以经常看到自己的好友发些这样的内容吧。这是一个广撒网的过程,海王,你懂得。 如果是被盗号,那么密码势必会被更改,如果密码被更改,你手机上所有用QQ登陆的软件都会被强制下线,那这个时候你会无所察觉吗?2.2 怎么发送说说呢?2.2.1 这是一堆废话 首先,我们平时发一条说说需要什么呢?一台有网的手机,再打开QQ空间,然后发送说说,亦或者登陆电脑QQ空间页面,然后发送一条说说,这样子一条说说就发出去了,咳咳,别走哟,干货马上开始!2.2.2 抓包分析 硬核开始,现在开始分析究竟发一条说说需要什么(为了隐私,我换成小号来试验了) 浏览器F12,切换到Network。选择XHR。 点击发送,我们就会看到右边这个出现了一个内容 为了方便我们分析,所以先将右边这个窗口分离出来,操作步骤: 然后来介绍一下,这个包吧,仔细看图哟,首先是第一部分General 然后是Response Headers这一块是返回头,我们一般可以不用管,重点是下面的这个Request Headers请求头,因为我们需要发送说说就需要伪造成号主,而这一块就是所谓的号主信息,也就是Cookie。 用户电脑信息,如浏览器,系统 Query String Parameters信息,请求url里面的参数 最后也是最有看点的信息Form Data,不知道大家是否还记得以前学过的HTML的Form,就是那个哟,表单数据。 综上,我们对发送一条说说需要哪些信息进行了分析,就目前来看,形势一片大好,为啥呢?在Query String Parameters和Form Data两个东西中,我们只有两个参数需要去“破解”,一个是qzonetoken和g_tk,其他的都是些0,1啥的,暂时不管,有需要我们再去破解(就是这么直接),然后con就是我们要发生的内容,So?进入下一步,用软件伪造发包。
2020年06月03日
688 阅读
0 评论
0 点赞
2020-06-02
用python代码扫码登陆QQ空间获取Cookie值,QQ登陆协议,python模拟登陆QQ
前几天研究了下QQ群的几个接口,但是最后面都需要手动输入Cookie才可以运行,然后今天又研究了一下QQ空间的登陆接口,然后就有了下面这些代码,最终的返回值是登录成功的Cookie值。需要手动打开目录下的qrcode.png然后进行扫码。 import re import time from random import random import requests def hash33(t): e = 0 for i in range(len(t)): e += (e << 5) + ord(t[i]) return 2147483647 & e def login(): ss = requests.session() url = 'https://ssl.ptlogin2.qq.com/ptqrshow?appid=549000912&e=2&l=M&s=3&d=72&v=4&t=' + str( '0.' + str(int(random() * 10000000000000000))) response = ss.get(url=url) with open('qrcode.png', 'wb') as f: f.write(response.content) cookie = response.cookies headers = requests.utils.dict_from_cookiejar(cookie) print(headers) while True: url = f'https://ssl.ptlogin2.qq.com/ptqrlogin?u1=https%3A%2F%2Fqzs.qzone.qq.com%2Fqzone%2Fv5%2Floginsucc.html' f'%3Fpara%3Dizone%26from%3Diqq&ptqr' f'token={hash33(headers["qrsig"])}&ptredirect=0&h=1&t=1&g=1&from_ui=1&ptlang=2052&action=0-0' f'-1542784335061&js_ver=10289&js_type=1&login_sig=hn6ZiMZRPT8LWFsFG3MrScznzLVrdbwS9EIo-ihAmeD' f'*YmOfqP3uoI6JytVVQYw2&pt_uistyle=40&aid=549000912&daid=5& ' html = ss.get(url=url, headers=headers) type = re.findall('[u4e00-u9fa5]+', html.text)[0] if type == '二维码未失效': print(type) elif type == '二维码认证中': print(type) elif type == '登录成功': print(type) return html.cookies else: print("二维码已失效,请重新扫码!") login() time.sleep(2) if __name__ == '__main__': print(login())
2020年06月02日
2,747 阅读
7 评论
0 点赞
2020-06-01
自动获取群员名称并用群员名称生成词云图,生成QQ好友列表昵称词云图
利用昨天的QQ群获取的bkn值来获取指定QQ群的群员昵称,然后生成词云图,也可以根据自己的好友列表的昵称生成词云图。这个就直接上代码了:import re import requests from matplotlib import pyplot as plt from wordcloud import WordCloud # 根据skey获取bkn值 def get_bkn(skey): e = skey t = 5381 n = 0 o = len(e) # www.lanol.cn By:Lan while n < o: t += (t << 5) + ord(e[n]) n += 1 return t & 2147483647 # 获取好友列表昵称 def getfriendlist(bkn): url = 'https://qun.qq.com/cgi-bin/qun_mgr/get_friend_list' data = { 'bkn': bkn, } html = requests.post(url=url, headers=headers, data=data).json() result = html['result'] ids = [] names = [] for i in result: ids.append(i) for i in range(1, len(ids)): a = result[str(ids[i])] mems = a['mems'] for j in mems: names.append(j['name']) return str(names) # 获取群友名称 def getgrouplist(bkn, groupid): url = 'https://qun.qq.com/cgi-bin/qun_mgr/search_group_members' nicks = [] data = { 'gc': groupid, 'st': '0', 'end': '20', 'sort': '0', 'bkn': bkn, } html = requests.post(url=url, headers=headers, data=data).json() nums = html['count'] for i in range(0, nums, 40): data = { 'gc': groupid, 'st': i, 'end': i + 40, 'sort': '0', 'bkn': bkn, } html = requests.post(url=url, headers=headers, data=data).json() mems = html['mems'] # From: www.lanol.cn Author:Lan for i in mems: nicks.append(i['nick']) return str(nicks) def getresult(words): words = str(words).replace('nbsp', '').replace(''', '').replace('u3000', '').replace('u202d', '').replace( 'amp', '') font = 'msyh.ttc' # From:www.lanol.cn Author:Lan wc = WordCloud(font_path=font, # 如果是中文必须要添加这个,否则会显示成框框 background_color='white', width=1800, height=1080, ).generate(words) wc.to_file('a.png') plt.imshow(wc) plt.axis('off') input("结果已生成在代码目录下的a.png, 欢迎来我博客转一转www.lanol.cn 回车后退出") plt.show() if __name__ == '__main__': cookie = input("请输入QQ登陆的Cookie值:") headers = { 'cookie': cookie } bkn = get_bkn(re.findall('; skey=(.*?);', cookie)[0]) a = input('1,生成好友列表词云图 2,生成群友昵称词云图 >>>') if a == '1': getresult(getfriendlist(bkn)) elif a == '2': groupid = input("请输入群号:") getresult(getgrouplist(bkn, groupid)) else: input("当前功能不存在")这个一些细节部分根据自己需要然后优化修改一下就行了。生成的结果图片在软件目录的a.png(自己可以获取群名称,我就懒得改了)cookie获取方法下次再水一篇帖子。使用教程:因为刚刚有人评论不会使用,所以就来一个使用教程吧。首先呢,你需要有一个python环境,然后需要安装wordcloud模块,request模块以及matplotlib模块然后再新建一个py文件,将上面的代码全部复制到py文件中,然后运行即可。Cookie获取方法:进入这个网站:https://qun.qq.com/member.html登陆之后,刷新,点击F12,点击XHR,再点击这里面的随便一条记录找到Cookie,然后将后面的内容全部复制,如图我的这个就是pgv_pvi开始一直复制到2034也就是结尾,这个就是Cookie值
2020年06月01日
1,190 阅读
2 评论
0 点赞
2020-05-29
让python像C#,java一样取下标,Python enumerate() 函数
今天,在某python交流群,看到这样一串代码然后我看到了for循环,然后后面是enumerate,瞬间很多问号,这是个什么东西,百度会告诉我答案,然后就在菜鸟教程上面看到了enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。Python 2.3. 以上版本可用,2.6 添加 start 参数。好吧,不仔细看官方文档的反面教材+1,之前还一直傻乎乎的外面弄一个index,然后在循环里面index+=1,还一边吐槽,python怎么连个下标都要自己取。以下内容转自菜鸟教程:Python enumerate() 函数实例:数据:>>>seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) # 下标从 1 开始 [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]普通的for循环:>>>i = 0 >>> seq = ['one', 'two', 'three'] >>> for element in seq: ... print i, seq[i] ... i +=1 ... 0 one 1 two 2 threefor 循环使用 enumerate:>>>seq = ['one', 'two', 'three'] >>> for i, element in enumerate(seq): ... print i, element ... 0 one 1 two 2 three
2020年05月29日
684 阅读
0 评论
0 点赞
1
...
13
14
15
...
21