当前位置:首页 > 代码 > 正文

ip连续扫描代码(IP扫描的原理是什么)

admin 发布:2022-12-19 21:22 118


本篇文章给大家谈谈ip连续扫描代码,以及IP扫描的原理是什么对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

c# 局域网IP扫描程序

用多线程,循环ping某个网关下的IP(0-255)。ping通了就记录下来,C#中有支持ping IP地址的类。给你提供一点代码吧:

string gate = "192.168.10.";//网关

for (int index = 1; index = 255; index++)

{

IPAddress address = IPAddress.Parse(gate + index.ToString());

Thread thread = new Thread(new ThreadStart(

delegate()//匿名方法

{

Ping ping = new Ping();

PingReply result = ping.Send(address);

if (result.Status == IPStatus.Success)

{

lock (this.lstComputer)//防止2个线程去ping同一个IP,节约时间

{

this.lstComputer.Items.Add(Dns.GetHostEntry(address).HostName + " : " + address.ToString());//ping通的结果保存到ListBox中,即在线的人

}

}

}

));

thread.IsBackground = true;//设为后台线程

thread.Start();//启动线程

}

局域网在线扫描 IP,MAC Java源代码

1.得到局域网网段,可由自己机器的IP来确定 (也可以手动获取主机IP-CMD-ipconfig /all)

2.根据IP类型,一次遍历局域网内IP地址

JAVA类,编译之后直接运行便可以得到局域网内所有IP,具体怎样使用你自己编写相应代码调用便可

代码如下::

package bean;

import java.io.*;

import java.util.*;

public class Ip{

static public HashMap ping; //ping 后的结果集

public HashMap getPing(){ //用来得到ping后的结果集

return ping;

}

//当前线程的数量, 防止过多线程摧毁电脑

static int threadCount = 0;

public Ip() {

ping = new HashMap();

}

public void Ping(String ip) throws Exception{

//最多30个线程

while(threadCount30)

Thread.sleep(50);

threadCount +=1;

PingIp p = new PingIp(ip);

p.start();

}

public void PingAll() throws Exception{

//首先得到本机的IP,得到网段

InetAddress host = InetAddress.getLocalHost();

String hostAddress = host.getHostAddress();

int k=0;

k=hostAddress.lastIndexOf(“.”);

String ss = hostAddress.substring(0,k+1);

for(int i=1;i =255;i++){ //对所有局域网Ip

String iip=ss+i;

Ping(iip);

}

//等着所有Ping结束

while(threadCount0)

Thread.sleep(50);

}

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

Ip ip= new Ip();

ip.PingAll();

java.util.Set entries = ping.entrySet();

Iterator iter=entries.iterator();

String k;

while(iter.hasNext()){

Map.Entry entry=(Map.Entry)iter.next();

String key=(String)entry.getKey();

String value=(String)entry.getValue();

if(value.equals(“true”))

System.out.println(key+“--”+value);

}

}

class PingIp extends Thread{

public String ip; // IP

public PingIp(String ip){

this.ip=ip;

}

public void run(){

try{

Process p= Runtime.getRuntime()。exec (“ping ”+ip+ “ -w 300 -n 1”);

InputStreamReader ir = new InputStreamReader(p.getInputStream());

LineNumberReader input = new LineNumberReader (ir);

//读取结果行

for (int i=1 ; i 7; i++)

input.readLine();

String line= input.readLine();

if (line.length() 17 || line.substring(8,17)。equals(“timed out”))

ping.put(ip,“false”);

else

ping.put(ip,“true”);

//线程结束

threadCount -= 1;

}catch (IOException e){}

}

}

}

批处理扫描IP段 指定端口 给个代码谢谢 需要导出结果的

@echo off

setlocal

cls

color e

title SYN(正在扫描,请稍候.......)

for /f "eol= tokens=1,2 delims= " %%i in (ip.txt) do s syn %%i %%j 端口号 /save

for /f "eol=- tokens=1 delims= " %%i in (result.txt) do echo %%is1.txt

for /f "eol=P tokens=1 delims= " %%i in (s1.txt) do echo %%is2.txt

for /f "eol=S tokens=1 delims= " %%i in (s2.txt) do echo %%iips.txt

del s1.txt

del s2.txt

exit

前提: 这是一段批处理 在批处理同一目录下得有个s扫描器

然后机器得破解了tcpip的并发数补丁

另外翻盘好不容易找到了这段批处理~~~~

跪求vb扫描局域网电脑的IP和MAC地址的完整代码(悬赏)

#include

#include

#include

#include "iphlpapi.h"

#pragma comment ( lib, "ws2_32.lib" )

#pragma comment ( lib, "Iphlpapi.lib" )

