কোনও মোবাইল ডিভাইস যখন কোনও হোম ওয়াইফাই নেটওয়ার্কের সাথে সংযুক্ত হয় তখন কীভাবে সনাক্ত করবেন?


10

কোনও নির্দিষ্ট মোবাইল ডিভাইস (সেল ফোন, আইপ্যাড, ইত্যাদি) নেটওয়ার্কের সাথে সংযোগ স্থাপন করার পরে (অবশ্যই ওয়্যারলেস) সার্ভারটি সনাক্ত করার সর্বোত্তম উপায় কী হবে?

উদাহরণস্বরূপ পরিস্থিতি হিসাবে, কোনও ব্যক্তির তার মোবাইল ফোনে তার হোম ওয়াইফাই নেটওয়ার্কটি সঠিকভাবে কনফিগার করা আছে। যখন সে রাউটারের সীমার মধ্যে চলে আসে তখন এটি সংযুক্ত হয়ে যায় (এটি সম্পর্কে নতুন কিছু নয়)। এই রাউটারের সাথে সংযোগ স্থাপনের পরে, তার হোম সার্ভারটি একটি নির্দিষ্ট প্রোগ্রাম চালু করবে (বা কোনও বিজ্ঞপ্তি ছুঁড়ে, কোনও ফাইলে লিখবে, ইত্যাদি)।

আমি ভেবেছিলাম যে একটি সম্ভাব্য সমাধান হ'ল একটি নেটওয়ার্ক-হোস্টেড কাস্টম "ওয়েব অ্যাপ্লিকেশন" যা ফোন থেকে চালু করা হবে যাতে সার্ভারটি সনাক্ত করতে পারে যে পৃষ্ঠাটি কল করা হয়েছিল। যাইহোক, ফোনটি স্বয়ংক্রিয়ভাবে সংযোগ স্থাপনের সময় যদি এটি করা যায়, তবে এটি সর্বোত্তম।

কোনও চিন্তা বা বিকল্প সমাধান ব্যাপকভাবে প্রশংসা করা হবে, তাই অগ্রিম ধন্যবাদ!


যদি এটি একটি অ্যান্ড্রয়েড ফোন হয় তবে কোনও স্থানীয় ওয়েবসাইটের জন্য ক্রোন জবটি সহজ কাজ হবে eas নেটওয়ার্ক দিক থেকে এটি করতে আপনাকে RADIUS প্রোটোকল ব্যবহার করতে হবে এবং সঠিকভাবে RADIUS সার্ভার স্থাপন করতে হবে।
হাকল

কেন কেবল আপনার রাউটার লগগুলি পর্যালোচনা করবেন না। যেহেতু এই লগগুলি পাঠ্য ভিত্তিক, লগগুলি জিজ্ঞাসা করা এবং আপনার প্রয়োজনীয় তথ্যগুলি পাওয়া সহজ হবে। অবশ্যই কেউ এটি করার জন্য কোড লিখেছেন তবে তা না হলে এটি একটি সাধারণ অনুশীলন হবে।

উত্তর:


4

আমি মনে করি এটি সহজেই সম্পন্ন করা যায় arp-scan

ইনস্টল করুন arp-scan: sudo apt-get install arp-scan
স্থানীয় নেটওয়ার্কে সমস্ত হোস্ট সনাক্ত করুন :sudo arp-scan -l

আপনি পর্যায়ক্রমে একটি ক্রন্টব সেটআপ করতে পারেন (প্রতি 2 মিনিট পরে হতে পারে) একটি স্ক্রিপ্ট চালাতে যা আরপ-স্ক্যান দিয়ে নেটওয়ার্কটি স্ক্যান করে এবং সক্রিয় হোস্টগুলি আবিষ্কার করার জন্য এর আউটপুটকে বিশ্লেষণ করে।

কখনও কখনও আমার -r 3পতাকাটির প্রয়োজন হয় যা এটি তিনবার চালিত হয়; ডিফল্ট হিসাবে 2 বার অনেক বেশি ভাল কাজ করে যা কখনও কখনও কিছু ডিভাইস মিস করে। এভাবে:

 sudo arp-scan -l -r 3 | grep {Phone Static Assigned IP} 

LG V30 + এ আমার জন্য আরও ভাল কাজ করে।


এটি লক্ষ্য করা উচিত যে কিছু ডিভাইসগুলি চালু না করা পর্যন্ত প্রদর্শিত না হতে পারে। স্ক্রিনটি চালু না হলে আমার নেক্সাস 4 প্রদর্শিত হবে না।
নিকোলাস বাউলিয়ান

