《黑客大曝光:移動應用安全揭秘及防護措施》一2.2 攻擊與對策

本節書摘來自華章出版社《黑客大曝光:移動應用安全揭秘及防護措施》一書中的第2章,第2.2節,作者 (美)Neil Bergman ,更多章節內容可以訪問云棲社區“華章計算機”公眾號查看

2.2 攻擊與對策

好,我們已經知道了移動手機網絡的基礎知識;接下來我們來談一下如何攻擊和進行防御。
攻擊移動語音信箱
可能近年來最有名的“移動”攻擊就是發生在英國的《世界新聞報》對人們語音信箱賬號的入侵。想一想,我們已經從這個事件中學到什么了嗎?沒有,它只是證明(甚至在美國)MNO仍然默認配置語音信箱賬號來驗證來自對應電話號碼的任何呼叫,但沒有關于輸入語音信箱密碼的提示。關于《世界新聞報》事件,結果可能更加不幸,但是我們已經看到這種攻擊對聚會的影響,在這些聚會上合作伙伴已經搭建了他們自己私有的PBX服務器(例如,使用像Asterisk的開源架構)。利用這樣的裝置,你能很容易地對呼叫進行路由和實施來電號碼欺騙。這使得只要你知道他們的電話號碼就能訪問任何人的語音信息變得不再那么重要。因此,當一些人隨意問你的電話號碼,然后撥通電話并過一會很快掛掉電話,同時回復你一條語音信箱信息,這時你要提高警惕了,因為很可能是一個騙局。
更糟糕的是,互聯網存在許多通過實施來電號碼欺騙來收取少量費用的服務,所以你能夠通過連接到互聯網上的任何一臺電腦執行這種攻擊。約翰?基夫在下面的文章中介紹了他在這方面的經歷wnyc.org/articles/wnyc-news/2011/jul/18/hacking-voicemails-scary-easy-i-did-it/。基夫的文章也一再論證了這為什么是可能的:AT&T發言人馬克?西格爾說過:“為方便起見,當AT&T用戶使用你的手機訪問語音信箱的時候,他們也可以選擇不輸入密碼”。再一次說明了,簡單勝過安全。哎!
針對移動語音信箱攻擊的對策
我們將盡量保持簡單和簡短—設置一個語音信箱密碼(具有適當復雜性),然后配置成在所有情況下都要求輸入該密碼(即使來電是來自于你自己的手機時)。
惡意移動設備
過去當蘋果聲稱越獄后的蘋果手機將對移動網絡是一種嚴重威脅時,他們確實是這樣定義它的。只是因為沒有人使用該技術做出任何破壞性行為,但這并不意味著它必然不會發生。事實上,“電話—基于網絡的攻擊”的主要障礙物實際是量—你需要大量分散在各地的手機,以一種有意義同時能夠引起媒體關注的方式去真正影響移動網絡。好比一個有電話干擾發射機的人確實會產生一定干擾,想象一下如果你遇見的每5個或6個人中恰好都有一個擁有無線電屏蔽設備,那么將會發生什么?
另一個有趣的方面是當在我們談論手機的時候,如果你曾經看到過iOS或者Android設備的軟件內核,那么你已經開始看到許多Unix的相似物—目錄結構、數據庫、文件版本等等。這能用兩個簡單的詞語總結:“iOS是BSD”與“Android是Linux”。盡管技術上沒有這么簡單,但是iOS操作系統的本質,就是目前已知的重要部分,都歸功于伯克利UNIX,同時Android操作系統是嵌入式Linux,只是一些庫和管理功能在筆記本電腦和桌面電腦構建中通常不需要。
這里的要點是什么呢?任何已經破壞、建立或者研究BSD或 Linux的人能夠直接將他們90%的成功經驗應用到iOS或Android設備中。
所以手機是如何影響網絡的呢?還記得圖2-2中顯示的GSM網絡簡化圖嗎?你會回想起我們用電話使用一個Um信道,通過無線電連接到一個基站收發器(BTS)。Um信道確實是許多不同邏輯和物理信道堆疊到一起,這給你一種假象:仿佛來電、短信、郵件和互聯網訪問無縫到達你的手機。例如,當你發起和接收呼叫時,許多邏輯信道會結合起來為一個電話實現呼叫服務。如果你有修改移動設備的權利,你會說通過有選擇的干擾或者修改廣播信號或來自于BTS的重要網絡傳輸信息,你就能夠在你的廣播范圍內控制或干擾其他任何合法的手機。總之,這是一個需要考慮的非常可怕的過程。在這個過程中一個主要的問題是定位:每個攻擊者都有一個電話確實很麻煩。試想如果每個主流品牌(像Android或蘋果手機)的手機都開始惡意行為,那么將會發生什么?它將會是移動運營商所見過的最大規模的分布式拒絕服務攻擊。
惡意移動設備對策
改動后的移動設備會對手機網絡產生摧毀性的影響,除定位以外。
當人們開始談論移動網絡的厄運時,主要一個需要考慮的問題是移動網絡在設計時就被劃分為多個更小的部分。如果有人為了針對移動網絡的某些惡意目的篡改了某個手機……那么他會影響無線電覆蓋范圍內的任何其他人。對于一個現代的電話來說,這個范圍會覆蓋大約幾百碼之內的大城市和幾英里的平坦地形。如果那個人能夠做這樣一件事,那么危害(是的我們知道“危害”用在這兒是一個可怕的字眼)通常就限制在移動網絡內該基站的成員中,很可能僅僅只針對那些暴露在原始無線電信號的人,這取決于接口類型和攻擊者的目標。使用簡易無線電(simply-radio)是當今人們能夠部署的最可行的否認通信的方法。
使用一個火花線圈和一個相對大容量的電池,針對4~5個基礎移動服務頻率來造成干擾和拒絕服務,而不是修改移動設備的基帶信號來為你所用,相對來說更簡單。我們認為這些類型的威脅雖然是合法的,但是不應該讓你們夜不能寐。
早期惡意移動基站攻擊
傳統移動網絡的信任模式與幼兒園班級有相似之處。在幼兒園,每個班級有一個老師和一群吵鬧的孩子。每個孩子可以看作是一個在線手機,每個班級可以大致看作是一個基站。你能想象大多數的信任和授權都來自于頂層,即來自于移動運營商。正因為如此,同時我們假設大多數攻擊者的技術并沒有達到可以修改硬件和固件的水平,于是我們就看到一個進行自上而下對網絡控制的方法。這意味著網絡需要對手機進行驗證,但是(直到最近)手機并不驗證網絡。利用這種簡單性你就能夠對移動網絡進行仿真,更類似于你所知的設備測試,而不是繞過安全規則。
為了進一步詳述這點,讓我們舉個簡單的例子—我們如何冒充世界上任何一個移動運營商。回到20世紀90年代,當時我們還是容易受影響的孩子,有太多的時間在我們手上而且只有很少的積蓄。我們需要開始使用這個新技術,它能使我們在沙灘、汽車或者山頂上同人們講話。那時,這種想法十分新鮮,通過無線電波將談話傳送至其他人的想法在當時是相當不可思議的。
在那個時候,只有簡單的時分復用技術,原始的無線電輸出強度和大體積電池。當時存在許多有競爭力的技術,人們也在努力達到我們現在所享受的互操作性的水平。
無論如何,我們曾經是貧瘠和好奇的,但是我們也確實擁有了一部或兩部手機。我們開始對USENET有所了解,并且對無線電、數字化語音和稱為GSM的新流行事物產生疑問。GSM技術在當時處于相對不成熟的狀態,但是幸運的是對業余愛好者來說,標準和協議規范是可行的一條路,如果你有幸能夠發現數字副本的話。我們開始閱讀一份1 200頁的規范文檔,我們不停的閱讀……閱讀……直到我們對關于GSM協議的一個有趣的現象產生了困惑。任何手機都能夠在另一個運營商網絡中漫游。當你離開鹿特丹到達斯塔萬格,卻還能撥打接聽電話,這是GSM網絡的內置特性。它也引出3個非常有趣的現象:
手機能夠簡單地加入另一個移動運營商的網絡;
當手機加入一個網絡時,一般很混雜(為什么漫游會這么容易?);
移動網絡由一個簡單的3位數字代碼和一個3位國家代號定義,如表2-1所示。
如果你像我們一樣,你也許會說:“現在,我們怎樣去模仿這3位數字代碼呢?”如果你與我們并不相似,很好,因為這種想法會讓你陷入各種麻煩中。盡管如此,最終我們仍然發現了我們一直在探尋的東西—創建GSM網絡,并掌握GSM電話如何加入并使用該網絡的方法。現在面臨的最大問題是我們沒有設備來支撐我們使用新發現理論做任何研究。我們需要在不使用保護措施的情況下獲得一個基站。經過幾個月的搜索,我們最終發現了我們正在尋找的東西—另一類手機!當時我們不知道基帶在這些小設備中會有這么大的作用。事實證明許多特性(例如模擬一個基站),確實就是一個軟件的變革。
我們正在到處尋找對整個基站進行仿真的方法—無線電塔,每個電話通過連接無線電塔來獲得服務。我們還沒有意識到的是,從無線電的本質來說它是一個可共享的廣播媒介,這就意味著如果我們距離它足夠近,我們就能夠監聽周圍的一切。我們現在知道這非常基礎,但是當時我們還年輕,并且是首次研究這個方向。針對一個略微不同的目標—監聽電話,而不是模擬一個基站—我們開始向任何能夠傾聽我們的人提出更多的問題。最終,我們從另一個德國的技術專家那里得到了反饋。他解釋到,可以通過修改電話上的固件并將其放置到他所謂的“工程模型”中。我們都沒有真正看到這樣帶來的益處,直到他解釋到:“工程模型固件允許這些手機在相同時間內捕獲所有基帶上的無線電通信,你就可以通過RS232記錄所有數據包,像語音和SMS等類的資源,這聽起來確實很酷。”

image

在早期,一直使用的是14.4 k調制解調器,所以對于我們而言,能夠發現一種用手機捕獲無線電通信的方法是很激動人心的。這個人給我們發送了一個300 KB超大附件,以及一些關于如何格式化特定手機的指令,還有關于如何從海外供應商購買調試電纜的說明。我們花費了大約20美元購買電纜,建立Slackwarebox,并格式化了我們第一個電話。從那以后我們沒有回頭。
現在,對于那些從電影《Swordfish》或《Hackers》中聯想畫面的人們,我們現在需要告訴你們:完全不像那樣。事實上,對于偶然的攻擊,我們需要花費數月的努力才能真正明白我們看到的東西。當然,在我們這樣做的同時,世界也在發生著改變。我們正在關注相應的比特流(撥通和中斷電話,以及發送短信)、語音信道,甚至包數據,以控制信道。那時,由于簡單包數據通常是低速范圍,我認為語音和文本信息相對而言更酷。
還要記住的是,所有這些變化都發生在20世紀90年代。手機正在成為一種流行工具;它們變得越來越便宜;并且越來越多的人正在使用并將它們作為一種方便的日常工具。我們花費的所有資源是價值20美元的電纜,以及在USENET上占用的大量時間與下載一些固件的撥號連接。總之,我們仍然認為這20美元是一個很好的投資。
如果讓我們快速前進幾年,當我們已經有真正的工作和用戶時,會再一次產生對手機基站進行模擬的想法。回到2002年,作者應讀者要求提供了一個完整的手機測試環境。這個想法可以讓人們能夠理解并修改手機及手機支付所運行的環境。第二次變得更加智能一些,我迅速找到主要的移動運營商并問他們,“你們用什么來測試手機?”可以預見到的是,所有運營商都答非所問,他們只是說,假設一些瘋狂的研究者知道了他們網絡測試的機密,那么很快就會發生混亂。
我曾經又一次在網上一直進行搜索,于是發現了一個很好的公司,叫做Rhode& Schwartz公司。R&S剛好為GSM網絡創建測試工具,包括我一直追尋的“圣杯”—基站收發信機(BTS)模擬器!我很快發現我可以查到所有關于他們的產品的信息,包括價格。我曾經提到過這些部件很昂貴嗎?會是六位數字那么貴嗎?看起來好像我的客戶并不在意這個,所以我也不在乎。我訂購了全套的R&S CMU200,然后開始工作。事實證明這仍然和開始模擬基站一樣簡單—三位數,即移動網絡代碼,定義了不同的運營商。我曾經查詢了MCC/MNC目錄,繼而意識到這是一個“測試” MCC/MNC為001/001。當然,考慮到本書內容,我必須聲明任何對該領域該興趣的人都應該停留在001/001。但無論如何,讓我們發揮一下想象力吧。
比方說你剛好對其中一個BTS仿真箱進行過訪問(從拍賣、促銷或者直接從廠商處購買)。比方說你想要模擬我們曾經談論過的某個移動運營商。你需要做的第一件事是查看你國家的標準移動國家代碼;考慮到臆想實驗(想法),我們使用沙特阿拉伯作為例子進行討論。沙特阿拉伯目前有兩個主要的移動網絡運營商(MNO): Mobily和Al Jawal(阿聯酋電信和沙特電信)在爭奪移動用戶中競爭。我們假定我們是Mobily。我們首先查詢KSA的MCC,即420。這是一個好的開端:3個數字留下來,接著是另外3個。現在我們需要確定Mobily提供服務所使用的移動網絡代碼是什么。我們怎么才能做到呢?最簡單的方法是在各種站點上對MCC/MNC組合進行查詢。在這個實驗過程中,我們使用mcclist.com。Mobily使用“3”(或者“003”)作為移動網絡代碼。掌握了這個信息后,我們現在能夠在沙特阿拉伯模擬GSM網絡了。
至少,我們認為我們可以。事實證明雖然最終需要六位數字才能夠確定一個GSM網絡運營商空間,但是有一個必要的欺騙GSM手機去連接假冒BTS的關鍵信息:信道分配。當今,信道分配是一個爭而未決的問題, “世界電話”和“四波段”(quad band)無線電不是例外而是規范,但是當你試圖模仿手機運營商時,你應該非常謹慎。在這個情況下,我們可以通過查閱相同的網站并且可以看到,在我們有著特殊想法的實驗中,Mobily使用的是GSM900和UMTS/W-CDMA 2100。因為我們的目的,我們不需要擔心無線電兼容性或者信道選擇,但是實際上,我們要同時覆蓋標準GSM 900-MHz頻帶和CDMA 2100-MHz頻帶,以獲得兩個獨立的無線電波。圖2-4對GSM嗅探裝置進行了介紹。
image

