คำถามติดแท็ก netcat

Netcat เป็นบริการเครือข่ายคอมพิวเตอร์สำหรับการอ่านและเขียนการเชื่อมต่อเครือข่ายโดยใช้ TCP หรือ UDP

4
netcat จะรู้ได้อย่างไรว่าพอร์ต UDP เปิดอยู่?
ดังนั้นฉันสามารถใช้คำสั่ง netcat นี้เพื่อตรวจสอบว่าพอร์ต UDP เปิดอยู่หรือไม่: $ nc -vz -u 10.1.0.100 53 Connection to 10.1.0.100 53 port [udp/domain] succeeded! ซึ่งแตกต่างจาก TCP, UDP คือการเชื่อมต่อ (ไฟและลืม) ดังนั้นในระดับสูงไม่มีใครรู้ว่า netcat รู้พอร์ต UDP เปิดอย่างไร มันขอคำตอบหรืออะไรแบบนั้น?
49 netcat  udp 

4
แปลงสตริงฐานสิบหกเป็นไบนารีและส่งด้วย netcat
ฉันมีไฟล์ไบนารีที่ฉันสามารถส่งด้วยnetcat: $ nc -l localhost 8181 < my.dat ไฟล์นี้ประกอบด้วย: $ xxd my.dat 0000000: 0006 3030 3030 4e43 ..0000NC สิ่งที่ฉันต้องการทำจริงๆคือส่งสตริง hex โดยตรง ฉันเคยลองแล้ว: $ echo '0006303030304e43' | nc -l localhost 8181 อย่างไรก็ตามคำสั่งดังกล่าวเป็นเพียงแค่ส่งสตริง ASCII ncโดยตรง
46 linux  binary  netcat 

4
/ dev / tcp ฟังแทนฟัง nc
ด้วยผู้ฟัง netcat เช่น: nc -l <port> < ~/.bashrc ฉันสามารถคว้า. bashrc ของฉันบนเครื่องใหม่ (ไม่มีncหรือ LDAP) ด้วย: cat < /dev/tcp/<ip>/<port> > ~/.bashrc คำถามของฉันคือ: มีวิธีที่จะเลียนแบบความสามารถของnc -l <port>ในบรรทัดแรกของฉันด้วย / dev / tcp แทนที่จะเป็นnc? เครื่องที่ฉันทำงานอยู่นั้นมีสภาพแวดล้อมของห้องแล็บ / แซนด์บ็อกซ์ที่แข็งมาก RHEL (ไม่มี ssh, no nc, ไม่มี LDAP, yum, ฉันไม่สามารถติดตั้งซอฟต์แวร์ใหม่และพวกเขาไม่ได้เชื่อมต่อกับอินเทอร์เน็ต)

2
อะไรคือความแตกต่างระหว่าง ncat, nc และ netcat?
ผมไม่แน่ใจว่าเกี่ยวกับเมื่อใช้nc, หรือnetcat ncatหากหนึ่งเป็นรุ่นที่เลิกใช้ของคนอื่น? ถ้ามีเพียงหนึ่งเดียวในการกระจายเท่านั้น ถ้ามันเป็นคำสั่งเดียวกัน แต่มีชื่อแตกต่างกันอย่างไร จริงๆแล้วฉันสับสนเล็กน้อย คำถามของฉันมาจากการที่ต้องการทดสอบความเร็วเครือข่ายระหว่างเซิร์ฟเวอร์ CentOS 7 สองเครื่อง ฉันมาข้ามหลายตัวอย่างการใช้ncและddแต่ไม่มากใช้หรือnetcatncat ใครช่วยอธิบายเรื่องนี้ให้ฉันหน่อยได้ไหม?
20 centos  netcat  nc 

