How to know the running state of a tor relay? - tor

For study purpose, I need to know whether a tor relay is running or not at a specific time in the past. Is it possible to get the information and how can I do this?

If you know the IP address of the relay, or can look it up in relay search, you can use ExoneraTor can tell you if it was a relay on a specific date and time.

Related

Python - Bridge server and client communication over the internet with websockets

My question is more theoretical that with actual code.
I have a programme that is quite heavy on computation load and is searching for specific events. Once it finds them I want to forward a small JSON so other computers in other networks can read that and answer in a similar fashion.
More or less the ABC of websockets.
My question is about how to bridge the gap in terms of communication between them.
I've read that servers can be hosted in places like pythonanywhere and that you could forward your ports so anybody can connect to it.
The first one is not appealing as I don't need to host the whole programme, I have a computer acting as server for that. I just need to have a public address outside my network for the clients to look at.
As I don't want to get exposed and I'm by no means an expert on security the second option is also out of the question.
I've been looking everywhere and it seems I can't think of the right words for my query because I haven't found anything that could be a solution.
Can you give me a hint here?

How to stay on same IP for days and weeks on tor browser?

I want to create a secondary anonymous social media profile.
Since most social media websites can easily detect that it's the same person whos using two profiles so I want to avoid that & I want to use the tor browser to work on my second profile.
In order to achieve above, how do I keep the same IP address for weeks and every time log into the torr using an IP address in a specific city/ area?
Kindly suggest.
To achieve this you can edit the Tor Browser's torrc configuration file and use the ExitNodes configuration option to specify which exit node(s) you wish to use for your browsing session. You can pick the exit nodes using a country code, or a specific exit relay's identity fingerprint.
Selecting by city isn't an option unless you know a relay operator and where they are operating relays from, by country or autonomous system number is the best you can do to isolate where your traffic comes from. Depending on where you want the traffic to come from, you may have limited selections available, and there's no guarantee the same relay will always be fast or online at all.
Note that all Tor exits are known so no matter which exit you choose, the site you're browsing can easily identify your Tor usage, and using the same exit doesn't help with anonymity or making it harder to detect if you're the same person using another profile. In fact, it could be argued that using the same exit over a long period of time could reduce anonymity depending on how it's used. But if you're logging in to the same profile over time, then using the same or different exits may not make much difference.
One way to find suitable nodes is to use Tor's relay search and use the Advanced mode as you will need to only select nodes with the "Exit" flag. Advanced search also lets you further reduce the list by selecting a country or AS.
Here are examples of what you might put in torrc:
# Only allow exit's through relays located in Russia
ExitNodes {RU}
# Only exit through a single node of your choosing
# The fingerprint here is displayed in relay search
ExitNodes ABCD1234CDEF5678ABCD1234CDEF5678ABCD1234

Access load-balanced website when DNS lookup is restricted on server

