!c99Shell v. 1.0 pre-release build #16!

Software: Apache/2.2.3 (CentOS). PHP/5.1.6 

uname -a: Linux mx-ll-110-164-51-230.static.3bb.co.th 2.6.18-194.el5PAE #1 SMP Fri Apr 2 15:37:44
EDT 2010 i686
 

uid=48(apache) gid=48(apache) groups=48(apache) 

Safe-mode: OFF (not secure)

/usr/bin/   drwxr-xr-x
Free 52.28 GB of 127.8 GB (40.91%)
Home    Back    Forward    UPDIR    Refresh    Search    Buffer    Encoder    Tools    Proc.    FTP brute    Sec.    SQL    PHP-code    Update    Feedback    Self remove    Logout    


Viewing file:     huge_page_setup_helper.py (11.08 KB)      -rwxr-xr-x
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
Information:
Path /usr/bin/huge_page_setup_helper.py
Size 11.08 KB
MD5 fd647f80035d5c80a68ca0a99114eec5
Owner/Group root/root
Perms-rwxr-xr-x
Create time 25/04/2011 18:10:31
Access time 31/07/2024 14:38:10
MODIFY time 17/12/2009 03:55:22

FULL HEXDUMP
00000000
00000018
00000030
00000048
00000060
00000078
00000090
000000A8
000000C0
000000D8
000000F0
00000108
00000120
00000138
00000150
00000168
00000180
00000198
000001B0
000001C8
000001E0
000001F8
00000210
00000228
00000240
00000258
00000270
00000288
000002A0
000002B8
000002D0
000002E8
00000300
00000318
00000330
00000348
00000360
00000378
00000390
000003A8
000003C0
000003D8
000003F0
00000408
00000420
00000438
00000450
00000468
00000480
00000498
000004B0
000004C8
000004E0
000004F8
00000510
00000528
00000540
00000558
00000570
00000588
000005A0
000005B8
000005D0
000005E8
00000600
00000618
00000630
00000648
00000660
00000678
00000690
000006A8
000006C0
000006D8
000006F0
00000708
00000720
00000738
00000750
00000768
00000780
00000798
000007B0
000007C8
000007E0
000007F8
00000810
00000828
00000840
00000858
00000870
00000888
000008A0
000008B8
000008D0
000008E8
00000900
00000918
00000930
00000948
00000960
00000978
00000990
000009A8
000009C0
000009D8
000009F0
00000A08
00000A20
00000A38
00000A50
00000A68
00000A80
00000A98
00000AB0
00000AC8
00000AE0
00000AF8
00000B10
00000B28
00000B40
00000B58
00000B70
00000B88
00000BA0
00000BB8
00000BD0
00000BE8
00000C00
00000C18
00000C30
00000C48
00000C60
00000C78
00000C90
00000CA8
00000CC0
00000CD8
00000CF0
00000D08
00000D20
00000D38
00000D50
00000D68
00000D80
00000D98
00000DB0
00000DC8
00000DE0
00000DF8
00000E10
00000E28
00000E40
00000E58
00000E70
00000E88
00000EA0
00000EB8
00000ED0
00000EE8
00000F00
00000F18
00000F30
00000F48
00000F60
00000F78
00000F90
00000FA8
00000FC0
00000FD8
00000FF0
00001008
00001020
00001038
00001050
00001068
00001080
00001098
000010B0
000010C8
000010E0
000010F8
00001110
00001128
00001140
00001158
00001170
00001188
000011A0
000011B8
000011D0
000011E8
00001200
00001218
00001230
00001248
00001260
00001278
00001290
000012A8
000012C0
000012D8
000012F0
00001308
00001320
00001338
00001350
00001368
00001380
00001398
000013B0
000013C8
000013E0
000013F8
00001410
00001428
00001440
00001458
00001470
00001488
000014A0
000014B8
000014D0
000014E8
00001500
00001518
00001530
00001548
00001560
00001578
00001590
000015A8
000015C0
000015D8
000015F0
00001608
00001620
00001638
00001650
00001668
00001680
00001698
000016B0
000016C8
000016E0
000016F8
00001710
00001728
00001740
00001758
00001770
00001788
000017A0
000017B8
000017D0
000017E8
00001800
00001818
00001830
00001848
00001860
00001878
00001890
000018A8
000018C0
000018D8
000018F0
00001908
00001920
00001938
00001950
00001968
00001980
00001998
000019B0
000019C8
000019E0
000019F8
00001A10
00001A28
00001A40
00001A58
00001A70
00001A88
00001AA0
00001AB8
00001AD0
00001AE8
00001B00
00001B18
00001B30
00001B48
00001B60
00001B78
00001B90
00001BA8
00001BC0
00001BD8
00001BF0
00001C08
00001C20
00001C38
00001C50
00001C68
00001C80
00001C98
00001CB0
00001CC8
00001CE0
00001CF8
00001D10
00001D28
00001D40
00001D58
00001D70
00001D88
00001DA0
00001DB8
00001DD0
00001DE8
00001E00
00001E18
00001E30
00001E48
00001E60
00001E78
00001E90
00001EA8
00001EC0
00001ED8
00001EF0
00001F08
00001F20
00001F38
00001F50
00001F68
00001F80
00001F98
00001FB0
00001FC8
00001FE0
00001FF8
00002010
00002028
00002040
00002058
00002070
00002088
000020A0
000020B8
000020D0
000020E8
00002100
00002118
00002130
00002148
00002160
00002178
00002190
000021A8
000021C0
000021D8
000021F0
00002208
00002220
00002238
00002250
00002268
00002280
00002298
000022B0
000022C8
000022E0
000022F8
00002310
00002328
00002340
00002358
00002370
00002388
000023A0
000023B8
000023D0
000023E8
00002400
00002418
00002430
00002448
00002460
00002478
00002490
000024A8
000024C0
000024D8
000024F0
00002508
00002520
00002538
00002550
00002568
00002580
00002598
000025B0
000025C8
000025E0
000025F8
00002610
00002628
00002640
00002658
00002670
00002688
000026A0
000026B8
000026D0
000026E8
00002700
00002718
00002730
00002748
00002760
00002778
00002790
000027A8
000027C0
000027D8
000027F0
00002808
00002820
00002838
00002850
00002868
00002880
00002898
000028B0
000028C8
000028E0
000028F8
00002910
00002928
00002940
00002958
00002970
00002988
000029A0
000029B8
000029D0
000029E8
00002A00
00002A18
00002A30
00002A48
00002A60
00002A78
00002A90
00002AA8
00002AC0
00002AD8
00002AF0
00002B08
00002B20
00002B38
00002B50
00002B68
00002B80
00002B98
00002BB0
00002BC8
00002BE0
00002BF8
00002C10
00002C28
00002C40
23 21 2F 75 73 72 2F 62 69 6E 2F 70 79 74 68 6F 6E 0A 0A 23 0A 23 20 54
6F 6F 6C 20 74 6F 20 73 65 74 20 75 70 20 4C 69 6E 75 78 20 6C 61 72 67
65 20 70 61 67 65 20 73 75 70 70 6F 72 74 20 77 69 74 68 20 6D 69 6E 69
6D 61 6C 20 65 66 66 6F 72 74 0A 23 0A 23 20 62 79 20 4A 61 72 6F 64 20
57 69 6C 73 6F 6E 20 3C 6A 61 72 6F 64 40 72 65 64 68 61 74 2E 63 6F 6D
3E 0A 23 20 28 63 29 20 52 65 64 20 48 61 74 2C 20 49 6E 63 2E 2C 20 32
30 30 39 0A 23 0A 69 6D 70 6F 72 74 20 6F 73 0A 0A 64 65 62 75 67 20 3D
20 46 61 6C 73 65 0A 0A 23 20 63 6F 6E 66 69 67 20 66 69 6C 65 73 20 77
65 20 6E 65 65 64 20 61 63 63 65 73 73 20 74 6F 0A 73 79 73 63 74 6C 43
6F 6E 66 20 3D 20 22 2F 65 74 63 2F 73 79 73 63 74 6C 2E 63 6F 6E 66 22
0A 69 66 20 6E 6F 74 20 6F 73 2E 61 63 63 65 73 73 28 73 79 73 63 74 6C
43 6F 6E 66 2C 20 6F 73 2E 57 5F 4F 4B 29 3A 0A 20 20 20 20 70 72 69 6E
74 20 22 43 61 6E 6E 6F 74 20 61 63 63 65 73 73 20 25 73 22 20 25 20 73
79 73 63 74 6C 43 6F 6E 66 0A 20 20 20 20 69 66 20 64 65 62 75 67 20 3D
3D 20 46 61 6C 73 65 3A 0A 20 20 20 20 20 20 20 20 6F 73 2E 5F 65 78 69
74 28 31 29 0A 0A 23 20 54 68 69 73 20 66 69 6C 65 20 77 69 6C 6C 20 62
65 20 63 72 65 61 74 65 64 20 69 66 20 69 74 20 64 6F 65 73 6E 27 74 20
65 78 69 73 74 0A 6C 69 6D 69 74 73 43 6F 6E 66 20 3D 20 22 2F 65 74 63
2F 73 65 63 75 72 69 74 79 2F 6C 69 6D 69 74 73 2E 64 2F 68 75 67 65 70
61 67 65 73 2E 63 6F 6E 66 22 0A 0A 0A 23 20 46 69 67 75 72 65 20 6F 75
74 20 77 68 61 74 20 77 65 27 76 65 20 67 6F 74 20 69 6E 20 74 68 65 20
77 61 79 20 6F 66 20 6D 65 6D 6F 72 79 0A 6D 65 6D 49 6E 66 6F 20 3D 20
6F 70 65 6E 28 22 2F 70 72 6F 63 2F 6D 65 6D 69 6E 66 6F 22 29 2E 72 65
61 64 6C 69 6E 65 73 28 29 0A 6D 65 6D 54 6F 74 61 6C 20 3D 20 30 0A 68
75 67 65 50 61 67 65 73 20 3D 20 30 0A 68 75 67 65 50 61 67 65 53 69 7A
65 20 3D 20 30 0A 0A 66 6F 72 20 6C 69 6E 65 20 69 6E 20 6D 65 6D 49 6E
66 6F 3A 0A 20 20 20 20 69 66 20 6C 69 6E 65 2E 73 74 61 72 74 73 77 69
74 68 28 22 4D 65 6D 54 6F 74 61 6C 3A 22 29 3A 0A 20 20 20 20 20 20 20
20 6D 65 6D 54 6F 74 61 6C 20 3D 20 69 6E 74 28 6C 69 6E 65 2E 73 70 6C
69 74 28 29 5B 31 5D 29 0A 20 20 20 20 20 20 20 20 62 72 65 61 6B 0A 0A
66 6F 72 20 6C 69 6E 65 20 69 6E 20 6D 65 6D 49 6E 66 6F 3A 0A 20 20 20
20 69 66 20 6C 69 6E 65 2E 73 74 61 72 74 73 77 69 74 68 28 22 48 75 67
65 50 61 67 65 73 5F 54 6F 74 61 6C 3A 22 29 3A 0A 20 20 20 20 20 20 20
20 68 75 67 65 50 61 67 65 73 20 3D 20 69 6E 74 28 6C 69 6E 65 2E 73 70
6C 69 74 28 29 5B 31 5D 29 0A 20 20 20 20 20 20 20 20 62 72 65 61 6B 0A
0A 66 6F 72 20 6C 69 6E 65 20 69 6E 20 6D 65 6D 49 6E 66 6F 3A 0A 20 20
20 20 69 66 20 6C 69 6E 65 2E 73 74 61 72 74 73 77 69 74 68 28 22 48 75
67 65 70 61 67 65 73 69 7A 65 3A 22 29 3A 0A 20 20 20 20 20 20 20 20 68
75 67 65 50 61 67 65 53 69 7A 65 20 3D 20 69 6E 74 28 6C 69 6E 65 2E 73
70 6C 69 74 28 29 5B 31 5D 29 0A 20 20 20 20 20 20 20 20 62 72 65 61 6B
0A 0A 69 66 20 68 75 67 65 50 61 67 65 53 69 7A 65 20 3D 3D 20 30 3A 0A
20 20 20 20 70 72 69 6E 74 20 22 41 62 6F 72 74 69 6E 67 2C 20 63 61 6E
6E 6F 74 20 64 65 74 65 72 6D 69 6E 65 20 73 79 73 74 65 6D 20 68 75 67
65 20 70 61 67 65 20 73 69 7A 65 21 22 0A 20 20 20 20 6F 73 2E 5F 65 78
69 74 28 31 29 0A 0A 23 20 47 65 74 20 69 6E 69 74 69 61 6C 20 73 79 73
63 74 6C 20 73 65 74 74 69 6E 67 73 0A 73 68 6D 6D 61 78 20 3D 20 30 0A
6E 72 5F 68 75 67 65 70 61 67 65 73 20 3D 20 30 0A 68 75 67 65 47 49 44
20 3D 20 30 0A 0A 73 79 73 63 74 6C 43 75 72 20 3D 20 6F 73 2E 70 6F 70
65 6E 28 22 2F 73 62 69 6E 2F 73 79 73 63 74 6C 20 2D 61 22 29 2E 72 65
61 64 6C 69 6E 65 73 28 29 0A 0A 66 6F 72 20 6C 69 6E 65 20 69 6E 20 73
79 73 63 74 6C 43 75 72 3A 0A 20 20 20 20 69 66 20 6C 69 6E 65 2E 73 74
61 72 74 73 77 69 74 68 28 22 6B 65 72 6E 65 6C 2E 73 68 6D 6D 61 78 20
3D 20 22 29 3A 0A 20 20 20 20 20 20 20 20 73 68 6D 6D 61 78 20 3D 20 69
6E 74 28 6C 69 6E 65 2E 73 70 6C 69 74 28 29 5B 32 5D 29 0A 20 20 20 20
20 20 20 20 62 72 65 61 6B 0A 0A 66 6F 72 20 6C 69 6E 65 20 69 6E 20 73
79 73 63 74 6C 43 75 72 3A 0A 20 20 20 20 69 66 20 6C 69 6E 65 2E 73 74
61 72 74 73 77 69 74 68 28 22 76 6D 2E 6E 72 5F 68 75 67 65 70 61 67 65
73 20 3D 20 22 29 3A 0A 20 20 20 20 20 20 20 20 6E 72 5F 68 75 67 65 70
61 67 65 73 20 3D 20 69 6E 74 28 6C 69 6E 65 2E 73 70 6C 69 74 28 29 5B
32 5D 29 0A 20 20 20 20 20 20 20 20 62 72 65 61 6B 0A 0A 66 6F 72 20 6C
69 6E 65 20 69 6E 20 73 79 73 63 74 6C 43 75 72 3A 0A 20 20 20 20 69 66
20 6C 69 6E 65 2E 73 74 61 72 74 73 77 69 74 68 28 22 76 6D 2E 68 75 67
65 74 6C 62 5F 73 68 6D 5F 67 72 6F 75 70 20 3D 20 22 29 3A 0A 20 20 20
20 20 20 20 20 68 75 67 65 47 49 44 20 3D 20 69 6E 74 28 6C 69 6E 65 2E
73 70 6C 69 74 28 29 5B 32 5D 29 0A 20 20 20 20 20 20 20 20 62 72 65 61
6B 0A 0A 0A 23 20 74 72 61 6E 73 6C 61 74 65 20 67 72 6F 75 70 20 69 6E
74 6F 20 74 65 78 74 75 61 6C 20 76 65 72 73 69 6F 6E 0A 68 75 67 65 47
49 44 4E 61 6D 65 20 3D 20 22 6E 75 6C 6C 22 0A 67 72 6F 75 70 4E 61 6D
65 73 20 3D 20 6F 73 2E 70 6F 70 65 6E 28 22 2F 75 73 72 2F 62 69 6E 2F
67 65 74 65 6E 74 20 67 72 6F 75 70 22 29 2E 72 65 61 64 6C 69 6E 65 73
28 29 0A 66 6F 72 20 6C 69 6E 65 20 69 6E 20 67 72 6F 75 70 4E 61 6D 65
73 3A 0A 20 20 20 20 63 75 72 47 49 44 20 3D 20 69 6E 74 28 6C 69 6E 65
2E 73 70 6C 69 74 28 22 3A 22 29 5B 32 5D 29 0A 20 20 20 20 69 66 20 63
75 72 47 49 44 20 3D 3D 20 68 75 67 65 47 49 44 3A 0A 20 20 20 20 20 20
20 20 68 75 67 65 47 49 44 4E 61 6D 65 20 3D 20 6C 69 6E 65 2E 73 70 6C
69 74 28 22 3A 22 29 5B 30 5D 0A 20 20 20 20 20 20 20 20 62 72 65 61 6B
0A 0A 0A 23 20 64 75 6D 70 20 73 79 73 74 65 6D 20 63 6F 6E 66 69 67 20
61 73 20 77 65 20 73 65 65 20 69 74 20 62 65 66 6F 72 65 20 77 65 20 73
74 61 72 74 20 74 77 65 61 6B 69 6E 67 20 69 74 0A 70 72 69 6E 74 20 22
43 75 72 72 65 6E 74 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 3A 22 0A
70 72 69 6E 74 20 22 20 2A 20 54 6F 74 61 6C 20 53 79 73 74 65 6D 20 4D
65 6D 6F 72 79 2E 2E 2E 2E 2E 2E 3A 20 25 36 64 20 4D 42 22 20 25 20 28
6D 65 6D 54 6F 74 61 6C 20 2F 20 31 30 32 34 29 0A 70 72 69 6E 74 20 22
20 2A 20 53 68 61 72 65 64 20 4D 65 6D 20 4D 61 78 20 4D 61 70 70 69 6E
67 2E 2E 2E 3A 20 25 36 64 20 4D 42 22 20 25 20 28 73 68 6D 6D 61 78 20
2F 20 28 31 30 32 34 20 2A 20 31 30 32 34 29 29 0A 70 72 69 6E 74 20 22
20 2A 20 53 79 73 74 65 6D 20 48 75 67 65 20 50 61 67 65 20 53 69 7A 65
2E 2E 2E 2E 3A 20 25 36 64 20 4D 42 22 20 25 20 28 68 75 67 65 50 61 67
65 53 69 7A 65 20 2F 20 31 30 32 34 29 0A 70 72 69 6E 74 20 22 20 2A 20
4E 75 6D 62 65 72 20 6F 66 20 48 75 67 65 20 50 61 67 65 73 2E 2E 2E 2E
2E 3A 20 25 36 64 22 20 20 20 20 25 20 68 75 67 65 50 61 67 65 73 0A 70
72 69 6E 74 20 22 20 2A 20 54 6F 74 61 6C 20 73 69 7A 65 20 6F 66 20 48
75 67 65 20 50 61 67 65 73 2E 3A 20 25 36 64 20 4D 42 22 20 25 20 28 68
75 67 65 50 61 67 65 73 20 2A 20 68 75 67 65 50 61 67 65 53 69 7A 65 20
2F 20 31 30 32 34 29 0A 70 72 69 6E 74 20 22 20 2A 20 52 65 6D 61 69 6E
69 6E 67 20 53 79 73 74 65 6D 20 4D 65 6D 6F 72 79 2E 2E 3A 20 25 36 64
20 4D 42 22 20 25 20 28 28 6D 65 6D 54 6F 74 61 6C 20 2F 20 31 30 32 34
29 20 2D 20 28 68 75 67 65 50 61 67 65 73 20 2A 20 68 75 67 65 50 61 67
65 53 69 7A 65 20 2F 20 31 30 32 34 29 29 0A 70 72 69 6E 74 20 22 20 2A
20 48 75 67 65 20 50 61 67 65 20 55 73 65 72 20 47 72 6F 75 70 2E 2E 2E
2E 2E 3A 20 20 25 73 20 28 25 64 29 22 20 25 20 28 68 75 67 65 47 49 44
4E 61 6D 65 2C 20 68 75 67 65 47 49 44 29 0A 70 72 69 6E 74 0A 0A 0A 23
20 64 65 74 65 72 6D 69 6E 65 20 73 6F 6D 65 20 73 61 6E 69 74 79 20 73
61 66 65 67 75 61 72 64 73 0A 68 61 6C 66 4F 66 4D 65 6D 20 3D 20 6D 65
6D 54 6F 74 61 6C 20 2F 20 32 0A 61 6C 6C 4D 65 6D 4C 65 73 73 32 47 20
3D 20 6D 65 6D 54 6F 74 61 6C 20 2D 20 32 30 34 38 30 30 30 0A 0A 69 66
20 68 61 6C 66 4F 66 4D 65 6D 20 3E 3D 20 61 6C 6C 4D 65 6D 4C 65 73 73
32 47 3A 0A 20 20 20 20 6D 61 78 48 75 67 65 50 61 67 65 52 65 71 4B 42
20 3D 20 68 61 6C 66 4F 66 4D 65 6D 0A 65 6C 73 65 3A 0A 20 20 20 20 6D
61 78 48 75 67 65 50 61 67 65 52 65 71 4B 42 20 3D 20 61 6C 6C 4D 65 6D
4C 65 73 73 32 47 0A 0A 6D 61 78 48 75 67 65 50 61 67 65 52 65 71 4D 42
20 3D 20 6D 61 78 48 75 67 65 50 61 67 65 52 65 71 4B 42 20 2F 20 31 30
32 34 0A 6D 61 78 48 75 67 65 50 61 67 65 52 65 71 20 3D 20 6D 61 78 48
75 67 65 50 61 67 65 52 65 71 4B 42 20 2F 20 68 75 67 65 50 61 67 65 53
69 7A 65 0A 0A 0A 23 20 61 73 6B 20 68 6F 77 20 6D 65 6D 6F 72 79 20 74
68 65 79 20 77 61 6E 74 20 74 6F 20 61 6C 6C 6F 63 61 74 65 20 66 6F 72
20 68 75 67 65 20 70 61 67 65 73 0A 75 73 65 72 49 6E 20 3D 20 4E 6F 6E
65 0A 77 68 69 6C 65 20 6E 6F 74 20 75 73 65 72 49 6E 3A 0A 20 20 20 20
74 72 79 3A 0A 20 20 20 20 20 20 20 20 75 73 65 72 49 6E 20 3D 20 72 61
77 5F 69 6E 70 75 74 28 22 48 6F 77 20 6D 75 63 68 20 6D 65 6D 6F 72 79
20 77 6F 75 6C 64 20 79 6F 75 20 6C 69 6B 65 20 74 6F 20 61 6C 6C 6F 63
61 74 65 20 66 6F 72 20 68 75 67 65 20 70 61 67 65 73 3F 20 22 0A 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 22 28 69 6E 70 75 74 20 69 6E 20 4D 42 2C 20 75 6E 6C 65 73 73 20 70
6F 73 74 66 69 78 65 64 20 77 69 74 68 20 47 42 29 3A 20 22 29 0A 09 69
66 20 75 73 65 72 49 6E 5B 2D 32 3A 5D 20 3D 3D 20 22 47 42 22 3A 0A 20
20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 48 75 67 65 50 61 67 65 52
65 71 4D 42 20 3D 20 69 6E 74 28 75 73 65 72 49 6E 5B 30 3A 2D 32 5D 29
20 2A 20 31 30 32 34 0A 09 65 6C 69 66 20 75 73 65 72 49 6E 5B 2D 31 3A
5D 20 3D 3D 20 22 47 22 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 75 73
65 72 48 75 67 65 50 61 67 65 52 65 71 4D 42 20 3D 20 69 6E 74 28 75 73
65 72 49 6E 5B 30 3A 2D 31 5D 29 20 2A 20 31 30 32 34 0A 09 65 6C 69 66
20 75 73 65 72 49 6E 5B 2D 32 3A 5D 20 3D 3D 20 22 4D 42 22 3A 0A 20 20
20 20 20 20 20 20 20 20 20 20 75 73 65 72 48 75 67 65 50 61 67 65 52 65
71 4D 42 20 3D 20 69 6E 74 28 75 73 65 72 49 6E 5B 30 3A 2D 32 5D 29 0A
09 65 6C 69 66 20 75 73 65 72 49 6E 5B 2D 31 3A 5D 20 3D 3D 20 22 4D 22
3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 48 75 67 65 50 61
67 65 52 65 71 4D 42 20 3D 20 69 6E 74 28 75 73 65 72 49 6E 5B 30 3A 2D
31 5D 29 0A 20 20 20 20 20 20 20 20 65 6C 73 65 3A 0A 20 20 20 20 20 20
20 20 20 20 20 20 75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4D 42 20
3D 20 69 6E 74 28 75 73 65 72 49 6E 29 0A 20 20 20 20 20 20 20 20 69 66
20 75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4D 42 20 3E 20 6D 61 78
48 75 67 65 50 61 67 65 52 65 71 4D 42 3A 0A 20 20 20 20 20 20 20 20 20
20 20 20 75 73 65 72 49 6E 20 3D 20 4E 6F 6E 65 0A 20 20 20 20 20 20 20
20 20 20 20 20 70 72 69 6E 74 20 22 53 6F 72 72 79 2C 20 74 68 65 20 6D
6F 73 74 20 49 27 6C 6C 20 6C 65 74 20 79 6F 75 20 61 6C 6C 6F 63 61 74
65 20 69 73 20 25 64 20 4D 42 2C 20 74 72 79 20 61 67 61 69 6E 21 22 20
25 20 6D 61 78 48 75 67 65 50 61 67 65 52 65 71 4D 42 0A 20 20 20 20 20
20 20 20 65 6C 69 66 20 75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4D
42 20 3C 20 28 68 75 67 65 50 61 67 65 53 69 7A 65 20 2F 20 31 30 32 34
29 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 49 6E 20 3D 20
4E 6F 6E 65 0A 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22
53 6F 72 72 79 2C 20 61 6C 6C 6F 63 61 74 69 6F 6E 20 6D 75 73 74 20 62
65 20 61 74 20 6C 65 61 73 74 20 61 20 70 61 67 65 27 73 20 77 6F 72 74
68 21 22 0A 20 20 20 20 20 20 20 20 65 6C 73 65 3A 0A 20 20 20 20 20 20
20 20 20 20 20 20 62 72 65 61 6B 0A 20 20 20 20 65 78 63 65 70 74 20 56
61 6C 75 65 45 72 72 6F 72 3A 0A 20 20 20 20 20 20 20 20 75 73 65 72 49
6E 20 3D 20 4E 6F 6E 65 0A 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22
49 6E 70 75 74 20 6D 75 73 74 20 62 65 20 61 6E 20 69 6E 74 65 67 65 72
2C 20 70 6C 65 61 73 65 20 74 72 79 20 61 67 61 69 6E 21 22 0A 75 73 65
72 48 75 67 65 50 61 67 65 52 65 71 4B 42 20 3D 20 75 73 65 72 48 75 67
65 50 61 67 65 52 65 71 4D 42 20 2A 20 31 30 32 34 0A 75 73 65 72 48 75
67 65 50 61 67 65 73 52 65 71 20 3D 20 75 73 65 72 48 75 67 65 50 61 67
65 52 65 71 4B 42 20 2F 20 68 75 67 65 50 61 67 65 53 69 7A 65 0A 70 72
69 6E 74 20 22 4F 6B 61 79 2C 20 77 65 27 6C 6C 20 74 72 79 20 74 6F 20
61 6C 6C 6F 63 61 74 65 20 25 64 20 4D 42 20 66 6F 72 20 68 75 67 65 20
70 61 67 65 73 2E 2E 2E 22 20 25 20 75 73 65 72 48 75 67 65 50 61 67 65
52 65 71 4D 42 0A 70 72 69 6E 74 0A 0A 0A 23 20 73 6F 6D 65 20 62 61 73
69 63 20 75 73 65 72 20 69 6E 70 75 74 20 76 61 6C 69 64 61 74 69 6F 6E
0A 62 61 64 63 68 61 72 73 20 3D 20 6C 69 73 74 28 27 20 5C 5C 5C 27 22
3A 3B 7E 60 21 24 5E 26 2A 28 29 7B 7D 5B 5D 3F 2F 3E 3C 2C 27 29 0A 69
6E 70 75 74 49 73 56 61 6C 69 64 20 3D 20 46 61 6C 73 65 0A 23 20 61 73
6B 20 66 6F 72 20 74 68 65 20 6E 61 6D 65 20 6F 66 20 74 68 65 20 67 72
6F 75 70 20 61 6C 6C 6F 77 65 64 20 61 63 63 65 73 73 20 74 6F 20 68 75
67 65 20 70 61 67 65 73 0A 77 68 69 6C 65 20 69 6E 70 75 74 49 73 56 61
6C 69 64 20 3D 3D 20 46 61 6C 73 65 3A 0A 20 20 20 20 66 6F 75 6E 64 62
61 64 20 3D 20 46 61 6C 73 65 0A 20 20 20 20 75 73 65 72 47 72 6F 75 70
52 65 71 20 3D 20 72 61 77 5F 69 6E 70 75 74 28 22 57 68 61 74 20 67 72
6F 75 70 20 73 68 6F 75 6C 64 20 68 61 76 65 20 61 63 63 65 73 73 20 74
6F 20 74 68 65 20 68 75 67 65 20 70 61 67 65 73 3F 20 22 0A 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20
20 22 28 54 68 65 20 67 72 6F 75 70 20 77 69 6C 6C 20 62 65 20 63 72 65
61 74 65 64 2C 20 69 66 20 6E 65 65 64 20 62 65 29 3A 20 22 29 0A 20 20
20 20 69 66 20 6E 6F 74 20 75 73 65 72 47 72 6F 75 70 52 65 71 3A 0A 20
20 20 20 20 20 20 20 66 6F 75 6E 64 62 61 64 20 3D 20 54 72 75 65 0A 20
20 20 20 20 20 20 20 70 72 69 6E 74 20 22 59 6F 75 20 6D 75 73 74 20 69
6E 70 75 74 20 61 20 67 72 6F 75 70 20 6E 61 6D 65 2C 20 70 6C 65 61 73
65 20 74 72 79 20 61 67 61 69 6E 21 22 0A 20 20 20 20 65 6C 69 66 20 75
73 65 72 47 72 6F 75 70 52 65 71 5B 30 5D 2E 69 73 64 69 67 69 74 28 29
20 6F 72 20 75 73 65 72 47 72 6F 75 70 52 65 71 5B 30 5D 20 3D 3D 20 22
2D 22 3A 0A 20 20 20 20 20 20 20 20 66 6F 75 6E 64 62 61 64 20 3D 20 54
72 75 65 0A 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22 47 72 6F 75 70
20 6E 61 6D 65 73 20 63 61 6E 6E 6F 74 20 73 74 61 72 74 20 77 69 74 68
20 61 20 6E 75 6D 62 65 72 20 6F 72 20 64 61 73 68 2C 20 70 6C 65 61 73
65 20 74 72 79 20 61 67 61 69 6E 21 22 0A 20 20 20 20 66 6F 72 20 63 68
61 72 20 69 6E 20 62 61 64 63 68 61 72 73 3A 0A 20 20 20 20 20 20 20 20
69 66 20 63 68 61 72 20 69 6E 20 75 73 65 72 47 72 6F 75 70 52 65 71 3A
0A 20 20 20 20 20 20 20 20 20 20 20 20 66 6F 75 6E 64 62 61 64 20 3D 20
54 72 75 65 0A 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22
49 6C 6C 65 67 61 6C 20 63 68 61 72 61 63 74 65 72 73 20 69 6E 20 67 72
6F 75 70 20 6E 61 6D 65 2C 20 70 6C 65 61 73 65 20 74 72 79 20 61 67 61
69 6E 21 22 0A 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6B 0A 20
20 20 20 69 66 20 6C 65 6E 28 75 73 65 72 47 72 6F 75 70 52 65 71 29 20
3E 20 31 36 3A 0A 20 20 20 20 20 20 20 20 66 6F 75 6E 64 62 61 64 20 3D
20 54 72 75 65 0A 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22 47 72 6F
75 70 20 6E 61 6D 65 73 20 63 61 6E 27 74 20 62 65 20 6D 6F 72 65 20 74
68 61 6E 20 31 36 20 63 68 61 72 61 63 61 74 65 72 73 2C 20 70 6C 65 61
73 65 20 74 72 79 20 61 67 61 69 6E 21 22 0A 20 20 20 20 69 66 20 66 6F
75 6E 64 62 61 64 20 3D 3D 20 46 61 6C 73 65 3A 0A 20 20 20 20 20 20 20
20 69 6E 70 75 74 49 73 56 61 6C 69 64 20 3D 20 54 72 75 65 0A 70 72 69
6E 74 20 22 4F 6B 61 79 2C 20 77 65 27 6C 6C 20 67 69 76 65 20 67 72 6F
75 70 20 25 73 20 61 63 63 65 73 73 20 74 6F 20 74 68 65 20 68 75 67 65
20 70 61 67 65 73 22 20 25 20 75 73 65 72 47 72 6F 75 70 52 65 71 0A 0A
0A 23 20 73 65 65 20 69 66 20 67 72 6F 75 70 20 61 6C 72 65 61 64 79 20
65 78 69 73 74 73 2C 20 75 73 65 20 69 74 20 69 66 20 69 74 20 64 6F 65
73 2C 20 69 66 20 6E 6F 74 2C 20 63 72 65 61 74 65 20 69 74 0A 75 73 65
72 47 49 44 52 65 71 20 3D 20 2D 31 0A 66 6F 72 20 6C 69 6E 65 20 69 6E
20 67 72 6F 75 70 4E 61 6D 65 73 3A 0A 20 20 20 20 63 75 72 47 72 6F 75
70 4E 61 6D 65 20 3D 20 6C 69 6E 65 2E 73 70 6C 69 74 28 22 3A 22 29 5B
30 5D 0A 20 20 20 20 69 66 20 63 75 72 47 72 6F 75 70 4E 61 6D 65 20 3D
3D 20 75 73 65 72 47 72 6F 75 70 52 65 71 3A 0A 20 20 20 20 20 20 20 20
75 73 65 72 47 49 44 52 65 71 20 3D 20 69 6E 74 28 6C 69 6E 65 2E 73 70
6C 69 74 28 22 3A 22 29 5B 32 5D 29 0A 20 20 20 20 20 20 20 20 62 72 65
61 6B 0A 0A 69 66 20 75 73 65 72 47 49 44 52 65 71 20 3E 20 2D 31 3A 0A
20 20 20 20 70 72 69 6E 74 20 22 47 72 6F 75 70 20 25 73 20 28 67 69 64
20 25 64 29 20 61 6C 72 65 61 64 79 20 65 78 69 73 74 73 2C 20 77 65 27
6C 6C 20 75 73 65 20 69 74 22 20 25 20 28 75 73 65 72 47 72 6F 75 70 52
65 71 2C 20 75 73 65 72 47 49 44 52 65 71 29 0A 65 6C 73 65 3A 0A 20 20
20 20 69 66 20 64 65 62 75 67 20 3D 3D 20 46 61 6C 73 65 3A 0A 20 20 20
20 09 6F 73 2E 70 6F 70 65 6E 28 22 2F 75 73 72 2F 73 62 69 6E 2F 67 72
6F 75 70 61 64 64 20 25 73 22 20 25 20 75 73 65 72 47 72 6F 75 70 52 65
71 29 0A 20 20 20 20 65 6C 73 65 3A 0A 20 20 20 20 20 20 20 20 70 72 69
6E 74 20 22 2F 75 73 72 2F 73 62 69 6E 2F 67 72 6F 75 70 61 64 64 20 25
73 22 20 25 20 75 73 65 72 47 72 6F 75 70 52 65 71 0A 20 20 20 20 67 72
6F 75 70 4E 61 6D 65 73 20 3D 20 6F 73 2E 70 6F 70 65 6E 28 22 2F 75 73
72 2F 62 69 6E 2F 67 65 74 65 6E 74 20 67 72 6F 75 70 20 25 73 22 20 25
20 75 73 65 72 47 72 6F 75 70 52 65 71 29 2E 72 65 61 64 6C 69 6E 65 73
28 29 0A 20 20 20 20 66 6F 72 20 6C 69 6E 65 20 69 6E 20 67 72 6F 75 70
4E 61 6D 65 73 3A 0A 20 20 20 20 20 20 20 20 63 75 72 47 72 6F 75 70 4E
61 6D 65 20 3D 20 6C 69 6E 65 2E 73 70 6C 69 74 28 22 3A 22 29 5B 30 5D
0A 20 20 20 20 20 20 20 20 69 66 20 63 75 72 47 72 6F 75 70 4E 61 6D 65
20 3D 3D 20 75 73 65 72 47 72 6F 75 70 52 65 71 3A 0A 20 20 20 20 20 20
20 20 20 20 20 20 75 73 65 72 47 49 44 52 65 71 20 3D 20 69 6E 74 28 6C
69 6E 65 2E 73 70 6C 69 74 28 22 3A 22 29 5B 32 5D 29 0A 20 20 20 20 20
20 20 20 20 20 20 20 62 72 65 61 6B 0A 20 20 20 20 70 72 69 6E 74 20 22
43 72 65 61 74 65 64 20 67 72 6F 75 70 20 25 73 20 28 67 69 64 20 25 64
29 20 66 6F 72 20 68 75 67 65 20 70 61 67 65 20 75 73 65 22 20 25 20 28
75 73 65 72 47 72 6F 75 70 52 65 71 2C 20 75 73 65 72 47 49 44 52 65 71
29 0A 70 72 69 6E 74 0A 0A 0A 23 20 62 61 73 69 63 20 75 73 65 72 20 69
6E 70 75 74 20 76 61 6C 69 64 61 74 69 6F 6E 2C 20 74 61 6B 65 20 32 0A
23 20 73 70 61 63 65 20 69 73 20 76 61 6C 69 64 20 69 6E 20 74 68 69 73
20 63 61 73 65 2C 20 77 61 73 6E 27 74 20 69 6E 20 74 68 65 20 70 72 69
6F 72 20 69 6E 63 61 72 6E 61 74 69 6F 6E 0A 62 61 64 63 68 61 72 73 20
3D 20 6C 69 73 74 28 27 5C 5C 5C 27 22 3A 3B 7E 60 21 24 5E 26 2A 28 29
7B 7D 5B 5D 3F 2F 3E 3C 2C 27 29 0A 69 6E 70 75 74 49 73 56 61 6C 69 64
20 3D 20 46 61 6C 73 65 0A 23 20 61 73 6B 20 66 6F 72 20 75 73 65 72 28
73 29 20 74 68 61 74 20 73 68 6F 75 6C 64 20 62 65 20 69 6E 20 74 68 65
20 68 75 67 65 20 70 61 67 65 20 61 63 63 65 73 73 20 67 72 6F 75 70 0A
77 68 69 6C 65 20 69 6E 70 75 74 49 73 56 61 6C 69 64 20 3D 3D 20 46 61
6C 73 65 3A 0A 20 20 20 20 66 6F 75 6E 64 62 61 64 20 3D 20 46 61 6C 73
65 0A 20 20 20 20 75 73 65 72 55 73 65 72 73 52 65 71 20 3D 20 72 61 77
5F 69 6E 70 75 74 28 22 57 68 61 74 20 75 73 65 72 28 73 29 20 73 68 6F
75 6C 64 20 68 61 76 65 20 61 63 63 65 73 73 20 74 6F 20 74 68 65 20 68
75 67 65 20 70 61 67 65 73 20 28 73 70 61 63 65 2D 64 65 6C 69 6D 69 74
65 64 20 6C 69 73 74 2C 20 75 73 65 72 73 20 63 72 65 61 74 65 64 20 61
73 20 6E 65 65 64 65 64 29 3F 20 22 29 0A 20 20 20 20 66 6F 72 20 63 68
61 72 20 69 6E 20 62 61 64 63 68 61 72 73 3A 0A 20 20 20 20 20 20 20 20
69 66 20 63 68 61 72 20 69 6E 20 75 73 65 72 55 73 65 72 73 52 65 71 3A
0A 20 20 20 20 20 20 20 20 20 20 20 20 66 6F 75 6E 64 62 61 64 20 3D 20
54 72 75 65 0A 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22
49 6C 6C 65 67 61 6C 20 63 68 61 72 61 63 74 65 72 73 20 69 6E 20 75 73
65 72 20 6E 61 6D 65 28 73 29 20 6F 72 20 69 6E 76 61 6C 69 64 20 6C 69
73 74 20 66 6F 72 6D 61 74 2C 20 70 6C 65 61 73 65 20 74 72 79 20 61 67
61 69 6E 21 22 0A 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6B 0A
20 20 20 20 66 6F 72 20 6E 20 69 6E 20 75 73 65 72 55 73 65 72 73 52 65
71 2E 73 70 6C 69 74 28 29 3A 0A 20 20 20 20 20 20 20 20 69 66 20 6C 65
6E 28 6E 29 20 3E 20 33 32 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 66
6F 75 6E 64 62 61 64 20 3D 20 54 72 75 65 0A 20 20 20 20 20 20 20 20 20
20 20 20 70 72 69 6E 74 20 22 55 73 65 72 20 6E 61 6D 65 73 20 63 61 6E
27 74 20 62 65 20 6D 6F 72 65 20 74 68 61 6E 20 33 32 20 63 68 61 72 61
63 61 74 65 72 73 2C 20 70 6C 65 61 73 65 20 74 72 79 20 61 67 61 69 6E
21 22 0A 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6B 0A 20 20 20
20 20 20 20 20 69 66 20 6E 5B 30 5D 20 3D 3D 20 22 2D 22 3A 0A 20 20 20
20 20 20 20 20 20 20 20 20 66 6F 75 6E 64 62 61 64 20 3D 20 54 72 75 65
0A 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22 55 73 65 72
20 6E 61 6D 65 73 20 63 61 6E 6E 6F 74 20 73 74 61 72 74 20 77 69 74 68
20 61 20 64 61 73 68 2C 20 70 6C 65 61 73 65 20 74 72 79 20 61 67 61 69
6E 21 22 0A 20 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6B 0A 20 20
20 20 69 66 20 66 6F 75 6E 64 62 61 64 20 3D 3D 20 46 61 6C 73 65 3A 0A
20 20 20 20 20 20 20 20 69 6E 70 75 74 49 73 56 61 6C 69 64 20 3D 20 54
72 75 65 0A 23 20 73 65 65 20 69 66 20 75 73 65 72 28 73 29 20 61 6C 72
65 61 64 79 20 65 78 69 73 74 28 73 29 0A 63 75 72 55 73 65 72 4C 69 73
74 20 3D 20 6F 73 2E 70 6F 70 65 6E 28 22 2F 75 73 72 2F 62 69 6E 2F 67
65 74 65 6E 74 20 70 61 73 73 77 64 22 29 2E 72 65 61 64 6C 69 6E 65 73
28 29 0A 68 75 67 65 50 61 67 65 55 73 65 72 4C 69 73 74 20 3D 20 75 73
65 72 55 73 65 72 73 52 65 71 2E 73 70 6C 69 74 28 29 0A 66 6F 72 20 68
75 67 65 55 73 65 72 20 69 6E 20 68 75 67 65 50 61 67 65 55 73 65 72 4C
69 73 74 3A 0A 20 20 20 20 75 73 65 72 45 78 69 73 74 73 20 3D 20 46 61
6C 73 65 0A 20 20 20 20 66 6F 72 20 6C 69 6E 65 20 69 6E 20 63 75 72 55
73 65 72 4C 69 73 74 3A 0A 20 20 20 20 20 20 20 20 63 75 72 55 73 65 72
20 3D 20 6C 69 6E 65 2E 73 70 6C 69 74 28 22 3A 22 29 5B 30 5D 0A 20 20
20 20 20 20 20 20 69 66 20 63 75 72 55 73 65 72 20 3D 3D 20 68 75 67 65
55 73 65 72 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 6E 74 20
22 41 64 64 69 6E 67 20 75 73 65 72 20 25 73 20 74 6F 20 68 75 67 65 20
70 61 67 65 20 67 72 6F 75 70 22 20 25 20 68 75 67 65 55 73 65 72 0A 20
20 20 20 20 20 20 20 20 20 20 20 75 73 65 72 45 78 69 73 74 73 20 3D 20
54 72 75 65 0A 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 64 65 62 75
67 20 3D 3D 20 46 61 6C 73 65 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20
20 20 20 20 6F 73 2E 70 6F 70 65 6E 28 22 2F 75 73 72 2F 73 62 69 6E 2F
75 73 65 72 6D 6F 64 20 2D 61 20 2D 47 20 25 73 20 25 73 22 20 25 20 28
75 73 65 72 47 72 6F 75 70 52 65 71 2C 20 68 75 67 65 55 73 65 72 29 29
0A 20 20 20 20 20 20 20 20 20 20 20 20 65 6C 73 65 3A 0A 20 20 20 20 20
20 20 20 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22 2F 75 73 72 2F 73
62 69 6E 2F 75 73 65 72 6D 6F 64 20 2D 61 20 2D 47 20 25 73 20 25 73 22
20 25 20 28 75 73 65 72 47 72 6F 75 70 52 65 71 2C 20 68 75 67 65 55 73
65 72 29 0A 20 20 20 20 20 20 20 20 69 66 20 75 73 65 72 45 78 69 73 74
73 20 3D 3D 20 54 72 75 65 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 62
72 65 61 6B 0A 20 20 20 20 69 66 20 75 73 65 72 45 78 69 73 74 73 20 3D
3D 20 46 61 6C 73 65 3A 0A 20 20 20 20 20 20 20 20 70 72 69 6E 74 20 22
43 72 65 61 74 69 6E 67 20 75 73 65 72 20 25 73 20 77 69 74 68 20 6D 65
6D 62 65 72 73 68 69 70 20 69 6E 20 68 75 67 65 20 70 61 67 65 20 67 72
6F 75 70 22 20 25 20 68 75 67 65 55 73 65 72 0A 20 20 20 20 20 20 20 20
69 66 20 64 65 62 75 67 20 3D 3D 20 46 61 6C 73 65 3A 0A 20 20 20 20 20
20 20 20 20 20 20 20 6F 73 2E 70 6F 70 65 6E 28 22 2F 75 73 72 2F 73 62
69 6E 2F 75 73 65 72 61 64 64 20 25 73 20 2D 47 20 25 73 22 20 25 20 28
68 75 67 65 55 73 65 72 2C 20 75 73 65 72 47 72 6F 75 70 52 65 71 29 29
0A 20 20 20 20 20 20 20 20 65 6C 73 65 3A 0A 20 20 20 20 20 20 20 20 20
20 20 20 70 72 69 6E 74 20 22 2F 75 73 72 2F 73 62 69 6E 2F 75 73 65 72
61 64 64 20 25 73 20 2D 47 20 25 73 22 20 25 20 28 68 75 67 65 55 73 65
72 2C 20 75 73 65 72 47 72 6F 75 70 52 65 71 29 0A 70 72 69 6E 74 0A 0A
0A 23 20 73 65 74 20 73 79 73 63 74 6C 20 76 61 6C 75 65 73 20 66 6F 72
20 74 68 65 20 63 75 72 72 65 6E 74 20 72 75 6E 6E 69 6E 67 20 65 6E 76
69 72 6F 6E 6D 65 6E 74 0A 69 66 20 64 65 62 75 67 20 3D 3D 20 46 61 6C
73 65 3A 0A 20 20 20 20 6F 73 2E 70 6F 70 65 6E 28 22 2F 73 62 69 6E 2F
73 79 73 63 74 6C 20 2D 77 20 6B 65 72 6E 65 6C 2E 73 68 6D 6D 61 78 3D
25 64 22 20 25 20 28 75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4D 42
20 2A 20 31 30 32 34 20 2A 20 31 30 32 34 29 29 0A 20 20 20 20 6F 73 2E
70 6F 70 65 6E 28 22 2F 73 62 69 6E 2F 73 79 73 63 74 6C 20 2D 77 20 76
6D 2E 6E 72 5F 68 75 67 65 70 61 67 65 73 3D 25 64 22 20 25 20 75 73 65
72 48 75 67 65 50 61 67 65 73 52 65 71 29 0A 20 20 20 20 6F 73 2E 70 6F
70 65 6E 28 22 2F 73 62 69 6E 2F 73 79 73 63 74 6C 20 2D 77 20 76 6D 2E
68 75 67 65 74 6C 62 5F 73 68 6D 5F 67 72 6F 75 70 3D 25 64 22 20 25 20
75 73 65 72 47 49 44 52 65 71 29 0A 65 6C 73 65 3A 0A 20 20 20 20 70 72
69 6E 74 20 22 2F 73 62 69 6E 2F 73 79 73 63 74 6C 20 2D 77 20 6B 65 72
6E 65 6C 2E 73 68 6D 6D 61 78 3D 25 64 22 20 25 20 28 75 73 65 72 48 75
67 65 50 61 67 65 52 65 71 4D 42 20 2A 20 31 30 32 34 20 2A 20 31 30 32
34 29 0A 20 20 20 20 70 72 69 6E 74 20 22 2F 73 62 69 6E 2F 73 79 73 63
74 6C 20 2D 77 20 76 6D 2E 6E 72 5F 68 75 67 65 70 61 67 65 73 3D 25 64
22 20 25 20 75 73 65 72 48 75 67 65 50 61 67 65 73 52 65 71 0A 20 20 20
20 70 72 69 6E 74 20 22 2F 73 62 69 6E 2F 73 79 73 63 74 6C 20 2D 77 20
76 6D 2E 68 75 67 65 74 6C 62 5F 73 68 6D 5F 67 72 6F 75 70 3D 25 64 22
20 25 20 75 73 65 72 47 49 44 52 65 71 0A 20 20 20 20 70 72 69 6E 74 0A
0A 0A 23 20 77 72 69 74 65 20 6F 75 74 20 73 79 73 63 74 6C 20 63 6F 6E
66 69 67 20 63 68 61 6E 67 65 73 20 74 6F 20 70 65 72 73 69 73 74 20 61
63 72 6F 73 73 20 72 65 62 6F 6F 74 0A 69 66 20 64 65 62 75 67 20 3D 3D
20 46 61 6C 73 65 3A 0A 20 20 20 20 73 79 73 63 74 6C 43 6F 6E 66 4C 69
6E 65 73 20 3D 20 22 23 20 73 79 73 63 74 6C 20 63 6F 6E 66 69 67 75 72
61 74 69 6F 6E 5C 6E 22 0A 20 20 20 20 69 66 20 6F 73 2E 61 63 63 65 73
73 28 73 79 73 63 74 6C 43 6F 6E 66 2C 20 6F 73 2E 57 5F 4F 4B 29 3A 0A
20 20 20 20 20 20 20 20 74 72 79 3A 0A 20 20 20 20 20 20 20 20 20 20 20
20 73 79 73 63 74 6C 43 6F 6E 66 4C 69 6E 65 73 20 3D 20 6F 70 65 6E 28
73 79 73 63 74 6C 43 6F 6E 66 29 2E 72 65 61 64 6C 69 6E 65 73 28 29 0A
20 20 20 20 20 20 20 20 20 20 20 20 6F 73 2E 72 65 6E 61 6D 65 28 73 79
73 63 74 6C 43 6F 6E 66 2C 20 73 79 73 63 74 6C 43 6F 6E 66 20 2B 20 22
2E 62 61 63 6B 75 70 22 29 0A 20 20 20 20 20 20 20 20 20 20 20 20 70 72
69 6E 74 28 22 53 61 76 65 64 20 6F 72 69 67 69 6E 61 6C 20 25 73 20 61
73 20 25 73 2E 62 61 63 6B 75 70 22 20 25 20 28 73 79 73 63 74 6C 43 6F
6E 66 2C 20 73 79 73 63 74 6C 43 6F 6E 66 29 29 0A 20 20 20 20 20 20 20
20 65 78 63 65 70 74 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 70 61 73
73 0A 0A 20 20 20 20 66 64 20 3D 20 6F 70 65 6E 28 73 79 73 63 74 6C 43
6F 6E 66 2C 20 22 77 22 29 0A 20 20 20 20 66 6F 72 20 6C 69 6E 65 20 69
6E 20 73 79 73 63 74 6C 43 6F 6E 66 4C 69 6E 65 73 3A 0A 20 20 20 20 20
20 20 20 69 66 20 6C 69 6E 65 2E 73 74 61 72 74 73 77 69 74 68 28 22 6B
65 72 6E 65 6C 2E 73 68 6D 6D 61 78 22 29 3A 0A 20 20 20 20 20 20 20 20
20 20 20 20 63 6F 6E 74 69 6E 75 65 0A 20 20 20 20 20 20 20 20 65 6C 69
66 20 6C 69 6E 65 2E 73 74 61 72 74 73 77 69 74 68 28 22 76 6D 2E 6E 72
5F 68 75 67 65 70 61 67 65 73 22 29 3A 0A 20 20 20 20 20 20 20 20 20 20
20 20 63 6F 6E 74 69 6E 75 65 0A 20 20 20 20 20 20 20 20 65 6C 69 66 20
6C 69 6E 65 2E 73 74 61 72 74 73 77 69 74 68 28 22 76 6D 2E 68 75 67 65
74 6C 62 5F 73 68 6D 5F 67 72 6F 75 70 22 29 3A 0A 20 20 20 20 20 20 20
20 20 20 20 20 63 6F 6E 74 69 6E 75 65 0A 20 20 20 20 20 20 20 20 65 6C
73 65 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 66 64 2E 77 72 69 74 65
28 6C 69 6E 65 29 3B 0A 0A 20 20 20 20 66 64 2E 77 72 69 74 65 28 22 6B
65 72 6E 65 6C 2E 73 68 6D 6D 61 78 20 3D 20 25 64 5C 6E 22 20 25 20 28
75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4D 42 20 2A 20 31 30 32 34
20 2A 20 31 30 32 34 29 29 0A 20 20 20 20 66 64 2E 77 72 69 74 65 28 22
76 6D 2E 6E 72 5F 68 75 67 65 70 61 67 65 73 20 3D 20 25 64 5C 6E 22 20
25 20 75 73 65 72 48 75 67 65 50 61 67 65 73 52 65 71 29 0A 20 20 20 20
66 64 2E 77 72 69 74 65 28 22 76 6D 2E 68 75 67 65 74 6C 62 5F 73 68 6D
5F 67 72 6F 75 70 20 3D 20 25 64 5C 6E 22 20 25 20 75 73 65 72 47 49 44
52 65 71 29 0A 20 20 20 20 66 64 2E 63 6C 6F 73 65 28 29 0A 0A 65 6C 73
65 3A 0A 20 20 20 20 70 72 69 6E 74 20 22 41 64 64 20 74 6F 20 25 73 3A
22 20 25 20 73 79 73 63 74 6C 43 6F 6E 66 0A 20 20 20 20 70 72 69 6E 74
20 22 6B 65 72 6E 65 6C 2E 73 68 6D 6D 61 78 20 3D 20 25 64 22 20 25 20
28 75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4D 42 20 2A 20 31 30 32
34 20 2A 20 31 30 32 34 29 0A 20 20 20 20 70 72 69 6E 74 20 22 76 6D 2E
6E 72 5F 68 75 67 65 70 61 67 65 73 20 3D 20 25 64 22 20 25 20 75 73 65
72 48 75 67 65 50 61 67 65 73 52 65 71 0A 20 20 20 20 70 72 69 6E 74 20
22 76 6D 2E 68 75 67 65 74 6C 62 5F 73 68 6D 5F 67 72 6F 75 70 20 3D 20
25 64 22 20 25 20 75 73 65 72 47 49 44 52 65 71 0A 20 20 20 20 70 72 69
6E 74 0A 0A 0A 23 20 77 72 69 74 65 20 6F 75 74 20 6C 69 6D 69 74 73 2E
63 6F 6E 66 20 63 68 61 6E 67 65 73 20 74 6F 20 70 65 72 73 69 73 74 20
61 63 72 6F 73 73 20 72 65 62 6F 6F 74 0A 69 66 20 64 65 62 75 67 20 3D
3D 20 46 61 6C 73 65 3A 0A 20 20 20 20 6C 69 6D 69 74 73 43 6F 6E 66 4C
69 6E 65 73 20 3D 20 22 23 20 48 75 67 65 20 70 61 67 65 20 61 63 63 65
73 73 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 5C 6E 22 0A 20 20 20 20
69 66 20 6F 73 2E 61 63 63 65 73 73 28 6C 69 6D 69 74 73 43 6F 6E 66 2C
20 6F 73 2E 57 5F 4F 4B 29 3A 0A 20 20 20 20 20 20 20 20 74 72 79 3A 0A
20 20 20 20 20 20 20 20 20 20 20 20 6C 69 6D 69 74 73 43 6F 6E 66 4C 69
6E 65 73 20 3D 20 6F 70 65 6E 28 6C 69 6D 69 74 73 43 6F 6E 66 29 2E 72
65 61 64 6C 69 6E 65 73 28 29 0A 20 20 20 20 20 20 20 20 20 20 20 20 6F
73 2E 72 65 6E 61 6D 65 28 6C 69 6D 69 74 73 43 6F 6E 66 2C 20 6C 69 6D
69 74 73 43 6F 6E 66 20 2B 20 22 2E 62 61 63 6B 75 70 22 29 0A 20 20 20
20 20 20 20 20 20 20 20 20 70 72 69 6E 74 28 22 53 61 76 65 64 20 6F 72
69 67 69 6E 61 6C 20 25 73 20 61 73 20 25 73 2E 62 61 63 6B 75 70 22 20
25 20 28 6C 69 6D 69 74 73 43 6F 6E 66 2C 20 6C 69 6D 69 74 73 43 6F 6E
66 29 29 0A 20 20 20 20 20 20 20 20 65 78 63 65 70 74 3A 0A 20 20 20 20
20 20 20 20 20 20 20 20 70 61 73 73 0A 0A 20 20 20 20 66 64 20 3D 20 6F
70 65 6E 28 6C 69 6D 69 74 73 43 6F 6E 66 2C 20 22 77 22 29 0A 20 20 20
20 66 6F 72 20 6C 69 6E 65 20 69 6E 20 6C 69 6D 69 74 73 43 6F 6E 66 4C
69 6E 65 73 3A 0A 20 20 20 20 20 20 20 20 63 66 67 45 78 69 73 74 20 3D
20 46 61 6C 73 65 0A 20 20 20 20 20 20 20 20 66 6F 72 20 68 75 67 65 55
73 65 72 20 69 6E 20 68 75 67 65 50 61 67 65 55 73 65 72 4C 69 73 74 3A
0A 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 6C 69 6E 65 2E 73 70 6C
69 74 28 29 5B 30 5D 20 3D 3D 20 68 75 67 65 55 73 65 72 3A 0A 20 20 20
20 20 20 20 20 20 20 20 20 20 20 20 20 63 66 67 45 78 69 73 74 20 3D 20
54 72 75 65 0A 20 20 20 20 20 20 20 20 69 66 20 63 66 67 45 78 69 73 74
20 3D 3D 20 54 72 75 65 3A 0A 20 20 20 20 20 20 20 20 20 20 20 20 63 6F
6E 74 69 6E 75 65 0A 20 20 20 20 20 20 20 20 65 6C 73 65 3A 0A 20 20 20
20 20 20 20 20 20 20 20 20 66 64 2E 77 72 69 74 65 28 6C 69 6E 65 29 0A
0A 20 20 20 20 66 6F 72 20 68 75 67 65 55 73 65 72 20 69 6E 20 68 75 67
65 50 61 67 65 55 73 65 72 4C 69 73 74 3A 0A 20 20 20 20 20 20 20 20 66
64 2E 77 72 69 74 65 28 22 25 73 09 09 73 6F 66 74 09 6D 65 6D 6C 6F 63
6B 09 09 25 64 5C 6E 22 20 25 20 28 68 75 67 65 55 73 65 72 2C 20 75 73
65 72 48 75 67 65 50 61 67 65 52 65 71 4B 42 29 29 0A 20 20 20 20 20 20
20 20 66 64 2E 77 72 69 74 65 28 22 25 73 09 09 68 61 72 64 09 6D 65 6D
6C 6F 63 6B 09 09 25 64 5C 6E 22 20 25 20 28 68 75 67 65 55 73 65 72 2C
20 75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4B 42 29 29 0A 20 20 20
20 66 64 2E 63 6C 6F 73 65 28 29 0A 0A 65 6C 73 65 3A 0A 20 20 20 20 70
72 69 6E 74 20 22 41 64 64 20 74 6F 20 25 73 3A 22 20 25 20 6C 69 6D 69
74 73 43 6F 6E 66 0A 20 20 20 20 66 6F 72 20 68 75 67 65 55 73 65 72 20
69 6E 20 68 75 67 65 50 61 67 65 55 73 65 72 4C 69 73 74 3A 0A 20 20 20
20 20 20 20 20 70 72 69 6E 74 20 22 25 73 09 09 73 6F 66 74 09 6D 65 6D
6C 6F 63 6B 09 09 25 64 22 20 25 20 28 68 75 67 65 55 73 65 72 2C 20 75
73 65 72 48 75 67 65 50 61 67 65 52 65 71 4B 42 29 0A 20 20 20 20 20 20
20 20 70 72 69 6E 74 20 22 25 73 09 09 68 61 72 64 09 6D 65 6D 6C 6F 63
6B 09 09 25 64 22 20 25 20 28 68 75 67 65 55 73 65 72 2C 20 75 73 65 72
48 75 67 65 50 61 67 65 52 65 71 4B 42 29 0A 0A 0A 23 20 64 75 6D 70 20
74 68 65 20 66 69 6E 61 6C 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 20
6F 66 20 74 68 69 6E 67 73 20 6E 6F 77 20 74 68 61 74 20 77 65 27 72 65
20 64 6F 6E 65 20 74 77 65 61 6B 69 6E 67 0A 70 72 69 6E 74 0A 70 72 69
6E 74 20 22 46 69 6E 61 6C 20 63 6F 6E 66 69 67 75 72 61 74 69 6F 6E 3A
22 0A 70 72 69 6E 74 20 22 20 2A 20 54 6F 74 61 6C 20 53 79 73 74 65 6D
20 4D 65 6D 6F 72 79 2E 2E 2E 2E 2E 2E 3A 20 25 36 64 20 4D 42 22 20 25
20 28 6D 65 6D 54 6F 74 61 6C 20 2F 20 31 30 32 34 29 0A 70 72 69 6E 74
20 22 20 2A 20 53 68 61 72 65 64 20 4D 65 6D 20 4D 61 78 20 4D 61 70 70
69 6E 67 2E 2E 2E 3A 20 25 36 64 20 4D 42 22 20 25 20 75 73 65 72 48 75
67 65 50 61 67 65 52 65 71 4D 42 0A 70 72 69 6E 74 20 22 20 2A 20 53 79
73 74 65 6D 20 48 75 67 65 20 50 61 67 65 20 53 69 7A 65 2E 2E 2E 2E 3A
20 25 36 64 20 4D 42 22 20 25 20 28 68 75 67 65 50 61 67 65 53 69 7A 65
20 2F 20 31 30 32 34 29 0A 70 72 69 6E 74 20 22 20 2A 20 41 76 61 69 6C
61 62 6C 65 20 48 75 67 65 20 50 61 67 65 73 2E 2E 2E 2E 2E 3A 20 25 36
64 22 20 20 20 20 25 20 75 73 65 72 48 75 67 65 50 61 67 65 73 52 65 71
0A 70 72 69 6E 74 20 22 20 2A 20 54 6F 74 61 6C 20 73 69 7A 65 20 6F 66
20 48 75 67 65 20 50 61 67 65 73 2E 3A 20 25 36 64 20 4D 42 22 20 25 20
75 73 65 72 48 75 67 65 50 61 67 65 52 65 71 4D 42 0A 70 72 69 6E 74 20
22 20 2A 20 52 65 6D 61 69 6E 69 6E 67 20 53 79 73 74 65 6D 20 4D 65 6D
6F 72 79 2E 2E 3A 20 25 36 64 20 4D 42 22 20 25 20 28 28 6D 65 6D 54 6F
74 61 6C 20 2F 20 31 30 32 34 29 20 2D 20 75 73 65 72 48 75 67 65 50 61
67 65 52 65 71 4D 42 29 0A 70 72 69 6E 74 20 22 20 2A 20 48 75 67 65 20
50 61 67 65 20 55 73 65 72 20 47 72 6F 75 70 2E 2E 2E 2E 2E 3A 20 20 25
73 20 28 25 64 29 22 20 25 20 28 75 73 65 72 47 72 6F 75 70 52 65 71 2C
20 75 73 65 72 47 49 44 52 65 71 29 0A 70 72 69 6E 74 0A 0A 0A
#!/usr/bin/python  # # T
ool to set up Linux larg
e page support with mini
mal effort # # by Jarod 
Wilson <jarod@redhat.com
> # (c) Red Hat, Inc., 2
009 # import os  debug =
 False  # config files w
e need access to sysctlC
onf = "/etc/sysctl.conf"
 if not os.access(sysctl
Conf, os.W_OK):     prin
t "Cannot access %s" % s
ysctlConf     if debug =
= False:         os._exi
t(1)  # This file will b
e created if it doesn't 
exist limitsConf = "/etc
/security/limits.d/hugep
ages.conf"   # Figure ou
t what we've got in the 
way of memory memInfo = 
open("/proc/meminfo").re
adlines() memTotal = 0 h
ugePages = 0 hugePageSiz
e = 0  for line in memIn
fo:     if line.startswi
th("MemTotal:"):        
 memTotal = int(line.spl
it()[1])         break  
for line in memInfo:    
 if line.startswith("Hug
ePages_Total:"):        
 hugePages = int(line.sp
lit()[1])         break 
 for line in memInfo:   
  if line.startswith("Hu
gepagesize:"):         h
ugePageSize = int(line.s
plit()[1])         break
  if hugePageSize == 0: 
    print "Aborting, can
not determine system hug
e page size!"     os._ex
it(1)  # Get initial sys
ctl settings shmmax = 0 
nr_hugepages = 0 hugeGID
 = 0  sysctlCur = os.pop
en("/sbin/sysctl -a").re
adlines()  for line in s
ysctlCur:     if line.st
artswith("kernel.shmmax 
= "):         shmmax = i
nt(line.split()[2])     
    break  for line in s
ysctlCur:     if line.st
artswith("vm.nr_hugepage
s = "):         nr_hugep
ages = int(line.split()[
2])         break  for l
ine in sysctlCur:     if
 line.startswith("vm.hug
etlb_shm_group = "):    
     hugeGID = int(line.
split()[2])         brea
k   # translate group in
to textual version hugeG
IDName = "null" groupNam
es = os.popen("/usr/bin/
getent group").readlines
() for line in groupName
s:     curGID = int(line
.split(":")[2])     if c
urGID == hugeGID:       
  hugeGIDName = line.spl
it(":")[0]         break
   # dump system config 
as we see it before we s
tart tweaking it print "
Current configuration:" 
print " * Total System M
emory......: %6d MB" % (
memTotal / 1024) print "
 * Shared Mem Max Mappin
g...: %6d MB" % (shmmax 
/ (1024 * 1024)) print "
 * System Huge Page Size
....: %6d MB" % (hugePag
eSize / 1024) print " * 
Number of Huge Pages....
.: %6d"    % hugePages p
rint " * Total size of H
uge Pages.: %6d MB" % (h
ugePages * hugePageSize 
/ 1024) print " * Remain
ing System Memory..: %6d
 MB" % ((memTotal / 1024
) - (hugePages * hugePag
eSize / 1024)) print " *
 Huge Page User Group...
