के साथ समस्याएं मैंने this article में उल्लिखित सिद्धांतों का उपयोग करके पायथन 3 में फ़ायरवॉल के लिए एक मूल टीसीपी छेद पंचर लिखने का प्रयास किया है। हालांकि, मुझे कनेक्ट करने के लिए कुछ भी परेशानी हो रही है।टीसीपी छेद पंचिंग
#!/usr/bin/python3
import sys
import socket
import _thread as thread
def client():
c = socket.socket()
c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
c.bind((socket.gethostbyname(socket.gethostname()), int(sys.argv[3])))
while(c.connect_ex((sys.argv[1], int(sys.argv[2])))):
pass
print("connected!")
thread.interrupt_main()
def server():
c = socket.socket()
c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
c.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, 1)
c.bind((socket.gethostbyname(socket.gethostname()), int(sys.argv[3])))
c.listen(5)
c.accept()
print("connected!")
thread.interrupt_main()
def main():
thread.start_new_thread(client,())
thread.start_new_thread(server,())
while True:
pass
if __name__ == '__main__':
main()
मैं अपने स्थानीय मशीन पर पंचर की कोशिश करने के लिए इतना है कि मैं सभी यातायात दोनों मामलों द्वारा भेजे ले सकता है फैसला किया: यहाँ कोड है।
left$ ./tcphole.py localhost 20012 20011
और
right$ ./tcphole.py localhost 20011 20012
मैं करने के लिए Wireshark कि SYN पैकेट हैं अनुसार देख सकते हैं:
iptables -A INPUT -i lo -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j DROP
तो मैं स्क्रिप्ट की दो प्रतियां का शुभारंभ: मैं पहली बार एक लूपबैक फ़ायरवॉल की स्थापना दोनों तरीकों से प्रसारित किया जा रहा है:
लेकिन कुछ भी कभी भी "कनेक्ट" प्रिंट नहीं करता है! मैं क्या गलत कर रहा हूं?
रुको, क्या आपके फ़ायरवॉल नियम नहीं होंगे (विशेष रूप से, नियम # 2) 'लो' पर आने वाले' SYN' पैकेट ड्रॉप करें? आपके उदाहरण में कोई "स्थापित" या "संबंधित" कनेक्शन नहीं हैं, है ना? – NPE
हां, यह वही व्यवहार है जो मैं आसपास काम करने की कोशिश कर रहा हूं। (फ़ायरवॉल इस मामले में विरोधी है।) एसईएन पैकेट को संबंधित के रूप में पहचाना जाना चाहिए, हालांकि इसे वापस करना चाहिए। – thirtythreeforty
और थोड़ी देर के लिए मैंने देखा है कि सबसे पूर्ण और स्पष्ट रूप से स्पष्ट प्रश्नों में से एक के लिए धन्यवाद। (+1) – NPE