The scenario is - I need to send push notification to Apple push server hosted at gateway.sandbox.push.apple.com. This Apple server is load balanced and the destination IP address can be anything in 17.x.x.x block.
Now my server which will be requesting Apple server is in secure environment and is behind firewalls. I have got the IP range 17.x.x.x unblocked, but DNS resolving is not possible on that server. That server also doesn't have Internet access on it.
What I did was - I pinged the Apple server from another system and got the Apple server's IP address for the moment. Then I mapped that IP address with the DNS name in the hosts file of my Windows server. This worked, but now the IP address can change anytime at the Apple end, and this will break things.
What can I do in this scenario?
You can talk to your security people and in cooperation with them come up with a proper, internally supported, way to provide what you need. What you need is to look up an address, and then talk to that address. Currently, you are only provided half of that.
What you're asking us for is a way to circumvent your own organization's security policies (policies that admittedly appear stupid, but that's another matter entirely). Even if someone here can come up with a technical way to do what you ask that works for now, it's likely to break at any time, since you're working at odds with your own workplace. Also, what will your bosses say if they find out that you're violating security policies?
Security very often comes down to tradeoffs. As the saying goes, the only truly secure system is one that has been encased in concrete and sunk to the bottom of the sea. But such a system will also be somewhat difficult to get useful work out of, so usually we accept lesser security in order to get work done. In your case, the tradeoff currently sits in a place that prevents you from doing whatever it is you're working on. So your organization needs to make a choice: change the tradeoff so that your machine can look up names, or keep the current tradeoff and accept that your task will not be done.
I'm sorry that I can't give you a straight up "Sure, do this" kind of answer, but your problem really is not technical.

Chat program without a central server

I'm developing a chat application (in VB.Net). It will be a "secure" chat program. All traffic will be encrypted (I also need to find the best approach for this, but that's not the question for now).
Currently the program works. I have a server application and a client application. However I want to setup the application so that it doesn't need a central server for it to work.
What approach can I take to decentralize the network?
I think I need to develop the clients in a way so that they do also act as a server.
How would the clients know what server it needs to connect with / what happens if a server is down? How would the clients / servers now what other nodes there are in the network without having a central server?
At best I don't want the clients to know what the IP addresses are of the different nodes, however I don't think this would be possible without having a central server.
As stated the application will be written in VB.Net, but I think the language doesn't really matter at this point.
Just want to know the different approaches I can follow.
Look for example at the paper of the Kademlia protocol (you can find it here). If you just want a quick overview, look at the Wikipedia page http://en.wikipedia.org/wiki/Kademlia. The Kademlia protocol defines a way of node lookups in a network in a decentral way. It has been successfully applied in the eMule software - so it is tested to really work.
It should cause no serious problems to apply it to your chat software.
You need some known IP address for clients to initially get into a network. Once a client is part of a network, things can be more decentralized, but that first step needs something.
There are basically only two options - either the user provides one (for an existing node of the network - essentially how BitTorrent trackers work), or you hard-code in a gateway node (which is effectively a central server).
Maybe you can see uChat program. It's a program from uTorrent creator with chat without server in mind.
The idea is connect to a swarm from a magnetlink and use it to send an receive messages. This is as Amber answer, you need an access point, may it be a server, a know swarm, manual ip, etc.
Here is uChat presentation: http://blog.bittorrent.com/2011/06/30/uchat-we-just-need-each-other/

How to simulate browsing from various locations?

I want to check a particular website from various locations. For example, I see a site example.com from the US and it works fine. The colleague in Europe says he cannot see the site (gets a dns eror).
Is there any way I can check that for my self instead of asking him every time?
This is a bit of self promotion, but I built a tool to do just this that you might find useful, called GeoPeeker.
It remotely accesses a site from servers spread around the world, renders the page with webkit and sends back an image. It will also report the IP address and DNS information of the site as it appears from that location.
There are no ads, and it's very stream-lined to serve this one purpose. It's still in development, and feedback is welcome. Here's hoping somebody besides myself finds it useful!
Sometimes a website doesn't work on my PC and I want to know if it's the website or a problem local to me(e.g. my ISP, my router, etc).
The simplest way to check a website and avoid using your local network resources(and thus avoid any problems caused by them) is using a web proxy such as Proxy.org.
Well, DNS should be the same worldwide, wouldn't it? Of course it can take up to a day or so until your new DNS record is propagated around the world. So either something is wrong on your colleague's end or the DNS record still takes some time...
I usually use online DNS lookup tools for that, e.g. http://network-tools.com/
It can check your HTTP header as well. Only a proxy located in Europe would be better.
Besides using multiple proxies or proxy-networks, you might want to try the planet-lab. (And probably there are other similar institutions around).
The social solution would be to post a question on some board that you are searching for volunteers that proxy your requests. (They only have to allow for one destination in their proxy config thus the danger of becoming spam-whores is relatively low.) You should prepare credentials that ensure your partners of the authenticity of the claim that the destination is indeed your computer.
DNS info is cached at many places. If you have a server in Europe you may want to try to proxy through it
It depends on wether the locatoin is detected by different DNS resolution from different locations, or by IP address that you are browsing from.
If its by DNS, you could just modify your hosts file to point at the server used in europe. Get your friend to ping the address, to see if its different from the one yours resolves to.
To browse from a different IP address:
You can rent a VPS server. You can use putty / SSH to act as a proxy. I use this from time to time to brows from the US using a VPS server I rent in the US.
Having an account on a remote host may or may not be enough. Sadly, my dreamhost account, even though I have ssh access, does not allow proxying.
The only thing that springs to mind for this is to use a proxy server based in Europe. Either have your colleague set one up [if possible] or find a free proxy. A quick Google search came up with http://www.anonymousinet.com/ as the top result.

Resources