1
ไม่มีเส้นทางไปยังโฮสต์ด้วย nc แต่สามารถ ping ได้
ฉันกำลังพยายามเชื่อมต่อกับพอร์ต 25 กับ netcat จากเครื่องเสมือนหนึ่งไปยังอีกเครื่องหนึ่ง แต่กำลังบอกฉันno route to hostแม้ว่าฉันจะสามารถ ping ได้ ฉันมีการตั้งค่านโยบายเริ่มต้นของไฟร์วอลล์ของฉันที่จะลดลง แต่ฉันมีข้อยกเว้นที่จะยอมรับปริมาณการใช้งานสำหรับพอร์ต 25 ในเครือข่ายย่อยที่เฉพาะเจาะจงนั้น ฉันสามารถเชื่อมต่อจาก VM 3 ถึง VM 2 บนพอร์ต 25 ด้วย nc แต่ไม่ใช่จาก VM 2 ถึง 3 นี่เป็นตัวอย่างของกฎไฟร์วอลล์ของฉันสำหรับ VM2 นี่เป็นตัวอย่างของกฎไฟร์วอลล์ของฉันสำหรับ VM 3 เมื่อฉันแสดงบริการฟังฉันมี*:25ซึ่งหมายความว่ามันกำลังฟังที่อยู่ ipv4 ทั้งหมดและ:::25ที่อยู่ ipv6 ฉันไม่เข้าใจว่าข้อผิดพลาดอยู่ที่ใดและทำไมไม่ทำงานทั้งกฎของไฟร์วอลล์ยอมรับการรับส่งข้อมูลบนพอร์ต 25 ดังนั้นจึงควรทำการเชื่อมต่อ ฉันลองเปรียบเทียบความแตกต่างระหว่างทั้งสองเพื่อดูว่าทำไมฉันสามารถเชื่อมต่อจาก vm3 กับ vm2 ได้ แต่การตั้งค่าเหมือนกันทั้งหมด ข้อเสนอแนะใด ๆ …

1
ใช้ netcat สำหรับการส่งต่อพอร์ต
ฉันมีกระบวนการที่คอยรับฟังIP:portในความเป็นจริงมันเป็น spark สตรีมมิ่งที่เชื่อมต่อกับซ็อกเก็ต ปัญหาคือฉันต้องการสร้างเซิร์ฟเวอร์ที่เชื่อมต่อเพื่อจุดประกายบนพอร์ตหนึ่งและข้อมูลจะถูกสตรีมไปยังเซิร์ฟเวอร์นี้จากพอร์ตอื่น ตัวอย่างเช่นตัวอย่างการสตรีมแบบ spark ใช้ยูทิลิตี netcat (ตัวอย่างnc -lk 5005) อย่างไรก็ตามฉันมีบริการอื่นที่รับฟังข้อความที่เข้ามาจากนั้นคายข้อความ ดังนั้นฉันต้องการเซิร์ฟเวอร์บางประเภทที่สามารถฟังข้อความจากบริการ A และส่งต่อไปยังประกายไฟ บริการของฉัน A พึ่งพาซ็อกเก็ต และผู้บริโภคที่เป็นประกายของฉันอาศัยซ็อกเก็ต นี่คือสิ่งที่ฉันได้ทำไปแล้วจนถึงตอนนี้คือการส่งต่อจากพอร์ตหนึ่งไปอีกพอร์ต แต่ดูเหมือนจะไม่ทำงาน: nc -X 4 -x 127.0.0.1:5005 localhost 5006 ด้วยแนวคิดที่ว่าบริการA:5005-> ซ็อกเก็ต -> 5006-> Spark ฉันไม่สามารถหาวิธีที่ถูกต้องในการทำงานนี้ คำตอบบางข้อเสนอแนะต่อไปนี้: socat tcp-l:5005,fork,reuseaddr tcp:127.0.0.1:5006 ผู้รับซ็อกเก็ต Spark ของฉันไม่ได้หรือไม่สามารถเชื่อมต่อได้ ฉันได้รับข้อผิดพลาด:Error connecting to 127.0.0.1:5006 - java.net.ConnectException: Connection refused
20 linux  networking  netcat  nc 

