diff --git a/.github/workflows/release_cc-cpp.yml b/.github/workflows/release_cc-cpp.yml
new file mode 100644
index 00000000..14f6f502
--- /dev/null
+++ b/.github/workflows/release_cc-cpp.yml
@@ -0,0 +1,80 @@
+name: Build and release C/C++ build
+
+on:
+ release:
+ types: [created]
+ pull_request:
+ branches: [ "master" ]
+
+jobs:
+ build:
+ permissions: write-all
+ name: ${{ matrix.platform.os_name }} Build
+ runs-on: ${{ matrix.platform.os }}
+ strategy:
+ matrix:
+ platform:
+
+ - os_name: macOS-x86_64
+ os: macos-latest
+ target: x86_64-apple-darwin
+ name: ${{ github.event.repository.name }}-macOS-x86_64-apple-darwin.tar.gz
+
+ - os_name: Linux-x86_64-gnu
+ os: ubuntu-latest
+ target: x86_64-unknown-linux-gnu
+ name: ${{ github.event.repository.name }}-x86_64-unknown-linux-gnu.tar.gz
+
+ - os_name: Windows-x86_64-MinGW
+ os: windows-latest
+ target: x64
+ name: ${{ github.event.repository.name }}-x86_64-pc-windows-mingw.zip
+
+ - os_name: Windows-x86_64-MSVC
+ os: windows-latest
+ target: x64
+ name: ${{ github.event.repository.name }}-x86_64-pc-windows-msvc.zip
+
+ - os_name: Windows-x86_32-MSVC
+ os: windows-latest
+ target: Win32
+ name: ${{ github.event.repository.name }}-x86_32-pc-windows-msvc.zip
+
+ steps:
+ - uses: actions/checkout@v3
+
+ - name: make
+ run: make
+ if: contains(matrix.platform.name, 'gnu') || contains(matrix.platform.name, 'mingw') || contains(matrix.platform.name, 'apple')
+
+ - name: Add msbuild to PATH
+ uses: microsoft/setup-msbuild@v1.1
+ if: contains(matrix.platform.name, 'msvc')
+
+ - name: Build VS2022 Release
+ run: msbuild vs143/masscan.sln -t:rebuild -verbosity:diag /p:Configuration=Release /p:Platform=${{ matrix.platform.target }}
+ if: contains(matrix.platform.name, 'msvc')
+
+ - name: Package as archive
+ shell: bash
+ run: |
+ echo running archive
+ cd bin
+ if [[ "${{ matrix.platform.os }}" == "windows-latest" ]]; then
+ 7z a ../${{ matrix.platform.name }} ${{ github.event.repository.name }}.exe
+ 7z a ../${{ matrix.platform.name }}.with_dll.zip ${{ github.event.repository.name }}.exe ./${{ matrix.platform.target }}/*
+ else
+ tar czvf ../${{ matrix.platform.name }} ${{ github.event.repository.name }}
+ fi
+ cd -
+ if: |
+ ( startsWith( github.ref, 'refs/tags/v' ) ||
+ github.ref == 'refs/tags/test-release' )
+
+ - name: Publish GitHub release
+ uses: softprops/action-gh-release@v1
+ with:
+ draft: true
+ files: "${{ github.event.repository.name }}-*"
+ body_path: Changes.md
+ if: startsWith( github.ref, 'refs/tags/v' )
diff --git a/bin/Win32/Packet.dll b/bin/Win32/Packet.dll
new file mode 100644
index 00000000..bc3f16a6
Binary files /dev/null and b/bin/Win32/Packet.dll differ
diff --git a/bin/Win32/wpcap.dll b/bin/Win32/wpcap.dll
new file mode 100644
index 00000000..65abc77f
Binary files /dev/null and b/bin/Win32/wpcap.dll differ
diff --git a/bin/x64/Packet.dll b/bin/x64/Packet.dll
new file mode 100644
index 00000000..6e253a16
Binary files /dev/null and b/bin/x64/Packet.dll differ
diff --git a/bin/x64/wpcap.dll b/bin/x64/wpcap.dll
new file mode 100644
index 00000000..cfab04e8
Binary files /dev/null and b/bin/x64/wpcap.dll differ
diff --git a/vs143/masscan.sln b/vs143/masscan.sln
new file mode 100644
index 00000000..01d609a7
--- /dev/null
+++ b/vs143/masscan.sln
@@ -0,0 +1,26 @@
+
+Microsoft Visual Studio Solution File, Format Version 11.00
+# Visual Studio 2010
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "masscan", "masscan.vcxproj", "{C88D7583-254F-4BE6-A9B9-89A5BB52E679}"
+EndProject
+Global
+ GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Win32 = Debug|Win32
+ Debug|x64 = Debug|x64
+ Release|Win32 = Release|Win32
+ Release|x64 = Release|x64
+ EndGlobalSection
+ GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Debug|Win32.ActiveCfg = Debug|Win32
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Debug|Win32.Build.0 = Debug|Win32
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Debug|x64.ActiveCfg = Debug|x64
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Debug|x64.Build.0 = Debug|x64
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Release|Win32.ActiveCfg = Release|Win32
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Release|Win32.Build.0 = Release|Win32
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Release|x64.ActiveCfg = Release|x64
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}.Release|x64.Build.0 = Release|x64
+ EndGlobalSection
+ GlobalSection(SolutionProperties) = preSolution
+ HideSolutionNode = FALSE
+ EndGlobalSection
+EndGlobal
diff --git a/vs143/masscan.vcxproj b/vs143/masscan.vcxproj
new file mode 100644
index 00000000..ef8e12e9
--- /dev/null
+++ b/vs143/masscan.vcxproj
@@ -0,0 +1,398 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {C88D7583-254F-4BE6-A9B9-89A5BB52E679}
+ Win32Proj
+ masscan
+
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ true
+ Unicode
+ v143
+
+
+ Application
+ false
+ true
+ Unicode
+ v143
+
+
+ Application
+ false
+ true
+ Unicode
+ v143
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ $(SolutionDir)\..\tmp\$(Configuration)\
+ $(SolutionDir)\..\bin\
+ false
+
+
+ true
+ $(SolutionDir)\..\tmp\
+ $(SolutionDir)\..\bin\
+ false
+
+
+ false
+ $(SolutionDir)\..\bin\
+ $(SolutionDir)\..\tmp\$(Configuration)\
+
+
+ false
+ $(SolutionDir)\..\bin\
+ $(SolutionDir)\..\tmp\$(Configuration)\
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ include;%(AdditionalIncludeDirectories)
+ false
+ false
+
+
+ Console
+ true
+ lib;
+ true
+
+
+
+
+
+
+ Level4
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ include;%(AdditionalIncludeDirectories)
+ false
+
+
+ Console
+ true
+ lib\x64;
+ setargv.obj;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies)
+ true
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ include
+
+
+ Console
+ true
+ true
+ true
+ lib
+
+
+ $(IntDir)\$(MSBuildProjectName).log
+
+
+
+
+ Level4
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions)
+ include
+
+
+ Console
+ true
+ true
+ true
+ lib\x64
+
+
+ $(IntDir)\$(MSBuildProjectName).log
+
+
+
+
+
+
\ No newline at end of file
diff --git a/vs143/masscan.vcxproj.filters b/vs143/masscan.vcxproj.filters
new file mode 100644
index 00000000..b052f49b
--- /dev/null
+++ b/vs143/masscan.vcxproj.filters
@@ -0,0 +1,714 @@
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hpp;hxx;hm;inl;inc;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+ {fc470d2b-e741-496b-be6e-abf15f4e3573}
+
+
+ {3fbe0a31-7af3-4f28-a707-85577ab7be71}
+
+
+ {8ca96e86-20f2-45b3-b1c4-ee9d90f5c6d8}
+
+
+ {d429351b-2aea-4e6c-a887-c7fb9d6c38b5}
+
+
+ {cbd42363-ae71-4e2d-9633-0cb518d5e447}
+
+
+ {59f7bc00-cf14-4114-8801-1c5e72255c29}
+
+
+ {a481491e-ed05-4aeb-a49a-d8f071dc1409}
+
+
+ {ba03c2ec-de65-4581-bef1-8e24f95a8580}
+
+
+ {09e28aca-e0bd-47a9-b983-5c9f38392d20}
+
+
+ {8ad0f675-466a-4fb9-bac6-6fa0c868aefb}
+
+
+ {1621e340-1943-47fa-b12e-336a46d19b15}
+
+
+ {1d9cb2b4-1715-44d0-98e9-745f236c7872}
+
+
+ {26588af1-2234-4000-96fc-72f774f584f8}
+
+
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\proto
+
+
+ Source Files\rawsock
+
+
+ Source Files\rawsock
+
+
+ Source Files\rawsock
+
+
+ Source Files\rawsock
+
+
+ Source Files\rawsock
+
+
+ Source Files\rawsock
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\crypto
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\misc
+
+
+ Source Files
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\crypto
+
+
+ Source Files\pixie
+
+
+ Source Files\pixie
+
+
+ Source Files\pixie
+
+
+ Source Files\pixie
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\output
+
+
+ Source Files\proto
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files\crypto
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\output
+
+
+ Source Files\scripting
+
+
+ Source Files\scripting
+
+
+ Source Files\scripting
+
+
+ Source Files\stubs
+
+
+ Source Files\stubs
+
+
+ Source Files\stubs
+
+
+ Source Files\vulncheck
+
+
+ Source Files\vulncheck
+
+
+ Source Files\vulncheck
+
+
+ Source Files\vulncheck
+
+
+ Source Files\versioning
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\misc
+
+
+ Source Files\rawsock
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+ Source Files\stack
+
+
+ Source Files\stack
+
+
+ Source Files\stack
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\output
+
+
+ Source Files\stack
+
+
+ Source Files\stack
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\stack
+
+
+ Source Files\versioning
+
+
+ Source Files\stack
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\rawsock
+
+
+ Source Files\rawsock
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\misc
+
+
+ Source Files\proto
+
+
+ Source Files
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\crypto
+
+
+ Source Files\output
+
+
+ Source Files
+
+
+ Source Files\misc
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\crypto
+
+
+ Source Files\pixie
+
+
+ Source Files\pixie
+
+
+ Source Files\pixie
+
+
+ Source Files\pixie
+
+
+ Source Files\pixie
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files
+
+
+ Source Files\proto
+
+
+ Source Files\misc
+
+
+ Source Files
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\output
+
+
+ Source Files\output
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\output
+
+
+ Source Files\scripting
+
+
+ Source Files\stubs
+
+
+ Source Files\stubs
+
+
+ Source Files\stubs
+
+
+ Source Files\vulncheck
+
+
+ Source Files\versioning
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\misc
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+ Source Files\stack
+
+
+ Source Files\stack
+
+
+ Source Files\stack
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\massip
+
+
+ Source Files\stack
+
+
+ Source Files\rawsock
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\crypto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\proto
+
+
+ Source Files\stack
+
+
+ Source Files\versioning
+
+
+ Source Files\stack
+
+
+ Source Files\stack
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+ Source Files\util
+
+
+
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+ Resource Files
+
+
+
\ No newline at end of file
diff --git a/vs143/masscan.vcxproj.user b/vs143/masscan.vcxproj.user
new file mode 100644
index 00000000..0f14913f
--- /dev/null
+++ b/vs143/masscan.vcxproj.user
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file