본문 바로가기
다양한 TIP

Tor browser node 확인 및 데이터 가져오는 코드

by 유기농프로그래밍 2023. 3. 8.
반응형

Tor Project란?

Tor Project는 온라인에서 개인정보와 자유롭고 안전한 커뮤니케이션을 지향하는 비영리 단체입니다. Tor Project는 Tor라는 익명성 및 개인정보 보호 네트워크를 개발 및 유지보수하고 있으며, Tor 네트워크를 이용한 익명성을 유지하는 데 도움을 주는 다양한 도구와 자료를 제공하고 있습니다.

Tor Project는 Tor 네트워크와 함께, 인터넷 상에서 사용자의 익명성과 개인정보 보호를 보장하는데 매우 중요한 역할을 합니다. Tor Project는 누구나 사용할 수 있는 Tor 브라우저를 비롯한 다양한 Tor 관련 도구를 제공하여 사용자가 익명성을 유지하고 인터넷에서 자유롭게 커뮤니케이션을 할 수 있도록 돕고 있습니다.

또한, Tor Project는 인터넷에서 자신의 개인정보와 프라이버시를 보호하고, 국가나 조직으로부터의 감시와 검열로부터 벗어나기 위한 다양한 교육 자료와 가이드도 제공하고 있습니다. Tor Project는 온라인에서의 자유롭고 안전한 커뮤니케이션을 위한 다양한 커뮤니티와 협력하여 인터넷을 더욱 자유롭고 안전한 공간으로 만드는 데 기여하고 있습니다.

 

Tor 구성요소

Tor 네트워크: Tor 네트워크는 사용자들이 인터넷 상에서 익명성을 유지할 수 있도록 하는 중계 네트워크입니다. Tor 네트워크는 Relay 노드와 Exit 노드를 포함하며, 사용자는 Tor 브라우저를 사용하여 이 네트워크를 통해 인터넷에 접속할 수 있습니다.

Tor 브라우저: Tor 브라우저는 사용자가 Tor 네트워크를 통해 인터넷에 접속할 수 있는 웹 브라우저입니다. Tor 브라우저는 Firefox 기반으로 만들어졌으며, Tor 네트워크를 사용하여 사용자의 인터넷 트래픽을 암호화하고 익명화합니다.

Tor 관련 도구: Tor Project는 Tor 네트워크를 사용하여 익명성을 유지하는 다양한 도구를 제공합니다. 이러한 도구에는 Tor Messenger, TorBirdy, Tor Check 등이 있습니다.

Tor Project 웹사이트: Tor Project 웹사이트는 Tor 프로젝트의 정보와 다양한 도구를 제공하고 있습니다. Tor Project 웹사이트에서는 Tor 브라우저를 다운로드하거나, Tor 네트워크에 대한 정보를 얻을 수 있습니다.

Tor Community: Tor 프로젝트는 전 세계의 사용자들과 커뮤니티와 함께 작동하고 있습니다. Tor Community는 Tor 네트워크와 관련하여 다양한 질문, 제보, 토론을 할 수 있는 포럼이나 메일링 리스트를 운영하고 있습니다.

Tor 개발자들: Tor 프로젝트는 전 세계의 자원봉사자와 개발자들이 함께 작동하여 만들어진 프로젝트입니다. Tor 개발자들은 Tor 네트워크의 유지보수 및 보안 업데이트, 새로운 도구와 기능 개발 등을 수행하고 있습니다.

이러한 구성 요소들이 함께 작동하여 Tor 프로젝트는 사용자의 익명성과 개인정보 보호를 보장하고, 인터넷 상에서의 자유롭고 안전한 커뮤니케이션을 지향합니다.

 

Node(노드)

Tor 노드는 Tor 프로젝트의 중계 노드(relay node)와 출구 노드(exit node)로 구성된 네트워크입니다. Tor 노드는 사용자들이 인터넷에서 익명성을 유지할 수 있도록 하는 중계 네트워크로, 인터넷 사용자의 트래픽을 암호화하고, 여러 개의 중계 노드를 거쳐 최종 목적지에 도달하는 방식으로 작동합니다.

중계 노드(Relay Node): 중계 노드는 Tor 네트워크의 일부로, 사용자들의 데이터를 암호화하고 여러 노드를 거쳐 최종 목적지로 전송하는 역할을 합니다. 중계 노드는 데이터를 받아서 암호화하고 다음 중계 노드에 전달하는 역할을 수행합니다.

출구 노드(Exit Node): 출구 노드는 Tor 네트워크의 일부로, 중계 노드를 거쳐 최종 목적지로 도달한 데이터를 받아서 복호화하고 인터넷 상의 목적지 서버와 연결하는 역할을 수행합니다. 이 과정에서 사용자의 IP 주소는 출구 노드의 IP 주소로 변환되므로, 사용자의 실제 위치나 정보를 알아내는 것이 어려워집니다.

