在注册表中分析无线访问热点

以管理员权限开启cmd,输入如下命令来列出每个网络显示出profile Guid对网络的描述、网络名和网关的MAC地址

  1. reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged" /s

使用WinReg读取Windows注册表中的内容

连上注册表,使用OpenKey()函数打开相关的键,在循环中依次分析该键下存储的所有网络network profile,其中FirstNetwork网络名和DefaultGateway默认网关的Mac地址的键值打印出来。

  1. #coding=utf-
  2. from winreg import *
  3.  
  4. # 将REG_BINARY值转换成一个实际的Mac地址
  5. def val2addr(val):
  6. addr = ""
  7. for ch in val:
  8. addr += ("%02x " % ord(ch))
  9. addr = addr.strip(" ").replace(" ", ":")[:]
  10. return addr
  11.  
  12. # 打印网络相关信息
  13. def printNets():
  14. net = "/HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/NetworkList/Signatures/Unmanaged"
  15. key = OpenKey(HKEY_LOCAL_MACHINE, net)
  16. for i in range():
  17. try:
  18. guid = EnumKey(key, i)
  19. netKey = OpenKey(key, str(guid))
  20. (n, addr, t) = EnumValue(netKey, )
  21. (n, name, t) = EnumValue(netKey, )
  22. macAddr = val2addr(addr)
  23. netName = name
  24. print('[+] ' + netName + ' ' + macAddr)
  25. CloseKey(netKey)
  26. except:
  27. break
  28.  
  29. if __name__ == "__main__":
  30. printNets()

使用Mechanize把Mac地址传给Wigle

此处增加了对Wigle网站的访问并将Mac地址传递给Wigle来获取经纬度等物理地址信息。

  1. #!/usr/bin/python
  2. #coding=utf-8
  3. from _winreg import *
  4. import mechanize
  5. import urllib
  6. import re
  7. import urlparse
  8. import os
  9. import optparse
  10.  
  11. # 将REG_BINARY值转换成一个实际的Mac地址
  12. def val2addr(val):
  13. addr = ""
  14. for ch in val:
  15. addr += ("%02x " % ord(ch))
  16. addr = addr.strip(" ").replace(" ", ":")[0:17]
  17. return addr
  18.  
  19. # 打印网络相关信息
  20. def printNets(username, password):
  21. net = "SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Signatures\Unmanaged"
  22. key = OpenKey(HKEY_LOCAL_MACHINE, net)
  23. print "\n[*]Networks You have Joined."
  24. for i in range(100):
  25. try:
  26. guid = EnumKey(key, i)
  27. netKey = OpenKey(key, str(guid))
  28. (n, addr, t) = EnumValue(netKey, 5)
  29. (n, name, t) = EnumValue(netKey, 4)
  30. macAddr = val2addr(addr)
  31. netName = name
  32. print '[+] ' + netName + ' ' + macAddr
  33. wiglePrint(username, password, macAddr)
  34. CloseKey(netKey)
  35. except:
  36. break
  37.  
  38. # 通过wigle查找Mac地址对应的经纬度
  39. def wiglePrint(username, password, netid):
  40. browser = mechanize.Browser()
  41. browser.open('http://wigle.net')
  42. reqData = urllib.urlencode({'credential_0': username, 'credential_1': password})
  43. browser.open('https://wigle.net/gps/gps/main/login', reqData)
  44. params = {}
  45. params['netid'] = netid
  46. reqParams = urllib.urlencode(params)
  47. respURL = 'http://wigle.net/gps/gps/main/confirmquery/'
  48. resp = browser.open(respURL, reqParams).read()
  49. mapLat = 'N/A'
  50. mapLon = 'N/A'
  51. rLat = re.findall(r'maplat=.*\&', resp)
  52. if rLat:
  53. mapLat = rLat[0].split('&')[0].split('=')[1]
  54. rLon = re.findall(r'maplon=.*\&', resp)
  55. if rLon:
  56. mapLon = rLon[0].split
  57. print '[-] Lat: ' + mapLat + ', Lon: ' + mapLon
  58.  
  59. def main():
  60. parser = optparse.OptionParser('usage %prog ' + '-u <wigle username> -p <wigle password>')
  61. parser.add_option('-u', dest='username', type='string', help='specify wigle password')
  62. parser.add_option('-p', dest='password', type='string', help='specify wigle username')
  63. (options, args) = parser.parse_args()
  64. username = options.username
  65. password = options.password
  66. if username == None or password == None:
  67. print parser.usage
  68. exit(0)
  69. else:
  70. printNets(username, password)
  71.  
  72. if __name__ == '__main__':
  73. main()

