Deploy: Fri May 15 14:02:26 UTC 2026
This commit is contained in:
commit
884ab01739
900 changed files with 23978 additions and 0 deletions
214
docs/school/api-rodrigoribeiro/index.html
Normal file
214
docs/school/api-rodrigoribeiro/index.html
Normal file
|
|
@ -0,0 +1,214 @@
|
|||
<!--
|
||||
_ _ _
|
||||
| |_ ___ _ __ | | ___ _ _ __ ___ __ _ __ ____ _ ___ | |__ ___ _ __ ___
|
||||
| __/ _ \ '_ \| |/ / | | | '_ ` _ \ / _` | \ \ /\ / / _` / __| | '_ \ / _ \ '__/ _ \
|
||||
| || __/ | | | <| |_| | | | | | | (_| | \ V V / (_| \__ \ | | | | __/ | | __/
|
||||
\__\___|_| |_|_|\_\\__,_|_| |_| |_|\__,_| \_/\_/ \__,_|___/ |_| |_|\___|_| \___|
|
||||
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="pt">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Adrian Victor - Demonstração da API do Prof. Rodrigo Ribeiro</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="/pages/tenkuma/web/static/main.css?fixcache=1">
|
||||
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/ccd.js"></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/music.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/88x31.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/tips.js" defer></script>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/pages/tenkuma/web/static/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/pages/tenkuma/web/static/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/pages/tenkuma/web/static/favicon-16x16.png">
|
||||
<link rel="manifest" href="/pages/tenkuma/web/static/site.webmanifest">
|
||||
|
||||
<script src="https://keepandroidopen.org/banner.js" defer></script>
|
||||
|
||||
<meta property="og:title" content="Adrian Victor - Demonstração da API do Prof. Rodrigo Ribeiro">
|
||||
<meta property="og:description" content="Website/blog pessoal de Adrian Victor.">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/school/api-rodrigoribeiro/">
|
||||
<meta property="og:image" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/static/images/bear.jpg">
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const rootPrefix = "/pages/tenkuma/web/";
|
||||
</script>
|
||||
<style>
|
||||
.bg {
|
||||
opacity: .4!important;
|
||||
}
|
||||
</style>
|
||||
<noscript>
|
||||
<style>
|
||||
.i88x31:hover {
|
||||
transform: scale(2);
|
||||
}
|
||||
</style>
|
||||
</noscript>
|
||||
<div id="everythingHelper">
|
||||
<img src="/pages/tenkuma/web/static/images/bear.jpg" class="bg">
|
||||
<header>
|
||||
<div>
|
||||
<h1>Adrian Victor:Trabalhos</h1>
|
||||
<a id="headerSubtitle"><i>Fanasy is not a crime, find your castle in the sky.</i></a>
|
||||
<script>
|
||||
const headeri18n =
|
||||
{
|
||||
by: "por",
|
||||
options: "Opções",
|
||||
hideBackground: "Esconder imagem de fundo",
|
||||
back: "voltar",
|
||||
permissionIssue: "Problema de permissão",
|
||||
permissionIssueNotificationContent: "Não foi possivel continuar tocando a música de fundo, por favor habilite <b>reprodução automática</b> de áudio para esse website.",
|
||||
notificationDefaultHint: "<b>Clique para ignorar</b>",
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div id="linksHelper">
|
||||
<div id="music"></div>
|
||||
|
||||
<ul id="headerLinks">
|
||||
<a href="/pages/tenkuma/web/pt/">início</a>
|
||||
<a href="/pages/tenkuma/web/pt/blog/">blog</a>
|
||||
<a href="/pages/tenkuma/web/pt/misc/">misc</a>
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
<div id="mainHelper">
|
||||
<style>
|
||||
#mainAPI, #login {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#mainAPI.selected, #login.selected {
|
||||
display: flex;
|
||||
}
|
||||
</style>
|
||||
<div style="display: flex; gap: 1em; flex-direction: column;">
|
||||
<h1>Demonstração da API do Prof. Rodrigo Ribeiro</h1>
|
||||
<p>A API do Prof. Rodrigo Ribeiro permite que o <i>client</i> envie uma imagem, assim retornando o resultado de uma leitura óptica realizada sobre a mesma com inteligência artificial. Esse client lê o resultado e o mostra de forma simples para o usuário.</p>
|
||||
<p><a href="https://api.rodrigoribeiro.net/doc">Mais informações sobre a API podem ser encontradas no seu website.</a></p>
|
||||
<div id="token">Token: Ausente</div>
|
||||
<div id="login" class="selected" style="flex-direction: column; gap: .6em;">
|
||||
<input type="text" id="username" placeholder="E-mail">
|
||||
<input type="password" id="password" placeholder="Senha">
|
||||
<div>
|
||||
<button id="submit">Logar</button>
|
||||
<button id="submitb">Criar Usuário</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="mainAPI" style="flex-direction: column; gap: 1em;">
|
||||
<div style="display: flex; flex-direction: column; gap: .6em;">
|
||||
<input type="file" id="file">
|
||||
<div>
|
||||
<button id="submitImage">Enviar imagem.</button>
|
||||
<button id="logout">Deletar token</button>
|
||||
</div>
|
||||
</div>
|
||||
<div id="imageResults">
|
||||
<p>Resultados da leitura óptica:</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
const usernameInput = document.getElementById('username');
|
||||
const passwordInput = document.getElementById('password');
|
||||
const tokenLabel = document.getElementById('token');
|
||||
const submitButton = document.getElementById('submit');
|
||||
const cuButton = document.getElementById('submitb');
|
||||
const fileEl = document.getElementById('file');
|
||||
const submitImageButton = document.getElementById('submitImage');
|
||||
const imageResults = document.getElementById("imageResults");
|
||||
const loginDiv = document.getElementById("login");
|
||||
const apiDiv = document.getElementById("mainAPI");
|
||||
const logoutButton = document.getElementById("logout");
|
||||
|
||||
let token = '';
|
||||
|
||||
async function api(endpoint, data) {
|
||||
const info = {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': `Bearer ${token}`
|
||||
},
|
||||
body: JSON.stringify(data),
|
||||
}
|
||||
let res = await fetch(`https://api.rodrigoribeiro.net/${endpoint}`, info);
|
||||
res = await res.json()
|
||||
console.log(res)
|
||||
return res;
|
||||
}
|
||||
|
||||
function login(username, password, createAccount = false) {
|
||||
return api(createAccount ? "registrar" : "login", { email: username, senha: password });
|
||||
}
|
||||
|
||||
submitButton.addEventListener('click', async () => {
|
||||
if (!usernameInput.value && !passwordInput.value) {
|
||||
alert("Preencha os campos necessários.")
|
||||
return;
|
||||
}
|
||||
res = await login(usernameInput.value, passwordInput.value);
|
||||
const is_logged = (res.status_code == 200);
|
||||
if (is_logged) {
|
||||
token = res.response.token;
|
||||
toggleDivsVisibility();
|
||||
}
|
||||
tokenLabel.innerHTML = `Token: ${is_logged ? 'Presente' : 'Ausente (erro de autenticação)'}`;
|
||||
})
|
||||
|
||||
cuButton.addEventListener('click', async () => {
|
||||
if (!usernameInput.value && !passwordInput.value) {
|
||||
alert("Preencha os campos necessários.")
|
||||
return;
|
||||
}
|
||||
res = await login(usernameInput.value, passwordInput.value, true);
|
||||
const is_logged = (res.status_code == 201);
|
||||
tokenLabel.innerHTML = `Token: ${is_logged ? 'Ausente (conta criada e pronta para logar)' : 'Ausente (erro ao criar usuário)'}`;
|
||||
})
|
||||
|
||||
submitImageButton.addEventListener('click', async () => {
|
||||
const file = fileEl.files[0];
|
||||
if (!file) return;
|
||||
|
||||
const fr = new FileReader();
|
||||
fr.onload = async () => {
|
||||
const dataUrl = fr.result;
|
||||
const base64 = dataUrl.split(',')[1];
|
||||
const res = await api('detectar', {
|
||||
"image": base64,
|
||||
"preview": true
|
||||
})
|
||||
|
||||
imageResults.innerHTML = "";
|
||||
|
||||
res.response.objects.forEach(object => {
|
||||
let resultsEntry = document.createElement("p");
|
||||
resultsEntry.innerHTML = `<i>${object.class}</i> detectado com confiança de ${object.score * 100}%`
|
||||
imageResults.appendChild(resultsEntry);
|
||||
});
|
||||
};
|
||||
fr.readAsDataURL(file);
|
||||
});
|
||||
|
||||
logout.addEventListener('click', () => {
|
||||
token = "";
|
||||
toggleDivsVisibility();
|
||||
tokenLabel.innerText = "Token: Ausente"
|
||||
})
|
||||
|
||||
function toggleDivsVisibility() {
|
||||
apiDiv.classList.toggle('selected');
|
||||
loginDiv.classList.toggle('selected');
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
179
docs/school/guia-ifc-novatos/index.html
Normal file
179
docs/school/guia-ifc-novatos/index.html
Normal file
|
|
@ -0,0 +1,179 @@
|
|||
<!--
|
||||
_ _ _
|
||||
| |_ ___ _ __ | | ___ _ _ __ ___ __ _ __ ____ _ ___ | |__ ___ _ __ ___
|
||||
| __/ _ \ '_ \| |/ / | | | '_ ` _ \ / _` | \ \ /\ / / _` / __| | '_ \ / _ \ '__/ _ \
|
||||
| || __/ | | | <| |_| | | | | | | (_| | \ V V / (_| \__ \ | | | | __/ | | __/
|
||||
\__\___|_| |_|_|\_\\__,_|_| |_| |_|\__,_| \_/\_/ \__,_|___/ |_| |_|\___|_| \___|
|
||||
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="pt">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Adrian Victor - Guia para novatos no IFC.</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="/pages/tenkuma/web/static/main.css?fixcache=1">
|
||||
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/ccd.js"></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/music.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/88x31.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/tips.js" defer></script>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/pages/tenkuma/web/static/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/pages/tenkuma/web/static/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/pages/tenkuma/web/static/favicon-16x16.png">
|
||||
<link rel="manifest" href="/pages/tenkuma/web/static/site.webmanifest">
|
||||
|
||||
<script src="https://keepandroidopen.org/banner.js" defer></script>
|
||||
|
||||
<meta property="og:title" content="Adrian Victor - Guia para novatos no IFC.">
|
||||
<meta property="og:description" content="Website/blog pessoal de Adrian Victor.">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/school/guia-ifc-novatos/">
|
||||
<meta property="og:image" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/static/images/ifc.jpg">
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const rootPrefix = "/pages/tenkuma/web/";
|
||||
</script>
|
||||
<style>
|
||||
.bg {
|
||||
opacity: 0.35!important;
|
||||
}
|
||||
</style>
|
||||
<noscript>
|
||||
<style>
|
||||
.i88x31:hover {
|
||||
transform: scale(2);
|
||||
}
|
||||
</style>
|
||||
</noscript>
|
||||
<div id="everythingHelper">
|
||||
<img src="/pages/tenkuma/web/static/images/ifc.jpg" class="bg">
|
||||
<header>
|
||||
<div>
|
||||
<h1>Adrian Victor:Escola</h1>
|
||||
<a id="headerSubtitle"><i>Fanasy is not a crime, find your castle in the sky.</i></a>
|
||||
<script>
|
||||
const headeri18n =
|
||||
{
|
||||
by: "por",
|
||||
options: "Opções",
|
||||
hideBackground: "Esconder imagem de fundo",
|
||||
back: "voltar",
|
||||
permissionIssue: "Problema de permissão",
|
||||
permissionIssueNotificationContent: "Não foi possivel continuar tocando a música de fundo, por favor habilite <b>reprodução automática</b> de áudio para esse website.",
|
||||
notificationDefaultHint: "<b>Clique para ignorar</b>",
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div id="linksHelper">
|
||||
<div id="music"></div>
|
||||
|
||||
<ul id="headerLinks">
|
||||
<a href="/pages/tenkuma/web/pt/">início</a>
|
||||
<a href="/pages/tenkuma/web/pt/blog/">blog</a>
|
||||
<a href="/pages/tenkuma/web/pt/misc/">misc</a>
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
<div id="mainHelper">
|
||||
|
||||
|
||||
|
||||
<main>
|
||||
<article>
|
||||
<div id="postHeader">
|
||||
<h1>Guia para novatos no IFC.</h1>
|
||||
<p>Adrian Victor - <b>1/12/2026</b> (editado por último em )</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<style>
|
||||
.screenshotBox img {
|
||||
margin: auto;
|
||||
max-width: 80%;
|
||||
box-shadow:
|
||||
2px 7px 5px rgba(0,0,0,0.4),
|
||||
0px -4px 10px rgba(0,0,0,0.4);
|
||||
border: medium solid white
|
||||
}
|
||||
|
||||
.screenshotBox {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 1em;
|
||||
margin: 2em 0;
|
||||
}
|
||||
|
||||
.screenshotBox p {
|
||||
text-align: center;
|
||||
}
|
||||
</style>
|
||||
<p>Antes de tudo, quero dar boas vindas a qualquer novato que esteja lendo esse documento, o IF é uma grande oportunidade que felizmente você não deixou passar! Não vou me extender muito nesse tópico pois tenho certeza que vocês vão ouvir depoimentos de ex-alunos bem-sucedidos ao longo do período letivo.</p>
|
||||
<p>Estou organizando esse documento para evitar que os veteranos tenham que explicar tudo para cada novato que apresentar a mesma dúvida, centralizando o conteúdo para facilitar quando você dá aquela esquecida sobre como algo funciona. Ao mesmo tempo, não quero que ele substitua o contato que você poderia ter com um veterano, não deixe de conversar e fazer novas amizades!</p>
|
||||
<p>Para correções ou dúvidas que não sanei aqui, você pode me mandar um e-mail (adrianvictor@disroot.org) ou me contactar por qualquer outro lugar que você conseguir, vou corrigir/adicionar o mais rápido possível. Caso algum veterano se interesse em escrever algo para complementar essa postagem, fico feliz em adicionar seu texto ou link aqui.</p>
|
||||
|
||||
<h2>O SIGAA</h2>
|
||||
<p>SIGAA (Sistema Integrado Para Ferrar com os Alunos) vai ser o lugar onde você vê as suas notas, frequências, aplica para auxílios e entrega trabalhos – caso você encontre um professor que ainda tem sanidade pra usar essa coisa além do que se faz obrigatório.</p>
|
||||
<p>Ofensas à parte, vamos dar uma olhada nas partes importantes do sistema.</p>
|
||||
<h3>Login e cadastro</h3>
|
||||
<div class="screenshotBox">
|
||||
<img class="screenshotImg" src="/static/images/sigaa-login.png" alt="">
|
||||
<p>1 - Tela de login do SIGAA.</p>
|
||||
</div>
|
||||
<p>Após acessar o site do SIGAA, você deve ver a tela de login mostrada na imagem. Antes de tudo, verifique se você está no SIGAA dos alunos.<sup>(1.1)</sup></p>
|
||||
<p>Caso você tenha um login, o acesso é bem simples, apenas preencha os campos de usuário e senha<sup>(1.2)</sup> e confirme. O login expira em 1 minuto de inatividade.</p>
|
||||
|
||||
<p>No caso de você não possuir um cadastro, use o link abaixo da tela de login<sup>(1.3)</sup> para abrir o formulário de cadastro.</p>
|
||||
|
||||
<h3>Tela Principal</h3>
|
||||
<div class="screenshotBox">
|
||||
<img src="/static/images/sigaa-inicio.png" alt="">
|
||||
<p>2 - Tela inicial do SIGAA</p>
|
||||
</div>
|
||||
|
||||
<p>A tela principal do SIGAA é uma bagunça, mas você não vai usar nem metade do que tem nela, por isso vamos dar uma olhada somente nas funcionalidades principais dela.</p>
|
||||
|
||||
<p>No cabeçalho<sup>(2.1)</sup> você tem acesso a coisas como boletim, atestado de frequência, etc... Também é o lugar que você gerencia seus auxílios.</p>
|
||||
|
||||
<p>É possível gerenciar seu perfil público e dados na barra lateral<sup>(2.2)</sup>, assim como acessar alguns links úteis (como o da biblioteca digital). O seu perfil fica visível em postagens e respostas enviadas no forum do SIGAA.<sup>(2.6)</sup> Por algum motivo, minha foto de perfil some toda hora, já não me dou mais o trabalho de colocar de volta.</p>
|
||||
|
||||
<p>Não cadastre um e-mail que você usa com frequência no SIGAA, pois ele vai entupir sua caixa de entrada com SPAM. E os e-mails que seriam úteis chegam tão tarde que perdem a utilidade (já recebemos e-mail sobre cancelamento de aulas com um mês de atraso). Se você quiser manter seu e-mail pessoal no SIGAA, já que eles realmente mandam alguma coisa importante uma vez ou outra por ano, configure um filtro para o endereço do IF (ifc.edu.br) que joga todos os e-mails do SIGAA para uma caixa diferente no seu e-mail.</p>
|
||||
|
||||
<p>Continuando, chegamos na lista de matérias do seu ano letivo<sup>(2.5)</sup>, você vai usar ela para acessar a <a href="#página-da-matéria">página da matéria.</a></p>
|
||||
|
||||
<p>E por fim, temos o forum<sup>(2.6)</sup>, que eu incluí por dó, pois ninguém nunca usa ele. Em teoria ele serve para alunos tirarem suas dúvidas e/ou buscarem ajuda sobre algum tópico relevante do curso, mas acabou que ele virou uma bagunça empoierada que quase não tem atividade nenhuma.</p>
|
||||
|
||||
<h3>Página da Matéria</h3>
|
||||
<div class="screenshotBox">
|
||||
<img src="/static/images/sigaa-materia.png" alt="">
|
||||
<p>3 - Página da matéria no SIGAA</p>
|
||||
</div>
|
||||
|
||||
<p>Essa é, provavelmente, a página que você mais vai usar do SIGAA, ela mostra todas as atividades do ano na lista principal<sup>(3.2)</sup>. Essa lista vai ficando mais bagunçada ao decorrer do ano, ela mostra as atividades das mais antigas para as mais novas, portanto quando o ano passar e o(a) professor(a) adicionar muitas atividades, você vai ter que rolar até o final para achar a mais recente. Se o seu professor adicionar atividades futuras na lista, você também terá que procurar a desse dia.</p>
|
||||
|
||||
<p>O Menu da Turma Virtual<sup>(3.1)</sup> também é importantíssimo, e dessa vez não tenho muito o que dizer, ele funciona como um menu. Os itens que você mais vai usar são <i>Alunos > Frequência</i> para ver sua frequência nessa matéria e <i>Alunos > Ver notas</i>, que mostra suas notas individuais dessa matéria, até mesmo as que não aparecem no boletim ainda.</p>
|
||||
|
||||
<p>Na barra lateral da direita<sup>(3.3)</sup> você encontra o andamento das aulas, que é a quantidade de aulas ministradas em relação ao total. O número de aulas ministradas pode exceder o número de aulas totais, porém as excedentes não vão afetar a sua média de faltas. Também tem algumas outras caixas de notícias, enquetes, atividades, avaliações e forum, mas nenhuma é usada com frequência.</p>
|
||||
|
||||
<p>Vale ressaltar que no celular é difícil rolar a página quando você dá zoom, para resolver isso você precisa rolar (arrastar) no Menu da Turma Virtual, porque na lista principal vai rolar apenas a lista de atividades.</p>
|
||||
|
||||
<h2>Frequência</h2>
|
||||
<p>As frequências são contabilizadas pela chamada que os professores fazem no começo da aula. Eventos como a FICE e OLINCAC também contam presença e geralmente um professor fica encarregado de fazer a chamada da manhã, enquanto outro fica na tarde (é bem fácil pegar a chamada da manhã/tarde e ir embora).</p>
|
||||
<p>O aluno não pode exceder em faltas 25% do total de aulas e o limite por matéria do SIGAA não conta no boletim, portanto se você exceder ele sem ultrapassar o limite total, você ainda passa. As matérias optativas são uma excessão, com essas você precisa tomar cuidado para não atingir o limite de faltas.</p>
|
||||
<p>Por mais que o limite esteja entorno de 300 faltas, não recomendo que se acostume a faltar, pois temos 9 aulas por dia, ou seja, 9 faltas. Até as faltas em aulas específicas somam rápido.</p>
|
||||
|
||||
<h2>Referências</h2>
|
||||
<ul>
|
||||
<li><a href="https://desciclopedia.ws/wiki/Cambori%C3%BA#Instituto_CannabialFederal_Catarinense">https://desciclopedia.ws/wiki/Cambori%C3%BA#Instituto_CannabialFederal_Catarinense</a></li>
|
||||
</ul>
|
||||
</article>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
153
docs/school/telnet-en/index.html
Normal file
153
docs/school/telnet-en/index.html
Normal file
|
|
@ -0,0 +1,153 @@
|
|||
<!--
|
||||
_ _ _
|
||||
| |_ ___ _ __ | | ___ _ _ __ ___ __ _ __ ____ _ ___ | |__ ___ _ __ ___
|
||||
| __/ _ \ '_ \| |/ / | | | '_ ` _ \ / _` | \ \ /\ / / _` / __| | '_ \ / _ \ '__/ _ \
|
||||
| || __/ | | | <| |_| | | | | | | (_| | \ V V / (_| \__ \ | | | | __/ | | __/
|
||||
\__\___|_| |_|_|\_\\__,_|_| |_| |_|\__,_| \_/\_/ \__,_|___/ |_| |_|\___|_| \___|
|
||||
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Adrian Victor - Telnet</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="/pages/tenkuma/web/static/main.css?fixcache=1">
|
||||
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/ccd.js"></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/music.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/88x31.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/tips.js" defer></script>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/pages/tenkuma/web/static/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/pages/tenkuma/web/static/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/pages/tenkuma/web/static/favicon-16x16.png">
|
||||
<link rel="manifest" href="/pages/tenkuma/web/static/site.webmanifest">
|
||||
|
||||
<script src="https://keepandroidopen.org/banner.js" defer></script>
|
||||
|
||||
<meta property="og:title" content="Adrian Victor - Telnet">
|
||||
<meta property="og:description" content="Personal website/blog of Adrian Victor.">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/school/telnet-en/">
|
||||
<meta property="og:image" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/static/images/redes.jpg">
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const rootPrefix = "/pages/tenkuma/web/";
|
||||
</script>
|
||||
<style>
|
||||
.bg {
|
||||
opacity: .4!important;
|
||||
}
|
||||
</style>
|
||||
<noscript>
|
||||
<style>
|
||||
.i88x31:hover {
|
||||
transform: scale(2);
|
||||
}
|
||||
</style>
|
||||
</noscript>
|
||||
<div id="everythingHelper">
|
||||
<img src="/pages/tenkuma/web/static/images/redes.jpg" class="bg">
|
||||
<header>
|
||||
<div>
|
||||
<h1>Adrian Victor:Trabalhos</h1>
|
||||
<a id="headerSubtitle"><i>Fanasy is not a crime, find your castle in the sky.</i></a>
|
||||
<script>
|
||||
const headeri18n =
|
||||
{
|
||||
by: "by",
|
||||
options: "Options",
|
||||
hideBackground: "Hide background",
|
||||
back: "back",
|
||||
permissionIssue: "Permission issue",
|
||||
permissionIssueNotificationContent: "Unable to continue playing background music, please enable audio <b>autoplay</b> for this website.",
|
||||
notificationDefaultHint: "<b>Click to dismiss</b>",
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div id="linksHelper">
|
||||
<div id="music"></div>
|
||||
|
||||
<ul id="headerLinks">
|
||||
<a href="/pages/tenkuma/web/en/">home</a>
|
||||
<a href="/pages/tenkuma/web/en/blog/">blog</a>
|
||||
<a href="/pages/tenkuma/web/en/misc/">misc</a>
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
<div id="mainHelper">
|
||||
|
||||
|
||||
|
||||
<main>
|
||||
<article>
|
||||
<div id="postHeader">
|
||||
<h1>Telnet</h1>
|
||||
<p>Adrian Victor & Arthur Borges - <b>8/26/2025</b> (last edited in )</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script src="/static/scripts/telnetSimulator.js" defer></script>
|
||||
<h2>What the protocol is, its function and history</h2>
|
||||
<p>Telnet (from <b>TEL</b>ecommunication <b>NET</b>work) is a TCP/IP stack network protocol that allows remote text-mode communication between computers. Its main function is to provide an interactive session where a user can access and control another device as if they were on a local terminal.</p>
|
||||
<p>Created in 1969, Telnet was one of the first protocols developed for ARPANET (the network that gave rise to the Internet) and became fundamental for system and device administration in the 1970s, 1980s, and 1990s. Over time, it fell out of use due to lack of security, being replaced by more modern alternatives such as SSH (Secure Shell).</p>
|
||||
<h2>Implementation</h2>
|
||||
<p><b>Default port:</b> 23/TCP.<br>
|
||||
Works at the application layer of the OSI model.<br>
|
||||
<b>Format:</b> Based on ASCII character exchange, without encryption.<br>
|
||||
<b>RFC:</b> Defined by RFC 854 (1983).<br>
|
||||
<b>Architecture:</b> Follows the client-server model</p>
|
||||
<h2>How it works</h2>
|
||||
<p>In practice, Telnet works relatively simply. The process starts when the client establishes a TCP connection to the server via port 23. Then a remote terminal session is initiated and the user must provide credentials such as username and password. After authentication, commands typed on the client are transmitted in plain text to the server, which processes them and returns the corresponding output. The session remains active as long as the user wants, normally ending with commands like <i>exit</i> or <i>logout</i></p>
|
||||
<h2>Use cases</h2>
|
||||
<p>For many years, Telnet was widely used for remote access to Unix, Linux, and Windows servers, especially older versions of these systems. It also became common in network device administration, such as routers and switches, until SSH became the standard. Additionally, mainframes and some legacy devices still use Telnet today. Another practical application is in educational environments and network diagnostics, where it is used to test open ports and check service connectivity, such as running “telnet server.com 80” to see if a web server port is operational.</p>
|
||||
<h2>Encryption: the inherent problem</h2>
|
||||
<p>Telnet has no native encryption, which makes it extremely vulnerable. To solve this problem, more secure alternatives were developed. The main one is SSH (Secure Shell), created in the 1990s as a direct Telnet replacement. SSH offers the same functionality while ensuring data protection through strong authentication and full traffic encryption. Another, less common approach is using SSL/TLS to tunnel Telnet sessions, but in practice this is rarely used.</p>
|
||||
<h2>Advantages and disadvantages</h2>
|
||||
<p>Telnet’s advantages include simplicity, low resource usage, and compatibility with various older systems, which facilitated its adoption over the years. However, these benefits are outweighed by its disadvantages. The main one is the lack of encryption, exposing all transmitted data—including passwords—in plain text. This makes it vulnerable to attacks such as sniffing, which captures network packets, and hijacking, which takes over active sessions. For this reason, Telnet is considered obsolete and unsafe for use on open networks like the Internet.</p>
|
||||
<h2>Relation to other protocols</h2>
|
||||
<p>Telnet is part of the TCP/IP protocol family and uses TCP to ensure reliable communication. Like other protocols in this stack, such as HTTP, FTP, and SMTP, it relies on stable connections to perform its functions, but its distinguishing feature has always been terminal-mode interactivity. Due to security flaws, it was replaced by its natural successor, SSH, which retained Telnet’s conceptual base but added robust protection layers.</p>
|
||||
<h2>Functional example</h2>
|
||||
<p>Below is a Telnet connection simulator written in JavaScript.</p>
|
||||
<div id="telnetSimulationLoadingHolder">
|
||||
<p id="telnetSimulationLoadingText">Loading...</p>
|
||||
<div class="ellipsis-loader" aria-role="alert" aria-label="Loading. Please wait">
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="telnetSimulation">
|
||||
<div id="telnetSimulationServer">
|
||||
<h3>Server</h3>
|
||||
<textarea name="" id="telnetSimulationServerScreen" readonly>Welcome to Zubuntu 30.1!
|
||||
Running startup script: start_telnet_server.sh
|
||||
Telnet Server started on localhost:23
|
||||
Ready to receive commands.
|
||||
----
|
||||
</textarea>
|
||||
<button id="telnetSimulationServerClean">Clear</button>
|
||||
</div>
|
||||
<div id="telnetSimulationClient">
|
||||
<h3>Client</h3>
|
||||
<textarea name="" id="telnetSimulationClientScreen" readonly>Send help to see the list of commands supported by the server!
|
||||
----
|
||||
</textarea>
|
||||
<div id="telnetSimulationInput">
|
||||
<input type="text" id="telnetSimulationInputBox">
|
||||
<button id="telnetSimulationClientSend">Send</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
195
docs/school/telnet-pt/index.html
Normal file
195
docs/school/telnet-pt/index.html
Normal file
|
|
@ -0,0 +1,195 @@
|
|||
<!--
|
||||
_ _ _
|
||||
| |_ ___ _ __ | | ___ _ _ __ ___ __ _ __ ____ _ ___ | |__ ___ _ __ ___
|
||||
| __/ _ \ '_ \| |/ / | | | '_ ` _ \ / _` | \ \ /\ / / _` / __| | '_ \ / _ \ '__/ _ \
|
||||
| || __/ | | | <| |_| | | | | | | (_| | \ V V / (_| \__ \ | | | | __/ | | __/
|
||||
\__\___|_| |_|_|\_\\__,_|_| |_| |_|\__,_| \_/\_/ \__,_|___/ |_| |_|\___|_| \___|
|
||||
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html lang="pt">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Adrian Victor - Telnet</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<link rel="stylesheet" href="/pages/tenkuma/web/static/main.css?fixcache=1">
|
||||
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/ccd.js"></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/music.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/88x31.js" defer></script>
|
||||
<script type="module" src="/pages/tenkuma/web/static/scripts/tips.js" defer></script>
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="/pages/tenkuma/web/static/apple-touch-icon.png">
|
||||
<link rel="icon" type="image/png" sizes="32x32" href="/pages/tenkuma/web/static/favicon-32x32.png">
|
||||
<link rel="icon" type="image/png" sizes="16x16" href="/pages/tenkuma/web/static/favicon-16x16.png">
|
||||
<link rel="manifest" href="/pages/tenkuma/web/static/site.webmanifest">
|
||||
|
||||
<script src="https://keepandroidopen.org/banner.js" defer></script>
|
||||
|
||||
<meta property="og:title" content="Adrian Victor - Telnet">
|
||||
<meta property="og:description" content="Website/blog pessoal de Adrian Victor.">
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="og:url" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/school/telnet-pt/">
|
||||
<meta property="og:image" content="https://adrianvic.github.io/tenkuma/web/pages/tenkuma/web/static/images/redes.jpg">
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
const rootPrefix = "/pages/tenkuma/web/";
|
||||
</script>
|
||||
<style>
|
||||
.bg {
|
||||
opacity: .4!important;
|
||||
}
|
||||
</style>
|
||||
<noscript>
|
||||
<style>
|
||||
.i88x31:hover {
|
||||
transform: scale(2);
|
||||
}
|
||||
</style>
|
||||
</noscript>
|
||||
<div id="everythingHelper">
|
||||
<img src="/pages/tenkuma/web/static/images/redes.jpg" class="bg">
|
||||
<header>
|
||||
<div>
|
||||
<h1>Adrian Victor:Trabalhos</h1>
|
||||
<a id="headerSubtitle"><i>Fanasy is not a crime, find your castle in the sky.</i></a>
|
||||
<script>
|
||||
const headeri18n =
|
||||
{
|
||||
by: "por",
|
||||
options: "Opções",
|
||||
hideBackground: "Esconder imagem de fundo",
|
||||
back: "voltar",
|
||||
permissionIssue: "Problema de permissão",
|
||||
permissionIssueNotificationContent: "Não foi possivel continuar tocando a música de fundo, por favor habilite <b>reprodução automática</b> de áudio para esse website.",
|
||||
notificationDefaultHint: "<b>Clique para ignorar</b>",
|
||||
}
|
||||
</script>
|
||||
</div>
|
||||
<div id="linksHelper">
|
||||
<div id="music"></div>
|
||||
|
||||
<ul id="headerLinks">
|
||||
<a href="/pages/tenkuma/web/pt/">início</a>
|
||||
<a href="/pages/tenkuma/web/pt/blog/">blog</a>
|
||||
<a href="/pages/tenkuma/web/pt/misc/">misc</a>
|
||||
</ul>
|
||||
</div>
|
||||
</header>
|
||||
<div id="mainHelper">
|
||||
|
||||
|
||||
|
||||
<main>
|
||||
<article>
|
||||
<div id="postHeader">
|
||||
<h1>Telnet</h1>
|
||||
<p>Adrian Victor & Arthur Borges - <b>8/26/2025</b> (editado por último em )</p>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<script src="/static/scripts/telnetSimulator.js" defer></script>
|
||||
<h2>O que é o protocolo, sua função e histórico</h2>
|
||||
<p>O Telnet (do inglês <b>TEL</b>ecommunication <b>NET</b>work) é um protocolo de rede da pilha
|
||||
TCP/IP que permite a comunicação remota entre computadores em modo texto. Sua
|
||||
função principal é proporcionar uma sessão interativa, em que um usuário pode
|
||||
acessar e controlar outro dispositivo como se estivesse em um terminal local.</p>
|
||||
<p>Criado em 1969, o Telnet foi um dos primeiros protocolos desenvolvidos para a
|
||||
ARPANET (a rede que deu origem à Internet) e tornou-se fundamental para a
|
||||
administração de sistemas e dispositivos nas décadas de 1970, 1980 e 1990. Com o
|
||||
tempo, caiu em desuso devido à falta de segurança, sendo substituído por
|
||||
alternativas mais modernas, como o SSH (Secure Shell).</p>
|
||||
<h2>Implementação</h2>
|
||||
<p><b>Porta padrão:</b> 23/TCP.<br>
|
||||
Funciona na camada de aplicação do modelo OSI.<br>
|
||||
<b>Formato:</b> Baseado em troca de caracteres ASCII, sem criptografia.<br>
|
||||
<b>RFC:</b> Definido pela RFC 854 (1983).<br>
|
||||
<b>Arquitetura:</b> Segue o modelo cliente-servidor</p>
|
||||
<h2>Funcionamento</h2>
|
||||
<p>Na prática, o Telnet funciona de maneira relativamente simples. O processo começa
|
||||
quando o cliente estabelece uma conexão TCP com o servidor por meio da porta 23.
|
||||
Em seguida, uma sessão de terminal remoto é iniciada e o usuário deve fornecer
|
||||
suas credenciais, como nome de usuário e senha. Após a autenticação, os
|
||||
comandos digitados no cliente são transmitidos em texto puro ao servidor, que os
|
||||
processa e retorna a saída correspondente. A sessão permanece ativa enquanto o
|
||||
usuário desejar, sendo encerrada normalmente com comandos como <i>exit</i> ou <i>logout</i></p>
|
||||
<h2>Cenários de uso</h2>
|
||||
<p>Durante muitos anos, o Telnet foi amplamente utilizado para acesso remoto a
|
||||
servidores Unix, Linux e Windows, especialmente em versões mais antigas desses
|
||||
sistemas. Também se tornou bastante comum na administração de dispositivos de
|
||||
rede, como roteadores e switches, até que o SSH passou a ser adotado como
|
||||
padrão. Além disso, grandes computadores centrais, conhecidos como mainframes,
|
||||
e alguns dispositivos legados ainda utilizam Telnet até hoje. Outra aplicação prática
|
||||
do protocolo está em ambientes educacionais e no diagnóstico de redes, onde é
|
||||
usado para testar portas abertas e verificar conectividade de serviços, como ao
|
||||
executar “telnet servidor.com 80” para checar se a porta de um servidor web está em
|
||||
funcionamento.</p>
|
||||
<h2>Criptografia: o problema inerente</h2>
|
||||
<p>O Telnet não possui criptografia nativa, o que o torna extremamente vulnerável. Para
|
||||
solucionar esse problema, surgiram alternativas mais seguras. A principal delas é o
|
||||
SSH (Secure Shell), desenvolvido nos anos 1990 como um substituto direto do
|
||||
Telnet. O SSH oferece as mesmas funcionalidades, mas garante a proteção dos
|
||||
dados por meio de autenticação forte e criptografia de todo o tráfego. Outra
|
||||
possibilidade, embora menos comum, é o uso de SSL/TLS para tunelar sessões
|
||||
Telnet, mas na prática essa abordagem raramente é utilizada.</p>
|
||||
<h2>Vantagens e desvantagens</h2>
|
||||
<p>Entre as vantagens do Telnet, destacam-se sua simplicidade, baixo consumo de
|
||||
recursos e compatibilidade com diferentes sistemas antigos, o que facilitou sua
|
||||
adoção ao longo dos anos. Contudo, essas qualidades são superadas por suas
|
||||
desvantagens. A principal é a ausência de criptografia, que expõe todos os dados
|
||||
transmitidos, incluindo senhas, em texto puro. Isso o torna vulnerável a ataques
|
||||
como o sniffing, que captura pacotes de rede, e o hijacking, que sequestra sessões
|
||||
ativas. Por esse motivo, o Telnet é considerado obsoleto e inseguro para uso em
|
||||
redes abertas, como a própria Internet.</p>
|
||||
<h2>Relação com outros protocolos</h2>
|
||||
<p>O Telnet faz parte da família de protocolos da pilha TCP/IP e utiliza o TCP para
|
||||
garantir a confiabilidade na comunicação. Assim como outros protocolos dessa pilha,
|
||||
como HTTP, FTP e SMTP, ele se baseia em conexões estáveis para realizar suas
|
||||
funções, mas seu diferencial sempre foi a interatividade em modo terminal. No
|
||||
entanto, devido às falhas de segurança, acabou sendo substituído por seu sucessor
|
||||
natural, o SSH, que manteve a mesma base conceitual do Telnet, mas adicionou
|
||||
camadas robustas de proteção.</p>
|
||||
<h2>Exemplo funcional</h2>
|
||||
<p>Abaixo há um simulador de conexão Telnet feito em JavaScript.</p>
|
||||
<div id="telnetSimulationLoadingHolder">
|
||||
<p id="telnetSimulationLoadingText">Loading...</p>
|
||||
<div class="ellipsis-loader" aria-role="alert" aria-label="Loading. Please wait">
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
<div class="ellipsis-loader__dot"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div id="telnetSimulation">
|
||||
<div id="telnetSimulationServer">
|
||||
<h3>Servidor</h3>
|
||||
<textarea name="" id="telnetSimulationServerScreen" readonly>Bem vindo ao Zubuntu 30.1!
|
||||
Rodando script de inicialização: start_telnet_server.sh
|
||||
Servidor Telnet iniciado em localhost:23
|
||||
Pronto para receber comandos.
|
||||
----
|
||||
</textarea>
|
||||
<button id="telnetSimulationServerClean">Limpar</button>
|
||||
</div>
|
||||
<div id="telnetSimulationClient">
|
||||
<h3>Cliente</h3>
|
||||
<textarea name="" id="telnetSimulationClientScreen" readonly>Envie help para ver a lista de comandos suportados pelo servidor!
|
||||
----
|
||||
</textarea>
|
||||
<div id="telnetSimulationInput">
|
||||
<input type="text" id="telnetSimulationInputBox">
|
||||
<button id="telnetSimulationClientSend">Enviar</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</article>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue