Convert POST data to chunked transfer-encoded data (Note: splitting done by SQL keywords) >>> random.seed(0) >>> chunkSplitPostData("SELECT username,password FROM users") '5;4Xe90\\r\\nSELEC\\r\\n3;irWlc\\r\\nT u\\r\\n1;eT4zO\\r\\ns\\r\\n5;YB4hM\\r\\nernam\\r\\n9;2pUD8\\r\\ne,passw
(data)
| 5566 | return re.sub(r"\A(%s) " % '|'.join(re.escape(__) for __ in getPublicTypeMembers(POST_HINT, onlyValues=True)), "", value) |
| 5567 | |
| 5568 | def chunkSplitPostData(data): |
| 5569 | """ |
| 5570 | Convert POST data to chunked transfer-encoded data (Note: splitting done by SQL keywords) |
| 5571 | |
| 5572 | >>> random.seed(0) |
| 5573 | >>> chunkSplitPostData("SELECT username,password FROM users") |
| 5574 | '5;4Xe90\\r\\nSELEC\\r\\n3;irWlc\\r\\nT u\\r\\n1;eT4zO\\r\\ns\\r\\n5;YB4hM\\r\\nernam\\r\\n9;2pUD8\\r\\ne,passwor\\r\\n3;mp07y\\r\\nd F\\r\\n5;8RKXi\\r\\nROM u\\r\\n4;MvMhO\\r\\nsers\\r\\n0\\r\\n\\r\\n' |
| 5575 | """ |
| 5576 | |
| 5577 | length = len(data) |
| 5578 | retVal = "" |
| 5579 | index = 0 |
| 5580 | |
| 5581 | while index < length: |
| 5582 | chunkSize = randomInt(1) |
| 5583 | |
| 5584 | if index + chunkSize >= length: |
| 5585 | chunkSize = length - index |
| 5586 | |
| 5587 | salt = randomStr(5, alphabet=string.ascii_letters + string.digits) |
| 5588 | |
| 5589 | while chunkSize: |
| 5590 | candidate = data[index:index + chunkSize] |
| 5591 | |
| 5592 | if re.search(r"\b%s\b" % '|'.join(HTTP_CHUNKED_SPLIT_KEYWORDS), candidate, re.I): |
| 5593 | chunkSize -= 1 |
| 5594 | else: |
| 5595 | break |
| 5596 | |
| 5597 | index += chunkSize |
| 5598 | retVal += "%x;%s\r\n" % (chunkSize, salt) |
| 5599 | retVal += "%s\r\n" % candidate |
| 5600 | |
| 5601 | retVal += "0\r\n\r\n" |
| 5602 | |
| 5603 | return retVal |
| 5604 | |
| 5605 | def checkSums(): |
| 5606 | """ |