使用OS模块寻找被删除的文件/文件夹:

Windows系统中的回收站是一个专门用来存放被删除文件的特殊文件夹。子目录中的字符串表示的是用户的SID,对应机器里一个唯一的用户账户。

寻找被删除的文件/文件夹的函数:

  1. #!/usr/bin/python
  2. #coding=utf-8
  3. import os
  4.  
  5. # 逐一测试回收站的目录是否存在,并返回第一个找到的回收站目录
  6. def returnDir():
  7. dirs=['C:\\Recycler\\', 'C:\\Recycled\\', 'C:\\$Recycle.Bin\\']
  8. for recycleDir in dirs:
  9. if os.path.isdir(recycleDir):
  10. return recycleDir
  11. return None

用Python把SID和用户名关联起来:

可以使用Windows注册表把SID转换成一个准确的用户名。以管理员权限运行cmd并输入命令:

  1. reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\S-1-5-21-2595130515-3345905091-1839164762-1000" /s
  1. #!/usr/bin/python
  2. #coding=utf-8
  3. import os
  4. import optparse
  5. from _winreg import *
  6.  
  7. # 逐一测试回收站的目录是否存在,并返回第一个找到的回收站目录
  8. def returnDir():
  9. dirs=['C:\\Recycler\\', 'C:\\Recycled\\', 'C:\\$Recycle.Bin\\']
  10. for recycleDir in dirs:
  11. if os.path.isdir(recycleDir):
  12. return recycleDir
  13. return None
  14.  
  15. # 操作注册表来获取相应目录属主的用户名
  16. def sid2user(sid):
  17. try:
  18. key = OpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList" + '\\' + sid)
  19. (value, type) = QueryValueEx(key, 'ProfileImagePath')
  20. user = value.split('\\')[-1]
  21. return user
  22. except:
  23. return sid
  24.  
  25. def findRecycled(recycleDir):
  26. dirList = os.listdir(recycleDir)
  27. for sid in dirList:
  28. files = os.listdir(recycleDir + sid)
  29. user = sid2user(sid)
  30. print '\n[*] Listing Files For User: ' + str(user)
  31. for file in files:
  32. print '[+] Found File: ' + str(file)
  33.  
  34. def main():
  35. recycledDir = returnDir()
  36. findRecycled(recycledDir)
  37.  
  38. if __name__ == '__main__':
  39. main()

使用PyPDF解析PDF文件中的元数据

pyPdf是管理PDF文档的第三方Python库,在Kali中是已经默认安装了的就不需要再去下载安装。

  1. #!/usr/bin/python
  2. #coding=utf-8
  3. import pyPdf
  4. import optparse
  5. from pyPdf import PdfFileReader
  6.  
  7. # 使用getDocumentInfo()函数提取PDF文档所有的元数据
  8. def printMeta(fileName):
  9. pdfFile = PdfFileReader(file(fileName, 'rb'))
  10. docInfo = pdfFile.getDocumentInfo()
  11. print "[*] PDF MeataData For: " + str(fileName)
  12. for meraItem in docInfo:
  13. print "[+] " + meraItem + ": " + docInfo[meraItem]
  14.  
  15. def main():
  16. parser = optparse.OptionParser("[*]Usage: python pdfread.py -F <PDF file name>")
  17. parser.add_option('-F', dest='fileName', type='string', help='specify PDF file name')
  18. (options, args) = parser.parse_args()
  19. fileName = options.fileName
  20. if fileName == None:
  21. print parser.usage
  22. exit(0)
  23. else:
  24. printMeta(fileName)
  25.  
  26. if __name__ == '__main__':
  27. main()

用BeautifulSoup下载图片

  1. import urllib2
  2. from bs4 import BeautifulSoup as BS
  3. from os.path import basename
  4. from urlparse import urlsplit
  5.  
  6. # 通过BeautifulSoup查找URL中所有的img标签
  7. def findImages(url):
  8. print '[+] Finding images on ' + url
  9. urlContent = urllib2.urlopen(url).read()
  10. soup = BS(urlContent, 'lxml')
  11. imgTags = soup.findAll('img')
  12. return imgTags
  13.  
  14. # 通过img标签的src属性的值来获取图片URL下载图片
  15. def downloadImage(imgTag):
  16. try:
  17. print '[+] Dowloading image...'
  18. imgSrc = imgTag['src']
  19. imgContent = urllib2.urlopen(imgSrc).read()
  20. imgFileName = basename(urlsplit(imgSrc)[2])
  21. imgFile = open(imgFileName, 'wb')
  22. imgFile.write(imgContent)
  23. imgFile.close()
  24. return imgFileName
  25. except:
  26. return ' '

