Sunteți pe pagina 1din 7

Universal Plug and Play

Universal Plug and Play (UPnP) is a set of networking


can run on many media that support IP including
protocols that permits networked devices, such as perEthernet, FireWire, IR (IrDA), home wiring (G.hn)
sonal computers, printers, Internet gateways, Wi-Fi acand RF (Bluetooth, Wi-Fi). No special device
cess points and mobile devices to seamlessly discover
driver support is necessary; common network
each others presence on the network and establish funcprotocols are used instead.
tional network services for data sharing, communications,
and entertainment. UPnP is intended primarily for resi- User interface (UI) Control Optionally, the UPnP architecture enables devices to present a user interface
dential networks without enterprise-class devices.
through a web browser (see Presentation below).
The UPnP technology is promoted by the UPnP Forum,
a computer industry initiative to enable simple and robust Operating system and programming language independence
Any operating system and any programming lanconnectivity to stand-alone devices and personal computguage can be used to build UPnP products. UPnP
ers from many dierent vendors. The Forum consists of
stacks are available for most platforms and opover eight hundred vendors involved in everything from
erating systems in both closed and open source
consumer electronics to network computing.
forms.
The concept of UPnP is an extension of plug-and-play,
a technology for dynamically attaching devices directly Extensibility Each UPnP product can have deviceto a computer, although UPnP is not directly related to
specic services layered on top of the basic archithe earlier plug-and-play technology. UPnP devices are
tecture. In addition to combining services dened
plug-and-play in that when connected to a network they
by UPnP Forum in various ways, vendors can dene
automatically establish working congurations with other
their own device and service types, and can extend
devices.
standard devices and services with vendor-dened
actions, state variables, data structure elements, and
variable values.

Overview
2 Protocol

The UPnP architecture allows device-to-device networking of consumer electronics, mobile devices, personal
computers, and networked home appliances. It is a distributed, open architecture protocol based on established
standards such as the Internet Protocol Suite (TCP/IP),
HTTP, XML, and SOAP. UPnP control points (CPs) are
devices which use UPnP protocols to control UPnP controlled devices (CDs).[1]

UPnP uses common Internet technologies. It assumes the


network must run Internet Protocol (IP) and then leverages HTTP, SOAP and XML on top of IP, in order to
provide device/service description, actions, data transfer
and eventing. Device search requests and advertisements
are supported by running HTTP on top of UDP using
multicast (known as HTTPMU). Responses to search requests are also sent over UDP, but are instead sent using
unicast (known as HTTPU). UPnP uses UDP due to its
lower overhead in not requiring conrmation of received
data and retransmission of corrupt packets. HTTPU and
HTTPMU were initially submitted as an Internet Draft
but it expired in 2001;[5] these specications have since
been integrated into the actual UPnP specications.[6]

The UPnP architecture supports zero conguration networking. A UPnP compatible device from any vendor
can dynamically join a network, obtain an IP address,
announce its name, advertise or convey its capabilities
upon request, and learn about the presence and capabilities of other devices. Dynamic Host Conguration Protocol (DHCP) and Domain Name System (DNS) servers
are optional and are only used if they are available on the
network. Devices can disconnect from the network auto- UPnP uses UDP port 1900 and all used TCP ports are
matically without leaving state information.
derived from the SSDP alive and response messages.[7]
UPnP was published as a 73-part international standard,
ISO/IEC 29341, in December, 2008.[2][3][4]

2.1 Addressing

Other UPnP features include:


Media and device independence UPnP

The foundation for UPnP networking is IP addressing.


technology Each device must implement a DHCP client and search
1

2 PROTOCOL

for a DHCP server when the device is rst connected to


the network. If no DHCP server is available, the device
must assign itself an address. The process by which a
UPnP device assigns itself an address is known within the
UPnP Device Architecture as AutoIP. In UPnP Device
Architecture Version 1.0,[8] AutoIP is dened within the
specication itself; in UPnP Device Architecture Version
1.1,[9] AutoIP references IETF RFC 3927.[10] If during
the DHCP transaction, the device obtains a domain name,
for example, through a DNS server or via DNS forwarding, the device should use that name in subsequent network operations; otherwise, the device should use its IP
address.

2.4 Control

2.2

2.5 Event notication

Discovery

Once a device has established an IP address, the next step


