2012-10-30 11 views
6

Sono nuovo qui ... sono stato a cercare aiuto, ma ho pensato di unirmi e chiedere indicazioni.Come imitare un indirizzo IP - Simulatore di dispositivo richiesto

Sto cercando di creare un'applicazione in grado di creare più dispositivi "falsi". Hanno bisogno di un indirizzo IP e sono in grado di rispondere al ping. Essere in grado di rispondere a WMI sarebbe anche bello. Un po 'come un simulatore. Mi piacerebbe creare fino a 50.000 dispositivi, ma anche partire con 1 sarebbe d'aiuto.

Cosa è necessario per tale app? Client/listener TCP? Non ho mai fatto qualcosa di simile prima quindi per favore sii gentile :)

+0

Sono curioso di sapere quante schede di rete Windows può supportare.Comunicaci cosa è successo con l'utilizzo della CPU e della RAM sulla tua macchina dopo aver aggiunto molti adattatori di rete. – Kamil

+0

È possibile avere più indirizzi IP su una singola scheda di rete. È questo che stai chiedendo come fare? – Gabe

risposta

3

È possibile installare l'adattatore di rete virtuale (il driver è incluso nel sistema operativo Windows), ma non l'ho mai usato. Driver per scheda di rete virtuale è qui: %WINDIR%\Inf\Netloop.inf

Si può utilizzare lo strumento da riga di comando chiamato DevCon aggiungere dispositivi da copione, in questo modo:

devcon -r install %WINDIR% \Inf\Netloop.inf *MSLOOP 

installazione richiede sfortunatamente pochi secondi (sul mio 2.0 portatile Core Duo) .

Se è necessario configurare molte schede di rete, è possibile utilizzare la riga di comando netsh.

Esempi:

netsh in ip set address "Local Area Connection" static 10.0.0.1 255.0.0.0 10.0.0.1 1 
netsh in ip add address "Local Area Connection" 10.0.0.2 255.0.0.0 
netsh in ip set address "Local Area Connection 2" 10.0.0.3 255.0.0.0 
netsh in ip set address "Local Area Connection 3" 10.0.0.4 255.0.0.0 
netsh in ip set dns "Local Area Connection" static 10.0.0.250 
netsh in ip set wins "Local Area Connection" static 10.0.0.250 

Si può scaricare la configurazione di rete corrente/Esporta in un file (per vedere come attuale configurazione appare):

netsh interface dump > file.txt 

More netsh examples

Edit: rimosso non Informazioni utile in questo caso.

+0

Il software che sto cercando di "ingannare" vedrebbe solo il 1 dispositivo con più indirizzi IP. Non proprio sicuro come imitare più indirizzi IP da 1 dispositivo. – user1786176

+0

Ho aggiunto informazioni su come aggiungere in modo efficace più indirizzi, ma 50000 è un numero spaventoso e potresti avere problemi. – Kamil

+0

Grazie per l'aggiornamento, ma questo sarà ancora visto come 1 dispositivo (come visto dal software in prova). – user1786176

1

Se sto capendo correttamente, sfortunatamente questo non sarà facile dato che è necessario virtualizzare gli adattatori di rete per fare il lavoro che si desidera. un indirizzo IP è associato a un nic (fisico o logico), non qualcosa che può essere specificato nel codice di livello superiore. VMWare Workstation include un plugin per Visual Studio, quindi forse puoi usarlo per generare molti virtual nics e assegnarli ip in modo programmatico, ma per il resto devi scrivere driver di schede di rete virtuali (probabilmente in un linguaggio non -.net) per farlo , se non si utilizza una tecnologia di virtualizzazione esistente. puoi impilare molti indirizzi IP su un nic, ma il computer che comunica con esso saprà che sono tutti la stessa entità di rete. se questo va bene con te, quindi aggiungi tutti gli IP che vuoi alla carta che hai.

sulla seconda parte della query, poiché si desidera che gli IP siano in grado di ricevere e inviare dati, i loro indirizzi dovranno essere instradabili, quindi non è possibile selezionare alcun vecchio indirizzo IP. se stai bene dietro un muro NAT, potresti usare 10.x.y.z per affrontarli, ma al di fuori del nat sembrerebbero tutti usare lo stesso IP pubblico verso il mondo esterno. per esporre 50k di indirizzi IP pubblicamente instradabili, devi prima registrarti e comprarli.

Infine non è possibile utilizzare TCPClient per eseguire Echo/Ping, poiché utilizzano il protocollo ICMP, ma utilizzano lo spazio dei nomi System.Net e System.Net.NetworkInformation. Ecco alcuni codici VB per inviare un ping solo per darti il ​​sapore:

Imports System 
Imports System.Net 
Imports System.Net.NetworkInformation 


Public Class Pinger 

    <System.Diagnostics.DebuggerNonUserCode()> _ 
     Public Sub New() 
     MyBase.New() 

     'This call is required by the Component Designer. 
     InitializeComponent() 

    End Sub 


    Public Shared Function CanHostBePinged(ByVal IPAddr_DNS_OR_Host_Name As String) As Boolean 
     Dim p As New Ping 
     Dim po As New PingOptions 

     po.Ttl = 256 
     po.DontFragment = False 

     Dim stringOut As String = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDE" 
     Dim streamOut As Byte() = System.Text.Encoding.ASCII.GetBytes(stringOut) 

     Try 
      Dim reply As PingReply = p.Send(IPAddr_DNS_OR_Host_Name, 30, streamOut) 
      If reply.Status = IPStatus.Success Then 
       Return True 
      Else 
       Return False 
      End If 
     Catch ex As Exception 
      Return False 
     End Try 

    End Function 


End Class 
+0

Grazie, cercherò il plug-in VMWare ... saluti – user1786176

+0

Credo che abbia chiesto C#, non VB –

+0

true. quindi "solo per sapore". VB -> C# è banale, specialmente per questa classe. –