Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Dripcap03
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
h2so5
September 24, 2016
Programming
360
2
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Dripcap03
h2so5
September 24, 2016
More Decks by h2so5
See All by h2so5
Riot.js Tokyo #2
h2so5
0
740
Goによる P2Pチャットシステムの開発
h2so5
11
7.1k
Other Decks in Programming
See All in Programming
なぜ関数型プログラミングで「型」と「証明」が語られるのか #fp_matsuri
kajitack
3
1k
地域 SRE コミュニティ最前線 - ホンマでっかSRE勉強会
tk3fftk
0
280
琵琶湖の水は止められてもNet--HTTPのリトライは止められない / You might be able to stop the water flow of Lake Biwa but you can't stop Net::HTTP retries
luccafort
PRO
0
470
AWS DevOps AgentのAzure接続機能を検証して見えた活用法/Use Cases Verified for the AWS DevOps Agent's Azure Connectivity Feature
masakiokuda
0
170
Welcome to the "Parametricity" 🏙️ − Generic だけど Specific な世界 −
guvalif
PRO
1
190
自動化したのに回らないテスト運用の壁ーAI時代の品質責任と生産性
mfunaki
0
110
PHP に部分適用が来るぞ!……ところで何それ?おいしいの? #phpcon / phpcon-2026
shogogg
0
410
Embedded SREと共に達成した会員管理システムのAWS移行 - SRE NEXT 2026 ランチスポンサーセッション
niftycorp
PRO
1
3.2k
Prismを使った型安全な暗号化_関数型まつり2026
_fhhmm
0
150
5分で問診!Composer セキュリティ健康診断
codmoninc
0
690
その節約、円になってますか?
isamumumu
0
420
GDG Korea Android: 2026 I/O Extended ~ What's new in Android development tools
pluu
0
190
Featured
See All Featured
How to Talk to Developers About Accessibility
jct
2
450
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
750
Git: the NoSQL Database
bkeepers
PRO
432
67k
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
3
1k
Fashionably flexible responsive web design (full day workshop)
malarkey
408
67k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
580
The Impact of AI in SEO - AI Overviews June 2024 Edition
aleyda
5
1.1k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
670
KATA
mclloyd
PRO
35
15k
Measuring Dark Social's Impact On Conversion and Attribution
stephenakadiri
2
240
Designing Dashboards & Data Visualisations in Web Apps
destraynor
231
55k
30 Presentation Tips
portentint
PRO
1
360
Transcript
8FCٕज़Λར༻ͨ͠Ϟμϯͳ ύέοτΞφϥΠβͷ։ൃ
github.com/h2so5 ʢגࣜձࣾ151ʣ 㰡ຊɹ
ύέοτΞφϥΠβ ωοτϫʔΫΞφϥΠβ ➔௨৴ͷ༰ΛՄࢹԽ͢Δπʔϧ
w ωοτϫʔΫͷͷղܾ w ηΩϡϦςΟͷͷݕূ w ϓϩτίϧ࣮ͷσόοά w ωοτϫʔΫϓϩτίϧͷֶश
None
w ΫϩεϓϥοτϑΥʔϜ w $ ɾ(6*2U w ରԠ͍ͯ͠Δϓϩτίϧ͕๛ w $$ ɾ-VBͰϓϥάΠϯ͕ॻ͚Δ
w άϥϑඳըػೳFUD
w -VBͰॻ͚ͯ͋·Γخ͘͠ͳ͍ w (6*ϓϥάΠϯͰ֦ுͰ͖ͳ͍ w άϥϑΟΫε༻ͷ"1*͕ͳ͍ w ϓϥάΠϯཧखಈ w ϚϧνίΞڥ͕ߟྀ͞Ε͍ͯͳ͍
Dripcap
w NBD04-JOVY8JOEPXTରԠ w )5.-$44+BWB4DSJQUͰ6*Λهड़ w ղੳث EJTTFDUPS +BWB4DSJQUͰهड़ w OQNϞδϡʔϧʹରԠ
w ϓϥάΠϯཧػೳ
Demo
w $P⒎FF4DSJQU➔+BWB4DSJQU w (P➔$ w 8JOEPXTରԠʢԾʣ #PPTUձٞWFS͔Βͷओͳมߋ
(6*ͷϑϨʔϜϫʔΫ&MFDUSPO
ෳͷύοέʔδΛΈ߹Θͤͯ(6*Λߏங 1BDLFU-JTU7JFX #JOBSZ7JFX 'JMUFS7JFX 1BDLFU7JFX 4UBUVT7JFX
(6*ͷϓϥάΠϯεΫϦϓτʢൈਮʣ import $ from 'jquery'; import riot from 'riot'; import
Component from 'dripcap/component'; import { Package } from 'dripcap'; export default class PacketFilterView { async activate() { let pkg = await Package.load('main-view'); let wrapper = $('<div/>'); this.comp = new Component(`${__dirname}/../tag/*.tag`); this.view = riot.mount(wrapper[0], 'packet-filter-view')[0]; pkg.root.panel.leftSouthFixed(wrapper); } async deactivate() { let pkg = await Package.load('main-view'); pkg.root.panel.leftSouthFixed(); this.view.unmount(); this.comp.destroy(); } }
(6*ͷϓϩηεͱղੳϓϩηε *1$ .FTTBHF1BDL &MFDUSPO +BWB4DSJQU 7+4&OHJOF $
(6* /*$ ղੳϓϩηεͷத +BWB4DSJQU Τϯδϯ σʔλϕʔε MJCQDBQ
/*$ %JTTFDUPS5ISFBE σʔλϕʔε MJCQDBQ %JTTFDUPS5ISFBE %JTTFDUPS5ISFBE %JTTFDUPS5ISFBE 2VFVF 4USFBN%JTTFDUPS (6*
'JMUFS5ISFBE 'JMUFS5ISFBE 'JMUFS5ISFBE 'JMUFS5ISFBE
import { Layer, Buffer } from 'dripcap'; import MACAddress from
'dripcap/mac'; import EthEnum from 'dripcap/eth/type'; export default class EthrenetDissector { analyze(packet, parentLayer) { let layer = new Layer(); layer.name = 'Ethernet'; layer.namespace = '::Ethernet'; let destination = parentLayer.payload.slice(0, 6); layer.fields.push({ name: 'MAC destination', attr: 'dst', data: destination }); layer.attrs.dst = new MACAddress(destination); let source = parentLayer.payload.slice(6, 12); layer.fields.push({ name: 'MAC source', attr: 'src', data: source }); layer.attrs.src = new MACAddress(source); ղੳثͷϓϥάΠϯεΫϦϓτʢൈਮʣ
՝ʁ
/PEFKTͷ"1*ͱͷޓੑͷ ϓϩτίϧͷਪఆͷ ύϑΥʔϚϯεͷ
/PEFKTͷ"1*ͱͷޓੑͷ w ղੳث EJTTFDUPS ͷ࣮ߦڥ/PEFKTͰ ͳ͘ɺૉͷ+BWB4DSJQU 7 /PEFKT ෩#V⒎FS
w /PEFKTͷ"1*جຊతʹ͑ͳ͍ͷͰɺ मਖ਼͠ͳ͍ͱར༻Ͱ͖ͳ͍OQNϞδϡʔϧ ͋Δ
ϓϩτίϧͷਪఆͷ w ϓϩτίϧͷछྨ͕σʔλ͔Βผ͠ʹ͘ ͍߹ʹͲ͏ॲཧ͢Δ͔ w ݱࡏͷ࣮Ͱɺ͋Δύέοτ͕ϓϩτί ϧ"ɾ#ೋ௨ΓʹղऍͰ͖Δ߹ɺ྆ํ ͷղੳ݁ՌΛग़ྗ͢Δ w 8JSFTIBSLͰϙʔτ൪߸Ͱผ
ύϑΥʔϚϯεͷ w ͑ͳ͍͜ͱͳ͍ͱ͍͏Ϩϕϧ WYͷ ͱ͖ΑΓվળ w վળ͖͍͢Ζ͍Ζ͋Δ͕ɺࠓͷͱ͜ Ζ༏ઌ͕͋·Γߴ͘ͳ͍ w
ͪΌΜͱϕϯνϚʔΫςετ͠ͳ͍ͱʜ
None