c#端口扫描器wpf+socket
布局如下
<Window x:Class="PortTest.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:PortTest"
mc:Ignorable="d"
Title="PortScan" Height="" Width="">
<Grid>
<Menu>
<MenuItem Header="About" FontSize="" Name="About" Click="About_Click"/>
</Menu>
<StackPanel Margin="">
<WrapPanel>
<Label FontSize="" >开始ip</Label>
<TextBox Width="" Name="startIP" FontSize="" VerticalAlignment="Center"></TextBox>
<Label FontSize="">开始端口</Label>
<TextBox Width="" Name="startPort" PreviewTextInput="Number_PreviewTextInput" FontSize="" VerticalAlignment="Center"></TextBox>
</WrapPanel>
<WrapPanel Margin="0 10">
<Label FontSize="">结束ip</Label>
<TextBox Width="" Name="endIP" GotFocus="endIP_GotFocus" FontSize="" VerticalAlignment="Center"></TextBox>
<Label FontSize="">结束端口</Label>
<TextBox Width="" Name="endPort" PreviewTextInput="Number_PreviewTextInput" GotFocus="endPort_GotFocus" FontSize="" VerticalAlignment="Center"></TextBox>
</WrapPanel>
<WrapPanel>
<Label FontSize="">超时时长(ms)</Label>
<TextBox Name="timeOut" PreviewTextInput="Number_PreviewTextInput" FontSize="" VerticalAlignment="Center" Width=""></TextBox>
</WrapPanel>
<Button Click="Btn_Test" Width="" Height="" Margin="276,15">开始测试</Button>
<ListView Name="resultListView" Height=""></ListView>
</StackPanel>
</Grid>
</Window>
这里有两个比较关键的功能,将ip字符串转成对应的ulong值,同时还有逆过程
大概思路为
ip:127.0.0.1
127*256*256*256+0*256*256+0*256+1
逆过程则为先%256获取最后一位的值,然后减去这个值再进行模运算,可参考代码进行理解,如下
public static ulong IP2ULong(string ip)
{
if (!CheckIP(ip))
{
//ip error
MessageBox.Show("ip错误");
}
List<ulong> data = new List<ulong>();
var ips = ip.Split('.');
foreach (var item in ips)
{
data.Add(ulong.Parse(item));
}
ulong result = ;
ulong first = data[] * * * ;
ulong second = data[] * * ;
ulong third = data[] * ;
result = first + second + third + data[];
return result;
} public static string ULong2IP(ulong ip)
{
ulong tmp = ip;
ulong last = tmp % ;
tmp = tmp - last;
ulong third = tmp % ( * )/;
tmp = tmp - third;
ulong second = tmp % ( * * )//;
tmp = tmp - third;
ulong first = tmp % ((ulong) * * * )///; return $"{first}.{second}.{third}.{last}";
}
socket操作部分
这里通过绑定指定的端口来实现扫描对等端端口状态
IPAddress ip = IPAddress.Parse(ipStr);
IPEndPoint point = new IPEndPoint(ip, port); Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
var result = s.BeginConnect(point, null, null);
result.AsyncWaitHandle.WaitOne(timeoutValue, true);
if (!result.IsCompleted)
{
AddLog($"【{ipStr}:{port}】:timeout");
s.Close();
}
else
{
AddLog($"【{ipStr}:{port}】:success");
s.Close();
}
布局
布局如下
c#端口扫描器wpf+socket的更多相关文章
- 端口扫描器--利用socket协议
#!/usr/bin/env python # -*- coding:UTF-8 -*- import optparse import socket import threading # 用法 pyt ...
- Python脚本写端口扫描器(socket,python-nmap)
目录 Socket模块编写 扫描给定主机是否开放了指定的端口 python-nmap模块编写 扫描给定ip或给定网段内指定端口是否开放 一个用python写的简单的端口扫描器,python环境为 3. ...
- Python3实现TCP端口扫描器
本文来自 高海峰对 玄魂工作室 的投稿 作者:高海峰 QQ:543589796 在渗透测试的初步阶段通常我们都需要对攻击目标进行信息搜集,而端口扫描就是信息搜集中至关重要的一个步骤.通过端口扫描我们可 ...
- Python与Hack之window下运行带参数的Python脚本,实现一个简单的端口扫描器
1.前提是:windows已经配置好Python的环境变量: 2.进入cmd命令行模式: **输入python命令,检测是否环境配置好:显示这样说明配置环境变量没问题 **用cd命令进入Python脚 ...
- java编写一个端口扫描器
好久没写java了,学的时候,也没学习网络编程这一块,无意中看到了一本书,于是小小复习一下java,写个端口扫描器,玩玩吧,网上这种小公具有的是,就是自己无聊写着玩玩. 源代码如下: 共两个类,比较简 ...
- 『Python』 多线程 端口扫描器
0x 00 Before Coding 当端口打开时,向端口发送 TCP SYN 请求,会返回一个 ACK 响应: 当端口关闭,返回的是 RST 响应: 0x 01 Coding 可以用 socke ...
- mac/unix系统:C++实现一个端口扫描器
在比较早以前,我用过S扫描器, 以及大名鼎鼎的nmap扫描器, 可以快速扫描某个主机开放的端口, 今天使用C实现这样一个软件, 编译环境为Mac, 系统版本10.11.6: #include < ...
- 【技术分享】手把手教你使用PowerShell内置的端口扫描器
[技术分享]手把手教你使用PowerShell内置的端口扫描器 引言 想做端口扫描,NMAP是理想的选择,但是有时候NMAP并不可用.有的时候仅仅是想看一下某个端口是否开放.在这些情况下,PowerS ...
- python端口扫描器
吃了个火鸡面后感觉到了怀疑人生!!!!!!!!!妈耶,在也不吃了.思路都给辣没了!!! python端口扫描器代码如下: #-*-coding:utf-8 from socket import * i ...
随机推荐
- 安全专家发现GE Multilin SR的一个关键漏洞对全球电网构成严重威胁。
A team of researchers from New York University has found a serious vulnerability in some of GE Multi ...
- 最完美ThinkPHP Nginx 配置文件
一个配置文件,完美支持普通,兼容,pathinfo,rewrite4种url模式,别怪我没提醒你收藏哦. 常见的静态文件404时也不会再去跑一遍fastcgi浪费资源. server { listen ...
- yum源遇到的问题
1.在配置CentOS的本地yum源时,所遇到的问题,本地yum设置失败 步骤: vim /etc/yum.repos.d/local.repo 设置本地源 可能会遇到本地源问题,注意使用tab键 ...
- 10 Zabbix4.4.1系统告警“Zabbix server is not running”
点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 Zabbix4.4.1系统告警“Zabbix server is not running” 第一步 ...
- WebSocket是什么原理,为什么可以实现持久连接
本文摘抄自知乎,原文标题:WebSocket 是什么原理?为什么可以实现持久连接? Websocket只是协议而已. 一.WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化, ...
- SSH中直接运行php文件
cd /home/afish/domains/afish.cnblogs.com/public_htmlphp locoy_im_folder.php php locoy_im.php
- jquery判断cookie是否存在
首先请加载jquery库与jquery cookie插件 http://code.jquery.com/jquery-latest.js http://files.cnblogs.com/afish/ ...
- repo 回退当前分支下所有仓库到指定日期前的最新代码版本
回退命令: repo forall -c 'commitID=git log --before "2019-11-24 23:59" -1 --pretty=format:&quo ...
- 【leetcode】745. Prefix and Suffix Search
题目如下: Given many words, words[i] has weight i. Design a class WordFilter that supports one function, ...
- 20.包含min函数的栈(python)
题目描述 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). # -*- coding:utf-8 -*- class Solution: def ...