在所有工作完成后,讓我們來回顧下獲得了什么。首先,如果我們在沙特打開這個裝置,我們就能夠查看同我們基站相聯的手機。同時,我們也能夠看見數據連接、手機呼叫嘗試與大量的SMS短信。用戶也許會注意到一些其他的方面:它們看起來似乎是無關聯的!雖然我們描述的裝備會成功欺騙手機,使其與之連接,但是基站仿真器并沒有獲得所有必需的連接來允許電話呼叫和接收電話、發送短信或者瀏覽互聯網操作。
對于這些問題,像瀏覽互聯網,只需要將以太網電纜插入仿真盒背面就可以了。對于電話呼叫,來電號碼欺騙是一個非常可怕的問題,需要同等程度的努力來攔截和驗證代理來電的合法性。
惡意基站對策
正如我們所關注的一樣,這個問題關于移動網絡認證,因此,作為終端用戶,要認識到的一點是,你能在認證方面做的事情很少。當下次你呼叫涉及隱秘的電話或者用手機發送SMS或郵件時,請記住這點。哎!
惡意家庭基站攻擊
2009年,一個GSM棧的BTS部分的簡單開源實現引起了人們的廣泛興趣。這個實現方法,即OpenBTS,聲名狼藉,因為安全研究者意識到你可以在一些基礎無線電硬件上使用這個免費軟件,從而制造出一個價值1 500美元 的“偽基站”(要知道的是,R&SCMU200當時比游艇的還貴,所以這是一個特大新聞)。對安全研究者來說很不幸的是,2009年也是家庭基站普遍發行、轟動北美市場的時刻。家庭基站與基站測試裝置不一樣,也不像實現GSM棧的開源軟件。家庭基站是黑客的至高追求;它們是真實的移動網絡運營設備,實現了完整的GSM或CDMA棧,可以在一個運營商網絡上支持所有設備,并提供用戶合法呼叫、發短信和數據回傳操作。圖2-5顯示一個可能的惡意家庭基站設置。
但是伴隨著新技術的發展,出現了很多阻礙。對于每個感興趣的安全專業人士和有信用卡的年輕人來說,只要家庭基站一旦發布,這些家庭基站就會很快成為炮灰。正如在黑帽網站上提及的,這些設備是非常重要的基礎嵌入式Linux版本,具有一些定制應用和一些良好的無線電裝備。為打造一個全新世界而花費一點錢,不值得嗎?
家庭基站的思想是在你的家中放置一個極小的盒子。在這個小盒子中,有一組連接器(天線、電源、以太網)和除狀態LED的其他東西。這個小盒子是如何創造奇跡的呢?其實非常簡單。正如剛提及的,一個傳統的家庭基站是一個運行許多特定應用的基礎Linux版本;它安裝了大量驅動并包括一些高性能的簡易無線電。大多數實際的實現是通過軟件實現的;二進制為連接的設備掌管控制信號和數據信號。固件可對該無線電設備進行修改,以滿足一致性和各類協議規則。這些應用一般控制著三個主要方面:控制信號(呼叫建立和斷開與SMS信息),正常語音呼叫到實時協議流的轉化,以及相關聯的SIP安裝程序。

