
GoLDBeRG (Ex-Member)
Expert
    
Messaggi: 331
Iscritto: 19/12/2005
|
Questo topic è stato chiuso dal moderatore ciao raga sto cercando di far connettere con un maledetto socks5 il mio utente ad un server ma riesco a ricevere come risposta dal proxy solo il carattere "€ che non so cosa voglia dire... ditemi se vedete qualcosa che non va....
Codice sorgente - presumibilmente VB.NET |
Try Randomize() Dim num As Integer = Math.Round(arrsocks.Count - 1) * Rnd() Dim socksip As String = arrsocks(num) Dim pass() As String = Split(socksip, ":") socksip = pass(0) Dim socksport = pass(1) Dim ihe As IPHostEntry = Dns.Resolve("thedivxzone.info") s = socksproxy.ConnectToSocks5Proxy("ipsocks", CType(Convert.ToInt32("portasocks"), System.UInt16), ihe.AddressList(0).ToString(), CType(412, System.UInt16), "", "") Do While True Dim buffer(1024) As Byte Dim count As Integer = s.Receive(buffer, buffer.Length, SocketFlags.None) If (count <= 1) Then Exit Do End If Try Me.readmessage = (Me.readmessage & Encoding.Default.GetString(buffer, 0, count)) If Me.readmessage.EndsWith(New String("|".ToCharArray)) Then Dim args As Object() = New Object() {Me.readmessage} processdata(readmessage)'controllate qui cosa ricevete readmessage = "" End If Catch exception1 As Exception End Try Thread.Sleep(100) Loop
|
CLASSE SOCKSPROXY
Codice sorgente - presumibilmente VB.NET |
Imports System Imports System.Net Imports System.Net.Sockets Imports System.Text Public Class socksproxy Public Shared Function ConnectToSocks5Proxy(ByVal proxyAdress As String, ByVal proxyPort As Short, ByVal destAddress As String, ByVal destPort As Short, ByVal userName As String, ByVal password As String) As Socket Dim destIP As IPAddress = Nothing Dim proxyIP As IPAddress = Nothing Dim request(257) As Byte Dim response(257) As Byte Dim nIndex As Short Try proxyIP = IPAddress.Parse(proxyAdress) Catch t As FormatException proxyIP = Dns.GetHostByAddress(proxyAdress).AddressList(0) End Try Try destIP = IPAddress.Parse(destAddress) Catch End Try Dim proxyEndPoint As IPEndPoint = New IPEndPoint(proxyIP, proxyPort) Dim s As Socket = New Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp) s.Connect(proxyEndPoint) nIndex = 0 request(nIndex + 1) = Hex(5) request(nIndex + 2) = Hex(2) request(nIndex + 3) = Hex(0) request(nIndex + 4) = Hex(2) s.Send(request, nIndex, SocketFlags.None) Dim nGot As Integer = s.Receive(response, 2, SocketFlags.None) If (nGot <> 2) Then Exit Function End If If (response(1) = 255) Then s.Close() End If Dim rawBytes() As Byte nIndex = 0 request(nIndex + 1) = Hex(5) request(nIndex + 2) = Hex(4) request(nIndex + 3) = Hex(0) request(nIndex + 4) = Hex(1) rawBytes = destIP.GetAddressBytes() rawBytes.CopyTo(request, nIndex) nIndex += rawBytes.Length Dim portBytes() As Byte = BitConverter.GetBytes(destPort) For i As Integer = portBytes.Length - 1 To 0 Step -1 nIndex += 1 request(nIndex) = portBytes(i) Next i s.Send(request, request.Length, SocketFlags.None) s.Receive(response) If (response(1) <> 0) Then Return s End If End Function End Class
|
|
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da GoLDBeRG:
ciao raga sto cercando di far connettere con un maledetto socks5 ... |
Sicuramente questa parte (rispetto all'originale C#)
Codice sorgente - presumibilmente Plain Text |
nIndex = 0
request(nIndex + 1) = Hex(5)
request(nIndex + 2) = Hex(2)
request(nIndex + 3) = Hex(0)
request(nIndex + 4) = Hex(2)
|
è sbagliata. Dovrebbe essere
Codice sorgente - presumibilmente Plain Text |
request(0) = 5
request(1) = 2
request(2) = 0
request(3) = 2
nIndex = 4
|
ed e' un errore importante in quanto con
request(nIndex + 1) = Hex(5)
scrivi la versione di SOCKS nell'elemento 1 e non nell'elemento 0 |
|

GoLDBeRG (Ex-Member)
Expert
    
Messaggi: 331
Iscritto: 19/12/2005
|
eh ma nel primo passaggio ce scritto... request(nindex++)=hex(5)
non vuol dire request(nindex+1)=hex(5)????
|
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da GoLDBeRG:
eh ma nel primo passaggio ce scritto... request(nindex++)=hex(5)
non vuol dire request(nindex+1)=hex(5)???? |
No |
|

GoLDBeRG (Ex-Member)
Expert
    
Messaggi: 331
Iscritto: 19/12/2005
|
ho risolto facendo una dll con quella classe in c# e poi implementata in vb... va che è una meraviglia... invece di convertirla è meglio.....
|
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da GoLDBeRG:
ho risolto facendo una dll con quella classe in c# e poi implementata in vb... va che è una meraviglia... invece di convertirla è meglio..... |
Hai fatto bene ... il problema era proprio la conversione (a partire da quello che ti avevo segnalato ...). |
|

punkettone90 (Member)
Expert
    
Messaggi: 279
Iscritto: 16/05/2007
|
ma... la differenza tra
request(nindex++)=hex(5) e
request(nindex+1)=hex(5)
non è solo che alla fine dell'istruzione nindex è stato incrementato?
|
|

theprogrammer (Normal User)
Guru^2
    
Messaggi: 2509
Iscritto: 28/01/2009
|
Postato originariamente da punkettone90:
ma... la differenza tra
request(nindex++)=hex(5) e
request(nindex+1)=hex(5)
non è solo che alla fine dell'istruzione nindex è stato incrementato? |
No |
|

Il Totem (Admin)
Guru^2
    
Messaggi: 3635
Iscritto: 24/01/2006
|
Se in c# funziona come in C++, lo statement i++ restituisce il valore di i e solo successivamente lo incrementa, mentre ++i incrementa il valore di i e poi lo restituisce.
|
|