in UPnP networking is discovery. The UPnP discovery
protocol is known as the Simple Service Discovery Protocol (SSDP). When a device is added to the network,
SSDP allows that device to advertise its services to control points on the network. This is achieved by sending
SSDP alive messages. When a control point is added to
the network, SSDP allows that control point to actively
search for devices of interest on the network or listen passively to the SSDP alive messages of device. The fundamental exchange is a discovery message containing a few
essential specics about the device or one of its services,
for example, its type, identier, and a pointer (network
location) to more detailed information.

2.3

Description

After a control point has discovered a device, the control


point still knows very little about the device. For the control point to learn more about the device and its capabilities, or to interact with the device, the control point must
retrieve the devices description from the location (URL)
provided by the device in the discovery message. The
UPnP Device Description is expressed in XML and includes vendor-specic manufacturer information like the
model name and number, serial number, manufacturer
name, (presentation) URLs to vendor-specic web sites,
etc. The description also includes a list of any embedded
services. For each service, the Device Description document lists the URLs for control, eventing and service description. Each service description includes a list of the
commands, or actions, to which the service responds, and
parameters, or arguments, for each action; the description for a service also includes a list of variables; these
variables model the state of the service at run time, and
are described in terms of their data type, range, and event
characteristics.

Having retrieved a description of the device, the control


point can send actions to a devices service. To do this, a
control point sends a suitable control message to the control URL for the service (provided in the device description). Control messages are also expressed in XML using
the Simple Object Access Protocol (SOAP). Much like
function calls, the service returns any action-specic values in response to the control message. The eects of the
action, if any, are modeled by changes in the variables
that describe the run-time state of the service.

Another capability of UPnP networking is event notication, or eventing. The event notication protocol dened
in the UPnP Device Architecture is known as General
Event Notication Architecture (GENA). A UPnP description for a service includes a list of actions the service responds to and a list of variables that model the
state of the service at run time. The service publishes
updates when these variables change, and a control point
may subscribe to receive this information. The service
publishes updates by sending event messages. Event messages contain the names of one or more state variables and
the current value of those variables. These messages are
also expressed in XML. A special initial event message is
sent when a control point rst subscribes; this event message contains the names and values for all evented variables and allows the subscriber to initialize its model of
the state of the service. To support scenarios with multiple control points, eventing is designed to keep all control
points equally informed about the eects of any action.
Therefore, all subscribers are sent all event messages, subscribers receive event messages for all evented variables
that have changed, and event messages are sent no matter
why the state variable changed (either in response to a requested action or because the state the service is modeling
changed).

2.6 Presentation
The nal step in UPnP networking is presentation. If a
device has a URL for presentation, then the control point
can retrieve a page from this URL, load the page into
a web browser, and depending on the capabilities of the
page, allow a user to control the device and/or view device status. The degree to which each of these can be
accomplished depends on the specic capabilities of the
presentation page and device.

4.2

Other components

UPnP AV standards

3
or hardware-based. Software-based UPnP AV media
servers can be run on a PC. Hardware-based UPnP AV
media servers may run on any NAS devices or any specic hardware for delivering media, such as a DVR. As
of May 2008, there were more software-based UPnP AV
media servers than there were hardware-based servers.

UPnP AV architecture is an audio and video extension of


the UPnP, supporting a variety of devices such as TVs,
VCRs, CD/DVD players/jukeboxes, settop boxes, stereos
systems, MP3 players, still image cameras, camcorders,
electronic picture frames (EPFs), and personal computers. The UPnP AV architecture allows devices to sup4.2 Other components
port dierent types of formats for the entertainment content, including MPEG2, MPEG4, JPEG, MP3, Windows
UPnP MediaServer ControlPoint - which is the
Media Audio (WMA), bitmaps (BMP), and NTSC, PAL
UPnP-client (a 'slave' device) that can auto-detect
or ATSC formats. Multiple types of transfer protocols
UPnP-servers on the network to browse and stream
are supported, including IEEE 1394, HTTP, RTP and
media/data-les from them.
TCP/IP.[11]
UPnP MediaRenderer DCP - which is a 'slave' deOn 12 July 2006, the UPnP Forum announced the
vice that can render (play) content.
release of version 2 of the UPnP Audio and Video
[12]
specications, with new MediaServer (MS) version 2.0
UPnP RenderingControl DCP - control Meand MediaRenderer (MR) version 2.0 classes. These endiaRenderer settings; volume, brightness, RGB,
hancements are created by adding capabilities to the Mesharpness, and more.
diaServer and MediaRenderer device classes, allowing a
UPnP Remote User Interface (RUI) client/server
higher level of interoperability between products made by
- which sends/receives control-commands between
dierent manufacturers. Some of the early devices comthe UPnP-client and UPnP-server over network,
plying with these standards were marketed by Philips un(like record, schedule, play, pause, stop, etc.).
der the Streamium brand name.
Since 2006, versions 3 and 4 of the UPnP audio and
video device control protocols have been published.[13]
In March 2013, an updated uPnP AV architecture specication was published, incorporating the updated device
control protocols.[11]
The UPnP AV standards have been referenced in specications published by other organizations including
Digital Living Network Alliance Networked Device Interoperability Guidelines,[14] International Electrotechnical Commission IEC 62481-1,[15] and Cable Television
Laboratories OpenCable Home Networking Protocol.[16]