..:  %s (%d)" % (hugeGID
Name, hugeGID) print   #
 determine some sanity s
afeguards halfOfMem = me
mTotal / 2 allMemLess2G 
= memTotal - 2048000  if
 halfOfMem >= allMemLess
2G:     maxHugePageReqKB
 = halfOfMem else:     m
axHugePageReqKB = allMem
Less2G  maxHugePageReqMB
 = maxHugePageReqKB / 10
24 maxHugePageReq = maxH
ugePageReqKB / hugePageS
ize   # ask how memory t
hey want to allocate for
 huge pages userIn = Non
e while not userIn:     
try:         userIn = ra
w_input("How much memory
 would you like to alloc
ate for huge pages? "   
                        
 "(input in MB, unless p
ostfixed with GB): ")  i
f userIn[-2:] == "GB":  
           userHugePageR
eqMB = int(userIn[0:-2])
 * 1024  elif userIn[-1:
] == "G":             us
erHugePageReqMB = int(us
erIn[0:-1]) * 1024  elif
 userIn[-2:] == "MB":   
          userHugePageRe
qMB = int(userIn[0:-2]) 
elif userIn[-1:] == "M"
:             userHugePa
geReqMB = int(userIn[0:-
1])         else:       
      userHugePageReqMB 
= int(userIn)         if
 userHugePageReqMB > max
HugePageReqMB:          
   userIn = None        
     print "Sorry, the m
ost I'll let you allocat
e is %d MB, try again!" 
% maxHugePageReqMB      
   elif userHugePageReqM
B < (hugePageSize / 1024
):             userIn = 
None             print "
Sorry, allocation must b
e at least a page's wort
h!"         else:       
      break     except V
alueError:         userI
n = None         print "
Input must be an integer
, please try again!" use
rHugePageReqKB = userHug
ePageReqMB * 1024 userHu
gePagesReq = userHugePag
eReqKB / hugePageSize pr
int "Okay, we'll try to 
allocate %d MB for huge 
pages..." % userHugePage
ReqMB print   # some bas
ic user input validation
 badchars = list(' \\\'"
:;~`!$^&*(){}[]?/><,') i
nputIsValid = False # as
k for the name of the gr
oup allowed access to hu
ge pages while inputIsVa
lid == False:     foundb
ad = False     userGroup
Req = raw_input("What gr
oup should have access t
o the huge pages? "     
                        
 "(The group will be cre
ated, if need be): ")   
  if not userGroupReq:  
       foundbad = True  
       print "You must i
nput a group name, pleas
e try again!"     elif u
serGroupReq[0].isdigit()
 or userGroupReq[0] == "
-":         foundbad = T
rue         print "Group
 names cannot start with
 a number or dash, pleas
e try again!"     for ch
ar in badchars:         
if char in userGroupReq:
             foundbad = 
True             print "
Illegal characters in gr
oup name, please try aga
in!"             break  
   if len(userGroupReq) 
> 16:         foundbad =
 True         print "Gro
up names can't be more t
han 16 characaters, plea
se try again!"     if fo
undbad == False:        
 inputIsValid = True pri
nt "Okay, we'll give gro
up %s access to the huge
 pages" % userGroupReq  
 # see if group already 
exists, use it if it doe
s, if not, create it use
rGIDReq = -1 for line in
 groupNames:     curGrou
pName = line.split(":")[
0]     if curGroupName =
= userGroupReq:         
userGIDReq = int(line.sp
lit(":")[2])         bre
ak  if userGIDReq > -1: 
    print "Group %s (gid
 %d) already exists, we'
ll use it" % (userGroupR
eq, userGIDReq) else:   
  if debug == False:    
  os.popen("/usr/sbin/gr
oupadd %s" % userGroupRe
q)     else:         pri
nt "/usr/sbin/groupadd %
s" % userGroupReq     gr
oupNames = os.popen("/us
r/bin/getent group %s" %
 userGroupReq).readlines
()     for line in group
Names:         curGroupN
ame = line.split(":")[0]
         if curGroupName
 == userGroupReq:       
      userGIDReq = int(l
ine.split(":")[2])      
       break     print "
Created group %s (gid %d
) for huge page use" % (
userGroupReq, userGIDReq
) print   # basic user i
nput validation, take 2 
# space is valid in this
 case, wasn't in the pri
or incarnation badchars 
= list('\\\'":;~`!$^&*()
{}[]?/><,') inputIsValid
 = False # ask for user(
s) that should be in the
 huge page access group 
