灰帽python之旅
1. 如何學習python總結之談
零基礎情況下,想學一門語言。其實python非常適合初學者入門。相比較其他不少主流編程語言,有更好的可讀性,因此上手相對容易。那麼如何快速掌握python?
設定目標:做 Python 開發除了熟悉語言本身之外,還需要掌握很多相關聯的技能,好比打NBA,你不光要學如何投籃,還要練習力量、技戰術等一整套東西。所以,一個普通Python Web開發工程師需要掌握的技能包括至少一個Web框架,比如:Django、Flask、Tornado,做業務系統必須熟知一種資料庫,還需要對Linux系統的基本操作和常用命令有所了解,因為以後你寫到程序基本上都會運行在Linux平台上。
開發工具:工欲善其事必先利其器,Python IDE層出不窮,推薦Pycharm 和Sublime兩個工具都是免費的,而且它們的學習成本非常低,網上找一篇教程看了基本就能上手,Vim、Emacs這樣的遠古神器還是放以後再去了解吧。
Python3:新手開始總糾結學 Python2 還是 Python3,這種糾結完全就是給自己徒增煩惱,因為它們是同一種語言,只有少部分地方語法不兼容,盡管目前大部分公司還在用Python2,但是Python3逐漸成為主流已是不爭事實,畢竟後者性能方面更佔有優勢。
學習框架:對於剛入門的人,最重要的是培養Ta的學習興趣和信心。有的會擔心自己的基礎知識都那麼薄弱,如何能學好框架呢?其實這個擔心倒是不必,大多數大型的框架都把功能封裝得很完整,定義了一套在自己的框架下做事的「規則」,學習框架更多的是學習這些「規則」,入門倒不需要很深的理論基礎。
2. 如何快速學習Python
一、Python是一種計算機程序設計語言。
你可能已經聽說過很多種流行的編程語言,比如非常難學的c語言,非常流行的Java語言,適合初學者的Basic語言,適合網頁編程的JavaScript語言等等。
二、那Python是一種什麼語言?
首先,我們普及一下編程語言的基礎知識。用任何編程語言來開發程序,都是為了讓計算機幹活,比如下載一個MP3,編寫一個文檔等等,而計算機幹活的CPU只認識機器指令,所以,盡管不同的編程語言差異極大,最後都得「翻譯」成CPU可以執行的機器指令。而不同的編程語言,編寫的代碼量,差距也很大。
比如,完成同一個任務,C語言要寫1000行代碼,Java只需要寫100行,而Python可能只要20行。
三、所以Python是一種相當高級的語言。
1、你也許會問,代碼少還不好?代碼少的代價是運行速度慢,C程序運行1秒鍾,Java程序可能需要2秒,而Python程序可能就需要10秒。
2、那是不是越低級的程序越難學,越高級的程序越簡單?表面上來說,是的,但是,在非常高的抽象計算中,高級的Python程序設計也是非常難學的,所以,高級程序語言不等於簡單。
3、但是,對於初學者和完成普通任務,Python語言是非常簡單易用的。連Google都在大規模使用Python,你就不用擔心學了會沒用。
4、用Python可以做什麼?可以做日常任務,比如自動備份你的MP3;可以做網站,很多著名的網站包括YouTube就是Python寫的;可以做網路游戲的後台,很多在線游戲的後台都是Python開發的。總之就是能幹很多很多事啦。
5、Python當然也有不能乾的事情,比如寫操作系統,這個只能用C語言寫;寫手機應用,只能用Swift/Objective-C(針對iPhone)和Java(針對Android);寫3D游戲,最好用C或C++。
四、如果你是小白用戶,滿足以下條件:
會使用電腦,但從來沒寫過程序;
還記得初中數學學的方程式和一點點代數知識;
想從編程小白變成專業的軟體架構師;
每天能抽出半個小時學習,不要再猶豫了,這個教程就是為你准備的!准備好了嗎?
3. 學Python要安裝哪些軟體
一. 安裝python
1. 從python官網下載相應版本的python安裝包,打開網路,搜索python官網,或者輸入python官網地址https://www.python.org/
2. 點擊download選擇相應的操作平台
3. 下載完成後點擊安裝包並執行,運行出該界面
4. 這里安裝到c盤上,默認安裝
選擇第一項是系統用戶下所有用戶可啟動,Add Python 3.6 to PATH 是將安裝路徑添加到PATH環境變數中,方便直接運行於系統各種環境中(如果有多個版本的Python或測試環境可不添加,需要添加可手動添加,查找到安裝的地址並復制地址到以下操作,計算機——右鍵屬性——高級系統設置——環境變數——系統變數——選擇PATH——雙擊在變數值中添加——注意在最後添加並有「;」為隔斷符)。
我這里選擇自定義安裝,並全選安裝,開始安裝過程,請耐心等待(所有的項目都選擇,根據網速決定安裝的速度)。如果有未選擇的選項,可直接點擊取消,重新開始安裝過程。 安裝完成,開啟Python之旅。
4. 看Python 超級程序員使用什麼開發工具
我以個人的身份采訪了幾個頂尖的Python程序員,問了他們以下5個簡單的問題:
當前你的主要開發任務是什麼?
你在項目中使用的電腦是怎樣的?
你使用什麼IDE開發?
你將來的計劃是什麼?
有什麼給Python程序員的建議?
就是這幾個問題,我找了幾個頂尖的程序員和編程書籍作家,問他們這幾個相同的問題。下面是他們的回答,希望在他們的回答中你能找到一些可以讓你的開發更便捷的工具。
Alex Martelli
Alex Martelli
人物簡介:Alex Martelli是一位義大利計算機軟體程序員,他是Python軟體基金會的成員。從2005年初開始,他以「Über技術首領」的身份在加利福尼亞景山谷歌總部工作。他擁有義大利Bologna大學電子工程學位(1980)。他是《Python in a Nutshell》一書的作者,他還和其他人合著了《Python Cookbook》,他還寫了一些其它一些作品,大部分都是和Python相關的。因為他對Python社區傑出的貢獻,他被授予的榮譽包括2002 Activators』 Choice Award和2006 Frank Willison award。
你可以通過他的博客了解更多關於他的信息。
問題一、當前你的主要開發任務是什麼?
給我的老闆(谷歌)開發商業軟體,大部分是商業智能方面。
問題二、你在項目中使用的硬體機器是怎樣的?
基本上都是谷歌的雲伺服器,通過谷歌APP引擎直接或間接的使用。有時候也使用一個Unix工作站或Macbook Air,但很少。
問題三、你使用什麼IDE開發?
vim, gvim, mvim; 偶爾用一下iPython,但這好像不能算是IDE吧。
問題四、你將來的計劃是什麼?
應該還會待在谷歌——具體的研究方向那要看實際情況。
問題五、有什麼給Python程序員的建議?
學習一下App Engine(通過webapp2 或flask, jinja2, &c以及其它類似django的輕量級環境):它們大部分都會對你的web項目有很好的用處——如果你想在這些環境之外的地方部署web應用,Appscale會是你最方便的選擇。
Daniel Greenfeld
Daniel Greenfeld
人物簡介: Daniel Greenfeld是《Two Scoops of django》一書的合著人。他有超過6年的在Django領域的研究經驗。之前他在美國宇航局做開發,就是在那裡他開始了他的Python之旅,一直到現在。他目前是Cartwheel Web的負責人。
你可以通過他的Twitter: @pydanny 和他的博客獲取他的更多信息。
問題一、當前你的主要開發任務是什麼?
我現在的工作主要是客戶端方面,基本上都是用Python。內容服務方面有時候會用到Django,但當前的主要工作基本上跟web無關。
問題二、你在項目中使用的硬體機器是怎樣的?
硬體方面,我使用一個2011年的Macbook Air。因為我的開發方式,像Macbook
Air這樣的超級本用起來非常舒服。可蘋果的產品一般都很貴,我就自己配了一個,我打算所有的任務都用它來做。如果哪天我能有一個新的筆記本,我想試試Linux的超級本或Window8的平板(以前我是靠虛擬機運行Windows8)。
問題三、你使用什麼IDE開發?
我使用Sublime Text。我更喜歡文本編輯器,而不是IDE,因為我喜歡深入研究程序庫和它們的文檔,而不是通過IDE工具來提示我。
問題四、你將來的計劃是什麼?
我未來的計劃就是編程,鍛煉,做我最擅長的事情。也許會去一個新地方旅遊。我喜歡去沒有去過的地方,認識新朋友,品嘗沒吃過的食物。但大部分我的旅遊都是基於客戶的需求,今年我不知道什麼時候會有這樣的機會。
問題五、有什麼給Python程序員的建議?
我給Python程序員的建議是挑戰極限。尋找新的代碼庫,研究它們,使用它們。它們有些會不是很好,不好的東西也會教會你一些東西(不該做的事情)。
Miguel Grinberg
Miguel Grinberg
人物簡介: Miguel是一個程序員,攝影師和電影製作人。生活在美國俄勒岡州。他目前正在寫一本關於使用Python和Flask做web開發的書,將會由 O』Reilly Media出版。這本書的官方網站是Flask Book。
你可以通過他的Twitter: @miguelgrinberg 和他的博客獲取更多信息。
問題一、當前你的主要開發任務是什麼?
也許你會吃驚,工作中我並不做web開發。我在為Harmonic做視頻軟體。C++是我在工作中使用的主要語言,但我們卻使用了一個古老的用Python寫的自動化單元測試框架,用起來很有趣。
空閑時間里我目前的第一大任務就是給O』Reilly出版社寫一本關於Flask為框架的書,基本上快寫成了。
問題二、你在項目中使用的硬體機器是怎樣的?
我的機器是一個雙系統的台式機,裝的是Ubuntu和Windows8.1。我還有一個Mac OS X筆記本。
我在跨平台方面有些變態。除了給Arino這樣的嵌入式系統寫代碼外,所有其它我寫的代碼(不管什麼語言),都需要在三種平台上運行。為了達到這個目的,我會不斷的在Linux,Windows和OS X機器間切換。
問題三、你使用什麼IDE開發?
我有一些最愛。PyCharm非常棒,在大型項目時我越來越依賴它,主要是因為它的互動式的調試工具。
在Windows平台上我會使用Visual Studio的一個Python插件,免費的,非常出色,我估計大部分人沒聽說過它。
我還經常使用SublimeText,通常是在筆記本上使用它。
Notepad++是我在Window台式機上最順手的工具。在我所有的電腦上都裝有一個非常老的Vim,即使在Windows上也使用Cygwin運行它。
問題四、你將來的計劃是什麼?
我在四月份的PyCon大會上會有一個關於Flask的演講,我下一步開始著手准備材料,因為書已經快寫好了。
我最近沒怎麼寫博客,我很想寫一點。我想能多騰出一些時間寫博客。我已經擬了一份話題目錄,准備按著這個清單寫。如果需要的話,我可以把裡面的一個關於Flask上的web sockets的文章提到最前面。
問題五、有什麼給Python程序員的建議?
我對所有程序員——不光是Python愛好者——的建議是,多去實踐,然後把它們分享給世界。分享很重要,從別人那獲得反饋是讓你提高的好方法。
而對於Python程序員我想說的是,如果我們只需要用嘴去討論Python2和Python3的差別、而不需要花時間將眾多的軟體移植到Python3,那該多好。玩笑。
說的太好了!
揭開其他程序員的面紗,窺視他們如何施展魔法工作,這很有用。你可以看到,他們使用的工具、技術,我們都可以採用,很多都是免費的。我很感謝他們能分享這些信息。
5. 為什麼打開python程序總是彈出Modify Setup
這是說你運行的其實是一個安裝程序,這個程序安裝完之後就顯示這個界面。並不是指你運行這個程序開啟Python之旅。
如果你使用的操作系統是Windows:當前最穩定的Windows版本下載是"Python3.8.3forWindows"。
如果你使用的是Mac,MacOS10.2(Jaguar),10.3(Panther)and10.4(Tiger)已經集成安裝了Python,但是你大概需要安裝最近通用的構架(build)。
對於RedHat,安裝python2和python2-devel包。
對於Debian,安裝python2.5和python2.5-dev包。
Python由荷蘭數學和計算機科學研究學會的Guido van Rossum於1990 年代初設計,作為一門叫做ABC語言的替代品。
Python提供了高效的高級數據結構,還能簡單有效地面向對象編程。Python語法和動態類型,以及解釋型語言的本質,使它成為多數平台上寫腳本和快速開發應用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用於獨立的、大型項目的開發。
Python解釋器易於擴展,可以使用C或C++(或者其他可以通過C調用的語言)擴展新的功能和數據類型。 Python 也可用於可定製化軟體中的擴展程序語言。Python豐富的標准庫,提供了適用於各個主要系統平台的源碼或機器碼。
6. ida pro怎樣修改寄存器的值
如果你用IDAPYTHON插件的話,用python可以使用Debugger Hooks中的GetRegValue(string Register)函數來獲得,具體請見《灰帽 Python之旅》第11章。
參考資料: 灰帽 Python之旅(http://wenku..com/view/41a862305a8102d276a22fd4.html)
7. 黑客與逆向工程師的Python編程之道的簡介
我為了進行黑客技術研究而特地學習了Python這門語言,我敢斷言在這個領域中的眾多其他同行們也是如此。我曾經花費了大量的時間來尋找一種能夠同時適用於黑客技術和逆向工程領域的編程語言,就在幾年前,Python成為了黑客編程領域內顯而易見的王者。而一個不盡人如意的事實是,到目前為止還沒有一本真正意義上的參考手冊,來指導你將Python應用於不同的黑客技術場景中。你往往需要遊走於各大論壇的技術討論帖子中或者各種工具手冊中。有時為了使你的工具能夠正確地運轉起來,花費一番不小的功夫來閱讀和調試源代碼也是司空見慣的情況。而本書正是致力於填補這方面的空缺,將引領你經歷一次「旋風」之旅——你將看到Python這門語言是如何被應用在各式各樣的黑客技術與逆向工程場景中的。
本書將向你揭示隱藏在各種黑客工具背後的原理機制,其中包括:調試器、後門技術、Fuzzer、模擬器以及代碼注入技術,本書將向你一 一演示如何駕馭這些技術工具。除了學到如何使用現有的基於Python的工具之外, 你還將學習如何使用Python構建自己的工具。需要有言在先的一點就是,這並不是一本大全式的參考手冊!有大量使用Python編寫的信息安全類工具未在此書中被提及。本書的信條是授之以漁,而非授之以魚!你應當把從本書中所獲得的技能靈活地應用於其他的場景中,根據自身的需求對你選擇的其他Python工具進行調試,並做出擴展和定製。
閱讀本書的方式不僅限於一種,如果你是個Python新手或者對於構建黑客工具尚感陌生,那麼從前往後依次閱讀對你來說是最好的選擇,你將從最基本的理論開始,並在閱讀本書的過程中編寫相當數量的Python代碼。當你閱讀完本書時,你應當具備了自行解決各種黑客或逆向工程任務的能力。如果你對Python已有一定程度的了解,並且對Ctype庫的使用駕輕就熟,那麼不妨直接跳過第1章。對於那些行業浸沉已久的老手,相信你們可以在本書中來回穿梭自如,歡迎你們在日常工作中隨時按需擷取本書中的代碼片段或者相關章節。
本書在調試器相關的內容上花費了相當的篇幅,從第2章講述調試器的基本原理開始,直至第5章介紹完Immunity Debugger為止。調試器對於任何一個真正的黑客而言都是至關重要的工具,因此我毫不吝惜筆墨來對它們進行廣泛而全面的介紹。在之後的第6章和第7章中你將學到一些鉤子和代碼注入的技術,這些技術同樣可以被調試器工具採用,作為控製程序流和操縱內存的手段。
本書接下來的焦點放在使用Fuzzer工具來攻破應用程序體繫上。在第8章中,你將開始學習基本的Fuzzing技術理論,我們將構建自己的文件Fuzzing工具。第9章將向你演示如何駕馭強大的Fuzzing框架——Sulley來攻破一個現實世界中的FTP daemon程序。在第10章中,你將學習如何構建一個Fuzzer工具來攻擊Windows驅動。
在第11章中,你將看到如何在IDA Pro中(一款流行的二進制靜態分析工具)實現自動化執行靜態分析任務。在第12章中,我們將介紹一款基於Python的模擬器——PyEmu,來為本書畫上句號。
我試著使出現在本書中的代碼盡量簡潔,並在某些特定的地方加上了詳細的注釋以幫助你理解代碼的本質。學習一門新的編程語言或者掌握一套陌生的函數庫的過程少不了你自己的親身實踐,以及不斷的自我糾正。
8. 求助帖python灰帽子那本書的源碼
黑客與逆向工程師的Python編程之道 原作名: Gray Hat Python: Python Programming for Hackers and Reverse Engineers
作者: [美] Justin Seitz 不容錯過的python奇書,在python資源還較少的市面上,它是一本先行的好書。