3
import subprocess

if __name__ == '__main__':
    while True:
        sleep(5)
        p = subprocess.Popen("arp-scan -l | grep xx:xx:xx:xx:xx:xx", stdout=subprocess.PIPE, shell=True)
        (output, err) = p.communicate()
        p_status = p.wait()
        if output:
            print "Yay, the devine is connected to your network!"
        else:
            print "The device is not present!"

এইভাবে আপনি আপনার ডিভাইসের ম্যাকের জন্য স্ক্যান করতে পারেন :)


2

আমি নীচের প্রয়োজনীয়তা পূরণ করে যে এর জন্য একটি সমাধান বাস্তবায়নের চিন্তা করছি:

  1. ফোনে নেটওয়ার্কে আইপি ঠিকানা বরাদ্দ থাকা দরকার নেই।
  2. ফোনটি পর্যায়ক্রমে এমন সংকেত পাঠানোর প্রয়োজন হয় না যা এর ব্যাটারিটি নিকাশ করে।
  3. নেটওয়ার্কে যদি অনেকগুলি ফোন থাকে তবে সেগুলির সমস্ত সনাক্ত করা হবে।

আমার উদ্দেশ্য হ'ল ফোনের ফাইল সিস্টেমটি এসএসএসের সাহায্যে মাউন্ট করা, তবে এটি যা কিছুতেই ব্যবহৃত হতে পারে।

ধরা যাক স্থানীয় নেটওয়ার্কটি 192.168.1.0 ...

তাই আমি একটি অ্যাপ্লিকেশন বাস্তবায়ন হবে এর ফলে UDP কথা শোনে সম্প্রচারের ঠিকানা থেকে সম্প্রচারের: 192.168.1.255। এই অ্যাপ্লিকেশনটি সম্পূর্ণ প্যাসিভ হওয়ায় ব্যাটারি নিষ্কাশন করবে না। (কোনও প্যাকেট প্রাপ্ত হলে এটি সক্রিয় হয়) received

কম্পিউটারে একটি ডিমন পর্যায়ক্রমে সম্প্রচারের ঠিকানায় সম্প্রচার প্রেরণ করবে 192.168.1.255। ফোন তার নাম, আইডি, আইপি ঠিকানা ইত্যাদি দিয়ে এই জাতীয় সংকেতগুলিতে জবাব দেবে

এখন কম্পিউটারটি জানে যে ফোনটি নেটওয়ার্কে বিদ্যমান এবং আমার ক্ষেত্রে sshfs মাউন্টটি আহ্বান করতে পারে।

অবশ্যই এটি প্রোগ্রামিংয়ের কাজ সহ অনেক কাজ প্রয়োজন, এবং সহজ নয়। তবে আমি মনে করি এটি সবচেয়ে নির্ভরযোগ্য এবং যুক্তিসঙ্গত সমাধান হবে solution


1
বাহ, সুতরাং মূলত একটি কাস্টম প্রোটোকল ... কেউ ভাবেন যে ইতিমধ্যে এরকম কিছু থাকবে।
মাইকেল

1

আমি সবচেয়ে ভাল উপায়টি ভাবতে চাইছি হ'ল ডিভাইসটিকে একটি স্ট্যাটিক আইপি ঠিকানা দেওয়া, এবং প্রতি এক্স সেকেন্ডে ডিভাইসটিকে পিং করার জন্য একটি সহজ স্ক্রিপ্ট ব্যবহার করা এবং আপনার প্রোগ্রাম / বিজ্ঞপ্তিটি ট্রিগার করা।

লক্ষণীয় বিষয়: ঘুম থেকে ওঠার আগে পর্যন্ত অনেকগুলি ফোন ওয়াইফাই নেটওয়ার্কের সাথে সংযুক্ত থাকে না। আপনার স্ক্রিপ্টটিতে সম্ভবত দিনের সময় বিবেচনা করে ঘুমোতে যাওয়া ফোন এবং ফোনটি ঘর থেকে বের হওয়া ফোনের মধ্যে পার্থক্য জানাতে সক্ষম হবে। এর পরে, স্ক্রিপ্টটি চালানোর জন্য কোনও প্রোগ্রাম চালানো বা একটি বিজ্ঞপ্তি উপস্থিত হওয়ার বিষয়টি তুচ্ছ।


0

আমি একটি স্ক্রিপ্ট লিখেছিলাম যা আইফোনটিতে আরপ-স্ক্যান এবং একটি স্থির আইপি ঠিকানা ব্যবহার করে অনুরূপ কিছু করে।

