شرح كيفية استخدام مكتبة شودان مع بايثون | Shodan API Python

    شرج كيفية استخدام مكتبة شودان مع بايثون | Shodan API Python

    ماهو شودان

    شودان هو محرك بحث على الإنترنت تم تطويره من قبل المطور جون مارتلي، شودان  مختلف تماما عن محركات البحث التقليدية مثل جوجل وياهووبينج.
    شودان يتميز بخصائص مختلفة عنهم تماما، فبدلا من البحث داخل الصفحات والمواقع فهو يبحث عن عنواين الاي بيIP والبورتاتPorts المختلفة المتعلقة بها، شودان  يمكنك من البحث عن أجهزة الكمبيوتر أو السيرفرات والراواترات أو حتى الكاميرات والطابعات أو أي جهاز متصل بالنت، لذا شودان يعتبر أداة مهمة جدا سواء للهاكرز أو لخبراء أمن المعلومات.

    طبعا يمكننا استخدام محرك البحث الشهير شودان مع لغة بايثون وهذا بالاستعانة بمكتبة shodan api هذه المكتبة تحتاج ما يسمى api وهي مقابض للتحكم بموقع شودان عن بعد تستطيع الحصول على سيريال خاص بك بالتسجيل بموقع شودان https://account.shodan.io وسيعطيك سيريال مجاني خاص بك

    طريقة تثبيت مكتبة شودان

    pip install shodan

    طريقة استدعاء المكتبة 

    from shodan import Shodan
    أو

    try:
        import shodan
    except ImportError:
        print "Shodan library not found. Please install it prior to running script"

    الان نقوم بانشاء كائن object باسم api يمكنك اختيار اي اسم ,
    نمرر له الفنكشن shodan()
    نقوم بتمرير السريال الخاص بك الذي حصلت عليه من الموقع على شكل سترينج  كالاتي
    api = Shodan('LLjMe3l294mAwPocYl4ikK4KIWfI7y5U')

    • الان سنجرب مثلا استخراج معلومات من الاي بي   IP lookup

    ipinfo = api.host('8.8.8.8')


    مثال اخر للبحث عن المواقع المخترقة hacked by
    for banner in api.search_cursor('http.title:"hacked by"'):
               print(banner)
    • للبحث عن قواعد البيانات مونغو 


    results = api.search('MongoDB')
    أو أكثر احترافية نظيف try لاستخراج اي خطأ يحدث وطبعه   except shodan.APIError, error:
    try:
        results = api.search('MongoDB')
    except shodan.APIError, error:
        print 'Error: {0}'.format(error)
    • للبحث عن الانظمة التحكم الصناعية industrial control systems

    ics_services = api.count('tag:ics')
    print('Industrial Control Systems: {}'.format(ics_services['total']))


    يمكنك ايضا البحث عن apache بالكود الاتي:

    try:
            # Search Shodan
            results = api.search('apache')
            # Show the results
            print('Results found: {}'.format(results['total']))
            for result in results['matches']:
                    print('IP: {}'.format(result['ip_str']))
                    print(result['data'])
                    print('')
    except shodan.APIError, e:
            print('Error: {}'.format(e))


    يمكنك نسخ السكريبت وحفظه بصيغة بايثون shodan.py  وتطويره

    from shodan import Shodan
    api = Shodan('LLjMe3l294mAwPocYl4ikK4KIWfI7y5U')
    # Lookup an IP
    ipinfo = api.host('8.8.8.8')
    print(ipinfo)
    # Search for websites that have been "hacked"
    for banner in api.search_cursor('http.title:"hacked by"'):
        print(banner)
    # Get the total number of industrial control systems services on the Internet
    ics_services = api.count('tag:ics')
    print('Industrial Control Systems: {}'.format(ics_services['total']))

    وهذا سكريبت جاهز Basic Shodan Search ضع السيريال الخاص بك api ثم قم بحفظه .py

    #!/usr/bin/env python
    #
    # shodan_ips.py
    # Search SHODAN and print a list of IPs matching the query
    #
    # Author: achillean

    import shodan
    import sys

    # Configuration
    API_KEY = "YOUR_API_KEY"

    # Input validation
    if len(sys.argv) == 1:
            print 'Usage: %s <search query>' % sys.argv[0]
            sys.exit(1)

    try:
            # Setup the api
            api = shodan.Shodan(API_KEY)

            # Perform the search
            query = ' '.join(sys.argv[1:])
            result = api.search(query)

            # Loop through the matches and print each IP
            for service in result['matches']:
                    print service['ip_str']
    except Exception as e:
            print 'Error: %s' % e
            sys.exit(1)

    وهذا سكريبت اخر لجمع المعلومات Collecting Summary Information using Facets

    #!/usr/bin/env python
    #
    # query-summary.py
    # Search Shodan and print summary information for the query.
    #
    # Author: achillean

    import shodan
    import sys

    # Configuration
    API_KEY = 'YOUR API KEY'

    # The list of properties we want summary information on
    FACETS = [
        'org',
        'domain',
        'port',
        'asn',

        # We only care about the top 3 countries, this is how we let Shodan know to return 3 instead of the
        # default 5 for a facet. If you want to see more than 5, you could do ('country', 1000) for example
        # to see the top 1,000 countries for a search query.
        ('country', 3),
    ]

    FACET_TITLES = {
        'org': 'Top 5 Organizations',
        'domain': 'Top 5 Domains',
        'port': 'Top 5 Ports',
        'asn': 'Top 5 Autonomous Systems',
        'country': 'Top 3 Countries',
    }

    # Input validation
    if len(sys.argv) == 1:
        print 'Usage: %s <search query>' % sys.argv[0]
        sys.exit(1)

    try:
        # Setup the api
        api = shodan.Shodan(API_KEY)

        # Generate a query string out of the command-line arguments
        query = ' '.join(sys.argv[1:])

        # Use the count() method because it doesn't return results and doesn't require a paid API plan
        # And it also runs faster than doing a search().
        result = api.count(query, facets=FACETS)

        print 'Shodan Summary Information'
        print 'Query: %s' % query
        print 'Total Results: %s\n' % result['total']

        # Print the summary info from the facets
        for facet in result['facets']:
            print FACET_TITLES[facet]

            for term in result['facets'][facet]:
                print '%s: %s' % (term['value'], term['count'])

            # Print an empty line between summary info
            print ''

    except Exception, e:
        print 'Error: %s' % e
        sys.exit(1)


    لمعرفة المزيد حول اوامر المكتبة شودان اتبع الرابط الاتي
    https://developer.shodan.io/api

    https://shodan.readthedocs.io/en/latest/tutorial.html#searching-shodan

    شارك المقال

    مقالات متعلقة

    إرسال تعليق