image

家庭基站同樣包括基礎操作系統,用以保護回程鏈路;通常是通過IPSec傳輸或隧道模式連接到移動網絡運營商的特殊安全網關完成這項任務。將所有設備整合到一起,你將會有一個多功能裝置,它能同時在運營商網絡和用戶網絡中工作。
一個家庭基站的基礎操作包括安全人員感興趣的許多方面,包括:
設備關聯;
呼叫建立和斷開;
信息傳遞;
回程連接。
大多數現代家庭基站中的相關設備需要家庭基站在實際通信過程中使用MNO的認證機制。有趣的是,這提供了許多潛在的攻擊向量。很明顯,后臺認證中心的通信通路以及相關的安全(身份驗證、授權、等級限定)對于整體平臺的安全是至關重要的。目前,任何接收用于驗證設備的原始機密的家庭基站,對于MNO和他們的用戶來說都是一個嚴峻的風險。雖然在MNO和家庭基站之間使用一個IPSec通道能夠保護機密,但是事實上任何像家庭基站一樣可以物理訪問一臺設備的人都能夠很容易獲取對軟件和硬件的訪問權限。而一旦獲得物理訪問權限,所有安全投入都無效了。正如早期在
hackaday.com/2012/04/12/poking-at-the-femtocell-hardware-in-an-attmicrocell/and wiki.thc.org/vodafone中描述的,許多現成的裝置能夠精確地實現這個過程。因為這些設備都是基于簡單的Linux分布,因此所有的攻擊工具和知識都能夠被技術精湛的攻擊者使用,以挖掘網絡連接的基站的全部功能。
這會導致一個很可怕的處境:我們如何為用戶提供高性能、高可信的網絡設備呢?我們的答案是:你不能。一個簡單的事實是出于各種原因,全世界的人們都喜歡使用這種家庭基站,但是并不是所有的原因都是正當的。如果安全人員從希望維護MNO的安全立場保護他們的(與潛在的其他)用戶,那么家庭基站應該只能執行簡單的“IP無線電”功能。
對于大多數家庭基站來說,另一個有趣的配置選擇主要是圍繞用戶。隨著許多網絡操運營商做出如下舉措,一個具有高度爭議的問題產生了。如果將我們的家庭基站的用戶范圍限制在少量的手機中,那么我們將在免費的網絡發展上損失更多。因此,我們將允許任意用戶連接任意家庭基站,這樣可以使得每個人都能夠滿意!
一些運營商已經選擇將能夠連接家庭基站的人員限制在可控的白名單中,但是其他人已簡單闡明任何能夠連接MNO網絡的手機也能連接他們的家庭基站。讓我們用一點時間仔細分析這個決定吧。
如果家庭基站只允許來自一個白名單的連接,那么我們在許多因素中將會有一個權衡。這些因素包括用戶經驗、MNO利益和安全。在目前的相關部署中,我們發現主要在用戶經驗(他們不需要做任何事讓家庭基站“工作”)和MNS利益(即使所有用戶沒有為使用一個家庭基站支付任何費用,他們也能夠享受高級別的服務;他們只需要在一個已購買該家庭基站的用戶周圍即可)之間的有一個折中。當前家庭基站的設計可以提供給你一個高性能的網絡平臺,這類家庭基站設計與你最終的潛在安全問題相結合,人們就能夠創建惡意基站,這些惡意基站是他們而不是MNO控制的。讓我們來說,這種設置可以為人們提供通過低層光纖竊聽來自可信路人的電話會話、SMS和數據連接,這些路人的手機將混雜著加入惡意基站中。對于該問題唯一的實際限制是物理層—大多數家庭基站部署的是非常基本的天線,而這些天線的只有有限的覆蓋面。但是,在我們的經驗中,不到100美元就可以提高天線的功率,極大的提高家庭基站覆蓋的范圍,這是一個非常險惡的裝置。
另一方面,那些已經將他們的家庭基站用戶限制在少量IMSI上的MNO仍然在已部署的高性能平臺上存在一定問題。在某些情況下,這些平臺必須請求來自回程的變量信息,例如,加密密鑰。所以盡管那些實施了限制的MNO已經限制了“惡意基站攻擊”問題,但是他們仍然可以讓一個相對開放的網管運行在移動網絡上,若該網關落入錯誤的人手中,則會導致對用戶的敏感信息的訪問—這種信息能夠被用來成功復制一個用戶身份模塊,對MNO和用戶來說都是潛在的危害。
惡意家庭基站對策
假設家庭基站很流行并且被廣泛使用,那么短期內我們不會“將這個妖魔放回瓶里”。但是,MNO和其他人確實可以在家庭基站的設計方面做一些改進以改善這個局面。
最理想的情況下,最容易的事情可能是創建一個看起來非常像當今家庭基站的設備,然而缺少關于請求用戶信息的授權。這個新一代的家庭基站能夠保護MNO和用戶抵御大多數攻擊,但是它仍然為堅定的攻擊者提供了偽裝成一個MNO的能力—看起來像是MNO沒有享受到什么。為了解決這個問題,我們不得不將目光轉向手機制造商,以及起草協議和接口的標準委員會。
搞笑的是,GSM網絡從來沒有意識到網絡應該向手機證實身份。更甚者,你可能會認為安全來自于外界。為了能夠上網,一個手機基站不得不提供一個有效的序列號或設備ID以通過類似“應答–挑戰”的多個“包圍”,遵守所有獨立基站設置的傳輸規定,甚至到了那時,如果網絡繁忙的話,一個移動站點也可能輕易被拒絕網絡訪問。
這種安全模式是有缺陷的。單向信任已經不能再持續下去。我們著眼于人類歷史上最大的分布式計算集群,我們制造出最多的連接、存儲、處理能力可以作為一種文明進步的標志。那是非常酷的事情。它還需要手機制造商、標準體制和移動網絡運營商多制造一些創新的決策。很幸運的是,我們不是第一批考慮這些事情的人,這也是件好事情。
當我們還在漫談移動網絡運營商、GSM和家庭基站的時候,有些人已經默默地生產出一個可靠、開放、正確的移動基站之間的交互認證方法,就像你的手機和移動網絡。
在IP多媒體子系統(IMS)領域,該領域基于IP和使用服務模型,在進行交互認證時我們自然會有一些選擇。SIP允許多種類型的單邊和交互認證方案,IPSec也需要同樣的一套方案。所以我們在IMS領域的進展怎么樣了?實際上,如果人們把注意力放在那些已知錯誤的密碼、密鑰模式、處理問題的關鍵,以及未履行默認安全上,這是很好的。總之,我們現在比以前處在一個更好的位置去把問題處理好。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/258173.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258173.shtml
英文地址,請注明出處:http://en.pswp.cn/news/258173.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Android 4.2 通知通過PendingIntent啟動Activity失敗的問題