用Python的图像处理库读取图片中的Exif元数据

这里查看下载图片的元数据中是否含有Exif标签“GPSInfo”,若存在则输出存在信息。

  1. #!/usr/bin/python
  2. #coding=utf-8
  3. import optparse
  4. from PIL import Image
  5. from PIL.ExifTags import TAGS
  6. import urllib2
  7. from bs4 import BeautifulSoup as BS
  8. from os.path import basename
  9. from urlparse import urlsplit
  10.  
  11. # 通过BeautifulSoup查找URL中所有的img标签
  12. def findImages(url):
  13. print '[+] Finding images on ' + url
  14. urlContent = urllib2.urlopen(url).read()
  15. soup = BS(urlContent, 'lxml')
  16. imgTags = soup.findAll('img')
  17. return imgTags
  18.  
  19. # 通过img标签的src属性的值来获取图片URL下载图片
  20. def downloadImage(imgTag):
  21. try:
  22. print '[+] Dowloading image...'
  23. imgSrc = imgTag['src']
  24. imgContent = urllib2.urlopen(imgSrc).read()
  25. imgFileName = basename(urlsplit(imgSrc)[2])
  26. imgFile = open(imgFileName, 'wb')
  27. imgFile.write(imgContent)
  28. imgFile.close()
  29. return imgFileName
  30. except:
  31. return ' '
  32.  
  33. # 获取图像文件的元数据,并寻找是否存在Exif标签“GPSInfo”
  34. def testForExif(imgFileName):
  35. try:
  36. exifData = {}
  37. imgFile = Image.open(imgFileName)
  38. info = imgFile._getexif()
  39. if info:
  40. for (tag, value) in info.items():
  41. decoded = TAGS.get(tag, tag)
  42. exifData[decoded] = value
  43. exifGPS = exifData['GPSInfo']
  44. if exifGPS:
  45. print '[*] ' + imgFileName + ' contains GPS MetaData'
  46. except:
  47. pass
  48.  
  49. def main():
  50. parser = optparse.OptionParser('[*]Usage: python Exif.py -u <target url>')
  51. parser.add_option('-u', dest='url', type='string', help='specify url address')
  52. (options, args) = parser.parse_args()
  53. url = options.url
  54. if url == None:
  55. print parser.usage
  56. exit(0)
  57. else:
  58. imgTags = findImages(url)
  59. for imgTag in imgTags:
  60. imgFileName = downloadImage(imgTag)
  61. testForExif(imgFileName)
  62.  
  63. if __name__ == '__main__':
  64. main()

