皮皮网
皮皮网

【3-opt源码】【windows源码输出】【cms源码修改】端口验证源码_端口验证源码是什么

时间:2024-12-28 16:19:59 来源:小程序售楼活动源码

1.Asynchronous socket error 10061
2.渗透神器信息收集-端口扫描masscan篇
3.使用java代码,端口端口访问某个ip地址的端口,看是验证源码验证源码否可以访问

端口验证源码_端口验证源码是什么

Asynchronous socket error 10061

       æœåŠ¡å™¨é”™è¯¯ï¼Œ

       ç«¯å£æ‰«æçš„问题

       åœ¨å†™ç«¯å£æ‰«ææ—¶ ,如果与某主机特定端口无法通信 ,

       å°±æ­¤ä¸»æœºè€Œè¨€ ,我想应该有以下两种情况 :

        1 。此地址上无任何主机存在

        2 。有主机但被扫描的特定端口不存在 ( 也可能是被 firewall 过滤了 )

       å¦‚何得知某端口一打开

       ç»™ä½ æ¥ä¸ªç®€å•çš„吧!

       procedure TForm1.Timer1Timer(Sender: TObject);

       var

        I : integer;

       begin

        Memo1.Clear;

        for I := 0 to do begin

        ServerSocket1.Close;

        ServerSocket1.Port := I;

        try

        ServerSocket1.Open;

        except

        Memo1.Lines.Add(IntToStr(I) + ' 端口被打开 !');

        end;

        end;

       end;

       å¯¹ä¸èµ· ,我指的是别人机器上的 PORT

       ä½ æ˜¯è¯´ PORT 只能被一个程序打开么 ?

       å¯æ˜¯ ,我用 OICQ 时在打开 没问题呀

       æˆ‘把上面的程序改了一下 ,也可以用的。你就去试图连接对方 ,如果通了 ,说明此端口被打

       å¼€ã€‚

       procedure TForm1.ClientSocket1Connect(Sender: TObject;

        Socket: TCustomWinSocket);

       begin

        Memo1.Lines.Add(' 端口 '+IntToStr(Socket.RemotePort)+' 被打开! ');

       end;

       procedure TForm1.Timer1Timer(Sender: TObject);

       begin

        ClientSocket1.Close;

        ClientSocket1.Port := PortID;

        try

        ClientSocket1.Open;

        except

        end;

        Inc(PortID);

       end;

       procedure TForm1.FormCreate(Sender: TObject);

       begin

        PortID := 1;

       end;

       procedure TForm1.ClientSocket1Error(Sender: TObject;

        Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;

        var ErrorCode: Integer);

       begin

        try

        ClientSocket1.Close;

        except

        end;

        Memo2.Lines.add(IntToStr(Socket.remotePort));

       end;

       å•é›ªæ¾ä½ çš„方法我试过了可是抱错 :asynchronous socket error

       --------------------------------------------------------------------------------

       æ¥è‡ª :xueminliu 时间 :-3-3 :: ID:

       è¦åŒºåˆ† tcp 和 udp

       oicq 用 udp 协议 ,connect 没有用 ,但是 tcp 可以这样

       å¦å¤– ,如果你写扫描程序可千万不要这样 ,应该使用别的链接方法 ,否则你的踪迹会被别人

       å‘现 .例如使用 sys 扫描或者 fin 扫描 :

       æˆ‘给你异步 socket 的 api 代码 :

       unit Unit1;

       interface

       uses

        Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

        StdCtrls,WInSock, ExtCtrls;

       const WM_SOCKET=WM_USER+1; //socket 消息

       type

        TForm1 = class(TForm)

        Button1: TButton;

        Edit1: TEdit;

        Panel1: TPanel;

        Memo1: TMemo;

        procedure FormCreate(Sender: TObject);

        procedure FormDestroy(Sender: TObject);

        procedure Button1Click(Sender: TObject);

        procedure Button2Click(Sender: TObject);

        procedure Button3Click(Sender: TObject);

        private

        Sockhd : integer; //socket 句柄

        Serv_Addr : Tsockaddr;// 目标地址

       procedure SockEvent(var msg: Tmessage);message WM_SOCKET; // 处理 cocket 消息

        procedure DspMsg(msg : string); // 显示信息

        { Private declarations }

        public

        { Public declarations }

        end;

       Form1: TForm1;

       implementation

       { $R *.DFM}

       function lookup_hostname(const hostname:string):longint; // 把域名转化成 IP 地址

       var

        RemoteHost : PHostEnt; (* no, don't free it! *)

        ip_address: longint;

       begin

        ip_address:=-1;

        try

        if hostname='' then

        begin (* no host given! *)

        lookup_hostname:=ip_address;

        EXIT;

        end

        else

        begin

        ip_address:=Winsock.Inet_Addr(PChar(hostname)); (* try a xxx.xxx.xxx.xx first *)

        if ip_address=SOCKET_ERROR then begin

        RemoteHost:=Winsock.GetHostByName(PChar(hostname));

        if (RemoteHost=NIL) or (RemoteHost^.h_length<=0) then

        begin

        lookup_hostname:=ip_address;

        EXIT; (* host not found *)

        end

        else

        ip_address:=longint(pointer(RemoteHost^.h_addr_list^)^);

        end;

        end;

        except

        ip_address:=-1;

        end;

        lookup_hostname:=ip_address;

       end;

       procedure TFOrm1.DspMsg(msg: string);

       begin

       memo1.Lines.Add(msg+'...');

       if Memo1.Lines.Count> then Memo1.Lines.Delete(0);

       end;

       procedure TForm1.SockEvent(var msg : tmessage); // 处理 socket 消息

       begin

       case msg.LParam of

        FD_READ: begin // 标识可以读数据 ,当然肯定已经链接上了

        dspmsg(' 可以读取数据 ');

        //do what you want do

        end;

       FD_WRITE: begin

        dspmsg(' 可以发送数据 ');

        //do what you want do

        end;

       FD_ERROR: begin

        dspmsg(' 发生错误 ');

        // 如果你是客户端 ,则应该是连接不上 ,即端口没有开

        end;

       FD_CLOSE: Begin

        dspmsg(' 服务器断开连接 ');

        // 对方关闭连接

        end;

       FD_CONNECT: begin

        dspmsg(' 连结上服务器 ');

        // 表示对方端口开放

        end;

       FD_ACCEPT: begin

        dspmsg(' 接收一个请求 ');

        // 这个消息只有服务端可能出现

        end;

       end;

       end;

       procedure TForm1.FormCreate(Sender: TObject);

       var wsaData:TwsaData;

       begin // 启动 winsock 动态链接库

        if WSAStartup (makeword(2,2), wsaData)<>0 then begin

        messagebox(application.handle,' 无法启动 winsock 动态连接库 !',' 警告 ',MB_OK or MB_APPLMODAL or MB_ICONWARNING);

        Application.Terminate;

        end;

       end;

       procedure TForm1.FormDestroy(Sender: TObject);

       begin // 关闭 dll

       WSACleanup;

       end;

       procedure TForm1.Button1Click(Sender: TObject);

       begin

       Sockhd := socket(AF_INET,SOCK_STREAM,0); // 创建 socket 句柄

       if Sockhd<0 then begin

        messagebox(application.handle,' 无法创建句柄 !',' 警告 ',MB_OK or MB_APPLMODAL or MB_ICONWARNING);

        exit;

       end;

        Serv_addr.sin_addr.s_addr:= lookup_hostname(edit1.Text); // 主机名

        Serv_addr.sin_family := PF_INET;

        Serv_addr.sin_port := htons(); //any port you want to connect

       if WSAAsyncSelect(Sockhd,Form1.handle,WM_SOCKET,FD_ACCEPT or FD_CONNECT or FD_CLOSE or FD_READ or FD_WRITE)=SOCKET_ERROR

        then begin

        messagebox(application.handle,' 无法创建句柄 !',' 警告 ',MB_OK or MB_APPLMODAL or MB_ICONWARNING);

        exit;

        end; // 异步 socket

        connect(sockhd,serv_addr,sizeof(serv_addr)); // 连接 ,结果会在前面的处理函数处理

       end;

       end.

       ç›¸ä¿¡åº”该可以满足你的要求

       è¯·é—®å¦‚何编程区分这两种情况

       æœ€å¥½è¯¦ç»†ä¸€ç‚¹å–” ( 我很笨的 )

       å¦‚果在此地址上无主机存在 ,则发出的数据包得不到回应 ,应用程序会等待超时才

       è®¤ä¸ºè¿žæŽ¥å¤±è´¥ ( 被 firewall 过滤时情况一样 ),若有主机但被扫描的特定端口不存在时 ,

       è¯¥ä¸»æœºä¼šå‘出目的端口不存在的应答

       è‡³äºŽå¦‚何编程实现 ,应该可以由错误码来判断 ,在 OnError 事情中判定 ErrorCode 是多

       å° ,再分别处理 ,ErrorCode 的详情参见 Help

       è¿™ä¹ˆé«˜æ·±çš„问题才 分 ,少了

       ç«¯å£æ‰«æä¸æ˜¯è¿™ä¹ˆç®€å• ,否则大家都做

       é¦–先你扫描人家的端口会留下自己的痕迹 ,系统有日志可以察看

       å› æ­¤æˆ‘们做端口扫描的的时候绝对不会直接连接别人 ,而是通过地层的接口编程

       ä¾‹å¦‚在 TCP 三次握手的第三次放弃 ,对方就不会有日志 ,这称为 sys 扫描

       ç»™å¯¹æ–¹ç«¯å£å‘断开连接的请求称为 fin 扫描 .

       é€šè¿‡è¿™ä¸¤ç§æ‰«ææ–¹å¼éƒ½å¯ä»¥å¾—知对方的端口是否开 ,而且不会留下痕迹 .

       æ€»ä¹‹ç«¯å£æ‰«æé‡Œé¢æœ‰å¾ˆå¤šå­¦é—® ,不是这里可以说清除的

       æ€Žä¹ˆåšå‘€ ,如你所说的话好象要直接调用 socket api?

        我现在首先关心的是我提出的问题 ,如何编程区分这两种情况 :

        1 。此地址上无任何主机存在

        2 。有主机但被扫描的特定端口不存在 ( 也可能是被 firewall 过滤了 )

       è¿˜æœ‰ ,为什么我把 clientsocket 的 onread 里的 errorcode 设为 0 了 ,

        还是常常会出现 delphi 自己的错误消息提示 ,象 , 什么的 ,

        这好象是另外一种 error code,如能把它屏蔽我想就不会出现提示了 .

        是吗?如果是 ,该怎么做呢。

       æœ€åŽ : 如果能给我一个多线程的端口扫描源码 ,我再给 分 ( 真的很穷啊 )

       æˆ‘找到了 help 里的有关说明 ( 是在索引中 Error TCP Event 里找到的 )

       WinSock Error Codes

        The following error codes apply to the WinSock ActiveX Controls.

       Error Code Error Message

        The operation is canceled.

        The requested address is a broadcast address, but flag is not set.

        Invalid argument.

        Socket not bound, invalid address or listen is not invoked prior to accept.

        No more file descriptors are available, accept queue is empty.

        Socket is non-blocking and the specified operation will block.

        A blocking Winsock operation is in progress.

        The operation is completed. No blocking operation is in progress.

        The descriptor is not a socket.

        Destination address is required.

        The datagram is too large to fit into the buffer and is truncated.

        The specified port is the wrong type for this socket.

        Option unknown, or unsupported.

        The specified port is not supported.

        Socket type not supported in this address family.

        Socket is not a type that supports connection oriented service.

        Address Family is not supported.

        Address in use.

        Address is not available from the local machine.

        Network subsystem failed.

        The network cannot be reached from this host at this time.

        Connection has timed out when SO_KEEPALIVE is set.

        Connection is aborted due to timeout or other failure.

        The connection is reset by remote side.

        No buffer space is available.

        Socket is already connected.

        Socket is not connected.

        Socket has been shut down.

        The attempt to connect timed out.

        Connection is forcefully rejected.

        Socket already created for this object.

        Socket has not been created for this object.

        Authoritative answer: Host not found.

        Non-Authoritative answer: Host not found.

        Non-recoverable errors.

        Valid name, no data record of requested type.

       æˆ‘想只要对它进行有关操作就能完全屏蔽 winsocket 错误消息 ( 至少

       èƒ½å±è”½å¾ˆå¤š onerror 里的 errorcode 参数无法屏蔽的消息 )

       æˆ‘终于找到原因所在了

       åœ¨æ‰“å¼€ Socket 时也要捕获异常

        try

        ClientSocket.Open;

        except

        MessageBox(MainForm.Handle,'Error connecting to this address','Connect',MB_ICONEXCLAMATION);

        end;

       åœ¨ OnError 中最后要将 ErrorCode 置为 0

        if ErrorEvent=eeConnect then

        begin

        Socket.Close;

        MessageBox(MainForm.Handle,'Error connecting to this address','Connect',MB_ICONEXCLAMATION);

        end

        else if ErrorEvent=eeSend then

        Socket.Close;

        ErrorCode:=0;

       ä½ å¯èƒ½æ— åšç¬¬ä¸€æ­¥

       è€Œè¿™æ ·ä¹Ÿå¯ä»¥åŒºåˆ†ä½ æ‰€è¯´çš„两种情况

       1 。第二步 OnError 就是此地址上无任何主机存在 ,到超时就触发 OnError 事件

       2 。第一步捕捉到异常就是有主机但被扫描的特定端口不存在

渗透神器信息收集-端口扫描masscan篇

       本篇介绍的是互联网大规模端口扫描工具Masscan的使用方法。如果你对扫描原理不感兴趣,端口端口可以直接跳至文章结尾的验证源码验证源码3-opt源码彩蛋部分。

       在搭建环境时,端口端口可以从官方GitHub或百度网盘获取源代码或Windows版本,验证源码验证源码以CentOS 7为例,端口端口可下载源码编译。验证源码验证源码

       使用Masscan时,端口端口你可以执行如下命令来检测指定端口的验证源码验证源码开放情况:

       示例命令如下:`discovered open port /tcp on ...`,表示发现了...的端口端口windows源码输出端口是开放的。

       在进行端口扫描时,验证源码验证源码可以使用率参数(rate)来调整扫描速度,端口端口但需注意,验证源码验证源码过高可能导致漏报,端口端口建议根据自身带宽进行合理设置。cms源码修改

       为了获取目标服务器的banner信息,需要在TCP连接时设置固定源端口,避免因防火墙策略导致的数据包被丢弃。

       实际渗透中,WAF、美食论坛源码IPS和IDS等安全设备能通过指纹识别扫描器,例如,通过查看Apache2日志可发现使用了Masscan。但通过修改User-Agent信息,可绕过此类检测。es源码详解

       当遇到服务器禁止ping响应数据包时,可使用`-Pn`参数取消探测前的ping动作,直接进行扫描。

       对于大规模目标,可以将IP或IP段存入txt文件中,使用`-iL`参数同时扫描多个目标。

       关于扫描结果的保存,Masscan提供TEXT、JSON和XML三种方式。对于个人应用,TEXT格式通常足够使用。

       以上是Masscan的基本使用方法。关注我们,获取更多网络安全知识,无优质不分享。

       彩蛋:无需深入理解原理,直接套用以下命令公式进行扫描操作。

使用java代码,访问某个ip地址的端口,看是否可以访问

       import java.io.BufferedReader;

       import java.io.DataInputStream;

       import java.io.DataOutputStream;

       import java.io.InputStreamReader;

       import java.net.Socket;

       public class Client {

        public static void main(String[] args) throws Exception {

        Socket clientSocket = new Socket(".0.0.1", );

        clientSocket.close();

        }

       }

       没有异常就是可以连接了。

更多内容请点击【热点】专栏