読者です 読者をやめる 読者になる 読者になる

迷いませんか?

プログラミング、電子工作、ゲーム・・・etc、色々やるけど中途半端なブログです。

高校受験がんばりたい

日常

高校受験が差し迫っててやばい

中三の12月ということでもうすぐ高校受験です。
一応、今までは東京高専が第一志望だったのですが、
私立なら祖母が学費を出してくれるとのことで、私立の高校に行こうかなぁと思ってます。
となると、高専に行く以上に勉強をしないといけないので頑張っているのですが、
なんか得意科目だったはずの数学が一気に難易度アップして死にそう
英語もなんか高校範囲はいってきて、国語の読解も長くなってつらい
とりあえず残り2か月で受験で冬期講習も行くんで頑張るしかねえ!!

プログラミングとか

ただでさえ小学校のころから始めつつも勉強さぼってたから技術力ないのに、
受験勉強でプログラミングの勉強もろくにできないし、これ完全に甘えだしつらい
とにかくつらい
中高生プログラマのAdC見ててくっそ辛くなったし
これほんとにやばいかもしれない
高校受験終わったら頑張りたいなぁ(希望)

一応東京高専も受けます

Windows10入れた

日常

ずいぶん前にWindows10にアップグレードしたので一応

Archを入れるときにfdiskの操作でミスしてWindowsを吹っ飛ばしたのですが、
リカバリディスクがあったのでWindows7をインストールして10にアップグレードしました。

僕が思いっきり躓いてたのは、Windows10のアップグレードファイルをダウンロードした後に再起動しますが、
そのときにGRUBの設定してたので、Windowsを起動できる項目が二つあったため
とりあえず下にあるほうを選択してたらうまくアップグレードできませんでした。
なんか上の方を選択しないといけなかったようですねー
上から起動したらアップグレードできました

ArchLinuxをインストールした

Linux 日常

ArchLinuxをインストールした

この記事の通りにするときは必ず入念に調べてください

先日、東京にいた時に買ったノートPCにWindowsが入っていたのですが、
windowsだけでは外で使うときに困る、Linuxを入れよう、
Archを使ってみようという流れでArchLinuxをインストールしてみました。

とりあえず現在の状況では、とても気に入っています。
もう、Windowsなんて起動することがないんじゃないかというほどです。
軽くインストールの方法を説明すると、

Archのビギナーズガイドを見てみましょうということになるんですが、
そしたら必ず?パーティションを分けるところで躓くと思うのでそこを説明します。

まず、パーティションはかっこいいという理由でfdiskを使って分けましょう。
ここでCUIになれとけばArchにも親しみを持って接することができるでしょう。
fdiskを起動したら、コマンドを入れて操作する画面になりますが、
最初にoを打つか打たないかは個人の自由です。
とりあえず、HDDに何も入ってない状態の人は打ちましょう。 そして、デュアルブートをする人の中でWindowsよりもArchに親しみを持ちたい人は打ってください。
きっとArchLinuxしか使わなくなると思います。
僕はoコマンドを使いましたが、今では打たなかった場合の二倍ぐらいは親しくなってるんじゃないかなと思います。

次にどのようにパーティションを分けるかですが、 root、swap、homeの3つでわけ、サイズは適当にしてください。
僕は20G、4G、残りにしました。

そしたらwで書き込んで終了です。
分けるコマンド?m for helpみたいなのが書いてるのが見えませんか?
あとはビギナーズガイドにしたがって動いてください。
多分ミスはしないと思います。

つらい

夏休み

日常

東京から帰ってきて約一週間が過ぎましたが、
某キャンプとか、塾とかで充実した夏休みだったなぁと思います。
キャンプのことを書こうかと思ったけど、直後のあの熱というか感想書きたい!みたいな感じはないので、少しだけ書きます。

8月某日に、海浜幕張駅である方たちと合流し会場に行って、
名刺交換して、特別講義みたいなの聴いてそれからは専門講義に入って、
講義頑張ってCTFで人権を完全になくしてグループワークが予想以上に辛くてーみたいな感じでした。

僕みたいな初心者でもとても楽しかったです。
講義は優しく始まって演習が難しいみたいな感じなのでほとんどの人が楽しめると思います。
ただ、もっと技術力とか知識があればより楽しめただろうなという部分はあって、
そういう後悔がしたくなければ、初心者を少し抜け出せたかなーぐらいになったら行くか、
もしくは、とにかく事前課題頑張るかぐらいですね。
どんな人だろうと楽しめるので、応募はしたほうがいいです。
受験生は事前課題ほとんどできなくて辛い