while inputIsValid == Fa
lse:     foundbad = Fals
e     userUsersReq = raw
_input("What user(s) sho
uld have access to the h
uge pages (space-delimit
ed list, users created a
s needed)? ")     for ch
ar in badchars:         
if char in userUsersReq:
             foundbad = 
True             print "
Illegal characters in us
er name(s) or invalid li
st format, please try ag
ain!"             break 
    for n in userUsersRe
q.split():         if le
n(n) > 32:             f
oundbad = True          
   print "User names can
't be more than 32 chara
caters, please try again
!"             break    
     if n[0] == "-":    
         foundbad = True
             print "User
 names cannot start with
 a dash, please try agai
n!"             break   
  if foundbad == False: 
        inputIsValid = T
rue # see if user(s) alr
eady exist(s) curUserLis
t = os.popen("/usr/bin/g
etent passwd").readlines
() hugePageUserList = us
erUsersReq.split() for h
ugeUser in hugePageUserL
ist:     userExists = Fa
lse     for line in curU
serList:         curUser
 = line.split(":")[0]   
      if curUser == huge
User:             print 
"Adding user %s to huge 
page group" % hugeUser  
           userExists = 
True             if debu
g == False:             
    os.popen("/usr/sbin/
usermod -a -G %s %s" % (
userGroupReq, hugeUser))
             else:      
           print "/usr/s
bin/usermod -a -G %s %s"
 % (userGroupReq, hugeUs
er)         if userExist
s == True:             b
reak     if userExists =
= False:         print "
Creating user %s with me
mbership in huge page gr
oup" % hugeUser         
if debug == False:      
       os.popen("/usr/sb
in/useradd %s -G %s" % (
hugeUser, userGroupReq))
         else:          
   print "/usr/sbin/user
