Internationalized Domain Names for Python (IDNA 2008 and UTS #46)

Overview

Internationalized Domain Names in Applications (IDNA)

Support for the Internationalised Domain Names in Applications (IDNA) protocol as specified in RFC 5891. This is the latest version of the protocol and is sometimes referred to as “IDNA 2008”.

This library also provides support for Unicode Technical Standard 46, Unicode IDNA Compatibility Processing.

This acts as a suitable replacement for the “encodings.idna” module that comes with the Python standard library, but which only supports the older superseded IDNA specification (RFC 3490).

Basic functions are simply executed:

>>> import idna
>>> idna.encode('ドメイン.テスト')
b'xn--eckwd4c7c.xn--zckzah'
>>> print(idna.decode('xn--eckwd4c7c.xn--zckzah'))
ドメイン.テスト

Installation

To install this library, you can use pip:

$ pip install idna

Alternatively, you can install the package using the bundled setup script:

$ python setup.py install

Usage

For typical usage, the encode and decode functions will take a domain name argument and perform a conversion to A-labels or U-labels respectively.

>>> import idna
>>> idna.encode('ドメイン.テスト')
b'xn--eckwd4c7c.xn--zckzah'
>>> print(idna.decode('xn--eckwd4c7c.xn--zckzah'))
ドメイン.テスト

You may use the codec encoding and decoding methods using the idna.codec module:

>>> import idna.codec
>>> print('домен.испытание'.encode('idna'))
b'xn--d1acufc.xn--80akhbyknj4f'
>>> print(b'xn--d1acufc.xn--80akhbyknj4f'.decode('idna'))
домен.испытание

Conversions can be applied at a per-label basis using the ulabel or alabel functions if necessary:

>>> idna.alabel('测试')
b'xn--0zwm56d'

Compatibility Mapping (UTS #46)

As described in RFC 5895, the IDNA specification does not normalize input from different potential ways a user may input a domain name. This functionality, known as a “mapping”, is considered by the specification to be a local user-interface issue distinct from IDNA conversion functionality.

This library provides one such mapping, that was developed by the Unicode Consortium. Known as Unicode IDNA Compatibility Processing, it provides for both a regular mapping for typical applications, as well as a transitional mapping to help migrate from older IDNA 2003 applications.

For example, “Königsgäßchen” is not a permissible label as LATIN CAPITAL LETTER K is not allowed (nor are capital letters in general). UTS 46 will convert this into lower case prior to applying the IDNA conversion.

>>> import idna
>>> idna.encode('Königsgäßchen')
...
idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed
>>> idna.encode('Königsgäßchen', uts46=True)
b'xn--knigsgchen-b4a3dun'
>>> print(idna.decode('xn--knigsgchen-b4a3dun'))
königsgäßchen

Transitional processing provides conversions to help transition from the older 2003 standard to the current standard. For example, in the original IDNA specification, the LATIN SMALL LETTER SHARP S (ß) was converted into two LATIN SMALL LETTER S (ss), whereas in the current IDNA specification this conversion is not performed.

>>> idna.encode('Königsgäßchen', uts46=True, transitional=True)
'xn--knigsgsschen-lcb0w'

Implementors should use transitional processing with caution, only in rare cases where conversion from legacy labels to current labels must be performed (i.e. IDNA implementations that pre-date 2008). For typical applications that just need to convert labels, transitional processing is unlikely to be beneficial and could produce unexpected incompatible results.

encodings.idna Compatibility

Function calls from the Python built-in encodings.idna module are mapped to their IDNA 2008 equivalents using the idna.compat module. Simply substitute the import clause in your code to refer to the new module name.

Exceptions

All errors raised during the conversion following the specification should raise an exception derived from the idna.IDNAError base class.

More specific exceptions that may be generated as idna.IDNABidiError when the error reflects an illegal combination of left-to-right and right-to-left characters in a label; idna.InvalidCodepoint when a specific codepoint is an illegal character in an IDN label (i.e. INVALID); and idna.InvalidCodepointContext when the codepoint is illegal based on its positional context (i.e. it is CONTEXTO or CONTEXTJ but the contextual requirements are not satisfied.)

Building and Diagnostics

The IDNA and UTS 46 functionality relies upon pre-calculated lookup tables for performance. These tables are derived from computing against eligibility criteria in the respective standards. These tables are computed using the command-line script tools/idna-data.

This tool will fetch relevant codepoint data from the Unicode repository and perform the required calculations to identify eligibility. There are three main modes:

  • idna-data make-libdata. Generates idnadata.py and uts46data.py, the pre-calculated lookup tables using for IDNA and UTS 46 conversions. Implementors who wish to track this library against a different Unicode version may use this tool to manually generate a different version of the idnadata.py and uts46data.py files.
  • idna-data make-table. Generate a table of the IDNA disposition (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix B.1 of RFC 5892 and the pre-computed tables published by IANA.
  • idna-data U+0061. Prints debugging output on the various properties associated with an individual Unicode codepoint (in this case, U+0061), that are used to assess the IDNA and UTS 46 status of a codepoint. This is helpful in debugging or analysis.

The tool accepts a number of arguments, described using idna-data -h. Most notably, the --version argument allows the specification of the version of Unicode to use in computing the table data. For example, idna-data --version 9.0.0 make-libdata will generate library data against Unicode 9.0.0.

Additional Notes

  • Packages. The latest tagged release version is published in the Python Package Index.
  • Version support. This library supports Python 3.5 and higher. As this library serves as a low-level toolkit for a variety of applications, many of which strive for broad compatibility with older Python versions, there is no rush to remove older intepreter support. Removing support for older versions should be well justified in that the maintenance burden has become too high.
  • Python 2. Python 2 is supported by version 2.x of this library. While active development of the version 2.x series has ended, notable issues being corrected may be backported to 2.x. Use "idna<3" in your requirements file if you need this library for a Python 2 application.
  • Testing. The library has a test suite based on each rule of the IDNA specification, as well as tests that are provided as part of the Unicode Technical Standard 46, Unicode IDNA Compatibility Processing.
  • Emoji. It is an occasional request to support emoji domains in this library. Encoding of symbols like emoji is expressly prohibited by the technical standard IDNA 2008 and emoji domains are broadly phased out across the domain industry due to associated security risks. For now, applications that wish need to support these non-compliant labels may wish to consider trying the encode/decode operation in this library first, and then falling back to using encodings.idna. See the Github project for more discussion.
Comments
  • Alternative handling of illegal IDNs (such as domains with emojis)

    Alternative handling of illegal IDNs (such as domains with emojis)

    The decode method can throw an exception when it finds characters not acceptable in IDNA2008. I think that the characters are acceptable in UTS46.

    idna.decode("xn--co8ha.tk")

    There isn't a way of signalling to decode that it should apply uts46 rules. UTS46 (in section 4.3) says:

    Like [RFC3490], this will always produce a converted Unicode string. Unlike ToASCII of [RFC3490], this always signals whether or not there was an error.

    The decode method currently indicates whether there was an error, but it does not always produce a converted unicode string.

    The domain name above is a valid domain name and can be accessed: http://🐔🐔.tk/

    Also, trying to encode this domain name also fails, even with uts46=True and transitional=True.

    The python call

    "xn--co8ha.tk".decode("idna")

    does produce the right answer.

    I would stick with the python idna2003 implementation, except that I need to improved handling of the german ß character.

    enhancement 
    opened by pjsg 19
  • idna-2.2: idna.encode('☃') does not return 'xn--n3h'

    idna-2.2: idna.encode('☃') does not return 'xn--n3h'

    >>> import idna
    >>> idna.encode('ドメイン.テスト')
    b'xn--eckwd4c7c.xn--zckzah'
    >>> idna.encode('☃')
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/usr/lib64/python3.4/site-packages/idna/core.py", line 355, in encode
        result.append(alabel(label))
      File "/usr/lib64/python3.4/site-packages/idna/core.py", line 276, in alabel
        check_label(label)
      File "/usr/lib64/python3.4/site-packages/idna/core.py", line 253, in check_label
        raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label)))
    idna.core.InvalidCodepoint: Codepoint U+2603 at position 1 of '☃' not allowed
    
    opened by jakeogh 18
  • Problem on encode some cyrylic domain names

    Problem on encode some cyrylic domain names

    Hi,

    i am trying to encode domain names "надвор’е.бел", "надвор’е.бел" using python, this library, on Linux.

    Always receive error - "Codepoint U+2019 at position 7 of 'надвор’е' not allowed". Some internet sites successfully encodes this domain name to punycode.

    Can you help me with this problem&

    opened by Kazun3500 9
  • implement UTS46

    implement UTS46

    I have implemented UTS46, please see https://github.com/jribbens/idna

    It passes 100% of the tests in IdnaTest.txt, except 34 which all contain 0x200c or 0x200d. I don't know what the problem is with those tests.

    Can you pull this please?

    opened by jribbens 9
  • Failing domain names

    Failing domain names

    I've been looking at IDNA domain registrations and using your library in conjunction with the built in python tools.

    >>> domain = "xn--53hy7af013i.ws".encode("utf-8")                                                                                     
    >>> domain.decode("idna")         
    '☕🦊✈.ws'
    

    The IDNA package is a HUGE life saver for me. I monitored approximately over 111,000 IDNA domains being registered, and a small percentage of them failed. I've attached the output that I thought you might find useful.

    As you can see above, there is an uptick of registrations of emoji domains now. Although it is not part of the specification, it would be very helpful if that was incorporated into this package.

    failed_output.txt

    opened by aggiebill 8
  • optimize memory consumption of idnadata, take 3

    optimize memory consumption of idnadata, take 3

    I'm sorry I keep changing my mind here. I think I finally have an approach with no significant drawbacks:

    1. As in #23, stop storing the DISALLOWED codepoints, as well as any scripts that aren't special-cased by RFC 5892.
    2. As in the master branch, take advantage of the fact that the script and PVALID codepoint lists have long runs in them --- but instead of expanding those runs into a flat hash-set at runtime, leave them as a sequence of (start, end) tuples. These tuples can be binary-searched for integer membership with the bisect module. The binary search is faster than the one in #23 because it costs O(log(# runs)), not O(log(# codepoints)).

    Memory consumption is down under 2 MB, the naive benchmark is not significantly affected (the increase is less than 10%, with overall time still dominated by punycode), and there's no need to package a large opaque binary datafile.

    Caveats about the Unicode version still apply (again, the idnadata rebuild is an isolated commit and can be rebased out).

    opened by slingamn 8
  • The label {0} is not a valid A-label'.format(label) - Codepoint U+005F

    The label {0} is not a valid A-label'.format(label) - Codepoint U+005F

    `2017-07-04 16:19:44 [scrapy.core.scraper] ERROR: Error downloading <GET https://sloneczne_stablowice.forumoteka.pl/kategoria,4,mieszkancy-luzne-rozmowy.html> Traceback (most recent call last): File "c:\users\bukowa\vritualenv2\lib\site-packages\idna\core.py", line 263, in alabel ulabel(label) File "c:\users\bukowa\vritualenv2\lib\site-packages\idna\core.py", line 299, in ulabel check_label(label) File "c:\users\bukowa\vritualenv2\lib\site-packages\idna\core.py", line 253, in check_label raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label))) idna.core.InvalidCodepoint: Codepoint U+005F at position 10 of 'sloneczne_stablowice' not allowed

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last): File "c:\users\bukowa\vritualenv2\lib\site-packages\twisted\internet\defer.py", line 1384, in inlineCallbacks result = result.throwExceptionIntoGenerator(g) File "c:\users\bukowa\vritualenv2\lib\site-packages\twisted\python\failure.py", line 393, in throwExceptionIntoGenerator return g.throw(self.type, self.value, self.tb) File "c:\users\bukowa\vritualenv2\lib\site-packages\scrapy\core\downloader\middleware.py", line 43, in process_request defer.returnValue((yield download_func(request=request,spider=spider))) File "c:\users\bukowa\vritualenv2\lib\site-packages\scrapy\utils\defer.py", line 45, in mustbe_deferred result = f(*args, **kw) File "c:\users\bukowa\vritualenv2\lib\site-packages\scrapy\core\downloader\handlers_init.py", line 65, in download_request return handler.download_request(request, spider) File "c:\users\bukowa\vritualenv2\lib\site-packages\scrapy\core\downloader\handlers\http11.py", line 63, in download_request return agent.download_request(request) File "c:\users\bukowa\vritualenv2\lib\site-packages\scrapy\core\downloader\handlers\http11.py", line 300, in download_request method, to_bytes(url, encoding='ascii'), headers, bodyproducer) File "c:\users\bukowa\vritualenv2\lib\site-packages\twisted\web\client.py", line 1633, in request endpoint = self._getEndpoint(parsedURI) File "c:\users\bukowa\vritualenv2\lib\site-packages\twisted\web\client.py", line 1617, in _getEndpoint return self._endpointFactory.endpointForURI(uri) File "c:\users\bukowa\vritualenv2\lib\site-packages\twisted\web\client.py", line 1494, in endpointForURI uri.port) File "c:\users\bukowa\vritualenv2\lib\site-packages\scrapy\core\downloader\contextfactory.py", line 59, in creatorForNetloc return ScrapyClientTLSOptions(hostname.decode("ascii"), self.getContext()) File "c:\users\bukowa\vritualenv2\lib\site-packages\twisted\internet_sslverify.py", line 1152, in init self._hostnameBytes = _idnaBytes(hostname) File "c:\users\bukowa\vritualenv2\lib\site-packages\twisted\internet_idna.py", line 30, in _idnaBytes return idna.encode(text) File "c:\users\bukowa\vritualenv2\lib\site-packages\idna\core.py", line 355, in encode result.append(alabel(label)) File "c:\users\bukowa\vritualenv2\lib\site-packages\idna\core.py", line 265, in alabel raise IDNAError('The label {0} is not a valid A-label'.format(label)) idna.core.IDNAError: The label b'sloneczne_stablowice' is not a valid A-label`

    idna == 2.5

    opened by ghost 7
  • Import error inside import hook.

    Import error inside import hook.

    Hello,

    I recently upgraded to requests 2.12 which uses idna and I started to see this import error:

    (Pdb) request('get', url, params=params, **kwargs) *** ImportError: No module named uts46data

    Looking in the changes I saw that it was recently added idna. My projects are using import hooks and inside of it the hook use requests, which uses idna.

    The code of idna is doing an import inside the method uts46_remap, which is breaking my code. Moving the import uts46_remap outside fixes this issue.

    opened by llazzaro 7
  • Tests fail on Python 2.6

    Tests fail on Python 2.6

    Is idna supposed to work on Python 2.6? The documentation does not explicitly state that 2.7 is required and 2.6 is not. There has been at least one commit to improve 2.6 compat as well.

    I've added to obvious fxes to the tests for 2.6 that, but I'm not exactly sure what the correct fix for the two remaining tests is.

    Patch:

    diff --git a/tests/test_idna_codec.py b/tests/test_idna_codec.py
    index fe3737a..2d0cd14 100755
    --- a/tests/test_idna_codec.py
    +++ b/tests/test_idna_codec.py
    @@ -24,7 +24,7 @@ class IDNACodecTests(unittest.TestCase):
             )
    
             for decoded, encoded in incremental_tests:
    -            if sys.version_info.major == 2:
    +            if sys.version_info[0] == 2:
                     self.assertEqual("".join(codecs.iterdecode(encoded, "idna")),
                                     decoded)
                 else:
    diff --git a/tests/test_idna_uts46.py b/tests/test_idna_uts46.py
    index d8a2836..c93c0df 100755
    --- a/tests/test_idna_uts46.py
    +++ b/tests/test_idna_uts46.py
    @@ -51,6 +51,8 @@ class TestIdnaTest(unittest.TestCase):
             return "%s.%d" % (super(TestIdnaTest, self).id(), self.lineno)
    
         def shortDescription(self):
    +        if not self.fields:
    +            return ""
             return "IdnaTest.txt line %d: %r" % (self.lineno,
                 u"; ".join(self.fields))
    
    

    Failures:

    ======================================================================
    ERROR: test_decode (tests.test_idna.IDNATests)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/rbu/devel/code/idna/tests/test_idna.py", line 258, in test_decode
        self.assertEqual(idna.decode('xn---------90gglbagaar.aa'),
      File "/home/rbu/devel/code/idna/idna/core.py", line 383, in decode
        result.append(ulabel(label))
      File "/home/rbu/devel/code/idna/idna/core.py", line 302, in ulabel
        check_label(label)
      File "/home/rbu/devel/code/idna/idna/core.py", line 254, in check_label
        check_bidi(label)
      File "/home/rbu/devel/code/idna/idna/core.py", line 70, in check_bidi
        raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx))
    IDNABidiError: Unknown directionality in label u'\u0521\u0525\u0523-\u0523\u0523-----\u0521\u0523\u0523\u0523' at position 2
    
    ======================================================================
    ERROR: test_encode (tests.test_idna.IDNATests)
    ----------------------------------------------------------------------
    Traceback (most recent call last):
      File "/home/rbu/devel/code/idna/tests/test_idna.py", line 244, in test_encode
        self.assertEqual(idna.encode(u'\u0521\u0525\u0523-\u0523\u0523-----\u0521\u0523\u0523\u0523.aa'),
      File "/home/rbu/devel/code/idna/idna/core.py", line 354, in encode
        result.append(alabel(label))
      File "/home/rbu/devel/code/idna/idna/core.py", line 275, in alabel
        check_label(label)
      File "/home/rbu/devel/code/idna/idna/core.py", line 254, in check_label
        check_bidi(label)
      File "/home/rbu/devel/code/idna/idna/core.py", line 70, in check_bidi
        raise IDNABidiError('Unknown directionality in label {0} at position {1}'.format(repr(label), idx))
    IDNABidiError: Unknown directionality in label u'\u0521\u0525\u0523-\u0523\u0523-----\u0521\u0523\u0523\u0523' at position 2
    
    ----------------------------------------------------------------------
    Ran 17 tests in 0.007s
    
    FAILED (errors=2)
    
    enhancement 
    opened by rbu 7
  • The library is not thread-safe

    The library is not thread-safe

       self_sign_pem_chain = await get_event_loop().run_in_executor(
     File "/usr/lib64/python3.9/concurrent/futures/thread.py", line 52, in run
       result = self.fn(*self.args, **self.kwargs)
     File "/usr/lib/python3.9/site-packages/ideco_crypto/cert.py", line 261, in get_selfgenerated_chain
       common_name = _normalize_domain(common_name, allow_underscore=allow_underscore)
     File "/usr/lib/python3.9/site-packages/ideco_crypto/cert.py", line 76, in _normalize_domain
       return prefix + idna.encode(domain, uts46=True).lower().decode('ascii')
     File "/usr/lib/python3.9/site-packages/idna/core.py", line 349, in encode
       s = uts46_remap(s, std3_rules, transitional)
     File "/usr/lib/python3.9/site-packages/idna/core.py", line 318, in uts46_remap
       from .uts46data import uts46data
    ImportError: cannot import name 'uts46data' from partially initialized module 'idna.uts46data' (most likely due to a circular import) (/usr/lib/python3.9/site-packages/idna/uts46data.py)
    
    

    This happens beacause uts46_remap() imports from .uts46data import uts46data inside. When this happens in two threads in parallel, it leads to error above. Really hard to trigger, but it happens sometimes.

    opened by socketpair 6
  • symbol '_' not allowed

    symbol '_' not allowed

    д_ругойтест.рф
    Codepoint U+005F at position 2 of 'д_ругойтест' not allowed
    

    Full traceback:

    Traceback (most recent call last):
      File "/home/user/somedirectory/code.py", line 34, in <module>
        punnycode_to_replace = idna.encode("д_ругойтест.рф")
      File "/usr/local/lib/python3.5/dist-packages/idna/core.py", line 355, in encode
        result.append(alabel(label))
      File "/usr/local/lib/python3.5/dist-packages/idna/core.py", line 276, in alabel
        check_label(label)
      File "/usr/local/lib/python3.5/dist-packages/idna/core.py", line 253, in check_label
        raise InvalidCodepoint('Codepoint {0} at position {1} of {2} not allowed'.format(_unot(cp_value), pos+1, repr(label)))
    idna.core.InvalidCodepoint: Codepoint U+005F at position 2 of 'д_ругойтест' not allowed
    [Finished in 0.4s with exit code 1]
    
    opened by 404notfoundhard 6
  • Codec tests and documentation needs to be updated

    Codec tests and documentation needs to be updated

    Current tests and documentation in the README references the codec for this library as "idna" instead of "idna2008", should be updated. This value was changed in https://github.com/kjd/idna/pull/131

    This also makes me wonder if the test suite needs to test specific IDNA 2008 functionality since tests don't appear to be failing? cc @kjd

    opened by sethmlarson 1
  • v3.4 sdist contains empty setup.py

    v3.4 sdist contains empty setup.py

    Hi, https://files.pythonhosted.org/packages/8b/e1/43beb3d38dba6cb420cefa297822eac205a277ab43e5ba5d5c46faf96438/idna-3.4.tar.gz contains a setup.py which is:

    from setuptools import setup
    setup()
    

    There is no setup.cfg , so as a result python setup.py build works, but it installs using version '0.0.0' which then causes problems with pkg_resources. e.g. pkg_resources.ContextualVersionConflict: (idna 0.0.0 (/usr/lib/python3.10/site-packages), Requirement.parse('idna>=2.5'), {'hyperlink'}) /usr/lib/python3.10/site-packages/pkg_resources/init.py:800: ContextualVersionConflict

    opened by jayvdb 3
  • Using idna codec

    Using idna codec

    As per the documentation I tried using idna codec but it still uses the one from encodings.idna.

    >>> import idna.codec
    >>> codecs.encode('fuß', 'idna')
    b'fuss'
    >>> codecs.getencoder('idna')
    <bound method Codec.encode of <encodings.idna.Codec object at 0x7ff6eb158fa0>>
    

    I also tried registering the codec with idna.codec.getregentry with the same result. Am I missing something here?

    opened by j-bernard 2
  • Bringing idna into the Python core library

    Bringing idna into the Python core library

    I am looking at bringing native IDNA2008 support into the Python core library, and had a long conversation with Nathaniel J. Smith (@njsmith) and Christian Heimes (@tiran) about the work required. The end goal of this work is to have Python be able to natively handle IDNs as a first class citizen, and recycle as much code use as possible.

    To summarize the current conversation, the first step would be implementing a new codec in Python's code library, and then extend the standard library to be able to natively handle IDNs in such a way that the following code snippit could work:

    #!/usr/bin/env python3
    import urllib
    import urllib.request
    
    req = urllib.request.Request('http://fuß.standcore.com')
    response = urllib.request.urlopen(req)
    the_page = response.read()
    print(the_page.decode(encoding='utf-8')) 
    

    From the conversation on Zulip, the first step would be implementing idna2008 as a new encoding codec, and then work on modifying the core library to be able to accept and interoperate with IDNs seamlessly.

    I'm willing to do much of the legwork required to get code integrated into CPython. My first question is what (if any) blockers exist in implementation that would make it difficult to bring into CPython, and any tips or suggestions to help bring things forward. Right now, I'm just trying to get the ball rolling on figuring out a solid plan on hopefully having Python 3.8 be able to treat IDNs as first class citizens.

    opened by NCommander 15
Owner
Kim Davies
Kim Davies
Whois-Python - Get Whois Domain with Python GUI

Whois-Python-GUI Get Whois Domain with Python - GUI :) WARNING > Dont Copy ! - W

MR.D3F417 3 Feb 21, 2022
Separation of Mainlobes and Sidelobes in the Ultrasound Image Based on the Spatial Covariance (MIST) and Aperture-Domain Spectrum of Received Signals

Separation of Mainlobes and Sidelobes in the Ultrasound Image Based on the Spatial Covariance (MIST) and Aperture-Domain Spectrum of Received Signals

Rehman Ali 3 Jan 3, 2023
Python DNS Lookup: The Domain Name System (DNS) is basically the phonebook of the Internet

-Python-DNS-Lookup- ✨ ?? Python DNS Lookup ✨ ?? The Domain Name System (DNS) is

Ronnie Atuhaire 2 Feb 14, 2022
Create a secure tunnel from a custom domain to localhost using Fly and WireGuard.

Fly Dev Tunnel Developers commonly use apps like ngrok, localtunnel, or cloudflared to expose a local web service at a publicly-accessible URL. This i

null 170 Dec 11, 2022
Exploiting CVE-2021-42278 and CVE-2021-42287 to impersonate DA from standard domain user

Exploiting CVE-2021-42278 and CVE-2021-42287 to impersonate DA from standard domain user Known issues it will not work outside kali , i will update it

Hossam 867 Dec 22, 2022
Exploiting CVE-2021-42278 and CVE-2021-42287 to impersonate DA from standard domain user

About Exploiting CVE-2021-42278 and CVE-2021-42287 to impersonate DA from standard domain user Changed from sam-the-admin. Usage SAM THE ADMIN CVE-202

Evi1cg 500 Jan 6, 2023
MSDorkDump is a Google Dork File Finder that queries a specified domain name and variety of file extensions

MSDorkDump is a Google Dork File Finder that queries a specified domain name and variety of file extensions (pdf, doc, docx, etc), and downloads them.

Joe Helle 150 Jan 3, 2023
DomainMonitor is a web project that has a RESTful API to get a domain's subdomains and whois data.

DomainMonitor is a web project that has a RESTful API to get a domain's subdomains and whois data.

null 2 Feb 5, 2022
Domain abuse scanner covering domainsquatting and phishing keywords.

?? monodon ?? Domain abuse scanner covering domainsquatting and phishing keywords. Setup Monodon is a Python 3.7+ programm. To setup on a Linux machin

null 2 Mar 15, 2022
WinRemoteEnum is a module-based collection of operations achievable by a low-privileged domain user.

WinRemoteEnum WinRemoteEnum is a module-based collection of operations achievable by a low-privileged domain user, sharing the goal of remotely gather

Simon 9 Nov 9, 2022
Advanced subdomain scanner, any domain hidden subdomains

little advanced subdomain scanner made in python, works very quick and has options to change the port u want it to connect for

Nano 5 Nov 23, 2021
A fast sub domain brute tool for pentesters

subDomainsBrute 1.4 A fast sub domain brute tool for pentesters. It works with P

Oliver 2 Oct 18, 2022
Magicspoofing - A python3 script for search possible misconfiguration in a DNS related to security protections of email service from the domain name

A python3 script for search possible misconfiguration in a DNS related to security protections of email service from the domain name. This project is for educational use, we are not responsible for its misuse.

null 20 Dec 2, 2022
Dome - Subdomain Enumeration Tool. Fast and reliable python script that makes active and/or passive scan to obtain subdomains and search for open ports.

DOME - A subdomain enumeration tool Check the Spanish Version Dome is a fast and reliable python script that makes active and/or passive scan to obtai

Vadi 329 Jan 1, 2023
RedDrop is a quick and easy web server for capturing and processing encoded and encrypted payloads and tar archives.

RedDrop Exfil Server Check out the accompanying MaverisLabs Blog Post Here! RedDrop Exfil Server is a Python Flask Web Server for Penetration Testers,

null 53 Nov 1, 2022
A python script to turn Ubuntu Desktop in a one stop security platform. The InfoSec Fortress installs the packages,tools, and resources to make Ubuntu 20.04 capable of both offensive and defensive security work.

infosec-fortress A python script to turn Ubuntu Desktop into a strong DFIR/RE System with some teeth (Purple Team Ops)! This is intended to create a s

James 41 Dec 30, 2022
This is python script that will extract the functions call in all used DLL in an executable and then provide a mapping of those functions to the attack classes defined and curated malapi.io.

F2Amapper This is python script that will extract the functions call in all used DLL in an executable and then provide a mapping of those functions to

Ajit Kumar 3 Sep 3, 2022
orfipy is a tool written in python/cython to extract ORFs in an extremely and fast and flexible manner

Introduction orfipy is a tool written in python/cython to extract ORFs in an extremely and fast and flexible manner. Other popular ORF searching tools

Urminder Singh 34 Nov 21, 2022
Using python 3 and Flask an MVC system where the AES 128 CBC and Trivium algorithms

This project was developed using python 3 and Flask, it is an MVC system where the AES 128 CBC and Trivium algorithms can be tested through a communication between the computer and a device such as a microcontroller that provides these algorithms.

Brandon Israel Camacho Reyes 1 Dec 26, 2021