Advertisement
hmimzomatrix

rom-0-decoder-sh-multi-python-version

Apr 27th, 2024
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Bash 7.36 KB | None | 0 0
  1. #python2
  2. function p2(){
  3. echo -e "from __future__ import print_function\nimport re\nimport collections\nimport unicodedata\n\nclass BitReader:\n\n    def __init__(self, bytes):\n        self._bits = collections.deque()\n        \n        for byte in bytes:\n            byte = ord(byte)\n            for n in xrange(8):\n                self._bits.append(bool((byte >> (7-n)) & 1))\n            \n    def getBit(self):\n        return self._bits.popleft()\n        \n    def getBits(self, num):\n        res = 0\n        for i in xrange(num):\n            res += self.getBit() << num-1-i\n        return res\n        \n    def getByte(self):\n        return self.getBits(8)\n        \n    def __len__(self):\n        return len(self._bits)\n        \nclass RingList:\n    \n    def __init__(self, length):\n        self.__data__ = collections.deque()\n        self.__full__ = False\n        self.__max__ = length\n \n    def append(self, x):\n        if self.__full__:\n            self.__data__.popleft()\n        self.__data__.append(x)\n        if self.size() == self.__max__:\n            self.__full__ = True\n \n    def get(self):\n        return self.__data__\n \n    def size(self):\n        return len(self.__data__)\n \n    def maxsize(self):\n        return self.__max__\n        \n    def __getitem__(self, n):\n        if n >= self.size():\n            return None\n        return self.__data__[n]\n\nfpos=8568\nfend=8788\nfhandle=file('storage/shared/Download/rom-0')\nfhandle.seek(fpos)\nchunk=\"*\"\namount=221\nwhile fpos < fend:\n    if fend-fpos < amount:\n        amount = amount\n        data = fhandle.read(amount)\n        fpos += len(data)\n        \nreader = BitReader(data)\nresult = ''\n   \nwindow = RingList(2048)\n    \nwhile True:\n    bit = reader.getBit()\n    if not bit:\n        char = reader.getByte()\n        result += chr(char)\n        window.append(char)\n    else:\n        bit = reader.getBit()\n        if bit:\n            offset = reader.getBits(7)\n            if offset == 0:\n                break\n        else:\n            offset = reader.getBits(11)\n        \n        lenField = reader.getBits(2)\n        if lenField < 3:\n            lenght = lenField + 2\n        else:\n            lenField <<= 2\n            lenField += reader.getBits(2)\n            if lenField < 15:\n                lenght = (lenField & 0x0f) + 5\n            else:\n                lenCounter = 0\n                lenField = reader.getBits(4)\n                while lenField == 15:\n                    lenField = reader.getBits(4)\n                    lenCounter += 1\n                lenght = 15*lenCounter + 8 + lenField\n        \n        for i in xrange(lenght):\n            char = window[-offset]\n            result += chr(char)\n            window.append(char)\n\ndef filter_non_printable(str):\n  return ''.join([c for c in str if ord(c) > 31 or ord(c) == 9])\n\ndef regex(path, text):\n    match = re.search(path, text)\n    if match:\n        return match.group()\n    else:\n        return None\nresult = filter_non_printable(result).decode('unicode_escape').encode('ascii','ignore');\n\nif 'TP-LINK' in result:\n    result = ''.join(result.split()).split('TP-LINK', 1)[0] + 'TP-LINK';\n    result = result.replace(\"TP-LINK\", \"\")\n    result = result[1:]\n\nif 'ZTE' in result:\n    result = ''.join(result.split()).split('ZTE', 1)[0] + 'ZTE';\n    result = result.replace(\"ZTE\", \"\")\n    result = result[1:]\n\nif 'tc160' in result:\n    result = ''.join(result.split()).split('tc160', 1)[0] + 'tc160';\n    result = result.replace(\"tc160\", \"\")\n    result = result[1:]\n      \nprint (('Router Password is: {0}').format(result))" > decoder.py && python2 decoder.py
  4. }
  5.  
  6. #python3
  7. function p3(){
  8. echo -e "import re\nimport collections\n\nclass BitReader:\n\n    def __init__(self, bytes):\n        self._bits = collections.deque()\n        \n        for byte in bytes:\n            byte = byte\n            for n in range(8):\n                self._bits.append(bool((byte >> (7-n)) & 1))\n            \n    def getBit(self):\n        return self._bits.popleft()\n        \n    def getBits(self, num):\n        res = 0\n        for i in range(num):\n            res += self.getBit() << num-1-i\n        return res\n        \n    def getByte(self):\n        return self.getBits(8)\n        \n    def __len__(self):\n        return len(self._bits)\n        \nclass RingList:\n    \n    def __init__(self, length):\n        self.__data__ = collections.deque()\n        self.__full__ = False\n        self.__max__ = length\n \n    def append(self, x):\n        if self.__full__:\n            self.__data__.popleft()\n        self.__data__.append(x)\n        if self.size() == self.__max__:\n            self.__full__ = True\n \n    def get(self):\n        return self.__data__\n \n    def size(self):\n        return len(self.__data__)\n \n    def maxsize(self):\n        return self.__max__\n        \n    def __getitem__(self, n):\n        if n >= self.size():\n            return None\n        return self.__data__[n]\n\nfpos = 8568\nfend = 8788\nfhandle = open('storage/shared/Download/rom-0', 'rb')\nfhandle.seek(fpos)\nchunk = b\"*\"\namount = 221\nwhile fpos < fend:\n    if fend - fpos < amount:\n        amount = amount\n        data = fhandle.read(amount)\n        fpos += len(data)\n        \nreader = BitReader(data)\nresult = ''\n   \nwindow = RingList(2048)\n    \nwhile True:\n    bit = reader.getBit()\n    if not bit:\n        char = reader.getByte()\n        result += chr(char)\n        window.append(char)\n    else:\n        bit = reader.getBit()\n        if bit:\n            offset = reader.getBits(7)\n            if offset == 0:\n                break\n        else:\n            offset = reader.getBits(11)\n        \n        lenField = reader.getBits(2)\n        if lenField < 3:\n            length = lenField + 2\n        else:\n            lenField <<= 2\n            lenField += reader.getBits(2)\n            if lenField < 15:\n                length = (lenField & 0x0f) + 5\n            else:\n                lenCounter = 0\n                lenField = reader.getBits(4)\n                while lenField == 15:\n                    lenField = reader.getBits(4)\n                    lenCounter += 1\n                length = 15 * lenCounter + 8 + lenField\n        \n        for i in range(length):\n            char = window[-offset]\n            result += chr(char)\n            window.append(char)\n\ndef filter_non_printable(string):\n    return ''.join([c for c in string if ord(c) > 31 or ord(c) == 9])\n\ndef regex(path, text):\n    match = re.search(path, text)\n    if match:\n        return match.group()\n    else:\n        return None\n\nresult = filter_non_printable(result).encode('ascii', 'ignore').decode('unicode_escape')\n\nif 'TP-LINK' in result:\n    result = ''.join(result.split()).split('TP-LINK', 1)[0] + 'TP-LINK'\n    result = result.replace(\"TP-LINK\", \"\")\n    result = result[1:]\n\nif 'ZTE' in result:\n    result = ''.join(result.split()).split('ZTE', 1)[0] + 'ZTE'\n    result = result.replace(\"ZTE\", \"\")\n    result = result[1:]\n\nif 'tc160' in result:\n    result = ''.join(result.split()).split('tc160', 1)[0] + 'tc160'\n    result = result.replace(\"tc160\", \"\")\n    result = result[1:]\n      \nprint (('Router Password is: {0}').format(result))" > decoder.py && python3 decoder.py
  9. }
  10.  
  11. clear
  12. echo "# Python Version :"
  13. echo "# 2"
  14. echo "# 3"
  15. read c
  16. if [[ "$c" = "2" ]]; then
  17. p2
  18. fi
  19. if [[ "$c" = "3" ]]; then
  20. p3
  21. fi
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement