查看: 17821|回复: 19

讨论EC1308修改

[复制链接]
发表于 2012-2-15 22:51:59 |福建| 显示全部楼层 |阅读模式
我用telnet登录到EC1308里。在
  1. -rwxrwxrwx    1 root     root         8657 Nov  7  2011 himr
    . F0 e, l5 m. W- e1 ~
  2. -rwxrwxrwx    1 root     root        89029 Nov  7  2011 iwconfig) A, |2 y6 f, n$ w
  3. -rwxrwxrwx    1 root     root        83813 Nov  7  2011 iwpriv
复制代码
发现这个himr的格式是:& e2 r0 N+ s- }/ x; W6 E, r. }
usage: himr <address> <value>. sample: himr 0x80040000 0x0. ?0 v8 I, t( _+ g0 ~
+ |2 d% {- S* I4 h
# Q& F6 p! Z2 k7 d
不知道所谓的写MAC,SN是否就是在特定的地址写特定的数值?9 N7 S% B9 n1 R: m" D2 _7 i- @* A
! L7 N6 k0 F9 U% b) C! @# g
补充内容 (2012-3-8 09:42):
, ?6 b+ V3 E/ Y! |  A: _http://www.iptvfans.cn/wiki/index.php/华为EC1308机顶盒改参数9 l! B# J7 V. \" \4 G0 e% t
这是修改源代码,可惜我不会编译。
 楼主| 发表于 2012-2-16 22:08:26 |福建| 显示全部楼层
那些远程改MAC和SN的是否就是利用这个himr程序,将MAC和SN写到特定的地址?
发表于 2012-2-28 10:55:26 |湖北| 显示全部楼层
急切想知道远程是如何改的
 楼主| 发表于 2012-3-7 09:59:55 |福建| 显示全部楼层
估计就是执行这个命令。0 q  z0 ]2 N: a+ x8 G; l, G

; u* S2 O* r9 V+ [7 Q, Jhimr <address> <value>. sample: himr 0x80040000 0x06 N  S* D2 ]. b: E  K
+ F! o7 c$ l3 y. P/ [
例如知道MAC 00-11-22-33-44-55 在地址 0x80040000 位置。
6 ~8 ?0 {; W7 E: J- Jhimr 0x80040000 0x00- J& _& d; j- {. Y( x; ]7 Z
himr 0x80040001 0x11
4 C* r- v# \* Ehimr 0x80040002 0x22
" c5 g3 {6 Q& R7 p, M1 o4 T) u- `* U4 rhimr 0x80040003 0x33
7 ]3 q0 [' ?3 m6 `; }himr 0x80040004 0x44+ b. {4 H6 w. [2 i( X, P* ~3 J
himr 0x80040005 0x551 }* ^/ g9 G" x, W" ~) H9 h& Y
5 o# q& {5 Y6 F( z/ Z0 p
SN也是类似。
1 y: |% r! v/ r7 V# h8 o
. B! L; n% |1 C4 ]现在主要是,谁告诉我们MAC和SN的地址?
+ d0 I) E7 K9 y' A2 [8 ]6 e' J
发表于 2012-3-10 11:37:46 |湖北| 显示全部楼层
一直想找到运程修改MAC和SN的办法,苦于无解啊
 楼主| 发表于 2012-3-12 19:15:19 |福建| 显示全部楼层
wowocom 发表于 2012-3-10 11:37 & ]; O  ?/ a5 q
一直想找到运程修改MAC和SN的办法,苦于无解啊

. S# P& \- |4 M! P, ]源代码有,可惜不会编译。
 楼主| 发表于 2012-3-21 23:00:54 |福建| 显示全部楼层