使用Python和SQLite3自动查询Skype的数据库

  1. #!/usr/bin/python
  2. #coding=utf-8
  3. import sqlite3
  4. import optparse
  5. import os
  6.  
  7. # 连接main.db数据库,申请游标,执行SQL语句并返回结果
  8. def printProfile(skypeDB):
  9. conn = sqlite3.connect(skypeDB)
  10. c = conn.cursor()
  11. c.execute("SELECT fullname, skypename, city, country, datetime(profile_timestamp,'unixepoch') FROM Accounts;")
  12.  
  13. for row in c:
  14. print '[*] -- Found Account --'
  15. print '[+] User : '+str(row[0])
  16. print '[+] Skype Username : '+str(row[1])
  17. print '[+] Location : '+str(row[2])+','+str(row[3])
  18. print '[+] Profile Date : '+str(row[4])
  19.  
  20. # 获取联系人的相关信息
  21. def printContacts(skypeDB):
  22. conn = sqlite3.connect(skypeDB)
  23. c = conn.cursor()
  24. c.execute("SELECT displayname, skypename, city, country, phone_mobile, birthday FROM Contacts;")
  25.  
  26. for row in c:
  27. print '\n[*] -- Found Contact --'
  28. print '[+] User : ' + str(row[0])
  29. print '[+] Skype Username : ' + str(row[1])
  30.  
  31. if str(row[2]) != '' and str(row[2]) != 'None':
  32. print '[+] Location : ' + str(row[2]) + ',' + str(row[3])
  33. if str(row[4]) != 'None':
  34. print '[+] Mobile Number : ' + str(row[4])
  35. if str(row[5]) != 'None':
  36. print '[+] Birthday : ' + str(row[5])
  37.  
  38. def printCallLog(skypeDB):
  39. conn = sqlite3.connect(skypeDB)
  40. c = conn.cursor()
  41. c.execute("SELECT datetime(begin_timestamp,'unixepoch'), identity FROM calls, conversations WHERE calls.conv_dbid = conversations.id;")
  42. print '\n[*] -- Found Calls --'
  43.  
  44. for row in c:
  45. print '[+] Time: ' + str(row[0]) + ' | Partner: ' + str(row[1])
  46.  
  47. def printMessages(skypeDB):
  48. conn = sqlite3.connect(skypeDB)
  49. c = conn.cursor()
  50. c.execute("SELECT datetime(timestamp,'unixepoch'), dialog_partner, author, body_xml FROM Messages;")
  51. print '\n[*] -- Found Messages --'
  52.  
  53. for row in c:
  54. try:
  55. if 'partlist' not in str(row[3]):
  56. if str(row[1]) != str(row[2]):
  57. msgDirection = 'To ' + str(row[1]) + ': '
  58. else:
  59. msgDirection = 'From ' + str(row[2]) + ' : '
  60. print 'Time: ' + str(row[0]) + ' ' + msgDirection + str(row[3])
  61. except:
  62. pass
  63.  
  64. def main():
  65. parser = optparse.OptionParser("[*]Usage: python skype.py -p <skype profile path> ")
  66. parser.add_option('-p', dest='pathName', type='string', help='specify skype profile path')
  67. (options, args) = parser.parse_args()
  68. pathName = options.pathName
  69. if pathName == None:
  70. print parser.usage
  71. exit(0)
  72. elif os.path.isdir(pathName) == False:
  73. print '[!] Path Does Not Exist: ' + pathName
  74. exit(0)
  75. else:
  76. skypeDB = os.path.join(pathName, 'main.db')
  77. if os.path.isfile(skypeDB):
  78. printProfile(skypeDB)
  79. printContacts(skypeDB)
  80. printCallLog(skypeDB)
  81. printMessages(skypeDB)
  82. else:
  83. print '[!] Skype Database ' + 'does not exist: ' + skpeDB
  84.  
  85. if __name__ == '__main__':
  86. main()

用Python解析火狐浏览器的SQLite3数据库