add %s -G %s" % (hugeUse
r, userGroupReq) print  
 # set sysctl values for
 the current running env
ironment if debug == Fal
se:     os.popen("/sbin/
sysctl -w kernel.shmmax=
%d" % (userHugePageReqMB
 * 1024 * 1024))     os.
popen("/sbin/sysctl -w v
m.nr_hugepages=%d" % use
rHugePagesReq)     os.po
pen("/sbin/sysctl -w vm.
hugetlb_shm_group=%d" % 
userGIDReq) else:     pr
int "/sbin/sysctl -w ker
nel.shmmax=%d" % (userHu
gePageReqMB * 1024 * 102
4)     print "/sbin/sysc
tl -w vm.nr_hugepages=%d
" % userHugePagesReq    
 print "/sbin/sysctl -w 
vm.hugetlb_shm_group=%d"
 % userGIDReq     print 
  # write out sysctl con
fig changes to persist a
cross reboot if debug ==
 False:     sysctlConfLi
nes = "# sysctl configur
ation\n"     if os.acces
s(sysctlConf, os.W_OK): 
        try:            
 sysctlConfLines = open(
sysctlConf).readlines() 
            os.rename(sy
sctlConf, sysctlConf + "
.backup")             pr
int("Saved original %s a
s %s.backup" % (sysctlCo
nf, sysctlConf))        
 except:             pas
s      fd = open(sysctlC
onf, "w")     for line i
n sysctlConfLines:      
   if line.startswith("k
ernel.shmmax"):         
    continue         eli
f line.startswith("vm.nr
_hugepages"):           
  continue         elif 
line.startswith("vm.huge
tlb_shm_group"):        
     continue         el
se:             fd.write
(line);      fd.write("k
ernel.shmmax = %d\n" % (
userHugePageReqMB * 1024
 * 1024))     fd.write("
vm.nr_hugepages = %d\n" 
% userHugePagesReq)     
fd.write("vm.hugetlb_shm
_group = %d\n" % userGID
Req)     fd.close()  els
e:     print "Add to %s:
" % sysctlConf     print
 "kernel.shmmax = %d" % 
(userHugePageReqMB * 102
4 * 1024)     print "vm.
nr_hugepages = %d" % use
rHugePagesReq     print 
"vm.hugetlb_shm_group = 
%d" % userGIDReq     pri
nt   # write out limits.
conf changes to persist 
across reboot if debug =
= False:     limitsConfL
ines = "# Huge page acce
ss configuration\n"     
if os.access(limitsConf,
 os.W_OK):         try: 
            limitsConfLi
nes = open(limitsConf).r
eadlines()             o
s.rename(limitsConf, lim
itsConf + ".backup")    
         print("Saved or
iginal %s as %s.backup" 
% (limitsConf, limitsCon
f))         except:     
        pass      fd = o
pen(limitsConf, "w")    
 for line in limitsConfL
ines:         cfgExist =
 False         for hugeU
ser in hugePageUserList:
             if line.spl
it()[0] == hugeUser:    
             cfgExist = 
True         if cfgExist
 == True:             co
ntinue         else:    
         fd.write(line) 
     for hugeUser in hug
ePageUserList:         f
d.write("%s soft memloc
k %d\n" % (hugeUser, us
erHugePageReqKB))       
  fd.write("%s hard mem
lock %d\n" % (hugeUser,
 userHugePageReqKB))    
 fd.close()  else:     p
rint "Add to %s:" % limi
tsConf     for hugeUser 
in hugePageUserList:    
     print "%s soft mem
lock %d" % (hugeUser, u
serHugePageReqKB)       
  print "%s hard memloc
k %d" % (hugeUser, user
HugePageReqKB)   # dump 
the final configuration 
of things now that we're
 done tweaking print pri
nt "Final configuration:
" print " * Total System
 Memory......: %6d MB" %
 (memTotal / 1024) print
 " * Shared Mem Max Mapp
ing...: %6d MB" % userHu
gePageReqMB print " * Sy
stem Huge Page Size....:
 %6d MB" % (hugePageSize
 / 1024) print " * Avail
able Huge Pages.....: %6
d"    % userHugePagesReq
 print " * Total size of
 Huge Pages.: %6d MB" % 
userHugePageReqMB print 
" * Remaining System Mem
ory..: %6d MB" % ((memTo
tal / 1024) - userHugePa
geReqMB) print " * Huge 
Page User Group.....:  %
s (%d)" % (userGroupReq,
 userGIDReq) print   

HEXDUMP: [Full] [Preview]
Base64:
[Encode [+chunk [+chunk+quotes [Decode


:: Command execute ::

Enter:
 
Select:
 

:: Shadow's tricks :D ::

Useful Commands
 
Warning. Kernel may be alerted using higher levels
Kernel Info:

:: Preddy's tricks :D ::

Php Safe-Mode Bypass (Read Files)

File:

eg: /etc/passwd

Php Safe-Mode Bypass (List Directories):

Dir:

eg: /etc/

:: Search ::
  - regexp 

:: Upload ::
 
[ Read-Only ]

:: Make Dir ::
 
[ Read-Only ]
:: Make File ::
 
[ Read-Only ]

:: Go Dir ::
 
:: Go File ::
 

--[ c999shell v. 1.0 pre-release build #16 Modded by Shadow & Preddy | RootShell Security Group | r57 c99 shell | Generation time: 0.0485 ]--