本帖最后由 0522 于 2012-3-21 23:04 编辑
1 X( q# x8 ?8 J, x" {" b9 x" e
2 p7 i3 p- U9 J) w修改的代码早有了。到今天不会编译。  M4 }' I3 _+ X
需要    交叉开发工具 cross-compiler-armv5l.tar.bz2
  1. #include <fcntl.h>
    + _) R4 ~7 Z' O6 @1 b6 u: p
  2. #include <malloc.h>, A0 m  t/ q9 |+ c3 J+ m
  3. #include <sys/types.h>" J; o( ~: F# h; t
  4. #include <sys/stat.h>
    - ~9 s( m3 h, ^& ^$ A4 p. ~
  5. #include <sys/ioctl.h>, v# S# w1 ?/ f& {# p
  6. #include <stdio.h>5 o" u) |9 m2 Z8 t- m; k$ l' T
  7. #include <string.h>0 p) j/ `1 L! {3 _. v

  8. 8 ?# K- [9 z0 r0 H
  9. typedef struct {
    - a4 H2 d+ [2 F
  10.         unsigned int        e2prom_cmd_sub_addr;6 M- b  S1 d, B$ \
  11.         unsigned int        sub_addr_count;0 q7 \/ {4 t5 C7 ]# k" {7 _
  12.         unsigned char*        e2prom_cmd_data;
    - a2 V' p, N: l% |& [
  13.         unsigned int        data_count;0 p7 D) Q. H, m
  14. } e2prom_s_cmd;8 d- z7 Z# ^: G. ]

  15. ! d$ {. V" o" X( y+ E" j) p
  16. #define E2PROM_CMD_READ 1
      A7 ?4 t3 |1 X8 _/ t
  17. #define E2PROM_CMD_WRITE 2
    8 N2 |* g, t! S. D. |, c
  18. #define E2PROM_DEVICE "/dev/misc/e2prom_24lc16"  p  Z8 `. [. h7 }$ y

  19. $ W% v8 y6 Z1 v4 T& p9 p. [4 {
  20. static int readparam(unsigned char *mac, unsigned char *stbid)
    8 e8 ]  _, l4 g- R$ E$ f3 p
  21. {
    ' `5 [5 l& ^0 }  x) \
  22.         int fd, ret;
    - }. c2 l) X) d
  23.         e2prom_s_cmd arg;! s! @1 j0 a2 M) w# u
  24.         unsigned char buf[0x18];9 ?! N  \3 p2 b7 l7 }/ R

  25. ) n+ A* N5 z" Q4 F& w/ \
  26.         fd = open(E2PROM_DEVICE, O_RDWR);# e( A2 X6 R6 _
  27.         if (fd  < 0) {
    , H" v7 {7 e0 z- P& N; t, G  D
  28.                 printf("Device %s open error.\n", E2PROM_DEVICE);6 Q9 J7 U3 Y$ V. \" y; _% V% T3 Q
  29.                 return -1;
    - R: U0 l' r& x. ?$ e
  30.         }: E1 m3 F# u$ ~' p$ T7 ^. I8 R6 i
  31.         arg.sub_addr_count      = 2;
    0 g+ ?) P1 h& N/ y* s+ F
  32.         arg.data_count          = 0x18;! [0 B/ V8 z. q3 b
  33.         arg.e2prom_cmd_sub_addr = 0x290;
    9 W5 c) {* s  S3 w& ^9 n# _% {$ r
  34.         arg.e2prom_cmd_data     = buf;1 O0 l; [6 G/ J$ u
  35.         ret = ioctl(fd, E2PROM_CMD_READ, &arg);
    , D# P0 f3 ~) U5 X
  36.         if (ret != 0) {8 D1 L& y4 ]' x. x2 w/ P3 T1 w
  37.                 printf("Device %s read error.\n", E2PROM_DEVICE);
    4 k5 U& X* b5 o) H) `
  38.                 return -1;% v! w" H: h' k5 W$ F
  39.         }3 e# D/ e8 ^4 J4 q- U" b. S4 j
  40.         memcpy(mac, buf, 6);. {6 s1 v# j* L- A, l  b
  41.         memcpy(stbid, &buf[6], 18);
    , B) a  m. ?; D. e. h( h
  42.         stbid[18] = '\0';8 {7 J  M9 E* ?$ e

  43. + G' f$ B- c$ H
  44.         return 0;- w6 b5 h; W! [) T* O
  45. }
    0 O& l% Z0 V" [2 s' n

  46. 2 J* ]; u+ C& n2 E" J, d3 ^
  47. static int writeparam(unsigned char *mac, unsigned char *stbid)4 w3 ~: L: U1 M+ Z
  48. {4 H; s6 C% ]" g4 Z" X
  49.         int fd, ret;
    + ?9 {) ~* I4 P) _. a$ Z  F
  50.         e2prom_s_cmd arg;
    . }+ ?+ E  \* ?' h0 _" c% D
  51.         unsigned char buf[0x18];
    2 F, T3 [! n7 Q) J% D8 b5 }- K
  52. 4 y  t8 d, e4 {9 Y1 B
  53.         memcpy(buf, mac, 6);. P4 P! l, h; S% W
  54.         memcpy(&buf[6], stbid, 18);
    9 A' r$ ?% U# H& F8 [
  55.         fd = open(E2PROM_DEVICE, O_RDWR);0 F7 r; l. k" p3 S! Z
  56.         if (fd  < 0) {
    * R) W1 ]1 e" s' H7 B
  57.                 printf("Device %s open error.\n", E2PROM_DEVICE);2 R) F4 N* O5 d/ H! X% g# s! e+ o" ]
  58.                 return -1;
    1 ?6 E+ ]8 {1 P' R
  59.         }: B% @+ `3 j% e5 J
  60.         arg.sub_addr_count      = 2;
    5 B0 U$ M$ Y" |! p; s- q
  61.         arg.data_count          = 0x18;2 `' A) w/ ^+ F& J+ H4 v3 l' z
  62.         arg.e2prom_cmd_sub_addr = 0x290;0 {4 ], W: q/ W. P
  63.         arg.e2prom_cmd_data     = buf;
    # c/ k- i  P( f- W) {( h; N  {+ G
  64.         ret = ioctl(fd, E2PROM_CMD_WRITE, &arg);% c, B9 C* e) f
  65.         if (ret != 0) {9 Z- L. U+ X* Z& Q0 O
  66.                 printf("Device %s write error.\n", E2PROM_DEVICE);
    : @4 Z2 @" q% w) x
  67.                 return -1;
    ) _7 Q: Q; \( \0 S2 G( t$ U
  68.         }
    ; Q, f" d% F, @
  69. 2 R6 I0 I2 G" R
  70.         return 0;2 |/ \8 R( L- ]% h, o( M' Q, ^
  71. }  e. v6 U, `. @  s

  72. - I/ b/ \& F1 w( @2 T
  73. int main(). W! N, h; G+ Y; a" ]$ N
  74. {$ N  F3 Y# Q' C! F0 A
  75.         char c;
    ! D! Z0 A- ?0 ~
  76.         int i, macs[6];/ \6 B2 `# A/ h! \  G
  77.         unsigned char mac[6];
    9 z- I" `+ k& ^5 m
  78.         unsigned char stbid[256];$ S! p, K. i, t( O+ ~& c
  79. ! ]5 Q; A0 K4 M- b
  80.         if (readparam(mac, stbid) < 0)
    : s1 B$ a) b6 M% W: h
  81.                 return 1;
    & M& ?1 Y( f# X; c8 u

  82. ) n, I. \' L) g  l1 H
  83.         printf("Current parameters: \n");+ l! S5 `/ U3 ?0 G8 U
  84.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);
    ( ]4 a- d# v/ k) j% c. U
  85.         printf("  STBID: %s\n", stbid);  w0 m/ @) n, E2 ~
  86.        
    * t! j. s* W6 c* L# t8 K
  87.         printf("\nPlease input new MAC (1a:2b:3c:4d:5e:6f): ");
    / y8 h! H/ W) Q' w9 S$ V
  88.         if (scanf("%02x:%02x:%02x:%02x:%02x:%02x", &macs[0], &macs[1], &macs[2], &macs[3], &macs[4], &macs[5]) != 6) {5 V" h$ h$ x, P. w0 d) `
  89.                 printf("Input MAC error\n");+ F6 F2 F; \! V. l% x- o! y: q0 z! [/ ~
  90.                 return 1;1 q3 J3 o. d; I, b2 Z  }: X1 g* F
  91.         }% i* T) x& i" A4 g/ J) u( z; M
  92.         for (i=0; i<6; i++)mac[i] = macs[i];
    0 F- J6 g6 o0 ^2 W4 Q5 y! B7 g
  93.         printf("\nPlease input new STBID: ");
    4 r* q: o7 o9 O/ s% q$ c' h
  94.         scanf("%s", stbid);- z. m; ]' G) b, U  T+ k
  95.         if (strlen(stbid) != 18) {
    1 G7 B$ ^+ a/ R# ?' H( m  o1 N
  96.                 printf("Invalid stbid\n");# I- G/ h# R- e4 _
  97.                 return 1;9 z( `, |9 t: A# ?  K" @
  98.         }) w3 G! s# `: L% J
  99.         printf("\nNew parameters: \n");
    % }9 J- j2 i2 a" Q6 v
  100.         printf("  MAC: %02x:%02x:%02x:%02x:%02x:%02x\n", mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]);2 e3 |) m" N0 b  n$ s! V9 \
  101.         printf("  STBID: %s\n", stbid);2 H/ o! C0 k1 Y" {

  102. - P, X5 Y( R4 ?( \7 f( s; k
  103.         printf("\nDo you want to change paramemters? (y/N) ");
    % `. s( M& H; e+ k4 J0 j. i
  104.         for (;;) {7 N2 k  N5 w6 i( D: Z+ ^& ]$ i9 F
  105.                 c = getchar();
    $ t) _% X( d3 C8 D# G0 N$ A
  106.                 if (c == 'y' || c == 'Y')
    " d1 E/ o: R# {. G4 \! \- S' f
  107.                         break;
    * H8 S' ~% X' c% ~" v+ t
  108.                 if (c == 'n' || c == 'N') {* E& ^# y! l6 Z9 `* _9 K+ d
  109.                         printf("\nAborted.\n");9 |! |. r, J* I: O/ o* d: Y3 v
  110.                         return 1;" M8 n0 L% x4 r; n2 W
  111.                 }/ P& o7 _5 I: K, h, Y6 N" s5 A
  112.         }
    ! i! b6 X* H: |' {: [1 o* ~* Y; N
  113.         if (writeparam(mac, stbid) == 0) 0 Y$ z$ v1 }# m9 l# `# c# u; u4 C3 a
  114.                 printf("Parameters changed.\n");
    " O& A4 F& b9 `+ F* r/ @
  115. 2 A  Q8 M/ _. @, T9 `- C, q/ F9 b, Q
  116.         return 0;" D' \0 m  `3 y0 I! [
  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
* R+ c1 o+ ]2 r: Q. {1 T在ubuntu 下,释放cross-compiler-armv5l.tar.bz2文件,编译fix1308.c通过。可以修改EC1308了。

+ H+ d# b/ V( k8 J0 ^1 a1 G5 @你用的编译命令行格式是什么?
1 Q8 n: Z( s7 B2 w: f+ [' h
发表于 2012-5-26 19:45:12 |新疆| 显示全部楼层
已经编译出修改文件,并且修改成功
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

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

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

在本版发帖返回顶部