Skip to content

Instantly share code, notes, and snippets.

pub fn h2frames() []const u8 {
return
// PRI
"PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n" ++
// SETTINGS
"\x00\x00\x0C" ++
"\x04" ++
"\x00" ++
"\x00\x00\x00\x00" ++
"\x00\x02\x00\x00\x00\x00" ++
size_t h2frames_size(void) {
return 24 + 0xC + 9 + 0x00 + 9 + 0x3A + 9;
}
uint8_t *h2frames(void) {
return
// PRI
"PRI * HTTP/2.0\x0D\x0A\x0D\x0ASM\x0D\x0A\x0D\x0A"
// settings
"\x00\x00\x0C"
@masakielastic
masakielastic / h2frames.js
Last active October 17, 2024 22:17
h2frames.js
// console.log(Buffer.from(h2frames()).toString('hex').toUpperCase());
function h2frames() {
const pri = "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n";
const settings = [
'\x00\x00\x0C',
'\x04',
'\x00',
'\x00\x00\x00\x00',
<?php
function binToInt16(string $bytes): int
{
return (ord($bytes[0]) << 8) | ord($bytes[1]);
}
function binToInt24(string $bytes): int
{
return (ord($bytes[0]) << 16) |
<?php
class FrameHeader {
private $bytes;
public function __construct(string $bytes)
{
$this->bytes = $bytes;
}
@masakielastic
masakielastic / H2FrameIter.php
Last active July 21, 2024 22:39
HTTP/2 Frame Iterater
<?php
function H2FrameIter(string $chunk): Generator {
$chunk_size = strlen($chunk);
$index = 0;
$next = 0;
while (true) {
if ($next > $chunk_size || $next + 3 > $chunk_size) {
break;
@masakielastic
masakielastic / cgiserver.py
Last active July 13, 2024 18:43
CGIHTTPRequestHandler の使い方 (Python 3.13 で非推奨、Python 3.15 で削除)
from http.server import HTTPServer, CGIHTTPRequestHandler
import ssl
def run(host, port, ctx, handler):
server = HTTPServer((host, port), handler)
server.socket = ctx.wrap_socket(server.socket)
print('Server Starts - %s:%s' % (host, port))
try:
server.serve_forever()
@masakielastic
masakielastic / h2frames.py
Last active July 13, 2024 23:33
HTTP/2 frame example
def h2frames(name):
frames = {
'pri': b'PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n',
'settings': b'\x00\x00\x0C' \
b'\x04' \
b'\x00' \
b'\x00\x00\x00\x00) \
b'\x00\x02\x00\x00\x00\x00' \
b'\x00\x03\x00\x00\x00\x64',
'ack': b'\x00\x00\x00' \
@masakielastic
masakielastic / h2frames.rb
Last active July 7, 2024 20:20
http/2 frames example
def h2frames(name)
frames = {
'pri' => "PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n",
'settings' => "\x00\x00\x0C" +
"\x04" +
"\x00" +
"\x00\x00\x00\x00" +
"\x00\x02\x00\x00\x00\x00" +
"\x00\x03\x00\x00\x00\x64",
'ack' => "\x00\x00\x00" +
@masakielastic
masakielastic / h2frames.php
Last active July 7, 2024 20:21
HTTP/2 frames test data
<?php
function dump($chunk, $name) {
var_dump(
$name,
[
'size' => strlen($chunk),
'hex' => bin2hex($chunk)
]
);