3
ฉันจะสร้างแพ็กเก็ต UDP ได้อย่างไร
เมื่อฉันทำคำสั่ง Netcat ต่อไปนี้และดูแพ็กเก็ตด้วยWiresharkมันบอกว่าแพ็คเก็ต UDP ผิดรูปแบบ $ echo "this is a test" | nc -u 127.0.0.1 53 ในทำนองเดียวกันการใช้คำสั่งเช่น$ echo "this is a test" > /dev/udp/127.0.0.1/53สร้างข้อผิดพลาด "แพ็คเก็ตผิดรูปแบบ" ใน Wireshark คำสั่ง echo จะถูกส่ง / ส่งไปยังเซิร์ฟเวอร์ Netcat โดยไม่มีข้อผิดพลาด แต่สิ่งนี้ทำให้ฉันสงสัยว่า: เป็นไปได้หรือไม่ที่จะสร้างแพ็กเก็ต UDP ที่เหมาะสมด้วยตนเองด้วย echo หรือเครื่องมือ Unix ดั้งเดิมอื่น ๆ ? ฉันใช้ Debian และ macOS
15 linux  debian  osx  netcat  udp 

3
ใช้เข้า / ออกชื่อไปป์สำหรับการเชื่อมต่อ TCP
ฉันเล่นซอให้เรื่องนี้ทำงานได้ซักพักแล้วดังนั้นฉันจึงสงสัยว่าความเข้าใจผิดพื้นฐานบางอย่างเกี่ยวกับการทำงานของท่อเป็นสาเหตุของปัญหาของฉัน เป้าหมายของฉันคือการเริ่มต้นการเชื่อมต่อ TCP ไปยังรีโมตโฮสต์ผ่านnetcatและมีไพพ์ที่มีชื่อสองไฟล์ในระบบไฟล์: กระบวนการหนึ่งที่กระบวนการสามารถอ่านเพื่อรับข้อมูลขาเข้าและอื่น ๆ ที่กระบวนการสามารถเขียนไปยังข้อมูลขาออก ฉันกำลังใช้สิ่งก่อสร้างต่อไปนี้: mkfifo in mkfifo out cat out | netcat foo.bar.org 4000 > in & จากที่นี่ฉันต้องการอนุญาตให้กระบวนการอื่นอ่านและเขียนไปยัง / จากการเชื่อมต่อ TCP แบบเปิดนี้ ควร "ใช้งานได้" หรือมีเหตุผลว่าทำไมการสร้างเช่นนี้ไม่สามารถใช้งานได้? สิ่งที่ดูเหมือนจะเกิดขึ้นในปัจจุบันคือฉันสามารถอ่านได้outโดยไม่มีปัญหา แต่เมื่อฉันเขียนถึงinฉันรับเอาท์พุทพูดถึงท่อที่ขาดและการสื่อสารที่ตามมาทั้งหมดดูเหมือนจะตาย คิด? (ที่เกี่ยวข้อง: ฉันใช้มา แต่เดิม: netcat foo.bar.org 4000 < out > in & แต่พบว่ามันบล็อกการรอการป้อนข้อมูล ฉันอยากรู้เกี่ยวกับสิ่งนี้เช่นกัน แต่มันอาจจะดีกว่าในคำถามที่แยกต่างหาก)
15 bash  pipe  tcp  netcat 

5
วิธีที่ง่ายที่สุดในการส่งไฟล์ผ่านเครือข่าย
วิธีที่ง่ายและหลากหลายที่สุดในการส่งไฟล์ผ่านเครือข่ายไปยังคอมพิวเตอร์เครื่องอื่นคืออะไร? โดยที่ฉันหมายถึงคอมพิวเตอร์ที่คนอื่นใช้อยู่ในขณะนี้ ฉันไม่คิดว่า SSH จะทำงานหากคอมพิวเตอร์เปิดใช้งานเซสชันอยู่ จนถึงตอนนี้ฉันใช้netcatซึ่งใช้งานได้ดี แต่มีวิธีอื่นที่ง่ายในการทำเช่นนี้? ปัญหาหนึ่งที่ฉันมีnetcatคือผู้รับต้องทราบว่าไฟล์ลงท้ายและต้องมีชื่อสำหรับสตรีม