主要关注文件:cookie.sqlite、places.sqlite、downloads.sqlite

  1. #!/usr/bin/python
  2. #coding=utf-8
  3. import re
  4. import optparse
  5. import os
  6. import sqlite3
  7.  
  8. # 解析打印downloads.sqlite文件的内容,输出浏览器下载的相关信息
  9. def printDownloads(downloadDB):
  10. conn = sqlite3.connect(downloadDB)
  11. c = conn.cursor()
  12. c.execute('SELECT name, source, datetime(endTime/1000000, \'unixepoch\') FROM moz_downloads;')
  13. print '\n[*] --- Files Downloaded --- '
  14. for row in c:
  15. print '[+] File: ' + str(row[0]) + ' from source: ' + str(row[1]) + ' at: ' + str(row[2])
  16.  
  17. # 解析打印cookies.sqlite文件的内容,输出cookie相关信息
  18. def printCookies(cookiesDB):
  19. try:
  20. conn = sqlite3.connect(cookiesDB)
  21. c = conn.cursor()
  22. c.execute('SELECT host, name, value FROM moz_cookies')
  23.  
  24. print '\n[*] -- Found Cookies --'
  25. for row in c:
  26. host = str(row[0])
  27. name = str(row[1])
  28. value = str(row[2])
  29. print '[+] Host: ' + host + ', Cookie: ' + name + ', Value: ' + value
  30. except Exception, e:
  31. if 'encrypted' in str(e):
  32. print '\n[*] Error reading your cookies database.'
  33. print '[*] Upgrade your Python-Sqlite3 Library'
  34.  
  35. # 解析打印places.sqlite文件的内容,输出历史记录
  36. def printHistory(placesDB):
  37. try:
  38. conn = sqlite3.connect(placesDB)
  39. c = conn.cursor()
  40. 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;")
  41.  
  42. print '\n[*] -- Found History --'
  43. for row in c:
  44. url = str(row[0])
  45. date = str(row[1])
  46. print '[+] ' + date + ' - Visited: ' + url
  47. except Exception, e:
  48. if 'encrypted' in str(e):
  49. print '\n[*] Error reading your places database.'
  50. print '[*] Upgrade your Python-Sqlite3 Library'
  51. exit(0)
  52.  
  53. # 解析打印places.sqlite文件的内容,输出百度的搜索记录
  54. def printBaidu(placesDB):
  55. conn = sqlite3.connect(placesDB)
  56. c = conn.cursor()
  57. 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;")
  58.  
  59. print '\n[*] -- Found Baidu --'
  60. for row in c:
  61. url = str(row[0])
  62. date = str(row[1])
  63. if 'baidu' in url.lower():
  64. r = re.findall(r'wd=.*?\&', url)
  65. if r:
  66. search=r[0].split('&')[0]
  67. search=search.replace('wd=', '').replace('+', ' ')
  68. print '[+] '+date+' - Searched For: ' + search
  69.  
  70. def main():
  71. parser = optparse.OptionParser("[*]Usage: firefoxParse.py -p <firefox profile path> ")
  72. parser.add_option('-p', dest='pathName', type='string', help='specify skype profile path')
  73. (options, args) = parser.parse_args()
  74. pathName = options.pathName
  75. if pathName == None:
  76. print parser.usage
  77. exit(0)
  78. elif os.path.isdir(pathName) == False:
  79. print '[!] Path Does Not Exist: ' + pathName
  80. exit(0)
  81. else:
  82. downloadDB = os.path.join(pathName, 'downloads.sqlite')
  83. if os.path.isfile(downloadDB):
  84. printDownloads(downloadDB)
  85. else:
  86. print '[!] Downloads Db does not exist: '+downloadDB
  87.  
  88. cookiesDB = os.path.join(pathName, 'cookies.sqlite')
  89. if os.path.isfile(cookiesDB):
  90. pass
  91. printCookies(cookiesDB)
  92. else:
  93. print '[!] Cookies Db does not exist:' + cookiesDB
  94.  
  95. placesDB = os.path.join(pathName, 'places.sqlite')
  96. if os.path.isfile(placesDB):
  97. printHistory(placesDB)
  98. printBaidu(placesDB)
  99. else:
  100. print '[!] PlacesDb does not exist: ' + placesDB
  101.  
  102. if __name__ == '__main__':
  103. main()

用python调查iTunes手机备份

  1. #!/usr/bin/python
  2. #coding=utf-8
  3. import os
  4. import sqlite3
  5. import optparse
  6.  
  7. def isMessageTable(iphoneDB):
  8. try:
  9. conn = sqlite3.connect(iphoneDB)
  10. c = conn.cursor()
  11. c.execute('SELECT tbl_name FROM sqlite_master WHERE type==\"table\";')
  12. for row in c:
  13. if 'message' in str(row):
  14. return True
  15. except:
  16. return False
  17.  
  18. def printMessage(msgDB):
  19. try:
  20. conn = sqlite3.connect(msgDB)
  21. c = conn.cursor()
  22. c.execute('select datetime(date,\'unixepoch\'), address, text from message WHERE address>0;')
  23. for row in c:
  24. date = str(row[0])
  25. addr = str(row[1])
  26. text = row[2]
  27. print '\n[+] Date: '+date+', Addr: '+addr + ' Message: ' + text
  28. except:
  29. pass
  30.  
  31. def main():
  32. parser = optparse.OptionParser("[*]Usage: python iphoneParse.py -p <iPhone Backup Directory> ")
  33. parser.add_option('-p', dest='pathName', type='string',help='specify skype profile path')
  34. (options, args) = parser.parse_args()
  35. pathName = options.pathName
  36. if pathName == None:
  37. print parser.usage
  38. exit(0)
  39. else:
  40. dirList = os.listdir(pathName)
  41. for fileName in dirList:
  42. iphoneDB = os.path.join(pathName, fileName)
  43. if isMessageTable(iphoneDB):
  44. try:
  45. print '\n[*] --- Found Messages ---'
  46. printMessage(iphoneDB)
  47. except:
  48. pass
  49.  
  50. if __name__ == '__main__':
  51. main()

