技術書店にいってきました

4/22(Sun)ペンタトニックスとけいだろうくんと技術書店行ってきました。

会場は先週のセチャコンと同じ秋葉原UDXでした。

f:id:simauma1203:20180422195222j:plain

お昼に行ったんですが人が多くて移動が大変でした。これは早く行ってもそうだったと思うのでしょうがないですね。

 

企業の出展はガチな本で一冊2000円-みたいな雰囲気がありました。高かったので企業では何も買いませんでした。

結局しばらく歩き回った挙句、2冊買いました。

 

f:id:simauma1203:20180422195204j:plain

買ったのはこれで

下のはksnctfについて、上のはx86 CPUについての本で、ksnctfは多分唯一のCTF本だったので買いました。

x86本は中身を見てもほとんど何もわかりませんでしたが、すごい密度が濃さそうだったので、とりあえず買っとけ!ってノリに流されました(

 

ksnctfは少しずつ解いていきたいと思っているので、とりあえずpwnableのところは読みたいと思います。パケットとかは興味があるんですけど全く知らないので頑張ります。

 

セチャコンにいってきました

4/15(sun)にセチャコンがあったので行ってきました。

ぺんたさん(@penta_seijin)も来てくれてとても心強かったです、ありがとう!

セチャコンはあのSECCONとSecHack365が共同開催しているイベントで、

色々企画がやっていました。

やってた企画についてはここに掲載されています。

 

まず、このイベントに行った理由としては、CTFなイベントが国内でそんなにないということと、今年のSecHackに応募するために色々参考が得られるかなと思ったからです。

 

会場は秋葉原UDXの2階にあります。

f:id:simauma1203:20180416213506j:plain

会場の正面です。ロゴがめちゃかっこいい!映えますね

 

会場についた後、SecHackの相談と昨年のSecHackのプレゼンとNON STOP(NICTの攻撃パケットのデータセットなど)の紹介を覗きました。

これは後で気づいたんですがBadUSBを作る企画がめちゃ面白そうでした。

パソコンが持っていけなかったので仕様がないですが...

 

あと一人だけレイヤーさんがいました、男性か女性かわかりませんでしたが美少女でした!

 

NON STOPの紹介

これは途中から話を聞いただけですが、NICTでは日本各地にあるサーバーで攻撃パケットを受信して、データセットとして提供しているらしいです。これは無差別に送られた攻撃パケットをキャッチして発信元のIPとセットにして、色々解析につかえるらしいです。

スパムメールの動向を研究している方がいました。僕には実際に何に活かせるのかというところで少し疑問に思いました。

SecHack365について

ここでは研究者の方や有名なプロの方と色んなことを話せたのでかなり有意義でした。

開発駆動の方はプログラミングとか開発を愛する人こそが通るって感じでした。

考えているテーマについても賛同を貰えてよかったです。

 

去年のSecHackの発表

工業大学の方の発表をききました。攻撃の可視化というテーマでUnityを使ってmobで攻撃の脅威度を表すソフトを作っていました。色々今後のプランも考えているようで、さすがの精進力だと思いました。

あと、割と女性が多かったです。今まで思ってたのと違って深い技術を研究する人は少なかったです。プログラミング初学者でも未経験でも割と行けるかもしれません。

 

こんな感じで色々学ぶことが多かったです。

たくさんアドバイスをもらえたので、もう少し課題を弄ってみようと思います。

頑張って通します。

 

 

 

ABC088

先日(2/18)、ABC088に出ました。

abc088.contest.atcoder.jp


競プロ初めて10日で初めてのratedコンテストだったのでCまで解ければいいやと思ってましたが無事全問ACとれました。
今の目標としてはAGCで二完、次のABC089で全完です。
正直今回のABCは勉強したところが偶々出たので、まずこれからは広く浅く勉強します。


記録として思いついた解法を書いておきます。

A:Infinite Coins

N mod 500 をとってAと比べて終了。

B:Card Game for Two
AliceとBobは残ってるカードのうち大きいものをとろうとするので
aを降順にソートして上から順にAlice、Bobにカードを与えれば終わり。

C:Takahashi's Information
あるcが決まれば他のマスも決まるのでcの一つのマスだけ全探索しました。

D:Grid Repainting
これは面倒臭かったです
迷路なのでとりあえずBFS使っておけ!wということでBFSで最短距離を求めます。
最短経路とスタート、ゴールしかすぬけ君は通らないので余分なマスが求められます。

bit全探索

ARCのC問題をときます
bit全探索というのを使うらしいです
arc061.contest.atcoder.jp

最初見たときは再帰関数でしか実装の仕方がわからなかったので、bitを使って全探索する方法をしらべました。

すると二進数のbitを区切りに見立てて0x0000000〜0x1111111の範囲を全部調べれば良いことがわかりました

区切りが出てくるまで数字を加算して
区切りが出て来たら数字を整形、全体の和に足すみたいな感じです

書いたコード

#include<iostream>
#include<cstdlib>
#include<string>
#include<vector>
using namespace std;
int i,j,k;
string s;
vector<long int> nums;
long int sum;
long int fac;//+で区切られた数

int main(){
    cin>>s;
    //各桁の値をnumsに格納
    for(i=0;i<s.length();i++)nums.push_back(stoi(s.substr(i,1)));
    //全パターン
    for(i=0;i< 1<<(nums.size()-1);i++){
        //1パターン
        //cout<<endl<<i<<"---------"<<endl;
        fac=0;
        for(j=0;j<nums.size();j++){
            fac+=nums[j];
            if(((i>>j)&1)==1){
                sum+=fac;
                //cout<<fac<<endl;
                fac=0;
            }else{
                fac*=10;
            }
        }
        //cout<<fac/10<<endl;
        sum+=fac/10;
        //cout<<endl<<i<<endl;
    }
    cout<<endl<<sum;
    return 0;
}

これでなんでACできたかわかりませんがまあまあ短く書けました

参考サイト
初めてのビット操作を使った全探索 - マツシタのお勉強メモ
bit全探索 - whileD'iary

どうでもいいですが

新しいイヤホンを買いました

ShureのSE215といイヤホンです

これ↓

f:id:simauma1203:20180130182746j:image

 

えっと何でこれを買ったかというと、

勧められたからという理由が一番なんですが、

このメーカーのイヤホンはシュア掛けというイヤホンの掛け方ができるという利点があるからです

シュア掛けは耳の上と後ろを通してケーブルをかける掛け方で、これをやる事でタッチノイズが軽減されるらしいです。

 

あと此のイヤホンはShureの出してるイヤホンのリケーブルできる中でほぼ一番安いからです。(リケーブル=ケーブル交換)

リケーブルできるので断線しても問題ないし、色も変えれるのでいいですね

 

音質はかなり良いです。

高音から低音まで強いです。特に低音が綺麗に響きます。

 

以上、どうでもいい独り言でした

12日目 ユーザID

おはようございます

実はユーザIDに入る前にファイルの権限について軽く勉強しました。

先にそれをまとめたものを書いておきます。

きたないです

 

open()の第二引数に0_CREATフラグが指定されると作成されるファイルの権限を定義するためのフラグが必要となります

これは第三引数にかきます

S_IRUSR、S_IWUSR、S_IXUSRとかがあります。USRのところをGRP、OTHに置き換えればグループやその他(全員)に対して権限を与えられます。

権限はls -l で確認できます

ファイルの権限を追加(削除)したいときは

chmod ugo-wx ファイル名

と言うふうにします。この場合、User,Group,OtherからWriteとeXcutableの権限を削除(追加なら+ってやる)という意味です。

 

あとset user id権限というものがあります。

これはファイル権限を指定するビットにも含まれてます。

これを設定するとファイルの所有者の権限でプログラムが実行されます。

具体的に以下のプログラムで確認してみます

 f:id:simauma1203:20180130182206j:image

 

普通にコンパイルして実行します

 f:id:simauma1203:20180130182218j:image

 

次にsudo chown root:root ./a.out

で持ち主をrootにして

またsudo chmod u+s ./a.out

でset user id権限を付与します

これで実行します

 f:id:simauma1203:20180130182227j:image

 

はい、実効uidが0(root)になりました

 

この仕組みは/usr/bin/chshから/etc/passwdに書き込むために使われています 

 

具体的にはchshというプログラムからset user idを使って自身のユーザーのログインシェルの情報だけ変更できるようになってるらしいです

 

今回は短いですがここまでです

 

次はset user id権限を使った簡易的なメモ帳を使って勉強します