void main( int argc, char ** argv )

{

int numberOfHost = 1;

struct hostent *remoteHostent;

//处理命令行参数

if ( argc == 3 )

numberOfHost = atoi( argv[2] );

if ( ( argc 3 ) || ( argc 2 ) )

{

printf( "RmtHost v0.2 - Get remote HostName /MacAddress\n" );

printf( "by ShotgunLabs ( Shotgun@xici.net )\n\n" );

printf( "Usage :\n\tRmtHost.exe [RemoteIP] \n\n" );

printf( "Example:\n\tRmtHost.exe 192.168.0.3\n" );

printf( "\tRmtHost.exe 192.168.0.3 255\n\n" );

exit( 0 );

}

//初始化SOCKET

WSADATA wsaData;

int iRet = WSAStartup(MAKEWORD(2,1), wsaData);

if ( iRet != 0 )

{

printf( "WSAStartup Error:%d\n", GetLastError() );

exit( 0 );

}

int nRemoteAddr = inet_addr( argv[1] );

remoteHostent= (struct hostent*)malloc( sizeof(struct hostent ));

struct in_addr sa;

for ( int i = 0; i numberOfHost; i ++ )

{

//获取远程机器名

sa.s_addr = nRemoteAddr;

printf( "\nIpAddress : %s\n", inet_ntoa( sa ) );

remoteHostent = gethostbyaddr( (char*)nRemoteAddr,4, AF_INET );

if ( remoteHostent )

printf( "HostName : %s\n",remoteHostent-h_name );

else

printf( "gethostbyaddr Error:%d\n",GetLastError() );

//发送ARP查询包获得远程MAC地址

unsigned char macAddress[6];

ULONG macAddLen = 6;

iRet=SendARP(nRemoteAddr, (unsigned long)NULL,(PULONG)macAddress, macAddLen);

if ( iRet == NO_ERROR )

{

printf( "MacAddress: " );

for( int i =0; i6; i++ )

{

printf( "%.2x", macAddress[i] );

if ( i5 ) printf( "-" );

}

printf( "\n" );

}

else

printf( "SendARP Error:%d\n", GetLastError());

nRemoteAddr = htonl( ntohl( nRemoteAddr ) + 1 );

}

局域网里一个IP不停的循环扫描,是什么原因?

你看看是否有人中了ARP欺骗病毒

这个是检测软件的下载

附:Anti Arp Sniffer 的使用方法

双击Anti Arp图标,出现图二所示对话框。

图二

输入网关地址,(点击“开始”à “运行”,在窗口中输入“cmd”,点“确定”,调出“命令提示符”。输入并执行以下命令:ipconfig à网关 IP 地址,即“ Default Gateway ”对应的值。)

点击获取网关MAC地址,点击“自动防护”保证当前网卡与网关的通信不被第三方监听。

参考链接:

求一个 扫描一个指定ip并指定端口范围的c#程序

class PingExam

{

public static void Main()

{

Ping ping = new Ping();

string ip = "192.168.1.43"; // 目标ip

int[] ports = { 20, 21, 25, 80, 8080, 2588 }; // 需要扫描的端口

scanPort(IPAddress.Parse(ip), ports);

}

private static void scanPort(IPAddress address, int[] ports)

{

try {

int count = ports.Length;

AutoResetEvent[] arEvents = new AutoResetEvent[count]; // 同步对象

for (int i = 0; i count; i++) {

arEvents[i] = new AutoResetEvent(false); // 同步对象, 初始未触发

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

socket.Bind(new IPEndPoint(IPAddress.Any, 0));

socket.BeginConnect(new IPEndPoint(address, ports[i]),

callback,

new ArrayList() { socket, ports[i], arEvents[i]} // 传递3个参数: 当前socket, 端口, 同步对象

);

}

WaitHandle.WaitAll(arEvents); // 等待所有扫描工作完成

}

catch (Exception ex) {

Console.WriteLine(ex.Message);

}

}

private static void callback(IAsyncResult ar) // 扫描完成后的回调方法

{

ArrayList list = (ArrayList)ar.AsyncState; // 获取传递的参数

Socket socket = (Socket)list[0];

int port = (int)list[1];

AutoResetEvent arevent = (AutoResetEvent)list[2];

if (ar.IsCompleted socket.Connected) {

Console.WriteLine("port: {0} open.", port); // 检查 connected属性, 如果为true 则表示是开放的

}

else {

Console.WriteLine("port: {0} closed.", port);

}

try {

socket.Shutdown(SocketShutdown.Both);

socket.Close();

}

catch {

}

arevent.Set(); // 完成后触发

}

}

关于ip连续扫描代码和IP扫描的原理是什么的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/24821.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载