4
4.1

UPnP AV components
Media server

A UPnP AV media server is the UPnP-server (master device) that provides media library information
and streams media-data (like audio/video/picture/les) to
UPnP clients on the network. It is a computer system or
a similar digital appliance that stores digital media, such
as photographs, movies, or music and shares these with
other devices.
UPnP AV media servers provide a service to UPnP AV
client devices, so called control points, for browsing the
media content of the server and request the media server
to deliver a le to the control point for playback.
UPnP media servers are available for most operating
systems and many hardware platforms. UPnP AV media servers can either be categorized as software-based

Web4CE (CEA 2014) for UPnP Remote


UI[17] - CEA-2014 standard designed by
Consumer Electronics Association's R7
Home Network Committee. Web-based
Protocol and Framework for Remote User Interface on UPnP Networks and the Internet
(Web4CE). This standard allows a UPnPcapable home network device to provide its
interface (display and control options) as a web
page to display on any other device connected
to the home network. That means that one can
control a home networking device through any
web-browser-based communications method
for CE devices on a UPnP home network using
ethernet and a special version of HTML called
CE-HTML.
QoS (Quality of Service) - is an important (but
not mandatory) service function for use with UPnP
AV (Audio and Video). QoS (Quality of Service)
refers to control mechanisms that can provide different priority to dierent users or data ows, or
guarantee a certain level of performance to a data
ow in accordance with requests from the application program. Since UPnP AV is mostly to deliver
streaming media that is often near real-time or realtime audio/video data which it is critical to be delivered within a specic time or the stream is interrupted. QoS (Quality of Service) guarantees are especially important if the network capacity is limited,
for example public networks, like the internet.
QoS (Quality of Service) for UPnP consist
of Sink Device (client-side/front-end) and

7
Source Device (server-side/back-end) service
functions. With classes such as; Trac Class
that indicates the kind of trac in the trac
stream, (for example, audio or video). Trac
Identier (TID) which identies data packets
as belonging to a unique trac stream. Trafc Specication (TSPEC) which contains a
set of parameters that dene the characteristics of the trac stream, (for example operating requirement and scheduling). Trac
Stream (TS) which is a unidirectional ow of
data that originates at a source device and terminates at one or more sink device(s).

FUTURE DEVELOPMENTS

router simply visits that web site.[24] This only applies to


the rewall-hole-punching"-feature of UPnP; it does not
apply when the IGD does not support UPnP or UPnP
has been disabled on the IGD. Also, not all routers can
have such things as DNS server settings altered by UPnP
because much of the specication (including LAN Host
Conguration) is optional for UPnP enabled routers.[25]
As a result, some UPnP devices ship with UPnP turned
o by default as a security measure.
A simple measure to avoid attacks of this kind is to randomize the port of the HTTP (SOAP) server.

Remote Access - denes methods for connecting


