You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Issue moved from the old repo. Assigning the issue to the original assignee @nikitaborisov.
As @nikitaborisov reported, when testing a single decoy, the following behavior would be useful:
Automatically dial that decoy, without waiting for a connection to the proxy socket
Only dial that decoy once, rather than keep retrying upon failure
Exit after the connection fails or succeeds
Print a final error message documenting failure reason, or success, before exiting.
This would make it much easier to test an individual decoy and also aggregate failure reports.
I think best way to do this would be to get a separate program for this, and not try to integrate it with cli. You'd be able to test as many decoy as you want with lightweight goroutines, rather than spawning processes. Assuming that's the path we'd take, we can achieve this by adding a function to gotapdance that would look something like
MakeRawTestConn(decoy pb.TLSDecoySpec) *tdRawConn {
// fill all the fields, like it's done in makeTdRaw and conn_flow.go
tdRaw.pinDecoySpec = true
tdRaw.decoySpec = decoy
return tdRaw
}
The tool would call said MakeRawTestConn() function to get the testConn, and then Dial() on the testConn, which would then attempt the TapDance handshake and return the error in desired format.
or, better yet, just have TestDecoy(decoy pb.TLSDecoySpec) error, which would just do both of the above.
That doesn't address 2., which we could solve by using exported constants
ConnectionAttemptsOnDial = 6 // attempts to dial different decoys on first connection
ConnectionAttemptsOnRedial = 2 // attempts to redial same decoy on reconnect
which you would then override.
It would also be very useful for the final output to provide even more information. This may include RTT, TLS fingerprint used, cipher, and HTTP version.
The text was updated successfully, but these errors were encountered:
Issue moved from the old repo. Assigning the issue to the original assignee @nikitaborisov.
As @nikitaborisov reported, when testing a single decoy, the following behavior would be useful:
This would make it much easier to test an individual decoy and also aggregate failure reports.
I think best way to do this would be to get a separate program for this, and not try to integrate it with
cli
. You'd be able to test as many decoy as you want with lightweight goroutines, rather than spawning processes. Assuming that's the path we'd take, we can achieve this by adding a function togotapdance
that would look something likeThe tool would call said
MakeRawTestConn()
function to get the testConn, and thenDial()
on the testConn, which would then attempt the TapDance handshake and return the error in desired format.or, better yet, just have
TestDecoy(decoy pb.TLSDecoySpec) error
, which would just do both of the above.That doesn't address
2.
, which we could solve by using exported constantswhich you would then override.
It would also be very useful for the final output to provide even more information. This may include RTT, TLS fingerprint used, cipher, and HTTP version.
The text was updated successfully, but these errors were encountered: