Skip to main content

TP-Generator - PyPI





🛠️ Installation

From PyPI:

pip install TP-Generator

From Source:

git clone https://github.com/TPCyberSec/TP-Generator.git --branch <Branch/Tag>
cd TP-Generator
python -m build
python -m pip install dist/tp_generator-<version>-py3-none-any.whl

📘 Basic Usage

Utils

from TP_Generator import Utils

Utils.timestamp(10)
# OUTPUT: 1733597189

Utils.uuid(1)
# OUTPUT: '9daeab4b-b4cb-11ef-b79b-00a554ba203d'

Utils.RandomNumber(0, 1000)
# OUTPUT: 931

Utils.RandomString(10)
# OUTPUT: 'Wz<:1<.YSC'

Utils.toUTF8_Overlong('TPCyberSec', numBytes=2)
# OUTPUT: b'\xc1\x94\xc1\x90\xc1\x83\xc1\xb9\xc1\xa2\xc1\xa5\xc1\xb2\xc1\x93\xc1\xa5\xc1\xa3'

Utils.toUTF16('TPCyberSec')
# OUTPUT: b'T\x00P\x00C\x00y\x00b\x00e\x00r\x00S\x00e\x00c\x00'

Utils.toUTF32('TPCyberSec')
# OUTPUT: b'T\x00\x00\x00P\x00\x00\x00C\x00\x00\x00y\x00\x00\x00b\x00\x00\x00e\x00\x00\x00r\x00\x00\x00S\x00\x00\x00e\x00\x00\x00c\x00\x00\x00'

Utils.Str2Hex('TPCyberSec')
# OUTPUT: '54504379626572536563'

Utils.Hex2Str('54504379626572536563')
# OUTPUT: 'TPCyberSec'

Utils.base64Encode('TPCyberSec'.encode())
# OUTPUT: b'VFBDeWJlclNlYw=='

Utils.base64Decode('VFBDeWJlclNlYw==')
# OUTPUT: b'TPCyberSec'

Utils.base64UrlEncode('TPCyberSec'.encode())
# OUTPUT: b'VFBDeWJlclNlYw'

Utils.base64UrlDecode('VFBDeWJlclNlYw'.encode())
# OUTPUT: b'TPCyberSec'

Utils.UrlEncode('TP Cyber Security')
# OUTPUT: 'TP%20Cyber%20Security'

Utils.UrlDecode('TP%20Cyber%20Security')
# OUTPUT: 'TP Cyber Security'

Utils.HTMLEncode('TPCyberSec')
# OUTPUT: '&#x54;&#x50;&#x43;&#x79;&#x62;&#x65;&#x72;&#x53;&#x65;&#x63;'

Utils.HTMLEncode('TPCyberSec', type="dec")
# OUTPUT: '&#84;&#80;&#67;&#121;&#98;&#101;&#114;&#83;&#101;&#99;'

xml_string = '''<?xml version="1.0" encoding="UTF-8"?>
<note>
  <to>Tove</to>
  <from>Jani</from>
  <heading>Reminder</heading>
  <body>Don't forget me this weekend!</body>
</note>'''

json_object = Utils.XML2JSON(xml_string)
print(json_object)
# OUTPUT: {'note': {'to': {'#text': 'Tove'}, 'from': {'#text': 'Jani'}, 'heading': {'#text': 'Reminder'}, 'body': {'#text': "Don't forget me this weekend!"}}}

xml_string = Utils.JSON2XML(json_object)
print(xml_string)
# OUTPUT: <?xml version="1.0" encoding="UTF-8"?><note><to>Tove</to><from>Jani</from><heading>Reminder</heading><body>Don&apos;t forget me this weekend!</body></note>

Generating testcases for the Sniper attack

from TP_Generator import AttackTypes

InjectionPoints = [
	"RequestBody||id",
	"RequestBody||name"
]

Payloads = [
	[
		"' AND '1'='1",
		"' AND '1'='0"
	]
]

for testcases in AttackTypes.Sniper(InjectionPoints, Payloads):
	print(testcases)

# OUTPUT:
# {'RequestBody||id': "' AND '1'='1"}
# {'RequestBody||id': "' AND '1'='0"}
# {'RequestBody||name': "' AND '1'='1"}
# {'RequestBody||name': "' AND '1'='0"}

Generating testcases for the Batteringram attack

from TP_Generator import AttackTypes

InjectionPoints = [
	"RequestBody||id",
	"RequestBody||name"
]

Payloads = [
	[
		"' AND '1'='1",
		"' AND '1'='0"
	]
]

for testcases in AttackTypes.Batteringram(InjectionPoints, Payloads):
	print(testcases)

# OUTPUT:
# {'RequestBody||id': "' AND '1'='1", 'RequestBody||name': "' AND '1'='1"}
# {'RequestBody||id': "' AND '1'='0", 'RequestBody||name': "' AND '1'='0"}

Generating testcases for the Pitchfork attack

from TP_Generator import AttackTypes

InjectionPoints = [
	"RequestBody||id",
	"RequestBody||name"
]

Payloads = [
	[
		"' AND '1'='1",
		"' AND '1'='0"
	],
	[
		"' OR '1'='1",
		"' OR '1'='0"
	]
]

for testcases in AttackTypes.Pitchfork(InjectionPoints, Payloads):
	print(testcases)

# OUTPUT:
# {'RequestBody||id': "' AND '1'='1", 'RequestBody||name': "' OR '1'='1"}
# {'RequestBody||id': "' AND '1'='0", 'RequestBody||name': "' OR '1'='0"}

Generating testcases for the Clusterbomb attack

from TP_Generator import AttackTypes

InjectionPoints = [
	"RequestBody||id",
	"RequestBody||name"
]

Payloads = [
	[
		"' AND '1'='1",
		"' AND '1'='0",
		"' && '1'='1"
	],
	[
		"' OR '1'='1",
		"' OR '1'='0",
	]
]

for testcases in AttackTypes.Clusterbomb(InjectionPoints, Payloads):
	print(testcases)

# OUTPUT:
# {'RequestBody||id': "' AND '1'='1", 'RequestBody||name': "' OR '1'='1"}
# {'RequestBody||id': "' AND '1'='1", 'RequestBody||name': "' OR '1'='0"}
# {'RequestBody||id': "' AND '1'='0", 'RequestBody||name': "' OR '1'='1"}
# {'RequestBody||id': "' AND '1'='0", 'RequestBody||name': "' OR '1'='0"}
# {'RequestBody||id': "' && '1'='1", 'RequestBody||name': "' OR '1'='1"}
# {'RequestBody||id': "' && '1'='1", 'RequestBody||name': "' OR '1'='0"}

Generating the TOTP, HOTP code

from TP_Generator import MFA_Generator

print(MFA_Generator.TOTP("JBSWY3DPEHPK3PXP"))
# OUTPUT: 862642

print(MFA_Generator.HOTP("JBSWY3DPEHPK3PXP", 1))
# OUTPUT: 996554

Generating the WordPress Nonce for unauthenticated users with wp-rest action

from TP_Generator import Nonce_Generator

action = "wp-rest"
NONCE_KEY = "Y9(H0]_u8BA:^or^<^4>AM@EkgnAm`{Mpsq*H!Z-?8 OHe6ITmPY6kQSai)y3w{}"
NONCE_SALT = "xV&%-Ji<,`Clp+|bqt9<c%JrGpq!EiMy///`z0+<D1F<E%H14mha9Csm<TH;~TfH"

print(Nonce_Generator.WordPress_Nonce(nonce_action=action, WORDPRESS_NONCE_KEY=NONCE_KEY, WORDPRESS_NONCE_SALT=NONCE_SALT))
# OUTPUT: ac06630f78

(Un)parsing QR Code: VietQR (TAG 38), MoMo (TAG 38), VNPAYQR (TAG 26), KHQR_Individual (TAG 29), KHQR_Corporate (TAG 30), ThaiQR_CREDIT_TRANSFER (TAG 29), ThaiQR_BILL_PAYMENT (TAG 30)

from TP_Generator import QR_Generator

QR_String = "00020101021230340009nbcb@devb01090000001230204DEVB520459995303840540115802KH5912Coffee Klang6010Phnom Penh62300314Coffe Klang0010708A60086679917001316418876882756304CE7C"

