1. 程式人生 > >winexe 在windows 8.1和windows Server 2012 R2執行報錯的解決方案

winexe 在windows 8.1和windows Server 2012 R2執行報錯的解決方案

概述

報錯:

ERROR: Cannot open control pipe - NT_STATUS_INVALID_PARAMETER

原因:

在對程式碼進行了大量的研究和黑客攻擊及閱讀大量網站甚至與MS討論主題之後,問題的根本原因是微軟已經從Windows 8.1Windows Server 2012 R2中刪除了SMB1.0,請參閱:http//technet.microsoft.com/en-us/library/dn303411.aspx,以獲取已刪除的完整列表。在花了儘可能多的時間(確保不少於幾天)研究winexe程式碼之後,似乎winexe使用smbclientSMB1.0庫。

解決辦法:編譯winexe-1.1

yum install \
    gcc \
    perl \
    mingw-binutils-generic \
    mingw-filesystem-base \
    mingw32-binutils \
    mingw32-cpp \
    mingw32-crt \
    mingw32-filesystem \
    mingw32-gcc \
    mingw32-headers \
    mingw64-binutils \
    mingw64-cpp \
    mingw64-crt \
    mingw64-filesystem
\ mingw64-gcc \ mingw64-headers \ libcom_err-devel \ libacl-devel \ gnutls-devel \ openldap-devel \ popt-devel \ zlib-devel \ zlib-static \ glibc-devel \ glibc-static \ python-devel -y yum remove \ libbsd-devel git clone https://github.com/opinkerfi/winexe-waf winexe-waf
cd winexe-waf git clone git://git.samba.org/samba.git samba cd samba git reset --hard a6bda1f2bc85779feb9680bc74821da5ccd401c5 cd .. sed -i "s/lib='dl'$/lib='dl gnutls'/" source/wscript_build cd source ./waf --samba-dir=../samba configure build build/winexe-static --help

下面是問題的翻譯,有點長,刪除了一些日誌輸出的內容,感興趣可以去看原帖:

問題

由於Windows 8.1windows Server 2012 R2的改動,導致部分版本的windows機器執行 winexe命令的時候出現錯誤:

ERROR: Cannot open control pipe - NT_STATUS_INVALID_PARAMETER

我們在Windows 8.1 Bule之前的版本上執行winexe的時候,一切都是正常的

當用同樣的命令執行-d 11的時候,最後幾行如下:


Shutdown SMB signing
SMB Signing is not negotiated by the peer
Starting GENSEC mechanism spnego
Starting GENSEC submechanism ntlmssp
Got challenge flags:
Got NTLMSSP neg_flags=0x628a8215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_TARGET_INFO
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
NTLMSSP challenge set by NTLM2
challenge is:
[0000] 21 20 90 DB A7 BC 3B 8D ! ....;.
NTLMSSP: Set final flags:
Got NTLMSSP neg_flags=0x60088215
NTLMSSP_NEGOTIATE_UNICODE
NTLMSSP_REQUEST_TARGET
NTLMSSP_NEGOTIATE_SIGN
NTLMSSP_NEGOTIATE_NTLM
NTLMSSP_NEGOTIATE_ALWAYS_SIGN
NTLMSSP_NEGOTIATE_NTLM2
NTLMSSP_NEGOTIATE_128
NTLMSSP_NEGOTIATE_KEY_EXCH
SMB Signing is not negotiated by the peer
IN: async_open(\pipe\ahexec, 2)
IN: async_open_recv
ERROR: smb_raw_open_recv - NT_STATUS_INVALID_PARAMETER
ERROR: on_ctrl_pipe_error - NT_STATUS_INVALID_PARAMETER
ERROR: Cannot open control pipe - NT_STATUS_INVALID_PARAMETER

winexesvc服務已經安裝,並且已經執行

