查看: 16988|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr) q( k% M9 c. x; _
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig
    " H) P8 [! l. Q6 k% Z0 F
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:9 P1 ?1 o7 _/ E$ O1 B
usage: himr <address> <value>. sample: himr 0x80040000 0x0
- M+ ?: S* f$ y4 B6 J, k- C% R5 s
; F  M0 c; O8 }" ~. _) V( H" `& R4 w; u5 B: K; Q; s
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?
8 m+ L+ q, G& }2 p3 b% J- n+ |% U; L
补充内容 (2012-3-8 09:42):
7 ^+ W/ P/ X$ n" ]! H2 Z2 [http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数( i1 {( Z6 a& A- @3 u6 m( x, E, U
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。( p( l; M( B; C5 J" \# Z
: @1 q- H) i, @
himr <address> <value>. sample: himr 0x80040000 0x0# @) p2 d5 d* E9 h; H) Q8 h7 G

0 `6 j+ ^5 \; }4 |7 j: M例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。) A( d5 b" f% X% o  I- W
himr 0x80040000 0x00' X: [" d! I$ P7 H$ Q4 s2 H- d
himr 0x80040001 0x11
* ~# R# _9 c7 o# k1 Khimr 0x80040002 0x22# ?3 E7 a' N4 E/ I9 q
himr 0x80040003 0x33) ^1 k. P2 f! f# C4 n9 B9 k
himr 0x80040004 0x44
5 z6 x  u$ P4 Y" ]! t5 k; s5 xhimr 0x80040005 0x55
$ o( p+ N" |5 K8 L' f% g/ ~" E/ j) i( g4 y# o
SN也是类似。
( a- B- @# @+ a% M* O3 N& o- V# n+ b- {0 q, H" L
现在主要是,谁告诉我们MAC和SN的地址?, Z# E! l2 h4 L7 n1 U4 o* b
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37
2 \8 n# t+ F7 Q/ b0 I8 u一直想找到运程修改MAC和SN的办法,苦于无解啊

* Z0 A9 R# [9 u4 r5 x+ M2 {, Q( K源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑 ! j& k% g/ R. U5 c2 r$ \" e$ b

  I/ n1 _9 a6 R8 `& H& Z1 q修改的代码早有了。到今天不会编译。
( b8 e2 V9 M4 _# G% O需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>- s( j1 o. C2 T: j. h( w4 C" v
  2. #include <malloc.h>
    & d( T, D' b9 k  G; A. x. {2 h
  3. #include <sys/types.h>
    7 ^: e9 B+ R1 y  r) c; M
  4. #include <sys/stat.h>
    7 ]* ^" r5 C5 j
  5. #include <sys/ioctl.h>1 n. h4 d# P  O0 y* W
  6. #include <stdio.h>
    " W" m6 I2 g, A, T# E# {4 G
  7. #include <string.h>
    ; ?8 D0 U( Q( f/ V0 r0 {1 R
  8. 3 K, c0 J, ]7 H( E
  9. typedef struct {, x6 K, I, A3 f! @: @
  10.         unsigned int        e2prom_cmd_sub_addr;6 _  @( p7 g$ v  W4 d8 c
  11.         unsigned int        sub_addr_count;
    $ A+ X9 i4 n  v- J
  12.         unsigned char*        e2prom_cmd_data;
    + g! w' ^& y" N  p4 Y! b. c+ H& g
  13.         unsigned int        data_count;
    6 T8 g8 X: }( I+ Q( U5 t# y3 v
  14. } e2prom_s_cmd;
    2 s7 m% v( S6 b4 y1 S4 s- N
  15.   P" L. t) J+ n
  16. #define E2PROM_CMD_READ 1  ^4 \$ q. t1 R: a% n2 k/ l
  17. #define E2PROM_CMD_WRITE 2) Y' q% j8 C2 R2 q, }) {! {
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"
    ( K$ w) u& q/ x7 |7 N0 L5 o

  19. + Z( K" k5 b( i
  20. static int readparam(unsigned char *mac, unsigned char *stbid)+ a* `! \, L) Z$ t2 P
  21. {$ o. N$ D2 _. K
  22.         int fd, ret;
    . |! J, i: P  i
  23.         e2prom_s_cmd arg;
    8 T8 G! |2 Z9 R) f/ P
  24.         unsigned char buf[0x18];
    ! O& Q. I  q: }# N; C- E/ @
  25. - `+ W% M9 S: B
  26.         fd = open(E2PROM_DEVICE, O_RDWR);& F# |8 ?2 y( E, S- z; _+ U
  27.         if (fd  < 0) {
    3 U; @/ X+ f( }/ ~
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    , Z/ p: m' ?7 u
  29.                 return -1;
    : j3 i; S5 F0 O9 F- z
  30.         }) j9 u0 ~7 a9 [: v
  31.         arg.sub_addr_count      = 2;/ S1 c" U3 c& u
  32.         arg.data_count          = 0x18;
    ) u$ v) K" |, m1 k& Q
  33.         arg.e2prom_cmd_sub_addr = 0x290;$ e% p# C1 |: M3 c( [; O  b/ q
  34.         arg.e2prom_cmd_data     = buf;
    # u4 h( j* Y% h5 r
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);4 a& X; c' _4 h3 x" b
  36.         if (ret != 0) {
    & L! a! |( D# }: H
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    9 ]; f0 A  j% a. e
  38.                 return -1;
      j, P1 p7 |; m" D6 S* `9 A& r
  39.         }
    1 q& d9 S* i( m; c! ~/ ^5 V
  40.         memcpy(mac, buf, 6);, V2 |; v/ v/ f( ]! H8 Z
  41.         memcpy(stbid, &buf[6], 18);3 I8 r1 u3 w# y( y# L3 p/ N
  42.         stbid[18] = '\0';
    , w" }9 Q2 e' |" ]) b6 [
  43. & x" v" d0 l" j" A' w" F
  44.         return 0;
    / E$ {3 q( }  C: Y/ ^+ J. y
  45. }
    " i! T* A) y0 ^! Q) U, x
  46. ! w! Y$ z0 `% }1 W' t) @9 I0 c- X
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)
    5 D9 J. }$ m/ |& q( z( M; Q7 E
  48. {
    ' y1 t8 h6 [1 S' F# o/ Q
  49.         int fd, ret;
    , c$ b1 B& [7 |" J7 B4 `. t
  50.         e2prom_s_cmd arg;
      m/ x$ n4 m. [4 {# M5 T/ \, p4 g' ?
  51.         unsigned char buf[0x18];
    6 S9 e: U4 J* Z4 e- w
  52. 5 S! {% v4 P6 w( r. n" e
  53.         memcpy(buf, mac, 6);, I0 T  x* H" g) b
  54.         memcpy(&buf[6], stbid, 18);2 f% x; o. p2 c" }) W5 i& k5 r' f
  55.         fd = open(E2PROM_DEVICE, O_RDWR);( p' ]+ p9 V" O
  56.         if (fd  < 0) {
    6 v) R: ]: p& r& O/ b6 A1 q" A1 {( B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);
    . B( h/ n2 d$ c% T- u4 }6 n
  58.                 return -1;
    7 `& `3 l9 p0 U+ e; ?- e
  59.         }. S) u: t$ y0 u, Q0 S1 u& J3 F  y9 {
  60.         arg.sub_addr_count      = 2;
    8 `' n0 R0 F2 P
  61.         arg.data_count          = 0x18;
    4 j1 |$ z! c. A9 ~3 E/ q0 j
  62.         arg.e2prom_cmd_sub_addr = 0x290;# k, M4 l0 c: g0 f% u* n
  63.         arg.e2prom_cmd_data     = buf;/ \- x# _3 O2 E, ], W
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);! f% m/ k9 B7 v: T& ~
  65.         if (ret != 0) {* y+ q" f; n4 D; v( J: M
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    / o" j* O* K+ y7 }
  67.                 return -1;
    ; t2 M; n. y" G6 ^7 G
  68.         }8 a# g* P$ g' ]/ C7 M" A
  69. 2 Z7 s) C# _( H0 j/ B
  70.         return 0;% e7 Z: {5 p5 v. G% e3 E2 t
  71. }
    , C- |( ?$ s5 ?  k

  72. + U. a1 c8 w! F2 z! B
  73. int main()
    / P! F  O) r7 D" }
  74. {' C" T9 K' T: L1 @0 F. }2 C6 B
  75.         char c;
    ; E7 |8 t7 w. N
  76.         int i, macs[6];& g8 t' q" G1 G& K) V- {& [3 l! f6 _
  77.         unsigned char mac[6];9 R. T2 E& P& E1 f( h9 z
  78.         unsigned char stbid[256];. `" e1 x) l  C& H  b9 h+ }

  79. 0 y+ R3 ^" c6 W4 O9 [( {- |$ Q# d, f
  80.         if (readparam(mac, stbid) < 0)
    ! H: ~( d) Y/ S
  81.                 return 1;
    : M: C! Q0 s8 d2 c# z4 E

  82. ' N* x7 r2 i# i8 C6 S/ h
  83.         printf("Current parameters: \n");
    & x  Z- o/ U5 n5 W3 O4 {. H& D2 A
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    1 l& h3 D5 O; i/ H
  85.         printf("  STBID: %s\n", stbid);8 J, O0 @$ _% `  d- |
  86.         : R, W% h# j1 }- e0 f: U. ^! g
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    , K+ ?1 G+ h1 |% u* ?' i
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {; `7 s8 ~" {# b9 j
  89.                 printf("Input MAC error\n");- P3 i# _- |5 ^
  90.                 return 1;
    ; P8 n3 o3 g! W( H# V- _
  91.         }' P% A. F! O. {% b! B
  92.         for (i=0; i<6; i++)mac[i] = macs[i];4 ?6 @9 D5 H: D
  93.         printf("\nPlease input new STBID: ");  _" a: \0 f( G$ \8 ^5 J
  94.         scanf("%s", stbid);
    6 Q+ }) ~7 S- B& w5 U" N: A8 K
  95.         if (strlen(stbid) != 18) {
    - z: i) B( n+ D2 X, Y/ ^
  96.                 printf("Invalid stbid\n");5 f- ?" K: u1 |* j$ [7 Z7 N  t
  97.                 return 1;; l6 @0 |* w) g" Z7 v
  98.         }
    + `% l1 Q/ z8 t4 S5 n9 I
  99.         printf("\nNew parameters: \n");3 z) t7 G9 n6 ~9 o
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);. e% Y+ h6 J* g
  101.         printf("  STBID: %s\n", stbid);
    & p, h0 Z6 {& e
  102. ; H3 D$ G+ \, O% C8 I, D: X* R
  103.         printf("\nDo you want to change paramemters? (y/N) ");3 u& u, s! W* }& L* o9 e# O  ~
  104.         for (;;) {$ q$ R0 U6 s$ {0 Z( t: P0 n; n
  105.                 c = getchar();
    * t3 S& S$ t7 v, ]
  106.                 if (c == 'y' || c == 'Y')
      b1 `; w2 F( R5 @  ^9 D9 W1 B
  107.                         break;
    8 U8 S: C* g6 B3 Z! {' _
  108.                 if (c == 'n' || c == 'N') {* e3 z( X  w4 I0 h& z
  109.                         printf("\nAborted.\n");( ~3 Q/ Q9 s7 Y& M7 N
  110.                         return 1;
    6 K' O+ c# T% F  g
  111.                 }
    + o' h7 g- h4 d* b* _
  112.         }. j, @6 f( t9 u, h8 [  t
  113.         if (writeparam(mac, stbid) == 0) # d# i1 C8 n6 F4 v5 L$ y
  114.                 printf("Parameters changed.\n");2 F2 V3 w6 A" s4 z0 R
  115. % y; c. L7 G' [$ q5 A! T6 z
  116.         return 0;
    : G9 s- z: Y" i3 `. k7 v
  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
' d0 C2 W$ ~7 E, }! d6 n4 a  ~7 W& t在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。
) M; }; E! ^1 q; N( Y
你用的编译命令行格式是什么?
5 ~6 b8 {/ w# z5 d% `
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

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