मैं एक जावा एप्लिकेशन कैसे चलाऊं जो 80 और 443 बंदरगाहों पर बांधना चाहता है?


0

ठीक है, तो मैं अपने लैपटॉप पर बारी, मेरे नियमित करने के लिए प्रवेश userखाते और खोलने के लिए / एक जावा आधारित, HTTP-प्रॉक्सी आवेदन बुलाया चलाने के लिए आगे बढ़ना burpके माध्यम से Terminal.app। यह सामान्य रूप से निष्पादित होता है लेकिन बंदरगाहों 80:httpऔर के साथ बांधने से इनकार करता है 443:https। मुझे लगता है कि त्रुटि विशेषाधिकार से संबंधित है तो मैं ..

user@MacBook-Pro:~$login
login:root
Password:********

.. असफल rootउपयोगकर्ता के रूप में लॉग इन करें और ..

root@MacBook-Pro:~#open /Users/user/Downloads/burpsuite_free_v1.6.01.jar

.. निम्नलिखित त्रुटि को पूरा करता है:

LSOpenURLsWithRole() failed with error -10810 for the file
/Users/user/Downloads/burpsuite_free_v1.6.01.jar.`

हालाँकि, मैं इस त्रुटि का पालन नहीं करता जब एक नियमित रूप में हस्ताक्षरित user; rootओएस एक्स के ग्राफिकल यूजर इंटरफेस के माध्यम से साइन इन करने पर न ही मैं इस त्रुटि को देखता हूं ।

मुझे यकीन है कि क्यों नहीं कर रहा हूँ burpबंदरगाहों के लिए बाध्य मना कर दिया 80:httpऔर 443:https। यदि ( chownस्वामित्व) और ( chmod) अनुमतियों के कारण यह केवल एक त्रुटि है ; मैंने सोचा होगा कि rootइस तरह की सीमाओं को पार करने के लिए उपयोग करना चाहिए था।

इस प्रश्न और उत्तर के आधार पर मैं देख सकता हूं कि LSOpenURLsWithRole()& का क्या error -10810मतलब है। मुझे यह त्रुटि इसलिए हो रही है क्योंकि .jarफ़ाइल कोई रन करने योग्य एप्लिकेशन नहीं है।

लेकिन मैं इसे कैसे ठीक करूं और इसे अपनी मशीन पर काम करूं?


LSOpenURLsWithRole () त्रुटि के साथ विफल -10810 निष्पाद्य होगा कि निष्पादन योग्य वास्तव में निष्पादन योग्य नहीं है, इसलिए हां, एक परमिट जारी करता है, हालांकि idk क्यों यह उस स्थिति में रूट के साथ काम नहीं करेगा।
तात्सुजिन

आपके कमेंट के लिए धन्यवाद। यह एक अजीब स्थिति है; कोई तर्क नहीं मानता। क्या मुझे कोई विवरण जोड़ना चाहिए? यह मेरा पहला प्रश्न है। मैंने यथासंभव पूरी कोशिश की।
tjt263

मैंने यह पाया - लेकिन मैं वास्तव में जावा से परिचित नहीं हूँ - Apple.stackexchange.com/questions/130587/…
Tetsujin

1
मैंने इस प्रश्न को बंद न करके आपको अधिक से अधिक अक्षांश दिया। एक तरफ पैदल सेना पर सभी राय, साइट नियम एक प्रश्न के बहुत व्यापक पूछने के बारे में स्पष्ट हैं। यदि आपके प्रश्न के कई मान्य उत्तर हैं, तो सहायता केंद्र देखें , यह शायद हमारे प्रारूप के लिए बहुत व्यापक है। ऐसा कोई कारण नहीं है कि # 3 और # 1 का उत्तर समान हो। अगर आप गिनें? आपने यहां 5 प्रश्न लोड किए हैं
bmike

1
Q & A यहां आपके प्रश्नों का उत्तर देता है "LSOpenURLsWithRole () और त्रुटि -10810 क्या हैं? / मुझे यह त्रुटि क्यों मिल रही है?" मैं इसे नीचे संपादित कर रहा हूँ बस "मैं इसे कैसे ठीक करूँ?" जैसा कि आप अभी जानना चाहते हैं, उसका वास्तविक दिल है।
इयान सी

जवाबों:


1

आप सामान्य रूप से, OS X पर कमांड का उपयोग करके एक .jarफ़ाइल (जो कि एक जावा आर्काइव फ़ाइल है ) चला सकते हैं। openयह एक निष्पादन योग्य फ़ाइल नहीं है, यह सिस्टम को इस बारे में कोई संकेत नहीं देता है कि इसे सामान्य रूप से कैसे चलाया जाना चाहिए, इसलिए openआपको दे रहा है LSOpenURLsWithRole()त्रुटि ऊपर दिखने वाला।

सबसे पहले, आपको अपने मैक पर जावा स्थापित करना होगा। ऐसा करने का सबसे आसान तरीका एक Terminal.appखिड़की खोलना है और टाइप करना है:

java -version

यदि वह एक जावा संस्करण इस प्रकार लौटाता है:

IanCsiMac:~ |ruby-2.1.5|
> java -version
java version "1.8.0_20"
Java(TM) SE Runtime Environment (build 1.8.0_20-b26)
Java HotSpot(TM) 64-Bit Server VM (build 25.20-b23, mixed mode)

हो गया। जावा उपयोग के लिए तैयार है। यदि जावा आपके सिस्टम पर मौजूद नहीं है, तो उस कमांड को चलाने से विंडो पूछेगा कि क्या आप इसे इंस्टॉल करना चाहते हैं। संकेतों का पालन करें और जब आप कर रहे हों, java -versionतो आपको कुछ ऐसा दिखाई देगा जैसा आप ऊपर देख रहे हैं। संस्करण अलग हो सकता है, लेकिन कमांड अब काम करेगा।

अब आपको कमांड .jarका उपयोग करके अपनी फ़ाइल चलाने की आवश्यकता है javajavaइस कार्य के लिए आपको आदेश में तीन विकल्प प्रदान करने की आवश्यकता है :

  1. -jarजो बताता है विकल्प javaआप एक जावा संग्रह फ़ाइल की सामग्री को चला रहे हैं;
  2. फॉर्म में जावा वर्चुअल मशीन के लिए एक मेमोरी विकल्प -Xmx1024m; और अंत में
  3. .jarडिस्क पर फ़ाइल का पथ ।

आपके डाउनलोड के लिए यह सब कुछ इस तरह दिखने वाला है:

java -jar -Xmx1024m /Users/user/Downloads/burpsuite_free_v1.6.01.jar

यह कार्यक्रम शुरू कर देगा यह अभी भी 80 और 443 बंदरगाहों पर बांधने में सक्षम नहीं होगा। वे संरक्षित बंदरगाह हैं। किसी भी मैक ओएस एक्स मशीन पर पोर्ट <1024 केवल प्रक्रियाओं के रूप में शुरू होने के लिए बाध्य हो सकते हैं root

प्रोग्राम को चलाने का सही तरीका है सूडो कमांडroot का उपयोग करना , न कि उपयोगकर्ता के रूप में । यह आपके कार्यों को नियंत्रण और अप्रत्यक्ष रूप से एक स्तर प्रदान करता है ताकि आप गलती से मूर्खतापूर्ण कुछ भी न करें जैसे कि बिना किसी संकेत के अगर आप सुनिश्चित करें कि आप ऐसा मूर्खतापूर्ण काम करना चाहते हैं।loginrootrm -rf /

तो, आपकी आज्ञा का अंतिम रूप होगा:

sudo java -jar -Xmx1024m /Users/user/Downloads/burpsuite_free_v1.6.01.jar

आपको अपने पासवर्ड के लिए संकेत दिया जाएगा और, यह मानते हुए कि कुछ और नहीं पहले से ही पोर्ट 80 और 443 के लिए बाध्य है, आपका आवेदन शुरू हो जाएगा और उन बंदरगाहों पर सुन रहा होगा।

यदि यह विफल हो जाता है क्योंकि यह 80 और 443 से बंध नहीं सकता है, तो आपको यह पता लगाने की आवश्यकता होगी कि वहां पहले से ही क्या है और इसे बंद कर दें। इसका पता लगाने के लिए आप lsof कमांड का उपयोग कर सकते हैं ।

पोर्ट 80 के लिए कॉल है:

sudo lsof -iTCP:80 -sTCP:LISTEN -n -P

443 के लिए यह है:

sudo lsof -iTCP:443 -sTCP:LISTEN -n -P

उस कमांड से आउटपुट, यह मानते हुए कि पोर्ट पर कुछ सुन रहा है, कुछ इस तरह दिखेगा:

> sudo lsof -iTCP:80 -sTCP:LISTEN -n -P
COMMAND PID USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
nginx    50 root    9u  IPv6 0x8978b255ac4ef0b7      0t0  TCP *:80 (LISTEN)

जैसा कि आप देख सकते हैं, मेरे पास एक प्रक्रिया है जिसका नाम nginxश्रवण पोर्ट 80 है। इसकी प्रक्रिया आईडी 50 है।

मैं उस प्रक्रिया को मार सकता हूं:

sudo pkill nginx

यह जरूरी नहीं है कि यह कोशिश नहीं करेगा और वापस आने के लिए नहीं, लेकिन पूरी तरह से और पूरी तरह से पूरी तरह से अलग साइट पर अलग सवाल के रूप में कहा गया है।


मुझे ऐसा नहीं लगता। जावा सिस्टम पर मौजूद है और अद्यतित है। इसके अलावा, अगर मैं GUI के माध्यम से रूट के रूप में लॉगिन करता हूं तो सभी पोर्ट ठीक काम करते हैं। लेकिन अगर मैं GUI के माध्यम से अपने नियमित खाते के रूप में लॉग इन करता हूं तो पोर्ट में समस्याएँ हैं, यहां तक ​​कि sudo के साथ भी। मुझे केवल तभी LSOpenURLsWithRole() & error -10810संदेश मिलता है यदि मैं GUI के माध्यम से एक नियमित उपयोगकर्ता के रूप में लॉग इन करता हूं और फिर CLI के माध्यम से रूट के रूप में लॉगिन करता हूं (मूल रूप से, मैंने केवल यह केवल जिज्ञासा से बाहर किया था और समस्या निवारण के लिए)। इन सभी मामलों में; openआदेश पर अमल करने के लिए पर्याप्त था .jar और इन सभी मामलों में; वहाँ वास्तव में कुछ भी नहीं है सवाल में बंदरगाहों के लिए बाध्य है। इसलिए यह अजीब है।
tjt263
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.