আপনি কোডটি এখানে পেতে পারেন: https://github.com/blackairplane/pydetect

পাইথনে আমি নতুন হওয়ায় এটি পরিষ্কার করা দরকার তবে আমি মনে করি এটি ধারণাটি চিত্রিত করে।


0

আমি এতে হোঁচট খেয়েছি এবং আমি একবার অনুরূপ কিছু করার পরে একটি উত্তর পোস্ট করার সিদ্ধান্ত নিয়েছে।

আমি নিম্নলিখিতগুলি করেছেন:

1. Ping all addresses within given network and subnet (excluding network and broadcast addresses)
2. Wait for response has a timeout so that if device doesn't answer from furthest corner of your WiFi it is considered not present.
3. So we get all IPs on the net that answer to ICMP packets.
4. Then use each detected IP to ask for more and decide which device you like and which one you don't.

আমার ক্ষেত্রে আমার ডিভাইসে একটি HTTP সার্ভার চালু ছিল। সুতরাং আমি কেবলমাত্র 80 পোর্টে মূলত কিছুই করার জন্য HTTP হেড অনুরোধটি প্রেরণ করেছি device

তবে আমি প্রথমে পিং না দিয়ে দ্রুত যেতে পারিনি। এইচটিটিপি টিসিপি এবং অনুরোধটি বড়, তাই ওয়াইফাইয়ের জন্য টাইমআউটগুলি 4 সেকেন্ড হতে হবে। 253 ঠিকানার জন্য এটি করা জাহান্নাম হিসাবে ধীর। তবে আপনার কাছে 253 ডিভাইস (সম্ভবত) আরও কম এইচটিটিপি সার্ভার নেই। (বা আপনার ক্ষেত্রে ফোন)

রাউটার লগ বিবেচনা করা খুব ভাল ধারণা এবং সহজ। এবং সমস্ত pinging চেয়ে দ্রুত। কিছু রাউটার এমনকি তাদের পেতে লগ ইন প্রয়োজন হয় না।

এছাড়াও, আপনার ডিভাইসে ইউপিএনপি সমর্থন আছে কিনা তা পরীক্ষা করে দেখার মতো। যদি এটি হয় তবে আপনি এর উপস্থিতি সনাক্ত করতে ইউপিএনপি ব্যবহার করতে পারেন। এটি সরকারী সমাধান হবে (ইউপিএনপির ইউডিপি সম্প্রচারে শুনছেন)। তবে সমস্ত ডিভাইস এটি সমর্থন করে না। তবে সমস্ত ডিভাইস আইসিএমপি সমর্থন করে না। (তারা অযথা বোমা চালানো চায় না)।

আরও একটি আকর্ষণীয় সম্ভাবনা আছে। আপনি ডিএইচসিপি প্যাকেটগুলির জন্য মাছ দেখতে পারেন এবং কখন রাউটার কোনও নতুন ডিভাইসকে একটি আইপি ঠিকানা দিচ্ছে তা দেখতে পারেন। তবে এটি স্ট্যাটিক আইপি সহ ডিভাইসগুলির জন্য কাজ করবে না। এমনকি তাদের কোনও কিছু প্রয়োজন না হওয়া পর্যন্ত তারা নেটওয়ার্কটিকেও স্পর্শ করবে না। নিজেই ওয়াইফাইয়ের সাথে সংযোগ স্থাপন অন্য স্তরে রয়েছে এবং আপনি যদি স্নিফার হিসাবে কাজ করতে না চান তবে সহজেই সনাক্ত করা যায় না। আমি নিশ্চিত নই যে এটি প্রম্পসিয়াস মোডে নেটওয়ার্ক অ্যাডাপ্টারের সাথে করণীয়যোগ্য কিনা। আমি মনে করি এটির জন্য অতিরিক্ত হার্ডওয়ারের প্রয়োজন হবে।

পাইথনে পিং অর্জনের জন্য, পিং প্রোগ্রামে সাব-প্রসেসিং এবং গতি হারানো ছাড়াই আপনাকে কাঁচা সকেট তৈরি করতে হবে এবং নিজেই আইসিএমপি প্যাকেট তৈরি করতে হবে। এটা কঠিন নয়। ওয়েবে কোথাও এর উদাহরণ রয়েছে। অবশ্যই, এটি পাঠাতে আপনার পিংয়ের মতো রুট অনুমতিও প্রয়োজন। এটি একটি অপূর্ণতা। আপনি যদি সফ্টওয়্যার বিতরণ করেন তবে আপনি ব্যবহারকারীরা এটিকে মূল হিসাবে চালাতে চান এমনটি আশা করতে পারবেন না।