今天突然發現在Android 4.2手機上點擊通知消息無法打開Activity的問題,具體Logcat信息如下: 01-09 11:37:43.733: WARN/ActivityManager(92): Unable to send startActivity intent java.lang.SecurityException: Permission Denial: starting Intent { …

ubuntu安裝sublime

添加sublime text 3的倉庫: sudo add-apt-repository ppa:webupd8team/sublime-text-3 更新軟件庫 sudo apt-get update 安裝Sublime Text 3: sudo apt-get install sublime-text-installer 安裝sublime2: sudo add-apt-repository ppa:webupd8team/sublime-text-2 …

jdbctemplate mysql 配置_Spring JDBCTemplate配置使用

一、開發環境Windows 10IntelliJ IDEA 2016.1 旗艦版JDK1.8二、項目和數據庫結構項目結構:數據庫(MySQL 5.5.39):/*Navicat MySQL Data TransferSource Server : localhostSource Server Version : 50539Source Host : localhost:3306Source Database : …

細數家庭安防五大亂象 何時能步入正軌

雖然智能家居行業在我國的成長已逾十個年頭了,但是目前市場離成型仍然有一段距離。市場上可謂“亂象”叢生,這些絆腳石嚴重阻礙了行業的良性發展。市場亂象繁生,智能家居從概念炒作到價格高抬,相關預測顯示,若真如電商…

HDU 1181 變形課

Problem Description呃......變形課上Harry碰到了一點小麻煩,由于他并不像Hermione那樣可以記住全部的咒語而任意的將一個棒球變成刺猬什么的,可是他發現了變形咒語的一個統一規律:假設咒語是以a開頭b結尾的一個單詞,那么它的作用就恰好是使A物體變成B物體. Harry已經將他所會的…

多線程(同步代碼塊和同步函數)

線程安全問題 當多條語句在操作同一個線程共享數據時,一個線程對多條語句只執行了一部分,還沒有執行完, 另一個線程參與進來執行。導致共享數據的錯誤。解決辦法: 對多條操作共享數據的語句,只能讓一個線程都執行…

沒有基礎學python_python沒有基礎好學嗎

什么是Python?Python是一種計算機程序設計語言。你可能已經聽說過很多種流行的編程語言,比如非常難學的C語言,非常流行的Java語言,適合初學者的Basic語言,適合網頁編程的JavaScript語言等,Python是他們其中…

C++中的頭文件和源文件

一、C編譯模式 通常,在一個C程序中,只包含兩類文件——cpp文件和h文件。cpp文件被稱作C源文件,里面放的都是C的源代碼;h文件則被稱作C頭文件,里面放的也是C的源代碼。 C 語言支持“分別編譯”(separ…

Hibernate 事物隔離級別 深入探究

目錄 一、數據庫事務的定義 二、數據庫事務并發可能帶來的問題 三、數據庫事務隔離級別 四、使用Hibernate設置數據庫隔離級別 五、使用悲觀鎖解決事務并發問題 六、使用樂觀鎖解決事務并發問題 Hibernate事務與并發問題處理(樂觀鎖與悲觀鎖) 一、數據庫…

Linked List Cycle II - LeetCode

Given a linked list, return the node where the cycle begins. If there is no cycle, return null. Note: Do not modify the linked list. Follow up:Can you solve it without using extra space? 思路:維護兩個指針slow和fast。先判斷是否存在環。 在判斷是否…

mysql 無論輸入什么都是現實 not found_NotAPanda

前言面試競爭力越來越大,是時候擼一波Vue和React源碼啦;本文從20個層面來對比Vue和React的源碼區別;如果需要了解API的區別,請戳:Vue 開發必須知道的 36 個技巧React 開發必須知道的 34 個技巧文章源碼:請戳…

這五張PPT告訴你,如何打造無人駕駛“最強大腦”

“英特爾在談無人駕駛,會成為汽車制造商嗎?NO!我們要為無人駕駛提供從車、連接到云的‘最強大腦’。” 在昨天于北京舉行的英特爾無人駕駛分享會上,英特爾無人駕駛事業部中國區市場總監徐偉杰在主旨演講中開門見山。 這也是英特爾無人駕駛事業部去年11月…

javascript之ua與urlSchema

我們首先拿到瀏覽器ua: 1 var ua navigator.userAgent; 1 if (ua.indexOf("MicroMessenger") > -1) { 2 alert("微信瀏覽器"); 3 } 1 if (ua.indexOf("iPhone") > -1) { 2 alert("iphone"); 3 } 其…

ezdpl Linux自動化部署實戰

最近把ezdpl在生產環境中實施了,再加上這段時間的一些修改,一并介紹一下。再次申明: ezdpl不是開箱即用的,需要根據自己的應用環境定制。對初學者來說使用起來反倒困難更多、風險更大。它不是一個通用的項目,更多的是提…

無法打開輸入文件mysql_錯誤LNK1181,pip安裝“無法打開輸入文件”mysqlclient.lib'...

我是Python新手,正在嘗試安裝mysql模塊,但是在解決了其他5個問題之后,我現在遇到了一個問題,當我嘗試安裝該模塊時,會出現以下日志:PS C:\Users\poste> pip install mysqlCollecting mysqlUsing cached …

俄羅斯將封殺LinkedIn 推動個人數據本地化

北京時間11月11日上午消息,莫斯科一家法院本周四支持了在俄羅斯封殺職業社交網站LinkedIn的決定。 俄羅斯聯邦通信監管局(Roskomnadzor)之前要求國內外企業從2015年9月開始,必須將所有俄羅斯用戶的個人數據存儲在該國境內。Linked…

python的datetime舉例_Python datetime模塊的使用示例

1、獲取當前年月日時分秒# -*- encodingutf-8 -*-import datetimenow datetime.datetime.now()print("now:{}".format(now))year now.yearprint("year:{}".format(year))month now.monthprint("month:{}".format(month))day now.dayprint(&q…

vs2015 去除 git 源代碼 綁定,改成向tfs添加源碼管理

除了下文的方法是將源碼管理從git改成tfs之外,還要做以下幾步即可 向tfs添加源碼 打開源碼管理(管理連接),雙擊打開你要向其中添加的tfs連接選中該解決方案,右鍵 將解決方案添加到源碼管理嵌入完畢vs2015 去除 git 源代碼 綁定 第一次碰到這個…

HDU 4609 FFT

題目大意 給定n條邊的邊值,求任意取三條邊能組成三角形的概率 這里概率 P valid/tot tot (n-2)*(n-1)*n/6是沒問題的 valid表示合法的方式 先考慮,任意兩條邊組合形成方法的總數 因為邊值在100000的范圍內,這里組合用fft計算 得到最后形成和…

《日志管理與分析權威指南》一2.3 良好日志記錄的標準

本節書摘來華章計算機《日志管理與分析權威指南》一書中的第2章 ,第2.3節,(美) Anton A. Chuvakin Kevin J. Schmidt Christopher Phillips 著 姚 軍 簡于涵 劉 暉 等譯更多章節內容可以訪問云棲社區“華章計算機”公眾號查…