.zip
Windows에서 WinRAR을 사용하여 파일을 작성합니다. 메일이나 다른 일반적인 방법으로 파일을 전송하면 Linux와 Windows에서 파일을 열고 추출 할 수 있습니다.
그러나 Netcat을 통해 전송하면 zip 파일이 손상됩니다.
Linux에서으로 netcatted 파일을 추출하려고하면 7z
다음과 같은 오류가 발생합니다.
Open ERROR: Can not open the file as [zip] archive WARNINGS: Headers Error: There are data after the end of archive
동일한 netcatted zip 파일을 다시 창으로 이동하여 열려고하면 오류가 발생합니다.
The archive is either in unknown format or damaged.
해당 zip 파일에는 파일이 들어있는 폴더가 있습니다.
내 리눅스 머신은 청취자입니다. 나는이 netcat 솔루션을 사용했습니다 : 여기
나는 그것이 문제가 될 수 있다고 생각했기 때문에 기본 솔루션을 사용했습니다.
리스너 (Linux) :
nc -lp PORT > file.zip
발신자 (Windows, PowerShell) :
Get-Content ZIP_FILE | ./Netcat32 IP PORT
여전히 작동하지 않습니다.
텍스트 파일을 전송하는 데 아무런 문제가 없었으며 압축 파일 만 있으면됩니다.
아래는 동일한 2 개의 zip 파일을 비교 한 것으로, 왼쪽 파일은 netcat을 통해 전송되며 (Linux 또는 Windows에서 열 수 없음), 오른쪽 파일은 메일을 통해 전송됩니다 (둘 다 열 수 있음). 그들은에서 개설되었습니다 gedit
.
내가 뭘 잘못하고 어떻게 작동하게합니까?
편집 : Kamil Maciorowski에 따르면 Powercat, Windows 에서이 코드를 사용하여 netcat를 통해 zip 파일을 바이트 스트림으로 보내려고했습니다.
#Sender:
$contents=Get-Content -Encoding Byte -ReadCount 0 ./file.zip
echo $contents | ./NetCat32 IP PORT
이제 리눅스 컴퓨터에는 원래 크기의 6 배 (문제 없음)의 zip 파일이 있으며 그 내용은 각 줄 바꿈에 1-3 자리 숫자입니다. (그러나 -ReadCount 0 태그를 사용했기 때문에 모두 한 줄에 있지 않아야합니까? (-ReadCount 여기 참조 )
그 파일을 열 수 없습니다. 그것을 추출하려고하면 "아카이브가 아닙니다"라는 오류가 발생합니다.
"file.zip"의 파일 형식을 보려면 Linux 명령 파일 을 입력 하십시오. "ASCII TEXT, with CRLF line terminators"
편집 2 :
나는 다른 리눅스 (클라이언트)를 부팅하고 원래 Windows에서 생성 된 SAME 문제가있는 zip 파일을 전송하려고 시도했지만 문제없이 작동했습니다.
Windows로 다시 부팅하고 cmd.exe에서 다음 명령을 시도했습니다.
type file.zip | Netcat32.exe IP PORT
Netcat32.exe IP PORT < file.zip
둘 다 일했다 ...
나는 powershell에서 같은 것을 시도했다. 사용 get-content
가능한 모든 인코딩 유형 (unknown, utf8, unicode ...)을 사용해 보았습니다 . 성공하지 못했습니다.
...
문제는 powershell과 자체 cat
명령 동의어 ( gc, get-content, type, cat
)에있는 것 같습니다.
cmd.exe를 통해 명령을 실행해야하지만 가능하면 powershell 내에서 cmd.exe 명령을 실행하고 싶습니다.
현재 작동하는 솔루션은 powershell 내부에서 호출되는 전체 명령으로 .bat 파일을 만드는 것입니다 ...하지만 더 깨끗한 옵션을 갖게되어 기쁩니다.
편집 3 : .bat 파일이 필요하지 않습니다 ...에 문제가 invoke-command, invoke-expression, start-job
있었지만이 명령은 성공적으로 작동했습니다.
Start-Process cmd -ArgumentList " /c type file.zip | Netcat32.exe IP PORT"
Powershell Get-Content
명령이 작동 하는 데 문제가 있어서 cmd.exe에서 솔루션을 사용해야했습니다.
질문에 대답하기 전에 Powershell 솔루션을 1-2 일 동안 기다릴 것입니다.
netcat
가능한 한 간단합니다. 바이트 스트림을 가져 와서 네트워크 (또는 다른 방법으로)를 통과시킵니다. 이 경우 PowerShell은 이진 데이터를 전달하는 대신 똑똑하거나 무언가를하려고합니다. 그러나 아마도 내가 아는 도구 와 는 다를 것입니다. 아니면 올바른 방법을 모를 수도 있습니다. Samba 또는 SFTP와 같은 본격적인 파일 공유 / 전송 프로토콜을 사용할 수 있습니까?