注意:我們必須在我們自己的程式碼(C#)中為任何EXE新增兩行,以使以前的出站通訊工作在即使在Windows 8中工作正常的地方:

    ServicePointManager.Expect100Continue = true;
    ServicePointManager.SecurityProtocol = SecurityProtocolType.Ssl3;

想問大家有沒有遇到類似的情況

討論

    我確信我在Windows 8.1和Windows Server 2012 R2上遇到同樣的問題
    我嘗試著下載和編譯windows service,我確信這裡是需要做出改變的。我開啟了debug。我獲取了一下測試的輸出((Windows Blue / Server 2012 R2):

    ----Begin Bad
    winexesvc: StartServiceCtrlDispatcher 126
    winexesvc: RegisterServiceCtrlHandler
    winexesvc: Returning the Main Thread 
    server_loop: alive
    server_loop: CreatePipesSA done
    server_loop: Create Pipe
    server_loop: Connect Pipe
    server_loop: Connect Pipe(0) pending
    ----End Bad

    為了做對比,我在Windows Server 2008 R2上用winexesvc.exe運行同樣的命令,debug日誌為:

    ----Begin Good
    winexesvc: StartServiceCtrlDispatcher 126
    winexesvc: StartServiceCtrlDispatcher (1063)
    winexesvc: StartServiceCtrlDispatcher 126
    winexesvc: RegisterServiceCtrlHandler
    server_loop: alive
    winexesvc: Returning the Main Thread 
    server_loop: CreatePipesSA done
    server_loop: Create Pipe
    server_loop: Connect Pipe
    server_loop: Connect Pipe(0) pending
    server_loop: CreateThread
    server_loop: Thread created
    server_loop: Create Pipe
    server_loop: Connect Pipe
    server_loop: Connect Pipe(0) pending
    Retrieved line: "get version"
    Retrieved line: "run ipconfig"
    WaitForMultipleObjects=1
    server_loop: CreateThread
    server_loop: Thread created
    server_loop: Create Pipe
    server_loop: Connect Pipe
    server_loop: Connect Pipe(0) pending
    Retrieved line: "get version"
    Retrieved line: "run ipconfig"
    WaitForMultipleObjects=1
    ----End Good

ahajda- 2013-07-12

    看上去好像是winexe和Windows 8.1之間的問題,winexesvc工作似乎是正常的,可以檢查下smbclient工作是正常的嗎?用相同的憑據執行它並嘗試連線到share// host / admin $,並使用-d 99選項,貼出執行日誌。
    需要指出的是在Windows Blue上進行winexe連線, 認證和安裝winexesvc都是正常的,直到嘗試用winexe接收ahexec管道里面終止的東西。

    下面是請求執行結果:(IPs和名稱是變化但不是連續的)
    smbclient執行在Windows Blue 8.1,訪問ADMIN $(沒有問題?)

    ----Begin Blue
    INFO: Current debug levels:
    all: 99
    tdb: 99
    printdrivers: 99
    lanman: 99
    smb: 99
    rpc_parse: 99
    rpc_srv: 99
    rpc_cli: 99
    passdb: 99
    sam: 99
    ......(省略)
    smb: >
    ----End Blue

    命令ls輸出的結果跟期望的是一致的(c:\windows contents)

    smbclient執行在Windows Blue 8.1 R2,訪問ADMIN $(沒有問題?)

    ----Begin 2008
    INFO: Current debug levels:
    all: 99
    tdb: 99
    printdrivers: 99
    lanman: 99
    smb: 99
    rpc_parse: 99
    rpc_srv: 99
    ......(省略)

    Domain=[MYDOMAIN] OS=[Windows Server 2008 R2 Enterprise 7601 Service Pack 1] Server=[Windows Server 2008 R2 Enterprise 6.1]

    session setup ok
    s3_event: Added timed event "tevent_req_timedout": 0x1b02698
    s3_event: Schedule immediate event "tevent_queue_immediate_trigger": 0x1ae12f0
    s3_event: Run immediate event "tevent_queue_immediate_trigger": 0x1ae12f0
    s3_event: Destroying timer event 0x1b02698 "tevent_req_timedout"
    tconx ok
    smb: >
    ----End 2008
    我運行了一些自定義的命令,可以讀取和寫入遠端命名管道,並且可以寫入和讀取ahexec管道。 PSExec也適用於8.1。
    在對程式碼進行了大量的研究和黑客攻擊及閱讀大量網站甚至與MS討論主題之後,問題的根本原因是微軟已經從Windows 8.1和Windows Server 2012 R2中刪除了SMB1.0,請參閱:http//technet.microsoft.com/en-us/library/dn303411.aspx,以獲取已刪除的完整列表。在花了儘可能多的時間(確保不少於幾天)研究winexe程式碼之後,似乎winexe使用smbclient的SMB1.0庫。對於有意的向後相容性,我們自己使用最低常見的Demoninator來確保儘可能多的人可以使用我的程式碼。
    假如正如我所說的,如果SMB1不可用時,如果它至少沒有使用SMB2,那麼winexe或winexe-waf(昨天建造)將會碰壁。 對於這一點,我希望你能反駁我,並提出其他的意見。smbclient與套接字通訊沒有問題。我假設可執行檔案自動嘗試使用較新的SMB版本......

Mark - 2013-07-20

    在shell裡面執行:

    cat </dev/null|winexe

    這樣是有效的,但是為什麼。。。我也不知道
    我嘗試了你的方法,一樣的報錯:

    ERROR: smb_raw_open_recv - NT_STATUS_INVALID_PARAMETER
    ERROR: on_ctrl_pipe_error - NT_STATUS_INVALID_PARAMETER
    ERROR: Cannot open control pipe - NT_STATUS_INVALID_PARAMETER
    我可以告訴你在smb_raw_open_recv中呼叫smbcli_request_is_error(req)時發生的錯誤。顯然req-> state是smbcli_request_receive(req)執行是沒問題的。

Mark - 2013-07-20

    我在shell指令碼中使用它(cat </ dev / null | winexe)
    preusercmd.sh

    cat </ dev / null | $ WINEXE --uninstall --interactive = 0 -U $ UNAME -W $ WRKGRP 
    --password = $ PWD // $ BOX'cmd.exe /cc:backuppcpre-exec.cmd ' 

    這對我有用
    我按照你的建議嘗試了這種方式,但是任然用同樣的報錯,您是否針Windows 8.1預覽版和/或,Windows Server 2012 R2預覽版本執行這些命令(我使用的是近乎最新版本)。

ahajda - 2013-07-21

    我認為Marks的建議是針對winexe沒有使用檔案重定向的問題。關於你對smb/smb2的發現,我懷疑它是主要原因,但是我想我將無法在8月下旬完成這項工作。無論如何,感謝你的研究,應該對我的補丁開發有幫助。
    我可以等待一個月或者更久。如果我可以找到一些關於samba的優秀文件(而且是很有可能),我可以自己解決這個問題。不幸的是,這是我第一次接觸到smba的內部運作。似乎缺乏關於它的開發者資訊。我敢肯定我只是遺漏了一些明顯的東西。

    祝福你
    William M. Rawls 
    http://my.william-rawls.info
    嘿,你好,我的老闆讓我問你winexe對win 8.1的支援工作,在8月能否達到。

    祝福你
    William M. Rawls 
    http://my.william-rawls.info

ahajda - 2013-08-19

    是的,我希望這個周能夠解決

    Regards
    Andrzej

ahajda - 2013-08-22

    我剛剛上傳瞭解決這個問題的補丁,至少在我的機器上是解決了。請在儘可能多的機器上測試它。
    補丁還有用嗎?
    補丁已經被應用到當前的程式碼。你可以獲取最新的程式碼:

    git clone git://git.code.sf.net/p/winexe/winexe-waf winexe-winexe-waf

    從原始碼編譯之後,就可以得到winexe1.1
    1. status: open --> closed-fixed
    2. Priority: medium --> high
    請按照你下的步驟操作,必須允許Netlogon通過防火牆來更改防火牆規則以使其工作,然後在Windows XP 32,7 32,7 64,8 32,8 64,Windows Blue preview,Server 2008 R2,Server 2012和Server 2012 R2預覽一切正常。

    VM XP無法開啟連線(psexec工作)
    更改防火牆檔案共享範圍重新測試成功!

    VM 7 32無法開啟連線(psexec工作)
    未阻止NetLogon重新測試成功

    VM 7 64無法開啟連線(psexec工作)
    未阻止NetLogon重新測試成功

    VM 8 32無法開啟連線(psexec工作)
    未阻止NetLogon重新測試成功
    VM 8 64幸運防火牆搞砸了,所以它沒有遇到同樣的問題
    VM Blue無法開啟連線(psexec工作)
    Unblocked NetLogon重新測試成功

    VM 2008通過 
    HV 2008通過
    HV 2012通過
    HV 12R2通過

    雖然跨作業系統的測試不是很廣泛,但它仍然表明基礎知識仍然適用於所有版本。
     1.我們應該一直這樣測試winexe。你怎麼做呢?
     2.為什麼psexec不起作用而且沒有winexe(沒有防火牆更改)?
    非常感謝你在這方面所做的工作。
    1. 我有一個虛擬機器管理程式(在我的情況下是Hyper-V)已經設定了一個虛擬機器,每個作業系統都用於測試我為我們的產品編寫的程式碼。因此,很容易啟動ubuntu和其他VM並對它們執行相同的winexe命令。

    2.我會說因為psexec沒有像winexe 1.1那樣傳送身份驗證。我必須仔細檢查這一點,但winexe 1.0也適用於所有作業系統,除了新的作業系統讓我相信winexe 1.1的方式需要netlogon服務,其中1.0沒有......但這只是猜想。
    如何在Linux上工作...我在Windows8.1上連線時獲取了msg NT_STATUS_INVALID_PARAMETER我試圖編譯完整的源但不能在ubuntu上工作。winexe-1.0.0的任何補丁或新的winexe-1.1何時釋出
    1.winexe-1.0.0的任何補丁
            抱歉,沒有。

    2.什麼時候新的winexe-1.1正在釋出
            請從原始碼(即,從“當前”即“winexe-waf”git儲存庫)構建winexe 1.1-prerelease,並使用它直到winexe正式釋出。

相關推薦

winexewindows 8.1windows Server 2012 R2執行解決方案

概述 報錯: ERROR: Cannot open control pipe - NT_STATUS_INVALID_PARAMETER 原因: 在對程式碼進行了大量的研究和黑客攻擊及閱讀大量網站甚至與MS討論主題之後,問題的根本原因是微軟已經從

Windows Server 2012 R2Windows Server 2012Windows 8.1Windows 8 上無法啟用 Microsoft .NET Framework 3.

無法下載原始檔。 使用“源”選項指定還原該功能所需的檔案的位置。有關指定源位置的詳細資訊,請參閱 http://go.microsoft.com/fwlink/?LinkId=243077。 DISM 日誌檔案可在 C:\Windows\Logs\DISM\dism.log 中找到 Windows 無法完成

mac tar命令壓縮後上傳到windows虛擬機器解壓解決方案

  在解壓tar.gz檔案的時候報錯   [[email protected] Downloads]$ tar -zxvf clion-141.351.4.tar.gz   gzip: stdin: not in gzip format   tar: Child returned status

安裝python庫時windows error5 解決方案

python安裝庫時,有時候會報錯windows error 5,可以嘗試關閉所有使用python的編輯器、檔案等,然後重新pip安裝,如果還是不行,可以將報錯最下層檔案刪除即可(如果不放心可以將該檔案先備份),記錄之~ windows error錯誤程式碼:

思科華為交換機loopback-detection引起的解決方案

思科 華為 loopback-detection 今天菜雞哥哥到核心交換發現一堆報錯,如下圖思科對此官方的解釋是:Error Message SW_MATM-4-MACFLAP_NOTIF: Host [enet] in [chars] [dec] is flapping between port

MySQL解決方案:2013-Lost connection server at 'waiti

今天上課的時候,在搭建完MySQL測試環境中出現的問題,整理如下: 問題描述:搭建完MySQL,用遠端連線工具(Navicat)連線時報錯: 2013-Lost connection to MySQL server at 'waiting for intial communication packet',

MySQL解決方案:2013-Lost connection to MySQL server

安裝 今天 線下 ice 開啟 網絡 重新 round 報名 今天上課的時候,在搭建完MySQL測試環境中出現的問題,整理如下: 問題描述:搭建完MySQL,用遠程連接工具(Navicat)連接時報錯: 2013-Lost connection to MySQL serve

MySQL解決方案:2013-Lost connection server at ‘waiti

客戶端 目錄 mark waiting 方式 conn mysql開啟 咨詢 mys 今天上課的時候,在搭建完MySQL測試環境中出現的問題,整理如下: 問題描述:搭建完MySQL,用遠程連接工具(Navicat)連接時報錯: 2013-Lost connection to

Django需求分析model設計過程中系列解決方法

報錯一:django.db.migrations.exceptions.InconsistentMigrationHistory: Migration admin.0001_init 進入執行介面後,執行遷移時報錯: django.db.migrations.exce

java.sql.SQLException: The server time zone value '???ú±ê×??±??'的解決方案

問題描述: 利用JDBC連線資料時,會報錯誤具:java.sql.SQLException: The server time zone value '???ú±ê×??±??' is unrecognized or represents more than one time zone. Yo

SQL Server資料庫複製嚮導解決

今天利用資料庫複製嚮導(Copy Database Wizard)將2012版本的資料庫複製到2014時,遇到了一些錯誤,並最終解決,特此記錄: 資料庫相容級別的有效值為 100、110 或 120 源資料庫相容性級別太低,改高一點即可 物件名XXX無

WIN7旗艦版下安裝SQL SERVER 2008安裝解決方案

        在win7環境下,是完全可以解決 SQL Server 2008相容性問題的。我在第一次安裝時,遇到了幾乎很多人安裝過程中都會出現的問題。只好解除安裝了重新安裝,第二次設定了一系列的東西,完全通過,安裝成功!現就安裝中遇到的問題和大家分享一下,以供參考!  

Unity3D —— 解決方案常用功能集

1.在Dictionary迭代器進行修改: var _key = index2factionDic.Keys.GetEnumerator();

iOS7.1 編譯 解決方案 體會

OS升級到 iOS 7.1 了 ,開發人員必須與時俱進。果斷下載更新了xcode5.1版本 ,試運行了一下已上線的應用,哇 報錯了!好頭疼 貼下報錯地方: 都是關於第三方類庫報的錯 比如parse、shareSDK Undefined symbols for

AFNetworking升級至3.1.0後,原有的方法解決辦法。

為了配合蘋果官方的ipv6的事,有很多開發人員都把AFNetworking升級了(網路請求自己公司做封裝的除外),但是升級後報錯一堆。怎麼辦?我的笨辦法是:一個一個修改。 1.首先:沒有了AFHTTPRequestOperationManager這個類,被AF

白話windows server 2012 r2windows 7創建ad域與配置(安全版)

關閉 logo 打不開 cmd 2012 r2 以太網 子網 int 180天 文章的可讀性非常重要,這裏提供的是一鍵式操作指南,即使之前完全沒有接觸,也可以配置完成。 ad域的創建是為了便於公司的集中化管理,提高公司運作效率和安全性。 我的操作環境,本機是kali lin

Windows Server 2012 R2/2016 此工作站主域間的信任關系失敗

脫域 此工作站和主域間的信任關系失敗 今天給客戶Exchange 服務器出現了脫域的情況,當使用域帳戶登錄時出現了“此工作站和主域間的信任關系失敗”的情況。造成這種的可能原因: 域內存在了多臺SID一樣的計算機; 計算機對象在AD中意外刪除; 客戶端的帳戶密碼更新失敗; 時間超過5分鐘; AD復制問

windows server 2012 r2 App-V 5.1 安裝部署

aec 擴展 另一個 系統 安裝程序 host 上傳 local 服務器角色 準備軟件 1.sqlserver2014 2.mdop2015光盤-----軟件下載地址:ed2k://|file|mu_microsoft_desktop_optimization_pack

Windows Server 2012 R2 或 2016 無法安裝 .NET Framework 3.5.1解決辦法

問題描述: 使用 Windows Server 2012 R2 或 Windows Server 2016系統,發現在安裝 .NET Framework 3.5.1 時報錯,報錯內容如下圖所示。     原因分析 找不到安裝原始檔。 解決辦法 您

1.初始Windows Server 2012 R2 Hyper-V + 系統安裝詳細

幹啥的?現在企業伺服器都是分開的,比如圖片伺服器,資料庫伺服器,redis伺服器等等,或多或少一個網站都會用到多個伺服器,而伺服器的成本很高,要是動不動採購幾十臺,公司絕對吃不消的,於是虛擬化技術出來了,Vmware用過沒? 一個Vmware裡面很多作業系統,Hyper-v也是這樣的一款虛擬機器。