6.2 Access from the Internet
UPnP device sets that are not in the same multicast
domain.
In 2011, researcher Daniel Garcia developed a tool designed to exploit a aw in some UPnP IGD device
stacks that allow UPnP requests from the Internet.[26][27]
5 NAT traversal
The tool was made public at DEFCON 19 and allows
portmapping requests to external IP addresses from the
One solution for NAT traversal, called the Internet Gate- device and internal IP addresses behind the NAT. The
way Device Protocol (IGD Protocol), is implemented via problem is widely propagated around the world, with
UPnP. Many routers and rewalls expose themselves as scans showing millions of vulnerable devices at a time.[28]
Internet Gateway Devices, allowing any local UPnP conIn January 2013 the security company Rapid7 in Boston
trol point to perform a variety of actions, including rereported[29] on a six-month research programme. A team
trieving the external IP address of the device, enumerscanned for signals from UPnP-enabled devices announcate existing port mappings, and add or remove port maping their availability for internet connection. Some 6900
pings. By adding a port mapping, a UPnP controller benetwork-aware products from 1500 companies at 81 milhind the IGD can enable traversal of the IGD from an
lion IP-addresses responded to their requests. 80% of
external address to an internal client.
the devices are home routers, others include printers,
webcams and surveillance cameras. Using the UPnPprotocol, many of those devices can be accessed and/or
6 Problems with UPnP
manipulated.
In February 2013, the UPnP forum responded in a press
release[30] by recommending to use more recent versions
of the used UPnP stacks, and by improving the certiThe UPnP protocol, as default, does not implement any cation program to include checks to avoid further such
authentication, so UPnP device implementations must issues.
implement the additional Device Protection service,[18] or
implement the Device Security Service.[19] There also exists a non-standard solution called UPnP-UP (Universal
Plug and Play - User Prole)[20][21] which proposes an
7 Future developments
extension to allow user authentication and authorization
mechanisms for UPnP devices and applications. Unfortunately, many UPnP device implementations lack authen- UPnP continues to be actively developed. In the fall of
tication mechanisms, and by default assume local systems 2008, the UPnP Forum ratied the successor to UPnP 1.0
and their users are completely trustworthy.[22][23]
Device Architecture UPnP 1.1.[31] The Devices Prole
When the authentication mechanisms are not imple- for Web Services (DPWS) standard was a candidate sucmented, routers and rewalls running the UPnP IGD pro- cessor to UPnP, but UPnP 1.1 was selected by the UPnP
tocol are vulnerable to attack. For example, Adobe Flash Forum.

6.1

Authentication

programs running outside the sandbox of the browser


(e.g. this requires specic version of Adobe Flash with
acknowledged security issues) are capable of generating
a specic type of HTTP request which allows a router implementing the UPnP IGD protocol to be controlled by a
malicious web site when someone with a UPnP-enabled

The UPnP Internet Gateway Device (IGD)[25] standard


has a WANIPConnection service that contains a competing solution known as NAT-PMP, which is an IETF draft
introduced by Apple Inc. in 2005. However, NAT-PMP
is focused only on NAT traversal. Version 2 of IGD is
standardized.[32]

See also
Comparison of UPnP AV media servers
Devices Prole for Web Services
Digital Living Network Alliance (DLNA)
List of UPnP AV media servers and clients
Zeroconf

References

[15] Digital living network alliance (DLNA) home networked


device interoperability guidelines - Part 1: Architecture
and protocols. International Electrotechnical Commission. 23 October 2013. Retrieved 11 September 2014.
[16] OpenCable Specications Home Networking 2.0 - Home
Networking Protocol 2.0 Revision 10. Cable Television
Laboratories. 30 May 2013. Retrieved 11 September
2014.
[17] CEA-2014-B (ANSI) - Web-based Protocol and Framework for Remote User Interface on UPnP Networks and
the Internet (Web4CE)". CEA R7 Home Home Network
Committee. 1 January 2011. Retrieved 11 September
2014.

[1] Using the UPnP Control Point API. Microsoft Developer Network. Retrieved 11 September 2014.

[18] Device Protection V 1.0. UPnP Forum. Retrieved 11


September 2014.

[2] International Electrotechnical Commission, 2008-12-09.


Retrieved on 2009-05-07.

[19] Device Security and Security Console V 1.0. UPnP Forum. Retrieved 11 September 2014.

[3] ISO/IEC standard on UPnP device architecture makes


networking simple and easy. International Organization
for Standardization. 10 December 2008. Retrieved 11
September 2014.

[20] UPnP-UP - Universal Plug and Play - User Prole.

[4] UPnP Specications Named International Standard for