2
เดสก์ท็อประยะไกลผ่านอุโมงค์ย้อนกลับ SSH เพื่อแทนที่ TeamViewer
ฉันต้องการเปิดเซสชันเดสก์ท็อประยะไกลจากแล็ปท็อปของฉันไปยังเดสก์ท็อปผ่านอุโมงค์ SSH (ย้อนกลับ) ของฉัน นั่นควรจะง่าย (หรืออย่างน้อยก็ทำได้) ใช่ไหม? จนถึงตอนนี้ฉันใช้ Team Viewer เพื่อเข้าสู่เดสก์ท็อประยะไกล ฉันต้องการได้ผลลัพธ์ที่คล้ายกันโดยไม่มี Team Viewer นี่คือลักษณะ SSH อุโมงค์ของฉัน: laptop--->nat--->middleman<--nat<--desktop ทุกเครื่องใช้ลีนุกซ์ (ส่วนใหญ่เป็น Ubuntu 12.04 หรือ OpenSuse 12.3) ฉันไม่สามารถเปลี่ยนพอร์ตใด ๆ หรือทำการเปลี่ยนแปลงการกำหนดค่าใด ๆ บนเราเตอร์ nat ฉันจะอธิบายอุโมงค์ SSH ของฉันเพราะความเข้าใจที่ดูเหมือนมีความจำเป็นในการแก้ปัญหา VNC / เดสก์ท็อประยะไกลที่เป็นหัวใจของคำถามของฉัน เกี่ยวกับขานี้: middleman<--nat<--desktop ... นี่คือวิธีการจัดตั้ง: autossh -M 5234 -N -f -R 1234:localhost:22 user@middleman.com เกี่ยวกับขานี้: …

1
ความเร็ว SSH ได้รับการปรับปรุงอย่างมากผ่าน ProxyCommand - แต่ทำไม?
เวอร์ชัน TL; DR รับชม ASCII นักแสดงหรือวิดีโอนี้ - จากนั้นมาด้วยเหตุผลใด ๆ ว่าทำไมสิ่งนี้จึงเกิดขึ้น คำอธิบายข้อความที่ตามมาให้บริบทเพิ่มเติม รายละเอียดของการตั้งค่า Machine 1 เป็นแล็ปท็อป Arch Linux ที่sshวางไข่เชื่อมต่อกับ SBC ที่ทำงานโดย Armbian (Orange PI Zero) SBC นั้นเชื่อมต่อผ่านอีเธอร์เน็ตไปยังเราเตอร์ DSL และมี IP 192.168.1.150 แล็ปท็อปเชื่อมต่อกับเราเตอร์ผ่าน WiFi - ใช้ดองเกิล Raspberry PI WiFi อย่างเป็นทางการ นอกจากนี้ยังมีแล็ปท็อปอีกเครื่อง (Machine 2) เชื่อมต่อผ่านอีเธอร์เน็ตไปยังเราเตอร์ DSL การเปรียบเทียบการเชื่อมโยงกับ iperf3 เมื่อเทียบกับการiperf3เชื่อมโยงระหว่างแล็ปท็อปและ SBC น้อยกว่าทฤษฎีที่ 56 Mbits …
14 ssh  networking  netcat 

1
ตัวเลือกเทียบเท่า '-z' ของ gnu-netcat ใน nmap-ncat คืออะไร?
ฉันจะตรวจสอบพอร์ตฟังบนบริการก่อนที่จะเรียกใช้สคริปต์โดยใช้สิ่งนี้: until nc -z $HOST $PORT do echo "waiting for service to be available..." sleep 0.5 done exec "/my/script" มันเคยทำงานกับ gnu-netcat แต่ตอนนี้ฉันได้อัพเกรดการกระจาย Linux และใช้ nmap-ncat สำหรับ/usr/bin/ncคำสั่ง ฉันต้องการทราบวิธีแก้ปัญหาที่เทียบเท่าเพื่อใช้กับnmap-ncatแพ็คเกจ
13 netcat  nmap 

2
Netcat - วิธีการฟังพอร์ต TCP โดยใช้ที่อยู่ IPv6
ฉันใช้ netcat รุ่นล่าสุด ( v1.10-41.1) ซึ่งดูเหมือนจะไม่มีตัวเลือกสำหรับที่อยู่ IPv6 (เหมือน-6ในรุ่นที่เก่ากว่าnc) หากฉันพิมพ์nc -lvnp 2222และตรวจสอบพอร์ตการฟังด้วยnetstat -puntaเซิร์ฟเวอร์ดูเหมือนว่าจะฟังบนพอร์ต2222สำหรับที่อยู่ IPv4 เท่านั้น: tcp 0 0 0.0.0.0:2222 0.0.0.0:* LISTEN 2839/nc tcp6 ไม่ทำงานเช่นเซิร์ฟเวอร์ apache2 ของฉัน: tcp6 0 0 :::80 :::* LISTEN -
13 linux  netcat 

1
netcat ในเชลล์สคริปต์ให้การเชื่อมต่อที่ไม่ถูกต้อง
ฉันมีเชลล์สคริปต์ที่ใช้netcatเพื่อฟังlocalhostบนพอร์ต 1111 สำหรับคำขอเว็บ ทุกครั้งที่ฉันลองเข้าถึงlocalhost:1111/index.htmlเช่นฉันจะได้รับ: invalid connection to [127.0.0.1] from localhost [127.0.0.1] 60038 จำนวนที่สิ้นสุด (60,038) localhostดูเหมือนว่าจะเพิ่มขึ้นทุกเวลาเข้าถึงฉัน ข้อเสนอแนะใด ๆ เกี่ยวกับสิ่งที่ผิดปกติ? และdefault localhostไดเรกทอรีคืออะไร? ฉันควรใส่index.htmlเพื่อที่localhost:1111/index.htmlจะทำงานอย่างไร แก้ไข นี่คือสคริปต์แบบเต็ม: #!/bin/sh while true do netcat -vvl localhost -p 1111 -c ' set -x read http_request echo HTTP/1.0 200 OK echo echo "Received HTTP request: $http_request" ' done

7
วิธี grep เอาต์พุต netcat
ฉันพยายามที่จะ grep สตรีมข้อความสดจากnetcatแต่มันไม่ได้ผลสำหรับฉัน: netcat localhost 9090 | grep sender ไม่มีอะไรคืน แต่ฉันแน่ใจว่ามันควร ถ้าฉันเปลี่ยนเส้นทางnetcatผลลัพธ์ไปยังไฟล์และเพิ่มความล่าช้า (จำลองสภาพแวดล้อมจริง) - จากนั้นก็ใช้งานได้: $ (sleep 5; cat netcat_output; sleep 5) | grep sender {"jsonrpc":"2.0","method":"GUI.OnScreensaverDeactivated","params":{"data": "shuttingdown":false},"sender":"xbmc"}} ฉันพยายามเพิ่ม--line-bufferedแต่ไม่ประสบความสำเร็จ ฉันทำอะไรผิด แก้ไข: ฉันสังเกตเห็นปัญหาเดียวกันกับsedผลลัพธ์ที่ว่างเปล่า แต่ตัวอย่างเช่นhexdumpแปลงข้อความเป็น hex live: $ netcat localhost 9090 | hexdump -C 00000000 7b 22 6a 73 6f 6e 72 70 …
13 grep  netcat 

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.