セキュキャン2015参加します

日常

さっき投稿した記事をね、書いてる途中にね
mikutterをおもむろに開きつつセキュキャンで検索したらね
参加決定とか出てくるじゃないですか
・・・
えっ!?
ちょっと驚きつつ雷鳥を開いてメールを確認すると
<合格>みたいな件名のメールが届いてるわけですよ

!!!!?????

コレは・・・嘘ではないのか・・・組織の陰謀では・・・
みたいなことを思いつつ、心臓がバクバクなりはじめて
うっひょおおおおおおおおおおおおおおおおおおお!!!!!!
とかテンション上がって呟いて、そしたら落ちましたみたいな人を見つけて、
なんか申し訳ない気分になったけど、 その人たちの思いを受け継ぎ、しっかりと学んできたいと思います

ホント驚きました、セキュリティについて本格的に勉強し始めたのが11月ぐらい?
だったし、他の人の応募用紙を見たら相当すごいことを書いてたし
そもそもバイナリ解析でバイナリファイルを作るのミスってますし
ほんと嬉しい

セキュキャンでしっかり色々学べるように予習がんばる
ぱっと参加者のTwitterアカウントとか見回した感じ、
大学生とかすっげえ多くて怖いですが、よろしくお願いします

Pythonのよく使う所まとめる〜リスト系〜

プログラミング 備忘録 Python

Python3でAOJの問題といてPython3を勉強してますが、
よく使うけど忘れるところや、理解しにくかったところがあったのでメモ

リスト

  • スライス
    f:id:pazzle1230:20150630144907p:plain
    線で解説しているページを見たため、 最初は上のように線で考えていて、下を見た時に理解できなかった
    線ではなく要素ごとに割り振られていると考えて理解出来た
    [スタート:ゴール:ステップ]で指定した時、
    スタートから始まり、ゴールまで(ゴールを含まない)までを切り取る
    最後まで、または最初まですべてを指定したければスタートかゴールを指定しなければ出来る

  • 検索
    elem in list
    含まれていればTrue、含まれていなければFalse

list.count(elem) listの中にelemが幾つ含まれているかを返す

list.index(elem)
listにelemが含まれている場合、先頭側のインデックスを返す。
含まれていなければ例外を出す

  • 文字列へ
    strをリストへ使うとそのままリストの表示で文字列になる

    '[1, 2, 3, 4, 5]'

それぞれにmapで適用しよう

['1', '2', '3', '4', '5']

ではjoinだ(aは整数のリストの時)
"".join(map(str, a))
何かで区切りたければ""の中身で区切る
カンマ区切りにしたければ",".join(~~~)でオッケー

  • ディクショナリ(リストではないが)
    dict = { key:value, ... }として作れる
    参照するときはdict[key]で、存在しないkeyに代入すると要素が追加される
    keyがかぶった場合新しい方で上書きされる
    dict.update(dict2)でディクショナリを結合できる
    dict.keys()ですべてのキーのリストを返す
    リストのように内包表現を使える

    {x: x**2 for x in range(5)}


あとは文字列とか数学系とかかな

セキュキャン2015の応募用紙を晒す

日常

セキュキャン2015 応募用紙公開(辛い)

セキュリティキャンプの応募用紙を出す→締め切り過ぎた
(Write up出てるんじゃないか?)→見てみる→無事死亡

それでは、間違いだらけの応募用紙です。
コメントとかで答えを教えてほしいわ・・・

選択問題2

ある機械語をobjdumpにより逆アセンブルしたところ、以下の結果が得られました。このダンプに見られる問題点を指摘してください。

〜〜〜逆アセンブルの結果〜〜〜

一切わからなかったから、2014と2015を比較してますね。
jmp *%ebxが未定義なんですけど本当は必要ないのでは?
そうならば、jmp 0xeba72の途中にjmpするからpop %ebxとmov $0xe, %edxになりますね
最終的にeaxが4、ebxが1、ecxが0、edxが0xeでシステムコールが呼ばれるから、
14文字のNULL文字が表示されるのでは?

だから問題点は、jmp 0xeba72の途中にjmpするところを、
アセンブルできてないことでは?と書きましたが、
実際には仕方ない感じもするし、どうしようもありませんでした。

選択問題5

以下のようなC言語の関数functionがあるとします。

void function(int *array, int n) {
int i;
for(i = 0; i < n; i++) {
array[i] = i * n;
}
}

上記プログラムをコンパイルした結果の一例 (i386)は以下となりました。

〜〜結果の逆アセンブル〜〜

