SPLIT DE ARQUIVOS
Boa noite, pessoal.
Estou com um problema em um cliente no qual estou enviando no e-mail dele um arquivo zip quebrado em 3 partes.
O problema é que o anti-vÃrus do cliente acaba sempre excluindo o 1º arquivo, enquanto as outras partes acaba recebendo, sendo que chega apenas um anexo txt com a seguinte mensagem:
[Ô]EmpresaXXX[ô]s virus protection has replaced attachment [Ô]anexo.zip0[Ô] with this text message. The original file was unscannable and was deleted.[Ô]
Alguém já passou por esse problema? A princÃpio eu acredito que o anti-vÃrus não consegue escanear este 1º arquivo por falta de algum cabeçalho nesse arquivo.
Segue abaixo o método que estou utilizando para fazer o split do arquivo, só estou utilizando classes do próprio .NET para isso:
FileStream fsIn = new FileStream(fileName, FileMode.Open, FileAccess.Read);
string basePath = System.IO.Path.GetDirectoryName(fileName);
int fileSize = (int) fsIn.Length;
int segments = (int) (fileSize / m_segmentSize);
int remainder = (int) (fileSize % m_segmentSize);
if (remainder > 0) segments++;
byte[] buffer = new byte[blockSize];
for (int i = 0; i < segments; i++)
{
FileStream fsOut = new FileStream(fileName + [Ô].[Ô] + i, FileMode.Create,FileAccess.Write);
int blocks = (int) (m_segmentSize / blockSize);
if ( remainder > 0 && i < segments - 1)
{
for ( int j = 0; j < blocks ; j++)
{
//probably should just check the int ret value then write those blocks
// then if the ret value < 1024, just write the remainder & exit
fsIn.Read(buffer, 0, blockSize);
fsOut.Write(buffer, 0, blockSize);
}
}
else
{
int finalBlocks = (int) (remainder / blockSize);
int lastBlock = (int) (remainder % blockSize);
for (int k = 0; k < finalBlocks; k++)
{
fsIn.Read(buffer, 0, blockSize);
fsOut.Write(buffer,0,blockSize);
}
fsIn.Read(buffer, 0, lastBlock);
fsOut.Write(buffer, 0, lastBlock);
}
fsOut.Flush();
fsOut.Close();
}
fsIn.Close();
Obs.: No caso, estou enviando cada arquivo em e-mails separados. E a versão que estou utilizando é .NET 1.1.
E para gerar o arquivo ZIP estou utilizando a dll SharpZipLib. Até tentei verificar se está dll tem algum método que faz split, mas não encontrei. Se alguém souber, melhor ainda.
Estou com um problema em um cliente no qual estou enviando no e-mail dele um arquivo zip quebrado em 3 partes.
O problema é que o anti-vÃrus do cliente acaba sempre excluindo o 1º arquivo, enquanto as outras partes acaba recebendo, sendo que chega apenas um anexo txt com a seguinte mensagem:
[Ô]EmpresaXXX[ô]s virus protection has replaced attachment [Ô]anexo.zip0[Ô] with this text message. The original file was unscannable and was deleted.[Ô]
Alguém já passou por esse problema? A princÃpio eu acredito que o anti-vÃrus não consegue escanear este 1º arquivo por falta de algum cabeçalho nesse arquivo.
Segue abaixo o método que estou utilizando para fazer o split do arquivo, só estou utilizando classes do próprio .NET para isso:
FileStream fsIn = new FileStream(fileName, FileMode.Open, FileAccess.Read);
string basePath = System.IO.Path.GetDirectoryName(fileName);
int fileSize = (int) fsIn.Length;
int segments = (int) (fileSize / m_segmentSize);
int remainder = (int) (fileSize % m_segmentSize);
if (remainder > 0) segments++;
byte[] buffer = new byte[blockSize];
for (int i = 0; i < segments; i++)
{
FileStream fsOut = new FileStream(fileName + [Ô].[Ô] + i, FileMode.Create,FileAccess.Write);
int blocks = (int) (m_segmentSize / blockSize);
if ( remainder > 0 && i < segments - 1)
{
for ( int j = 0; j < blocks ; j++)
{
//probably should just check the int ret value then write those blocks
// then if the ret value < 1024, just write the remainder & exit
fsIn.Read(buffer, 0, blockSize);
fsOut.Write(buffer, 0, blockSize);
}
}
else
{
int finalBlocks = (int) (remainder / blockSize);
int lastBlock = (int) (remainder % blockSize);
for (int k = 0; k < finalBlocks; k++)
{
fsIn.Read(buffer, 0, blockSize);
fsOut.Write(buffer,0,blockSize);
}
fsIn.Read(buffer, 0, lastBlock);
fsOut.Write(buffer, 0, lastBlock);
}
fsOut.Flush();
fsOut.Close();
}
fsIn.Close();
Obs.: No caso, estou enviando cada arquivo em e-mails separados. E a versão que estou utilizando é .NET 1.1.
E para gerar o arquivo ZIP estou utilizando a dll SharpZipLib. Até tentei verificar se está dll tem algum método que faz split, mas não encontrei. Se alguém souber, melhor ainda.
Sendo bem claro, o que tem nesse arquivo quebrado eh binario ou texto ?
Se for texto, ele (antivirus) pode estar interpretando codigo e realmente sacando fora, o ideal seria voce criptografar o arquivo assim ele nao vai ter barramentos...
Se for texto, ele (antivirus) pode estar interpretando codigo e realmente sacando fora, o ideal seria voce criptografar o arquivo assim ele nao vai ter barramentos...
é um arquivo zip, que contém arquivos pdf. Eu já tentei enviar diretamente um pdf quebrado em duas partes e o anti-vÃrus barrou também. Mas é sempre a 1ª parte que é barrada, as partes seguintes acabam chegando no cliente. Pela mensagem dá a entender que o anti-vÃrus não conseguiu escanear e por isso excluiu:
[Ô]EmpresaXXX[ô]s virus protection has replaced attachment [Ô]anexo.zip0[Ô] with this text message. The original file was unscannable and was deleted.[Ô]
No caso, o anti-vÃrus está lendo a 1ª parte que tem o cabeçalho e nisso ele verifica que o tamanho não bate com o tamanho original, enquanto as outras partes são apenas dados binários, não contendo nenhum cabeçalho, o anti-vÃrus acaba deixando passar, é isso ou viajei?
Se eu enviar o arquivo zip completo, ou seja, sem estar quebrado, o cliente recebe. O problema é que preciso quebrar quando o arquivo ultrapassada 2MB.
[Ô]EmpresaXXX[ô]s virus protection has replaced attachment [Ô]anexo.zip0[Ô] with this text message. The original file was unscannable and was deleted.[Ô]
No caso, o anti-vÃrus está lendo a 1ª parte que tem o cabeçalho e nisso ele verifica que o tamanho não bate com o tamanho original, enquanto as outras partes são apenas dados binários, não contendo nenhum cabeçalho, o anti-vÃrus acaba deixando passar, é isso ou viajei?
Se eu enviar o arquivo zip completo, ou seja, sem estar quebrado, o cliente recebe. O problema é que preciso quebrar quando o arquivo ultrapassada 2MB.
Isso sem chance, tem que ter uma outra alternativa. Estou fazendo um teste para ver se consigo em enviar o arquivo zip quebrado, mas gerado pelo aplicativo 7-zip.
Ta, entao vamos pensar...
Zipa ele em um so arquivo e usa um algoritmo de divisao do conteudo em partes (aqui no site tem exemplos disso), voce vai fazer o split na mao, mas o conteudo nao seria barrado pois voce ja tem ele como ZIP passando pelo AV.
So de curiosidade, que raios de AV ta pegando isso ?
Zipa ele em um so arquivo e usa um algoritmo de divisao do conteudo em partes (aqui no site tem exemplos disso), voce vai fazer o split na mao, mas o conteudo nao seria barrado pois voce ja tem ele como ZIP passando pelo AV.
So de curiosidade, que raios de AV ta pegando isso ?
Hum, não entendi por que o conteudo não vai ser barrado.
Se for dividir o arquivo zip em partes utilizando a classe FileStream não funciona, pois é o que estou fazendo atualmente.
Se eu enviar o arquivo zip completo sem fazer o split funciona.
Quanto AV, tb estou curioso, o cliente está verificando para mim desde ontem. Pelo que ele sabe, são 3 AV, no qual eventualmente são alternados na verificação dos e-mails.
Se for dividir o arquivo zip em partes utilizando a classe FileStream não funciona, pois é o que estou fazendo atualmente.
Se eu enviar o arquivo zip completo sem fazer o split funciona.
Quanto AV, tb estou curioso, o cliente está verificando para mim desde ontem. Pelo que ele sabe, são 3 AV, no qual eventualmente são alternados na verificação dos e-mails.
Entao experimenta uma coisa...
Faz o split dos arquivos como voce esta fazendo e passa um base64 ou outro tipo de encriptacao para o arquivo e veja que o AV ainda barra, to suspeitando que ele esta lendo um comeco de cabecalho, vendo que nao tem fim e achando que isso eh virus. Outra coisa eh tentar com RAR para ver o que da (sei que voce esta fazendo via codigo, mas experimenta so para ver se encontra outra maneira de quebrar compactado para enviar)
Faz o split dos arquivos como voce esta fazendo e passa um base64 ou outro tipo de encriptacao para o arquivo e veja que o AV ainda barra, to suspeitando que ele esta lendo um comeco de cabecalho, vendo que nao tem fim e achando que isso eh virus. Outra coisa eh tentar com RAR para ver o que da (sei que voce esta fazendo via codigo, mas experimenta so para ver se encontra outra maneira de quebrar compactado para enviar)
Tópico encerrado , respostas não são mais permitidas