Kali grup引导卸载还原win7引导笔记

之前本地装了Kali,实际效果不是太好,没有无线网卡,而且没有在虚拟机中运行流畅,卡死过几次,每次启动都是grup引导win7,想卸载了,又怕win7系统出问题,因为系统放的东西太多,重装的代价太大了,开始想过先用grup引导win7,grup是装在kali上做引导的,不可行。之后想了在win7下先恢复了win7引导,然后删掉linux分区,再把分区转换为NTFS的,或者合并为C盘。

用到了四个工具:
1.DiskGenius 修复分区表用,清理 grup引导工具
2.NTBOOTautofix 恢复win7 MBR
3.TonPE_1.9.4.0 PE工具,pe系统
4.WINPM 无损分区用。

Python的BeautifulSoup html解析库

今天看了下python也有一个html解析类库,这样就不用写繁琐的正则去抓内容和修改内容了。与php的simple_html_dom解析类库很相似,用法也都相似,总结了下常用的代码,记录下已备后需。

#http://beautifulsoup.readthedocs.org/zh_CN/latest/
# coding:utf-8
from bs4 import BeautifulSoup

html_doc = “””
<html><head><title>The Dormouse’s story</title></head>
<body>
<p class=”title”><b>The Dormouse’s story</b></p>

<p class=”story”>Once upon a time there were three little sisters; and their names were
<a href=”http://example.com/elsie” class=”sister” id=”link1″>Elsie</a>,
<a href=”http://example.com/lacie” class=”sister” id=”link2″>Lacie</a> and
<a href=”http://example.com/tillie” class=”sister” id=”link3″>Tillie</a>;
and they lived at the bottom of a well.</p>
“””
soup = BeautifulSoup(html_doc)
#获取html
#print soup.prettify()#格式化输出
#print soup.name

#打印title标签,贪心模式
print soup.title
#打印title标签,非贪心模式
print soup.title.string
#打印上级嵌套标签名
print soup.body.parent.name
#打印段落p标签和标签选择器
print soup.p
print soup.p[‘class’]
print soup.body.p
#超链接相关操作
print soup.a #获取第一个超链接
print soup.find_all(‘a’) #h获取所有超链接
print soup.find(id=”link3″) #超早id为link3返回
print soup.find(“a”, id=”link3″) #匹配id=link3的超链接
print soup.find_all([“a”, “b”]) #多个匹配内推
print soup.find_all(“a”, limit=2)#控制返回链接数
#从文档中找到所有<a>标签的链接
for link in soup.find_all(‘a’):
print(link.get(‘href’))
#从文档中获取所有内容,去掉html标签
print(soup.get_text())
#将body的子节点以列表的方式输出
head_tag = soup.body
print head_tag.contents
#对子节点循环
for child in head_tag.children:
print(child)
#查找所有a标签
print soup.find_all(‘a’)
#按css搜索
print soup.find_all(“a”, class_=”sister”)
print soup.select(“body a”)
#搜索节点
soup.html.find_all(“title”)#子孙节点
soup.html.find_all(“title”, recursive=False)#子节点
#find_all() 方法的返回结果是值包含一个元素的列表,而 find() 方法直接返回结果

全部学习文档URL:http://beautifulsoup.readthedocs.org/zh_CN/latest/
url是一个文档托管中心哦,看起来蛮不错的,以后有合适的文档可以用来托管,收藏了。

Python模拟登陆dede cms后台遇到的问题

网上好多Python模拟登陆网站的源码,今天捣腾了一天时间,全部用了个遍,无奈没有一个可以直接用的,关键是dede的登陆流程没有分析好,开始发现浏览器cookies的sessonid是一直不变的,不论登陆或注销状态都是一样的,估计在服务端的session对应的每次会记录变化,不会每次在cookies更新session标识,而用python访问生成的cookies,如果程序不结束,一直输出cookies中的sessionid也都是一样的,如果程序关闭了,则访问一次在cookies中的sessionid会变化一次,看到博客园也有人遇到过这问题,最终还是在客户端session标识的问题在纠结,尝试用浏览器登陆后在cookies中取出sessionid,然后用python获取登陆后的页面是正常获取的,在python中用下面代码跟踪cookies,一直是失败。

#获得一个cookieJar实例
cj = cookielib.LWPCookieJar()
#cookieJar作为参数,获得一个opener的实例
opener=urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))

压根没用过urllib和urllib2这两个库,一直在调试sessionid的问题,最后发现是cookies问题,网上的代码适合直接提交表单,如果没有访问页面直接提交表单的,就不行了,今天一天折腾了这一个问题,像dedecms这种需要先访问页面,然后就会有cookies标识了,和浏览器的操作是同步的就没有问题了。最后用requests库自己写了一个模拟dedecms登陆的小程序,源码如下:

#!/usr/bin/python
#coding:utf8
import requests
login_url = "http://021soft.net/login/login.php"
header = {?? ?"User-Agent":"Mozilla/5.0 (Windows NT 6.1; WOW64; rv:44.0) Gecko/20100101 Firefox/44.0",
"Referer"?? ?:"http://021soft.net/md5/login.php"
}
postdata = {
'userid' : 'test',
'pwd'??? : 'test',
'dopost' : 'login'
}
s = requests.session()#带着sessionid访问,保存登陆状态
loadcookies = s.get(login_url,headers = header) #理解为要先打开网页才能提交表单,先给cookies赋值
post_html = s.post(login_url,data = postdata,headers = header)
print post_html.content
#http://021soft.net/md5/content_list.php?channelid=1
get_html = s.get('http://021soft.net/md5/content_list.php?channelid=1',headers = header)
print get_html.content

标红的为解决问题的部分,过程中把dede的登陆模块都去掉了,php打印数据等等,终于找出问题所在了。下面是利用浏览器登陆后取得cookies中的sessionid登陆访问测试代码:

# coding:utf8
import urllib2,cookielib
import re

cj = cookielib.LWPCookieJar()
cookie_support = urllib2.HTTPCookieProcessor(cj)
opener = urllib2.build_opener(cookie_support, urllib2.HTTPHandler)
urllib2.install_opener(opener)
login_url='http://021soft.net/md5/index.php'
headers = {'cookie':"PHPSESSID=4c1a5105cdc543d6dba394c39932cf59;"}
html=urllib2.urlopen(urllib2.Request(url=login_url,headers=headers)).read()
print html

dedecms经过抓包研究,只需要提交三个字段就好了dopost、userid、pwd其他的隐藏域可以不提交,抓包挨个去掉测试,是否影响登陆。

Python发邮件代码

#!/usr/bin/env python2.7
#coding: utf-8
import smtplib
from email.mime.text import MIMEText
sender = 'longyunaihui@163.com'  #发送邮箱地址
receiver = '610358898@qq.com'    #接受邮箱地址
subject = 'python email test'    #发送邮件标题
smtpserver = 'smtp.163.com'      #邮局服务器
username = 'longyunaihui'        #用户名
password = '*********'           #密码
msg = MIMEText('<html><h1>hello world</h1></html>','html','utf-8')
msg['Subject'] = subject
smtp = smtplib.SMTP()
smtp.connect('smtp.163.com')
smtp.login(username, password)
smtp.sendmail(sender, receiver, msg.as_string())
smtp.quit()

本文代码来自:http://www.cnblogs.com/lonelycatcher/archive/2012/02/09/2343463.html 增加了注释。