《Python绝技:运用Python成为顶级黑客》 用Python进行取证调查的更多相关文章

  1. 《Python绝技:运用Python成为顶级黑客》 Python实用小工具

    1.实现简单探测 使用socket模块,connect()方法建立与指定IP和端口的网络连接:revc(1024)方法将读取套接字中接下来的1024B数据 mport socket import sy ...

  2. python绝技:运用python成为顶级黑客|中文pdf完整版[42MB|网盘地址附提取码自行提取|

    Python 是一门常用的编程语言,它不仅上手容易,而且还拥有丰富的支持库.对经常需要针对自己所 处的特定场景编写专用工具的黑客.计算机犯罪调查人员.渗透测试师和安全工程师来说,Python 的这些 ...

  3. Python 绝技 —— TCP服务器与客户端

    i春秋作家:wasrehpic 0×00 前言 「网络」一直以来都是黑客最热衷的竞技场.数据在网络中肆意传播:主机扫描.代码注入.网络嗅探.数据篡改重放.拒绝服务攻击……黑客的功底越深厚,能做的就越多 ...

  4. Python 绝技 —— UDP 服务器与客户端

    i春秋作家:wasrehpic 0x00 前言 在上一篇文章「Python 绝技 —— TCP 服务器与客户端」中,介绍了传输层的核心协议 TCP ,并运用 Python 脚本的 socket 模块演 ...

  5. Python爆火的原因与未来|内附Python学习书籍大礼包无偿领取|

    从12年到20年,python以肉眼可见的趋势超过了java,成为了当今It界人人皆知的编程语言. python为什么这么火? 网络编程语言搜索指数 适合初学者 Python具有语法简单.语句清晰的特 ...

  6. Python高手之路【一】初识python

    Python简介 1:Python的创始人 Python (英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/), 是一种解释型.面向对象.动态数据类型的高级程序设计语言,由荷兰人Guido ...

  7. 跟着老男孩教育学Python开发【第一篇】:初识Python

    Python简介 Python前世今生 Python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解 ...

  8. 【Python五篇慢慢弹】数据结构看python

    数据结构看python 作者:白宁超 2016年10月9日14:04:47 摘要:继<快速上手学python>一文之后,笔者又将python官方文档认真学习下.官方给出的pythondoc ...

  9. python之最强王者(2)——python基础语法

    背景介绍:由于本人一直做java开发,也是从txt开始写hello,world,使用javac命令编译,一直到使用myeclipse,其中的道理和辛酸都懂(请容许我擦干眼角的泪水),所以对于pytho ...

  10. Python之路3【第一篇】Python基础

    本节内容 Python简介 Python安装 第一个Python程序 编程语言的分类 Python简介 1.Python的由来 python的创始人为吉多·范罗苏姆(Guido van Rossum) ...

随机推荐

  1. 【每日更新】【SQL实用大杂烩】

    11.分页1. select * from (select top 2 * from( select top 3 * from t_table order by field1) a order by  ...

  2. Kendo UI 的弹框

    弹出代码: "use strict"; (function (kendo) { kendo.messageShow = function (message, option) { v ...

  3. 面向对象 Java练习

    package xin.bao; public class Pingguo { private String Zhonglei;// 种类 public String getZhonglei() { ...

  4. php调java接口

    1.下载二进制的 JavaBridge.jar包.java/Java.inc库文件,下载地址:http://php-java-bridge.sourceforge.net/pjb/download.p ...

  5. dedecms目录说明

    1.有多个common.inc.php文件,注意引入的是哪一个,引入以后,里面的常量才可以用: 2.路径向上跳转 require_once('../../plus/phpexcel/PHPExcel. ...

  6. Laravel框架中实现supervisor执行异步进程

    问题描述:在使用Laravel框架实现动态网页时,若有些操作计算量较大,为了不影响用户体验,往往需要使用异步方式去处理.这里使用supervisor和laravel自带的queues实现. Super ...

  7. pca总结,非常详细

    #coding=utf- from numpy import * '''通过方差的百分比来计算将数据降到多少维是比较合适的, 函数传入的参数是特征值和百分比percentage,返回需要降到的维度数n ...

  8. 命名空间namespace ,以及重复定义的问题解析

    名字空间是用来划分冲突域的,把全局名字空间划分成几个小的名字空间.全局函数,全局变量,以及类的名字是在同一个全局名字空间中,有时为了防止命名冲突,会把这些名字放到不同的名字空间中去. 首先我们看一下名 ...

  9. 第一部分 Mysql的基础

    一.登录: mysql -h localhost -u root -p #其中,-h表示后面跟着的是服务器主机地址,-u后面跟着的是用户名,-p表示密码# 本地测试: 账号: 二.也可以省略写成: m ...

  10. Robotframework 之常用断言关键字简介

    任何自动化测试框架或实例中断言是必不可少的,Robotframework同样如此,那下面就介绍下其常用断言关键字. 1.Should Be Empty   判断是否为空,如果不为空,执行失败,示例: ...