diff --git a/documentation/content/pt-br/articles/ipsec-must/_index.adoc b/documentation/content/pt-br/articles/ipsec-must/_index.adoc index fe35be4e88..5b0996171f 100644 --- a/documentation/content/pt-br/articles/ipsec-must/_index.adoc +++ b/documentation/content/pt-br/articles/ipsec-must/_index.adoc @@ -1,278 +1,278 @@ --- authors: - author: 'David Honig' email: honig@sprynet.com description: 'Verificação Independente da Funcionalidade IPsec no FreeBSD' tags: ["IPsec", "verification", "FreeBSD"] title: 'Verificação Independente da Funcionalidade IPsec no FreeBSD' trademarks: ["freebsd", "opengroup", "general"] --- = Verificação Independente da Funcionalidade IPsec no FreeBSD :doctype: article :toc: macro :toclevels: 1 :icons: font :sectnums: :sectnumlevels: 6 :source-highlighter: rouge :experimental: :images-path: articles/ipsec-must/ ifdef::env-beastie[] ifdef::backend-html5[] include::shared/authors.adoc[] include::shared/mirrors.adoc[] include::shared/releases.adoc[] include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists.adoc[] include::shared/{{% lang %}}/urls.adoc[] :imagesdir: ../../../images/{images-path} endif::[] ifdef::backend-pdf,backend-epub3[] include::../../../../shared/asciidoctor.adoc[] endif::[] endif::[] ifndef::env-beastie[] include::../../../../../shared/asciidoctor.adoc[] endif::[] [.abstract-title] Resumo Você instalou o IPsec e ele parece estar funcionando. Como você sabe? Eu descrevo um método para verificar experimentalmente se o IPsec está funcionando. ''' toc::[] [[problem]] == O problema Primeiramente, vamos supor que você tenha o instalado o IPsec (<>). Como você sabe se há algum problema (<>)? É verdade que sua conexão não funcionará se estiver mal configurada, e funcionará quando você finalmente acertar. O comando man:netstat[1] listará isso. Mas você pode confirmar isso de forma independente? [[solution]] == A solução Em primeiro lugar, vejamos alguma informação teórica relevante em relação à criptografia: . Dados criptografados são uniformemente distribuídos, ou seja, possuem entropia máxima por símbolo; . Os dados brutos, não comprimidos são tipicamente redundantes, isto é, possuem entropia submáxima. Suponha que você pudesse medir a entropia dos dados que entram e saem de sua interface de rede. Então, você poderia ver a diferença entre dados não criptografados e dados criptografados. Isso seria verdade mesmo que alguns dos dados no "modo criptografado" não estivessem criptografados - como o cabeçalho IP mais externo deve estar se o pacote for roteável. [[MUST]] === MUST O "Universal Statistical Test for Random Bit Generators" de Ueli Maurer (https://web.archive.org/web/20011115002319/http://www.geocities.com/SiliconValley/Code/4704/universal.pdf[MUST]) mede rapidamente a entropia de uma amostra. Ele usa um algoritmo semelhante ao de compressão. O <> de uma variante que mede blocos sucessivos (de cerca de um quarto de megabyte) de um arquivo. [[tcpdump]] === Tcpdump Também precisamos de uma maneira de capturar os dados brutos da rede. Um programa chamado man:tcpdump[1] permite que você faça isso, se você habilitou a interface do _Berkeley Packet Filter_ no seu <>. O comando: [source, shell] .... tcpdump -c 4000 -s 10000 -w dumpfile.bin .... serão capturados 4000 pacotes brutos e salvos em _dumpfile.bin_. Neste exemplo, serão capturados até 10.000 bytes por pacote. [[experiment]] == O Experimento Aqui está o experimento: [.procedure] ==== . Abra uma janela para um host IPsec e outra janela para um host inseguro. . Agora, inicie o <>. . Na janela "segura", execute o comando UNIX(R) man:yes[1], que transmitirá o caractere `y`. Após um tempo, pare este comando. Mude para a janela "insegura" e repita o processo. Após um tempo, pare também esse comando. . Agora execute o <> nos pacotes capturados. Você deverá ver algo como o seguinte. O importante a ser observado é que a conexão segura tem 93% (6,7) do valor esperado (7,18), enquanto a conexão "normal" tem 29% (2,1) do valor esperado. + [source, shell] .... % tcpdump -c 4000 -s 10000 -w ipsecdemo.bin % uliscan ipsecdemo.bin Uliscan 21 Dec 98 L=8 256 258560 Measuring file ipsecdemo.bin Init done Expected value for L=8 is 7.1836656 6.9396 -------------------------------------------------------- 6.6177 ----------------------------------------------------- 6.4100 --------------------------------------------------- 2.1101 ----------------- 2.0838 ----------------- 2.0983 ----------------- .... ==== [[caveat]] == Embargo Este experimento mostra que o IPsec parece estar distribuindo os dados do payload __uniformly__, como a criptografia deveria fazer. No entanto, o experimento descrito aqui não pode detectar muitas possíveis falhas em um sistema (das quais não tenho nenhuma evidência). Estes incluem geração ou troca de chave fraca, dados ou chaves visíveis para outros, uso de algoritmos fracos, subversão do kernel, etc. Estude o código-fonte; conheça o código. [[IPsec]] == IPsec --- Definição As extensões de segurança do Protocolo de Internet para o IPv4; obrigatório para o IPv6. Um protocolo para negociar criptografia e autenticação no nível IP (host-to-host). O SSL protege apenas um socket de aplicativo; O SSH protege apenas um login; O PGP protege apenas um arquivo ou mensagem especificada. O IPsec criptografa tudo entre dois hosts. [[ipsec-install]] == Instalando o IPsec A maioria das versões modernas do FreeBSD possui suporte IPsec em seu código base. Portanto, você precisará incluir a opção `IPSEC` na configuração do seu kernel e, após recompilar e reinstalar o kernel, configurar as conexões IPsec usando o comando man:setkey[8]. Um guia abrangente sobre como executar o IPsec no FreeBSD está disponível no extref:{handbook}[Handbook do FreeBSD, ipsec]. [[kernel]] == src/sys/i386/conf/KERNELNAME -Isto precisa estar presente no arquivo de configuração do kernel para que seja possível capturar dados de rede com man:tcpdump[1]. Certifique-se de executar man:config[8] depois de adicioná-lo e reconstruir e reinstalar o kernel. +Isso precisa estar presente no arquivo de configuração do kernel para capturar dados de rede com o comando man:tcpdump[1]. Certifique-se de executar man:config[8] após adicionar isso e reconstruir e reinstalar o kernel. [.programlisting] .... device bpf .... [[code]] == Teste estatístico universal de Maurer (para tamanho de bloco = 8 bits) Você pode encontrar o mesmo código https://web.archive.org/web/20031204230654/http://www.geocities.com:80/SiliconValley/Code/4704/uliscanc.txt[neste link]. [.programlisting] .... /* ULISCAN.c ---blocksize of 8 1 Oct 98 1 Dec 98 21 Dec 98 uliscan.c derived from ueli8.c This version has // comments removed for Sun cc This implements Ueli M Maurer's "Universal Statistical Test for Random Bit Generators" using L=8 Accepts a filename on the command line; writes its results, with other info, to stdout. Handles input file exhaustion gracefully. Ref: J. Cryptology v 5 no 2, 1992 pp 89-105 also on the web somewhere, which is where I found it. -David Honig honig@sprynet.com Usage: ULISCAN filename outputs to stdout */ #define L 8 #define V (1< #include int main(argc, argv) int argc; char **argv; { FILE *fptr; int i,j; int b, c; int table[V]; double sum = 0.0; int iproduct = 1; int run; extern double log(/* double x */); printf("Uliscan 21 Dec 98 \nL=%d %d %d \n", L, V, MAXSAMP); if (argc < 2) { printf("Usage: Uliscan filename\n"); exit(-1); } else { printf("Measuring file %s\n", argv[1]); } fptr = fopen(argv[1],"rb"); if (fptr == NULL) { printf("Can't find %s\n", argv[1]); exit(-1); } for (i = 0; i < V; i++) { table[i] = 0; } for (i = 0; i < Q; i++) { b = fgetc(fptr); table[b] = i; } printf("Init done\n"); printf("Expected value for L=8 is 7.1836656\n"); run = 1; while (run) { sum = 0.0; iproduct = 1; if (run) for (i = Q; run && i < Q + K; i++) { j = i; b = fgetc(fptr); if (b < 0) run = 0; if (run) { if (table[b] > j) j += K; sum += log((double)(j-table[b])); table[b] = i; } } if (!run) printf("Premature end of file; read %d blocks.\n", i - Q); sum = (sum/((double)(i - Q))) / log(2.0); printf("%4.4f ", sum); for (i = 0; i < (int)(sum*8.0 + 0.50); i++) printf("-"); printf("\n"); /* refill initial table */ if (0) { for (i = 0; i < Q; i++) { b = fgetc(fptr); if (b < 0) { run = 0; } else { table[b] = i; } } } } } .... diff --git a/documentation/content/pt-br/articles/ipsec-must/_index.po b/documentation/content/pt-br/articles/ipsec-must/_index.po index 1123d2c2ec..d4e7639071 100644 --- a/documentation/content/pt-br/articles/ipsec-must/_index.po +++ b/documentation/content/pt-br/articles/ipsec-must/_index.po @@ -1,754 +1,741 @@ # SOME DESCRIPTIVE TITLE # Copyright (C) YEAR The FreeBSD Project # This file is distributed under the same license as the FreeBSD Documentation package. # Danilo G. Baio , 2021. # Edson Brandi , 2023. # "Danilo G. Baio" , 2023. msgid "" msgstr "" "Project-Id-Version: FreeBSD Documentation VERSION\n" -"POT-Creation-Date: 2022-02-01 09:21-0300\n" -"PO-Revision-Date: 2023-04-24 21:33+0000\n" +"POT-Creation-Date: 2023-05-21 14:43-0300\n" +"PO-Revision-Date: 2023-05-29 22:23+0000\n" "Last-Translator: Edson Brandi \n" "Language-Team: Portuguese (Brazil) \n" "Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" "Plural-Forms: nplurals=2; plural=n > 1;\n" "X-Generator: Weblate 4.17\n" #. type: Title = #: documentation/content/en/articles/ipsec-must/_index.adoc:1 #: documentation/content/en/articles/ipsec-must/_index.adoc:11 #, no-wrap msgid "Independent Verification of IPsec Functionality in FreeBSD" msgstr "Verificação Independente da Funcionalidade IPsec no FreeBSD" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:44 msgid "Abstract" msgstr "Resumo" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:47 msgid "" "You installed IPsec and it seems to be working. How do you know? I describe " "a method for experimentally verifying that IPsec is working." msgstr "" "Você instalou o IPsec e ele parece estar funcionando. Como você sabe? Eu " "descrevo um método para verificar experimentalmente se o IPsec está " "funcionando." #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:49 msgid "'''" msgstr "'''" #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:53 #, no-wrap msgid "The Problem" msgstr "O problema" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:58 msgid "" "First, lets assume you have <>. How do you know it is " "<>? Sure, your connection will not work if it is misconfigured, and " "it will work when you finally get it right. man:netstat[1] will list it. " "But can you independently confirm it?" msgstr "" "Primeiramente, vamos supor que você tenha o instalado o IPsec (<>). Como você sabe se há algum problema (<>)? É verdade que " "sua conexão não funcionará se estiver mal configurada, e funcionará quando " "você finalmente acertar. O comando man:netstat[1] listará isso. Mas você " "pode confirmar isso de forma independente?" #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:60 #, no-wrap msgid "The Solution" msgstr "A solução" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:63 msgid "First, some crypto-relevant info theory:" msgstr "" "Em primeiro lugar, vejamos alguma informação teórica relevante em relação à " "criptografia:" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:65 msgid "" "Encrypted data is uniformly distributed, i.e., has maximal entropy per " "symbol;" msgstr "" "Dados criptografados são uniformemente distribuídos, ou seja, possuem " "entropia máxima por símbolo;" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:66 msgid "" "Raw, uncompressed data is typically redundant, i.e., has sub-maximal entropy." msgstr "" "Os dados brutos, não comprimidos são tipicamente redundantes, isto é, " "possuem entropia submáxima." #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:70 msgid "" "Suppose you could measure the entropy of the data to- and from- your network " "interface. Then you could see the difference between unencrypted data and " "encrypted data. This would be true even if some of the data in \"encrypted " "mode\" was not encrypted---as the outermost IP header must be if the packet " "is to be routable." msgstr "" "Suponha que você pudesse medir a entropia dos dados que entram e saem de sua " "interface de rede. Então, você poderia ver a diferença entre dados não " "criptografados e dados criptografados. Isso seria verdade mesmo que alguns " "dos dados no \"modo criptografado\" não estivessem criptografados - como o " "cabeçalho IP mais externo deve estar se o pacote for roteável." #. type: Title === #: documentation/content/en/articles/ipsec-must/_index.adoc:72 #, no-wrap msgid "MUST" msgstr "MUST" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:77 msgid "" "Ueli Maurer's \"Universal Statistical Test for Random Bit Generators" "\"(https://web.archive.org/web/20011115002319/http://www.geocities.com/" "SiliconValley/Code/4704/universal.pdf[MUST]) quickly measures the entropy of " "a sample. It uses a compression-like algorithm. <> for a variant " "which measures successive (~quarter megabyte) chunks of a file." msgstr "" "O \"Universal Statistical Test for Random Bit Generators\" de Ueli Maurer " "(https://web.archive.org/web/20011115002319/http://www.geocities.com/" "SiliconValley/Code/4704/universal.pdf[MUST]) mede rapidamente a entropia de " "uma amostra. Ele usa um algoritmo semelhante ao de compressão. O <> " "de uma variante que mede blocos sucessivos (de cerca de um quarto de " "megabyte) de um arquivo." #. type: Title === #: documentation/content/en/articles/ipsec-must/_index.adoc:79 #, no-wrap msgid "Tcpdump" msgstr "Tcpdump" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:83 msgid "" "We also need a way to capture the raw network data. A program called man:" "tcpdump[1] lets you do this, if you have enabled the _Berkeley Packet " "Filter_ interface in your <>." msgstr "" "Também precisamos de uma maneira de capturar os dados brutos da rede. Um " "programa chamado man:tcpdump[1] permite que você faça isso, se você " "habilitou a interface do _Berkeley Packet Filter_ no seu <>." #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:85 msgid "The command:" msgstr "O comando:" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:89 #, no-wrap msgid " tcpdump -c 4000 -s 10000 -w dumpfile.bin\n" msgstr " tcpdump -c 4000 -s 10000 -w dumpfile.bin\n" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:93 msgid "" "will capture 4000 raw packets to _dumpfile.bin_. Up to 10,000 bytes per " "packet will be captured in this example." msgstr "" "serão capturados 4000 pacotes brutos e salvos em _dumpfile.bin_. Neste " "exemplo, serão capturados até 10.000 bytes por pacote." #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:95 #, no-wrap msgid "The Experiment" msgstr "O Experimento" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:98 msgid "Here is the experiment:" msgstr "Aqui está o experimento:" #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:102 msgid "Open a window to an IPsec host and another window to an insecure host." msgstr "" "Abra uma janela para um host IPsec e outra janela para um host inseguro." #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:103 msgid "Now start <>." msgstr "Agora, inicie o <>." #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:104 msgid "" "In the \"secure\" window, run the UNIX(R) command man:yes[1], which will " "stream the `y` character. After a while, stop this. Switch to the insecure " "window, and repeat. After a while, stop." msgstr "" "Na janela \"segura\", execute o comando UNIX(R) man:yes[1], que transmitirá " "o caractere `y`. Após um tempo, pare este comando. Mude para a janela " "\"insegura\" e repita o processo. Após um tempo, pare também esse comando." #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:105 msgid "" "Now run <> on the captured packets. You should see something like the " "following. The important thing to note is that the secure connection has 93% " "(6.7) of the expected value (7.18), and the \"normal\" connection has 29% " "(2.1) of the expected value." msgstr "" "Agora execute o <> nos pacotes capturados. Você deverá ver algo como o " "seguinte. O importante a ser observado é que a conexão segura tem 93% (6,7) " "do valor esperado (7,18), enquanto a conexão \"normal\" tem 29% (2,1) do " "valor esperado." #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:121 #, no-wrap msgid "" "% tcpdump -c 4000 -s 10000 -w ipsecdemo.bin\n" "% uliscan ipsecdemo.bin\n" "Uliscan 21 Dec 98\n" "L=8 256 258560\n" "Measuring file ipsecdemo.bin\n" "Init done\n" "Expected value for L=8 is 7.1836656\n" "6.9396 --------------------------------------------------------\n" "6.6177 -----------------------------------------------------\n" "6.4100 ---------------------------------------------------\n" "2.1101 -----------------\n" "2.0838 -----------------\n" "2.0983 -----------------\n" msgstr "" "% tcpdump -c 4000 -s 10000 -w ipsecdemo.bin\n" "% uliscan ipsecdemo.bin\n" "Uliscan 21 Dec 98\n" "L=8 256 258560\n" "Measuring file ipsecdemo.bin\n" "Init done\n" "Expected value for L=8 is 7.1836656\n" "6.9396 --------------------------------------------------------\n" "6.6177 -----------------------------------------------------\n" "6.4100 ---------------------------------------------------\n" "2.1101 -----------------\n" "2.0838 -----------------\n" "2.0983 -----------------\n" #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:125 #, no-wrap msgid "Caveat" msgstr "Embargo" #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:131 msgid "" "This experiment shows that IPsec _does_ seem to be distributing the payload " "data __uniformly__, as encryption should. However, the experiment described " "here _cannot_ detect many possible flaws in a system (none of which do I " "have any evidence for). These include poor key generation or exchange, data " "or keys being visible to others, use of weak algorithms, kernel subversion, " "etc. Study the source; know the code." msgstr "" "Este experimento mostra que o IPsec parece estar distribuindo os dados do " "payload __uniformly__, como a criptografia deveria fazer. No entanto, o " "experimento descrito aqui não pode detectar muitas possíveis falhas em um " "sistema (das quais não tenho nenhuma evidência). Estes incluem geração ou " "troca de chave fraca, dados ou chaves visíveis para outros, uso de " "algoritmos fracos, subversão do kernel, etc. Estude o código-fonte; conheça " "o código." #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:133 #, no-wrap msgid "IPsec---Definition" msgstr "IPsec --- Definição" #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:139 msgid "" "Internet Protocol security extensions to IPv4; required for IPv6. A " "protocol for negotiating encryption and authentication at the IP (host-to-" "host) level. SSL secures only one application socket; SSH secures only a " "login; PGP secures only a specified file or message. IPsec encrypts " "everything between two hosts." msgstr "" "As extensões de segurança do Protocolo de Internet para o IPv4; obrigatório " "para o IPv6. Um protocolo para negociar criptografia e autenticação no nível " "IP (host-to-host). O SSL protege apenas um socket de aplicativo; O SSH " "protege apenas um login; O PGP protege apenas um arquivo ou mensagem " "especificada. O IPsec criptografa tudo entre dois hosts." #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:141 #, no-wrap msgid "Installing IPsec" msgstr "Instalando o IPsec" #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:145 msgid "" "Most of the modern versions of FreeBSD have IPsec support in their base " "source. So you will need to include the `IPSEC` option in your kernel " "config and, after kernel rebuild and reinstall, configure IPsec connections " "using man:setkey[8] command." msgstr "" "A maioria das versões modernas do FreeBSD possui suporte IPsec em seu código " "base. Portanto, você precisará incluir a opção `IPSEC` na configuração do " "seu kernel e, após recompilar e reinstalar o kernel, configurar as conexões " "IPsec usando o comando man:setkey[8]." #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:147 msgid "" "A comprehensive guide on running IPsec on FreeBSD is provided in extref:" "{handbook}[FreeBSD Handbook, ipsec]." msgstr "" "Um guia abrangente sobre como executar o IPsec no FreeBSD está disponível no " "extref:{handbook}[Handbook do FreeBSD, ipsec]." #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:149 #, no-wrap msgid "src/sys/i386/conf/KERNELNAME" msgstr "src/sys/i386/conf/KERNELNAME" #. type: delimited block = 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:153 msgid "" -"This needs to be present in the kernel config file in order to capture " -"network data with man:tcpdump[1]. Be sure to run man:config[8] after adding " -"this, and rebuild and reinstall." +"This needs to be present in the kernel config file to capture network data " +"with man:tcpdump[1]. Be sure to run man:config[8] after adding this, and " +"rebuild and reinstall." msgstr "" -"Isto precisa estar presente no arquivo de configuração do kernel para que " -"seja possível capturar dados de rede com man:tcpdump[1]. Certifique-se de " -"executar man:config[8] depois de adicioná-lo e reconstruir e reinstalar o " +"Isso precisa estar presente no arquivo de configuração do kernel para " +"capturar dados de rede com o comando man:tcpdump[1]. Certifique-se de " +"executar man:config[8] após adicionar isso e reconstruir e reinstalar o " "kernel." #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:157 #, no-wrap msgid "device\tbpf\n" msgstr "device\tbpf\n" #. type: Title == #: documentation/content/en/articles/ipsec-must/_index.adoc:160 #, no-wrap msgid "Maurer's Universal Statistical Test (for block size=8 bits)" msgstr "Teste estatístico universal de Maurer (para tamanho de bloco = 8 bits)" #. type: Plain text #: documentation/content/en/articles/ipsec-must/_index.adoc:163 msgid "" "You can find the same code at https://web.archive.org/web/20031204230654/" "http://www.geocities.com:80/SiliconValley/Code/4704/uliscanc.txt[this link]." msgstr "" -"Você pode encontrar o mesmo código https://web.archive.org/web/" -"20031204230654/http://www.geocities.com:80/SiliconValley/Code/4704/uliscanc." -"txt[neste link]." +"Você pode encontrar o mesmo código https://web.archive.org/" +"web/20031204230654/http://www.geocities.com:80/SiliconValley/Code/4704/" +"uliscanc.txt[neste link]." #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:168 #, no-wrap msgid "" "/*\n" " ULISCAN.c ---blocksize of 8\n" msgstr "" "/*\n" " ULISCAN.c ---blocksize of 8\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:172 #, no-wrap msgid "" " 1 Oct 98\n" " 1 Dec 98\n" " 21 Dec 98 uliscan.c derived from ueli8.c\n" msgstr "" " 1 Oct 98\n" " 1 Dec 98\n" " 21 Dec 98 uliscan.c derived from ueli8.c\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:174 #, no-wrap msgid " This version has // comments removed for Sun cc\n" msgstr " This version has // comments removed for Sun cc\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:177 #, no-wrap msgid "" " This implements Ueli M Maurer's \"Universal Statistical Test for Random\n" " Bit Generators\" using L=8\n" msgstr "" " This implements Ueli M Maurer's \"Universal Statistical Test for Random\n" " Bit Generators\" using L=8\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:180 #, no-wrap msgid "" " Accepts a filename on the command line; writes its results, with other\n" " info, to stdout.\n" msgstr "" " Accepts a filename on the command line; writes its results, with other\n" " info, to stdout.\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:182 #, no-wrap msgid " Handles input file exhaustion gracefully.\n" msgstr " Handles input file exhaustion gracefully.\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:185 #, no-wrap msgid "" " Ref: J. Cryptology v 5 no 2, 1992 pp 89-105\n" " also on the web somewhere, which is where I found it.\n" msgstr "" " Ref: J. Cryptology v 5 no 2, 1992 pp 89-105\n" " also on the web somewhere, which is where I found it.\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:188 #, no-wrap msgid "" " -David Honig\n" " honig@sprynet.com\n" msgstr "" " -David Honig\n" " honig@sprynet.com\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:193 #, no-wrap msgid "" " Usage:\n" " ULISCAN filename\n" " outputs to stdout\n" "*/\n" msgstr "" " Usage:\n" " ULISCAN filename\n" " outputs to stdout\n" "*/\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:199 #, no-wrap msgid "" "#define L 8\n" "#define V (1<\n" "#include \n" msgstr "" "#include \n" "#include \n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:214 #, no-wrap msgid "" "int main(argc, argv)\n" "int argc;\n" "char **argv;\n" "{\n" " FILE *fptr;\n" " int i,j;\n" " int b, c;\n" " int table[V];\n" " double sum = 0.0;\n" " int iproduct = 1;\n" " int run;\n" msgstr "" "int main(argc, argv)\n" "int argc;\n" "char **argv;\n" "{\n" " FILE *fptr;\n" " int i,j;\n" " int b, c;\n" " int table[V];\n" " double sum = 0.0;\n" " int iproduct = 1;\n" " int run;\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:216 #, no-wrap msgid " extern double log(/* double x */);\n" msgstr " extern double log(/* double x */);\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:218 #, no-wrap msgid " printf(\"Uliscan 21 Dec 98 \\nL=%d %d %d \\n\", L, V, MAXSAMP);\n" -msgstr "" -" printf(\"Uliscan 21 Dec 98 \\n" -"L=%d %d %d \\n" -"\", L, V, MAXSAMP);\n" +msgstr " printf(\"Uliscan 21 Dec 98 \\nL=%d %d %d \\n\", L, V, MAXSAMP);\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:225 #, no-wrap msgid "" " if (argc < 2) {\n" " printf(\"Usage: Uliscan filename\\n\");\n" " exit(-1);\n" " } else {\n" " printf(\"Measuring file %s\\n\", argv[1]);\n" " }\n" msgstr "" " if (argc < 2) {\n" -" printf(\"Usage: Uliscan filename\\n" -"\");\n" +" printf(\"Usage: Uliscan filename\\n\");\n" " exit(-1);\n" " } else {\n" -" printf(\"Measuring file %s\\n" -"\", argv[1]);\n" +" printf(\"Measuring file %s\\n\", argv[1]);\n" " }\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:227 #, no-wrap msgid " fptr = fopen(argv[1],\"rb\");\n" msgstr " fptr = fopen(argv[1],\"rb\");\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:232 #, no-wrap msgid "" " if (fptr == NULL) {\n" " printf(\"Can't find %s\\n\", argv[1]);\n" " exit(-1);\n" " }\n" msgstr "" " if (fptr == NULL) {\n" -" printf(\"Can't find %s\\n" -"\", argv[1]);\n" +" printf(\"Can't find %s\\n\", argv[1]);\n" " exit(-1);\n" " }\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:236 #, no-wrap msgid "" " for (i = 0; i < V; i++) {\n" " table[i] = 0;\n" " }\n" msgstr "" " for (i = 0; i < V; i++) {\n" " table[i] = 0;\n" " }\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:241 #, no-wrap msgid "" " for (i = 0; i < Q; i++) {\n" " b = fgetc(fptr);\n" " table[b] = i;\n" " }\n" msgstr "" " for (i = 0; i < Q; i++) {\n" " b = fgetc(fptr);\n" " table[b] = i;\n" " }\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:243 #, no-wrap msgid " printf(\"Init done\\n\");\n" -msgstr "" -" printf(\"Init done\\n" -"\");\n" +msgstr " printf(\"Init done\\n\");\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:245 #, no-wrap msgid " printf(\"Expected value for L=8 is 7.1836656\\n\");\n" -msgstr "" -" printf(\"Expected value for L=8 is 7.1836656\\n" -"\");\n" +msgstr " printf(\"Expected value for L=8 is 7.1836656\\n\");\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:247 #, no-wrap msgid " run = 1;\n" msgstr " run = 1;\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:251 #, no-wrap msgid "" " while (run) {\n" " sum = 0.0;\n" " iproduct = 1;\n" msgstr "" " while (run) {\n" " sum = 0.0;\n" " iproduct = 1;\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:256 #, no-wrap msgid "" " if (run)\n" " for (i = Q; run && i < Q + K; i++) {\n" " j = i;\n" " b = fgetc(fptr);\n" msgstr "" " if (run)\n" " for (i = Q; run && i < Q + K; i++) {\n" " j = i;\n" " b = fgetc(fptr);\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:259 #, no-wrap msgid "" " if (b < 0)\n" " run = 0;\n" msgstr "" " if (b < 0)\n" " run = 0;\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:263 #, no-wrap msgid "" " if (run) {\n" " if (table[b] > j)\n" " j += K;\n" msgstr "" " if (run) {\n" " if (table[b] > j)\n" " j += K;\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:265 #, no-wrap msgid " sum += log((double)(j-table[b]));\n" msgstr " sum += log((double)(j-table[b]));\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:269 #, no-wrap msgid "" " table[b] = i;\n" " }\n" " }\n" msgstr "" " table[b] = i;\n" " }\n" " }\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:272 #, no-wrap msgid "" " if (!run)\n" " printf(\"Premature end of file; read %d blocks.\\n\", i - Q);\n" msgstr "" " if (!run)\n" -" printf(\"Premature end of file; read %d blocks.\\n" -"\", i - Q);\n" +" printf(\"Premature end of file; read %d blocks.\\n\", i - Q);\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:275 #, no-wrap msgid "" " sum = (sum/((double)(i - Q))) / log(2.0);\n" " printf(\"%4.4f \", sum);\n" msgstr "" " sum = (sum/((double)(i - Q))) / log(2.0);\n" " printf(\"%4.4f \", sum);\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:278 #, no-wrap msgid "" " for (i = 0; i < (int)(sum*8.0 + 0.50); i++)\n" " printf(\"-\");\n" msgstr "" " for (i = 0; i < (int)(sum*8.0 + 0.50); i++)\n" " printf(\"-\");\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:280 #, no-wrap msgid " printf(\"\\n\");\n" -msgstr "" -" printf(\"\\n" -"\");\n" +msgstr " printf(\"\\n\");\n" #. type: delimited block . 4 #: documentation/content/en/articles/ipsec-must/_index.adoc:294 #, no-wrap msgid "" " /* refill initial table */\n" " if (0) {\n" " for (i = 0; i < Q; i++) {\n" " b = fgetc(fptr);\n" " if (b < 0) {\n" " run = 0;\n" " } else {\n" " table[b] = i;\n" " }\n" " }\n" " }\n" " }\n" "}\n" msgstr "" " /* refill initial table */\n" " if (0) {\n" " for (i = 0; i < Q; i++) {\n" " b = fgetc(fptr);\n" " if (b < 0) {\n" " run = 0;\n" " } else {\n" " table[b] = i;\n" " }\n" " }\n" " }\n" " }\n" "}\n" #~ msgid "" #~ "include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/" #~ "{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists." #~ "adoc[] include::shared/{{% lang %}}/urls.adoc[]" #~ msgstr "" #~ "include::shared/attributes/attributes-{{% lang %}}.adoc[] include::shared/" #~ "{{% lang %}}/teams.adoc[] include::shared/{{% lang %}}/mailing-lists." #~ "adoc[] include::shared/{{% lang %}}/urls.adoc[]"