主なアイデア:
(1)ブラウザのクッキーの出力
それぞれのデータベースを接続するには、入力クエリは、カーソルは、クッキーを取得するために来る
その行に、各列[X]データの単一列であるため、カーソルを横切ります完全に与えるために、[終了]
レコードを。
(2)履歴は、出力ブラウザレコード
上記接続、クエリほとんど変化、二つのテーブルのクエリの共同使用を
(3)出力、Googleのクエリレコード
の歴史を抽出する正規表現によって、Googleの検索レコードに降ります
(4)主な機能は、
最初の対応するデータベースの存在は、対応するユーザ情報取得機能を実行するか否かを判断します
問題が発生した3
(1)ここで、入力のURL、パスでパラメータエラーを取得するプログラムを空白に遭遇しました。
対処:入力でパスをラップ二重引用符を使用して
(2)代替のvimエディタで使用される、対応します。ステートメント
ESC:%S / 1/2 / G // 紙2 / gのを交換する1のみ最初の行当たりの置換Gことなく、全体的な交換の最後に追加される
前に事前に取得した適切なディレクトリを入力する(3)。データベースが存在するかどうかを検出し、結果が不十分な権限遭遇
長い時間とシフトのためにここにアクセスできないを
解決:クエリネットコムは、問題を得るのを助けるために、Microsoftの公式の直接のキーワードで問題が発生していた
主にファイルのプロパティを変更するには- >セキュリティ- >高度な- >現在のユーザーにファイルの所有者を変更する
現在のユーザーがコントロールパネルを開くことができます取得- >ユーザーがクエリを占める
(4).sqliteデータベースの
クエリテーブル、ショーのテーブルを使用することができない、sqlite_masterから選択名を使用します
4.まとめ収穫
検索エンジン技術は、直接公式文書を参照して、直接答えを質問することは困難である(1)。
選択グーグルの公式ウェブサイトを検索するためにグーグルを使用し、Baiduのピット再び、
Bingの経験を使用して、もちろん、百度ほど良好ではない
(2)。正規表現の基礎
適切な文書
http://www.runoob.com/regexp/regexp-syntax.html
II。コード
#!/usr/bin/python
#encoding:utf-8
import re
import os
import optparse
import sqlite3
def printCookies(cookieDB):#找到存储cookie的数据库,获取cookie数据
try:
conn = sqlite3.connect(cookieDB)
c = conn.cursor()
c.execute('SELECT host,name,value FROM moz_cookies')
print '---Found Cookies---'
for row in c:
host = str(row[0])
name = str(row[1])
value = str(row[2])
print 'Host: '+str(host)+' Name: '+str(name)+' Value: '+str(value)
except Exception,e:
print e
if 'encrypted' in e:
print '[-] You should updata your python-sqlite3 library'
exit(0)
def printHistory(placesDB): #通过places数据库,获取用户的历史浏览记录,下载记录等信息
History = open('History.txt', 'w')
try:
conn = sqlite3.connect(placesDB)
c = conn.cursor()
c.execute('SELECT url,datetime(visit_date/1000000,\'unixepoch\') \
FROM moz_places,moz_historyvisits WHERE visit_count > 0 \
AND moz_places.id == moz_historyvisits.place_id;')
print >> History,'[*]---Found History---'
for row in c: #遍历每一行
url = str(row[0]) #遍历每一个属性
date = str(row[1])
print >> History,'[+] '+str(date)+' - visited: '+str(url) #输出利用了重定向,使得输出结果放在一个文件中
except Exception,e:
print e
if 'encrypted' in e:
print '[-] You should updata your python-sqlite3 library'
exit(0)
def printGoogle(placesDB): #查找google搜索记录
try:
conn = sqlite3.connect(placesDB)
c = conn.cursor()
c.execute('SELECT url,datetime(visit_date/1000000,\'unixepoch\') \
FROM moz_places,moz_historyvisits WHERE visit_count > 0 \
AND moz_places.id == moz_historyvisits.place_id;')
print '[*]---Found Google History---'
for row in c: #遍历每一行
url = str(row[0]) #遍历每一个属性
date = str(row[1])
if 'google'in url.lower():
r = re.findall(r'q=.*\&',url) #利用正则表达式,查找搜索的关键字
if r:
Google = open('google.txt', 'w')
search = r[0].split('&')[0]
search = search.replace('q=','').replace('+',' ')
print >> Google,'[+] ' +date+ ' - Searched For: '+search
except Exception,e:
print e
if 'encrypted' in e:
print '[-] You should updata your python-sqlite3 library'
exit(0)
def main():
parser = optparse.OptionParser('-p <Database PathName>')
parser.add_option('-p', dest='path', type='string', help='specify the PathName')
(options,args) = parser.parse_args()
path = options.path
if path == None:
print parser.usage
exit(0)
elif os.path.isdir(path) == False:
print '[-] Your path not exist'
exit(0)
else:
cookieDB = os.path.join(path, 'cookies.sqlite')
if os.path.isfile(cookieDB):
printCookies(cookieDB)
else:
print '[-] The cookies.sqlite not exist'
placeDB = os.path.join(path, 'places.sqlite') #复合目录
if os.path.isfile(placeDB):
printHistory(placeDB)
printGoogle(placeDB)
else:
print '[-] The places.sqlite not exist'
if __name__ == '__main__':
main()