diff --git a/.github/workflows/netexec-build-zipapp.yml b/.github/workflows/netexec-build-zipapp.yml new file mode 100644 index 000000000..e65ea7436 --- /dev/null +++ b/.github/workflows/netexec-build-zipapp.yml @@ -0,0 +1,33 @@ +name: Build ZippApps + +on: + workflow_dispatch: + +jobs: + build: + name: Building Python ZipApp on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macOS-latest, windows-latest] + python-version: ["3.8", "3.9", "3.10", "3.11"] + steps: + - uses: actions/checkout@v3 + - name: NetExec set up python on ${{ matrix.os }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Build Python ZipApp with Shiv + run: | + pip install shiv + python build_collector.py + - name: Upload nxc ZipApp + uses: actions/upload-artifact@v3 + with: + name: nxc-zipapp-${{ matrix.os }}-${{ matrix.python-version }} + path: bin/nxc + - name: Upload nxcdb ZipApp + uses: actions/upload-artifact@v3 + with: + name: nxcdb-zipapp-${{ matrix.os }}-${{ matrix.python-version }} + path: bin/nxcdb diff --git a/.github/workflows/netexec-build.yml b/.github/workflows/netexec-build.yml new file mode 100644 index 000000000..0764e99a0 --- /dev/null +++ b/.github/workflows/netexec-build.yml @@ -0,0 +1,37 @@ +name: Build Binaries + +on: + workflow_dispatch: + +jobs: + build: + name: Building Binary on ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + matrix: + os: [ubuntu-latest, macOS-latest, windows-latest] + python-version: ["3.11"] + #python-version: ["3.8", "3.9", "3.10", "3.11"] # for binary builds we only need one version + steps: + - uses: actions/checkout@v3 + - name: NetExec set up python on ${{ matrix.os }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + - name: Build Native Binary + run: | + pip install pyinstaller + pip install . + pyinstaller netexec.spec + - name: Upload Windows Binary + if: runner.os == 'windows' + uses: actions/upload-artifact@v3 + with: + name: nxc.exe + path: dist/nxc.exe + - name: Upload Nix/OSx Binary + if: runner.os != 'windows' + uses: actions/upload-artifact@v3 + with: + name: nxc-${{ matrix.os }} + path: dist/nxc diff --git a/.github/workflows/netexec.yml b/.github/workflows/netexec.yml deleted file mode 100644 index 798263d52..000000000 --- a/.github/workflows/netexec.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: NetExec Build Binaries - -on: - workflow_dispatch: - -jobs: - build: - name: NetExec Tests on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, macOS-latest, windows-latest] - python-version: ["3.8", "3.9", "3.10", "3.11"] - steps: - - uses: actions/checkout@v3 - - name: NetExec set up python on ${{ matrix.os }} - uses: actions/setup-python@v4 - with: - python-version: ${{ matrix.python-version }} - - name: Build binaries with Shiv - run: | - pip install shiv - python build_collector.py - - name: Build Windows binary - if: runner.os == 'windows' - run: | - pip install pyinstaller - pip install . - pyinstaller netexec.spec - - name: Upload nxc binary - uses: actions/upload-artifact@master - with: - name: nxc-${{ matrix.os }}-${{ matrix.python-version }} - path: bin/nxc - - name: Upload nxcdb binary - uses: actions/upload-artifact@master - with: - name: nxcdb-${{ matrix.os }}-${{ matrix.python-version }} - path: bin/nxcdb - - name: Upload netexec binary (Windows) - if: runner.os == 'windows' - uses: actions/upload-artifact@master - with: - name: netexec-${{ matrix.os }} - path: dist/netexec.exe diff --git a/netexec.spec b/netexec.spec index 2a4f24131..184be698b 100644 --- a/netexec.spec +++ b/netexec.spec @@ -13,57 +13,57 @@ a = Analysis( ('./nxc/modules', 'nxc/modules') ], hiddenimports=[ - 'impacket.examples.secretsdump', - 'impacket.dcerpc.v5.lsat', - 'impacket.dcerpc.v5.transport', - 'impacket.dcerpc.v5.lsad', - 'impacket.dcerpc.v5.gkdi', - 'impacket.dcerpc.v5.rprn', - 'impacket.dpapi_ng', - 'impacket.tds', - 'impacket.version', - 'impacket.ldap.ldap', - 'nxc.connection', - 'nxc.servers.smb', - 'nxc.protocols.smb.wmiexec', - 'nxc.protocols.smb.atexec', - 'nxc.protocols.smb.smbexec', - 'nxc.protocols.smb.mmcexec', - 'nxc.protocols.smb.smbspider', - 'nxc.protocols.smb.passpol', - 'nxc.protocols.mssql.mssqlexec', - 'nxc.helpers.bash', - 'nxc.helpers.bloodhound', - 'nxc.helpers.msada_guids', - 'paramiko', - 'pypsrp.client', - 'pywerview.cli.helpers', - 'pylnk3', - 'pypykatz', - 'masky', - 'msldap', - 'msldap.connection', - 'lsassy', - 'lsassy.dumper', - 'lsassy.parser', - 'lsassy.session', - 'lsassy.impacketfile', - 'dns', - 'dns.name', - 'dns.resolver', - 'dploot', - 'dploot.triage', - 'dploot.triage.rdg', - 'dploot.triage.vaults', - 'dploot.triage.browser', - 'dploot.triage.credentials', - 'dploot.triage.masterkeys', - 'dploot.triage.backupkey', - 'dploot.triage.wifi', - 'dploot.lib.target', - 'dploot.lib.smb', - 'pyasn1_modules.rfc5652', - 'unicrypto.backends.pycryptodomex', + 'impacket.examples.secretsdump', + 'impacket.dcerpc.v5.lsat', + 'impacket.dcerpc.v5.transport', + 'impacket.dcerpc.v5.lsad', + 'impacket.dcerpc.v5.gkdi', + 'impacket.dcerpc.v5.rprn', + 'impacket.dpapi_ng', + 'impacket.tds', + 'impacket.version', + 'impacket.ldap.ldap', + 'nxc.connection', + 'nxc.servers.smb', + 'nxc.protocols.smb.wmiexec', + 'nxc.protocols.smb.atexec', + 'nxc.protocols.smb.smbexec', + 'nxc.protocols.smb.mmcexec', + 'nxc.protocols.smb.smbspider', + 'nxc.protocols.smb.passpol', + 'nxc.protocols.mssql.mssqlexec', + 'nxc.helpers.bash', + 'nxc.helpers.bloodhound', + 'nxc.helpers.msada_guids', + 'paramiko', + 'pypsrp.client', + 'pywerview.cli.helpers', + 'pylnk3', + 'pypykatz', + 'masky', + 'msldap', + 'msldap.connection', + 'lsassy', + 'lsassy.dumper', + 'lsassy.parser', + 'lsassy.session', + 'lsassy.impacketfile', + 'dns', + 'dns.name', + 'dns.resolver', + 'dploot', + 'dploot.triage', + 'dploot.triage.rdg', + 'dploot.triage.vaults', + 'dploot.triage.browser', + 'dploot.triage.credentials', + 'dploot.triage.masterkeys', + 'dploot.triage.backupkey', + 'dploot.triage.wifi', + 'dploot.lib.target', + 'dploot.lib.smb', + 'pyasn1_modules.rfc5652', + 'unicrypto.backends.pycryptodomex', ], hookspath=['./nxc/.hooks'], runtime_hooks=[], @@ -85,7 +85,7 @@ exe = EXE( a.zipfiles, a.datas, [], - name='netexec', + name='nxc', debug=False, bootloader_ignore_signals=False, strip=False, diff --git a/nxc/data/nxc.ico b/nxc/data/nxc.ico index ddaa2288e..6b840dfc3 100644 Binary files a/nxc/data/nxc.ico and b/nxc/data/nxc.ico differ