#include <stdio.h>
#include <winsock.h>
#define NETWORK_ERROR -1
#define NETWORK_OK 0
#define PORT_MIN 1
#define PORT_MAX 65535
HANDLE hThread;
DWORD hID;
char hostname[30];
int starting_port = 0;
int ending_port = 0;
int nopen = 0;
DWORD portscan();
int main()
{
int ret;
WSADATA dat;
DWORD version;
version = MAKEWORD(2, 2);
ret = WSAStartup(version, &dat);
if (ret != 0)
{
printf("Error initializing Winsock.\n");
WSACleanup();
return NETWORK_ERROR;
}
if (ret == 0)
{
printf("Enter hostname:");
scanf("%s", hostname);
printf("Enter starting port:");
scanf("%d", &starting_port);
if (starting_port < PORT_MIN)
{
printf("Invalid port number.\n");
WSACleanup();
return NETWORK_ERROR;
}
printf("Enter ending port:");
scanf("%d", &ending_port);
if (ending_port > PORT_MAX)
{
printf("Invalid port number.\n");
WSACleanup();
return NETWORK_ERROR;
}
printf("\nScanning [%s]...\n", hostname);
hThread = CreateThread(0, 0, (LPTHREAD_START_ROUTINE)portscan, 0, 0,
&hID);
if (hThread == 0)
{
printf("Failed to create thread.\n");
WSACleanup();
return NETWORK_ERROR;
}
Sleep( - 1);
}
WSACleanup();
return NETWORK_OK;
}
DWORD portscan()
{
int i, nret;
SOCKET thesocket;
LPHOSTENT hostent;
thesocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
hostent = gethostbyname((hostname));
for (i = starting_port; i < ending_port + 1; ++i)
{
SOCKADDR_IN hostinfo;
hostinfo.sin_family = AF_INET;
hostinfo.sin_addr = *((LPIN_ADDR) *hostent->h_addr_list);
hostinfo.sin_port = htons(i);
nret = connect(thesocket, (LPSOCKADDR) &hostinfo, sizeof(hostinfo));
if (nret == 0)
{
printf("\n\t%d\n", i);
++nopen;
}
}
printf("\nScan complete.\n\n");
printf("Number of ports opened = %d\n", nopen);
closesocket(thesocket);
return 0;
}
分享到:
相关推荐
用C语言编写扫描局域网内主机的程序。要求可以显示局域网内的主机名列表,IP地址列表,并可以显示哪些主机开放了哪些端口
在这个项目中,我们使用C语言来实现一个端口扫描器,它能够针对给定的IP地址进行扫描,识别出哪些端口是开放的。 在C语言中实现端口扫描,主要涉及以下知识点: 1. **套接字编程(Socket Programming)**:C语言中...
用于扫描端口的C源代码,十分实用,欢迎下载
c语言端口扫描代码(转载) #include #include <stdio.h> #include <string.h> #include <winsock.h> #pragma comment (lib,"ws2_32.lib")
我们使用了C和Go两种语言来实现了端口扫描工具,分别由两名组员完成。每种语言分别实现了TCP-connect、SYN、FIN、UDP这四种扫描方式。 为了提高扫描速度,我们分别利用了两种语言的特色: 1. Go语言实现 我们采用了...
在IT领域,端口扫描是网络管理员和开发者常用的一种技术,用于检测远程或本地主机上哪些端口是开放的。这些开放的端口可能对应着正在运行的服务,可以帮助我们了解系统的安全状态。在这个场景中,我们将关注如何使用...
在这个“用C语言写的端口扫描器”项目中,我们将深入探讨C语言如何实现这一功能。 首先,我们需要理解端口的概念。在TCP/IP协议中,端口是一个16位的数字,范围从0到65535,其中0-1023被称为知名端口,由IANA...
在这个场景中,我们关注的是使用C语言编写端口扫描代码。C语言是一种底层、高效的编程语言,非常适合进行网络编程。 首先,我们需要理解端口在TCP/IP协议中的作用。端口是网络通信中的逻辑通道,每个服务或应用通常...
端口扫描是网络安全领域中的一个常见操作,用于发现远程服务器开放的网络端口,从而评估潜在的安全风险。本文将深入探讨一个多线程端口扫描的实现,特别关注其源代码和详细注释,这对于初学者理解和掌握多线程编程及...
本程序是在Windows系统中使用C语言用MFC完成的一个端口扫描程序。此程序主要完 成了TCP connect()扫描和UDP扫描功能。TCP扫描支持多线程,能对单个指定的主机进行扫描或对 指定网段内的主机进行逐个扫描。能扫描...
端口扫描器是一种网络工具,主要用于检测特定IP地址范围内开放的网络端口。这个程序的实现结合了网络编程、Qt库以及对端口扫描技术的理解。以下是对这些知识点的详细说明: 1. **网络编程**:网络编程是计算机科学...
但本案例中,你提供了一个名为`udp_scan_port`的自编工具,这可能是一个Python脚本或C程序,用于执行特定的UDP端口扫描任务。使用这样的自编工具的好处是可以定制扫描参数,比如扫描速度、端口范围、超时设置等。 ...
《御剑高速全端口扫描工具:网络安全检测的利器》 在网络安全领域,端口扫描是一种常见的技术手段,用于探测网络设备上开放的服务和端口,以了解网络环境的安全状况。"御剑高速全端口扫描工具"就是这样一款高效、...
本段程序是用C语言实现的简单的端口扫描。。O(∩_∩)O~
在IT领域,端口扫描是网络安全性评估的重要组成部分,它涉及到网络通信协议的理解以及编程技术的应用。本项目“C++程序 端口扫描系统的程序设计”是一个在C++语言环境下,利用MFC(Microsoft Foundation Classes)库...
在这个“syn-connect.rar”压缩包中,包含了一个C语言实现的端口扫描程序,它使用了两种不同的扫描技术:SYN扫描和Connect扫描。下面将详细讨论这两种扫描方法及其原理。 首先,让我们了解端口扫描的基本概念。端口...
在大多数情况下,当向一个未开放的UDP 端口发送数据时,其主机就会返回一个ICMP不可到达(ICMP PORT UNREACHABLE)的错误,因此大多数UDP 端口扫描的方法就是向各个被扫描的UDP 端口发送零字节的UDP 数据包,如果收到...
基于C端口扫描器的实现.pdf
VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描VisualC 实效编程 92 端口扫描...