Enviando email com CURL: alguns caracteres chineses são exibidos

1

Estou enviando alguns e-mails usando SMTP e CURL sobre TOR, mas tenho um problema: recebo alguns caracteres chineses sobre os que devo receber, alguma ideia?

É assim que eu envio o email usando um script em lote (eu tenho uma variável de arquivo):

curl.exe --socks5-hostname 127.0.0.1:9050 smtp://onionaddre.onion:port --mail-from [email protected] --mail-rcpt [email protected] --user [email protected]:password --upload-file %filetosend%

Esta é a mensagem original:

0asf345£%$&fdasdhhs#@deadfga

Isto é o que eu recebo:

聣聭聤聭聯聶聥耠職聮聯職耠職聩聢聴聹耠聣聬聩耍耛聳聢耍聲
zipomojiv
fonte
Eu realmente não entendo o que você está fazendo aqui. Mas quando você vê um comportamento como esse, geralmente é uma incompatibilidade de codificação. Como você está codificando os dados e o que o destinatário espera? Unicode / Base64 / ASCII, etc.
Appleoddity 23/03
Eu não tenho idéia. Basicamente, eu tenho um programa de PowerShell que gera caracteres de acordo com a hora e a data (como uma chave de criptografia) e, em seguida, preciso enviar essa chave por tor. Não sei qual codificação é usada. Como verifico isso? O servidor de correio TOR que estou usando é TorBox com SquirrelMail 1.4.22
zipomojiv
Você pode forçar o Powershell a codificar o texto em UTF8 fazendo o seguinte:$UTF8 = [System.Text.Encoding]::UTF8 $Message = "blah" $UTF8Message = $UTF8.GetBytes($Message)
shinjijai 23/03
@ shinjijai isso deve ser adicionado no código do PowerShell que gera o arquivo, certo?
23418 zipomojiv
1
Mude [System.Text.Encoding]::Unicodepara [System.Text.Encoding]::UTF8. Acho que esse é o seu problema, o arquivo é unicode e o cURL pode estar sendo publicado como UTF8, não sei de antemão quais são os padrões do cURL.
23718 shinjijai

Respostas:

1

Ainda não é realmente uma resposta, mas talvez seja útil e não caiba na seção de comentários.

Se você olhar de perto os caracteres chineses, verá que a maioria deles tem uma coisa semelhante (radical) no lado esquerdo. Isso geralmente significa que eles têm um ponto de código muito semelhante.

$ perl -e 'use utf8; $foo = "聣聭聤聭聯聶聥耠職聮聯職耠職聩聢聴聹耠聣聬聩耍耛聳聢耍聲"; while ($foo =~ s/^(.)//) { printf("%04x\n", ord($1)) }'
8063
806d
8064
806d
806f
8076
8065
8020
8077
806e
806f
8077
8020
8077
8069
8062
8074
8079
8020
8063
806c
8069
800d
801b
8073
8062
800d
8072

Se nos livrarmos dos 80s, obteremos ASCII simples:

$ perl -e 'print "\x63\x6d\x64\x6d\x6f\x76\x65\x20\x77\x6e\x6f\x77\x20\x77\x69\x62\x74\x79\x20\x63\x6c\x69\x0d\x1b\x73\x62\x0d\x72\n"'
rmdmove wnow wibty cli

Não consigo entender esse texto, mas talvez você possa.

sneep
fonte
Provavelmente eu confundi o e-mail e o arquivo enviado. Vou verificar novamente agora e informar você. Esse processo é possível apenas com perl? é possível com lote ou PowerShell?
zipomojiv
Nah, eu apenas usei perl para demonstrar isso. Eu não acho que exista uma necessidade real de você executar esses comandos. (Não sei muito sobre lote / PowerShell. Deve ser possível no PowerShell.) Pensei que poderia ajudar, mas talvez não.
sneep 23/03/18
@zipomojiv Se você estiver usando o PowerShell, você pode usar o send-mailmessage. Existe uma razão pela qual você está fazendo isso em curl?
shinjijai 23/03
Ok, verifiquei novamente com outro arquivo e sim, esse é o problema. Portanto, por algum motivo, a codificação muda quando o arquivo é enviado. Existe alguma maneira de alterar o código automaticamente? por exemplo, tenho 10 arquivos txt em chinês e quero "traduzi-los" para caracteres legíveis, o que devo fazer? Eu encontrei este site r12a.github.io/apps/conversion para a transformação chine para / xxxx, removo todos os 80 em palavras e depois passei o resultado aqui novamente r12a.github.io/apps/conversion , tendo meu texto . Muito lento para várias análises de arquivo
zipomojiv
@shinjijai sim, para usar o TOR. Não encontrei qualquer serviço CLI e-mail que suporta tor, única CURL faz
zipomojiv
0

A partir dos comentários, o arquivo que você carrega é criado por outro script do Powershell usado if ($success) { [System.IO.File]::AppendAllText($Path, $myvalue, [System.Text.Encoding]::Unicode)para salvar o conteúdo em disco.

Salvar o arquivo com a codificação de caracteres UTF8 deve corrigir o problema, então substitua [System.Text.Encoding]::Unicodepor [System.Text.Encoding]::UTF8.

shinjijai
fonte