0

আমার দুটি সমাধান ছিল যা আমি ব্যবহার করেছি। (পাইথন)

সমাধান ঘ

প্রথমটি ছিল আমি পরিচিত আই-নাম্বারগুলি অর্পণ করছিলাম যা আমি ট্র্যাক করতে চাই। আমি তিনটি পদক্ষেপে এটি করেছি। কেবলমাত্র একটি পিং পাঠাতে 1 # "cc "ব্যবহার করুন if ডিভাইসটি সক্রিয় থাকলে এটি উত্তর দিবে এবং। ক্রিয়াকলাপটি সাফল্যের সাথে প্রস্থান করবে 2 # "cc "ব্যবহার করুন এখন তিনটির মধ্যে একটিতে উত্তর দেওয়ার জন্য এটি আরও সময় দেবে। এটি যখন যথেষ্ট পরিমাণে ওয়াইফাই সংকেত হয় তখন এটি যথেষ্ট। সত্যই খারাপ ওয়াইফাই সংকেত হলে 3 # এটি ব্যবহার করতে "-c10" প্রয়োজন হতে পারে। (পুরানো আইপ্যাডের জবাব দেওয়ার জন্য প্রায় 10 টি চেষ্টা করা দরকার লক্ষ্য করা যায়) জিনিসগুলি গতি বাড়ানোর জন্য আমি ট্র্যাক করতে চাইলে প্রতিটি আইপি নম্বরের জন্য পৃথক প্রক্রিয়া তৈরি করেছি।

আমি পিংয়ের অন্তরগুলি সাফল্য কিনা তা নির্ভর করে পরিবর্তন করেছি। যদি এটি ডিভাইসটি খুঁজে পায় তবে এটি আবার না পরীক্ষা করা পর্যন্ত এটি আরও অপেক্ষা করবে। যদি এটি ব্যর্থ হয় তবে এটি 60 সেকেন্ডের মধ্যে আবার চেষ্টা করবে। (আমি আমার ঘরে প্রবেশের সময় আলোকপাত করতে চাই) সুতরাং 60 এর দশক রাস্তায় আমাকে খুঁজতে যথেষ্ট

এটি নিখুঁতভাবে কাজ করেছে! আমি যখন বাড়িতে পৌঁছলাম তখন এটি আমার অনুভূতি হয়েছিল এবং আলো বের হয়েছিল এবং আমি যখন চলে যাই।

সমাধান 2

নেটওয়ার্কে আরপিং ভারী নাও হতে পারে তবে আমি সমস্ত পিংস এড়িয়ে যাওয়ার সমাধানটি পরিবর্তন করে আমার রাস্পবেরি পাইতে আমার নিজের ডিএইচসিপি সার্ভার তৈরি করেছি।

তারপরে আমি "অন কমিট" যুক্ত করেছি যা কোনও স্ক্রিপ্ট ট্রিগার করার সাথে সাথে কোনও ডিভাইস আইপम्बर পেয়ে যায়। এই স্ক্রিপ্টটি কোনও ডিভাইস পাওয়ার সাথে সাথে তার আইপিএনবারটি পুনর্নবীকরণের সাথে সাথে আমার www সার্ভার (ফ্লাস্ক) কে অবহিত করতে একটি 'কার্ল HTTP এপিআই কল' ব্যবহার করবে।

আমার অ্যান্ড্রয়েডে আমি সেটিংস পরিবর্তন করেছি যখন স্ক্রিনটি বন্ধ থাকে তখন কখনই ওয়াইফাই বন্ধ করা যায় না। আইফোনে এটি সম্ভব কিনা তা নিশ্চিত নয়। ব্যাটারিতে কোনও বড় পার্থক্য নেই (ওয়ানপ্লাস 5)

প্রথম সমাধানটিতে নির্দিষ্ট ম্যাকের জন্য ব্লুটুথ স্ক্যানিং অন্তর্ভুক্ত ছিল। সুতরাং আমার ওয়াইফাই আমার ফোনে বন্ধ থাকলেও এটি এখনও ব্লুটুথ অনুধাবন করবে। ম্যাক অ্যাড্রেস ব্যবহার করে এটি যুক্ত করার দরকার নেই বা এটি সবার কাছে দেখার জন্য উপলব্ধ রয়েছে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.