Device Interoperability for IP-based Network Devices.
UPnP Forum. 5 February 2009. Retrieved 11 September
2014.
[5] Goland, Yaron Y.; Schlimmer, Jerey C. (2 October
2000). Multicast and Unicast UDP HTTP Messages.
UPnP Forum Technical Committee. Archived from the
original on 30 December 2006. Retrieved 11 September
2014.
[6] UPnP Device Architecture V1.0. UPnP Forum Technical Committee. 15 October 2008. Retrieved 11 September 2014.

[21] Sales, Thiago; Sales, Leandro; Almeida, Hyggo; Perkusich, Angelo (November 2010). A UPnP extension for
enabling user authentication and authorization in pervasive systems. Journal of the Brazilian Computer Society (Springer-Verlag) 16 (4): 261277. Retrieved 11
September 2014.
[22] Eastep, Thomas M. (4 June 2014). Shorewall and
UPnP. Retrieved 11 September 2014.
[23] Linux UPnP Internet Gateway Device - Documentation
- Security. Retrieved 11 September 2014.
[24] Hacking The Interwebs. 12 January 2008. Retrieved 11
September 2014.
[25] Internet Gateway Device (IGD) V 1.0. UPnP Forum.
12 November 2001.

[7] How Windows Firewall aects the UPnP framework in


Windows XP Service Pack 2. Microsoft. 23 May 2014.
Retrieved 11 September 2014.

[26] Garcia, Daniel. UPnP Mapping. Retrieved 11 September 2014.

[8] UPnP Device Architecture version 1.0. UPnP Forum.


15 October 2008. Retrieved 11 September 2014.

[27] US-CERT
Vulnerability
Note
VU#357851.
CERT/CC. 30 November 2012. Retrieved 11 September
2014.

[9] UPnP Device Architecture version 1.1. UPnP Forum.


15 October 2008. Retrieved 11 September 2014.
[10] Cheshire, S., et al, IETF RFC 3927, Dynamic Conguration of IPv4 Link-Local Addresses, May 2005
[11] UPnP AV Architecture (PDF). UPnP Forum. 31 March
2013. Retrieved 11 September 2014.
[12] UPnP Forum Releases Enhanced AV Specications Taking Home Network to the Next Level (PDF). UPnP Forum. 12 July 2006. Retrieved 11 September 2014.
[13] Device Control Protocols. UPnP Forum. Retrieved 11
September 2014.
[14] DLNA Networked Device Interoperability Guidelines.
Digital Living Network Alliance. March 2014. Retrieved
11 September 2014.

[28] Millions of devices vulnerable via UPnP - Update. The


H. 30 January 2013. Archived from the original on 29
August 2014. Retrieved 11 September 2014.
[29] Moore, H. D. (29 January 2013). Whitepaper: Security
Flaws in Universal Plug and Play: Unplug, Don't Play..
Retrieved 11 September 2014.
[30] UPnP Forum Responds to Recently Identied
LibUPnP/MiniUPnP Security Flaw..
UPnP Forum. 8 February 2013. Retrieved 11 September
2014.
[31] Bodlaender, M.P. (February 2005). UPnP 1.1 designing for performance & compatibility. Consumer Electronics, IEEE Transactions on 51 (1): 6975.
doi:10.1109/TCE.2005.1405701. Retrieved 11 September 2014.

11

[32] UPnP Forum Gateway Working Committee: IGD:2 Improvements over IGD:1. UPnP Forum. 10 March 2009.
Retrieved 11 September 2014.

10

Sources

Golden G. Richard: Service and Device Discovery :


Protocols and Programming, McGraw-Hill Professional, ISBN 0-07-137959-2
Michael Jeronimo, Jack Weast: UPnP Design by
Example: A Software Developers Guide to Universal Plug and Play, Intel Press, ISBN 0-9717861-1-9

11

External links

The UPnP Forum


ISO/IEC 29341-1:2011
upnp-database.info Community-based database of
UPnP/AV Devices.

EXTERNAL LINKS

12
12.1

Text and image sources, contributors, and licenses


Text

Universal Plug and Play Source: http://en.wikipedia.org/wiki/Universal_Plug_and_Play?oldid=627277975 Contributors: AxelBoldt,