このとき以下の(1)~(5)の設問について、回答と好きなだけ深い考察を記述してください。知らない点は、調査したり自分で想像して書いてもらっても結構です。どうしてもわからない部分は、具体的にここがわかりませんと記述しても良いです。(1)~(2)の回答は必ず答えてください。(3)~(5)の回答は任意です。わかることを書いてください。CPU やコンパイラは特定の実装を例に説明しても良いですし、理想を自由に考えても良いです。

(1)上記のC言語のプログラムはどのような動作をしますか。また、この関数を呼び出して利用する main 関数の例を作成してください。

このfunction関数は、配列と配列の要素数を受け取り、
その配列の要素それぞれを、添字×要素数にしていくコードです。
と書いて、要素数が10個の配列を関数に放り込んだ結果を表示する例を作成した。

(2)上記のアセンブリコードを、いくつかのブロックに分割して、おおまかに何をしている部分かを説明してください。もし、上記のアセンブリが気に入らないのであれば、好きなアーキテクチャコンパイラアセンブル結果を載せて説明しても良いです。

最初でスタックへesiとebxを退避させ、最後で復帰させてメインルーチンに戻ってること、
第一、第二引数をebxとecxに代入、第二引数が0以下なら関数を終わらせる、
esiに要素数を保存し、ebxとeaxを0にした後、for文を始めてること、
そしてそこでの操作をわかりにくく書きました。

(3)はもう、何も知らない初心者が書いたような内容なので書きません。

選択問題8

gccが持つ-fno-stack-protectorは、どのようなセキュリティ機能を無効にするオプションであるのか、またこの機能により、どういった脆弱性からソフトウェアを守れるのかをそれぞれ記述してください。

スタック保護機能が解除される、 カナリア値を入れてスタックの破壊を検出してるよ
コレがなかったらスタックバッファオーバーフロー攻撃をうけるよ
的なことを書きました

サービス問題っぽさがあったので、もっと詳しく書かないといけなかったかもしれない

選択問題10

アンチデバッグ、難読化といった単語をキーワードとする技術について、あなたが知っていること、調べたことを具体的に記述してください。基本的にPCのソフトウェアにおける技術を想定していますが、他端末、またはハードウェアに関する内容でもかまいません。

ほとんど、バイナリの歩き方を参考にした。
アンチデバッグについては、解析ツールの使用を検出し
動作を停止したりするマルウェアに使われている機能ということしか書いてなく、
難読化は、問題2ぐらいの逆アセンブルした時のjmp 0xeba72みたいなのを例に出したり、
ソースコードの難読化は娯楽として楽しまれてるよということを書いた。
一応、パッキングのこともちょっと書いた。

選択問題11

事件発生!!!
昨日、他のwriteupを見てたら全く解答がちがい、びっくりしてたら
うまくバイナリファイルにできてなかったことがわかった。
もう、違うバイナリを解析していたようなもんですね

正しいバイナリが、
D4 C3 B2 A1 02 00 04 00 00 00 00 00 00 00 00 00 00 00 04 00 01 00 00 00 88 EB 40 54 A2 BE 09 00 52 00 00 00 52 00 00 00 22 22 22 22 22 22 11 11 11 11 11 11 08 00 45 00 00 44 1A BD 40 00 80 06 3A 24 C0 A8 92 01 C0 A8 92 80 10 26 01 BB 86 14 7E 80 08 B3 C8 21 50 18 00 FC 0D 0E 00 00 18 03 03 00 17 01 0E FB 06 F6 CD A3 69 DC CA 0B 99 FF 1D 26 09 E1 52 8F 71 77 45 FA なのに対して、バイナリファイルにした後は、
d4 c3 b2 a1 02 00 04 00 00 00 00 00 00 00 00 00
00 00 04 00 01 00 00 00 88 eb 40 54 a2 be 09 00
52 00 00 00 52 00 00 00 22 22 22 22 22 22 11 11
11 11 11 11 08 00 45 00 00 44 1a bd 40 00 80 06
3a 24 c0 a8 92 01 c0 a8 92 80 10 26 01 bb 86 14
7e 80 08 b3 c8 21 50 18 00 fc 0d 0e 00 00 18 03
03 00 17 01 0e fb 06 f6 cd a3 69 dc ca 0b 99 ff
1d 26 09 e1 52 8f 71 77 45 fa 6c c6 6f b7 68 c5
6f b7 70 81 97 08 70 81 97 08
こうなってたし、もうダメポ
すっげえ的外れになってる


以上ですが、もうヤダ
来年がんばる
さようなら