NapvgRdl ({: usj12262@hotmail.com 2002.02.08 v1.0)
==========================
2002.02.16 8,9Ԃ|󂵂ĂȂ̂Ŗ|
2002.03.21 602Ԃ
2002.08.17 5.1߂
2002.08.18 5.2߁A5.3߂
2003.06.18 820,822,10118Ԃ
	Xgɂ͂ȂǁA720Ԃ932Ԃƌ݊̂R}h݂ł
2003.07.03 618Ԃ
2003.08.08 banR}hnapigatorvgR̒|
2003.08.12 napigatorvgR̒ǉ
2003.12.17 748Ԃ

By cyberalien@users.sourceforge.net
19 March 2002

Original by drscholl@users.sourceforge.net
April 7, 2001

0.  Dr. SchollɂO

͌JꂽdlłBG[𔭌ꍇA܂͂ɏĂ
Ȃt@\mĂꍇ͎Ƀ[𑗂ĂB
΁ASŐmȃvgRdl邽߂ɃR~jeB[Ŝ
ɗ܂BɂāACӂ̃vbgtH[ŃNCAgJ
邾łȂAT[o[sK؂ȃNCAgbZ[W͂镉S
ył܂B

0.1  CyberAlienɂO

IWi̕Dr.Scholl܂B͂̃bZ[WC
AOpenNapSlavaNap̃bZ[WƂ̊gǉANapigatorvgR
dlǉ܂B
Rgmailto:cyberalien@users.sourceforge.netփ[B

1.  ŋ߂̕ύX_

* napigatordl̏C (2001.10.12)
* 100,110ԃR}h̏C (2001.10.12)
* opennap 0.44  slavanap 2.0.0 ̋@\ɍ킹čXV (2001.12.14)
* banR}h [612]̐C (2002.3.19)
* napigatorvgȐC (2002.12.26) by CorsicaNap
* napigatorvgȐC (2003.08.02) by CorsicaNap

2.  NCAg-T[o[vgR

NapvgR̓NCAgT[o[ւ̒ʐMTCPg܂BӂA
T[o[̓|[g88887777œ܂B̓|[g8875œ"^T
[o["(܂̓_CN^[)Ƃ͂ƂɒӂĂB
: Napster 10.3ȑOł̓|[g8875̂8876g܂B

T[o[(/)̊ebZ[W
	<length><type><data>
Ƃ`łB<length><type>͂ꂼ2oCgłB<length>ł̓b
Z[W<data>̃oCgw肵܂B<length><type>gGf
BA`(ʂ̏̃oCgɂ)ł邱ƂɒӂĂB
Ⴆ΁ACł͐1̃R[h
	const unsigned char num[2] = { 0x01, 0x00 };
̂悤ɂȂ܂B256̃R[h
	const unsigned char num[2] = { 0x00, 0x01 };
ƂȂ܂B[L͎߂̂̂łBۂ̃R[hɂ͂
ƂƑ@܂B-Ҏ]
bZ[W<data>͂ӂASCIIłB

Napster Beta 10.3ȍ~ł́AgGfBÂɃrbOGfBA
g܂B܂A256{ 0x01, 0x00 }ƂȂA1{ 0x00, 0x01 }ƃR[
hƂƂłB

̏ꍇA͓dpň͂񂾍ڂƂēn邱ƂɒӂĂ
BႦ΁At@CNCAgID́̕A
	"random band - generic cowboy song.mp3"

	"nap v0.8"
̂悤ɑ܂B
dṕAKvȂΉL̃bZ[W̐̂悤Ɏg܂B

p݂̈͂̂ȂňpgƂɂĂ̒ǉ:
> nołBp甲o܂B'a "quoted" string'Ƃt
> [YWindows̃NCAgŌ悤ƂĂ1Ȃ݂܂B
> ăR\[EBhEɉF"invalid search request"ƕ\
> ܂B(ꂪȂ̃R[hȂ̂͂킩܂B߂Ȃ)
>
> ēR-- ANCAgȉ̂悤ɑMƋĂ܂B
>
> FILENAME CONTAINS "a "quoted" string" MAX_RESULTS 100

[Ben Byer <bbyer@rice.edu>ɂ铊e  -Ҏ]

IRCvgRƂāAes\r\nŏIȂƂɒӂĂB
<length>tB[hł͂Ȃǂݍނׂf[^ʂ𐳊mɎw肵܂B

3.  bZ[W^Cv

ȉ̃ZNVł́AebZ[W^Cv<data>ZNV̏ɂ
܂BetB[h<>tĕ\܂B
bZ[W̃tB[h1̃Xy[X(ASCII 32)ŋ؂܂B
KvɉāAebZ[W<data>ZNV̗܂B

[SERVER] : bZ[WT[o[M邱ƂӖ܂B
[CLIENT] : bZ[WNCAgMƂӖłB
[NAPSTER] : NapsterNCAg܂̓T[o[gpƂӖłB
[OPENNAP] : OpenNap 0.44ŃT|[gĂƂӖłB
[SLAVANAP] : SlavaNap 2.0.0ŃT|[gĂƂӖłB

T[o[̎ނm̂͊ȒPłB[U[T[o[ɃOCƂ
T[o[MOTD𑗂܂BOpenNapSlavaNap"VERSION opennap 0.44" 
"VERSION SlavaNap 2.0.0"̂悤ȕMOTD̊ԂɑM܂B

<type>͈ȉ̂̂ǂꂩɂȂ܂(rbOGfBAɕϊ܂):

0	G[bZ[W [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <message>

2	OC [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <nick> <password> <port> "<client-info>" <link-type> [ <num> ]

	<port> NCAgf[^]̂߂ɑ҂󂯂Ă|[głB
		̒l0ȂANCAgt@CA[EH[̒ɂāAt@
		CO։oƂłȂƂƂłB_E[h
		v500ԃbZ[W(Ă)gčs܂B
	<client-info> NCAgo[W񂪓łB
	<link-type> NCAg̑ш敝lłB
		0  s
		1  14.4 kbps
		2  28.8 kpbs
		3  33.6 kbps
		4  56.7 kbps
		5  64K ISDN
		6  128K ISDN
		7  P[u
		8  DSL
		9  T1
		10 T3ȏ
	<num> windowsNCAg̃rhԍłB [C]
		
	:

	foo badpass 6699 "nap v0.8" 3

3	OC [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <email> [<number>]

	T[o[́ANCAgOC(2)ɐł̃bZ[W
	𑗂܂BOo^ς݂̂Ƃ́Ao^ɗ^ꂽ<email>Ah
	XԂ܂BOo^̏ꍇ́A_~[̒lԂ܂B


	<number> NapsterT[o[t܂B
		͂Ԃ񃆁[U[̔ԍłB

4	o[W`FbN [CLIENT] [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

        : <version>

	T[o[́AAbvf[gKvȂ[5]AłȂ[4]𑗂܂B

	<version> = łBo[W2.0b5a"2.0"𑗂܂B

5       "auto-upgrade"(\tgEFA̎XV) [SERVER]

	[NAPSTER]

        : <version>
        Beta5ł̏: <version> <hostname:filename>

        ÂNapsterłBVo[WɓĂB
        Beta5ł͑傫ȃZLeB[z[܂B

        <version>  = AVo[W̔ԍłB
        <hostname> = AXV(http)T[o[̃zXgłB
        <filename> = At@CłB

	<hostname><filename>Beta5Ŏg܂B
	V߂̃o[Wł͂̒l𖳎܂B

6	VK[U[̃OC [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <nick> <pass> <port> "<client-info>" <speed> <email-address>

	̃R}h́A߂ăOCĐVK̖Oo^ƂɎg܂B
	NCAg͂ӂA"O`FbN"(7)bZ[WgāAgp
	O`FbNAT[o["Oo^"(8)󂯎炱̃R
	}hŃOCn߂܂B


	: ̃bZ[W0x02bZ[W̍Ō<email-address>t
	̂ƓłB

	:

	foo foo 6699 "nap v0.8" 3 email@here.com

7	O`FbN [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <nick>

	T[o[ɖ₢킹āA<nick>o^ς݂ǂ܂B
	ӂ̃bZ[ẂA߂ăOCOɐOǂ`
	FbN邽߂Ɏg܂B

	̃bZ[Wւ̉8ԁA9ԁA10Ԃ̂ǂꂩłB

8	Oo^ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: (empty)

	T[o[́AO`FbN(7)bZ[Wւ̉ƂẴbZ[W𑗂A
	w肳ꂽOo^Ŏgp\ȂƂ܂B

9	Oo^ς [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: (empty)

	T[o[́ANCAgvO𑼂̃[U[łɓo^
	Ƃ̃bZ[W𑗂܂B 

10 (0x0a)	OԈĂ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: (empty)

	sK؂ȕ(Ă͋󔒂⑼̕\łȂ)ĂĎw肵
	OȂƂȂǂɁÃT[o["O`FbN"(7)bZ
	[Wւ̉ƂẴbZ[W𑗂܂B

        NapsterЂ̃T[o[́Aȉ̕(́A啶Ə)Ȃ閼
        Ô݋܂B:
               abcdefghijklmnopqrstuvwxyz1234567890_[]{}-@^!$

11	pX[h`FbN [CLIENT]

	[NAPSTER,SLAVANAP]

	: <nick> <pass>

	̃R}h́ANapsterZbgAbvV[PX̊Ԃg܂B
	pX[h΁AT[o[12ԃbZ[Wŉ܂B
	łȂ΃T[o[0ԃbZ[W𑗂܂B

12	pX[h OK [SERVER]

	[NAPSTER,SLAVANAP]

	: (empty)
	̃bZ[ẂANCAg11ԃbZ[Wւ̉ƂĕԂ
	܂B 

13	echo??? [SERVER]

	[NAPSTER]

	: <numeric>: [args]

	OC(2)R}h𔭍sOɁAT[o[͎MƁAM
	Cӂ̃R}h̔Cӂ̈GR[obN܂B

14	OCIvV [CLIENT]

	[NAPSTER]

	NAME:%s ADDRESS:%s CITY:%s STATE:%s PHONE:%s AGE:%s INCOME:%s EDUCATION:%s

	:

	NAME: kev  ADDRESS:  CITY: ephrata  STATE: pa  PHONE:  AGE: 60 or older INCOME: $100,000 or more        EDUCATION: Graduate Degree

	͕Kv܂B

15	14ԂƓłBBeta7ȍ~Ŏg܂B(ȑÕo[W15ԂgĂǂ͒m܂)

	[NAPSTER]

100 (0x64)	Lt@C̃NCAgʒm [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: "<filename>" <md5> <size> <bitrate> <frequency> <time>

	<md5> "MD5"ZNVĂB
	<size> bytes(oCg)
	<bitrate> kbps(Lrbgb)
	<frequency> hz(wc)
	<time> seconds(b)
	
	:
	"generic band - generic song.mp3" b92870e0d41bc8e698cf2f0a1ddfeac7-443008 443332 128 44100 60

	mp3ȊÕt@C̋Lɂ́AOpenNapSlavaNapŃT|[g
	10300ԃR}h܂BقƂǂ̃NCAg100(܂
	870)ԃR}hgAPɃrbg[g=24, g=16000,t
	=600ɐݒ肵܂B

102 (0x66)	t@C폜 [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <filename>

	LXgt@C폜NCAgvłB

110		ׂẴt@CL͂ [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: (empty)
	T[o[: <num>

	NCAgȑOLĂt@CȂɂLĂȂ
	T[o[ɒʒm܂B T[o[110ԃR}hɃNCAgȑO
	LĂt@C̐tĕԂ܂B

200 (0xc8)	NCAǧv (client search request)[CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	:

	[FILENAME CONTAINS "artist name"] MAX_RESULTS <max> [FILENAME CONTAINS
	"song"] [LINESPEED <compare> <link-type>] [BITRATE <compare> "<br>"] [FREQ
	<compare> "<freq>"] [WMA-FILE] [LOCAL_ONLY]

	OpenNapSlavaNap̂:

	[TYPE <mime-type>] [FILENAME EXCLUDES "exclude string"] [SIZE <compare>
	<filesize_in_bytes>] [DURATION <compare> <song_duration_in_seconds>]

	SlavaNap 2.x̂:

	[SHOW_QUEUE] [SHOW_SOFTWARE]	



        A[eBXgƋȖ̓t@C܂ނׂłB
	A[eBXgƋȖ̊Ԃɂ͂ȂɂႢ͂܂B

        <max> ͐ł; 100ȏȂANapsterT[o[͌ʂ100Ԃ܂B
	OpenNapSlavaNapł́A<max>100ȏɂł܂B

        <compare>͎̂̂ǂꂩłB:
                "AT LEAST" "AT BEST" "EQUAL TO"

        <link-type> 1`10܂ł̊Ԃ̐łB0x02(NCAgOC)ĂB

        <br> ͐(kbps)łB

        <freq> ̓TvOg(Hz)łB

	<mime-type> OpenNapSlavaNaṕAmp3łȂȂ̃fBA^C
		vT|[g܂BWł́Amp3t@CɈv܂B
		łANCAgMIMEReg^Cv(yAAeLXgA
		AvP[VA摜Amp3)𕔕IɎw肷邱ƂŁȂ̃
		fBA^Cvł܂B(f[^x[XɃfBAǉ
		10300ԃbZ[WĂB)
		ʂȃL[[hł`any'́Af[^x[X̔Cӂ̃fBA^CvɈv܂B

		ʂ́Arbg[gATvOgÃtB[h
		ӖȂƂ΁Amp3̂ƂƓ悤ɕԂ܂BăN
		CAǵAmp3t@CƓ悤Ƀ_E[hł܂B


	FILENAME EXCLUDES "..."

		OXgɂPɃ}b`邷ׂẴt@CO邱Ƃ
		ʂtB^O܂B
		FILENAME CONTAINS "..."ƂɎgȂ΂܂B
		(: Napster 2.0 BETA 8̎_ŁAFILENAME CONTAINŜ̕
		A}CiXL(-)OɕtṔArIȂ̂ƍl
		B)
		OpenNapSlavaNap̃T[o[Ŏg܂B

	SIZE, DURATION

		̃t@CɉāAt@CTCYƉ̂̒v邱
		Ƃł܂BOpenNapSlavaNap̃T[o[Ŏg܂B


	LOCAL_ONLY ɂAT[o[ׂ͂ẴNT[o[ނ듯
		T[o[̃[U[̃t@C܂B

	SHOW_QUEUE SlavaNap 2.xT[o[œ삵܂BɂA
		T[o[͊eʂɃ[g[U[̃L[ACe̐t
		܂B[g[U[̃\tgEFAL[\Ȃ
		΁AT[o[̓L[̂"n/a"t܂BłȂ
		΃T[o[͈ȉ̒PȃASYŐԂ܂B:
		 current_uploads + queued_uploads - max_uploads;
		łAL[ɓ炸Ƀ[g[U[_E[hł
		ȂAT[o[͔Cӂ̃}CiX̐Ԃ܂B[U[ݓ
		Abv[h̍őlɒBĂȂ΁AT[o[̓L[ACe
		̐Ԃ܂BL[ACe̐ݒ肷ɂSlavaNapR}
		h8112ԂgĂBv"SHOW_QUEUE"t邩
		ɁASlavaNapR}h8113ԂgăL[ACe̐W߂
		Ƃł܂B
		SlavaNap"readme.txt"ĂB

	SHOW_SOFTWARE SlavaNap 2.xT[o[œ삵܂BT[o[
		ʂɃNCAg\tgEFA̖Ot܂BȂ
		̃NCAgƎ̓ȃvgRÃNCAg
		łȂbZ[WŎזȂƂɎg܂B

		"SHOW_QUEUE""SHOW_SOFTWARE"̗vŎgƁA
		T[o[͎n߂ɃL[ǉAɌʂ܂B
		SlavaNap"readme.txt"ĂB
		

        windowsNCAǵANCAgpingԂŃtB^[
				܂B͂ƂĂKvȂƂłApingԂŗǂ100
				~bxɐݒ肵āAő匟50ɂ΁AȒPɌ
				܂BȂ͗Ⴆ3̌ʂ𓾂ł傤B
				NCAǵAˑRƂĂȂ"50̌"
				Ƃł傤B

        :
                FILENAME CONTAINS "Sneaker Pimps" MAX_RESULTS 75 FILENAME
                         CONTAINS "tesko suicide" BITRATE "AT LEAST" "128"

                MAX_RESULTS 100 FILENAME CONTAINS "Ventolin" LINESPEED
                        "EQUAL TO" 10

	[𓊍eĂꂽBen Byer <bbyer@rice.edu>Ɋӂ܂B  -Ҏ]


	Ql: 10300"ʂ̃fBAt@CL"ĂB

201 (0xc9)	 [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	"<filename>" <md5> <size> <bitrate> <frequency> <length> <nick> <ip>
	<link-type> [ [weight] | [queue] "[software]" ]

	<md5> "MD5"ZNVĂB
	<size> t@CTCY(bytes)łB
	<bitrate> mp3̃rbg[g(kbps)łB
	<frequency> TvO[g(hz)łB
	<length> mp3̉tԂ̒(b)łB
	<nick> t@CLĂlłB
	<ip> ̃t@CĂ郆[U[IPAhX\AȂ
		{xłB
	<link-type> ̓NCAgOC(2)bZ[WĂB
	[weight]	NCAgʂ̈ꗗבւ悤ɂ邽߂
			EFCgvfłBvX̒l"悢"vA}CiX
			̒l"邢"v܂B
			l^Ȃ΁AEFCg0ɂȂ܂B

	[queue]		SlavaNap 2.x̂݁B[g[U[̃L[ACe̐
			BT[o[͂Ȃv"SHOW_QUEUE"tƂ
			Ԃ܂BSlavaNapT[o[[weight]p[^Ԃ܂B
			

	[software]	SlavaNap 2.x̂݁B̃p[^[̓[gNCAg
			g\tgEFA܂BSlavaNapT[o[[weight]p
			[^Ԃ܂B

	:

	"random band - random song.mp3" 7d733c1e7419674744768db71bff8bcd-2557521 2558199 128 44100 159 lefty 3437166285 4

	SlavaNap̗:

	v: FILENAME CONTAINS "sunshine"
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6

	v: FILENAME CONTAINS "sunshine" SHOW_QUEUE
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6 n/a
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6 2
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6 -1

	v: FILENAME CONTAINS "sunshine" SHOW_SOFTWARE
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6 "v2.0 BETA 10.4"
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6 CQ_EX

	v: FILENAME CONTAINS "sunshine" SHOW_SOFTWARE SHOW_QUEUE
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6 n/a "v2.0 BETA 10.4"
	l鉞: "c:\MP3\Emma Bunton - Sunshine On A Rainy Day.mp3" 00000000000000000000000000000000 4118494 128 44100 257 CyberAlien 3437166285 6 0 CQ_EX

202 (0xca)	T[o[̌̏I [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: (empty)

203 (0xcb)	_E[hv [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <nick> "<filename>"

	<nick><filename>_E[h邽߂̃NCAgvłB
	NCAg͎w肵f[^|[g<nick>ɊOւ̐ڑs܂B

	:

	mred "C:\Program Files\Napster\generic cowboy song.mp3"

	Ql: 500"փ_E[hv"ĂB

204 (0xcc)	_E[h[SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> <ip> <port> "<filename>" <md5> <linespeed>

	T[o[́A203ԗvւ̉ƂẴbZ[WԂ܂B

	<nick> t@CĂ郆[U[
	<ip> IPAhX\Ȃ̔{xłB
	<port> [U[<nick>҂󂯂Ă|[g
	<filename> Mt@C
	<md5> md5̃`FbNT
	<linespeed> [U[̐ڑx(OC(2)Ă)

	:

	lefty 4877911892 6699 "generic band - generic song.mp3" 10fe9e623b1962da85eea61df7ac1f69 3

205 (0xcd)	̃[U[(/)̃vCx[gbZ[W(IM) [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> <message>
	bZ[W𑗐M/Mǂ̃NCAgɂ^Cvg
	邱ƂɒӂĂB 

206 (0xce)	G[擾 [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "<filename>"

	T[o[́A[U[_E[hvt@C擾łȂƂ(
	[U[OCĂȂȂ)ɂ̃bZ[W𑗂܂B


207 (0xcf)	zbgXgɒǉo^ [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <user>

	̃R}h́ANCAg̃zbgXgɍڂǉ邽߂Ɏg
	܂BT[o[́AzbgXg̃[U[OC܂̓OAEg
	ƂƂɁA209Ԃ210Ԃ̃bZ[W𑗂܂B

208 (0xd0)	zbgXg [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <user>

	̃R}h́An߂̃OCƂ̊ԂɎn߂̃zbgXg̍ڂ̃
	Xg𑗂̂Ɏg܂B͂ӂAt@CǉR}h(100)
	Oɑ܂Bn߂̃XgꂽŃzbgXgɍڂǉ
	ɂ́A207ԃbZ[WɎg܂B


209 (0xd1)	[U[TCC [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user> <speed>

	T[o[́ANCAgɃzbgXg̃[U[<user>T[o[
	<speed>̉xŃTCCƂʒm܂B

210 (0xd2)	[U[TCAEg [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	T[o[́ANCAgɃzbgXg̃[U[<user>T[o[
	TCAEgƂʒm܂B

	̃bZ[ẂA݂ȂNCAgɎQƂ悤ƂƂT[
	o[ɂđ܂B

211 (0xd3)	[U[̃t@CQ(browse) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick>

	NCAǵÃNCAgLĂt@C̈ꗗ擾
	ƂɁÃbZ[W𑗂܂B

212 (0xd4)	QƉ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "<filename>" <md5> <size> <bitrate> <frequency> <time>

	<nick> t@C𓊍e郆[U[łB
	<filename> emp3t@CłB
	<md5> mp3t@C̃nbVłB
	<size> t@CTCY(oCg)łB
	<bitrate> mp3̃rbg[g(kbps)łB
	<frequence> TvOg(Hz)łB
	<time> t(b)łB

	:

	foouser "generic band - generic song.mp3" b92870e0d41bc8e698cf2f0a1ddfeac7 443332 128 44100 60

213 (0xd5)	QƉ̏I [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> [ip]

	<user>̎QƃXgɂȏ̍ڂȂƂ܂B
	<ip>̓NCAgIPAhX^܂B

214 (0xd6)	T[o[v [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: no data
	T[o[: <users> <# files> <size> ["GB" <myfiles>]

	<size> Cu[̍vTCY(MKoCg)̊TZłB
	̃bZ[ẂANGXgȂƂT[o[܂ɑ܂B
	"GB"eLXǵAo[W10.3ȍ~NapsterT[o[t܂B
	<myfiles> [U[LĂt@CłB

	:

	old:  553 64692 254
	new:  553 64692 254 GB 102

215 (0xd7)	W[v [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<checksum> <filesize>

	NCAg̓̂t@C[U[̃Xgv
	Ă܂BT[o[́AevƂ216ԃbZ[W̃XgŉA
	Â217ԃbZ[WňꗗI܂B

216 (0xd8)	W[ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user> <ip> <port> <filename> <checksum> <size> <speed>

	̃bZ[W̓W[v(215)Ɉv̂܂ł܂B
	ꗗ217ԃbZ[WŏI܂B

217 (0xd9)	W[̈ꗗI [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	no data.

	̃bZ[ẂA215Ԃ̃NCAgvŎn܂216ԃbZ[W
	ꗗI܂B

218 (0xda)	t@C̃_E[h [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	no body.

	NCAǵAt@C_E[hł邱Ƃ߂ɁA
	bZ[WT[o[ɑ܂BɂAT[o[Ǘ_E
	[hJEg1܂B

219 (0xdb)	_E[h [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	no body.

	NCAǵA218ԃbZ[WŎt@CƂ
	߂ɁÃbZ[WT[o[ɑ܂BɂAT[o[
	Ǘ_E[hJEg1܂B

220 (0xdc)	t@C̃Abv[h [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	no body.

	NCAǵAt@CAbv[h悤ƂĂ邱Ƃ
	ɂ̃bZ[W𑗂܂BɂAT[o[ǗAbv[
	h[hJEg1܂B

221 (0xdd)	Abv[h [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	no body.

	NCAg̓t@C̃Abv[hIƂ̃bZ[W𑗂܂B
	T[o[ǗAbv[hJEg1܂B

300 (0x12c)	\̃|[g [CLIENT]

	[NAPSTER]

	<port>

	ݎgpĂ|[g̃p[eB[ɓ͂ȂƂANCAg
	̃R}hŗ\̃|[gw肵Af[^ڑ݂邱Ƃł܂B
	OpenNapSlavaNapł͖܂B

301 (0x12d)	zbgXg[SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <user>

	T[o[́A<user>𖳎zbgXgɒǉłƂNCAg
	ʒm܂B

302 (0x12e)	zbgXgG[ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <user>

	T[o[́A<user>zbgXgɒǉłȂƂNCAg
	ɒʒm܂B[Ȃ̃zbgXgɓo^ς݂̖Oǉł܂H -Ҏ]

303 (0x12f)	zbgXg烆[U[폜 [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <user>

	NCAǵA<user>T[o[ɃTCCTCAEg
	Ƃ̒ʒmv肪ȂƂAT[o[ɒʒm܂B
	͂ȂɂԂ܂B

310	??? [CLIENT, SERVER]

	[NAPSTER]

	NCAg: no data
	T[o[: 0

	sȃR}hłBT[o[̓p[^Ɋ֌WȂ0Ԃ܂B

316	NCAgؒf??? [CLIENT, SERVER]

	[NAPSTER,OPENNAP]

	NCAg: no data
	T[o[: 0

	T[o[́ANCAgؒf悤ƂĂƂ`0'̒lt
	ẴbZ[W𑗂܂B

	NCAg̃R}h𔭍sƂ̓͂킩Ă܂B
	T[o[͂̏ꍇANCAgؒf316ԃbZ[W𑗂
	łB

	[T[o[́A1000ȏ̐l𑗂Ƃ̃bZ[W𑗂悤łB
	܂AT[o[͂̃bZ[W𑗂łȂؒf܂B  -Ҏ]


320 (0x140)	[U[Xg [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: no data
	T[o[: <count>

	Ă郆[U[̈ꗗ\NCAgvłB
	T[o[͖Ă郆[U[̐Ԃ܂B

321 (0x141)	[U[̖Xg [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	T[o[́A320ԗvւ̉ƂĖĂeO𑗂܂B
	ꗗ́AĂ郆[U[̐t320ԃbZ[WŏI܂B

322 (0x142)	[U[𖳎Xgɒǉ(add user to ignore list) [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	T[o[́AOԂƂŗv󂯓܂B

323 (0x143)	[U[𖳎Xg폜 [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	T[o[́AXg폜閼OԂƂŗv󂯓܂B


324 (0x144)	[U[͖ĂȂ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	T[o[́A323ԗvւ̉Ƃ<user>ݖĂȂ
	Ă܂B

325 (0x145)	[U[łɖĂ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	T[o[́Aw肵[U[łɃ[U[̖XgɓĂ
	ƂĂ܂B

326 (0x146)	Xgׂč폜 [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: no data.
	T[o[: <count>

	NCAǵAT[o[ɖXgׂč폜悤ɗv܂B
	T[o[͖Xg폜ꂽڂ̐Ԃ܂B

330 (0x14a)	ubNĂIPꗗ [CLIENT]
	[NAPSTER]

332 (0x14c)	IPubN [CLIENT]
	[NAPSTER]

333 (0x14d)	IP̃ubN [CLIENT]
	[NAPSTER]

400 (0x190)	`lɓ(join channel) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel-name>

	NCAg̓`lɓ邽߂ɂ̃R}h𑗂܂B

401 (0x191)	`lގ(part channel) [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel-name>

	NCAg̓`lގ邽߂ɂ̃R}h𑗂܂B
	T[o[̓NCAg`lގƂ߂ɂ̃b
	Z[W𑗂܂B̓NCAgvȂĂƂǂ
	̂ŁAłM鏀łĂȂ΂ȂƂɒӂĂB

402 (0x192)	`lbZ[W(public message)̑M [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <message>

403 (0x193)	`lbZ[W [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <nick> <text>

	̃bZ[ẂANCAg`lbZ[W`lɑ
	T[o[ɂđ܂B 

	:

	80's espinozaf hello...hola

404 (0x194)	G[bZ[W [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<text>

	̃R}h͈ʂ̃G[bZ[WOCNCAgɑ
	̂Ɏg܂B: 0ԃbZ[W̓OCƂ̊Ԃ܂B

	:

	User nosuchuser is not currently online.
	channel #nosuchchannel does not exist!
	permission denied
	ping failed, blah is not online

405 (0x195)	 [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel>

	T[o[̓NCAgv(400)`lւ̓邽
	߂ɂ̃bZ[W𑗂܂B
	: ̃bZ[W<channel> 400Ԃ̂̂Ƃ͈ႤƂ肦܂B
	NCAg͗v`l̂ɕʂ̂Ƃɓ鏀łĂȂ΂܂B
	
406 (0x196)	bZ[W [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <user> <sharing> <link-type>

	<user><channel>ɓ܂B

	:

	80's WilmaFlinstone 12 2

407 (0x197)	[U[`lގ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <nick> <sharing> <linespeed>

	:

	80's DLongley 23 7

408 (0x198)	`l[U[̈ꗗ̍ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <user> <sharing> <link-type>

	̃bZ[W͓bZ[W(406)ƓłBT[o[́A
	bZ[W̓R}h̑OɃ`l̃[U[̈ꗗ𑗂
	BNCAgƋN406ԃbZ[WɂĎ
	܂B

409 (0x199)	`l[U[̈ꗗI [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel>

	̃bZ[ẂA`l̃[U[ׂ̂Ă̏𑗂Ƃ
	߂ɃT[o[ɂđ܂B

410 (0x19a)	`lgsbN(channel topic) [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <topic>

	`lVgsbNݒ肳ꂽƂɑ܂B
	gsbN̕ύXvNCAg̃bZ[Wg܂B

	[uꂪvgsbNςtB[hȂ̂͂Ȃ
	ł낤ĤƂAςƂƂ킩ȂB  -Ҏ]

420 (0x1a4)	`l֎~҂̈ꗗ [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <channel>

	̃R}h́ANCAg`l֎~҂̈ꗗv邽
	߂Ɏg܂B܂AT[o[`l̓֎~҂̈ꗗ̏I
	߂Ɏg܂B(421ԂĂ).

421 (0x1a5)	`l֎~̈ꗗ̍ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

422 (0x1a6)	`l֎~(channel ban) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <user|ip> [ "<reason>" ]

423 (0x1a7)	`l֎~(channel unban) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <user|ip> [ "<reason>" ]

424 (0x1a8)	`l֎~ׂĉ [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <channel>

425	`lmotd (gsbN̂(?)) [SERVER]

	[NAPSTER]

	: <message>

	[T[o[́A[U[o^ς݃`lɓƂ̃R}h
	𑗂܂B`lgsbNŴƂ͕W̃bZ[W𑗂A
	łȂΌ݂̃`lgsbN𑗂悤łB  -Ҏ]


430	[U[(invite) [CLIENT, SERVER]

	[NAPSTER,SLAVANAP]

	NCAg: <nick> <channel>
        T[o[: <nick> <channel> "<topic>" <unknown> <unknown>

        ̃R}h́A[U[`l֏҂邽߂Napster 2.0 
	BETA 9.6ȍ~Ŏg܂B̃R}hł낢̂́ANapsterN
	CAg̓T|[gĂ邯NapsterT[o[̓T|[gĂȂ
	Ƃł()B̃R}hNapster̎́AƃoOCłB

        NCAg:
                <nick> - ҂Ă郆[U[̖O
                <channel> - [U[<nick>҂`l
        T[o[:
                <nick> - ҂鑤̃[U[̖O
                <channel> - `l
                <topic> - `lgsbN
                <unknown> - ??? ("0" works fine)

        [U[430ԃbZ[WMƁA[U[431Ԃ432Ԃ
	A҂󂯓ƁA[U[400ԂŃ`lɓ܂B

        NCAg̗:

        CyberAlien2 #test_channel

        T[o[̗:

        CyberAlien3 #test_channel "Welcome to the #test_channel." 0 0

431	҂󂯓 [CLIENT]

	[NAPSTER,SLAVANAP]

	: <user> <channel>

        <user> - ҂鑤̃[U[

432	҂f [CLIENT]

	[NAPSTER,SLAVANAP]

        : 430ԃbZ[WŎMR}h̃Rs[łƓ܂B

500 (0x1f4)	փ_E[hv [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "<filename>"

	ṽNCAg<nick>Oւ̐ڑsA<filename>
	悤ɗv܂B̃bZ[ẂAt@CLĂlO
	̃bZ[Wt@CA[EH[ɎՂāAOւTCPڑ
	sȂƂɎg܂B̃bZ[ẂAOCbZ[W̒Ńf
	[^|[g0Ɏw肵[U[t@Cv邽߂Ɏg܂B


501 (0x1f5)	փ_E[h [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> <ip> <port> "<filename>" <md5> <speed>

	̃bZ[ẂAAbv[h̃f[^|[g0ɐݒ肳Ă
	ɁAނ炪t@CA[EH[̓ɂāAf[^ׂ͂ĊO։
	oKv邱Ƃ߂ɃAbv[hɑ܂BAbv[
	h́At@C]邽߂Ƀ_E[h֐ڑȂ΂܂B

600 (0x258)	[U[̃NXs[hv [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick>

601 (0x259)	NXs[h [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> <linespeed>

602 (0x25a)	??? [CLIENT]

	[NAPSTER]

	<?>
	T[o["*gulp* Drink milk, it does a body good!"t404ԂԂ܂B
	[:B~N̂B炾ɂI]

603 (0x25b)	NCAg̏v(whois request) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick>

604 (0x25c)	whois [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "<user-level>" <time> "<channels>" "<status>" <shared>
	<downloads> <uploads> <link-type> "<client-info>" [ <total downloads>
	<total_uploads> <ip> <connecting port> <data port> <email> [<server>]]

	<user-level> "User"A"Moderator"A"Admin"A"Elite"̂ǂꂩłB
	<time> [U[̂܂ł̐ڑ(b)łB
	<channels> NCAgo[ɂȂĂ`l̈ꗗłB
		ꂼ(ASCII 32)ŋ؂܂B
	<status> "Active"A"Inactive" (ItC)A"Remote" (ʂ̃T[o[
		)̂ǂꂩłB
	<shared> [U[_E[hłt@C̐łB
	<downloads> ݃_E[h̃t@C̐łB
	<uploads> ݃Abv[h̃t@C̐łB
	<link-type> 0x02(NCAgOC)ĂB
	<client-info> 0x02 (NCAgOC)ĂB

	ȉ̃tB[hmoderatorȏ̃[U[ɕ\܂B:

	<total uploads>
	<total downloads>
	<ip>			: psɂȂ肦܂B
	<connecting port>
	<data port>
	<email>			: psɂȂ肦܂B
	<server> SlavaNapOpenNap̃T[o[Ŏg܂B
		NCAgǂ̃T[o[ɐڑĂ邩\܂B


	:

	lefty "User" 1203 "80's " "Active" 0 0 0 3 "nap v0.8"

605 (0x25d)	whowas [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user> <level> <last-seen>

	603ԗvɃXgĂ郆[U[݃ICł͂ȂƂA
	T[o[͂̃bZ[W𑗂܂B

	<user> vꂽ[U[
	<level> Ōɒmꂽ[U[x (user/mod/admin)
	<last-seen> ŌɃ[U[ꂽԂ
		1970N11ߑO12:00(UNIX time_t)琔bŕ\܂B

606 (0x25e)	[U[x̕ύX(change user level) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> <level>

	<nick>̌<level>ɕύX܂B̗vsɂ̓NCA
	gadminxłȂ΂܂B

	[͂ǂNapsterT[o[ładmin̒nʂɂȂ̂ŁÃbZ[W
	؂Ă܂B  -Ҏ]

607 (0x25f)	Abv[hv [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "<filename>" <speed>

	̃bZ[ẂA[U[<nick><filename>̃Abv[hv
	ƂNCAgɒʒm̂Ɏg܂B

	:

	lefty "generic band - generic song.mp3" 7

608 (0x260)	Abv[hv̎󂯓 [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "<filename>"

	NCAǵA<nick>ւ<filename>̃Abv[h󂯓A
	vNCAg_E[hł邱ƂT[o[ɒʒm܂B

	:

	lefty "generic band - generic song.mp3"

609 (0x261)     󂯓ꎸs [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

        <nick> "<filename>"

	̃R}h́At@CvĂNCAgAbv[hv
	󂯓ȂƂT[o[ɂđ܂B

	̃bZ[ẂAAudioGnomeŃAbv[h_E[hLZ
	ꂽƂ𑼂̃[U[ɒʒm邽߂ɂg܂B

610 (0x262)	[U[ؒf(kill,disconnect) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> [ "<reason>" ]

	[U[ؒfNCAgvłB

611 (0x263)	[U[AJEg폜(nuke) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick>

	<nick>̃AJEg폜NCAgvłB

612 (0x264)	[U[OC֎~(ban) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick | ip> [ "<reason>" [<timeout>]]

	OIPAhXw肵ăOC֎~NCAgvłB
	<timeout>̓OC֎~鎞(b)łB


613 (0x265)	[U[̃f[^|[gݒ [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <user> <port>
	T[o[: <port>

	̃R}h́Aʂ̃NCAgf[^]Ɏg|[g<port>ɂ
	邱Ƃv邽߂ɊǗ҂g܂BړĨNCAgɗv
	|[gԍtăbZ[WԂ܂B: ړĨNCAg
	́A703ԃR}hgĔCӂ̃|[gԍɕύXł܂B


614 (0x266)	[U[̃OC֎~(unban) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <nick | ip> [ "<reason>" ]

615 (0x267)	T[o[̃OC֎~҂̈ꗗ\ [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: (empty)

	݂̃T[o[banꂽip̈ꗗNCAgvĂ܂B

616 (0x268)	(ip?) OC֎~҈ꗗ̍ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <ip> <nick> "<reason>" <time> <n>

	<ip> banꂽip̕o[W
	<nick> ban[U[
	<reason> R
	<time> banꂽ(time_t)
	<n> ??? l01̂ǂ炩łB

	̃R}h615Ԃ̃NCAgvւ̉ƂĊebanƂ
	1܂Bꗗ́AT[o[璷0615ԃbZ[W𑗂
	ďI܂B

	:
	
	207.172.245. valkyrie "DoS exploit" 947304224 0

617 (0x269)	`lꗗ(list channels) [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: (empty)

	T[o[̃`lꗗ邽߂̃NCAgvłB
	T[o[618/617Ԃŉ܂B

	T[o[͂̃bZ[Wgă`lꗗ̏I܂B

618 (0x26a)	`lꗗ̍ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <channel-name> <number-of-users> <topic>

	617Ԃ̃NCAgvւ̃T[o[̉łB
	e`lƂ1Ԃ܂B

	:

	Help 50 OpenNap help channel

619 (0x26b)	L[̌E [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <nick> "<filename>" <n>

	NCAg͓̃NCAg̃_E[h𐧌邱Ƃ
	ł܂Bx̃[U[ɑ΂EɒBƁAAbv[h
	NCAg̓_E[hɌEɒB̂łȏ㓯Ƀ_E
	[hłȂƂʒm邽߂ɂ̃bZ[Wg܂B
	<nick>͌EɒB[U[A<filename>͌EɒBƂɃ_E
	[h悤ƂĂt@CA<n>͓Ƀ_E[hłt@C
	łB

	:

	joebob "C:\MP3\Generic Band - Generic Song.mp3" 3

620 (0x26c)	L[̌E [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "<filename>" <filesize> <digit>

	̃R}h́A郆[U[_E[ȟEɒBƂ
	ʂ̃[U[ɒʒmKvƂA619ԃNCAgvւ̉
	ƂăT[o[ɂđ܂BT[o[́AAbv[h̃NC
	Ag619ԗv󂯎ƁA_E[h̃NCAg620
	bZ[W𑗂܂B̈Ⴂ́A620ԃbZ[W<nick>tB[
	hǉĂ邱ƂłBɂ́AL[̌E_E[h
	ɒʒmAbv[hG[WFg̃[U[w肵܂B
	

	:

	joebob "C:\MP3\Generic Band - Generic Song.mp3" 1234567 3

621 (0x26d)	message of the day [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <text>

	T[o[: e621ԃbZ[W1s̃eLXg܂ł܂B
		OpenNapSlavaNap̃T[o[
		"VERSION opennap 0.41""VERSION SlavaNap 1.1.3"
		Ƃ𑼂MOTD̊Ԃɑ܂B
		̓T[o[̃o[Wm邽߂Ɏg܂B

	NCAg: NCAǵAmotdv邽߂ɁAf[^
		621ԃR}h𑗂܂BT[o[͂ӂA[U[OC
		ŎIɂ𑗂܂Bł炱̃R}h̓[U[
		vƂɂxǂ߂悤ɂ܂B

622 (0x26e)	[U[𔭌֎~(muzzle) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> [ "<reason>" ]

	NCAgA<nick>`lbZ[W𑗂邱Ƃ֎~悤ɗv܂B

623 (0x26f)	[U[̔֎~(unmuzzle) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> [ "<reason>" ]

	NCAg<nick>IɒقĂԂ悤ɗv܂B

624 (0x270)	[U[̃AJEg폜 [CLIENT]

	[NAPSTER]

	<user>

625 (0x271)	[U[̉xύX [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user> <speed>

626 (0x272)	f[^|[gG[ [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	_E[h̃NCAgAAbv[h̃f[^|[gɓ͂
	ƂɋCÂƂAڑɎs[U[Ƃ626ԃbZ
	[WT[o[ɑ܂BT[o[́ÂƃbZ[W̃_E
	[h̖OuāAAbv[hփ[܂B


627 (0x273)	Iy[^[bZ[W [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <text>
	T[o[: <nick> <text>

	ׂĂadmin/moderatorɃbZ[W𑗂NCAgvłB

628 (0x274)	O[obZ[W [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <text>
	T[o[: <nick> <text>

	ׂẴ[U[ɃbZ[W𑗂NCAgvłB

629 (0x275)	OC֎~(ban)ꂽ[U[ [SERVER]

	[NAPSTER]

	: <nick>

	T[o[banXg\ƂA
	banꂽO߂ɂ̃bZ[Wg܂B

630-639 ݂܂B

640	ڎQƗv(direct browse request)[CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <nick>
	T[o[: <nick> [ip port]

	NCAg: <nick>̃t@Cv܂B
	T[o[: <nick>Ȃ̃t@CvĂ܂BIvVŁAQ
		ƂNCAgt@CA[EH[̒ɂƂ́A<ip><port>^܂B

	̃R}h́ANCAgNCAg֋Lt@C̒ڎQ
	n߂邽߂ɑ܂B

	ZNV5.3.ĂB

641	ڎQƂ̎󂯓 [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <nick>
	T[o[: <nick> <ip> <port>

	QƂNCAǵÃbZ[WT[o[ɕԑāA
	<nick>̒ڎQƂ󂯓ӎv邱Ƃ܂B

	T[o[́AQƗvlɂ̃bZ[W𑗂A
	<nick>璼ڎQƂ邽߂ɂǂɐڑ΂܂B
	

	ZNV5.3ĂB

642	ڎQƂ̃G[ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<nick> "message"

	T[o[́AG[640ԗvւ̉ƂẴbZ[W
	܂B(ႦΗ̃NCAgt@CA[EH[̒ɂƂA
	QƂ鑤Ȃɂt@CLĂȂȂ)

	ZNV5.3ĂB

643-649	݂܂B

650-651	??? [CLIENT]
	[NAPSTER]

	ANZXہB

652 (0x28c)	[U[B(cloak user) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	݂̃[U["invisible"(s)ɂ܂B

653-699	݂܂B

700	NXs[h̕ύX [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<speed>

	NCAg͐NXs[h<speed>0-10͈̔͂ŃT[o[ɒʒm܂B
	(ڍׂ̓OCbZ[WĂ)

701	[U[pX[h̕ύX [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<password>

	NCAgpX[h̕ύX]Ă܂B

702	[AhX̕ύX [CLIENT]

	[NAPSTER,OPENNAP]

	<email address>

	NCAg[AhX̕ύX]Ă܂B

703	f[^|[g̕ύX(change data port) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<port>

	NCAgt@C]ő҂󂯂f[^|[gύX悤ƂĂ܂B

704-747	݂܂B

748	OCs [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	T[o[́Aʂ̃NCAgOŃOC悤ƂƂɁA
	̃bZ[WOC݂̃NCAgɑ܂B
	

749	݂܂B

750 (0x2ee)	T[o[ping [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

        : <time>

        NCAgT[o[ping܂BT[o[750Ԃŉ܂B
		<time>time_t`łBNapster̃R\[R}h: "/sping"

	OpenNap<time>̂<server>g܂B
	<server>pingT[o[łB

751 (0x2ef)	[U[ping [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	NCAg<user>̐ڑĂ邩ǂ𔻒f悤ƂĂ܂B

752 (0x2f0)	pong [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user>

	̃bZ[W751ԗv(PING)ւ̉Ƃđ܂B

753 (0x2f1)	̃[U[̃pX[hύX [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<user> <password> "<reason>"

	Ǘ҂̃[U[̃pX[hύXł܂B

754-769	݂܂B

770	??? [CLIENT]
	[NAPSTER]

	ANZXہB

771	??? [CLIENT]
	[NAPSTER]

	ANZXہB

772-799	݂܂B

800 (0x320)	ݒ̍ēǂݍ(reload config) [CLIENT]

	[NAPSTER,OPENNAP]

	<config variable>

	ݒp[^W̒lɃZbg܂B

801 (0x321)	T[o[o[W [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	no data.

	NCAgT[o[̃o[WvĂ܂B

802-804	݂܂B

805	???
	[NAPSTER]

	[ANZXۂԂ܂B -Ҏ]

810 (0x32a)	T[o[ݒ(set config) [CLIENT]
	[NAPSTER,OPENNAP]

	<config string>

	T[o[ݒϐ̕ύXv܂B

811 (0x32b)	???	[CLIENT]
	[NAPSTER]

	[ANZXۂԂ܂B -Ҏ]

820 (0x334)	`l҂Sގ(clear channel) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel>

	w肵`l炷ׂẴ[U[ދ܂B

821 (0x335)	NCAg𑼂̃T[o[Ƀ_CNg [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <user> <server> <port>
	T[o[: <server> <port>
	
	̃R}h́AǗ҂NCAg𑼂̃T[o[Ƀ_CNgł
	悤ɂ܂B

822 (0x336)	NCAg^T[o[ɓ] [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <user> <metaserver>
	T[o[: <metaserver>

	Ǘ҂͂̃R}hgāANCAg܂<host>̃^T[o[
	(_CN^[)ɐڑāAOCƂĊJ悤ɂ܂B


823 (0x337)	`lxݒ(set channel level) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <level>

	`l֓邽߂ɁA[U[̃xȂƂ<level>
	Ȃ΂Ȃ悤<channel>ݒ肵܂B

824 (0x338)	emote [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	NCAg: <channel> "<text>"
	T[o[: <channel> <user> "<text>"

	`lbZ[WR}h̕ω`ŁA[U[̍s\܂B
	IRC NCAg"/me" R}hƂĂ悭܂B

825 (0x339)	[U[Xg̍ [SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <user> <files shared> <speed>

	825ԃbZ[ẂA830ԃbZ[WŎw肵`l
	e[U[ɑ܂B

	:

	Help testor3 0 3

	[408ԃbZ[WƂ܂̂悤łB -Ҏ]

826 (0x33a)	`l(channel limit) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <limit>

	`lɓꂵĂ[U[̍ōlݒ肵܂B<limit>0
	999999999̊Ԃ̐lłBlɐݒ肷ƁA-1ɐݒ肳
	邱ƂɂȂ܂B`ĺAW200lɂȂ܂B
	`lo[͒NłɒύXłAmȂ悤łB


827 (0x33b)	ׂẴ`l\(show all channels) [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	no data.

	"Bꂽ"`l܂߂AׂẴ`l\NCAg
	vłBT[o[̓`l\̏Iɂ̃bZ[W𑗂܂B

828 (0x33c)	`lꗗ(channel list) [SERVER]
	
	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <users> <n1> <level> <limit> "<topic>"

	T[o[͊e`lƂ828ԃR}h1RAXgɂđ
	܂Bӂ̃`lXgɂ͕\Ȃ"Bꂽ"`l܂݂܂B


	<level>̓`lɓ̂ɕKvȍŒ჆[U[xłB
	<limit>̓`lɓ郆[U[̍ōlłB

	<n1>01łB[U[`lȂ1ŁAo^ς݃`l
	Ȃ0̂悤ł???

829 (0x33d)	`l烆[U[Ǖ(kick) [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel> <user> [ "<reason>" ]

830 (0x33e)	`l̃[U[ꗗ [CLIENT, SERVER]

	[NAPSTER,OPENNAP,SLAVANAP]

	<channel>

	NCAg<channel>̃[U[̈ꗗv܂BT[o[͊e
	[U[ƂɁA825ԉŉAÂăf[^Ȃ830Ԃŉ
	܂B[Ȃ409ԃbZ[WgȂ񂾂H -Ҏ]

831 (0x33f)	[U[S̃Xg(global user list) [CLIENT, SERVER]

	[NAPSTER?,OPENNAP,SLAVANAP]

	no data.

	Napster"permission denied."(ANZX)Ԃ܂B
	OpenNapSlavaNap832ԃR}h̃V[PXԂ܂B
	[U[̈ꗗ͋831ԃR}hŏI܂B

832 (0x340)	҃Xg̍(global user list entry) [SERVER]

	[OPENNAP,SLAVANAP]

	<nick> <ip>

	831ԃbZ[Wւ̉łB

833-869	݂܂B

870	fBNgPʂŃt@Cǉ [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: "<directory>" "<file>" <md5> <size> <bitrate> <freq> <duration>
	[ ... ]

	̃R}h́A100(t@CL)R}h̃V[gJbg
	āANCAgfBNg̒̑̃t@CLł
	悤ɂ܂B<directory>́AR}h̎c̕ŗ^ꂽׂ
	̃t@C̑OɒǉpXłB<file>́AfBNg
	u܂܂ȂŁvLt@CłB̃NCAgQ/L
	Ƃ́Aۂ̃pX<directory>/<file>̂悤ɕ񍐂܂B

	̃R}h<directory>̌ɂ镔́AfBNg̒̃t
	@Cɑ΂ĕKvȌ葽̉񐔌JԂ邩܂B
	: قƂǂ̃T[o[2048oCgȏ̒̃R}h󂯓܂B
	łA1R̃fBNg̒ɂt@CƂ́A
	ˑRƂăt@C𑽐̃R}hɕKv邩܂B

871-899	݂܂B

900     ڑeXg [SERVER]

	[NAPSTER]

        <ip> <port> <data>

        <ip>   - ,  ڑIPAhX
        <port> - , ڑ|[g
        <data> - ,  T[o[ɑf[^

        <ip><port>֍ō1000bԐڑ݂܂B
		ڑɐ^[Qbg<data>𑗂܂B

	[Thomas van der Heijden <thom@bart.nl> ̕]

901     ҂󂯃eXg [SERVER]

	[NAPSTER]

        <port> <timeout> <data>

        <port>    - , ҂󂯃|[g
        <timeout> - , ڑ܂ł̑҂(b)
        <data>    - ,  ڑɑf[^

        <timeout>b<port>҂󂯂܂Bڑł<data>𑗐M҂
		Ԃ܂B

	[Thomas van der Heijden <thom@bart.nl> ̕]

920	\PbgeXg [CLIENT]

	[NAPSTER,OPENNAP,SLAVANAP]

	: <some_digit>

	Beta8ȍ~̃NCAgOCOɑ܂B
	SlavaNapT[o[́ArbOGfBÃNCAg̃oCgm
	邽߂ɂ̃R}hg܂B(SlavaNap̓rbOGfBAƃ
	gGfBÃ̗NCAgT|[g܂B)

	OpenNap͂̃R}hPɖ܂B

931	ubNꂽt@C [SERVER]

	[NAPSTER,SLAVANAP]

	: <md5>

	̃R}h́At@CubNĂ邱Ƃ
	NCAgɒm点邽߂ɃT[o[g܂
	100ԁA870ԁA10300ԃR}hւ̉ƂĎg܂B

932	VKL [CLIENT]

	[NAPSTER]

	: <binary data>

	̃bZ[ẂANapster10.2ȍ~ID3v2^Ôt@CL
	邽߂Ɏg܂BoCif[^̏:
	(C, int = 4oCg)

	struct{
		int    real_size; // ID3^Ot@CTCY
		char   unknown1[4];
		char   unknown2[4];
		char   unknown3[4];
		char   unknown4[4];
		int    bitrate;
		int    frequency;
		char   unknown5[4];
		char   unknown6[4];
		char   MD5[32]; // 36-67
		char   unknown7[4];
	};

	932Ԃ̂720ԂgnapsterŃt@CLꍇ́A
	"shared.dat"t@C̊es̍Ō"1""0"ɕύXĂB

995	ubNꂽt@C(blocked file) [SERVER]

	[NAPSTER]

	: <binary data>

	̃R}h́ANapster10.2ȍ~̃T[o[Ńt@CubN
	邱ƂNCAgɒm点邽߂Ɏg܂B
	̃R}h̓R}h 932ւ̉Ƃđ܂B
	̃f[^͕̒ω邩܂B

3.1  OpenNapSlavaNap̃bZ[W^Cv

ȉ̃bZ[WOpenNapSlavaNap̗̃T[o[ŃT|[gĂ܂B
OpenNapSlavaNap̊SȃR}hXgɂĂ͂ꂼREADMEt@C
ĂB


10112	T[o[N\ [CLIENT, SERVER]

	[OPENNAP,SLAVANAP]

	NCAg: no data
	T[o[: <host> <host> <hops>

	̃R}h́AT[o[Ƒ̃T[o[Ƃ̃N\邽߂
	g܂Bꗗ̓f[^Ȃ(0)10112ԃbZ[WŏI܂B


	݂̃o[WSlavaNap͂̃R}hSɂ̓T|[gA
	10112bZ[Wŉ܂BSlavaNapł́APAudioGnomeg
	ƂRł̃R}hĂ܂B

10115	T[o[̓v\ [CLIENT, SERVER]

	[OPENNAP,SLAVANAP]

	NCAg: no data
	T[o[: <clients> <servers> <files> <gigs> <channels> <time>
	<uptime> <memory> <numusers>

	̃R}h́AǗ҂T[o[̓v擾邽߂Ɏg܂B


	<clients>	[JŐڑĂNCAg̐
	<servers>	[JŐڑĂT[o[̐
	<users>		lbg[NŜ̃[U[
	<files>		f[^x[Xɂt@C̐
	<gigs>		Lt@CTCY̍v
	<channels>	ғ̃`l̐
	<time>		T[o[N
	<uptime>	T[o[ғ(b)
	<memory>	fobO\ȂƂAꂪݎgpĂ郁[\
			܂BȊÔƂ-1ɂȂ܂B
	<numusers>	o^ς݃[U[̐

10118	NCAg̓v\ [CLIENT, SERVER]

	[OPENNAP,SLAVANAP]

	OpenNap--enable-version-statsIvVtŃRpCĂ邩A
	SlavaNap̐ݒ胁j["o[WvLɂ"L̂Ƃg܂B
	
	T[o[͎̊m̃NCAg̃XgƂꂼ̃OC_
	v܂BIP͒ǐՂȂ̂ŁAPɂ낢ȃNCAg̐lCTZ
	邾łB

	(NCAg): empty
	(T[o[): "<version>" <count>

	T[o[̃Xg͋10118ԃbZ[WŏI܂B

10121	who was [CLIENT]

	[OPENNAP,SLAVANAP]

	: <nick>

	݃OAEgς݂̃[U[̏\

10200 	[U[o^(register) [CLIENT]

	[OPENNAP, SLAVANAP]

	: <user> <pass> <email> [ <level> ]

	IɖOo^adminR}hłB
	: SlavaNapł <level> KvłB"user"Ƃ߂łB

10204	`lIy[^[(channel op)ݒ [CLIENT]

	[OPENNAP,SLAVANAP]

	: <channel> <user> [user ...]

	<user> <channel>Ń[U[Ǖ/banł悤ɂ܂B

10205	`lIy[^[폜 [CLIENT]

	[OPENNAP,SLAVANAP]

	: <channel> <user> [user ...]

	<user><channel>̃Iy[^[͂܂B

10207	`l폜 [CLIENT]

	[OPENNAP,SLAVANAP]

	: <channel> [ "<reason>" ]

	w肵`l[U[̂Ƃă}[N܂B
	ƎIȃ`lt@CɏԂL^ꂸA
	[U[SގƏł܂B

10208	`lIy[^[SɃbZ[W𑗐M [CLIENT, SERVER]

	[OPENNAP,SLAVANAP]

	NCAg: <channel> <message>
	T[o[: <channel> <code> <text>

	NCAg: <message><channel>ׂ̂ẴIy[^[mods+ɑ܂B
	T[o[: bZ[WɃR[h<code><text>tĂׂẴIy[^
		[ɑ܂B(ʂ̃T[o[ł̂ݎg܂) ()

10209	`l[hύX [CLIENT, SERVER]

	[OPENNAP,SLAVANAP]

	: <channel> [mode [mode ...]]

	[mode]w肵Ƃ́A[mode]

		(+|-)STRING

	Ƃ`ɂȂ܂BSTRINĜ͎ǂꂩłB

		PRIVATE		- `lꗗɏoȂ悤ɂ܂B
		MODERATED	- Iy[^[mods+ł܂B
		TOPIC		- ɐݒ肷ƁA[U[NłgsbNύXł܂B

		OpenNap̂:
		INVITE		- `lɏ҂ꂽl܂B

		SlavaNap̂:
		REGISTERED	- ɐݒ肷ƁA[U[SގĂ`l
					͍폜܂B

	[mode]w肳ȂƂ́AT[o[݂͌̃[hԂ܂B

10210	[U[`lɏ(invite) [CLIENT] (܂ӖȂȂ܂B430ԂgĂB)

	[OPENNAP,SLAVANAP]

	: <channel> <user>

	̃bZ[W430ԃbZ[WOpenNapłłB

10211	Ǘ`lł̔(voice)^ [CLIENT]

	[OPENNAP,SLAVANAP]

	: <channel> [user [user ...]]

10212	Ǘ`lł̔(voice)폜 [CLIENT]

	[OPENNAP,SLAVANAP]

	: <channel> [user [user ...]]

10300	ʂ̃fBAt@CL [CLIENT]

	[OPENNAP,SLAVANAP]

	: "<filename>" <size> <md5> <major-content-type>

	<content-type>́Af[^̎ނ`MIMEt@C^CvłB
			͎̂ǂꂩɂȂ܂B:
				audio, video, text, image, application, mp3
			: IWinapvgRmp3t@Ĉ݋L悤
			ɐ݌vĂ߁Amp3͂ł͌ʂ̃^CvɂȂĂ܂B
			"audio" ͂̑̎ނ̉yt@ĈƂłB

	MD5100ԃR}ĥ̂Ɠ@ŃJEg܂B

	:

	"C:\IMAGES\Grand Canyon.jpg" 54187 bc938fdc0ef63772bfbdbf57aabb0860-54187 image
	"\home\drscholl\src\opennap-0.11.tar.gz" 102161 51c07734811a26853b1a2a87b67c68a1-102161 application


3.  MD5

ׂĂMP3t@C̓t@Ĉ͂߂300,032oCggănbV܂B
WMAt@C̓nbV܂BNapsteŕA.wmâƂMD5̂"WMA-FILE"𑗂܂B

݂̕@: id3v2XLbvAt[TănbVĂ悤łB

: linuxnapNCAg (o[W 0.7 - 0.9)́AwindowsNCAgƂ
傤300,000oCgnbV܂B

MD5̐"58dc354f81bf37b050799ead7ca8d3bc-5333975"̂悤Ȃ̂łB
"58dc354f81bf37b050799ead7ca8d3bc"MD5nbVŁA
"5333975"̓t@C̒ - ID3^O(v1v2)̒łB

NCAgɂĂMD5𖳎萳Ȃl𑗂肵܂BႦ΁A
WinMX̓t@CTCYȂMD5𑗂AFileNavigatorMD5̂"AAAAAA"
(R[h32"A"Ƃ)𑗂܂BOpenNapSlavaNapmd5𖳎܂B
ʂȃIvVōăRpCȂAWŃT|[g܂B


5.  NCAgԂŎgvgR

t@C]́AT[o[ʉ߂邱ƂȂNCAgԂŒڋN܂B
][h́AAbv[h, _E[h, t@CA[EH[͂ł
Abv[h,t@CA[EH[͂ł̃_E[h4܂B
ӂ̓]@ł́At@C_E[hNCAgAf[^
|[gɃt@CĂNCAgTCPڑs܂BA
t@CLĂNCAgt@CA[EH[̒ɂꍇ́A
_E[h̃f[^|[gTCPڑsƂŃf[^""Kv܂B


5.1  ӂ̃_E[h

[hɊւ炸A_E[hNCAg͂܂(200)Q(211)
R}hT[o[ɑ܂B̓t@CLĂNCAg
t@CXgƏԂ܂B_E[hv̂߂ɁAgetv(203)
T[o[ɑ܂BT[o[͂Əڍׂȏget ack(204)
ŉ܂B

e@̕_łB204(_E[h)[gNCA
g̃f[^|[g0ƂƂ́AȂ500ԃNGXgT[o[
ɑāA[gNCAgȂɃf[^𑗂悤ɗvȂ
܂B̏ꍇȂ́A[gNCAgȂg̃f[^|[gɐڑ̂҂܂B

LĂNCAgt@CA[EH[̊Oɂꍇ́AT[o[
204ԃbZ[WŎꂽf[^|[gTCPڑs܂B
[gNCAg͐ڑ󂯓A1RASCII`1'(ASCII 49)
𑗂܂B񂱂̕ǂ񂾂A_E[ht@Cւ̗v
𑗂܂B
܂ "GET"1R̃pPbgőAꂩ
	<mynick> "<filename>" <offset>
𑗂܂B<mynick>͂Ȃnapster[U[A<filename>̓_E
[ht@CA<offset>͂̈ʒut@C]n߂邽߂̃o
CgItZbgłB(߂Ẵ_E[hŁAȑO̓]̃W[
ȂꍇAt@C̐擪n߂邽߂ɂ0g܂B)

Ƀ[gNCAǵAt@CTCYԂA"INVALID REQUEST"
"FILE NOT SHARED"̂悤ȃG[bZ[WԂ܂Bt@CTCY
Iʂȕ@͂Ȃ̂ŒӂĂBTCYmł悢@
́AȊO̕܂œǂ݂Â邱Ƃł(ӂMP3t[
wb_[̊Jnł0xffłAID3v2^OƂ͗lq
܂)Bt@CTCŶƂɂÂ̂́At@C̃f[^X
g[n܂ꏊłB

f[^]n܂A_E[h̓T[o[218ԃbZ[W𑗂
āAt@C_E[h悤ƂĂ邱Ƃm点܂B]
A219ԃbZ[W𑗐Mă_E[hIƂ܂B
cummalitiveł̂ŒӂĂB̂߁Ãt@C_
E[hƂ́AɃ_E[huꂼɂāv
218/219ԂyA1΂܂--ꂪAȂ̓]Ă鐔T[
o[m@łBlɁAAbv[h͊eAbv[hƂ220ԃ
bZ[W𑗂AAbv[hI邲Ƃ221ԃbZ[W𑗂܂B


5.2  t@CA[EH[͂ł̃_E[h

q̂ƂAt@Ct@CA[EH[̒ɂNCAg牟
KvƂ́A_E[h̓T[o[500ԃbZ[W𑗂܂B
ŁAӂ̃_E[ĥƂ204ԃbZ[WƓ悤ɁAAbv
[h501ԃbZ[W܂B

Abv[h́AT[o[501ԃbZ[WMƁA_E[h
̃f[^|[g(501ԃbZ[Wŗ^)TCPڑs܂B
ڑɁA_E[h̃NCAg1oCg(ASCII`1')܂B
ɃAbv[h"SEND"1R̃pPbgőM܂B
Ď̏𑗂܂:
	<mynick> "<filename>" <size>
<mynick>̓Abv[hNapster[U[A<filename>͑M
t@CA<size>̓t@CTCY(oCg)łB

Mɂ́A_E[h̃NCAg͓]Jnꏊ̃oCgIt
ZbgA"INVALID REQUEST"̂悤ȃG[bZ[W𑗂܂BoCgI
tZbg͂ӂASCII`̐1R̃pPbgƂđ܂B
L̃ZNV5.1ƓA0oCgItZbg͓]t@C̍ŏ
n܂邱Ƃ܂BȂnapNCAgĂāAt@CA
[EH[̃_E[hɖĂꍇ́AASCII`ŃItZ
bg𑗂Ă邩܂mFĂB(͔ɈʓIȃG[łB)

eNCAg̓T[o[218/219(_E[h)220/221(Abv
[h)̃R}hyA𑗂āAAbv[h_E[h悤Ƃ
邱Ƃm点܂B(ڂ̓ZNV5.1݂ĂB)


5.3 NCAgNCAgւ̎Q

Napster 2.0 Beta 8 ł́AڃNCAgNCAgփt@CXg
QƂł@\ǉ܂BڎQƂNapster Beta 8-9.6܂ŃT|[g
Ă܂BNapster 2.0 Beta 10͒ڎQƂ͂ł܂B
QƂv邽߂ɁANCAg
	640 <nick>
ƂR}hg܂BƃT[o[́A
	640 <requester>
QƗvĂNCAg̖O
QƂ鑤̃NCAgɑ܂B
NCAǵAQƗv󂯓ꂽƂ́A
	641 <requestor>
QƗvĂNCAg̖OŃT[o[ɕԂ܂B
ƃT[o[
	641 <nick> <ip> <port>
vĂNCAgɑ܂BG[̏ꍇ́A
T[o[640ԃR}hւ̉Ƃ642ԃR}h𑗂܂B

ɁAQƑ̃NCAg̓[gNCAg̃|[gTCPڑs
܂B"1"Ƃ擾AQƑNCAg
	GETLIST
𑗂܂BŃ[gNCAǵA̖ǑɃCtB[
h(\n)𑱂̂1R̃pPbgő܂B(܂write())
	<nick> LF
ċLĂt@C̈ꗗÂ܂("share" R}h̃f[^
)Bes̓CtB[hŏI܂B
ꗗ̏IɁAǉ̃CtB[hA
ꂩNCAgڑ܂B

[gNCAgt@CA[EH[̒ɂꍇAQƃXg͗v
ĂNCAgɉȂ΂܂B[gNCAg͗v
ĂNCAgTCPڑs܂Bꂩ
	SENDLIST <nick>\n
𑗂܂B"GETLIST"R}ĥ悤Ƀt@C̈ꗗÂ܂B


6.  NapigatorvgR̎dl

NapigatorT[o["stat.napigator.com"̃|[g8890œ܂B

̃ZNVł́A"NCAg"ƂPgƂOpenNapSlavaNap̃T[o[̂ƂłB
"T[o["ƂPgƂNapigatorT[o[̂ƂłB

NCAgT[o[ɐڑƂAT[o[220ԃR}h𑗂܂B
NCAg"USER"ŉ܂BꂩT[o[300ԃR}h𑗂܂B
NCAg"PASS"ŉ܂BOƃpX[h΃T[o[201Ԃŉ܂B

ڑ͕ێ܂܂ɂĂ܂BT[o[͎ŃNCAgؒf̂ŁA
NCAg̓T[o[bZ[WG[ɂȂĂQUITR}h𑗂ȂĂłB

60b(܂͂̑̊Ԋu)ƂɃNCAg"STATS"bZ[W𑗂܂B

T[o[̃bZ[W: 

    <id> [<text>]\r\n

    <id> ASCII`̃bZ[WR[hłB
    <text>̓bZ[WeLXgłB<id><text>̊Ԃɂ͋(" ")܂B
    es\r\n (0x0D,0x0A)ƂŏI܂B
    ͈pň͂܂ȂŉB

NCAg̃bZ[W:

   <command> [<text>]\r\n

   <command> ̓eLXgR}hłB([U[pX[hƓ)
   es\r\n (0x0D,0x0A)ƂŏI܂B
   ͈pň͂܂ȂŉB

T[o[bZ[W:

	20x	ϋɓI(Positive Completion reply)

		: 20x <Message>\r\n

		200 Statistics updated
		200 OK
		201 Welcome

		: "20x"ԑ̃T[o[bZ[Wɂ̓NCAg̉͂܂B
		      ANCAg͂ӂ"201"T[o[bZ[W̒
		      "IPPORT"bZ[W𑗂܂B

	22x	OCEOItbZ[W
		
		: 22x <message>\r\n

		220 <Salt>

		    Salt̓NCAgpX[hGR[ĥɎg܂B
		    NCAg"USER"bZ[Wŉ܂B

		221 Login error
		221 Goodbye

		: T[o["221"bZ[W̌ŃNCAgؒf܂B

	30x	mIԉ(Positive Intermediate reply)

		: 30x <Message>\r\n
		
		300 Username accepted

		    NCAg"PASS"R}hŉ܂B

	40x	ꎞIȔےI(Transient Negative Completion reply)

		: 40x <Message>\r\n

		400 Cannot resolve hostname
		400 IP mismatch (<hostname> resolve to <IP>, cannot set to <IP Sent>)
		400 Non-existent host (<Username>/<Hostname>)
		400 Permission denied
		400 Error updating database

		: R}h͎󗝂ꂸAvꂽANV̓T[o[ɂ鎩CƂɍs܂B
		      G[Ԃ͈ꎞIȂ̂ŁAANV͍ēxvł傤B

		      "400 permission denied"āAT[o["200 OK"bZ[W𑗂A
		      v(C)XVꂽƂNCAgɓ`܂B

		      T[o["40x"bZ[W̌ɃNCAgؒf܂B

		T[o[ɂ鎩C

		NCAgzXg𑗂ĂƂ:

			ł܂ANCAgĂIPƈv܂B
			T[o[͉IPɎIɐݒ肵܂B

			ł܂BT[o[͎w肳ꂽIPɎIɐݒ肵܂B

	50x	ivIȔےI(Permanent Negative Completion reply)

		: 50x <Message>\r\n

		500 Unknown command
		502 Bad parameters

		: R}h͎󗝂ꂸAvꂽANV͍s܂B
		      NCAg͐mȗvXƌJԂƂɂȂ܂B
		      NCAg̓p[^C邱ƂŃANVȂł傤B

		      T[o["50x"bZ[ŴƂŃNCAgؒf܂B

NCAgbZ[W:

	USER	[U[𑗐M

		: USER <user_name>

	PASS	[U[pX[h𑗐M

		: pX[h <GR[hς݃pX[h>

		pX[hMD5ŃGR[hĂ܂BpX[hGR[hOɁA
		salt(220bZ[WŎM)pX[h̒OɕtĂB

		:

		pX[h"qwerty"ŁA"1234"saltƂĎMȂA
		GR[hς݃pX[hMD5("1234qwerty");ɂȂ܂B

		: MD5Ƃ͑啶łB

	IPPORT	T[o[AhX𑗐M

		: IPPORT <hostname> <ip> <port>

		: ̃R}h̓OCƂƂ܂B
		
	STATS	T[o[vXV

		: STATS <hostname> <users> <files> 0 <size> 0

		<hostname>͂Ȃ̃T[o[ł(: cyberalien.servemp3.com)
		<users>͐ڑ[U[ł (ASCII)
		<files>͋Lt@Cł (ASCII)
		<size>̓t@CTCY(MKoCg)ł (ASCII)

		: ̃R}h̓OCƂOɎgƂ͂ł܂B

	QUIT	ؒfbZ[W

		: QUIT

Napigator݊̃T[o[l͎(mailto:cyberalien@users.sourceforge.net)Ƀ[B
SlavaNapłȂ̃T[o[T|[g悤ɂ܂B
OpenNapŃT[o[T|[gĂ炤ɂ́ADr.Scholl( mailto:drscholl@users.sourceforge.net)Ƀ[ĂB


7.  ̑̃wv͂ǂŎɓ܂H

mailto:napdev-subscribe@onelist.comɃ[𑗂邩A
http://www.onelist.com/community/napdev/̃R~jeB[y[WK
napdev[OXgɎQĂB̃Xgł́AI[v\[X
napJ҂dlAvP[VɂĂ̏Lł悤ȂĂ܂B

̃hLg̍ŐVo[Whttp://slavanap2.sourceforge.net/nap.txtŎɂ͂܂B
{http://opennap.sourceforge.net/napster.txtŎɓ܂B

̃vgRĂ(T[o[NCAg)ɂ́A
\[XR[htĂ̂܂Bڂ
http://slavanap2.sourceforge.nethttp://opennap.sourceforge.netKĂ݂ĂB


8.  ̃vgRƌ݊̂T[o[:

	Linux:  OpenNap	http://opennap.sourceforge.net
	Win32:  SlavaNap	http://slavanap2.sourceforge.net
	Java:	    JNerve	http://jnerve.sourceforge.net (outdated)

9.  ӎ

̎dlɉl񂹂Ăꂽȉ̐lɂƂĂӂĂ܂B:

Ben Byer <bbyer@rice.edu>
JT <jtraub@dragoncat.net>
Evan Martin <eeyem@u.washington.edu>
Colten Edwards (aka panasync@efnet) <edwards@bitchx.dimension6.com>
Thomas van der Heijden <thom@bart.nl>