TwoOneTwo, The Anome, Aldie, Europrobe, Maury Markowitz, KYSoh, Bdesham, Nealmcb, CesarB, Egil, Mac, CatherineMunro,
Kwekubo, Camster342, Crissov, Jeq, Robbot, Iam, Fredrik, RedWolf, Ashley Y, Alistair b, Aps, Zigger, COMPATT, Fleminra, Niteowlneils, Sdsher, AlistairMcMillan, Matt Crypto, Toby Woodwark, Chowbok, LiDaobing, The Inedible Bulk, Kusunose, Icairns, EagleOne,
Imroy, CALR, Pmsyyz, Deh, Wwahammy, CanisRufus, Newtronic, Kross, Kgaughan, Cwolfsheep, Foobaz, Cohesion, 4v4l0n42, Cf, CyberSkull, Kocio, Mysdaao, Beaky, Ronark, Stephan Leeds, Danhash, RainbowOfLight, Mikeo, Kusma, Saxifrage, Kbolino, Lkinkade,
Woohookitty, Uncle G, Armando, WadeSimMiser, BlasterXP, Sega381, Riadlem, MauriceKA, Qwertyus, Rjwilmsi, Okj579, Barklund,
Chrisdowney, CMorty, Utuado, RobyWayne, Fresheneesz, Anrie Nord, Roboto de Ajvol, Wavelength, Hawaiian717, Hairy Dude, RussBot,
Luca.gambazzi, Garglebutt, Akhristov, B-Con, Grafen, Tetsuo, Sbenny, DHowell, Dureo, Falcon9x5, Mysid, Xpclient, Nlu, Wilfrednilsen,
Leuk he, Shp0ng1e, SmackBot, Martin.Budden, Hydrogen Iodide, Bjelleklang, GeneralAntilles, PanMan, Elronxenu, CrookedAsterisk,
Miquonranger03, D-Rock, JoeOnSunset, Frap, Benoit rigaut, OrphanBot, Gamester17, Zvar, Senatorpjt, Krich, Cybercobra, Warren, Mwtoews, WhosAsking, Soumyasch, Robosh, Shattered, Fernando S. Aldado, Koshatul, Kvng, Iridescent, Cherry Cotton, Philippschaumann,
MPOxy, RaviC, Thrill59, SkyWalker, CmdrObot, Jesse Viviano, NickW557, Eric Le Bigot, Phatom87, AndrewHowse, Yaris678, Cydebot, Belvdme, OckhamTheFox, Myscrnnm, Kozuch, Thijs!bot, Rees11, Seaphoto, Jteich, Bernopedia, Carewolf, Josephmarty, Le Sage,
Jon.bosche@gmail.com, Oliver341, Magioladitis, Jarvin, Froid, JoeX, TREX6662k5, Yggdrasil42, Gwern, Mailman-zero, Asbin, Paunaro,
Bgpearn, DavidZ, PrestonH, Bongomatic, Jesant13, Metrax, SztupY, Gtg204y, KeithHearn, S, TheFons, TXiKiBoT, Jnoring, Sceeter, Ing
tes, Very little gravitas indeed, Jamelan, Xlotlu, Updatebjarni, Thick sliced, Kbrose, SieBot, Zconf, Yagazuzy, Happysailor, Svick, Rstonehouse, ClueBot, Victoria99, Goelectric, Socrates2008, Panze, Boulty, Jgayhart, Ost316, C. A. Russell, SilvonenBot, Dsimic, ArmijnHemel,
Addbot, Mortense, Montgomery '39, Jriver44, SpBot, West.andrew.g, Lightbot, Yobot, Old Death, Richard.e.morton, AnomieBOT, Francisco Leandro, Rtyq2, DSisyphBot, Sburns90, Omnipaedista, C0diq, RibotBOT, SassoBot, Omar35880, FrescoBot, Itusg15q4user, Martingu, Norothir, Tobylnixon, Wadsbrau, Colinbergin, SnowLprd, EmausBot, Wiseorbit, Tpenttinen, Dcirovic, Dskw, ClueBot NG, Johdu,
Wbm1058, Compsciwizkid, Darling42402, Rforsman, Gary Lutchansky, SoledadKabocha, Dammad42, Vieque and Anonymous: 282

12.2

Images

File:Question_book-new.svg Source: http://upload.wikimedia.org/wikipedia/en/9/99/Question_book-new.svg License: ? Contributors:


Created from scratch in Adobe Illustrator. Based on Image:Question book.png created by User:Equazcion Original artist:
Tkgd2007

12.3

Content license

Creative Commons Attribution-Share Alike 3.0

S-ar putea să vă placă și