查看: 16967|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr; P. B# }2 q1 J, Q( K* w
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig; [7 L; W; A4 R
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:
7 q7 H6 f1 ]- {8 t3 W$ U  Yusage: himr <address> <value>. sample: himr 0x80040000 0x0
: d4 g5 L0 T) g7 r0 x4 a% [) u. L3 t+ V) P
, W5 ]. r: A! D0 T7 E9 E! L# v
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
( F7 r" w  v' v; r, u# E! `: j# A9 t$ _$ C- n3 Q, D- O" A
补充内容 (2012-3-8 09:42):( B7 Z7 G: a- R7 G% U9 z2 v
http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数
8 i( f/ e1 }  s/ N9 @" F这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 f4 F" L1 A* h) c- s; Z; n- P2 m9 D

; y; T* h6 `* A6 n. Vhimr <address> <value>. sample: himr 0x80040000 0x0
8 o7 e  z2 ?; r; r# J" i" j/ l1 Y6 w1 ~6 [2 [6 A- F
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
* N5 l& ]  Z' {himr 0x80040000 0x00
9 {. W7 N; w  B8 k2 Nhimr 0x80040001 0x11. P: A% a' f9 N4 P, t
himr 0x80040002 0x226 G8 [" ~" D# G' l# ?$ u
himr 0x80040003 0x33
& U0 w, e) p+ `8 q. k' Ahimr 0x80040004 0x44& ?2 u4 z7 n& h  n
himr 0x80040005 0x55: m) }+ @. C8 g6 ?' F
0 I9 K" }$ Z) B
SN也是类似。
( J9 p' z1 D9 A: Y9 T( B" x5 x( Z$ I- l, B8 |# i
现在主要是,谁告诉我们MAC和SN的地址?6 n! W& F5 a& U4 l/ q& w6 k
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
9 G9 a& j; C( J一直想找到运程修改MAC和SN的办法,苦于无解啊
4 ]2 i1 q. \1 J( f
源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
0 R. ~7 V/ U4 }: [3 M4 _( c* |0 C6 \& M* \* y& l) U/ G2 O
修改的代码早有了。到今天不会编译。% T  ?- {& ~7 T5 L: E# J
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>0 }* n( s# \7 S: E4 Y2 S
  2. #include <malloc.h>
    2 Z8 m0 h  m4 g+ ?  X# q' U' z' ~
  3. #include <sys/types.h>
    ! j, ^6 Q( h' a. y& v
  4. #include <sys/stat.h>
    ( W0 x: I  @$ w; l. `
  5. #include <sys/ioctl.h>1 ?# e( j8 S; P& P7 l
  6. #include <stdio.h>
    - c' z0 U! x# i9 f1 T% f$ y
  7. #include <string.h>0 O) y1 y% }9 h. ^
  8. # `" b3 v5 C1 S) C2 C
  9. typedef struct {
    ( i; t# V6 T7 ~, g
  10.         unsigned int        e2prom_cmd_sub_addr;+ @( L% a4 v/ F  I
  11.         unsigned int        sub_addr_count;
    # e4 t% R& m$ p9 @, G
  12.         unsigned char*        e2prom_cmd_data;
    8 }+ K3 I% h! m  d9 `3 R4 L' Z
  13.         unsigned int        data_count;/ ~1 _, H3 s) T( C, |$ y7 g
  14. } e2prom_s_cmd;
    ) E( z' |: k# I& f) X; ]+ @9 P

  15. % y+ ?5 _! e; ?, b. \+ A
  16. #define E2PROM_CMD_READ 1
    ( y4 |$ o/ i( X3 O
  17. #define E2PROM_CMD_WRITE 2
    4 c" B4 {% f2 N. h, }5 C
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    + r* s% y; l! ^' Y& [3 m  p" H/ P( u
  19. $ c4 c: s$ g* q6 e  \- O, p2 g$ l
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    , w0 k* W7 }% k  z' ]* J2 L
  21. {
    & m$ O& B" F- F+ z( g
  22.         int fd, ret;# M6 s" B& U, e' Z
  23.         e2prom_s_cmd arg;. ~5 l: V# t* c; _) U5 _; E
  24.         unsigned char buf[0x18];
    - a8 c+ b( [7 p# D# P
  25. & ^. a8 E; y1 `$ {3 m# ]: m' a
  26.         fd = open(E2PROM_DEVICE, O_RDWR);' T3 H% e- E1 ]. c8 y" y5 p8 l: S! o
  27.         if (fd  < 0) {
    8 G5 d1 p# C2 c: e, b; F
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    ( \; g0 L# \1 g: J9 J& @+ O
  29.                 return -1;
    ( T8 W" E$ I( p; z9 S; h' o3 p; x
  30.         }
    ( W% `. p% S) w
  31.         arg.sub_addr_count      = 2;
    6 m# G9 I7 Q% _9 R/ x
  32.         arg.data_count          = 0x18;) q: e0 ^) G8 S7 f; ?3 N
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    ' ?2 Y4 J5 {  B1 c5 M
  34.         arg.e2prom_cmd_data     = buf;
    5 [4 N3 T& v7 I# n2 {
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);& u. c% {1 D- h" |, a3 x6 ]
  36.         if (ret != 0) {' ]. D+ c6 S1 [9 A. W' ]8 h5 K
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    ! A1 ~8 Z: k" b% ?# `
  38.                 return -1;3 _& r8 Q) z2 F  J
  39.         }9 i( N' z, ^% }. g
  40.         memcpy(mac, buf, 6);+ ^- d. j* E* }) {5 ^  B
  41.         memcpy(stbid, &buf[6], 18);
    1 M4 C2 V7 K2 O
  42.         stbid[18] = '\0';
    0 N# k2 ]0 l1 k; Z$ p4 ]) e

  43. . W* s  \: z% M6 r
  44.         return 0;
    : d- M' i7 Z) C# I+ F! {; [
  45. }
    3 j7 S  e/ N2 q7 S5 t5 f+ c

  46. * _, W& T1 z% D3 G/ s
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)2 e$ _( _8 y% w/ M- S
  48. {- [: ?: {0 x7 M/ K6 ^$ `% g  ~
  49.         int fd, ret;
    - O+ _! C$ w/ N. ?8 U# ~
  50.         e2prom_s_cmd arg;
    / z5 U0 z( L6 m/ j: _  C
  51.         unsigned char buf[0x18];7 p8 t1 o8 D6 z/ G4 |- R5 y+ n
  52. ; {8 Q+ C! M* T7 E5 Z" d7 I! ]
  53.         memcpy(buf, mac, 6);
    ( O( l4 O6 v. {& s
  54.         memcpy(&buf[6], stbid, 18);
    1 u2 Z* E% M% j% q
  55.         fd = open(E2PROM_DEVICE, O_RDWR);
    / F5 q' A7 Z3 K
  56.         if (fd  < 0) {
    . F+ @! W4 Q4 v6 F/ S
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);( [4 p7 k8 T0 ?1 d) ?' p
  58.                 return -1;
    " [4 j0 l# U5 H/ V3 Q
  59.         }
    ! Y+ d# i# X4 t
  60.         arg.sub_addr_count      = 2;4 r9 t# j7 M0 d* v' ]$ h0 b6 |
  61.         arg.data_count          = 0x18;2 S3 d) e6 m& K+ c9 P( ?
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 C, w8 Q, g: v1 Z
  63.         arg.e2prom_cmd_data     = buf;
    4 R8 a3 G$ o2 ?, o8 U
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);
    & t# I' C3 u5 |* V" W, d
  65.         if (ret != 0) {6 B7 ^3 J# R) M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);: F3 g& [  W3 O9 {4 r
  67.                 return -1;( k  x! U9 s( U
  68.         }# E3 v  w0 N5 i: J" X0 r9 h4 ~* ~; Z
  69. % o6 C# K5 E: f, k1 B
  70.         return 0;" Y* w6 f3 d( y) d5 d
  71. }
    + Q9 g9 O  d5 S- M& |0 ?. N
  72. & q4 O. c$ w% r7 x
  73. int main()
      M1 k9 M$ }# S! h
  74. {
    1 j$ m, h, z8 l" B$ m8 i  W
  75.         char c;
    ; b4 z+ g6 L' ~6 J
  76.         int i, macs[6];
    4 b5 s, C' o) z
  77.         unsigned char mac[6];& _4 s5 n4 Z! y  p" B1 |
  78.         unsigned char stbid[256];
      N! \3 u9 |2 s* w

  79. 7 S( e" F  V  s) P1 K2 H" X
  80.         if (readparam(mac, stbid) < 0)
    - D# W" H% N/ Y# G3 k. i2 k
  81.                 return 1;
    ) R( S3 q- e, I# B! l

  82. ( z8 l$ V( Y  r$ X9 [1 k( X
  83.         printf("Current parameters: \n");
    + ?7 i* R. Y$ |6 _' V- c6 d6 P* L1 c
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);' c2 H: S& k* k8 C. S2 T* P4 x" O% m6 `
  85.         printf("  STBID: %s\n", stbid);( e+ `9 X/ j, c7 Q
  86.        
    ( t/ s# b' z3 ]6 k/ D! E# ]& i! p& o
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    4 ]& l" k4 b$ ^' w6 z/ i$ a
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {. _1 Y8 O0 m, O5 h, R
  89.                 printf("Input MAC error\n");/ O5 Q' z" z. G  D: u, ?
  90.                 return 1;
    " ~& A8 }! u! g( M' f) w2 x0 V
  91.         }3 G& T; p( v* h& @
  92.         for (i=0; i<6; i++)mac[i] = macs[i];$ M0 ~) c4 s" H; @
  93.         printf("\nPlease input new STBID: ");% ?( R1 P) g" ~0 k  j* y7 ]* T! S
  94.         scanf("%s", stbid);
    & `& g6 }! M% ~8 q
  95.         if (strlen(stbid) != 18) {
    1 E' u" N( i( {: {9 l4 X; W3 F
  96.                 printf("Invalid stbid\n");+ I6 c3 |/ J4 K+ t; p. O8 P+ v: P4 B
  97.                 return 1;
    * S) ]) ]$ [/ y+ I
  98.         }1 `- o" j8 [; Q
  99.         printf("\nNew parameters: \n");0 w2 m6 P0 r: l4 I* c' ~7 w
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);# ]) L: h/ Z& `& l( r/ a( l0 x" [
  101.         printf("  STBID: %s\n", stbid);
    ! O( z. r% d4 m
  102. & U% _% h3 \8 ^& ^% h
  103.         printf("\nDo you want to change paramemters? (y/N) ");$ C: C, F  G& Z5 O5 p# G8 e
  104.         for (;;) {
    . o; n8 C7 Z; Z" b# M: n* _( ^
  105.                 c = getchar();
    2 s1 K* Z: d. R; Z% {) P- |
  106.                 if (c == 'y' || c == 'Y'), z3 \9 z- Y7 C) c# T! i5 t
  107.                         break;5 z0 x% H% A7 J: L( X( I
  108.                 if (c == 'n' || c == 'N') {( a1 l& e* j7 x: s+ p5 h6 @
  109.                         printf("\nAborted.\n");
    2 E$ i4 \! ]8 }' \
  110.                         return 1;
    / E. |! }) E, w. s0 e- ~2 V9 n
  111.                 }
    2 w2 w8 `  Y! @" q6 u2 x& ]
  112.         }
    4 X) Y8 x- k$ K9 ^: f% M9 Y, A
  113.         if (writeparam(mac, stbid) == 0)
    4 }8 P' t( o! L/ S. c
  114.                 printf("Parameters changed.\n");
    3 e& f; G1 M+ v' \! d1 R/ E
  115. % N2 b, z/ O2 K* n; c4 A* E6 k5 E7 U
  116.         return 0;! o) w2 D! m0 v/ h" Y$ e
  117. }
复制代码
 楼主| 发表于 2012-3-23 18:24:12 |福建| 显示全部楼层
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
发表于 2012-5-11 11:20:03 |浙江| 显示全部楼层
0522 发表于 2012-3-23 18:24 & |& ^. V- A2 b% h# C+ B
在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
0 ?9 x* _) z; w
你用的编译命令行格式是什么?0 [7 [& g) v- m8 P0 o
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

相关侵权、举报、投诉及建议等,请发 E-mail:yesdong@qq.com

Powered by Discuz! X5.0 Licensed © 2001-2026 Discuz! Team.44152102000001

在本版发帖QQ客服返回顶部