QRObj = QR_Generator.initQR("KHQR_Corporate").parse(QR_String)
print(QRObj.dumps())
# OUTPUT: {"PayloadFormatIndicator": "01", "PointOfInitiationMethod": "12", "MerchantAccountInformation": {"BakongAccountID": "nbcb@devb", "MerchantID": "000000123", "AcquiringBank": "DEVB"}, "MerchantCategoryCode": "5999", "TransactionCurrency": "840", "TransactionAmount": "1", "CountryCode": "KH", "MerchantName": "Coffee Klang", "MerchantCity": "Phnom Penh", "AdditionalDataFieldTemplate": {"StoreLabel": "Coffe Klang001", "TerminalLabel": "A6008667"}, "CRC": "CE7C", "Timestamp": {"timestamp": "1641887688275"}}

QRObj.update("TransactionAmount", "1000")
print(QR_Generator.initQR("KHQR_Corporate").unparse(QRObj))
# OUTPUT: 00020101021230340009nbcb@devb01090000001230204DEVB520459995303840540410005802KH5912Coffee Klang6010Phnom Penh62300314Coffe Klang0010708A600866799170013164188768827563043ECD

👥 Contributors


📝 CHANGELOG

TP-Generator v2026.5.18

  • New: Utils: HTMLEncode, toUTF8_Overlong
  • Updated: Preserve the order of keys when parsing from XML to JSON by setting the ordered_dict parameter to True

TP-Generator v2026.4.30

  • New: Utils: XML2JSON, JSON2XML

TP-Generator v2026.3.29

  • Updated: toUTF16, toUTF32, base64Encode, base64Decode, base64UrlEncode, base64UrlDecode functions in Utils module

TP-Generator v2025.10.7

  • New: QR_Generator: ThaiQR_CREDIT_TRANSFER (TAG 29), ThaiQR_BILL_PAYMENT (TAG 30)

TP-Generator v2025.9.10

  • Fixed: base64Encode, base64Decode, base64UrlEncode, base64UrlDecode

TP-Generator v2025.1.1

  • New: Utils: toUTF16, toUTF32
  • New: QR_Generator: VNPAYQR (TAG 26)

TP-Generator v2024.12.12

  • New: Utils module
  • New: QR_Generator: Parse/Unparse QR code types: VietQR (TAG 38), MoMo (TAG 38), KHQR_Individual (TAG 29), KHQR_Corporate (TAG 30)

TP-Generator v2024.8.10

  • Updated: AttackTypes: Sniper, Batteringram, Pitchfork, Pitchfork
  • New: Nonce_Generator: Generate the WordPress Nonce

TP-Generator v2024.6.13

  • Updated: MFA_Generator: Fixed error generating TOTP, HOTP from jython

TP-Generator v2024.4.5

  • New: Bruteforcer_List: UUID1

TP-Generator v2024.3.3

  • New: MFA_Generator: TOTP (Time-based One-Time Password) and HOTP (HMAC-based One-Time Password)

TP-Generator v2024.3.1

  • New: Generate test cases for attack types: Sniper, Battering Ram, Pitchfork, Cluster Bomb

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

tp_generator-2026.5.18.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

tp_generator-2026.5.18-py3-none-any.whl (14.8 kB view details)

Uploaded Python 3

File details

Details for the file tp_generator-2026.5.18.tar.gz.

File metadata

  • Download URL: tp_generator-2026.5.18.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.0

File hashes

Hashes for tp_generator-2026.5.18.tar.gz
Algorithm Hash digest
SHA256 e886f9b7c1ef9a64155590fd01e0677f1a00e314639893ac94e54f3ad31049e9
MD5 344b00edc179b8b677803844f0aecffc
BLAKE2b-256 97a7dfbdc779c7b5f8eec2fa6497c31ab6f1e958405634df8861c3dfea268e7d

See more details on using hashes here.

File details

Details for the file tp_generator-2026.5.18-py3-none-any.whl.

File metadata

File hashes

Hashes for tp_generator-2026.5.18-py3-none-any.whl
Algorithm Hash digest
SHA256 390aceb8be58167a21a24c7ed2baea9888aa2b471a1b4e65d8b1bb254607008c
MD5 d57e40896f5e9ffe86dd6fafe59005ca
BLAKE2b-256 781ea4347017dba6c8722420b5f6357c3d23bb5a169d117e4259e5758e2845c4

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2026.5.18 This release

2 files

2026.4.30

2 files

2026.3.29

2 files

2025.10.7

2 files

2025.9.10

2 files

2025.1.1

2 files

2024.12.12

2 files

2024.8.10

3 files

2024.6.13

3 files

2024.4.5

3 files

2024.3.3

3 files

2024.3.1

3 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page