Tor 노드는 사용자들이 익명성을 유지하고, 개인정보를 보호할 수 있는 중요한 역할을 합니다. 그러나, 악용될 경우 불법적인 행위에 이용될 수 있기 때문에, Tor 프로젝트는 관리자가 유저의 트래픽을 모니터링하는 등의 방법으로 악용을 방지하고 있습니다.


Relay

Relay는 Tor 네트워크에서 데이터를 전달하는 중간 노드입니다. Tor 네트워크는 사용자의 트래픽을 암호화하여 중간 노드(relay)를 거쳐 목적지까지 전달하는 프록시 서비스입니다. Relay는 이러한 중간 노드(relay)들 중에서 사용자의 트래픽을 받아들이고 다른 relay나 exit node로 전달합니다.

Relay는 데이터를 전달하는 데에 있어서 암호화와 복호화를 수행하는 역할을 수행합니다. 사용자의 트래픽은 Relay에서 받아들여서 암호화되며, Relay는 이를 다른 relay나 exit node로 전달할 때도 암호화된 상태로 전달합니다. 이를 통해 사용자의 위치와 행동을 추적하는 것을 어렵게 만듭니다.

Relay는 Tor 네트워크의 안정성과 익명성을 유지하는 데 매우 중요한 역할을 합니다. 네트워크에서 Relay의 수가 적으면 Tor 네트워크가 매우 취약해질 수 있기 때문에, Relay 운영자들은 Tor 네트워크의 안정성을 유지하기 위해 핵심적인 역할을 합니다.

Relay를 운영하는 것은 누구나 가능하며, 자신의 컴퓨터나 서버를 Relay로 운영하여 Tor 네트워크에 기여할 수 있습니다.

Exit node

Exit node는 Tor 네트워크에서 사용되는 중요한 개념 중 하나입니다. Tor은 사용자의 트래픽을 암호화하여 여러 중간 노드(relay)를 거쳐 목적지까지 전달하는 프록시 서비스입니다. 이러한 중간 노드(relay)는 사용자의 트래픽을 암호화하여 전달하며, 이를 통해 사용자의 위치와 행동을 추적하는 것을 어렵게 만듭니다.

Exit node는 중간 노드(relay)들 중에서 마지막 노드입니다. 사용자의 트래픽이 Exit node를 통과하면, 마지막 노드에서 Tor 네트워크를 떠나 원래의 목적지로 전달됩니다. 따라서, Exit node는 사용자가 보내는 데이터가 외부 네트워크로 노출될 수 있는 마지막 지점입니다.

Exit node는 Tor 네트워크를 사용하여 웹사이트에 익명으로 액세스하거나, 인터넷 접근 제한을 우회하여 정보를 접근하는 것 등에 사용됩니다. 그러나, 악의적인 사용자가 Exit node를 이용하여 공격적인 활동을 할 수도 있기 때문에, Exit node 운영자는 신중하게 선택해야 합니다. 또한, 사용자들은 Exit node를 통해 전송되는 데이터가 외부로 노출될 수 있기 때문에 민감한 정보를 전송하는 것은 지양해야 합니다.

 

Relay와 Exit node의 차이점

Tor 네트워크에서 Relay와 Exit node는 서로 다른 역할을 수행하는 노드입니다.

Relay는 Tor 네트워크에서 데이터를 암호화하여 전달하는 중간 노드입니다. 사용자의 요청을 받아들이고, 이를 다른 Relay나 Exit node로 전달합니다. Relay는 전달하는 데이터를 암호화하여 보호하며, 데이터가 여러 노드를 거쳐 전달되기 때문에 사용자의 위치와 행동을 추적하는 것을 어렵게 만듭니다.

Exit node는 Relay와는 다르게, 사용자의 요청을 받아들인 후 Tor 네트워크를 떠나서 해당 요청을 실제 인터넷상의 목적지로 전달합니다. 이때, Exit node는 사용자가 요청한 데이터를 복호화하여 원래의 목적지로 전달하며, 이때 데이터가 외부로 노출될 가능성이 있습니다.

따라서, Relay는 Tor 네트워크에서 데이터를 암호화하고 전달하는 중간 노드이며, Exit node는 마지막 노드로서 Tor 네트워크를 떠나 데이터를 복호화하여 목적지로 전달하는 역할을 합니다.

 


Exit node만 가져오는 코드

import requests
import json

# Onionoo API의 exit 노드 상세 정보 페이지 URL
url = "https://onionoo.torproject.org/details?search=flag:exit"

# GET 요청을 보내서 JSON 데이터 가져오기
response = requests.get(url)
exit_node_data = json.loads(response.text)

exit_node_addresses = []
for data in exit_node_data['relays']:
    if 'exit_addresses' in data:
        # print(data['exit_addresses'])
        exit_node_addresses.append(data['exit_addresses'][0])

print("현재 활성화된 exit 노드의 IP 개수는 {}입니다.".format(len(exit_node_addresses)))
print("현재 활성화된 exit 노드의 IP 주소입니다. \n{}".format(exit_node_addresses))

결과 값은 대충 아래와 같이 나옵니다.

tor exit node

 

반응형

댓글